From 557b9d4f8dbf41a587508a16df853d4a7677d04b Mon Sep 17 00:00:00 2001 From: Chris Packham Date: Sun, 26 Sep 2021 22:08:36 +1300 Subject: gcc: Build static libgcc in core_pass1 Per https://github.com/crosstool-ng/crosstool-ng/issues/808 build static libgcc in the first pass which lets us skip the second one. Building mingw-w64 requires header files in order to build C++ support so mingw builds core pass 2. This could probably be cleaned up by splitting libc_start_files into a separate libc_header step. But for now having core 2 for mingw-w64 and core 1 for the other libcs will have to do. Anything that previously selected CC_CORE_PASSES_NEEDED now selects CC_CORE_PASS_1_NEEDED. The same goes for CC_CORE_PASS_2_NEEDED with the exception of mingw-w64. Fixes #808 Fixes #217 Signed-off-by: Chris Packham diff --git a/config/cc.in b/config/cc.in index 187a48d..0890cc2 100644 --- a/config/cc.in +++ b/config/cc.in @@ -2,11 +2,6 @@ menu "C compiler" -config CC_CORE_PASSES_NEEDED - bool - select CC_CORE_PASS_1_NEEDED - select CC_CORE_PASS_2_NEEDED - config CC_CORE_PASS_1_NEEDED bool diff --git a/config/libc/glibc.in b/config/libc/glibc.in index 659a86b..1280d98 100644 --- a/config/libc/glibc.in +++ b/config/libc/glibc.in @@ -3,7 +3,7 @@ ## depends on ! WINDOWS && ! BARE_METAL && ARCH_USE_MMU ## select LIBC_SUPPORT_THREADS_NATIVE -## select CC_CORE_PASSES_NEEDED +## select CC_CORE_PASS_1_NEEDED # TBD: select GETTEXT for build only, not for host ## select GETTEXT_NEEDED ## select BINUTILS_FORCE_LD_BFD_DEFAULT diff --git a/config/libc/moxiebox.in b/config/libc/moxiebox.in index e036641..aa6ff53 100644 --- a/config/libc/moxiebox.in +++ b/config/libc/moxiebox.in @@ -10,8 +10,7 @@ ## select LIBC_SUPPORT_THREADS_NONE ## select COMP_TOOLS_AUTOCONF if !CONFIGURE_has_autoconf_2_65_or_newer || !CONFIGURE_has_autoreconf_2_64_or_newer ## select COMP_TOOLS_AUTOMAKE if !CONFIGURE_has_automake_1_15_or_newer -## select CC_CORE_PASSES_NEEDED if CANADIAN -## select CC_CORE_PASS_2_NEEDED if ! CANADIAN +## select CC_CORE_PASS_1_NEEDED ## select LIBELF_NEEDED ## ## help Secure execution runtime for Moxie architecture. diff --git a/config/libc/musl.in b/config/libc/musl.in index b2ed8bf..0ea388e 100644 --- a/config/libc/musl.in +++ b/config/libc/musl.in @@ -3,7 +3,7 @@ ## depends on ! WINDOWS && ! BARE_METAL ## depends on EXPERIMENTAL ## select LIBC_SUPPORT_THREADS_NATIVE -## select CC_CORE_PASSES_NEEDED +## select CC_CORE_PASS_1_NEEDED ## help Musl is a new standard library to power a new generation of Linux-based ## help devices. musl is lightweight, fast, simple, free, and strives to be diff --git a/config/libc/newlib.in b/config/libc/newlib.in index 199eff2..ce426da 100644 --- a/config/libc/newlib.in +++ b/config/libc/newlib.in @@ -2,8 +2,7 @@ ## depends on BARE_METAL ## select LIBC_SUPPORT_THREADS_NONE -## select CC_CORE_PASSES_NEEDED if CANADIAN -## select CC_CORE_PASS_2_NEEDED if ! CANADIAN +## select CC_CORE_PASS_1_NEEDED ## help Newlib is a C library intended for use on embedded systems. It is a ## help conglomeration of several library parts, all under free software diff --git a/config/libc/uClibc.in b/config/libc/uClibc.in index 21da64f..c88bbc8 100644 --- a/config/libc/uClibc.in +++ b/config/libc/uClibc.in @@ -5,7 +5,7 @@ ## select LIBC_SUPPORT_THREADS_LT ## select LIBC_SUPPORT_THREADS_NONE ## select LIBC_SUPPORT_THREADS_NATIVE if UCLIBC_0_9_33_2_or_later -## select CC_CORE_PASSES_NEEDED +## select CC_CORE_PASS_1_NEEDED ## ## help The de-facto standard for embeded linux systems. ## help diff --git a/scripts/build/cc/gcc.sh b/scripts/build/cc/gcc.sh index b076be5..0b41c29 100644 --- a/scripts/build/cc/gcc.sh +++ b/scripts/build/cc/gcc.sh @@ -202,6 +202,8 @@ do_cc_core_pass_1() { core_opts+=( "ldflags=${CT_LDFLAGS_FOR_BUILD}" ) core_opts+=( "lang_list=c" ) core_opts+=( "build_step=core1" ) + core_opts+=( "mode=static" ) + core_opts+=( "build_libgcc=yes" ) CT_DoStep INFO "Installing pass-1 core C gcc compiler" CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-core-pass-1" -- cgit v0.10.2-6-g49f6