From e58af8f79ed50126d4e148b1ef509ef6068e2b38 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Wed, 15 Aug 2007 10:14:43 +0000 Subject: [PATCH] Get rid of the core cc selection. It is now the same as the final compiler. --- config/cc.in | 45 ++------ config/cc_core_gcc.in | 166 ----------------------------- config/cc_gcc.in | 14 ++- scripts/build/binutils.sh | 2 +- scripts/build/cc_core_gcc.sh | 195 ----------------------------------- scripts/build/cc_gcc.sh | 174 ++++++++++++++++++++++++++++++- scripts/build/libc_glibc.sh | 2 +- scripts/build/libc_uClibc.sh | 2 +- scripts/crosstool.sh | 16 +-- 9 files changed, 197 insertions(+), 419 deletions(-) delete mode 100644 config/cc_core_gcc.in delete mode 100644 scripts/build/cc_core_gcc.sh diff --git a/config/cc.in b/config/cc.in index 27d9d692..176cdf6a 100644 --- a/config/cc.in +++ b/config/cc.in @@ -2,47 +2,9 @@ menu "C compiler" -comment "Core C Compiler (used to build the C library)" - -config CC_USE_CORE - bool - prompt "Use a different core C compiler" - default n - help - Use a different compiler to build the C library than the one - in the final toolchain. - - You can change the compiler used, or only the version used. - - You most probably don't need that. - choice bool - prompt "Core C compiler:" - depends on CC_USE_CORE - -config CC_CORE_GCC - bool - prompt "gcc" - -endchoice - -config CC_CORE_VERSION - string - -config CC_CORE - string - default "gcc" if CC_CORE_GCC - -if CC_CORE_GCC && CC_USE_CORE -source config/cc_core_gcc.in -endif - -comment "Final C compiler" - -choice - bool - prompt "Final C compiler" + prompt "C compiler flavour" default CC_GCC config CC_GCC @@ -54,6 +16,11 @@ config CC_GCC select CC_SUPPORT_ADA select CC_SUPPORT_OBJC select CC_SUPPORT_OBJCXX + help + gcc is the full-blown GNU compiler. This is what most people will choose. + + gcc sports lots of languages, powerfull code parser, optimised binary output, + and lots of other features. endchoice diff --git a/config/cc_core_gcc.in b/config/cc_core_gcc.in deleted file mode 100644 index 5b5efd70..00000000 --- a/config/cc_core_gcc.in +++ /dev/null @@ -1,166 +0,0 @@ -# Compiler options - -choice - bool - prompt "Core gcc version" - -config CC_CORE_V_2_95_3 - bool - prompt "2.95.3" - depends on OBSOLETE - -config CC_CORE_V_3_2_3 - bool - prompt "3.2.3" - depends on OBSOLETE - -config CC_CORE_V_3_3 - bool - prompt "3.3" - depends on OBSOLETE - -config CC_CORE_V_3_3_1 - bool - prompt "3.3.1" - depends on OBSOLETE - -config CC_CORE_V_3_3_2 - bool - prompt "3.3.2" - depends on OBSOLETE - -config CC_CORE_V_3_3_3 - bool - prompt "3.3.3" - depends on OBSOLETE - -config CC_CORE_V_3_3_4 - bool - prompt "3.3.4" - depends on OBSOLETE - -config CC_CORE_V_3_3_5 - bool - prompt "3.3.5" - depends on OBSOLETE - -config CC_CORE_V_3_3_6 - bool - prompt "3.3.6" - -config CC_CORE_V_3_4_0 - bool - prompt "3.4.0" - depends on OBSOLETE - -config CC_CORE_V_3_4_1 - bool - prompt "3.4.1" - depends on OBSOLETE - -config CC_CORE_V_3_4_2 - bool - prompt "3.4.2" - depends on OBSOLETE - -config CC_CORE_V_3_4_3 - bool - prompt "3.4.3" - depends on OBSOLETE - -config CC_CORE_V_3_4_4 - bool - prompt "3.4.4" - depends on OBSOLETE - -config CC_CORE_V_3_4_5 - bool - prompt "3.4.5" - depends on OBSOLETE - -config CC_CORE_V_3_4_6 - bool - prompt "3.4.6" - -config CC_CORE_V_4_0_0 - bool - prompt "4.0.0" - -config CC_CORE_V_4_0_1 - bool - prompt "4.0.1" - -config CC_CORE_V_4_0_2 - bool - prompt "4.0.2" - -config CC_CORE_V_4_0_3 - bool - prompt "4.0.3" - -config CC_CORE_V_4_0_4 - bool - prompt "4.0.4" - -config CC_CORE_V_4_1_0 - bool - prompt "4.1.0" - -config CC_CORE_V_4_1_1 - bool - prompt "4.1.1" - -config CC_CORE_V_4_1_2 - bool - prompt "4.1.2" - -config CC_CORE_V_4_2_0 - bool - prompt "4.2.0" - -config CC_CORE_V_4_2_1 - bool - prompt "4.2.1" - -# CT_INSERT_VERSION_ABOVE -# Don't remove above line! -endchoice - -config CC_CORE_VERSION - string - default "2.95.3" if CC_CORE_V_2_95_3 - default "3.2.3" if CC_CORE_V_3_2_3 - default "3.3" if CC_CORE_V_3_3 - default "3.3.1" if CC_CORE_V_3_3_1 - default "3.3.2" if CC_CORE_V_3_3_2 - default "3.3.3" if CC_CORE_V_3_3_3 - default "3.3.4" if CC_CORE_V_3_3_4 - default "3.3.5" if CC_CORE_V_3_3_5 - default "3.3.6" if CC_CORE_V_3_3_6 - default "3.4.0" if CC_CORE_V_3_4_0 - default "3.4.1" if CC_CORE_V_3_4_1 - default "3.4.2" if CC_CORE_V_3_4_2 - default "3.4.3" if CC_CORE_V_3_4_3 - default "3.4.4" if CC_CORE_V_3_4_4 - default "3.4.5" if CC_CORE_V_3_4_5 - default "3.4.6" if CC_CORE_V_3_4_6 - default "4.0.0" if CC_CORE_V_4_0_0 - default "4.0.1" if CC_CORE_V_4_0_1 - default "4.0.2" if CC_CORE_V_4_0_2 - default "4.0.3" if CC_CORE_V_4_0_3 - default "4.0.4" if CC_CORE_V_4_0_4 - default "4.1.0" if CC_CORE_V_4_1_0 - default "4.1.1" if CC_CORE_V_4_1_1 - default "4.1.2" if CC_CORE_V_4_1_2 - default "4.2.0" if CC_CORE_V_4_2_0 - default "4.2.1" if CC_CORE_V_4_2_1 -# CT_INSERT_VERSION_STRING_ABOVE -# Don't remove above line! - -config CC_CORE_EXTRA_CONFIG - string - prompt "Core gcc extra config" - default "" - depends on CC_USE_CORE && CC_CORE_GCC || ! CC_USE_CORE && CC_GCC - help - Extra flags to pass onto ./configure when configuring the core gcc. diff --git a/config/cc_gcc.in b/config/cc_gcc.in index 37e7467f..51d12403 100644 --- a/config/cc_gcc.in +++ b/config/cc_gcc.in @@ -2,7 +2,7 @@ choice bool - prompt "Final gcc version" + prompt "gcc version" config CC_V_2_95_3 bool @@ -95,9 +95,19 @@ config CC_CXA_ATEXIT If you get the missing symbol "__cxa_atexit" when building c++ programs, you might want to try disabling this option. +config CC_CORE_EXTRA_CONFIG + string + prompt "Core gcc extra config" + default "" + help + Extra flags to pass onto ./configure when configuring the core gcc. + + The core gcc is a stripped down, C-only compiler needed to build + the C library. Kinda bootstrap gcc, if you wish. + config CC_EXTRA_CONFIG string - prompt "Final gcc extra config" + prompt "gcc extra config" default "" help Extra flags to pass onto ./configure when configuring gcc. diff --git a/scripts/build/binutils.sh b/scripts/build/binutils.sh index 22be8409..edb0e5ac 100644 --- a/scripts/build/binutils.sh +++ b/scripts/build/binutils.sh @@ -43,7 +43,7 @@ do_binutils() { CT_DoLog EXTRA "Installing binutils" make install 2>&1 |CT_DoLog ALL - # Make those new tools available to the core C compilers to come: + # Make those new tools available to the core C compilers to come. # Note: some components want the ${TARGET}-{ar,as,ld,strip} commands as # well. Create that. mkdir -p "${CT_CC_CORE_STATIC_PREFIX_DIR}/${CT_TARGET}/bin" diff --git a/scripts/build/cc_core_gcc.sh b/scripts/build/cc_core_gcc.sh deleted file mode 100644 index 968e62e1..00000000 --- a/scripts/build/cc_core_gcc.sh +++ /dev/null @@ -1,195 +0,0 @@ -# This file adds the function to build the core gcc C compiler -# Copyright 2007 Yann E. MORIN -# Licensed under the GPL v2. See COPYING in the root of this package - -do_print_filename() { - [ "${CT_CC_CORE}" = "gcc" ] || return 0 - echo "gcc-${CT_CC_CORE_VERSION}" -} - -# Download core gcc -do_cc_core_get() { - # Ah! gcc folks are kind of 'different': they store the tarballs in - # subdirectories of the same name! That's because gcc is such /crap/ that - # it is such /big/ that it needs being splitted for distribution! Sad. :-( - # Arrgghh! Some of those versions does not follow this convention: - # gcc-3.3.3 lives in releases/gcc-3.3.3, while gcc-2.95.* isn't in a - # subdirectory! You bastard! - CT_GetFile "${CT_CC_CORE_FILE}" \ - ftp://ftp.gnu.org/gnu/gcc/${CT_CC_CORE_FILE} \ - ftp://ftp.gnu.org/gnu/gcc/releases/${CT_CC_CORE_FILE} \ - ftp://ftp.gnu.org/gnu/gcc -} - -# Extract core gcc -do_cc_core_extract() { - CT_ExtractAndPatch "${CT_CC_CORE_FILE}" -} - -# Core gcc pass 1 -do_cc_core_pass_1() { - # In case we're NPTL, build the static core gcc; - # in any other case, do nothing. - case "${CT_THREADS}" in - nptl) do_cc_core_static;; - *) ;; - esac -} - -# Core gcc pass 2 -do_cc_core_pass_2() { - # In case we're NPTL, build the shared core gcc, - # in any other case, build the static core gcc. - case "${CT_THREADS}" in - nptl) do_cc_core_shared;; - *) do_cc_core_static;; - esac -} - -# Build static core gcc -do_cc_core_static() { - mkdir -p "${CT_BUILD_DIR}/build-cc-core-static" - cd "${CT_BUILD_DIR}/build-cc-core-static" - - CT_DoStep INFO "Installing static core C compiler" - - CT_DoLog EXTRA "Copying headers to install area of bootstrap gcc, so it can build libgcc2" - mkdir -p "${CT_CC_CORE_STATIC_PREFIX_DIR}/${CT_TARGET}/include" - cp -r "${CT_HEADERS_DIR}"/* "${CT_CC_CORE_STATIC_PREFIX_DIR}/${CT_TARGET}/include" 2>&1 |CT_DoLog DEBUG - - CT_DoLog EXTRA "Configuring static core C compiler" - - extra_config="" - [ "${CT_ARCH_FLOAT_SW}" = "y" ] && extra_config="${extra_config} --with-float=soft" - [ -n "${CT_ARCH_ABI}" ] && extra_config="${extra_config} --with-abi=${CT_ARCH_ABI}" - [ -n "${CT_ARCH_ARCH}" ] && extra_config="${extra_config} --with-arch=${CT_ARCH_ARCH}" - [ -n "${CT_ARCH_CPU}" ] && extra_config="${extra_config} --with-cpu=${CT_ARCH_CPU}" - [ -n "${CT_ARCH_TUNE}" ] && extra_config="${extra_config} --with-tune=${CT_ARCH_TUNE}" - [ -n "${CT_ARCH_FPU}" ] && extra_config="${extra_config} --with-fpu=${CT_ARCH_FPU}" - [ "${CT_CC_CXA_ATEXIT}" = "y" ] && extra_config="${extra_config} --enable-__cxa_atexit" - - CT_DoLog DEBUG "Extra config passed: \"${extra_config}\"" - - # Use --with-local-prefix so older gccs don't look in /usr/local (http://gcc.gnu.org/PR10532) - CFLAGS="${CT_CFLAGS_FOR_HOST}" \ - "${CT_SRC_DIR}/${CT_CC_CORE_FILE}/configure" \ - ${CT_CANADIAN_OPT} \ - --host=${CT_HOST} \ - --target=${CT_TARGET} \ - --prefix="${CT_CC_CORE_STATIC_PREFIX_DIR}" \ - --with-local-prefix="${CT_SYSROOT_DIR}" \ - --disable-multilib \ - --with-newlib \ - ${CC_CORE_SYSROOT_ARG} \ - ${extra_config} \ - --disable-nls \ - --enable-threads=no \ - --enable-symvers=gnu \ - --enable-languages=c \ - --disable-shared \ - ${CT_CC_CORE_EXTRA_CONFIG} 2>&1 |CT_DoLog ALL - - if [ "${CT_CANADIAN}" = "y" ]; then - CT_DoLog EXTRA "Building libiberty" - make ${PARALLELMFLAGS} all-build-libiberty 2>&1 |CT_DoLog ALL - fi - - CT_DoLog EXTRA "Building static core C compiler" - make ${PARALLELMFLAGS} all-gcc 2>&1 |CT_DoLog ALL - - CT_DoLog EXTRA "Installing static core C compiler" - make install-gcc 2>&1 |CT_DoLog ALL - - CT_EndStep -} - -# Build shared core gcc -do_cc_core_shared() { - mkdir -p "${CT_BUILD_DIR}/build-cc-core-shared" - cd "${CT_BUILD_DIR}/build-cc-core-shared" - - CT_DoStep INFO "Installing shared core C compiler" - - CT_DoLog EXTRA "Copying headers to install area of bootstrap gcc, so it can build libgcc2" - mkdir -p "${CT_CC_CORE_SHARED_PREFIX_DIR}/${CT_TARGET}/include" - cp -r "${CT_HEADERS_DIR}"/* "${CT_CC_CORE_SHARED_PREFIX_DIR}/${CT_TARGET}/include" 2>&1 |CT_DoLog DEBUG - - CT_DoLog EXTRA "Configuring shared core C compiler" - - extra_config="" - [ "${CT_ARCH_FLOAT_SW}" = "y" ] && extra_config="${extra_config} --with-float=soft" - [ -n "${CT_ARCH_ABI}" ] && extra_config="${extra_config} --with-abi=${CT_ARCH_ABI}" - [ -n "${CT_ARCH_ARCH}" ] && extra_config="${extra_config} --with-arch=${CT_ARCH_ARCH}" - [ -n "${CT_ARCH_CPU}" ] && extra_config="${extra_config} --with-cpu=${CT_ARCH_CPU}" - [ -n "${CT_ARCH_TUNE}" ] && extra_config="${extra_config} --with-tune=${CT_ARCH_TUNE}" - [ -n "${CT_ARCH_FPU}" ] && extra_config="${extra_config} --with-fpu=${CT_ARCH_FPU}" - [ "${CT_CC_CXA_ATEXIT}" = "y" ] && extra_config="${extra_config} --enable-__cxa_atexit" - - CT_DoLog DEBUG "Extra config passed: \"${extra_config}\"" - - CFLAGS="${CT_CFLAGS_FOR_HOST}" \ - "${CT_SRC_DIR}/${CT_CC_CORE_FILE}/configure" \ - ${CT_CANADIAN_OPT} \ - --target=${CT_TARGET} \ - --host=${CT_HOST} \ - --prefix="${CT_CC_CORE_SHARED_PREFIX_DIR}" \ - --with-local-prefix="${CT_SYSROOT_DIR}" \ - --disable-multilib \ - ${CC_CORE_SYSROOT_ARG} \ - ${extra_config} \ - --disable-nls \ - --enable-symvers=gnu \ - --enable-languages=c \ - --enable-shared \ - ${CT_CC_CORE_EXTRA_CONFIG} 2>&1 |CT_DoLog ALL - - # HACK: we need to override SHLIB_LC from gcc/config/t-slibgcc-elf-ver or - # gcc/config/t-libunwind so -lc is removed from the link for - # libgcc_s.so, as we do not have a target -lc yet. - # This is not as ugly as it appears to be ;-) All symbols get resolved - # during the glibc build, and we provide a proper libgcc_s.so for the - # cross toolchain during the final gcc build. - # - # As we cannot modify the source tree, nor override SHLIB_LC itself - # during configure or make, we have to edit the resultant - # gcc/libgcc.mk itself to remove -lc from the link. - # This causes us to have to jump through some hoops... - # - # To produce libgcc.mk to edit we firstly require libiberty.a, - # so we configure then build it. - # Next we have to configure gcc, create libgcc.mk then edit it... - # So much easier if we just edit the source tree, but hey... - if [ ! -f "${CT_SRC_DIR}/${CT_CC_CORE_FILE}/gcc/BASE-VER" ]; then - make configure-libiberty - make -C libiberty libiberty.a - make configure-gcc - make configure-libcpp - make all-libcpp - else - make configure-gcc - make configure-libcpp - make configure-build-libiberty - make all-libcpp - make all-build-libiberty - fi 2>&1 |CT_DoLog ALL - # HACK: gcc-4.2 uses libdecnumber to build libgcc.mk, so build it here. - if [ -d "${CT_SRC_DIR}/${CT_CC_CORE_FILE}/libdecnumber" ]; then - make configure-libdecnumber - make -C libdecnumber libdecnumber.a - fi 2>&1 |CT_DoLog ALL - make -C gcc libgcc.mk 2>&1 |CT_DoLog ALL - sed -r -i -e 's@-lc@@g' gcc/libgcc.mk - - if [ "${CT_CANADIAN}" = "y" ]; then - CT_DoLog EXTRA "Building libiberty" - make ${PARALLELMFLAGS} all-build-libiberty 2>&1 |CT_DoLog ALL - fi - - CT_DoLog EXTRA "Building shared core C compiler" - make ${PARALLELMFLAGS} all-gcc 2>&1 |CT_DoLog ALL - - CT_DoLog EXTRA "Installing shared core C compiler" - make install-gcc 2>&1 |CT_DoLog ALL - - CT_EndStep -} diff --git a/scripts/build/cc_gcc.sh b/scripts/build/cc_gcc.sh index 7421cc53..eae0c31b 100644 --- a/scripts/build/cc_gcc.sh +++ b/scripts/build/cc_gcc.sh @@ -1,4 +1,4 @@ -# This file adds the function to build the final gcc C compiler +# This file adds the function to build the gcc C compiler # Copyright 2007 Yann E. MORIN # Licensed under the GPL v2. See COPYING in the root of this package @@ -26,6 +26,178 @@ do_cc_extract() { CT_ExtractAndPatch "${CT_CC_FILE}" } +#------------------------------------------------------------------------------ +# Core gcc pass 1 +do_cc_core_pass_1() { + # In case we're NPTL, build the static core gcc; + # in any other case, do nothing. + case "${CT_THREADS}" in + nptl) do_cc_core_static;; + *) ;; + esac +} + +# Core gcc pass 2 +do_cc_core_pass_2() { + # In case we're NPTL, build the shared core gcc, + # in any other case, build the static core gcc. + case "${CT_THREADS}" in + nptl) do_cc_core_shared;; + *) do_cc_core_static;; + esac +} + +#------------------------------------------------------------------------------ +# Build static core gcc +do_cc_core_static() { + mkdir -p "${CT_BUILD_DIR}/build-cc-core-static" + cd "${CT_BUILD_DIR}/build-cc-core-static" + + CT_DoStep INFO "Installing static core C compiler" + + CT_DoLog EXTRA "Copying headers to install area of bootstrap gcc, so it can build libgcc2" + mkdir -p "${CT_CC_CORE_STATIC_PREFIX_DIR}/${CT_TARGET}/include" + cp -r "${CT_HEADERS_DIR}"/* "${CT_CC_CORE_STATIC_PREFIX_DIR}/${CT_TARGET}/include" 2>&1 |CT_DoLog DEBUG + + CT_DoLog EXTRA "Configuring static core C compiler" + + extra_config="" + [ "${CT_ARCH_FLOAT_SW}" = "y" ] && extra_config="${extra_config} --with-float=soft" + [ -n "${CT_ARCH_ABI}" ] && extra_config="${extra_config} --with-abi=${CT_ARCH_ABI}" + [ -n "${CT_ARCH_ARCH}" ] && extra_config="${extra_config} --with-arch=${CT_ARCH_ARCH}" + [ -n "${CT_ARCH_CPU}" ] && extra_config="${extra_config} --with-cpu=${CT_ARCH_CPU}" + [ -n "${CT_ARCH_TUNE}" ] && extra_config="${extra_config} --with-tune=${CT_ARCH_TUNE}" + [ -n "${CT_ARCH_FPU}" ] && extra_config="${extra_config} --with-fpu=${CT_ARCH_FPU}" + [ "${CT_CC_CXA_ATEXIT}" = "y" ] && extra_config="${extra_config} --enable-__cxa_atexit" + + CT_DoLog DEBUG "Extra config passed: \"${extra_config}\"" + + # Use --with-local-prefix so older gccs don't look in /usr/local (http://gcc.gnu.org/PR10532) + CFLAGS="${CT_CFLAGS_FOR_HOST}" \ + "${CT_SRC_DIR}/${CT_CC_FILE}/configure" \ + ${CT_CANADIAN_OPT} \ + --host=${CT_HOST} \ + --target=${CT_TARGET} \ + --prefix="${CT_CC_CORE_STATIC_PREFIX_DIR}" \ + --with-local-prefix="${CT_SYSROOT_DIR}" \ + --disable-multilib \ + --with-newlib \ + ${CC_CORE_SYSROOT_ARG} \ + ${extra_config} \ + --disable-nls \ + --enable-threads=no \ + --enable-symvers=gnu \ + --enable-languages=c \ + --disable-shared \ + ${CT_CC_CORE_EXTRA_CONFIG} 2>&1 |CT_DoLog ALL + + if [ "${CT_CANADIAN}" = "y" ]; then + CT_DoLog EXTRA "Building libiberty" + make ${PARALLELMFLAGS} all-build-libiberty 2>&1 |CT_DoLog ALL + fi + + CT_DoLog EXTRA "Building static core C compiler" + make ${PARALLELMFLAGS} all-gcc 2>&1 |CT_DoLog ALL + + CT_DoLog EXTRA "Installing static core C compiler" + make install-gcc 2>&1 |CT_DoLog ALL + + CT_EndStep +} + +#------------------------------------------------------------------------------ +# Build shared core gcc +do_cc_core_shared() { + mkdir -p "${CT_BUILD_DIR}/build-cc-core-shared" + cd "${CT_BUILD_DIR}/build-cc-core-shared" + + CT_DoStep INFO "Installing shared core C compiler" + + CT_DoLog EXTRA "Copying headers to install area of bootstrap gcc, so it can build libgcc2" + mkdir -p "${CT_CC_CORE_SHARED_PREFIX_DIR}/${CT_TARGET}/include" + cp -r "${CT_HEADERS_DIR}"/* "${CT_CC_CORE_SHARED_PREFIX_DIR}/${CT_TARGET}/include" 2>&1 |CT_DoLog DEBUG + + CT_DoLog EXTRA "Configuring shared core C compiler" + + extra_config="" + [ "${CT_ARCH_FLOAT_SW}" = "y" ] && extra_config="${extra_config} --with-float=soft" + [ -n "${CT_ARCH_ABI}" ] && extra_config="${extra_config} --with-abi=${CT_ARCH_ABI}" + [ -n "${CT_ARCH_ARCH}" ] && extra_config="${extra_config} --with-arch=${CT_ARCH_ARCH}" + [ -n "${CT_ARCH_CPU}" ] && extra_config="${extra_config} --with-cpu=${CT_ARCH_CPU}" + [ -n "${CT_ARCH_TUNE}" ] && extra_config="${extra_config} --with-tune=${CT_ARCH_TUNE}" + [ -n "${CT_ARCH_FPU}" ] && extra_config="${extra_config} --with-fpu=${CT_ARCH_FPU}" + [ "${CT_CC_CXA_ATEXIT}" = "y" ] && extra_config="${extra_config} --enable-__cxa_atexit" + + CT_DoLog DEBUG "Extra config passed: \"${extra_config}\"" + + CFLAGS="${CT_CFLAGS_FOR_HOST}" \ + "${CT_SRC_DIR}/${CT_CC_FILE}/configure" \ + ${CT_CANADIAN_OPT} \ + --target=${CT_TARGET} \ + --host=${CT_HOST} \ + --prefix="${CT_CC_CORE_SHARED_PREFIX_DIR}" \ + --with-local-prefix="${CT_SYSROOT_DIR}" \ + --disable-multilib \ + ${CC_CORE_SYSROOT_ARG} \ + ${extra_config} \ + --disable-nls \ + --enable-symvers=gnu \ + --enable-languages=c \ + --enable-shared \ + ${CT_CC_CORE_EXTRA_CONFIG} 2>&1 |CT_DoLog ALL + + # HACK: we need to override SHLIB_LC from gcc/config/t-slibgcc-elf-ver or + # gcc/config/t-libunwind so -lc is removed from the link for + # libgcc_s.so, as we do not have a target -lc yet. + # This is not as ugly as it appears to be ;-) All symbols get resolved + # during the glibc build, and we provide a proper libgcc_s.so for the + # cross toolchain during the final gcc build. + # + # As we cannot modify the source tree, nor override SHLIB_LC itself + # during configure or make, we have to edit the resultant + # gcc/libgcc.mk itself to remove -lc from the link. + # This causes us to have to jump through some hoops... + # + # To produce libgcc.mk to edit we firstly require libiberty.a, + # so we configure then build it. + # Next we have to configure gcc, create libgcc.mk then edit it... + # So much easier if we just edit the source tree, but hey... + if [ ! -f "${CT_SRC_DIR}/${CT_CC_FILE}/gcc/BASE-VER" ]; then + make configure-libiberty + make -C libiberty libiberty.a + make configure-gcc + make configure-libcpp + make all-libcpp + else + make configure-gcc + make configure-libcpp + make configure-build-libiberty + make all-libcpp + make all-build-libiberty + fi 2>&1 |CT_DoLog ALL + # HACK: gcc-4.2 uses libdecnumber to build libgcc.mk, so build it here. + if [ -d "${CT_SRC_DIR}/${CT_CC_FILE}/libdecnumber" ]; then + make configure-libdecnumber + make -C libdecnumber libdecnumber.a + fi 2>&1 |CT_DoLog ALL + make -C gcc libgcc.mk 2>&1 |CT_DoLog ALL + sed -r -i -e 's@-lc@@g' gcc/libgcc.mk + + if [ "${CT_CANADIAN}" = "y" ]; then + CT_DoLog EXTRA "Building libiberty" + make ${PARALLELMFLAGS} all-build-libiberty 2>&1 |CT_DoLog ALL + fi + + CT_DoLog EXTRA "Building shared core C compiler" + make ${PARALLELMFLAGS} all-gcc 2>&1 |CT_DoLog ALL + + CT_DoLog EXTRA "Installing shared core C compiler" + make install-gcc 2>&1 |CT_DoLog ALL + + CT_EndStep +} + +#------------------------------------------------------------------------------ # Build final gcc do_cc() { CT_DoStep INFO "Installing final compiler" diff --git a/scripts/build/libc_glibc.sh b/scripts/build/libc_glibc.sh index 36f12595..ae8f8b74 100644 --- a/scripts/build/libc_glibc.sh +++ b/scripts/build/libc_glibc.sh @@ -52,7 +52,7 @@ do_libc_check_config() { do_libc_headers() { # Only need to install bootstrap glibc headers for gcc-3.0 and above? Or maybe just gcc-3.3 and above? # See also http://gcc.gnu.org/PR8180, which complains about the need for this step. - grep -q 'gcc-[34]' "${CT_SRC_DIR}/${CT_CC_CORE_FILE}/ChangeLog" || return 0 + grep -q 'gcc-[34]' "${CT_SRC_DIR}/${CT_CC_FILE}/ChangeLog" 2>/dev/null || return 0 CT_DoStep INFO "Installing C library headers" diff --git a/scripts/build/libc_uClibc.sh b/scripts/build/libc_uClibc.sh index bc8480c0..67036eea 100644 --- a/scripts/build/libc_uClibc.sh +++ b/scripts/build/libc_uClibc.sh @@ -53,7 +53,7 @@ do_libc_check_config() { do_libc_headers() { # Only need to install bootstrap uClibc headers for gcc-3.0 and above? Or maybe just gcc-3.3 and above? # See also http://gcc.gnu.org/PR8180, which complains about the need for this step. - grep -q 'gcc-[34]' "${CT_SRC_DIR}/${CT_CC_CORE_FILE}/ChangeLog" || return 0 + grep -q 'gcc-[34]' "${CT_SRC_DIR}/${CT_CC_FILE}/ChangeLog" 2>/dev/null || return 0 CT_DoStep INFO "Installing C library headers" diff --git a/scripts/crosstool.sh b/scripts/crosstool.sh index 405387a6..60ffbeaf 100755 --- a/scripts/crosstool.sh +++ b/scripts/crosstool.sh @@ -82,12 +82,6 @@ CT_DoBuildTargetTriplet # Now, build up the variables from the user-configured options. CT_KERNEL_FILE="${CT_KERNEL}-${CT_KERNEL_VERSION}" CT_BINUTILS_FILE="binutils-${CT_BINUTILS_VERSION}" -if [ "${CT_CC_USE_CORE}" != "y" ]; then - CT_CC_CORE="${CT_CC}" - CT_CC_CORE_VERSION="${CT_CC_VERSION}" - CT_CC_CORE_EXTRA_CONFIG="${CT_CC_EXTRA_CONFIG}" -fi -CT_CC_CORE_FILE="${CT_CC_CORE}-${CT_CC_CORE_VERSION}" CT_CC_FILE="${CT_CC}-${CT_CC_VERSION}" CT_LIBC_FILE="${CT_LIBC}-${CT_LIBC_VERSION}" @@ -97,8 +91,7 @@ CT_SRC_DIR="${CT_TOP_DIR}/targets/src" CT_BUILD_DIR="${CT_TOP_DIR}/targets/${CT_TARGET}/build" CT_DEBUG_INSTALL_DIR="${CT_INSTALL_DIR}/${CT_TARGET}/debug-root" # Note: we'll always install the core compiler in its own directory, so as to -# not mix the two builds: core and final. Anyway, its generic, wether we use -# a different compiler as core, or not. +# not mix the two builds: core and final. CT_CC_CORE_STATIC_PREFIX_DIR="${CT_BUILD_DIR}/${CT_CC}-core-static" CT_CC_CORE_SHARED_PREFIX_DIR="${CT_BUILD_DIR}/${CT_CC}-core-shared" CT_STATE_DIR="${CT_TOP_DIR}/targets/${CT_TARGET}/state" @@ -345,7 +338,6 @@ fi . "${CT_LIB_DIR}/scripts/build/kernel_${CT_KERNEL}.sh" . "${CT_LIB_DIR}/scripts/build/binutils.sh" . "${CT_LIB_DIR}/scripts/build/libc_${CT_LIBC}.sh" -. "${CT_LIB_DIR}/scripts/build/cc_core_${CT_CC_CORE}.sh" . "${CT_LIB_DIR}/scripts/build/cc_${CT_CC}.sh" . "${CT_LIB_DIR}/scripts/build/debug.sh" . "${CT_LIB_DIR}/scripts/build/tools.sh" @@ -354,9 +346,8 @@ if [ -z "${CT_RESTART}" ]; then CT_DoStep INFO "Retrieving needed toolchain components' tarballs" do_kernel_get do_binutils_get - do_cc_core_get - do_libc_get do_cc_get + do_libc_get do_tools_get do_debug_get CT_EndStep @@ -369,9 +360,8 @@ if [ -z "${CT_RESTART}" ]; then CT_DoStep INFO "Extracting and patching toolchain components" do_kernel_extract do_binutils_extract - do_cc_core_extract - do_libc_extract do_cc_extract + do_libc_extract do_tools_extract do_debug_extract CT_EndStep