* [PATCH 0 of 1] Split gcc from cc @ 2013-12-11 20:42 Yann Diorcet 2013-12-11 20:42 ` [PATCH 1 of 1] cc/gcc: Split gcc configurations and functions from cc ones Yann Diorcet 0 siblings, 1 reply; 11+ messages in thread From: Yann Diorcet @ 2013-12-11 20:42 UTC (permalink / raw) To: Yann E. MORIN; +Cc: crossgcc The goal of this patch is to split gcc configurations and functions from cc ones, in order to prepare the ground for including other compilers (including a listing of compilers in samples) -- For unsubscribe information see http://sourceware.org/lists.html#faq ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1 of 1] cc/gcc: Split gcc configurations and functions from cc ones 2013-12-11 20:42 [PATCH 0 of 1] Split gcc from cc Yann Diorcet @ 2013-12-11 20:42 ` Yann Diorcet 2013-12-12 22:07 ` Yann E. MORIN 0 siblings, 1 reply; 11+ messages in thread From: Yann Diorcet @ 2013-12-11 20:42 UTC (permalink / raw) To: Yann E. MORIN; +Cc: crossgcc # HG changeset patch # User Yann Diorcet <diorcet.yann@gmail.com> # Date 1386793717 -3600 # Wed Dec 11 21:28:37 2013 +0100 # Node ID cc545a5c18967b99bb58e57bef03471254eb9745 # Parent 7e569a9cb5fd3ab591bb307328b947a5b7312cba cc/gcc: Split gcc configurations and functions from cc ones Signed-off-by: Yann Diorcet <diorcet.yann@gmail.com> diff -r 7e569a9cb5fd -r cc545a5c1896 config/cc.in --- a/config/cc.in Sat Nov 16 18:14:45 2013 +0100 +++ b/config/cc.in Wed Dec 11 21:28:37 2013 +0100 @@ -4,9 +4,7 @@ config CC string - -config CC_VERSION - string + default "gcc" config CC_CORE_PASSES_NEEDED bool @@ -126,6 +124,4 @@ endif # ! BARE_METAL -source "config.gen/cc.in.2" - endmenu diff -r 7e569a9cb5fd -r cc545a5c1896 config/cc/gcc.in --- a/config/cc/gcc.in Sat Nov 16 18:14:45 2013 +0100 +++ b/config/cc/gcc.in Wed Dec 11 21:28:37 2013 +0100 @@ -1,5 +1,6 @@ # Compiler options # +## default y ## select CC_SUPPORT_CXX ## select CC_SUPPORT_FORTRAN ## select CC_SUPPORT_JAVA @@ -36,215 +37,215 @@ # Don't remove next line # CT_INSERT_VERSION_BELOW -config CC_V_linaro_4_8 +config CC_GCC_V_linaro_4_8 bool prompt "linaro-4.8-2013.06-1" depends on CC_GCC_SHOW_LINARO select CC_GCC_4_8 -config CC_V_4_8_2 +config CC_GCC_V_4_8_2 bool prompt "4.8.2" select CC_GCC_4_8 -config CC_V_4_8_1 +config CC_GCC_V_4_8_1 bool prompt "4.8.1" select CC_GCC_4_8 -config CC_V_4_8_0 +config CC_GCC_V_4_8_0 bool prompt "4.8.0" select CC_GCC_4_8 -config CC_V_linaro_4_7 +config CC_GCC_V_linaro_4_7 bool prompt "linaro-4.7-2013.06-1" depends on CC_GCC_SHOW_LINARO select CC_GCC_4_7 -config CC_V_4_7_3 +config CC_GCC_V_4_7_3 bool prompt "4.7.3" select CC_GCC_4_7 -config CC_V_4_7_2 +config CC_GCC_V_4_7_2 bool prompt "4.7.2" select CC_GCC_4_7 -config CC_V_4_7_1 +config CC_GCC_V_4_7_1 bool prompt "4.7.1" select CC_GCC_4_7 -config CC_V_4_7_0 +config CC_GCC_V_4_7_0 bool prompt "4.7.0" select CC_GCC_4_7 -config CC_V_linaro_4_6 +config CC_GCC_V_linaro_4_6 bool prompt "linaro-4.6-2013.05" depends on CC_GCC_SHOW_LINARO select CC_GCC_4_6 -config CC_V_4_6_4 +config CC_GCC_V_4_6_4 bool prompt "4.6.4" select CC_GCC_4_6 -config CC_V_4_6_3 +config CC_GCC_V_4_6_3 bool prompt "4.6.3" select CC_GCC_4_6 -config CC_V_4_6_2 +config CC_GCC_V_4_6_2 bool prompt "4.6.2" select CC_GCC_4_6 -config CC_V_4_6_1 +config CC_GCC_V_4_6_1 bool prompt "4.6.1" select CC_GCC_4_6 -config CC_V_4_6_0 +config CC_GCC_V_4_6_0 bool prompt "4.6.0" select CC_GCC_4_6 -config CC_V_linaro_4_5 +config CC_GCC_V_linaro_4_5 bool prompt "linaro-4.5-2012.03" depends on CC_GCC_SHOW_LINARO select CC_GCC_4_5 -config CC_V_4_5_3 +config CC_GCC_V_4_5_3 bool prompt "4.5.3" select CC_GCC_4_5 -config CC_V_4_5_2 +config CC_GCC_V_4_5_2 bool prompt "4.5.2" select CC_GCC_4_5 -config CC_V_4_5_1 +config CC_GCC_V_4_5_1 bool prompt "4.5.1" select CC_GCC_4_5 -config CC_V_4_5_0 +config CC_GCC_V_4_5_0 bool prompt "4.5.0" select CC_GCC_4_5 -config CC_V_linaro_4_4 +config CC_GCC_V_linaro_4_4 bool prompt "linaro-4.4-2011.02-0" depends on CC_GCC_SHOW_LINARO select CC_GCC_4_4 -config CC_V_4_4_7 +config CC_GCC_V_4_4_7 bool prompt "4.4.7" select CC_GCC_4_4 -config CC_V_4_4_6 +config CC_GCC_V_4_4_6 bool prompt "4.4.6" select CC_GCC_4_4 -config CC_V_4_4_5 +config CC_GCC_V_4_4_5 bool prompt "4.4.5" select CC_GCC_4_4 -config CC_V_4_4_4 +config CC_GCC_V_4_4_4 bool prompt "4.4.4" select CC_GCC_4_4 -config CC_V_4_4_3 +config CC_GCC_V_4_4_3 bool prompt "4.4.3" select CC_GCC_4_4 -config CC_V_4_4_2 +config CC_GCC_V_4_4_2 bool prompt "4.4.2" select CC_GCC_4_4 -config CC_V_4_4_1 +config CC_GCC_V_4_4_1 bool prompt "4.4.1" select CC_GCC_4_4 -config CC_V_4_4_0 +config CC_GCC_V_4_4_0 bool prompt "4.4.0" select CC_GCC_4_4 -config CC_V_4_3_6 +config CC_GCC_V_4_3_6 bool prompt "4.3.6" select CC_GCC_4_3 -config CC_V_4_3_5 +config CC_GCC_V_4_3_5 bool prompt "4.3.5" select CC_GCC_4_3 -config CC_V_4_3_4 +config CC_GCC_V_4_3_4 bool prompt "4.3.4" select CC_GCC_4_3 -config CC_V_4_3_3 +config CC_GCC_V_4_3_3 bool prompt "4.3.3" select CC_GCC_4_3 -config CC_V_4_3_2 +config CC_GCC_V_4_3_2 bool prompt "4.3.2" select CC_GCC_4_3 -config CC_V_4_3_1 +config CC_GCC_V_4_3_1 bool prompt "4.3.1" select CC_GCC_4_3 -config CC_V_4_2_4 +config CC_GCC_V_4_2_4 bool prompt "4.2.4" select CC_GCC_4_2 # We need that one, it's the only version with avr32 support # because we have a patch for it -config CC_V_4_2_2 +config CC_GCC_V_4_2_2 bool prompt "4.2.2" select CC_GCC_4_2 -config CC_V_4_1_2 +config CC_GCC_V_4_1_2 bool prompt "4.1.2 (OBSOLETE)" depends on OBSOLETE -config CC_V_4_0_4 +config CC_GCC_V_4_0_4 bool prompt "4.0.4 (OBSOLETE)" depends on OBSOLETE -config CC_V_3_4_6 +config CC_GCC_V_3_4_6 bool prompt "3.4.6 (OBSOLETE)" depends on OBSOLETE -config CC_CUSTOM +config CC_GCC_CUSTOM bool prompt "Custom gcc" depends on EXPERIMENTAL @@ -252,9 +253,9 @@ endchoice -if CC_CUSTOM +if CC_GCC_CUSTOM -config CC_CUSTOM_LOCATION +config CC_GCC_CUSTOM_LOCATION string prompt "Full path to custom gcc source" default "" @@ -262,7 +263,7 @@ Enter the path to the directory (or tarball) of your source for gcc, or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/gcc -endif #CC_CUSTOM +endif #CC_GCC_CUSTOM config CC_GCC_4_2 bool @@ -434,6 +435,8 @@ select GMP_NEEDED select MPFR_NEEDED + select CLOOG_NEEDED + config CC_GCC_USE_MPC bool select MPC_NEEDED @@ -445,52 +448,52 @@ config CC_GCC_HAS_LIBQUADMATH bool -config CC_VERSION +config CC_GCC_VERSION string # Don't remove next line # CT_INSERT_VERSION_STRING_BELOW - default "linaro-4.8-2013.06-1" if CC_V_linaro_4_8 - default "4.8.2" if CC_V_4_8_2 - default "4.8.1" if CC_V_4_8_1 - default "4.8.0" if CC_V_4_8_0 - default "linaro-4.7-2013.06-1" if CC_V_linaro_4_7 - default "4.7.3" if CC_V_4_7_3 - default "4.7.2" if CC_V_4_7_2 - default "4.7.1" if CC_V_4_7_1 - default "4.7.0" if CC_V_4_7_0 - default "linaro-4.6-2013.05" if CC_V_linaro_4_6 - default "4.6.4" if CC_V_4_6_4 - default "4.6.3" if CC_V_4_6_3 - default "4.6.2" if CC_V_4_6_2 - default "4.6.1" if CC_V_4_6_1 - default "4.6.0" if CC_V_4_6_0 - default "linaro-4.5-2012.03" if CC_V_linaro_4_5 - default "4.5.3" if CC_V_4_5_3 - default "4.5.2" if CC_V_4_5_2 - default "4.5.1" if CC_V_4_5_1 - default "4.5.0" if CC_V_4_5_0 - default "linaro-4.4-2011.02-0" if CC_V_linaro_4_4 - default "4.4.7" if CC_V_4_4_7 - default "4.4.6" if CC_V_4_4_6 - default "4.4.5" if CC_V_4_4_5 - default "4.4.4" if CC_V_4_4_4 - default "4.4.3" if CC_V_4_4_3 - default "4.4.2" if CC_V_4_4_2 - default "4.4.1" if CC_V_4_4_1 - default "4.4.0" if CC_V_4_4_0 - default "4.3.6" if CC_V_4_3_6 - default "4.3.5" if CC_V_4_3_5 - default "4.3.4" if CC_V_4_3_4 - default "4.3.3" if CC_V_4_3_3 - default "4.3.2" if CC_V_4_3_2 - default "4.3.1" if CC_V_4_3_1 - default "4.3.0" if CC_V_4_3_0 - default "4.2.4" if CC_V_4_2_4 - default "4.2.2" if CC_V_4_2_2 - default "4.1.2" if CC_V_4_1_2 - default "4.0.4" if CC_V_4_0_4 - default "3.4.6" if CC_V_3_4_6 - default "custom" if CC_CUSTOM + default "linaro-4.8-2013.06-1" if CC_GCC_V_linaro_4_8 + default "4.8.2" if CC_GCC_V_4_8_2 + default "4.8.1" if CC_GCC_V_4_8_1 + default "4.8.0" if CC_GCC_V_4_8_0 + default "linaro-4.7-2013.06-1" if CC_GCC_V_linaro_4_7 + default "4.7.3" if CC_GCC_V_4_7_3 + default "4.7.2" if CC_GCC_V_4_7_2 + default "4.7.1" if CC_GCC_V_4_7_1 + default "4.7.0" if CC_GCC_V_4_7_0 + default "linaro-4.6-2013.05" if CC_GCC_V_linaro_4_6 + default "4.6.4" if CC_GCC_V_4_6_4 + default "4.6.3" if CC_GCC_V_4_6_3 + default "4.6.2" if CC_GCC_V_4_6_2 + default "4.6.1" if CC_GCC_V_4_6_1 + default "4.6.0" if CC_GCC_V_4_6_0 + default "linaro-4.5-2012.03" if CC_GCC_V_linaro_4_5 + default "4.5.3" if CC_GCC_V_4_5_3 + default "4.5.2" if CC_GCC_V_4_5_2 + default "4.5.1" if CC_GCC_V_4_5_1 + default "4.5.0" if CC_GCC_V_4_5_0 + default "linaro-4.4-2011.02-0" if CC_GCC_V_linaro_4_4 + default "4.4.7" if CC_GCC_V_4_4_7 + default "4.4.6" if CC_GCC_V_4_4_6 + default "4.4.5" if CC_GCC_V_4_4_5 + default "4.4.4" if CC_GCC_V_4_4_4 + default "4.4.3" if CC_GCC_V_4_4_3 + default "4.4.2" if CC_GCC_V_4_4_2 + default "4.4.1" if CC_GCC_V_4_4_1 + default "4.4.0" if CC_GCC_V_4_4_0 + default "4.3.6" if CC_GCC_V_4_3_6 + default "4.3.5" if CC_GCC_V_4_3_5 + default "4.3.4" if CC_GCC_V_4_3_4 + default "4.3.3" if CC_GCC_V_4_3_3 + default "4.3.2" if CC_GCC_V_4_3_2 + default "4.3.1" if CC_GCC_V_4_3_1 + default "4.3.0" if CC_GCC_V_4_3_0 + default "4.2.4" if CC_GCC_V_4_2_4 + default "4.2.2" if CC_GCC_V_4_2_2 + default "4.1.2" if CC_GCC_V_4_1_2 + default "4.0.4" if CC_GCC_V_4_0_4 + default "3.4.6" if CC_GCC_V_3_4_6 + default "custom" if CC_GCC_CUSTOM config CC_LANG_JAVA_USE_ECJ bool @@ -501,3 +504,5 @@ # Fortran always requires GMP+MPFR, whatever the gcc version config CC_LANG_FORTRAN select CC_GCC_USE_GMP_MPFR + +source "config/cc/gcc.in.2" diff -r 7e569a9cb5fd -r cc545a5c1896 config/cc/gcc.in.2 --- a/config/cc/gcc.in.2 Sat Nov 16 18:14:45 2013 +0100 +++ b/config/cc/gcc.in.2 Wed Dec 11 21:28:37 2013 +0100 @@ -1,6 +1,6 @@ # gcc configuration options -config CC_ENABLE_CXX_FLAGS +config CC_GCC_ENABLE_CXX_FLAGS string prompt "Flags to pass to --enable-cxx-flags" default "" @@ -11,7 +11,7 @@ Note: just pass in the option _value_, that is only the part that goes after the '=' sign. -config CC_CORE_EXTRA_CONFIG_ARRAY +config CC_GCC_CORE_EXTRA_CONFIG_ARRAY string prompt "Core gcc extra config" default "" @@ -25,7 +25,7 @@ if they are properly quoted (or escaped, but prefer quotes). Eg.: --with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space -config CC_EXTRA_CONFIG_ARRAY +config CC_GCC_EXTRA_CONFIG_ARRAY string prompt "gcc extra config" default "" @@ -38,9 +38,9 @@ --with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space config STATIC_TOOLCHAIN - select CC_STATIC_LIBSTDCXX if CC_GCC_4_4_or_later + select CC_GCC_STATIC_LIBSTDCXX if CC_GCC_4_4_or_later -config CC_STATIC_LIBSTDCXX +config CC_GCC_STATIC_LIBSTDCXX bool prompt "Link libstdc++ statically into the gcc binary" default y diff -r 7e569a9cb5fd -r cc545a5c1896 config/config.mk --- a/config/config.mk Sat Nov 16 18:14:45 2013 +0100 +++ b/config/config.mk Wed Dec 11 21:28:37 2013 +0100 @@ -83,7 +83,7 @@ config.gen/cc.in: $(CC_CONFIG_FILES) $(CC_CONFIG_FILES_2) @$(ECHO) ' IN $(@)' - $(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh choice "$@" "C compiler" "CC" "config/cc" "N" $(CCS) + $(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh menu "$@" "C compiler" "CC" "config/cc" $(CCS) config.gen/binutils.in: $(CC_BINUTILS_FILES) $(CC_BINUTILS_FILES_2) @$(ECHO) ' IN $(@)' diff -r 7e569a9cb5fd -r cc545a5c1896 samples/alphaev56-unknown-linux-gnu/crosstool.config --- a/samples/alphaev56-unknown-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/alphaev56-unknown-linux-gnu/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -10,7 +10,7 @@ CT_BINUTILS_V_2_21_1a=y CT_BINUTILS_PLUGINS=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_4_5=y +CT_CC_GCC_V_4_4_5=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_LIBC_glibc=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/alphaev67-unknown-linux-gnu/crosstool.config --- a/samples/alphaev67-unknown-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/alphaev67-unknown-linux-gnu/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -8,7 +8,7 @@ CT_KERNEL_linux=y CT_KERNEL_V_2_6_38=y CT_BINUTILS_V_2_21_1a=y -CT_CC_V_4_3_5=y +CT_CC_GCC_V_4_3_5=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y # CT_CC_GCC_ENABLE_TARGET_OPTSPACE is not set diff -r 7e569a9cb5fd -r cc545a5c1896 samples/arm-bare_newlib_cortex_m3_nommu-eabi/crosstool.config --- a/samples/arm-bare_newlib_cortex_m3_nommu-eabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/arm-bare_newlib_cortex_m3_nommu-eabi/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -11,7 +11,7 @@ CT_TARGET_VENDOR="bare_newlib_cortex_m3_nommu" CT_ARCH_BINFMT_FLAT=y CT_BINUTILS_V_2_19_1a=y -CT_CC_V_4_4_1=y +CT_CC_GCC_V_4_4_1=y CT_CC_LANG_CXX=y CT_LIBC_NEWLIB_V_1_18_0=y CT_GMP_V_4_3_2=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/arm-cortex_a8-linux-gnueabi/crosstool.config --- a/samples/arm-cortex_a8-linux-gnueabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/arm-cortex_a8-linux-gnueabi/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -10,7 +10,7 @@ CT_KERNEL_linux=y CT_BINUTILS_V_2_20_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_4_6=y +CT_CC_GCC_V_4_4_6=y CT_CC_LANG_CXX=y CT_LIBC_glibc=y CT_LIBC_GLIBC_V_2_9=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/arm-cortexa9_neon-linux-gnueabihf/crosstool.config --- a/samples/arm-cortexa9_neon-linux-gnueabihf/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/arm-cortexa9_neon-linux-gnueabihf/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -18,7 +18,7 @@ CT_BINUTILS_PLUGINS=y CT_BINUTILS_FOR_TARGET=y CT_CC_GCC_SHOW_LINARO=y -CT_CC_V_linaro_4_7=y +CT_CC_GCC_V_linaro_4_7=y CT_CC_LANG_CXX=y CT_CC_CORE_EXTRA_CONFIG_ARRAY="\"--with-specs=%{save-temps: -fverbose-asm} %{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables}\" --enable-poison-system-directories" CT_CC_EXTRA_CONFIG_ARRAY="\"--with-specs=%{save-temps: -fverbose-asm} %{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables}\" --enable-poison-system-directories" diff -r 7e569a9cb5fd -r cc545a5c1896 samples/arm-davinci-linux-gnueabi/crosstool.config --- a/samples/arm-davinci-linux-gnueabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/arm-davinci-linux-gnueabi/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -11,7 +11,7 @@ CT_KERNEL_V_2_6_33=y CT_BINUTILS_V_2_20_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_CXX=y CT_LIBC_glibc=y CT_LIBC_GLIBC_V_2_9=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/arm-unknown-eabi/crosstool.config --- a/samples/arm-unknown-eabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/arm-unknown-eabi/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -4,7 +4,7 @@ CT_ARCH_FLOAT_SW=y CT_ARCH_arm=y CT_BINUTILS_V_2_19_1a=y -CT_CC_V_4_3_4=y +CT_CC_GCC_V_4_3_4=y CT_CC_LANG_CXX=y CT_LIBC_NEWLIB_V_1_17_0=y CT_DEBUG_gdb=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/arm-unknown-linux-gnueabi/crosstool.config --- a/samples/arm-unknown-linux-gnueabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/arm-unknown-linux-gnueabi/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -7,7 +7,7 @@ CT_KERNEL_linux=y CT_BINUTILS_V_2_19_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_CC_LANG_JAVA=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/arm-unknown-linux-uclibcgnueabi/crosstool.config --- a/samples/arm-unknown-linux-uclibcgnueabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/arm-unknown-linux-uclibcgnueabi/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -11,7 +11,7 @@ CT_KERNEL_V_2_6_33=y CT_BINUTILS_V_2_19_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_4_3=y +CT_CC_GCC_V_4_4_3=y CT_CC_LANG_CXX=y CT_LIBC_uClibc=y CT_LIBC_UCLIBC_V_0_9_30_2=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/armeb-unknown-eabi/crosstool.config --- a/samples/armeb-unknown-eabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/armeb-unknown-eabi/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -5,7 +5,7 @@ CT_ARCH_FLOAT_SW=y CT_ARCH_arm=y CT_BINUTILS_V_2_19_1a=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_LIBC_none=y CT_DEBUG_gdb=y CT_GDB_V_6_8a=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/armeb-unknown-linux-gnueabi/crosstool.config --- a/samples/armeb-unknown-linux-gnueabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/armeb-unknown-linux-gnueabi/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -11,7 +11,7 @@ CT_KERNEL_linux=y CT_BINUTILS_V_2_20_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_4_3=y +CT_CC_GCC_V_4_4_3=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_CC_LANG_JAVA=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/armeb-unknown-linux-uclibcgnueabi/crosstool.config --- a/samples/armeb-unknown-linux-uclibcgnueabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/armeb-unknown-linux-uclibcgnueabi/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -16,7 +16,7 @@ CT_BINUTILS_LD_WRAPPER=y CT_BINUTILS_PLUGINS=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_6_4=y +CT_CC_GCC_V_4_6_4=y CT_CC_LANG_CXX=y CT_CC_GCC_DISABLE_PCH=y # CT_CC_GCC_SJLJ_EXCEPTIONS is not set diff -r 7e569a9cb5fd -r cc545a5c1896 samples/avr32-unknown-none/crosstool.config --- a/samples/avr32-unknown-none/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/avr32-unknown-none/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -4,7 +4,7 @@ CT_LOG_EXTRA=y CT_ARCH_avr32=y CT_BINUTILS_V_2_18a=y -CT_CC_V_4_2_2=y +CT_CC_GCC_V_4_2_2=y CT_LIBC_NEWLIB_V_1_17_0=y CT_LIBC_NEWLIB_IO_LL=y CT_LIBC_NEWLIB_IO_FLOAT=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/bfin-unknown-linux-uclibc/crosstool.config --- a/samples/bfin-unknown-linux-uclibc/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/bfin-unknown-linux-uclibc/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -6,7 +6,7 @@ CT_KERNEL_V_2_6_33=y CT_ARCH_BINFMT_FDPIC=y CT_BINUTILS_V_2_20_1a=y -CT_CC_V_4_3_4=y +CT_CC_GCC_V_4_3_4=y CT_LIBC_UCLIBC_V_0_9_30_2=y CT_LIBC_UCLIBC_CONFIG_FILE="${CT_LIB_DIR}/samples/${CT_TARGET}/${CT_LIBC}-${CT_LIBC_VERSION}.config" CT_GMP_V_4_3_2=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/i586-geode-linux-uclibc/crosstool.config --- a/samples/i586-geode-linux-uclibc/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/i586-geode-linux-uclibc/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -8,7 +8,7 @@ CT_KERNEL_V_2_6_36=y CT_BINUTILS_V_2_20_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_4_5=y +CT_CC_GCC_V_4_4_5=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_CC_LANG_JAVA=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/i586-mingw32msvc,i686-none-linux-gnu/crosstool.config --- a/samples/i586-mingw32msvc,i686-none-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/i586-mingw32msvc,i686-none-linux-gnu/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -12,7 +12,7 @@ CT_KERNEL_V_2_6_33=y CT_BINUTILS_V_2_19_1a=y CT_BINUTILS_EXTRA_CONFIG_ARRAY="--enable-targets=i686-none-linux-gnu" -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_CXX=y CT_LIBC_glibc=y CT_LIBC_GLIBC_V_2_9=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/i686-nptl-linux-gnu/crosstool.config --- a/samples/i686-nptl-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/i686-nptl-linux-gnu/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -13,7 +13,7 @@ CT_BINUTILS_LD_WRAPPER=y CT_BINUTILS_PLUGINS=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_5_2=y +CT_CC_GCC_V_4_5_2=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_CC_LANG_JAVA=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/i686-unknown-mingw32/crosstool.config --- a/samples/i686-unknown-mingw32/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/i686-unknown-mingw32/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -7,7 +7,7 @@ CT_KERNEL_windows=y CT_BINUTILS_V_2_21_1a=y CT_BINUTILS_PLUGINS=y -CT_CC_V_4_5_2=y +CT_CC_GCC_V_4_5_2=y CT_CC_LANG_CXX=y CT_MINGW_DIRECTX=y CT_MINGW_DDK=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/m68k-unknown-elf/crosstool.config --- a/samples/m68k-unknown-elf/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/m68k-unknown-elf/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -6,7 +6,7 @@ CT_ARCH_m68k=y CT_ARCH_BINFMT_FLAT=y CT_BINUTILS_V_2_20_1a=y -CT_CC_V_4_3_4=y +CT_CC_GCC_V_4_3_4=y CT_LIBC_none=y CT_GMP_V_4_3_2=y CT_MPFR_V_2_4_2=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/mips-ar2315-linux-gnu/crosstool.config --- a/samples/mips-ar2315-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/mips-ar2315-linux-gnu/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -10,7 +10,7 @@ CT_KERNEL_linux=y CT_KERNEL_V_2_6_33=y CT_BINUTILS_V_2_19_1a=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_CXX=y CT_LIBC_EGLIBC_V_2_9=y CT_EGLIBC_REVISION="{2009-07-21}" diff -r 7e569a9cb5fd -r cc545a5c1896 samples/mips-malta-linux-gnu/crosstool.config --- a/samples/mips-malta-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/mips-malta-linux-gnu/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -7,7 +7,7 @@ CT_KERNEL_linux=y CT_KERNEL_V_2_6_38=y CT_BINUTILS_V_2_21_1a=y -CT_CC_V_4_4_6=y +CT_CC_GCC_V_4_4_6=y # CT_CC_GCC_USE_GRAPHITE is not set CT_LIBC_EGLIBC_V_2_13=y CT_DEBUG_gdb=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/mips-unknown-elf/crosstool.config --- a/samples/mips-unknown-elf/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/mips-unknown-elf/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -4,7 +4,7 @@ CT_ARCH_FLOAT_SW=y CT_ARCH_mips=y CT_BINUTILS_V_2_19_1a=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_LIBC_none=y CT_DEBUG_gdb=y CT_GDB_V_6_8a=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/mips-unknown-linux-uclibc/crosstool.config --- a/samples/mips-unknown-linux-uclibc/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/mips-unknown-linux-uclibc/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -8,7 +8,7 @@ CT_KERNEL_linux=y CT_KERNEL_V_3_6=y CT_BINUTILS_V_2_21_1a=y -CT_CC_V_4_6_4=y +CT_CC_GCC_V_4_6_4=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_LIBC_uClibc=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/mips64el-n32-linux-uclibc/crosstool.config --- a/samples/mips64el-n32-linux-uclibc/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/mips64el-n32-linux-uclibc/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -10,7 +10,7 @@ CT_KERNEL_linux=y CT_KERNEL_V_2_6_31=y CT_BINUTILS_V_2_19_1a=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_CXX=y CT_LIBC_uClibc=y CT_LIBC_UCLIBC_V_0_9_30_1=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/mips64el-n64-linux-uclibc/crosstool.config --- a/samples/mips64el-n64-linux-uclibc/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/mips64el-n64-linux-uclibc/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -11,7 +11,7 @@ CT_KERNEL_linux=y CT_KERNEL_V_2_6_31=y CT_BINUTILS_V_2_19_1a=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_CXX=y CT_LIBC_uClibc=y CT_LIBC_UCLIBC_V_0_9_30_1=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/mipsel-sde-elf/crosstool.config --- a/samples/mipsel-sde-elf/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/mipsel-sde-elf/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -6,7 +6,7 @@ CT_ARCH_mips=y CT_TARGET_VENDOR="sde" CT_BINUTILS_V_2_21_1a=y -CT_CC_V_4_4_6=y +CT_CC_GCC_V_4_4_6=y # CT_CC_GCC_ENABLE_TARGET_OPTSPACE is not set CT_LIBC_none=y CT_DEBUG_gdb=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/mipsel-unknown-linux-gnu/crosstool.config --- a/samples/mipsel-unknown-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/mipsel-unknown-linux-gnu/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -9,7 +9,7 @@ CT_KERNEL_V_2_6_31=y CT_BINUTILS_V_2_19_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_CXX=y CT_LIBC_glibc=y CT_LIBC_GLIBC_V_2_9=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/powerpc-405-linux-gnu/crosstool.config --- a/samples/powerpc-405-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/powerpc-405-linux-gnu/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -10,7 +10,7 @@ CT_KERNEL_V_2_6_31=y CT_BINUTILS_V_2_19_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_CC_LANG_JAVA=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/powerpc-860-linux-gnu/crosstool.config --- a/samples/powerpc-860-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/powerpc-860-linux-gnu/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -9,7 +9,7 @@ CT_KERNEL_V_2_6_31=y CT_BINUTILS_V_2_19_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_CC_EXTRA_CONFIG_ARRAY="--with-cpu=860 --enable-cxx-flags=-mcpu=860 --with-float=soft --enable-cxx-flags=-msoft-float" diff -r 7e569a9cb5fd -r cc545a5c1896 samples/powerpc-e300c3-linux-gnu/crosstool.config --- a/samples/powerpc-e300c3-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/powerpc-e300c3-linux-gnu/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -9,7 +9,7 @@ CT_KERNEL_V_2_6_36=y CT_BINUTILS_V_2_21_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_5_2=y +CT_CC_GCC_V_4_5_2=y CT_CC_LANG_CXX=y CT_CC_EXTRA_CONFIG_ARRAY="--with-long-double-128" # CT_CC_GCC_ENABLE_TARGET_OPTSPACE is not set diff -r 7e569a9cb5fd -r cc545a5c1896 samples/powerpc-e500v2-linux-gnuspe/crosstool.config --- a/samples/powerpc-e500v2-linux-gnuspe/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/powerpc-e500v2-linux-gnuspe/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -14,7 +14,7 @@ CT_BINUTILS_EXTRA_CONFIG_ARRAY="--enable-spe=yes --enable-e500x2 --with-e500x2" CT_BINUTILS_FOR_TARGET=y CT_CC_GCC_SHOW_LINARO=y -CT_CC_V_4_6_4=y +CT_CC_GCC_V_4_6_4=y CT_CC_LANG_CXX=y CT_CC_EXTRA_CONFIG_ARRAY="--with-long-double-128" # CT_CC_GCC_ENABLE_TARGET_OPTSPACE is not set diff -r 7e569a9cb5fd -r cc545a5c1896 samples/powerpc-unknown-linux-gnu/crosstool.config --- a/samples/powerpc-unknown-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/powerpc-unknown-linux-gnu/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -6,7 +6,7 @@ CT_KERNEL_V_2_6_31=y CT_BINUTILS_V_2_19_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_CC_LANG_JAVA=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/powerpc-unknown-linux-uclibc/crosstool.config --- a/samples/powerpc-unknown-linux-uclibc/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/powerpc-unknown-linux-uclibc/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -7,7 +7,7 @@ CT_KERNEL_V_2_6_31=y CT_BINUTILS_V_2_19_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_2_4=y +CT_CC_GCC_V_4_2_4=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_LIBC_uClibc=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/powerpc-unknown_nofpu-linux-gnu/crosstool.config --- a/samples/powerpc-unknown_nofpu-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/powerpc-unknown_nofpu-linux-gnu/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -8,7 +8,7 @@ CT_KERNEL_V_2_6_31=y CT_BINUTILS_V_2_19_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_CC_LANG_JAVA=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/powerpc64-unknown-linux-gnu/crosstool.config --- a/samples/powerpc64-unknown-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/powerpc64-unknown-linux-gnu/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -8,7 +8,7 @@ CT_KERNEL_V_2_6_31=y CT_BINUTILS_V_2_20_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_5_2=y +CT_CC_GCC_V_4_5_2=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_CC_LANG_JAVA=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/s390-ibm-linux-gnu/crosstool.config --- a/samples/s390-ibm-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/s390-ibm-linux-gnu/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -6,7 +6,7 @@ CT_KERNEL_linux=y CT_KERNEL_V_2_6_31=y CT_BINUTILS_V_2_20_1a=y -CT_CC_V_4_3_4=y +CT_CC_GCC_V_4_3_4=y CT_CC_LANG_CXX=y CT_LIBC_glibc=y CT_LIBC_GLIBC_V_2_9=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/s390x-ibm-linux-gnu/crosstool.config --- a/samples/s390x-ibm-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/s390x-ibm-linux-gnu/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -8,7 +8,7 @@ CT_KERNEL_linux=y CT_KERNEL_V_2_6_31=y CT_BINUTILS_V_2_19_1a=y -CT_CC_V_4_4_5=y +CT_CC_GCC_V_4_4_5=y CT_CC_LANG_CXX=y CT_LIBC_glibc=y CT_LIBC_GLIBC_V_2_9=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/sh4-unknown-linux-gnu/crosstool.config --- a/samples/sh4-unknown-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/sh4-unknown-linux-gnu/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -7,7 +7,7 @@ CT_KERNEL_linux=y CT_KERNEL_V_2_6_27=y CT_BINUTILS_V_2_19_1a=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_CXX=y CT_LIBC_glibc=y CT_LIBC_GLIBC_V_2_9=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/x86_64-unknown-linux-gnu/crosstool.config --- a/samples/x86_64-unknown-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/x86_64-unknown-linux-gnu/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -7,7 +7,7 @@ CT_KERNEL_V_2_6_33=y CT_BINUTILS_V_2_20_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_4_3=y +CT_CC_GCC_V_4_4_3=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_CC_LANG_JAVA=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/x86_64-unknown-linux-uclibc/crosstool.config --- a/samples/x86_64-unknown-linux-uclibc/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/x86_64-unknown-linux-uclibc/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -7,7 +7,7 @@ CT_KERNEL_V_2_6_33=y CT_BINUTILS_V_2_20_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_4_3=y +CT_CC_GCC_V_4_4_3=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_CC_LANG_JAVA=y diff -r 7e569a9cb5fd -r cc545a5c1896 samples/x86_64-unknown-mingw32/crosstool.config --- a/samples/x86_64-unknown-mingw32/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/x86_64-unknown-mingw32/crosstool.config Wed Dec 11 21:28:37 2013 +0100 @@ -7,7 +7,7 @@ CT_KERNEL_windows=y CT_BINUTILS_V_2_21_1a=y CT_BINUTILS_PLUGINS=y -CT_CC_V_4_5_2=y +CT_CC_GCC_V_4_5_2=y CT_CC_LANG_CXX=y CT_MINGW_DIRECTX=y CT_MINGW_DDK=y diff -r 7e569a9cb5fd -r cc545a5c1896 scripts/build/cc.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/build/cc.sh Wed Dec 11 21:28:37 2013 +0100 @@ -0,0 +1,59 @@ +# Wrapper to build the companion tools facilities + +# List all companion tools facilities, and parse their scripts +CT_CC_FACILITY_LIST= +for f in "${CT_LIB_DIR}/scripts/build/cc/"*.sh; do + _f="$(basename "${f}" .sh)" + _f="${_f#???-}" + __f="CT_CC_${_f}" + if [ "${!__f}" = "y" ]; then + CT_DoLog DEBUG "Enabling cc '${_f}'" + . "${f}" + CT_CC_FACILITY_LIST="${CT_CC_FACILITY_LIST} ${_f}" + else + CT_DoLog DEBUG "Disabling cc '${_f}'" + fi +done + +# Download the cc facilities +do_cc_get() { + for f in ${CT_CC_FACILITY_LIST}; do + do_${f}_get + done +} + +# Extract and patch the cc facilities +do_cc_extract() { + for f in ${CT_CC_FACILITY_LIST}; do + do_${f}_extract + done +} + +# Core pass 1 the cc facilities +do_cc_core_pass_1() { + for f in ${CT_CC_FACILITY_LIST}; do + do_${f}_core_pass_1 + done +} + +# Core pass 2 the cc facilities +do_cc_core_pass_2() { + for f in ${CT_CC_FACILITY_LIST}; do + do_${f}_core_pass_2 + done +} + +# Build for build the cc facilities +do_cc_for_build() { + for f in ${CT_CC_FACILITY_LIST}; do + do_${f}_for_build + done +} + +# Build for host the cc facilities +do_cc_for_host() { + for f in ${CT_CC_FACILITY_LIST}; do + do_${f}_for_host + done +} + diff -r 7e569a9cb5fd -r cc545a5c1896 scripts/build/cc/100-gcc.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/build/cc/100-gcc.sh Wed Dec 11 21:28:37 2013 +0100 @@ -0,0 +1,874 @@ +# 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 + +# Download gcc +do_gcc_get() { + local linaro_version + local linaro_series + local linaro_base_url="http://launchpad.net/gcc-linaro" + + if [ "${CT_CC_GCC_CUSTOM}" = "y" ]; then + CT_GetCustom "gcc" "${CT_CC_GCC_VERSION}" "${CT_CC_GCC_CUSTOM_LOCATION}" + else + # Account for the Linaro versioning + linaro_version="$( echo "${CT_CC_GCC_VERSION}" \ + |sed -r -e 's/^linaro-//;' \ + )" + linaro_series="$( echo "${linaro_version}" \ + |sed -r -e 's/-.*//;' \ + )" + + # Ah! gcc folks are kind of 'different': they store the tarballs in + # subdirectories of the same name! + # 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! + CT_GetFile "gcc-${CT_CC_GCC_VERSION}" \ + {ftp,http}://ftp.gnu.org/gnu/gcc{,{,/releases}/gcc-${CT_CC_GCC_VERSION}} \ + ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-${CT_CC_GCC_VERSION} \ + ftp://ftp.uvsq.fr/pub/gcc/snapshots/${CT_CC_GCC_VERSION} \ + "${linaro_base_url}/${linaro_series}/${linaro_version}/+download" + fi # ! custom location + # Starting with GCC 4.3, ecj is used for Java, and will only be + # built if the configure script finds ecj.jar at the top of the + # GCC source tree, which will not be there unless we get it and + # put it there ourselves + if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y" ]; then + CT_GetFile ecj-latest .jar ftp://gcc.gnu.org/pub/java \ + ftp://sourceware.org/pub/java + fi +} + +# Extract gcc +do_gcc_extract() { + # If using custom directory location, nothing to do + if [ "${CT_CC_GCC_CUSTOM}" = "y" \ + -a -d "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}" ]; then + return 0 + fi + + CT_Extract "gcc-${CT_CC_GCC_VERSION}" + CT_Patch "gcc" "${CT_CC_GCC_VERSION}" + + # Copy ecj-latest.jar to ecj.jar at the top of the GCC source tree + if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y" \ + -a ! -f "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/ecj.jar" \ + ]; then + CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/ecj-latest.jar" "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/ecj.jar" + fi +} + +#------------------------------------------------------------------------------ +# This function builds up the set of languages to enable +# No argument expected, returns the comma-separated language list on stdout +cc_gcc_lang_list() { + local lang_list + + lang_list="c" + [ "${CT_CC_LANG_CXX}" = "y" ] && lang_list+=",c++" + [ "${CT_CC_LANG_FORTRAN}" = "y" ] && lang_list+=",fortran" + [ "${CT_CC_LANG_ADA}" = "y" ] && lang_list+=",ada" + [ "${CT_CC_LANG_JAVA}" = "y" ] && lang_list+=",java" + [ "${CT_CC_LANG_OBJC}" = "y" ] && lang_list+=",objc" + [ "${CT_CC_LANG_OBJCXX}" = "y" ] && lang_list+=",obj-c++" + [ "${CT_CC_LANG_GOLANG}" = "y" ] && lang_list+=",go" + lang_list+="${CT_CC_LANG_OTHERS:+,${CT_CC_LANG_OTHERS}}" + + printf "%s" "${lang_list}" +} + +#------------------------------------------------------------------------------ +# Core gcc pass 1 +do_gcc_core_pass_1() { + local -a core_opts + + if [ "${CT_CC_CORE_PASSES_NEEDED}" != "y" ]; then + return 0 + fi + + core_opts+=( "mode=static" ) + core_opts+=( "host=${CT_BUILD}" ) + core_opts+=( "complibs=${CT_BUILDTOOLS_PREFIX_DIR}" ) + core_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" ) + core_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" ) + core_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" ) + core_opts+=( "lang_list=c" ) + + CT_DoStep INFO "Installing pass-1 core C gcc compiler" + CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-core-pass-1" + + do_gcc_core_backend "${core_opts[@]}" + + CT_Popd + CT_EndStep +} + +# Core gcc pass 2 +do_gcc_core_pass_2() { + local -a core_opts + + if [ "${CT_CC_CORE_PASSES_NEEDED}" != "y" ]; then + return 0 + fi + + # Common options: + core_opts+=( "host=${CT_BUILD}" ) + core_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" ) + core_opts+=( "complibs=${CT_BUILDTOOLS_PREFIX_DIR}" ) + core_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" ) + core_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" ) + core_opts+=( "lang_list=c" ) + + # Different conditions are at stake here: + # - In case the threading model is NPTL, we need a shared-capable core + # gcc; in all other cases, we need a static-only core gcc. + # - In case the threading model is NPTL or win32, or gcc is 4.3 or + # later, we need to build libgcc + case "${CT_THREADS}" in + nptl) + core_opts+=( "mode=shared" ) + core_opts+=( "build_libgcc=yes" ) + ;; + win32) + core_opts+=( "mode=static" ) + core_opts+=( "build_libgcc=yes" ) + ;; + *) + core_opts+=( "mode=static" ) + if [ "${CT_CC_GCC_4_3_or_later}" = "y" ]; then + core_opts+=( "build_libgcc=yes" ) + fi + ;; + esac + + CT_DoStep INFO "Installing pass-2 core C gcc compiler" + CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-core-pass-2" + + do_gcc_core_backend "${core_opts[@]}" + + CT_Popd + CT_EndStep +} + +#------------------------------------------------------------------------------ +# Build core gcc +# This function is used to build the core C compiler. +# Usage: do_gcc_core_backend param=value [...] +# Parameter : Definition : Type : Default +# mode : build a 'static', 'shared' or 'baremetal' : string : (none) +# host : the machine the core will run on : tuple : (none) +# prefix : dir prefix to install into : dir : (none) +# complibs : dir where complibs are isntalled : dir : (none) +# lang_list : the list of languages to build : string : (empty) +# build_libgcc : build libgcc or not : bool : no +# build_libstdcxx : build libstdc++ or not : bool : no +# build_staticlinked : build statically linked or not : bool : no +# build_manuals : whether to build manuals or not : bool : no +# cflags : cflags to use : string : (empty) +# ldflags : ldflags to use : string : (empty) +# Usage: do_gcc_core_backend mode=[static|shared|baremetal] build_libgcc=[yes|no] build_staticlinked=[yes|no] +do_gcc_core_backend() { + local mode + local build_libgcc=no + local build_libstdcxx=no + local build_staticlinked=no + local build_manuals=no + local host + local prefix + local complibs + local lang_list + local cflags + local ldflags + local tmp + local -a host_libstdcxx_flags + local -a extra_config + local -a core_LDFLAGS + local -a core_targets + local arg + local exeext + + for arg in "$@"; do + eval "${arg// /\\ }" + done + + CT_DoLog EXTRA "Configuring core C gcc compiler" + + case "${mode}" in + static) + extra_config+=("--with-newlib") + extra_config+=("--enable-threads=no") + extra_config+=("--disable-shared") + copy_headers=y # For baremetal, as there's no headers to copy, + # we copy an empty directory. So, who cares? + ;; + shared) + extra_config+=("--enable-shared") + copy_headers=y + ;; + baremetal) + extra_config+=("--with-newlib") + extra_config+=("--enable-threads=no") + extra_config+=("--disable-shared") + copy_headers=n + ;; + *) + CT_Abort "Internal Error: 'mode' must be one of: 'static', 'shared' or 'baremetal', not '${mode:-(empty)}'" + ;; + esac + + if [ "${CT_CC_GCC_HAS_PKGVERSION_BUGURL}" = "y" ]; then + # Bare metal delivers the core compiler as final compiler, so add version info and bugurl + extra_config+=("--with-pkgversion=${CT_PKGVERSION}") + [ -n "${CT_TOOLCHAIN_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_TOOLCHAIN_BUGURL}") + fi + + if [ "${copy_headers}" = "y" ]; then + CT_DoLog DEBUG "Copying headers to install area of bootstrap gcc, so it can build libgcc2" + CT_DoExecLog ALL cp -a "${CT_HEADERS_DIR}" "${prefix}/${CT_TARGET}/include" + fi + + for tmp in ARCH ABI CPU TUNE FPU FLOAT; do + eval tmp="\${CT_ARCH_WITH_${tmp}}" + if [ -n "${tmp}" ]; then + extra_config+=("${tmp}") + fi + done + if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then + extra_config+=("--enable-__cxa_atexit") + else + extra_config+=("--disable-__cxa_atexit") + fi + + core_LDFLAGS+=("${ldflags}") + + # *** WARNING ! *** + # Keep this full if-else-if-elif-fi-fi block in sync + # with the same block in do_gcc, below. + if [ "${build_staticlinked}" = "yes" ]; then + core_LDFLAGS+=("-static") + host_libstdcxx_flags+=("-static-libgcc") + host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++") + host_libstdcxx_flags+=("-lm") + # Companion libraries are build static (eg !shared), so + # the libstdc++ is not pulled automatically, although it + # is needed. Shoe-horn it in our LDFLAGS + # Ditto libm on some Fedora boxen + core_LDFLAGS+=("-lstdc++") + core_LDFLAGS+=("-lm") + else + if [ "${CT_CC_GCC_STATIC_LIBSTDCXX}" = "y" ]; then + # this is from CodeSourcery arm-2010q1-202-arm-none-linux-gnueabi.src.tar.bz2 + # build script + # INFO: if the host gcc is gcc-4.5 then presumably we could use -static-libstdc++, + # see http://gcc.gnu.org/ml/gcc-patches/2009-06/msg01635.html + host_libstdcxx_flags+=("-static-libgcc") + host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++,-Bdynamic") + host_libstdcxx_flags+=("-lm") + elif [ "${CT_COMPLIBS_SHARED}" != "y" ]; then + # When companion libraries are build static (eg !shared), + # the libstdc++ is not pulled automatically, although it + # is needed. Shoe-horn it in our LDFLAGS + # Ditto libm on some Fedora boxen + core_LDFLAGS+=("-lstdc++") + core_LDFLAGS+=("-lm") + fi + fi + + if [ "${CT_CC_GCC_USE_GMP_MPFR}" = "y" ]; then + extra_config+=("--with-gmp=${complibs}") + extra_config+=("--with-mpfr=${complibs}") + fi + if [ "${CT_CC_GCC_USE_MPC}" = "y" ]; then + extra_config+=("--with-mpc=${complibs}") + fi + if [ "${CT_CC_GCC_USE_GRAPHITE}" = "y" ]; then + if [ "${CT_PPL}" = "y" ]; then + extra_config+=("--with-ppl=${complibs}") + # With PPL 0.11+, also pull libpwl if needed + if [ "${CT_PPL_NEEDS_LIBPWL}" = "y" ]; then + host_libstdcxx_flags+=("-L${complibs}/lib") + host_libstdcxx_flags+=("-lpwl") + fi + fi + if [ "${CT_ISL}" = "y" ]; then + extra_config+=("--with-isl=${complibs}") + fi + extra_config+=("--with-cloog=${complibs}") + elif [ "${CT_CC_GCC_HAS_GRAPHITE}" = "y" ]; then + extra_config+=("--with-ppl=no") + extra_config+=("--with-isl=no") + extra_config+=("--with-cloog=no") + fi + if [ "${CT_CC_GCC_USE_LTO}" = "y" ]; then + extra_config+=("--with-libelf=${complibs}") + extra_config+=("--enable-lto") + elif [ "${CT_CC_GCC_HAS_LTO}" = "y" ]; then + extra_config+=("--with-libelf=no") + extra_config+=("--disable-lto") + fi + + if [ ${#host_libstdcxx_flags[@]} -ne 0 ]; then + extra_config+=("--with-host-libstdcxx=${host_libstdcxx_flags[*]}") + fi + + if [ "${CT_CC_GCC_ENABLE_TARGET_OPTSPACE}" = "y" ]; then + extra_config+=("--enable-target-optspace") + fi + + case "${CT_CC_GCC_LDBL_128}" in + y) extra_config+=("--with-long-double-128");; + m) ;; + "") extra_config+=("--without-long-double-128");; + esac + + if [ "${CT_CC_GCC_BUILD_ID}" = "y" ]; then + extra_config+=( --enable-linker-build-id ) + fi + + case "${CT_CC_GCC_LNK_HASH_STYLE}" in + "") ;; + *) extra_config+=( "--with-linker-hash-style=${CT_CC_GCC_LNK_HASH_STYLE}" );; + esac + + case "${CT_ARCH}" in + mips) + case "${CT_CC_GCC_mips_llsc}" in + y) extra_config+=( --with-llsc );; + m) ;; + *) extra_config+=( --without-llsc );; + esac + case "${CT_CC_GCC_mips_synci}" in + y) extra_config+=( --with-synci );; + m) ;; + *) extra_config+=( --without-synci );; + esac + if [ "${CT_CC_GCC_mips_plt}" ]; then + extra_config+=( --with-mips-plt ) + fi + ;; # ARCH is mips + esac + + extra_config+=(--disable-libgomp) + extra_config+=(--disable-libmudflap) + + [ "${CT_TOOLCHAIN_ENABLE_NLS}" != "y" ] && extra_config+=("--disable-nls") + + [ "${CT_CC_GCC_DISABLE_PCH}" = "y" ] && extra_config+=("--disable-libstdcxx-pch") + + if [ "${CT_CC_GCC_SYSTEM_ZLIB}" = "y" ]; then + extra_config+=("--with-system-zlib") + fi + + if [ "${CT_MULTILIB}" = "y" ]; then + extra_config+=("--enable-multilib") + else + extra_config+=("--disable-multilib") + fi + + 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) + CT_DoExecLog CFG \ + CC_FOR_BUILD="${CT_BUILD}-gcc" \ + CFLAGS_FOR_BUILD="${CT_EXTRA_CFLAGS_FOR_BUILD-${cflags}}" \ + CFLAGS="${cflags}" \ + CXXFLAGS="${cflags}" \ + LDFLAGS="${core_LDFLAGS[*]}" \ + "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/configure" \ + --build=${CT_BUILD} \ + --host=${host} \ + --target=${CT_TARGET} \ + --prefix="${prefix}" \ + --with-local-prefix="${CT_SYSROOT_DIR}" \ + --disable-libmudflap \ + ${CC_CORE_SYSROOT_ARG} \ + "${extra_config[@]}" \ + --enable-languages="${lang_list}" \ + "${CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY[@]}" + + if [ "${build_libgcc}" = "yes" ]; then + # 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}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ]; then + CT_DoExecLog CFG make ${JOBSFLAGS} configure-libiberty + CT_DoExecLog ALL make ${JOBSFLAGS} -C libiberty libiberty.a + CT_DoExecLog CFG make ${JOBSFLAGS} configure-gcc configure-libcpp + CT_DoExecLog ALL make ${JOBSFLAGS} all-libcpp + else + CT_DoExecLog CFG make ${JOBSFLAGS} configure-gcc configure-libcpp configure-build-libiberty + CT_DoExecLog ALL make ${JOBSFLAGS} all-libcpp all-build-libiberty + fi + # HACK: gcc-4.2 uses libdecnumber to build libgcc.mk, so build it here. + if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/libdecnumber" ]; then + CT_DoExecLog CFG make ${JOBSFLAGS} configure-libdecnumber + CT_DoExecLog ALL make ${JOBSFLAGS} -C libdecnumber libdecnumber.a + fi + # HACK: gcc-4.8 uses libbacktrace to make libgcc.mvars, so make it here. + if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/libbacktrace" ]; then + CT_DoExecLog CFG make ${JOBSFLAGS} configure-libbacktrace + CT_DoExecLog ALL make ${JOBSFLAGS} -C libbacktrace + fi + + # Starting with GCC 4.3, libgcc.mk is no longer built, + # and libgcc.mvars is used instead. + + if [ "${CT_CC_GCC_4_3_or_later}" = "y" ]; then + libgcc_rule="libgcc.mvars" + core_targets=( gcc target-libgcc ) + else + libgcc_rule="libgcc.mk" + core_targets=( gcc ) + fi + + # On bare metal and canadian build the host-compiler is used when + # actually the build-system compiler is required. Choose the correct + # compilers for canadian build and use the defaults on other + # configurations. + if [ "${CT_BARE_METAL},${CT_CANADIAN}" = "y,y" ]; then + repair_cc="CC_FOR_BUILD=${CT_BUILD}-gcc \ + CXX_FOR_BUILD=${CT_BUILD}-g++ \ + GCC_FOR_TARGET=${CT_TARGET}-gcc" + else + repair_cc="" + fi + + CT_DoExecLog ALL make ${JOBSFLAGS} -C gcc ${libgcc_rule} \ + ${repair_cc} + sed -r -i -e 's@-lc@@g' gcc/${libgcc_rule} + else # build_libgcc + core_targets=( gcc ) + fi # ! build libgcc + if [ "${build_libstdcxx}" = "yes" \ + -a "${CT_CC_LANG_CXX}" = "y" \ + ]; then + core_targets+=( target-libstdc++-v3 ) + fi + + CT_DoLog EXTRA "Building core C gcc compiler" + CT_DoExecLog ALL make ${JOBSFLAGS} "${core_targets[@]/#/all-}" + + CT_DoLog EXTRA "Installing core C gcc compiler" + CT_DoExecLog ALL make ${JOBSFLAGS} "${core_targets[@]/#/install-}" + + if [ "${build_manuals}" = "yes" ]; then + CT_DoLog EXTRA "Building the gcc manuals" + CT_DoExecLog ALL make pdf html + CT_DoLog EXTRA "Installing the gcc manuals" + CT_DoExecLog ALL make install-{pdf,html}-gcc + fi + + # Create a symlink ${CT_TARGET}-cc to ${CT_TARGET}-gcc to always be able + # to call the C compiler with the same, somewhat canonical name. + # check whether compiler has an extension + file="$( ls -1 "${prefix}/bin/${CT_TARGET}-gcc."* 2>/dev/null || true )" + [ -z "${file}" ] || ext=".${file##*.}" + CT_DoExecLog ALL ln -sfv "${CT_TARGET}-gcc${ext}" "${prefix}/bin/${CT_TARGET}-cc${ext}" + + if [ "${CT_MULTILIB}" = "y" ]; then + if [ "${CT_CANADIAN}" = "y" -a "${mode}" = "baremetal" \ + -a "${host}" = "${CT_HOST}" ]; then + CT_DoLog WARN "Canadian Cross unable to confirm multilibs configured correctly" + else + multilibs=( $( "${prefix}/bin/${CT_TARGET}-gcc" -print-multi-lib \ + |tail -n +2 ) ) + if [ ${#multilibs[@]} -ne 0 ]; then + CT_DoLog EXTRA "gcc configured with these multilibs (besides the default):" + for i in "${multilibs[@]}"; do + dir="${i%%;*}" + flags="${i#*;}" + CT_DoLog EXTRA " ${flags//@/ -} --> ${dir}/" + done + else + CT_DoLog WARN "gcc configured for multilib, but none available" + fi + fi + fi +} + +#------------------------------------------------------------------------------ +# Build complete gcc to run on build +do_gcc_for_build() { + local -a build_final_opts + local build_final_backend + + # In case we're canadian or cross-native, it seems that a + # real, complete compiler is needed?!? WTF? Sigh... + # Otherwise, there is nothing to do. + case "${CT_TOOLCHAIN_TYPE}" in + native|cross) return 0;; + esac + + build_final_opts+=( "host=${CT_BUILD}" ) + build_final_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" ) + build_final_opts+=( "complibs=${CT_BUILDTOOLS_PREFIX_DIR}" ) + build_final_opts+=( "lang_list=$( cc_gcc_lang_list )" ) + if [ "${CT_BARE_METAL}" = "y" ]; then + # In the tests I've done, bare-metal was not impacted by the + # lack of such a compiler, but better safe than sorry... + build_final_opts+=( "mode=baremetal" ) + build_final_opts+=( "build_libgcc=yes" ) + build_final_opts+=( "build_libstdcxx=yes" ) + if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then + build_final_opts+=( "build_staticlinked=yes" ) + fi + build_final_backend=do_gcc_core_backend + else + build_final_backend=do_gcc_backend + fi + + CT_DoStep INFO "Installing final gcc compiler for build" + CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-final-build-${CT_BUILD}" + + "${build_final_backend}" "${build_final_opts[@]}" + + CT_Popd + CT_EndStep +} + +#------------------------------------------------------------------------------ +# Build final gcc to run on host +do_gcc_for_host() { + local -a final_opts + local final_backend + + final_opts+=( "host=${CT_HOST}" ) + final_opts+=( "prefix=${CT_PREFIX_DIR}" ) + final_opts+=( "complibs=${CT_HOST_COMPLIBS_DIR}" ) + final_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" ) + final_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" ) + final_opts+=( "lang_list=$( cc_gcc_lang_list )" ) + if [ "${CT_BUILD_MANUALS}" = "y" ]; then + final_opts+=( "build_manuals=yes" ) + fi + if [ "${CT_BARE_METAL}" = "y" ]; then + final_opts+=( "mode=baremetal" ) + final_opts+=( "build_libgcc=yes" ) + final_opts+=( "build_libstdcxx=yes" ) + if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then + final_opts+=( "build_staticlinked=yes" ) + fi + final_backend=do_gcc_core_backend + else + final_backend=do_gcc_backend + fi + + CT_DoStep INFO "Installing final gcc compiler" + CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-final" + + "${final_backend}" "${final_opts[@]}" + + CT_Popd + CT_EndStep +} + +#------------------------------------------------------------------------------ +# Build the final gcc +# Usage: do_gcc_backend param=value [...] +# Parameter : Definition : Type : Default +# host : the host we run onto : tuple : (none) +# prefix : the runtime prefix : dir : (none) +# complibs : the companion libraries prefix : dir : (none) +# cflags : cflags to use : string : (empty) +# ldflags : ldflags to use : string : (empty) +# lang_list : the list of languages to build : string : (empty) +# build_manuals : whether to build manuals or not : bool : no +do_gcc_backend() { + local host + local prefix + local complibs + local cflags + local ldflags + local lang_list + local build_manuals + local -a host_libstdcxx_flags + local -a extra_config + local -a final_LDFLAGS + local tmp + local arg + local exeext + + for arg in "$@"; do + eval "${arg// /\\ }" + done + + CT_DoLog EXTRA "Configuring final gcc compiler" + + # Enable selected languages + extra_config+=("--enable-languages=${lang_list}") + + for tmp in ARCH ABI CPU TUNE FPU FLOAT; do + eval tmp="\${CT_ARCH_WITH_${tmp}}" + if [ -n "${tmp}" ]; then + extra_config+=("${tmp}") + fi + done + + [ "${CT_SHARED_LIBS}" = "y" ] || extra_config+=("--disable-shared") + if [ "${CT_CC_GCC_HAS_PKGVERSION_BUGURL}" = "y" ]; then + extra_config+=("--with-pkgversion=${CT_PKGVERSION}") + [ -n "${CT_TOOLCHAIN_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_TOOLCHAIN_BUGURL}") + fi + case "${CT_CC_GCC_SJLJ_EXCEPTIONS}" in + y) extra_config+=("--enable-sjlj-exceptions");; + m) ;; + "") extra_config+=("--disable-sjlj-exceptions");; + esac + if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then + extra_config+=("--enable-__cxa_atexit") + else + extra_config+=("--disable-__cxa_atexit") + fi + if [ -n "${CT_CC_GCC_ENABLE_CXX_FLAGS}" ]; then + extra_config+=("--enable-cxx-flags=${CT_CC_GCC_ENABLE_CXX_FLAGS}") + fi + if [ "${CT_CC_GCC_LIBMUDFLAP}" = "y" ]; then + extra_config+=(--enable-libmudflap) + else + extra_config+=(--disable-libmudflap) + fi + if [ "${CT_CC_GCC_LIBGOMP}" = "y" ]; then + extra_config+=(--enable-libgomp) + else + extra_config+=(--disable-libgomp) + fi + if [ "${CT_CC_GCC_LIBSSP}" = "y" ]; then + extra_config+=(--enable-libssp) + else + extra_config+=(--disable-libssp) + fi + if [ "${CT_CC_GCC_HAS_LIBQUADMATH}" = "y" ]; then + if [ "${CT_CC_GCC_LIBQUADMATH}" = "y" ]; then + extra_config+=(--enable-libquadmath) + extra_config+=(--enable-libquadmath-support) + else + extra_config+=(--disable-libquadmath) + extra_config+=(--disable-libquadmath-support) + fi + fi + + final_LDFLAGS+=("${ldflags}") + + # *** WARNING ! *** + # Keep this full if-else-if-elif-fi-fi block in sync + # with the same block in do_gcc_core, above. + if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then + final_LDFLAGS+=("-static") + host_libstdcxx_flags+=("-static-libgcc") + host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++") + host_libstdcxx_flags+=("-lm") + # Companion libraries are build static (eg !shared), so + # the libstdc++ is not pulled automatically, although it + # is needed. Shoe-horn it in our LDFLAGS + # Ditto libm on some Fedora boxen + final_LDFLAGS+=("-lstdc++") + final_LDFLAGS+=("-lm") + else + if [ "${CT_CC_GCC_STATIC_LIBSTDCXX}" = "y" ]; then + # this is from CodeSourcery arm-2010q1-202-arm-none-linux-gnueabi.src.tar.bz2 + # build script + # INFO: if the host gcc is gcc-4.5 then presumably we could use -static-libstdc++, + # see http://gcc.gnu.org/ml/gcc-patches/2009-06/msg01635.html + host_libstdcxx_flags+=("-static-libgcc") + host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++,-Bdynamic") + host_libstdcxx_flags+=("-lm") + elif [ "${CT_COMPLIBS_SHARED}" != "y" ]; then + # When companion libraries are build static (eg !shared), + # the libstdc++ is not pulled automatically, although it + # is needed. Shoe-horn it in our LDFLAGS + # Ditto libm on some Fedora boxen + final_LDFLAGS+=("-lstdc++") + final_LDFLAGS+=("-lm") + fi + fi + + if [ "${CT_CC_GCC_USE_GMP_MPFR}" = "y" ]; then + extra_config+=("--with-gmp=${complibs}") + extra_config+=("--with-mpfr=${complibs}") + fi + if [ "${CT_CC_GCC_USE_MPC}" = "y" ]; then + extra_config+=("--with-mpc=${complibs}") + fi + if [ "${CT_CC_GCC_USE_GRAPHITE}" = "y" ]; then + if [ "${CT_PPL}" = "y" ]; then + extra_config+=("--with-ppl=${complibs}") + # With PPL 0.11+, also pull libpwl if needed + if [ "${CT_PPL_NEEDS_LIBPWL}" = "y" ]; then + host_libstdcxx_flags+=("-L${complibs}/lib") + host_libstdcxx_flags+=("-lpwl") + fi + fi + if [ "${CT_ISL}" = "y" ]; then + extra_config+=("--with-isl=${complibs}") + fi + extra_config+=("--with-cloog=${complibs}") + elif [ "${CT_CC_GCC_HAS_GRAPHITE}" = "y" ]; then + extra_config+=("--with-ppl=no") + extra_config+=("--with-isl=no") + extra_config+=("--with-cloog=no") + fi + if [ "${CT_CC_GCC_USE_LTO}" = "y" ]; then + extra_config+=("--with-libelf=${complibs}") + elif [ "${CT_CC_GCC_HAS_LTO}" = "y" ]; then + extra_config+=("--with-libelf=no") + fi + + if [ ${#host_libstdcxx_flags[@]} -ne 0 ]; then + extra_config+=("--with-host-libstdcxx=${host_libstdcxx_flags[*]}") + fi + + if [ "${CT_THREADS}" = "none" ]; then + extra_config+=("--disable-threads") + if [ "${CT_CC_GCC_4_2_or_later}" = y ]; then + CT_Test "Disabling libgomp for no-thread gcc>=4.2" "${CT_CC_GCC_LIBGOMP}" = "Y" + extra_config+=("--disable-libgomp") + fi + else + if [ "${CT_THREADS}" = "win32" ]; then + extra_config+=("--enable-threads=win32") + extra_config+=("--disable-win32-registry") + else + extra_config+=("--enable-threads=posix") + fi + fi + + if [ "${CT_CC_GCC_ENABLE_TARGET_OPTSPACE}" = "y" ]; then + extra_config+=("--enable-target-optspace") + fi + if [ "${CT_CC_GCC_DISABLE_PCH}" = "y" ]; then + extra_config+=("--disable-libstdcxx-pch") + fi + + case "${CT_CC_GCC_LDBL_128}" in + y) extra_config+=("--with-long-double-128");; + m) ;; + "") extra_config+=("--without-long-double-128");; + esac + + if [ "${CT_CC_GCC_BUILD_ID}" = "y" ]; then + extra_config+=( --enable-linker-build-id ) + fi + + case "${CT_CC_GCC_LNK_HASH_STYLE}" in + "") ;; + *) extra_config+=( "--with-linker-hash-style=${CT_CC_GCC_LNK_HASH_STYLE}" );; + esac + + if [ "${CT_CC_GCC_ENABLE_PLUGINS}" = "y" ]; then + extra_config+=( --enable-plugin ) + fi + if [ "${CT_CC_GCC_GOLD}" = "y" ]; then + extra_config+=( --enable-gold ) + fi + + case "${CT_ARCH}" in + mips) + case "${CT_CC_GCC_mips_llsc}" in + y) extra_config+=( --with-llsc );; + m) ;; + *) extra_config+=( --without-llsc );; + esac + case "${CT_CC_GCC_mips_synci}" in + y) extra_config+=( --with-synci );; + m) ;; + *) extra_config+=( --without-synci );; + esac + if [ "${CT_CC_GCC_mips_plt}" ]; then + extra_config+=( --with-mips-plt ) + fi + ;; # ARCH is mips + esac + + [ "${CT_TOOLCHAIN_ENABLE_NLS}" != "y" ] && extra_config+=("--disable-nls") + + if [ "${CT_CC_GCC_SYSTEM_ZLIB}" = "y" ]; then + extra_config+=("--with-system-zlib") + fi + + if [ "${CT_MULTILIB}" = "y" ]; then + extra_config+=("--enable-multilib") + else + extra_config+=("--disable-multilib") + fi + + CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'" + + CT_DoExecLog CFG \ + CC_FOR_BUILD="${CT_BUILD}-gcc" \ + CFLAGS_FOR_BUILD="${CT_EXTRA_CFLAGS_FOR_BUILD-${cflags}}" \ + CFLAGS="${cflags}" \ + CXXFLAGS="${cflags}" \ + LDFLAGS="${final_LDFLAGS[*]}" \ + CFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \ + CXXFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \ + LDFLAGS_FOR_TARGET="${CT_TARGET_LDFLAGS}" \ + "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/configure" \ + --build=${CT_BUILD} \ + --host=${host} \ + --target=${CT_TARGET} \ + --prefix="${prefix}" \ + ${CC_SYSROOT_ARG} \ + "${extra_config[@]}" \ + --with-local-prefix="${CT_SYSROOT_DIR}" \ + --enable-c99 \ + --enable-long-long \ + "${CT_CC_GCC_EXTRA_CONFIG_ARRAY[@]}" + + if [ "${CT_CANADIAN}" = "y" ]; then + CT_DoLog EXTRA "Building libiberty" + CT_DoExecLog ALL make ${JOBSFLAGS} all-build-libiberty + fi + + CT_DoLog EXTRA "Building final gcc compiler" + CT_DoExecLog ALL make ${JOBSFLAGS} all + + CT_DoLog EXTRA "Installing final gcc compiler" + CT_DoExecLog ALL make ${JOBSFLAGS} install + + if [ "${build_manuals}" = "yes" ]; then + CT_DoLog EXTRA "Building the gcc manuals" + CT_DoExecLog ALL make pdf html + CT_DoLog EXTRA "Installing the gcc manuals" + CT_DoExecLog ALL make install-{pdf,html}-gcc + fi + + # Create a symlink ${CT_TARGET}-cc to ${CT_TARGET}-gcc to always be able + # to call the C compiler with the same, somewhat canonical name. + # check whether compiler has an extension + file="$( ls -1 "${CT_PREFIX_DIR}/bin/${CT_TARGET}-gcc."* 2>/dev/null || true )" + [ -z "${file}" ] || ext=".${file##*.}" + CT_DoExecLog ALL ln -sfv "${CT_TARGET}-gcc${ext}" "${CT_PREFIX_DIR}/bin/${CT_TARGET}-cc${ext}" + + if [ "${CT_MULTILIB}" = "y" ]; then + if [ "${CT_CANADIAN}" = "y" ]; then + CT_DoLog WARN "Canadian Cross unable to confirm multilibs configured correctly" + else + multilibs=( $( "${prefix}/bin/${CT_TARGET}-gcc" -print-multi-lib \ + |tail -n +2 ) ) + if [ ${#multilibs[@]} -ne 0 ]; then + CT_DoLog EXTRA "gcc configured with these multilibs (besides the default):" + for i in "${multilibs[@]}"; do + dir="${i%%;*}" + flags="${i#*;}" + CT_DoLog EXTRA " ${flags//@/ -} --> ${dir}/" + done + else + CT_DoLog WARN "gcc configured for multilib, but none available" + fi + fi + fi +} diff -r 7e569a9cb5fd -r cc545a5c1896 scripts/build/cc/gcc.sh --- a/scripts/build/cc/gcc.sh Sat Nov 16 18:14:45 2013 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,869 +0,0 @@ -# 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 - -# Download gcc -do_cc_get() { - local linaro_version - local linaro_series - local linaro_base_url="http://launchpad.net/gcc-linaro" - - if [ "${CT_CC_CUSTOM}" = "y" ]; then - CT_GetCustom "gcc" "${CT_CC_VERSION}" "${CT_CC_CUSTOM_LOCATION}" - else - # Account for the Linaro versioning - linaro_version="$( echo "${CT_CC_VERSION}" \ - |sed -r -e 's/^linaro-//;' \ - )" - linaro_series="$( echo "${linaro_version}" \ - |sed -r -e 's/-.*//;' \ - )" - - # Ah! gcc folks are kind of 'different': they store the tarballs in - # subdirectories of the same name! - # 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! - CT_GetFile "gcc-${CT_CC_VERSION}" \ - {ftp,http}://ftp.gnu.org/gnu/gcc{,{,/releases}/gcc-${CT_CC_VERSION}} \ - ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-${CT_CC_VERSION} \ - ftp://ftp.uvsq.fr/pub/gcc/snapshots/${CT_CC_VERSION} \ - "${linaro_base_url}/${linaro_series}/${linaro_version}/+download" - - fi # ! custom location - # Starting with GCC 4.3, ecj is used for Java, and will only be - # built if the configure script finds ecj.jar at the top of the - # GCC source tree, which will not be there unless we get it and - # put it there ourselves - if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y" ]; then - CT_GetFile ecj-latest .jar ftp://gcc.gnu.org/pub/java \ - ftp://sourceware.org/pub/java - fi -} - -# Extract gcc -do_cc_extract() { - # If using custom directory location, nothing to do - if [ "${CT_CC_CUSTOM}" = "y" \ - -a -d "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}" ]; then - return 0 - fi - - CT_Extract "gcc-${CT_CC_VERSION}" - CT_Patch "gcc" "${CT_CC_VERSION}" - - # Copy ecj-latest.jar to ecj.jar at the top of the GCC source tree - if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y" \ - -a ! -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar" \ - ]; then - CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/ecj-latest.jar" "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar" - fi -} - -#------------------------------------------------------------------------------ -# This function builds up the set of languages to enable -# No argument expected, returns the comma-separated language list on stdout -cc_gcc_lang_list() { - local lang_list - - lang_list="c" - [ "${CT_CC_LANG_CXX}" = "y" ] && lang_list+=",c++" - [ "${CT_CC_LANG_FORTRAN}" = "y" ] && lang_list+=",fortran" - [ "${CT_CC_LANG_ADA}" = "y" ] && lang_list+=",ada" - [ "${CT_CC_LANG_JAVA}" = "y" ] && lang_list+=",java" - [ "${CT_CC_LANG_OBJC}" = "y" ] && lang_list+=",objc" - [ "${CT_CC_LANG_OBJCXX}" = "y" ] && lang_list+=",obj-c++" - [ "${CT_CC_LANG_GOLANG}" = "y" ] && lang_list+=",go" - lang_list+="${CT_CC_LANG_OTHERS:+,${CT_CC_LANG_OTHERS}}" - - printf "%s" "${lang_list}" -} - -#------------------------------------------------------------------------------ -# Core gcc pass 1 -do_cc_core_pass_1() { - local -a core_opts - - if [ "${CT_CC_CORE_PASSES_NEEDED}" != "y" ]; then - return 0 - fi - - core_opts+=( "mode=static" ) - core_opts+=( "host=${CT_BUILD}" ) - core_opts+=( "complibs=${CT_BUILDTOOLS_PREFIX_DIR}" ) - core_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" ) - core_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" ) - core_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" ) - core_opts+=( "lang_list=c" ) - - CT_DoStep INFO "Installing pass-1 core C compiler" - CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-core-pass-1" - - do_cc_core_backend "${core_opts[@]}" - - CT_Popd - CT_EndStep -} - -# Core gcc pass 2 -do_cc_core_pass_2() { - local -a core_opts - - if [ "${CT_CC_CORE_PASSES_NEEDED}" != "y" ]; then - return 0 - fi - - # Common options: - core_opts+=( "host=${CT_BUILD}" ) - core_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" ) - core_opts+=( "complibs=${CT_BUILDTOOLS_PREFIX_DIR}" ) - core_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" ) - core_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" ) - core_opts+=( "lang_list=c" ) - - # Different conditions are at stake here: - # - In case the threading model is NPTL, we need a shared-capable core - # gcc; in all other cases, we need a static-only core gcc. - # - In case the threading model is NPTL or win32, or gcc is 4.3 or - # later, we need to build libgcc - case "${CT_THREADS}" in - nptl) - core_opts+=( "mode=shared" ) - core_opts+=( "build_libgcc=yes" ) - ;; - win32) - core_opts+=( "mode=static" ) - core_opts+=( "build_libgcc=yes" ) - ;; - *) - core_opts+=( "mode=static" ) - if [ "${CT_CC_GCC_4_3_or_later}" = "y" ]; then - core_opts+=( "build_libgcc=yes" ) - fi - ;; - esac - - CT_DoStep INFO "Installing pass-2 core C compiler" - CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-core-pass-2" - - do_cc_core_backend "${core_opts[@]}" - - CT_Popd - CT_EndStep -} - -#------------------------------------------------------------------------------ -# Build core gcc -# This function is used to build the core C compiler. -# Usage: do_cc_core_backend param=value [...] -# Parameter : Definition : Type : Default -# mode : build a 'static', 'shared' or 'baremetal' : string : (none) -# host : the machine the core will run on : tuple : (none) -# prefix : dir prefix to install into : dir : (none) -# complibs : dir where complibs are isntalled : dir : (none) -# lang_list : the list of languages to build : string : (empty) -# build_libgcc : build libgcc or not : bool : no -# build_libstdcxx : build libstdc++ or not : bool : no -# build_staticlinked : build statically linked or not : bool : no -# build_manuals : whether to build manuals or not : bool : no -# cflags : cflags to use : string : (empty) -# ldflags : ldflags to use : string : (empty) -# Usage: do_cc_core_backend mode=[static|shared|baremetal] build_libgcc=[yes|no] build_staticlinked=[yes|no] -do_cc_core_backend() { - local mode - local build_libgcc=no - local build_libstdcxx=no - local build_staticlinked=no - local build_manuals=no - local host - local prefix - local complibs - local lang_list - local cflags - local ldflags - local tmp - local -a host_libstdcxx_flags - local -a extra_config - local -a core_LDFLAGS - local -a core_targets - local arg - - for arg in "$@"; do - eval "${arg// /\\ }" - done - - CT_DoLog EXTRA "Configuring gcc" - - case "${mode}" in - static) - extra_config+=("--with-newlib") - extra_config+=("--enable-threads=no") - extra_config+=("--disable-shared") - copy_headers=y # For baremetal, as there's no headers to copy, - # we copy an empty directory. So, who cares? - ;; - shared) - extra_config+=("--enable-shared") - copy_headers=y - ;; - baremetal) - extra_config+=("--with-newlib") - extra_config+=("--enable-threads=no") - extra_config+=("--disable-shared") - copy_headers=n - ;; - *) - CT_Abort "Internal Error: 'mode' must be one of: 'static', 'shared' or 'baremetal', not '${mode:-(empty)}'" - ;; - esac - - if [ "${CT_CC_GCC_HAS_PKGVERSION_BUGURL}" = "y" ]; then - # Bare metal delivers the core compiler as final compiler, so add version info and bugurl - extra_config+=("--with-pkgversion=${CT_PKGVERSION}") - [ -n "${CT_TOOLCHAIN_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_TOOLCHAIN_BUGURL}") - fi - - if [ "${copy_headers}" = "y" ]; then - CT_DoLog DEBUG "Copying headers to install area of bootstrap gcc, so it can build libgcc2" - CT_DoExecLog ALL cp -a "${CT_HEADERS_DIR}" "${prefix}/${CT_TARGET}/include" - fi - - for tmp in ARCH ABI CPU TUNE FPU FLOAT; do - eval tmp="\${CT_ARCH_WITH_${tmp}}" - if [ -n "${tmp}" ]; then - extra_config+=("${tmp}") - fi - done - if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then - extra_config+=("--enable-__cxa_atexit") - else - extra_config+=("--disable-__cxa_atexit") - fi - - core_LDFLAGS+=("${ldflags}") - - # *** WARNING ! *** - # Keep this full if-else-if-elif-fi-fi block in sync - # with the same block in do_cc, below. - if [ "${build_staticlinked}" = "yes" ]; then - core_LDFLAGS+=("-static") - host_libstdcxx_flags+=("-static-libgcc") - host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++") - host_libstdcxx_flags+=("-lm") - # Companion libraries are build static (eg !shared), so - # the libstdc++ is not pulled automatically, although it - # is needed. Shoe-horn it in our LDFLAGS - # Ditto libm on some Fedora boxen - core_LDFLAGS+=("-lstdc++") - core_LDFLAGS+=("-lm") - else - if [ "${CT_CC_STATIC_LIBSTDCXX}" = "y" ]; then - # this is from CodeSourcery arm-2010q1-202-arm-none-linux-gnueabi.src.tar.bz2 - # build script - # INFO: if the host gcc is gcc-4.5 then presumably we could use -static-libstdc++, - # see http://gcc.gnu.org/ml/gcc-patches/2009-06/msg01635.html - host_libstdcxx_flags+=("-static-libgcc") - host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++,-Bdynamic") - host_libstdcxx_flags+=("-lm") - elif [ "${CT_COMPLIBS_SHARED}" != "y" ]; then - # When companion libraries are build static (eg !shared), - # the libstdc++ is not pulled automatically, although it - # is needed. Shoe-horn it in our LDFLAGS - # Ditto libm on some Fedora boxen - core_LDFLAGS+=("-lstdc++") - core_LDFLAGS+=("-lm") - fi - fi - - if [ "${CT_CC_GCC_USE_GMP_MPFR}" = "y" ]; then - extra_config+=("--with-gmp=${complibs}") - extra_config+=("--with-mpfr=${complibs}") - fi - if [ "${CT_CC_GCC_USE_MPC}" = "y" ]; then - extra_config+=("--with-mpc=${complibs}") - fi - if [ "${CT_CC_GCC_USE_GRAPHITE}" = "y" ]; then - if [ "${CT_PPL}" = "y" ]; then - extra_config+=("--with-ppl=${complibs}") - # With PPL 0.11+, also pull libpwl if needed - if [ "${CT_PPL_NEEDS_LIBPWL}" = "y" ]; then - host_libstdcxx_flags+=("-L${complibs}/lib") - host_libstdcxx_flags+=("-lpwl") - fi - fi - if [ "${CT_ISL}" = "y" ]; then - extra_config+=("--with-isl=${complibs}") - fi - extra_config+=("--with-cloog=${complibs}") - elif [ "${CT_CC_GCC_HAS_GRAPHITE}" = "y" ]; then - extra_config+=("--with-ppl=no") - extra_config+=("--with-isl=no") - extra_config+=("--with-cloog=no") - fi - if [ "${CT_CC_GCC_USE_LTO}" = "y" ]; then - extra_config+=("--with-libelf=${complibs}") - extra_config+=("--enable-lto") - elif [ "${CT_CC_GCC_HAS_LTO}" = "y" ]; then - extra_config+=("--with-libelf=no") - extra_config+=("--disable-lto") - fi - - if [ ${#host_libstdcxx_flags[@]} -ne 0 ]; then - extra_config+=("--with-host-libstdcxx=${host_libstdcxx_flags[*]}") - fi - - if [ "${CT_CC_GCC_ENABLE_TARGET_OPTSPACE}" = "y" ]; then - extra_config+=("--enable-target-optspace") - fi - - case "${CT_CC_GCC_LDBL_128}" in - y) extra_config+=("--with-long-double-128");; - m) ;; - "") extra_config+=("--without-long-double-128");; - esac - - if [ "${CT_CC_GCC_BUILD_ID}" = "y" ]; then - extra_config+=( --enable-linker-build-id ) - fi - - case "${CT_CC_GCC_LNK_HASH_STYLE}" in - "") ;; - *) extra_config+=( "--with-linker-hash-style=${CT_CC_GCC_LNK_HASH_STYLE}" );; - esac - - case "${CT_ARCH}" in - mips) - case "${CT_CC_GCC_mips_llsc}" in - y) extra_config+=( --with-llsc );; - m) ;; - *) extra_config+=( --without-llsc );; - esac - case "${CT_CC_GCC_mips_synci}" in - y) extra_config+=( --with-synci );; - m) ;; - *) extra_config+=( --without-synci );; - esac - if [ "${CT_CC_GCC_mips_plt}" ]; then - extra_config+=( --with-mips-plt ) - fi - ;; # ARCH is mips - esac - - extra_config+=(--disable-libgomp) - extra_config+=(--disable-libmudflap) - - [ "${CT_TOOLCHAIN_ENABLE_NLS}" != "y" ] && extra_config+=("--disable-nls") - - [ "${CT_CC_GCC_DISABLE_PCH}" = "y" ] && extra_config+=("--disable-libstdcxx-pch") - - if [ "${CT_CC_GCC_SYSTEM_ZLIB}" = "y" ]; then - extra_config+=("--with-system-zlib") - fi - - if [ "${CT_MULTILIB}" = "y" ]; then - extra_config+=("--enable-multilib") - else - extra_config+=("--disable-multilib") - fi - - 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) - CT_DoExecLog CFG \ - CC_FOR_BUILD="${CT_BUILD}-gcc" \ - CFLAGS="${cflags}" \ - LDFLAGS="${core_LDFLAGS[*]}" \ - "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/configure" \ - --build=${CT_BUILD} \ - --host=${host} \ - --target=${CT_TARGET} \ - --prefix="${prefix}" \ - --with-local-prefix="${CT_SYSROOT_DIR}" \ - --disable-libmudflap \ - ${CC_CORE_SYSROOT_ARG} \ - "${extra_config[@]}" \ - --enable-languages="${lang_list}" \ - "${CT_CC_CORE_EXTRA_CONFIG_ARRAY[@]}" - - if [ "${build_libgcc}" = "yes" ]; then - # 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}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then - CT_DoExecLog CFG make ${JOBSFLAGS} configure-libiberty - CT_DoExecLog ALL make ${JOBSFLAGS} -C libiberty libiberty.a - CT_DoExecLog CFG make ${JOBSFLAGS} configure-gcc configure-libcpp - CT_DoExecLog ALL make ${JOBSFLAGS} all-libcpp - else - CT_DoExecLog CFG make ${JOBSFLAGS} configure-gcc configure-libcpp configure-build-libiberty - CT_DoExecLog ALL make ${JOBSFLAGS} all-libcpp all-build-libiberty - fi - # HACK: gcc-4.2 uses libdecnumber to build libgcc.mk, so build it here. - if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/libdecnumber" ]; then - CT_DoExecLog CFG make ${JOBSFLAGS} configure-libdecnumber - CT_DoExecLog ALL make ${JOBSFLAGS} -C libdecnumber libdecnumber.a - fi - # HACK: gcc-4.8 uses libbacktrace to make libgcc.mvars, so make it here. - if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/libbacktrace" ]; then - CT_DoExecLog CFG make ${JOBSFLAGS} configure-libbacktrace - CT_DoExecLog ALL make ${JOBSFLAGS} -C libbacktrace - fi - - # Starting with GCC 4.3, libgcc.mk is no longer built, - # and libgcc.mvars is used instead. - - if [ "${CT_CC_GCC_4_3_or_later}" = "y" ]; then - libgcc_rule="libgcc.mvars" - core_targets=( gcc target-libgcc ) - else - libgcc_rule="libgcc.mk" - core_targets=( gcc ) - fi - - # On bare metal and canadian build the host-compiler is used when - # actually the build-system compiler is required. Choose the correct - # compilers for canadian build and use the defaults on other - # configurations. - if [ "${CT_BARE_METAL},${CT_CANADIAN}" = "y,y" ]; then - repair_cc="CC_FOR_BUILD=${CT_BUILD}-gcc \ - CXX_FOR_BUILD=${CT_BUILD}-g++ \ - GCC_FOR_TARGET=${CT_TARGET}-gcc" - else - repair_cc="" - fi - - CT_DoExecLog ALL make ${JOBSFLAGS} -C gcc ${libgcc_rule} \ - ${repair_cc} - sed -r -i -e 's@-lc@@g' gcc/${libgcc_rule} - else # build_libgcc - core_targets=( gcc ) - fi # ! build libgcc - if [ "${build_libstdcxx}" = "yes" \ - -a "${CT_CC_LANG_CXX}" = "y" \ - ]; then - core_targets+=( target-libstdc++-v3 ) - fi - - CT_DoLog EXTRA "Building gcc" - CT_DoExecLog ALL make ${JOBSFLAGS} "${core_targets[@]/#/all-}" - - CT_DoLog EXTRA "Installing gcc" - CT_DoExecLog ALL make ${JOBSFLAGS} "${core_targets[@]/#/install-}" - - if [ "${build_manuals}" = "yes" ]; then - CT_DoLog EXTRA "Building the GCC manuals" - CT_DoExecLog ALL make pdf html - CT_DoLog EXTRA "Installing the GCC manuals" - CT_DoExecLog ALL make install-{pdf,html}-gcc - fi - - # Create a symlink ${CT_TARGET}-cc to ${CT_TARGET}-gcc to always be able - # to call the C compiler with the same, somewhat canonical name. - # check whether compiler has an extension - file="$( ls -1 "${prefix}/bin/${CT_TARGET}-gcc."* 2>/dev/null || true )" - [ -z "${file}" ] || ext=".${file##*.}" - CT_DoExecLog ALL ln -sfv "${CT_TARGET}-gcc${ext}" "${prefix}/bin/${CT_TARGET}-cc${ext}" - - if [ "${CT_MULTILIB}" = "y" ]; then - if [ "${CT_CANADIAN}" = "y" -a "${mode}" = "baremetal" \ - -a "${host}" = "${CT_HOST}" ]; then - CT_DoLog WARN "Canadian Cross unable to confirm multilibs configured correctly" - else - multilibs=( $( "${prefix}/bin/${CT_TARGET}-gcc" -print-multi-lib \ - |tail -n +2 ) ) - if [ ${#multilibs[@]} -ne 0 ]; then - CT_DoLog EXTRA "gcc configured with these multilibs (besides the default):" - for i in "${multilibs[@]}"; do - dir="${i%%;*}" - flags="${i#*;}" - CT_DoLog EXTRA " ${flags//@/ -} --> ${dir}/" - done - else - CT_DoLog WARN "gcc configured for multilib, but none available" - fi - fi - fi -} - -#------------------------------------------------------------------------------ -# Build complete gcc to run on build -do_cc_for_build() { - local -a build_final_opts - local build_final_backend - - # In case we're canadian or cross-native, it seems that a - # real, complete compiler is needed?!? WTF? Sigh... - # Otherwise, there is nothing to do. - case "${CT_TOOLCHAIN_TYPE}" in - native|cross) return 0;; - esac - - build_final_opts+=( "host=${CT_BUILD}" ) - build_final_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" ) - build_final_opts+=( "complibs=${CT_BUILDTOOLS_PREFIX_DIR}" ) - build_final_opts+=( "lang_list=$( cc_gcc_lang_list )" ) - if [ "${CT_BARE_METAL}" = "y" ]; then - # In the tests I've done, bare-metal was not impacted by the - # lack of such a compiler, but better safe than sorry... - build_final_opts+=( "mode=baremetal" ) - build_final_opts+=( "build_libgcc=yes" ) - build_final_opts+=( "build_libstdcxx=yes" ) - if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then - build_final_opts+=( "build_staticlinked=yes" ) - fi - build_final_backend=do_cc_core_backend - else - build_final_backend=do_cc_backend - fi - - CT_DoStep INFO "Installing final compiler for build" - CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-final-build-${CT_BUILD}" - - "${build_final_backend}" "${build_final_opts[@]}" - - CT_Popd - CT_EndStep -} - -#------------------------------------------------------------------------------ -# Build final gcc to run on host -do_cc_for_host() { - local -a final_opts - local final_backend - - final_opts+=( "host=${CT_HOST}" ) - final_opts+=( "prefix=${CT_PREFIX_DIR}" ) - final_opts+=( "complibs=${CT_HOST_COMPLIBS_DIR}" ) - final_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" ) - final_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" ) - final_opts+=( "lang_list=$( cc_gcc_lang_list )" ) - if [ "${CT_BUILD_MANUALS}" = "y" ]; then - final_opts+=( "build_manuals=yes" ) - fi - if [ "${CT_BARE_METAL}" = "y" ]; then - final_opts+=( "mode=baremetal" ) - final_opts+=( "build_libgcc=yes" ) - final_opts+=( "build_libstdcxx=yes" ) - if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then - final_opts+=( "build_staticlinked=yes" ) - fi - final_backend=do_cc_core_backend - else - final_backend=do_cc_backend - fi - - CT_DoStep INFO "Installing final compiler" - CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-final" - - "${final_backend}" "${final_opts[@]}" - - CT_Popd - CT_EndStep -} - -#------------------------------------------------------------------------------ -# Build the final gcc -# Usage: do_cc_backend param=value [...] -# Parameter : Definition : Type : Default -# host : the host we run onto : tuple : (none) -# prefix : the runtime prefix : dir : (none) -# complibs : the companion libraries prefix : dir : (none) -# cflags : cflags to use : string : (empty) -# ldflags : ldflags to use : string : (empty) -# lang_list : the list of languages to build : string : (empty) -# build_manuals : whether to build manuals or not : bool : no -do_cc_backend() { - local host - local prefix - local complibs - local cflags - local ldflags - local lang_list - local build_manuals - local -a host_libstdcxx_flags - local -a extra_config - local -a final_LDFLAGS - local tmp - local arg - - for arg in "$@"; do - eval "${arg// /\\ }" - done - - CT_DoLog EXTRA "Configuring gcc" - - # Enable selected languages - extra_config+=("--enable-languages=${lang_list}") - - for tmp in ARCH ABI CPU TUNE FPU FLOAT; do - eval tmp="\${CT_ARCH_WITH_${tmp}}" - if [ -n "${tmp}" ]; then - extra_config+=("${tmp}") - fi - done - - [ "${CT_SHARED_LIBS}" = "y" ] || extra_config+=("--disable-shared") - if [ "${CT_CC_GCC_HAS_PKGVERSION_BUGURL}" = "y" ]; then - extra_config+=("--with-pkgversion=${CT_PKGVERSION}") - [ -n "${CT_TOOLCHAIN_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_TOOLCHAIN_BUGURL}") - fi - case "${CT_CC_GCC_SJLJ_EXCEPTIONS}" in - y) extra_config+=("--enable-sjlj-exceptions");; - m) ;; - "") extra_config+=("--disable-sjlj-exceptions");; - esac - if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then - extra_config+=("--enable-__cxa_atexit") - else - extra_config+=("--disable-__cxa_atexit") - fi - if [ -n "${CT_CC_ENABLE_CXX_FLAGS}" ]; then - extra_config+=("--enable-cxx-flags=${CT_CC_ENABLE_CXX_FLAGS}") - fi - if [ "${CT_CC_GCC_LIBMUDFLAP}" = "y" ]; then - extra_config+=(--enable-libmudflap) - else - extra_config+=(--disable-libmudflap) - fi - if [ "${CT_CC_GCC_LIBGOMP}" = "y" ]; then - extra_config+=(--enable-libgomp) - else - extra_config+=(--disable-libgomp) - fi - if [ "${CT_CC_GCC_LIBSSP}" = "y" ]; then - extra_config+=(--enable-libssp) - else - extra_config+=(--disable-libssp) - fi - if [ "${CT_CC_GCC_HAS_LIBQUADMATH}" = "y" ]; then - if [ "${CT_CC_GCC_LIBQUADMATH}" = "y" ]; then - extra_config+=(--enable-libquadmath) - extra_config+=(--enable-libquadmath-support) - else - extra_config+=(--disable-libquadmath) - extra_config+=(--disable-libquadmath-support) - fi - fi - - final_LDFLAGS+=("${ldflags}") - - # *** WARNING ! *** - # Keep this full if-else-if-elif-fi-fi block in sync - # with the same block in do_cc_core, above. - if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then - final_LDFLAGS+=("-static") - host_libstdcxx_flags+=("-static-libgcc") - host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++") - host_libstdcxx_flags+=("-lm") - # Companion libraries are build static (eg !shared), so - # the libstdc++ is not pulled automatically, although it - # is needed. Shoe-horn it in our LDFLAGS - # Ditto libm on some Fedora boxen - final_LDFLAGS+=("-lstdc++") - final_LDFLAGS+=("-lm") - else - if [ "${CT_CC_STATIC_LIBSTDCXX}" = "y" ]; then - # this is from CodeSourcery arm-2010q1-202-arm-none-linux-gnueabi.src.tar.bz2 - # build script - # INFO: if the host gcc is gcc-4.5 then presumably we could use -static-libstdc++, - # see http://gcc.gnu.org/ml/gcc-patches/2009-06/msg01635.html - host_libstdcxx_flags+=("-static-libgcc") - host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++,-Bdynamic") - host_libstdcxx_flags+=("-lm") - elif [ "${CT_COMPLIBS_SHARED}" != "y" ]; then - # When companion libraries are build static (eg !shared), - # the libstdc++ is not pulled automatically, although it - # is needed. Shoe-horn it in our LDFLAGS - # Ditto libm on some Fedora boxen - final_LDFLAGS+=("-lstdc++") - final_LDFLAGS+=("-lm") - fi - fi - - if [ "${CT_CC_GCC_USE_GMP_MPFR}" = "y" ]; then - extra_config+=("--with-gmp=${complibs}") - extra_config+=("--with-mpfr=${complibs}") - fi - if [ "${CT_CC_GCC_USE_MPC}" = "y" ]; then - extra_config+=("--with-mpc=${complibs}") - fi - if [ "${CT_CC_GCC_USE_GRAPHITE}" = "y" ]; then - if [ "${CT_PPL}" = "y" ]; then - extra_config+=("--with-ppl=${complibs}") - # With PPL 0.11+, also pull libpwl if needed - if [ "${CT_PPL_NEEDS_LIBPWL}" = "y" ]; then - host_libstdcxx_flags+=("-L${complibs}/lib") - host_libstdcxx_flags+=("-lpwl") - fi - fi - if [ "${CT_ISL}" = "y" ]; then - extra_config+=("--with-isl=${complibs}") - fi - extra_config+=("--with-cloog=${complibs}") - elif [ "${CT_CC_GCC_HAS_GRAPHITE}" = "y" ]; then - extra_config+=("--with-ppl=no") - extra_config+=("--with-isl=no") - extra_config+=("--with-cloog=no") - fi - if [ "${CT_CC_GCC_USE_LTO}" = "y" ]; then - extra_config+=("--with-libelf=${complibs}") - elif [ "${CT_CC_GCC_HAS_LTO}" = "y" ]; then - extra_config+=("--with-libelf=no") - fi - - if [ ${#host_libstdcxx_flags[@]} -ne 0 ]; then - extra_config+=("--with-host-libstdcxx=${host_libstdcxx_flags[*]}") - fi - - if [ "${CT_THREADS}" = "none" ]; then - extra_config+=("--disable-threads") - if [ "${CT_CC_GCC_4_2_or_later}" = y ]; then - CT_Test "Disabling libgomp for no-thread gcc>=4.2" "${CT_CC_GCC_LIBGOMP}" = "Y" - extra_config+=("--disable-libgomp") - fi - else - if [ "${CT_THREADS}" = "win32" ]; then - extra_config+=("--enable-threads=win32") - extra_config+=("--disable-win32-registry") - else - extra_config+=("--enable-threads=posix") - fi - fi - - if [ "${CT_CC_GCC_ENABLE_TARGET_OPTSPACE}" = "y" ]; then - extra_config+=("--enable-target-optspace") - fi - if [ "${CT_CC_GCC_DISABLE_PCH}" = "y" ]; then - extra_config+=("--disable-libstdcxx-pch") - fi - - case "${CT_CC_GCC_LDBL_128}" in - y) extra_config+=("--with-long-double-128");; - m) ;; - "") extra_config+=("--without-long-double-128");; - esac - - if [ "${CT_CC_GCC_BUILD_ID}" = "y" ]; then - extra_config+=( --enable-linker-build-id ) - fi - - case "${CT_CC_GCC_LNK_HASH_STYLE}" in - "") ;; - *) extra_config+=( "--with-linker-hash-style=${CT_CC_GCC_LNK_HASH_STYLE}" );; - esac - - if [ "${CT_CC_GCC_ENABLE_PLUGINS}" = "y" ]; then - extra_config+=( --enable-plugin ) - fi - if [ "${CT_CC_GCC_GOLD}" = "y" ]; then - extra_config+=( --enable-gold ) - fi - - case "${CT_ARCH}" in - mips) - case "${CT_CC_GCC_mips_llsc}" in - y) extra_config+=( --with-llsc );; - m) ;; - *) extra_config+=( --without-llsc );; - esac - case "${CT_CC_GCC_mips_synci}" in - y) extra_config+=( --with-synci );; - m) ;; - *) extra_config+=( --without-synci );; - esac - if [ "${CT_CC_GCC_mips_plt}" ]; then - extra_config+=( --with-mips-plt ) - fi - ;; # ARCH is mips - esac - - [ "${CT_TOOLCHAIN_ENABLE_NLS}" != "y" ] && extra_config+=("--disable-nls") - - if [ "${CT_CC_GCC_SYSTEM_ZLIB}" = "y" ]; then - extra_config+=("--with-system-zlib") - fi - - if [ "${CT_MULTILIB}" = "y" ]; then - extra_config+=("--enable-multilib") - else - extra_config+=("--disable-multilib") - fi - - CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'" - - CT_DoExecLog CFG \ - CC_FOR_BUILD="${CT_BUILD}-gcc" \ - CFLAGS="${cflags}" \ - LDFLAGS="${final_LDFLAGS[*]}" \ - CFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \ - CXXFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \ - LDFLAGS_FOR_TARGET="${CT_TARGET_LDFLAGS}" \ - "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/configure" \ - --build=${CT_BUILD} \ - --host=${host} \ - --target=${CT_TARGET} \ - --prefix="${prefix}" \ - ${CC_SYSROOT_ARG} \ - "${extra_config[@]}" \ - --with-local-prefix="${CT_SYSROOT_DIR}" \ - --enable-c99 \ - --enable-long-long \ - "${CT_CC_EXTRA_CONFIG_ARRAY[@]}" - - if [ "${CT_CANADIAN}" = "y" ]; then - CT_DoLog EXTRA "Building libiberty" - CT_DoExecLog ALL make ${JOBSFLAGS} all-build-libiberty - fi - - CT_DoLog EXTRA "Building gcc" - CT_DoExecLog ALL make ${JOBSFLAGS} all - - CT_DoLog EXTRA "Installing gcc" - CT_DoExecLog ALL make ${JOBSFLAGS} install - - if [ "${build_manuals}" = "yes" ]; then - CT_DoLog EXTRA "Building the GCC manuals" - CT_DoExecLog ALL make pdf html - CT_DoLog EXTRA "Installing the GCC manuals" - CT_DoExecLog ALL make install-{pdf,html}-gcc - fi - - # Create a symlink ${CT_TARGET}-cc to ${CT_TARGET}-gcc to always be able - # to call the C compiler with the same, somewhat canonical name. - # check whether compiler has an extension - file="$( ls -1 "${CT_PREFIX_DIR}/bin/${CT_TARGET}-gcc."* 2>/dev/null || true )" - [ -z "${file}" ] || ext=".${file##*.}" - CT_DoExecLog ALL ln -sfv "${CT_TARGET}-gcc${ext}" "${CT_PREFIX_DIR}/bin/${CT_TARGET}-cc${ext}" - - if [ "${CT_MULTILIB}" = "y" ]; then - if [ "${CT_CANADIAN}" = "y" ]; then - CT_DoLog WARN "Canadian Cross unable to confirm multilibs configured correctly" - else - multilibs=( $( "${prefix}/bin/${CT_TARGET}-gcc" -print-multi-lib \ - |tail -n +2 ) ) - if [ ${#multilibs[@]} -ne 0 ]; then - CT_DoLog EXTRA "gcc configured with these multilibs (besides the default):" - for i in "${multilibs[@]}"; do - dir="${i%%;*}" - flags="${i#*;}" - CT_DoLog EXTRA " ${flags//@/ -} --> ${dir}/" - done - else - CT_DoLog WARN "gcc configured for multilib, but none available" - fi - fi - fi -} diff -r 7e569a9cb5fd -r cc545a5c1896 scripts/build/debug/300-gdb.sh --- a/scripts/build/debug/300-gdb.sh Sat Nov 16 18:14:45 2013 +0100 +++ b/scripts/build/debug/300-gdb.sh Wed Dec 11 21:28:37 2013 +0100 @@ -181,11 +181,11 @@ if [ "${CT_GDB_INSTALL_GDBINIT}" = "y" ]; then CT_DoLog EXTRA "Installing '.gdbinit' template" # See in scripts/build/internals.sh for why we do this - if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then - gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ) + if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ]; then + gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ) else - gcc_version=$( sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \ - "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/version.c" \ + gcc_version=$( sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \ + "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/version.c" \ ) fi ${sed} -r \ diff -r 7e569a9cb5fd -r cc545a5c1896 scripts/build/internals.sh --- a/scripts/build/internals.sh Sat Nov 16 18:14:45 2013 +0100 +++ b/scripts/build/internals.sh Wed Dec 11 21:28:37 2013 +0100 @@ -28,33 +28,35 @@ CT_DoExecLog ALL "${CT_TARGET}-strip" ${strip_args} \ "${CT_TARGET}/debug-root/usr/bin/gdbserver" fi - # We can not use the version in CT_CC_VERSION because - # of the Linaro stuff. So, harvest the version string - # directly from the gcc sources... - # All gcc 4.x seem to have the version in gcc/BASE-VER - # while version prior to 4.x have the version in gcc/version.c - # Of course, here is not the better place to do that... - if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then - gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ) - else - gcc_version=$( sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \ - "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/version.c" \ - ) + if [ "${CT_CC_gcc}" = "y" ]; then + # We can not use the version in CT_CC_GCC_VERSION because + # of the Linaro stuff. So, harvest the version string + # directly from the gcc sources... + # All gcc 4.x seem to have the version in gcc/BASE-VER + # while version prior to 4.x have the version in gcc/version.c + # Of course, here is not the better place to do that... + if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ]; then + gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ) + else + gcc_version=$( sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \ + "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/version.c" \ + ) + fi + for _t in "bin/${CT_TARGET}-"* \ + "${CT_TARGET}/bin/"* \ + "libexec/gcc/${CT_TARGET}/${gcc_version}/"* \ + "libexec/gcc/${CT_TARGET}/${gcc_version}/install-tools/"* \ + ; do + _type="$( file "${_t}" |cut -d ' ' -f 2- )" + case "${_type}" in + *script*executable*) + ;; + *executable*) + CT_DoExecLog ALL ${CT_HOST}-strip ${strip_args} "${_t}" + ;; + esac + done fi - for _t in "bin/${CT_TARGET}-"* \ - "${CT_TARGET}/bin/"* \ - "libexec/gcc/${CT_TARGET}/${gcc_version}/"* \ - "libexec/gcc/${CT_TARGET}/${gcc_version}/install-tools/"* \ - ; do - _type="$( file "${_t}" |cut -d ' ' -f 2- )" - case "${_type}" in - *script*executable*) - ;; - *executable*) - CT_DoExecLog ALL ${CT_HOST}-strip ${strip_args} "${_t}" - ;; - esac - done CT_Popd fi diff -r 7e569a9cb5fd -r cc545a5c1896 scripts/build/test_suite/gcc.sh --- a/scripts/build/test_suite/gcc.sh Sat Nov 16 18:14:45 2013 +0100 +++ b/scripts/build/test_suite/gcc.sh Wed Dec 11 21:28:37 2013 +0100 @@ -15,10 +15,10 @@ CT_DoStep INFO "Installing GCC test suite" CT_DoExecLog ALL mkdir -p "${CT_TEST_SUITE_DIR}/gcc" - CT_DoExecLog ALL cp -av "${CT_LIB_DIR}/contrib/gcc-test-suite/default.cfg" \ - "${CT_LIB_DIR}/contrib/gcc-test-suite/Makefile" \ - "${CT_LIB_DIR}/contrib/gcc-test-suite/README" \ - "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/testsuite" \ + CT_DoExecLog ALL cp -av "${CT_LIB_DIR}/contrib/gcc-test-suite/default.cfg" \ + "${CT_LIB_DIR}/contrib/gcc-test-suite/Makefile" \ + "${CT_LIB_DIR}/contrib/gcc-test-suite/README" \ + "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/testsuite" \ "${CT_TEST_SUITE_DIR}/gcc" CT_DoExecLog ALL sed -i -r -e "s/@@DG_TARGET@@/${CT_TARGET}/g;" \ diff -r 7e569a9cb5fd -r cc545a5c1896 scripts/crosstool-NG.sh.in --- a/scripts/crosstool-NG.sh.in Sat Nov 16 18:14:45 2013 +0100 +++ b/scripts/crosstool-NG.sh.in Wed Dec 11 21:28:37 2013 +0100 @@ -140,7 +140,7 @@ . "${CT_LIB_DIR}/scripts/build/companion_libs.sh" . "${CT_LIB_DIR}/scripts/build/binutils/${CT_BINUTILS}.sh" . "${CT_LIB_DIR}/scripts/build/libc/${CT_LIBC}.sh" -. "${CT_LIB_DIR}/scripts/build/cc/${CT_CC}.sh" +. "${CT_LIB_DIR}/scripts/build/cc.sh" . "${CT_LIB_DIR}/scripts/build/debug.sh" . "${CT_LIB_DIR}/scripts/build/test_suite.sh" @@ -162,8 +162,8 @@ # Put user-supplied flags at the end, so that they take precedence. CT_TARGET_CFLAGS="${CT_ARCH_TARGET_CFLAGS} ${CT_TARGET_CFLAGS}" CT_TARGET_LDFLAGS="${CT_ARCH_TARGET_LDFLAGS} ${CT_TARGET_LDFLAGS}" -CT_CC_CORE_EXTRA_CONFIG_ARRAY=( ${CT_ARCH_CC_CORE_EXTRA_CONFIG} "${CT_CC_CORE_EXTRA_CONFIG_ARRAY[@]}" ) -CT_CC_EXTRA_CONFIG_ARRAY=( ${CT_ARCH_CC_EXTRA_CONFIG} "${CT_CC_EXTRA_CONFIG_ARRAY[@]}" ) +CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY=( ${CT_ARCH_CC_CORE_EXTRA_CONFIG} "${CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY[@]}" ) +CT_CC_GCC_EXTRA_CONFIG_ARRAY=( ${CT_ARCH_CC_EXTRA_CONFIG} "${CT_CC_GCC_EXTRA_CONFIG_ARRAY[@]}" ) # Compute the package version string CT_PKGVERSION="crosstool-NG ${CT_VERSION}${CT_TOOLCHAIN_PKGVERSION:+ - ${CT_TOOLCHAIN_PKGVERSION}}" @@ -545,8 +545,8 @@ CT_EndStep fi - if [ "${CT_CC_STATIC_LIBSTDCXX}" = "y" ]; then - CT_DoStep DEBUG "Checking that gcc can statically link libstdc++ (CT_CC_STATIC_LIBSTDCXX)" + if [ "${CT_CC_GCC_STATIC_LIBSTDCXX}" = "y" ]; then + CT_DoStep DEBUG "Checking that gcc can statically link libstdc++ (CT_CC_GCC_STATIC_LIBSTDCXX)" CT_DoLog DEBUG "You may need to ensure that libstdc++.a is installed on your system" CT_DoExecLog DEBUG "${CT_HOST}-gcc" ${CT_CFLAGS_FOR_HOST} ${CT_LDFLAGS_FOR_HOST} "${testc}" -static -lstdc++ -o "${gccout}" rm -f "${gccout}" diff -r 7e569a9cb5fd -r cc545a5c1896 scripts/gen_in_frags.sh --- a/scripts/gen_in_frags.sh Sat Nov 16 18:14:45 2013 +0100 +++ b/scripts/gen_in_frags.sh Wed Dec 11 21:28:37 2013 +0100 @@ -138,6 +138,9 @@ _entry=$(printf '%s\n' "${entry}" |"${sed}" -r -s -e 's/[-.+]/_/g;') printf 'menuconfig %s_%s\n' "${cfg_prefix}" "${_entry}" printf ' bool\n' + if "${grep}" -E '^## default' ${file} >/dev/null 2>&1; then + "${sed}" -r -e '/^## default ?/!d; s/^## default ?/ default /;' ${file} 2>/dev/null + fi printf ' prompt "%s"\n' "${entry}" "${sed}" -r -e '/^## depends on /!d; s/^## / /;' ${file} 2>/dev/null "${sed}" -r -e '/^## select /!d; s/^## / /;' ${file} 2>/dev/null diff -r 7e569a9cb5fd -r cc545a5c1896 scripts/showSamples.sh --- a/scripts/showSamples.sh Sat Nov 16 18:14:45 2013 +0100 +++ b/scripts/showSamples.sh Wed Dec 11 21:28:37 2013 +0100 @@ -76,16 +76,24 @@ [ -z "${CT_LIBELF}" -a -z "${CT_LIBELF_TARGET}" ] || printf " libelf-%s" "${CT_LIBELF_VERSION}" [ -z "${complibs}" ] || printf "\n" printf " %-*s : %s\n" ${width} "binutils" "binutils-${CT_BINUTILS_VERSION}" - printf " %-*s : %s" ${width} "C compiler" "${CT_CC}-${CT_CC_VERSION} (C" - [ "${CT_CC_LANG_CXX}" = "y" ] && printf ",C++" - [ "${CT_CC_LANG_FORTRAN}" = "y" ] && printf ",Fortran" - [ "${CT_CC_LANG_JAVA}" = "y" ] && printf ",Java" - [ "${CT_CC_LANG_ADA}" = "y" ] && printf ",ADA" - [ "${CT_CC_LANG_OBJC}" = "y" ] && printf ",Objective-C" - [ "${CT_CC_LANG_OBJCXX}" = "y" ] && printf ",Objective-C++" - [ "${CT_CC_LANG_GOLANG}" = "y" ] && printf ",Go" - [ -n "${CT_CC_LANG_OTHERS}" ] && printf ",${CT_CC_LANG_OTHERS}" - printf ")\n" + printf " %-*s :" ${width} "C compilers" + for cc in $(compgen -A variable | sed -n 's/^CT_CC_\([^_]\+\)_VERSION$/\1/p'); do + cc_variable=CT_CC_${cc}_VERSION + version=${!cc_variable} + compiler=$(echo $cc | sed -E ''| awk '{print tolower($0)}') + printf " $compiler-$version" + done + printf "\n" + printf " %-*s : %s" ${width} "Languages" "C" + [ "${CT_CC_LANG_CXX}" = "y" ] && printf " C++" + [ "${CT_CC_LANG_FORTRAN}" = "y" ] && printf " Fortran" + [ "${CT_CC_LANG_JAVA}" = "y" ] && printf " Java" + [ "${CT_CC_LANG_ADA}" = "y" ] && printf " ADA" + [ "${CT_CC_LANG_OBJC}" = "y" ] && printf " Objective-C" + [ "${CT_CC_LANG_OBJCXX}" = "y" ] && printf " Objective-C++" + [ "${CT_CC_LANG_GOLANG}" = "y" ] && printf " Go" + [ -n "${CT_CC_LANG_OTHERS}" ] && printf " ${CT_CC_LANG_OTHERS}" + printf "\n" printf " %-*s : %s (threads: %s)\n" ${width} "C library" "${CT_LIBC}${CT_LIBC_VERSION:+-}${CT_LIBC_VERSION}" "${CT_THREADS}" printf " %-*s :" ${width} "Tools" [ "${CT_TOOL_sstrip}" ] && printf " sstrip" @@ -121,7 +129,7 @@ fi printf "| ${CT_BINUTILS_VERSION} " printf "| ''${CT_CC}'' " - printf "| ${CT_CC_VERSION} " + printf "| ${CT_CC_GCC_VERSION} " printf "| ''${CT_LIBC}'' |" if [ "${CT_LIBC}" != "none" ]; then printf " ${CT_LIBC_VERSION} " -- For unsubscribe information see http://sourceware.org/lists.html#faq ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1 of 1] cc/gcc: Split gcc configurations and functions from cc ones 2013-12-11 20:42 ` [PATCH 1 of 1] cc/gcc: Split gcc configurations and functions from cc ones Yann Diorcet @ 2013-12-12 22:07 ` Yann E. MORIN 0 siblings, 0 replies; 11+ messages in thread From: Yann E. MORIN @ 2013-12-12 22:07 UTC (permalink / raw) To: Yann Diorcet; +Cc: crossgcc Yann, All, On 2013-12-11 21:41 +0100, Yann Diorcet spake thusly: > # HG changeset patch > # User Yann Diorcet <diorcet.yann@gmail.com> > # Date 1386793717 -3600 > # Wed Dec 11 21:28:37 2013 +0100 > # Node ID cc545a5c18967b99bb58e57bef03471254eb9745 > # Parent 7e569a9cb5fd3ab591bb307328b947a5b7312cba > cc/gcc: Split gcc configurations and functions from cc ones > > Signed-off-by: Yann Diorcet <diorcet.yann@gmail.com> > > diff -r 7e569a9cb5fd -r cc545a5c1896 config/cc.in > --- a/config/cc.in Sat Nov 16 18:14:45 2013 +0100 > +++ b/config/cc.in Wed Dec 11 21:28:37 2013 +0100 > @@ -4,9 +4,7 @@ > > config CC > string > - > -config CC_VERSION > - string > + default "gcc" This should have gone in config/cc/gcc.in itself, as: config CC default "gcc" I'll do the change locally, no need to resend. [--SNIP--] > diff -r 7e569a9cb5fd -r cc545a5c1896 config/config.mk > --- a/config/config.mk Sat Nov 16 18:14:45 2013 +0100 > +++ b/config/config.mk Wed Dec 11 21:28:37 2013 +0100 > @@ -83,7 +83,7 @@ > > config.gen/cc.in: $(CC_CONFIG_FILES) $(CC_CONFIG_FILES_2) > @$(ECHO) ' IN $(@)' > - $(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh choice "$@" "C compiler" "CC" "config/cc" "N" $(CCS) > + $(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh menu "$@" "C compiler" "CC" "config/cc" $(CCS) With this change, it is now possible to generate invalid configurations, where no C compiler is selected. This is Not Good (TM). Why do you need that? [--SNIP--] > diff -r 7e569a9cb5fd -r cc545a5c1896 scripts/build/cc.sh > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/scripts/build/cc.sh Wed Dec 11 21:28:37 2013 +0100 > @@ -0,0 +1,59 @@ > +# Wrapper to build the companion tools facilities s/companion tools facilities/C compiler components/ Yet, this be a separate patch. Please do only one semantic change per patch, that is: - one patch to rename the config options - a second patch to change the config opitons (can be folded in the previous patch, but separate helps do the review) - a third patch to introduce this wrapper - and so on... I must say I do not like this wrapper: why can you handle the llvm and clang stuff as another compiler, on-par with gcc? The wrapper for the companion tools is needed because we do not have proper dependency tracking about the order the components are to be built. [--SNIP--] > diff -r 7e569a9cb5fd -r cc545a5c1896 scripts/build/debug/300-gdb.sh > --- a/scripts/build/debug/300-gdb.sh Sat Nov 16 18:14:45 2013 +0100 > +++ b/scripts/build/debug/300-gdb.sh Wed Dec 11 21:28:37 2013 +0100 > @@ -181,11 +181,11 @@ > if [ "${CT_GDB_INSTALL_GDBINIT}" = "y" ]; then > CT_DoLog EXTRA "Installing '.gdbinit' template" > # See in scripts/build/internals.sh for why we do this > - if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then > - gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ) > + if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ]; then > + gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ) > else > - gcc_version=$( sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \ > - "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/version.c" \ > + gcc_version=$( sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \ > + "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/version.c" \ > ) > fi This whole if-else-fi block should be conditional to gcc being selected, in the end, since otherwise the ele-part will fail. Like you did below, BTW... [--SNIP--] > diff -r 7e569a9cb5fd -r cc545a5c1896 scripts/build/internals.sh > --- a/scripts/build/internals.sh Sat Nov 16 18:14:45 2013 +0100 > +++ b/scripts/build/internals.sh Wed Dec 11 21:28:37 2013 +0100 > @@ -28,33 +28,35 @@ > CT_DoExecLog ALL "${CT_TARGET}-strip" ${strip_args} \ > "${CT_TARGET}/debug-root/usr/bin/gdbserver" > fi > - # We can not use the version in CT_CC_VERSION because > - # of the Linaro stuff. So, harvest the version string > - # directly from the gcc sources... > - # All gcc 4.x seem to have the version in gcc/BASE-VER > - # while version prior to 4.x have the version in gcc/version.c > - # Of course, here is not the better place to do that... > - if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then > - gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ) > - else > - gcc_version=$( sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \ > - "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/version.c" \ > - ) > + if [ "${CT_CC_gcc}" = "y" ]; then ... here. [--SNIP--] > diff -r 7e569a9cb5fd -r cc545a5c1896 scripts/crosstool-NG.sh.in > --- a/scripts/crosstool-NG.sh.in Sat Nov 16 18:14:45 2013 +0100 > +++ b/scripts/crosstool-NG.sh.in Wed Dec 11 21:28:37 2013 +0100 [--SNIP--] > @@ -162,8 +162,8 @@ > # Put user-supplied flags at the end, so that they take precedence. > CT_TARGET_CFLAGS="${CT_ARCH_TARGET_CFLAGS} ${CT_TARGET_CFLAGS}" > CT_TARGET_LDFLAGS="${CT_ARCH_TARGET_LDFLAGS} ${CT_TARGET_LDFLAGS}" > -CT_CC_CORE_EXTRA_CONFIG_ARRAY=( ${CT_ARCH_CC_CORE_EXTRA_CONFIG} "${CT_CC_CORE_EXTRA_CONFIG_ARRAY[@]}" ) > -CT_CC_EXTRA_CONFIG_ARRAY=( ${CT_ARCH_CC_EXTRA_CONFIG} "${CT_CC_EXTRA_CONFIG_ARRAY[@]}" ) > +CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY=( ${CT_ARCH_CC_CORE_EXTRA_CONFIG} "${CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY[@]}" ) > +CT_CC_GCC_EXTRA_CONFIG_ARRAY=( ${CT_ARCH_CC_EXTRA_CONFIG} "${CT_CC_GCC_EXTRA_CONFIG_ARRAY[@]}" ) Maybe now would be the proper time to move that into gcc.sh? > # Compute the package version string > CT_PKGVERSION="crosstool-NG ${CT_VERSION}${CT_TOOLCHAIN_PKGVERSION:+ - ${CT_TOOLCHAIN_PKGVERSION}}" > @@ -545,8 +545,8 @@ > CT_EndStep > fi > > - if [ "${CT_CC_STATIC_LIBSTDCXX}" = "y" ]; then > - CT_DoStep DEBUG "Checking that gcc can statically link libstdc++ (CT_CC_STATIC_LIBSTDCXX)" > + if [ "${CT_CC_GCC_STATIC_LIBSTDCXX}" = "y" ]; then > + CT_DoStep DEBUG "Checking that gcc can statically link libstdc++ (CT_CC_GCC_STATIC_LIBSTDCXX)" > CT_DoLog DEBUG "You may need to ensure that libstdc++.a is installed on your system" > CT_DoExecLog DEBUG "${CT_HOST}-gcc" ${CT_CFLAGS_FOR_HOST} ${CT_LDFLAGS_FOR_HOST} "${testc}" -static -lstdc++ -o "${gccout}" > rm -f "${gccout}" And move this block in gcc.sh, too. This would require a new step before cc_extract. Like we have libc_check_config, we could introduce cc_check_config that would do this static link test. > diff -r 7e569a9cb5fd -r cc545a5c1896 scripts/gen_in_frags.sh > --- a/scripts/gen_in_frags.sh Sat Nov 16 18:14:45 2013 +0100 > +++ b/scripts/gen_in_frags.sh Wed Dec 11 21:28:37 2013 +0100 > @@ -138,6 +138,9 @@ > _entry=$(printf '%s\n' "${entry}" |"${sed}" -r -s -e 's/[-.+]/_/g;') > printf 'menuconfig %s_%s\n' "${cfg_prefix}" "${_entry}" > printf ' bool\n' > + if "${grep}" -E '^## default' ${file} >/dev/null 2>&1; then > + "${sed}" -r -e '/^## default ?/!d; s/^## default ?/ default /;' ${file} 2>/dev/null > + fi This should also go into a separate patch: it adds yet _another_ new feature. Typically, this could go as the first patch in a series: since this is very simple, it can be reviewed very easily and applied quickly*. [*] yes, 'quickly' can be very relative, sorry... :-/ > printf ' prompt "%s"\n' "${entry}" > "${sed}" -r -e '/^## depends on /!d; s/^## / /;' ${file} 2>/dev/null > "${sed}" -r -e '/^## select /!d; s/^## / /;' ${file} 2>/dev/null > diff -r 7e569a9cb5fd -r cc545a5c1896 scripts/showSamples.sh > --- a/scripts/showSamples.sh Sat Nov 16 18:14:45 2013 +0100 > +++ b/scripts/showSamples.sh Wed Dec 11 21:28:37 2013 +0100 > @@ -76,16 +76,24 @@ > [ -z "${CT_LIBELF}" -a -z "${CT_LIBELF_TARGET}" ] || printf " libelf-%s" "${CT_LIBELF_VERSION}" > [ -z "${complibs}" ] || printf "\n" > printf " %-*s : %s\n" ${width} "binutils" "binutils-${CT_BINUTILS_VERSION}" > - printf " %-*s : %s" ${width} "C compiler" "${CT_CC}-${CT_CC_VERSION} (C" > - [ "${CT_CC_LANG_CXX}" = "y" ] && printf ",C++" > - [ "${CT_CC_LANG_FORTRAN}" = "y" ] && printf ",Fortran" > - [ "${CT_CC_LANG_JAVA}" = "y" ] && printf ",Java" > - [ "${CT_CC_LANG_ADA}" = "y" ] && printf ",ADA" > - [ "${CT_CC_LANG_OBJC}" = "y" ] && printf ",Objective-C" > - [ "${CT_CC_LANG_OBJCXX}" = "y" ] && printf ",Objective-C++" > - [ "${CT_CC_LANG_GOLANG}" = "y" ] && printf ",Go" > - [ -n "${CT_CC_LANG_OTHERS}" ] && printf ",${CT_CC_LANG_OTHERS}" > - printf ")\n" > + printf " %-*s :" ${width} "C compilers" > + for cc in $(compgen -A variable | sed -n 's/^CT_CC_\([^_]\+\)_VERSION$/\1/p'); do > + cc_variable=CT_CC_${cc}_VERSION > + version=${!cc_variable} > + compiler=$(echo $cc | sed -E ''| awk '{print tolower($0)}') > + printf " $compiler-$version" > + done > + printf "\n" > + printf " %-*s : %s" ${width} "Languages" "C" > + [ "${CT_CC_LANG_CXX}" = "y" ] && printf " C++" > + [ "${CT_CC_LANG_FORTRAN}" = "y" ] && printf " Fortran" > + [ "${CT_CC_LANG_JAVA}" = "y" ] && printf " Java" > + [ "${CT_CC_LANG_ADA}" = "y" ] && printf " ADA" > + [ "${CT_CC_LANG_OBJC}" = "y" ] && printf " Objective-C" > + [ "${CT_CC_LANG_OBJCXX}" = "y" ] && printf " Objective-C++" > + [ "${CT_CC_LANG_GOLANG}" = "y" ] && printf " Go" > + [ -n "${CT_CC_LANG_OTHERS}" ] && printf " ${CT_CC_LANG_OTHERS}" Here, you're again doing two unrelated changes: - one to replace commas with spaces (to match the tools, below: good) - one to introduce the compilers list Really, I can't see the whole picture of all this work. By splitting the changes into independent, self-contained patches, it's like if you were telling a story: a patch series is a scenario, with each change being a chapter. Then, writing a series is like writing a book: - first, the cover-letter: you state the overal goal of the series. A cover-letter can be very long if need be: you need to explain the intent, the issues you're trying to solve, why you decided to do things the way you've done them. Eg.: This series introduces the basis needed to add Darwin as a target. Darwin requires llvm and/or clang as a compiler. Thus we need to be able to build two or more different compilers in the same toolchain. So this series does: For that, we need to differentiate the current gcc-specific options; they are currently not tied to gcc, but are generic (eg. CT_CC_VERSION). --> patches 1, 2 and 3 Then, we add clang, and then llvm, as two new C compilers. --> patches 4 to 9 Finally, we make it possible to select more than one compiler. For this we need to change the current choice into a multi-select. --> patches 10 and 11 - then the individual patches: you explain more in details what each patch does. If it is not obvious why a patch exist, explain that it is a requirement for the next patch (eg. your '## default' does not look very useful by itself, but saying "needed to select more than one compiler, coming in a following patch, and still be able to have a default value" is very informative). Again, I know Ray and you have put a lot of effort in this work. nd I haven't been very reactive. But the sheer amount of changes in this "simple preliminary" patch is just overwhelming. Please, be sure to reduce the changes as much as possible: if all the above had been split into separate patches, it would have been easier to review and apply. Regards, Yann E. MORIN. -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' -- For unsubscribe information see http://sourceware.org/lists.html#faq ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 0 of 1] Split gcc from cc @ 2013-12-02 20:52 Yann Diorcet 2013-12-02 20:54 ` [PATCH 1 of 1] cc/gcc: Split gcc configurations and functions from cc ones Yann Diorcet 0 siblings, 1 reply; 11+ messages in thread From: Yann Diorcet @ 2013-12-02 20:52 UTC (permalink / raw) To: Yann E. MORIN; +Cc: crossgcc The goal of this patch is to split gcc configurations and functions from cc ones, in order to prepare the ground for including other compilers -- For unsubscribe information see http://sourceware.org/lists.html#faq ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1 of 1] cc/gcc: Split gcc configurations and functions from cc ones 2013-12-02 20:52 [PATCH 0 of 1] Split gcc from cc Yann Diorcet @ 2013-12-02 20:54 ` Yann Diorcet 2013-12-09 19:05 ` Ray Donnelly 2013-12-09 22:06 ` Cody P Schafer 0 siblings, 2 replies; 11+ messages in thread From: Yann Diorcet @ 2013-12-02 20:54 UTC (permalink / raw) To: Yann E. MORIN; +Cc: crossgcc # HG changeset patch # User Yann Diorcet <diorcet.yann@gmail.com> # Date 1386017469 -3600 # Mon Dec 02 21:51:09 2013 +0100 # Node ID 65771b86df01ef768aa36b6db1491a198cbf2811 # Parent 7e569a9cb5fd3ab591bb307328b947a5b7312cba cc/gcc: Split gcc configurations and functions from cc ones Signed-off-by: Yann Diorcet <diorcet.yann@gmail.com> diff -r 7e569a9cb5fd -r 65771b86df01 config/cc.in --- a/config/cc.in Sat Nov 16 18:14:45 2013 +0100 +++ b/config/cc.in Mon Dec 02 21:51:09 2013 +0100 @@ -4,9 +4,7 @@ config CC string - -config CC_VERSION - string + default "gcc" config CC_CORE_PASSES_NEEDED bool @@ -126,6 +124,4 @@ endif # ! BARE_METAL -source "config.gen/cc.in.2" - endmenu diff -r 7e569a9cb5fd -r 65771b86df01 config/cc/gcc.in --- a/config/cc/gcc.in Sat Nov 16 18:14:45 2013 +0100 +++ b/config/cc/gcc.in Mon Dec 02 21:51:09 2013 +0100 @@ -1,5 +1,6 @@ # Compiler options # +## default y ## select CC_SUPPORT_CXX ## select CC_SUPPORT_FORTRAN ## select CC_SUPPORT_JAVA @@ -36,215 +37,215 @@ # Don't remove next line # CT_INSERT_VERSION_BELOW -config CC_V_linaro_4_8 +config CC_GCC_V_linaro_4_8 bool prompt "linaro-4.8-2013.06-1" depends on CC_GCC_SHOW_LINARO select CC_GCC_4_8 -config CC_V_4_8_2 +config CC_GCC_V_4_8_2 bool prompt "4.8.2" select CC_GCC_4_8 -config CC_V_4_8_1 +config CC_GCC_V_4_8_1 bool prompt "4.8.1" select CC_GCC_4_8 -config CC_V_4_8_0 +config CC_GCC_V_4_8_0 bool prompt "4.8.0" select CC_GCC_4_8 -config CC_V_linaro_4_7 +config CC_GCC_V_linaro_4_7 bool prompt "linaro-4.7-2013.06-1" depends on CC_GCC_SHOW_LINARO select CC_GCC_4_7 -config CC_V_4_7_3 +config CC_GCC_V_4_7_3 bool prompt "4.7.3" select CC_GCC_4_7 -config CC_V_4_7_2 +config CC_GCC_V_4_7_2 bool prompt "4.7.2" select CC_GCC_4_7 -config CC_V_4_7_1 +config CC_GCC_V_4_7_1 bool prompt "4.7.1" select CC_GCC_4_7 -config CC_V_4_7_0 +config CC_GCC_V_4_7_0 bool prompt "4.7.0" select CC_GCC_4_7 -config CC_V_linaro_4_6 +config CC_GCC_V_linaro_4_6 bool prompt "linaro-4.6-2013.05" depends on CC_GCC_SHOW_LINARO select CC_GCC_4_6 -config CC_V_4_6_4 +config CC_GCC_V_4_6_4 bool prompt "4.6.4" select CC_GCC_4_6 -config CC_V_4_6_3 +config CC_GCC_V_4_6_3 bool prompt "4.6.3" select CC_GCC_4_6 -config CC_V_4_6_2 +config CC_GCC_V_4_6_2 bool prompt "4.6.2" select CC_GCC_4_6 -config CC_V_4_6_1 +config CC_GCC_V_4_6_1 bool prompt "4.6.1" select CC_GCC_4_6 -config CC_V_4_6_0 +config CC_GCC_V_4_6_0 bool prompt "4.6.0" select CC_GCC_4_6 -config CC_V_linaro_4_5 +config CC_GCC_V_linaro_4_5 bool prompt "linaro-4.5-2012.03" depends on CC_GCC_SHOW_LINARO select CC_GCC_4_5 -config CC_V_4_5_3 +config CC_GCC_V_4_5_3 bool prompt "4.5.3" select CC_GCC_4_5 -config CC_V_4_5_2 +config CC_GCC_V_4_5_2 bool prompt "4.5.2" select CC_GCC_4_5 -config CC_V_4_5_1 +config CC_GCC_V_4_5_1 bool prompt "4.5.1" select CC_GCC_4_5 -config CC_V_4_5_0 +config CC_GCC_V_4_5_0 bool prompt "4.5.0" select CC_GCC_4_5 -config CC_V_linaro_4_4 +config CC_GCC_V_linaro_4_4 bool prompt "linaro-4.4-2011.02-0" depends on CC_GCC_SHOW_LINARO select CC_GCC_4_4 -config CC_V_4_4_7 +config CC_GCC_V_4_4_7 bool prompt "4.4.7" select CC_GCC_4_4 -config CC_V_4_4_6 +config CC_GCC_V_4_4_6 bool prompt "4.4.6" select CC_GCC_4_4 -config CC_V_4_4_5 +config CC_GCC_V_4_4_5 bool prompt "4.4.5" select CC_GCC_4_4 -config CC_V_4_4_4 +config CC_GCC_V_4_4_4 bool prompt "4.4.4" select CC_GCC_4_4 -config CC_V_4_4_3 +config CC_GCC_V_4_4_3 bool prompt "4.4.3" select CC_GCC_4_4 -config CC_V_4_4_2 +config CC_GCC_V_4_4_2 bool prompt "4.4.2" select CC_GCC_4_4 -config CC_V_4_4_1 +config CC_GCC_V_4_4_1 bool prompt "4.4.1" select CC_GCC_4_4 -config CC_V_4_4_0 +config CC_GCC_V_4_4_0 bool prompt "4.4.0" select CC_GCC_4_4 -config CC_V_4_3_6 +config CC_GCC_V_4_3_6 bool prompt "4.3.6" select CC_GCC_4_3 -config CC_V_4_3_5 +config CC_GCC_V_4_3_5 bool prompt "4.3.5" select CC_GCC_4_3 -config CC_V_4_3_4 +config CC_GCC_V_4_3_4 bool prompt "4.3.4" select CC_GCC_4_3 -config CC_V_4_3_3 +config CC_GCC_V_4_3_3 bool prompt "4.3.3" select CC_GCC_4_3 -config CC_V_4_3_2 +config CC_GCC_V_4_3_2 bool prompt "4.3.2" select CC_GCC_4_3 -config CC_V_4_3_1 +config CC_GCC_V_4_3_1 bool prompt "4.3.1" select CC_GCC_4_3 -config CC_V_4_2_4 +config CC_GCC_V_4_2_4 bool prompt "4.2.4" select CC_GCC_4_2 # We need that one, it's the only version with avr32 support # because we have a patch for it -config CC_V_4_2_2 +config CC_GCC_V_4_2_2 bool prompt "4.2.2" select CC_GCC_4_2 -config CC_V_4_1_2 +config CC_GCC_V_4_1_2 bool prompt "4.1.2 (OBSOLETE)" depends on OBSOLETE -config CC_V_4_0_4 +config CC_GCC_V_4_0_4 bool prompt "4.0.4 (OBSOLETE)" depends on OBSOLETE -config CC_V_3_4_6 +config CC_GCC_V_3_4_6 bool prompt "3.4.6 (OBSOLETE)" depends on OBSOLETE -config CC_CUSTOM +config CC_GCC_CUSTOM bool prompt "Custom gcc" depends on EXPERIMENTAL @@ -252,9 +253,9 @@ endchoice -if CC_CUSTOM +if CC_GCC_CUSTOM -config CC_CUSTOM_LOCATION +config CC_GCC_CUSTOM_LOCATION string prompt "Full path to custom gcc source" default "" @@ -262,7 +263,7 @@ Enter the path to the directory (or tarball) of your source for gcc, or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/gcc -endif #CC_CUSTOM +endif #CC_GCC_CUSTOM config CC_GCC_4_2 bool @@ -434,6 +435,8 @@ select GMP_NEEDED select MPFR_NEEDED + select CLOOG_NEEDED + config CC_GCC_USE_MPC bool select MPC_NEEDED @@ -445,52 +448,52 @@ config CC_GCC_HAS_LIBQUADMATH bool -config CC_VERSION +config CC_GCC_VERSION string # Don't remove next line # CT_INSERT_VERSION_STRING_BELOW - default "linaro-4.8-2013.06-1" if CC_V_linaro_4_8 - default "4.8.2" if CC_V_4_8_2 - default "4.8.1" if CC_V_4_8_1 - default "4.8.0" if CC_V_4_8_0 - default "linaro-4.7-2013.06-1" if CC_V_linaro_4_7 - default "4.7.3" if CC_V_4_7_3 - default "4.7.2" if CC_V_4_7_2 - default "4.7.1" if CC_V_4_7_1 - default "4.7.0" if CC_V_4_7_0 - default "linaro-4.6-2013.05" if CC_V_linaro_4_6 - default "4.6.4" if CC_V_4_6_4 - default "4.6.3" if CC_V_4_6_3 - default "4.6.2" if CC_V_4_6_2 - default "4.6.1" if CC_V_4_6_1 - default "4.6.0" if CC_V_4_6_0 - default "linaro-4.5-2012.03" if CC_V_linaro_4_5 - default "4.5.3" if CC_V_4_5_3 - default "4.5.2" if CC_V_4_5_2 - default "4.5.1" if CC_V_4_5_1 - default "4.5.0" if CC_V_4_5_0 - default "linaro-4.4-2011.02-0" if CC_V_linaro_4_4 - default "4.4.7" if CC_V_4_4_7 - default "4.4.6" if CC_V_4_4_6 - default "4.4.5" if CC_V_4_4_5 - default "4.4.4" if CC_V_4_4_4 - default "4.4.3" if CC_V_4_4_3 - default "4.4.2" if CC_V_4_4_2 - default "4.4.1" if CC_V_4_4_1 - default "4.4.0" if CC_V_4_4_0 - default "4.3.6" if CC_V_4_3_6 - default "4.3.5" if CC_V_4_3_5 - default "4.3.4" if CC_V_4_3_4 - default "4.3.3" if CC_V_4_3_3 - default "4.3.2" if CC_V_4_3_2 - default "4.3.1" if CC_V_4_3_1 - default "4.3.0" if CC_V_4_3_0 - default "4.2.4" if CC_V_4_2_4 - default "4.2.2" if CC_V_4_2_2 - default "4.1.2" if CC_V_4_1_2 - default "4.0.4" if CC_V_4_0_4 - default "3.4.6" if CC_V_3_4_6 - default "custom" if CC_CUSTOM + default "linaro-4.8-2013.06-1" if CC_GCC_V_linaro_4_8 + default "4.8.2" if CC_GCC_V_4_8_2 + default "4.8.1" if CC_GCC_V_4_8_1 + default "4.8.0" if CC_GCC_V_4_8_0 + default "linaro-4.7-2013.06-1" if CC_GCC_V_linaro_4_7 + default "4.7.3" if CC_GCC_V_4_7_3 + default "4.7.2" if CC_GCC_V_4_7_2 + default "4.7.1" if CC_GCC_V_4_7_1 + default "4.7.0" if CC_GCC_V_4_7_0 + default "linaro-4.6-2013.05" if CC_GCC_V_linaro_4_6 + default "4.6.4" if CC_GCC_V_4_6_4 + default "4.6.3" if CC_GCC_V_4_6_3 + default "4.6.2" if CC_GCC_V_4_6_2 + default "4.6.1" if CC_GCC_V_4_6_1 + default "4.6.0" if CC_GCC_V_4_6_0 + default "linaro-4.5-2012.03" if CC_GCC_V_linaro_4_5 + default "4.5.3" if CC_GCC_V_4_5_3 + default "4.5.2" if CC_GCC_V_4_5_2 + default "4.5.1" if CC_GCC_V_4_5_1 + default "4.5.0" if CC_GCC_V_4_5_0 + default "linaro-4.4-2011.02-0" if CC_GCC_V_linaro_4_4 + default "4.4.7" if CC_GCC_V_4_4_7 + default "4.4.6" if CC_GCC_V_4_4_6 + default "4.4.5" if CC_GCC_V_4_4_5 + default "4.4.4" if CC_GCC_V_4_4_4 + default "4.4.3" if CC_GCC_V_4_4_3 + default "4.4.2" if CC_GCC_V_4_4_2 + default "4.4.1" if CC_GCC_V_4_4_1 + default "4.4.0" if CC_GCC_V_4_4_0 + default "4.3.6" if CC_GCC_V_4_3_6 + default "4.3.5" if CC_GCC_V_4_3_5 + default "4.3.4" if CC_GCC_V_4_3_4 + default "4.3.3" if CC_GCC_V_4_3_3 + default "4.3.2" if CC_GCC_V_4_3_2 + default "4.3.1" if CC_GCC_V_4_3_1 + default "4.3.0" if CC_GCC_V_4_3_0 + default "4.2.4" if CC_GCC_V_4_2_4 + default "4.2.2" if CC_GCC_V_4_2_2 + default "4.1.2" if CC_GCC_V_4_1_2 + default "4.0.4" if CC_GCC_V_4_0_4 + default "3.4.6" if CC_GCC_V_3_4_6 + default "custom" if CC_GCC_CUSTOM config CC_LANG_JAVA_USE_ECJ bool @@ -501,3 +504,5 @@ # Fortran always requires GMP+MPFR, whatever the gcc version config CC_LANG_FORTRAN select CC_GCC_USE_GMP_MPFR + +source "config/cc/gcc.in.2" diff -r 7e569a9cb5fd -r 65771b86df01 config/cc/gcc.in.2 --- a/config/cc/gcc.in.2 Sat Nov 16 18:14:45 2013 +0100 +++ b/config/cc/gcc.in.2 Mon Dec 02 21:51:09 2013 +0100 @@ -1,6 +1,6 @@ # gcc configuration options -config CC_ENABLE_CXX_FLAGS +config CC_GCC_ENABLE_CXX_FLAGS string prompt "Flags to pass to --enable-cxx-flags" default "" @@ -11,7 +11,7 @@ Note: just pass in the option _value_, that is only the part that goes after the '=' sign. -config CC_CORE_EXTRA_CONFIG_ARRAY +config CC_GCC_CORE_EXTRA_CONFIG_ARRAY string prompt "Core gcc extra config" default "" @@ -25,7 +25,7 @@ if they are properly quoted (or escaped, but prefer quotes). Eg.: --with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space -config CC_EXTRA_CONFIG_ARRAY +config CC_GCC_EXTRA_CONFIG_ARRAY string prompt "gcc extra config" default "" @@ -38,9 +38,9 @@ --with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space config STATIC_TOOLCHAIN - select CC_STATIC_LIBSTDCXX if CC_GCC_4_4_or_later + select CC_GCC_STATIC_LIBSTDCXX if CC_GCC_4_4_or_later -config CC_STATIC_LIBSTDCXX +config CC_GCC_STATIC_LIBSTDCXX bool prompt "Link libstdc++ statically into the gcc binary" default y diff -r 7e569a9cb5fd -r 65771b86df01 config/config.mk --- a/config/config.mk Sat Nov 16 18:14:45 2013 +0100 +++ b/config/config.mk Mon Dec 02 21:51:09 2013 +0100 @@ -83,7 +83,7 @@ config.gen/cc.in: $(CC_CONFIG_FILES) $(CC_CONFIG_FILES_2) @$(ECHO) ' IN $(@)' - $(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh choice "$@" "C compiler" "CC" "config/cc" "N" $(CCS) + $(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh menu "$@" "C compiler" "CC" "config/cc" $(CCS) config.gen/binutils.in: $(CC_BINUTILS_FILES) $(CC_BINUTILS_FILES_2) @$(ECHO) ' IN $(@)' diff -r 7e569a9cb5fd -r 65771b86df01 samples/alphaev56-unknown-linux-gnu/crosstool.config --- a/samples/alphaev56-unknown-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/alphaev56-unknown-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -10,7 +10,7 @@ CT_BINUTILS_V_2_21_1a=y CT_BINUTILS_PLUGINS=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_4_5=y +CT_CC_GCC_V_4_4_5=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_LIBC_glibc=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/alphaev67-unknown-linux-gnu/crosstool.config --- a/samples/alphaev67-unknown-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/alphaev67-unknown-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -8,7 +8,7 @@ CT_KERNEL_linux=y CT_KERNEL_V_2_6_38=y CT_BINUTILS_V_2_21_1a=y -CT_CC_V_4_3_5=y +CT_CC_GCC_V_4_3_5=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y # CT_CC_GCC_ENABLE_TARGET_OPTSPACE is not set diff -r 7e569a9cb5fd -r 65771b86df01 samples/arm-bare_newlib_cortex_m3_nommu-eabi/crosstool.config --- a/samples/arm-bare_newlib_cortex_m3_nommu-eabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/arm-bare_newlib_cortex_m3_nommu-eabi/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -11,7 +11,7 @@ CT_TARGET_VENDOR="bare_newlib_cortex_m3_nommu" CT_ARCH_BINFMT_FLAT=y CT_BINUTILS_V_2_19_1a=y -CT_CC_V_4_4_1=y +CT_CC_GCC_V_4_4_1=y CT_CC_LANG_CXX=y CT_LIBC_NEWLIB_V_1_18_0=y CT_GMP_V_4_3_2=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/arm-cortex_a8-linux-gnueabi/crosstool.config --- a/samples/arm-cortex_a8-linux-gnueabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/arm-cortex_a8-linux-gnueabi/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -10,7 +10,7 @@ CT_KERNEL_linux=y CT_BINUTILS_V_2_20_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_4_6=y +CT_CC_GCC_V_4_4_6=y CT_CC_LANG_CXX=y CT_LIBC_glibc=y CT_LIBC_GLIBC_V_2_9=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/arm-cortexa9_neon-linux-gnueabihf/crosstool.config --- a/samples/arm-cortexa9_neon-linux-gnueabihf/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/arm-cortexa9_neon-linux-gnueabihf/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -18,7 +18,7 @@ CT_BINUTILS_PLUGINS=y CT_BINUTILS_FOR_TARGET=y CT_CC_GCC_SHOW_LINARO=y -CT_CC_V_linaro_4_7=y +CT_CC_GCC_V_linaro_4_7=y CT_CC_LANG_CXX=y CT_CC_CORE_EXTRA_CONFIG_ARRAY="\"--with-specs=%{save-temps: -fverbose-asm} %{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables}\" --enable-poison-system-directories" CT_CC_EXTRA_CONFIG_ARRAY="\"--with-specs=%{save-temps: -fverbose-asm} %{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables}\" --enable-poison-system-directories" diff -r 7e569a9cb5fd -r 65771b86df01 samples/arm-davinci-linux-gnueabi/crosstool.config --- a/samples/arm-davinci-linux-gnueabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/arm-davinci-linux-gnueabi/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -11,7 +11,7 @@ CT_KERNEL_V_2_6_33=y CT_BINUTILS_V_2_20_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_CXX=y CT_LIBC_glibc=y CT_LIBC_GLIBC_V_2_9=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/arm-unknown-eabi/crosstool.config --- a/samples/arm-unknown-eabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/arm-unknown-eabi/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -4,7 +4,7 @@ CT_ARCH_FLOAT_SW=y CT_ARCH_arm=y CT_BINUTILS_V_2_19_1a=y -CT_CC_V_4_3_4=y +CT_CC_GCC_V_4_3_4=y CT_CC_LANG_CXX=y CT_LIBC_NEWLIB_V_1_17_0=y CT_DEBUG_gdb=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/arm-unknown-linux-gnueabi/crosstool.config --- a/samples/arm-unknown-linux-gnueabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/arm-unknown-linux-gnueabi/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -7,7 +7,7 @@ CT_KERNEL_linux=y CT_BINUTILS_V_2_19_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_CC_LANG_JAVA=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/arm-unknown-linux-uclibcgnueabi/crosstool.config --- a/samples/arm-unknown-linux-uclibcgnueabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/arm-unknown-linux-uclibcgnueabi/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -11,7 +11,7 @@ CT_KERNEL_V_2_6_33=y CT_BINUTILS_V_2_19_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_4_3=y +CT_CC_GCC_V_4_4_3=y CT_CC_LANG_CXX=y CT_LIBC_uClibc=y CT_LIBC_UCLIBC_V_0_9_30_2=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/armeb-unknown-eabi/crosstool.config --- a/samples/armeb-unknown-eabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/armeb-unknown-eabi/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -5,7 +5,7 @@ CT_ARCH_FLOAT_SW=y CT_ARCH_arm=y CT_BINUTILS_V_2_19_1a=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_LIBC_none=y CT_DEBUG_gdb=y CT_GDB_V_6_8a=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/armeb-unknown-linux-gnueabi/crosstool.config --- a/samples/armeb-unknown-linux-gnueabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/armeb-unknown-linux-gnueabi/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -11,7 +11,7 @@ CT_KERNEL_linux=y CT_BINUTILS_V_2_20_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_4_3=y +CT_CC_GCC_V_4_4_3=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_CC_LANG_JAVA=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/armeb-unknown-linux-uclibcgnueabi/crosstool.config --- a/samples/armeb-unknown-linux-uclibcgnueabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/armeb-unknown-linux-uclibcgnueabi/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -16,7 +16,7 @@ CT_BINUTILS_LD_WRAPPER=y CT_BINUTILS_PLUGINS=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_6_4=y +CT_CC_GCC_V_4_6_4=y CT_CC_LANG_CXX=y CT_CC_GCC_DISABLE_PCH=y # CT_CC_GCC_SJLJ_EXCEPTIONS is not set diff -r 7e569a9cb5fd -r 65771b86df01 samples/avr32-unknown-none/crosstool.config --- a/samples/avr32-unknown-none/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/avr32-unknown-none/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -4,7 +4,7 @@ CT_LOG_EXTRA=y CT_ARCH_avr32=y CT_BINUTILS_V_2_18a=y -CT_CC_V_4_2_2=y +CT_CC_GCC_V_4_2_2=y CT_LIBC_NEWLIB_V_1_17_0=y CT_LIBC_NEWLIB_IO_LL=y CT_LIBC_NEWLIB_IO_FLOAT=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/bfin-unknown-linux-uclibc/crosstool.config --- a/samples/bfin-unknown-linux-uclibc/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/bfin-unknown-linux-uclibc/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -6,7 +6,7 @@ CT_KERNEL_V_2_6_33=y CT_ARCH_BINFMT_FDPIC=y CT_BINUTILS_V_2_20_1a=y -CT_CC_V_4_3_4=y +CT_CC_GCC_V_4_3_4=y CT_LIBC_UCLIBC_V_0_9_30_2=y CT_LIBC_UCLIBC_CONFIG_FILE="${CT_LIB_DIR}/samples/${CT_TARGET}/${CT_LIBC}-${CT_LIBC_VERSION}.config" CT_GMP_V_4_3_2=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/i586-geode-linux-uclibc/crosstool.config --- a/samples/i586-geode-linux-uclibc/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/i586-geode-linux-uclibc/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -8,7 +8,7 @@ CT_KERNEL_V_2_6_36=y CT_BINUTILS_V_2_20_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_4_5=y +CT_CC_GCC_V_4_4_5=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_CC_LANG_JAVA=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/i586-mingw32msvc,i686-none-linux-gnu/crosstool.config --- a/samples/i586-mingw32msvc,i686-none-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/i586-mingw32msvc,i686-none-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -12,7 +12,7 @@ CT_KERNEL_V_2_6_33=y CT_BINUTILS_V_2_19_1a=y CT_BINUTILS_EXTRA_CONFIG_ARRAY="--enable-targets=i686-none-linux-gnu" -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_CXX=y CT_LIBC_glibc=y CT_LIBC_GLIBC_V_2_9=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/i686-nptl-linux-gnu/crosstool.config --- a/samples/i686-nptl-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/i686-nptl-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -13,7 +13,7 @@ CT_BINUTILS_LD_WRAPPER=y CT_BINUTILS_PLUGINS=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_5_2=y +CT_CC_GCC_V_4_5_2=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_CC_LANG_JAVA=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/i686-unknown-mingw32/crosstool.config --- a/samples/i686-unknown-mingw32/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/i686-unknown-mingw32/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -7,7 +7,7 @@ CT_KERNEL_windows=y CT_BINUTILS_V_2_21_1a=y CT_BINUTILS_PLUGINS=y -CT_CC_V_4_5_2=y +CT_CC_GCC_V_4_5_2=y CT_CC_LANG_CXX=y CT_MINGW_DIRECTX=y CT_MINGW_DDK=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/m68k-unknown-elf/crosstool.config --- a/samples/m68k-unknown-elf/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/m68k-unknown-elf/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -6,7 +6,7 @@ CT_ARCH_m68k=y CT_ARCH_BINFMT_FLAT=y CT_BINUTILS_V_2_20_1a=y -CT_CC_V_4_3_4=y +CT_CC_GCC_V_4_3_4=y CT_LIBC_none=y CT_GMP_V_4_3_2=y CT_MPFR_V_2_4_2=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/mips-ar2315-linux-gnu/crosstool.config --- a/samples/mips-ar2315-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/mips-ar2315-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -10,7 +10,7 @@ CT_KERNEL_linux=y CT_KERNEL_V_2_6_33=y CT_BINUTILS_V_2_19_1a=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_CXX=y CT_LIBC_EGLIBC_V_2_9=y CT_EGLIBC_REVISION="{2009-07-21}" diff -r 7e569a9cb5fd -r 65771b86df01 samples/mips-malta-linux-gnu/crosstool.config --- a/samples/mips-malta-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/mips-malta-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -7,7 +7,7 @@ CT_KERNEL_linux=y CT_KERNEL_V_2_6_38=y CT_BINUTILS_V_2_21_1a=y -CT_CC_V_4_4_6=y +CT_CC_GCC_V_4_4_6=y # CT_CC_GCC_USE_GRAPHITE is not set CT_LIBC_EGLIBC_V_2_13=y CT_DEBUG_gdb=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/mips-unknown-elf/crosstool.config --- a/samples/mips-unknown-elf/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/mips-unknown-elf/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -4,7 +4,7 @@ CT_ARCH_FLOAT_SW=y CT_ARCH_mips=y CT_BINUTILS_V_2_19_1a=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_LIBC_none=y CT_DEBUG_gdb=y CT_GDB_V_6_8a=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/mips-unknown-linux-uclibc/crosstool.config --- a/samples/mips-unknown-linux-uclibc/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/mips-unknown-linux-uclibc/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -8,7 +8,7 @@ CT_KERNEL_linux=y CT_KERNEL_V_3_6=y CT_BINUTILS_V_2_21_1a=y -CT_CC_V_4_6_4=y +CT_CC_GCC_V_4_6_4=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_LIBC_uClibc=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/mips64el-n32-linux-uclibc/crosstool.config --- a/samples/mips64el-n32-linux-uclibc/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/mips64el-n32-linux-uclibc/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -10,7 +10,7 @@ CT_KERNEL_linux=y CT_KERNEL_V_2_6_31=y CT_BINUTILS_V_2_19_1a=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_CXX=y CT_LIBC_uClibc=y CT_LIBC_UCLIBC_V_0_9_30_1=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/mips64el-n64-linux-uclibc/crosstool.config --- a/samples/mips64el-n64-linux-uclibc/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/mips64el-n64-linux-uclibc/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -11,7 +11,7 @@ CT_KERNEL_linux=y CT_KERNEL_V_2_6_31=y CT_BINUTILS_V_2_19_1a=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_CXX=y CT_LIBC_uClibc=y CT_LIBC_UCLIBC_V_0_9_30_1=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/mipsel-sde-elf/crosstool.config --- a/samples/mipsel-sde-elf/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/mipsel-sde-elf/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -6,7 +6,7 @@ CT_ARCH_mips=y CT_TARGET_VENDOR="sde" CT_BINUTILS_V_2_21_1a=y -CT_CC_V_4_4_6=y +CT_CC_GCC_V_4_4_6=y # CT_CC_GCC_ENABLE_TARGET_OPTSPACE is not set CT_LIBC_none=y CT_DEBUG_gdb=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/mipsel-unknown-linux-gnu/crosstool.config --- a/samples/mipsel-unknown-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/mipsel-unknown-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -9,7 +9,7 @@ CT_KERNEL_V_2_6_31=y CT_BINUTILS_V_2_19_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_CXX=y CT_LIBC_glibc=y CT_LIBC_GLIBC_V_2_9=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/powerpc-405-linux-gnu/crosstool.config --- a/samples/powerpc-405-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/powerpc-405-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -10,7 +10,7 @@ CT_KERNEL_V_2_6_31=y CT_BINUTILS_V_2_19_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_CC_LANG_JAVA=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/powerpc-860-linux-gnu/crosstool.config --- a/samples/powerpc-860-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/powerpc-860-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -9,7 +9,7 @@ CT_KERNEL_V_2_6_31=y CT_BINUTILS_V_2_19_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_CC_EXTRA_CONFIG_ARRAY="--with-cpu=860 --enable-cxx-flags=-mcpu=860 --with-float=soft --enable-cxx-flags=-msoft-float" diff -r 7e569a9cb5fd -r 65771b86df01 samples/powerpc-e300c3-linux-gnu/crosstool.config --- a/samples/powerpc-e300c3-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/powerpc-e300c3-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -9,7 +9,7 @@ CT_KERNEL_V_2_6_36=y CT_BINUTILS_V_2_21_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_5_2=y +CT_CC_GCC_V_4_5_2=y CT_CC_LANG_CXX=y CT_CC_EXTRA_CONFIG_ARRAY="--with-long-double-128" # CT_CC_GCC_ENABLE_TARGET_OPTSPACE is not set diff -r 7e569a9cb5fd -r 65771b86df01 samples/powerpc-e500v2-linux-gnuspe/crosstool.config --- a/samples/powerpc-e500v2-linux-gnuspe/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/powerpc-e500v2-linux-gnuspe/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -14,7 +14,7 @@ CT_BINUTILS_EXTRA_CONFIG_ARRAY="--enable-spe=yes --enable-e500x2 --with-e500x2" CT_BINUTILS_FOR_TARGET=y CT_CC_GCC_SHOW_LINARO=y -CT_CC_V_4_6_4=y +CT_CC_GCC_V_4_6_4=y CT_CC_LANG_CXX=y CT_CC_EXTRA_CONFIG_ARRAY="--with-long-double-128" # CT_CC_GCC_ENABLE_TARGET_OPTSPACE is not set diff -r 7e569a9cb5fd -r 65771b86df01 samples/powerpc-unknown-linux-gnu/crosstool.config --- a/samples/powerpc-unknown-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/powerpc-unknown-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -6,7 +6,7 @@ CT_KERNEL_V_2_6_31=y CT_BINUTILS_V_2_19_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_CC_LANG_JAVA=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/powerpc-unknown-linux-uclibc/crosstool.config --- a/samples/powerpc-unknown-linux-uclibc/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/powerpc-unknown-linux-uclibc/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -7,7 +7,7 @@ CT_KERNEL_V_2_6_31=y CT_BINUTILS_V_2_19_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_2_4=y +CT_CC_GCC_V_4_2_4=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_LIBC_uClibc=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/powerpc-unknown_nofpu-linux-gnu/crosstool.config --- a/samples/powerpc-unknown_nofpu-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/powerpc-unknown_nofpu-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -8,7 +8,7 @@ CT_KERNEL_V_2_6_31=y CT_BINUTILS_V_2_19_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_CC_LANG_JAVA=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/powerpc64-unknown-linux-gnu/crosstool.config --- a/samples/powerpc64-unknown-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/powerpc64-unknown-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -8,7 +8,7 @@ CT_KERNEL_V_2_6_31=y CT_BINUTILS_V_2_20_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_5_2=y +CT_CC_GCC_V_4_5_2=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_CC_LANG_JAVA=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/s390-ibm-linux-gnu/crosstool.config --- a/samples/s390-ibm-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/s390-ibm-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -6,7 +6,7 @@ CT_KERNEL_linux=y CT_KERNEL_V_2_6_31=y CT_BINUTILS_V_2_20_1a=y -CT_CC_V_4_3_4=y +CT_CC_GCC_V_4_3_4=y CT_CC_LANG_CXX=y CT_LIBC_glibc=y CT_LIBC_GLIBC_V_2_9=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/s390x-ibm-linux-gnu/crosstool.config --- a/samples/s390x-ibm-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/s390x-ibm-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -8,7 +8,7 @@ CT_KERNEL_linux=y CT_KERNEL_V_2_6_31=y CT_BINUTILS_V_2_19_1a=y -CT_CC_V_4_4_5=y +CT_CC_GCC_V_4_4_5=y CT_CC_LANG_CXX=y CT_LIBC_glibc=y CT_LIBC_GLIBC_V_2_9=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/sh4-unknown-linux-gnu/crosstool.config --- a/samples/sh4-unknown-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/sh4-unknown-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -7,7 +7,7 @@ CT_KERNEL_linux=y CT_KERNEL_V_2_6_27=y CT_BINUTILS_V_2_19_1a=y -CT_CC_V_4_3_2=y +CT_CC_GCC_V_4_3_2=y CT_CC_LANG_CXX=y CT_LIBC_glibc=y CT_LIBC_GLIBC_V_2_9=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/x86_64-unknown-linux-gnu/crosstool.config --- a/samples/x86_64-unknown-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/x86_64-unknown-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -7,7 +7,7 @@ CT_KERNEL_V_2_6_33=y CT_BINUTILS_V_2_20_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_4_3=y +CT_CC_GCC_V_4_4_3=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_CC_LANG_JAVA=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/x86_64-unknown-linux-uclibc/crosstool.config --- a/samples/x86_64-unknown-linux-uclibc/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/x86_64-unknown-linux-uclibc/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -7,7 +7,7 @@ CT_KERNEL_V_2_6_33=y CT_BINUTILS_V_2_20_1a=y CT_BINUTILS_FOR_TARGET=y -CT_CC_V_4_4_3=y +CT_CC_GCC_V_4_4_3=y CT_CC_LANG_FORTRAN=y CT_CC_LANG_CXX=y CT_CC_LANG_JAVA=y diff -r 7e569a9cb5fd -r 65771b86df01 samples/x86_64-unknown-mingw32/crosstool.config --- a/samples/x86_64-unknown-mingw32/crosstool.config Sat Nov 16 18:14:45 2013 +0100 +++ b/samples/x86_64-unknown-mingw32/crosstool.config Mon Dec 02 21:51:09 2013 +0100 @@ -7,7 +7,7 @@ CT_KERNEL_windows=y CT_BINUTILS_V_2_21_1a=y CT_BINUTILS_PLUGINS=y -CT_CC_V_4_5_2=y +CT_CC_GCC_V_4_5_2=y CT_CC_LANG_CXX=y CT_MINGW_DIRECTX=y CT_MINGW_DDK=y diff -r 7e569a9cb5fd -r 65771b86df01 scripts/build/cc.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/build/cc.sh Mon Dec 02 21:51:09 2013 +0100 @@ -0,0 +1,59 @@ +# Wrapper to build the companion tools facilities + +# List all companion tools facilities, and parse their scripts +CT_CC_FACILITY_LIST= +for f in "${CT_LIB_DIR}/scripts/build/cc/"*.sh; do + _f="$(basename "${f}" .sh)" + _f="${_f#???-}" + __f="CT_CC_${_f}" + if [ "${!__f}" = "y" ]; then + CT_DoLog DEBUG "Enabling cc '${_f}'" + . "${f}" + CT_CC_FACILITY_LIST="${CT_CC_FACILITY_LIST} ${_f}" + else + CT_DoLog DEBUG "Disabling cc '${_f}'" + fi +done + +# Download the cc facilities +do_cc_get() { + for f in ${CT_CC_FACILITY_LIST}; do + do_${f}_get + done +} + +# Extract and patch the cc facilities +do_cc_extract() { + for f in ${CT_CC_FACILITY_LIST}; do + do_${f}_extract + done +} + +# Core pass 1 the cc facilities +do_cc_core_pass_1() { + for f in ${CT_CC_FACILITY_LIST}; do + do_${f}_core_pass_1 + done +} + +# Core pass 2 the cc facilities +do_cc_core_pass_2() { + for f in ${CT_CC_FACILITY_LIST}; do + do_${f}_core_pass_2 + done +} + +# Build for build the cc facilities +do_cc_for_build() { + for f in ${CT_CC_FACILITY_LIST}; do + do_${f}_for_build + done +} + +# Build for host the cc facilities +do_cc_for_host() { + for f in ${CT_CC_FACILITY_LIST}; do + do_${f}_for_host + done +} + diff -r 7e569a9cb5fd -r 65771b86df01 scripts/build/cc/100-gcc.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/build/cc/100-gcc.sh Mon Dec 02 21:51:09 2013 +0100 @@ -0,0 +1,874 @@ +# 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 + +# Download gcc +do_gcc_get() { + local linaro_version + local linaro_series + local linaro_base_url="http://launchpad.net/gcc-linaro" + + if [ "${CT_CC_GCC_CUSTOM}" = "y" ]; then + CT_GetCustom "gcc" "${CT_CC_GCC_VERSION}" "${CT_CC_GCC_CUSTOM_LOCATION}" + else + # Account for the Linaro versioning + linaro_version="$( echo "${CT_CC_GCC_VERSION}" \ + |sed -r -e 's/^linaro-//;' \ + )" + linaro_series="$( echo "${linaro_version}" \ + |sed -r -e 's/-.*//;' \ + )" + + # Ah! gcc folks are kind of 'different': they store the tarballs in + # subdirectories of the same name! + # 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! + CT_GetFile "gcc-${CT_CC_GCC_VERSION}" \ + {ftp,http}://ftp.gnu.org/gnu/gcc{,{,/releases}/gcc-${CT_CC_GCC_VERSION}} \ + ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-${CT_CC_GCC_VERSION} \ + ftp://ftp.uvsq.fr/pub/gcc/snapshots/${CT_CC_GCC_VERSION} \ + "${linaro_base_url}/${linaro_series}/${linaro_version}/+download" + fi # ! custom location + # Starting with GCC 4.3, ecj is used for Java, and will only be + # built if the configure script finds ecj.jar at the top of the + # GCC source tree, which will not be there unless we get it and + # put it there ourselves + if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y" ]; then + CT_GetFile ecj-latest .jar ftp://gcc.gnu.org/pub/java \ + ftp://sourceware.org/pub/java + fi +} + +# Extract gcc +do_gcc_extract() { + # If using custom directory location, nothing to do + if [ "${CT_CC_GCC_CUSTOM}" = "y" \ + -a -d "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}" ]; then + return 0 + fi + + CT_Extract "gcc-${CT_CC_GCC_VERSION}" + CT_Patch "gcc" "${CT_CC_GCC_VERSION}" + + # Copy ecj-latest.jar to ecj.jar at the top of the GCC source tree + if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y" \ + -a ! -f "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/ecj.jar" \ + ]; then + CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/ecj-latest.jar" "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/ecj.jar" + fi +} + +#------------------------------------------------------------------------------ +# This function builds up the set of languages to enable +# No argument expected, returns the comma-separated language list on stdout +cc_gcc_lang_list() { + local lang_list + + lang_list="c" + [ "${CT_CC_LANG_CXX}" = "y" ] && lang_list+=",c++" + [ "${CT_CC_LANG_FORTRAN}" = "y" ] && lang_list+=",fortran" + [ "${CT_CC_LANG_ADA}" = "y" ] && lang_list+=",ada" + [ "${CT_CC_LANG_JAVA}" = "y" ] && lang_list+=",java" + [ "${CT_CC_LANG_OBJC}" = "y" ] && lang_list+=",objc" + [ "${CT_CC_LANG_OBJCXX}" = "y" ] && lang_list+=",obj-c++" + [ "${CT_CC_LANG_GOLANG}" = "y" ] && lang_list+=",go" + lang_list+="${CT_CC_LANG_OTHERS:+,${CT_CC_LANG_OTHERS}}" + + printf "%s" "${lang_list}" +} + +#------------------------------------------------------------------------------ +# Core gcc pass 1 +do_gcc_core_pass_1() { + local -a core_opts + + if [ "${CT_CC_CORE_PASSES_NEEDED}" != "y" ]; then + return 0 + fi + + core_opts+=( "mode=static" ) + core_opts+=( "host=${CT_BUILD}" ) + core_opts+=( "complibs=${CT_BUILDTOOLS_PREFIX_DIR}" ) + core_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" ) + core_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" ) + core_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" ) + core_opts+=( "lang_list=c" ) + + CT_DoStep INFO "Installing pass-1 core C gcc compiler" + CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-core-pass-1" + + do_gcc_core_backend "${core_opts[@]}" + + CT_Popd + CT_EndStep +} + +# Core gcc pass 2 +do_gcc_core_pass_2() { + local -a core_opts + + if [ "${CT_CC_CORE_PASSES_NEEDED}" != "y" ]; then + return 0 + fi + + # Common options: + core_opts+=( "host=${CT_BUILD}" ) + core_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" ) + core_opts+=( "complibs=${CT_BUILDTOOLS_PREFIX_DIR}" ) + core_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" ) + core_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" ) + core_opts+=( "lang_list=c" ) + + # Different conditions are at stake here: + # - In case the threading model is NPTL, we need a shared-capable core + # gcc; in all other cases, we need a static-only core gcc. + # - In case the threading model is NPTL or win32, or gcc is 4.3 or + # later, we need to build libgcc + case "${CT_THREADS}" in + nptl) + core_opts+=( "mode=shared" ) + core_opts+=( "build_libgcc=yes" ) + ;; + win32) + core_opts+=( "mode=static" ) + core_opts+=( "build_libgcc=yes" ) + ;; + *) + core_opts+=( "mode=static" ) + if [ "${CT_CC_GCC_4_3_or_later}" = "y" ]; then + core_opts+=( "build_libgcc=yes" ) + fi + ;; + esac + + CT_DoStep INFO "Installing pass-2 core C gcc compiler" + CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-core-pass-2" + + do_gcc_core_backend "${core_opts[@]}" + + CT_Popd + CT_EndStep +} + +#------------------------------------------------------------------------------ +# Build core gcc +# This function is used to build the core C compiler. +# Usage: do_gcc_core_backend param=value [...] +# Parameter : Definition : Type : Default +# mode : build a 'static', 'shared' or 'baremetal' : string : (none) +# host : the machine the core will run on : tuple : (none) +# prefix : dir prefix to install into : dir : (none) +# complibs : dir where complibs are isntalled : dir : (none) +# lang_list : the list of languages to build : string : (empty) +# build_libgcc : build libgcc or not : bool : no +# build_libstdcxx : build libstdc++ or not : bool : no +# build_staticlinked : build statically linked or not : bool : no +# build_manuals : whether to build manuals or not : bool : no +# cflags : cflags to use : string : (empty) +# ldflags : ldflags to use : string : (empty) +# Usage: do_gcc_core_backend mode=[static|shared|baremetal] build_libgcc=[yes|no] build_staticlinked=[yes|no] +do_gcc_core_backend() { + local mode + local build_libgcc=no + local build_libstdcxx=no + local build_staticlinked=no + local build_manuals=no + local host + local prefix + local complibs + local lang_list + local cflags + local ldflags + local tmp + local -a host_libstdcxx_flags + local -a extra_config + local -a core_LDFLAGS + local -a core_targets + local arg + local exeext + + for arg in "$@"; do + eval "${arg// /\\ }" + done + + CT_DoLog EXTRA "Configuring core C gcc compiler" + + case "${mode}" in + static) + extra_config+=("--with-newlib") + extra_config+=("--enable-threads=no") + extra_config+=("--disable-shared") + copy_headers=y # For baremetal, as there's no headers to copy, + # we copy an empty directory. So, who cares? + ;; + shared) + extra_config+=("--enable-shared") + copy_headers=y + ;; + baremetal) + extra_config+=("--with-newlib") + extra_config+=("--enable-threads=no") + extra_config+=("--disable-shared") + copy_headers=n + ;; + *) + CT_Abort "Internal Error: 'mode' must be one of: 'static', 'shared' or 'baremetal', not '${mode:-(empty)}'" + ;; + esac + + if [ "${CT_CC_GCC_HAS_PKGVERSION_BUGURL}" = "y" ]; then + # Bare metal delivers the core compiler as final compiler, so add version info and bugurl + extra_config+=("--with-pkgversion=${CT_PKGVERSION}") + [ -n "${CT_TOOLCHAIN_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_TOOLCHAIN_BUGURL}") + fi + + if [ "${copy_headers}" = "y" ]; then + CT_DoLog DEBUG "Copying headers to install area of bootstrap gcc, so it can build libgcc2" + CT_DoExecLog ALL cp -a "${CT_HEADERS_DIR}" "${prefix}/${CT_TARGET}/include" + fi + + for tmp in ARCH ABI CPU TUNE FPU FLOAT; do + eval tmp="\${CT_ARCH_WITH_${tmp}}" + if [ -n "${tmp}" ]; then + extra_config+=("${tmp}") + fi + done + if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then + extra_config+=("--enable-__cxa_atexit") + else + extra_config+=("--disable-__cxa_atexit") + fi + + core_LDFLAGS+=("${ldflags}") + + # *** WARNING ! *** + # Keep this full if-else-if-elif-fi-fi block in sync + # with the same block in do_gcc, below. + if [ "${build_staticlinked}" = "yes" ]; then + core_LDFLAGS+=("-static") + host_libstdcxx_flags+=("-static-libgcc") + host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++") + host_libstdcxx_flags+=("-lm") + # Companion libraries are build static (eg !shared), so + # the libstdc++ is not pulled automatically, although it + # is needed. Shoe-horn it in our LDFLAGS + # Ditto libm on some Fedora boxen + core_LDFLAGS+=("-lstdc++") + core_LDFLAGS+=("-lm") + else + if [ "${CT_CC_GCC_STATIC_LIBSTDCXX}" = "y" ]; then + # this is from CodeSourcery arm-2010q1-202-arm-none-linux-gnueabi.src.tar.bz2 + # build script + # INFO: if the host gcc is gcc-4.5 then presumably we could use -static-libstdc++, + # see http://gcc.gnu.org/ml/gcc-patches/2009-06/msg01635.html + host_libstdcxx_flags+=("-static-libgcc") + host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++,-Bdynamic") + host_libstdcxx_flags+=("-lm") + elif [ "${CT_COMPLIBS_SHARED}" != "y" ]; then + # When companion libraries are build static (eg !shared), + # the libstdc++ is not pulled automatically, although it + # is needed. Shoe-horn it in our LDFLAGS + # Ditto libm on some Fedora boxen + core_LDFLAGS+=("-lstdc++") + core_LDFLAGS+=("-lm") + fi + fi + + if [ "${CT_CC_GCC_USE_GMP_MPFR}" = "y" ]; then + extra_config+=("--with-gmp=${complibs}") + extra_config+=("--with-mpfr=${complibs}") + fi + if [ "${CT_CC_GCC_USE_MPC}" = "y" ]; then + extra_config+=("--with-mpc=${complibs}") + fi + if [ "${CT_CC_GCC_USE_GRAPHITE}" = "y" ]; then + if [ "${CT_PPL}" = "y" ]; then + extra_config+=("--with-ppl=${complibs}") + # With PPL 0.11+, also pull libpwl if needed + if [ "${CT_PPL_NEEDS_LIBPWL}" = "y" ]; then + host_libstdcxx_flags+=("-L${complibs}/lib") + host_libstdcxx_flags+=("-lpwl") + fi + fi + if [ "${CT_ISL}" = "y" ]; then + extra_config+=("--with-isl=${complibs}") + fi + extra_config+=("--with-cloog=${complibs}") + elif [ "${CT_CC_GCC_HAS_GRAPHITE}" = "y" ]; then + extra_config+=("--with-ppl=no") + extra_config+=("--with-isl=no") + extra_config+=("--with-cloog=no") + fi + if [ "${CT_CC_GCC_USE_LTO}" = "y" ]; then + extra_config+=("--with-libelf=${complibs}") + extra_config+=("--enable-lto") + elif [ "${CT_CC_GCC_HAS_LTO}" = "y" ]; then + extra_config+=("--with-libelf=no") + extra_config+=("--disable-lto") + fi + + if [ ${#host_libstdcxx_flags[@]} -ne 0 ]; then + extra_config+=("--with-host-libstdcxx=${host_libstdcxx_flags[*]}") + fi + + if [ "${CT_CC_GCC_ENABLE_TARGET_OPTSPACE}" = "y" ]; then + extra_config+=("--enable-target-optspace") + fi + + case "${CT_CC_GCC_LDBL_128}" in + y) extra_config+=("--with-long-double-128");; + m) ;; + "") extra_config+=("--without-long-double-128");; + esac + + if [ "${CT_CC_GCC_BUILD_ID}" = "y" ]; then + extra_config+=( --enable-linker-build-id ) + fi + + case "${CT_CC_GCC_LNK_HASH_STYLE}" in + "") ;; + *) extra_config+=( "--with-linker-hash-style=${CT_CC_GCC_LNK_HASH_STYLE}" );; + esac + + case "${CT_ARCH}" in + mips) + case "${CT_CC_GCC_mips_llsc}" in + y) extra_config+=( --with-llsc );; + m) ;; + *) extra_config+=( --without-llsc );; + esac + case "${CT_CC_GCC_mips_synci}" in + y) extra_config+=( --with-synci );; + m) ;; + *) extra_config+=( --without-synci );; + esac + if [ "${CT_CC_GCC_mips_plt}" ]; then + extra_config+=( --with-mips-plt ) + fi + ;; # ARCH is mips + esac + + extra_config+=(--disable-libgomp) + extra_config+=(--disable-libmudflap) + + [ "${CT_TOOLCHAIN_ENABLE_NLS}" != "y" ] && extra_config+=("--disable-nls") + + [ "${CT_CC_GCC_DISABLE_PCH}" = "y" ] && extra_config+=("--disable-libstdcxx-pch") + + if [ "${CT_CC_GCC_SYSTEM_ZLIB}" = "y" ]; then + extra_config+=("--with-system-zlib") + fi + + if [ "${CT_MULTILIB}" = "y" ]; then + extra_config+=("--enable-multilib") + else + extra_config+=("--disable-multilib") + fi + + 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) + CT_DoExecLog CFG \ + CC_FOR_BUILD="${CT_BUILD}-gcc" \ + CFLAGS_FOR_BUILD="${CT_EXTRA_CFLAGS_FOR_BUILD-${cflags}}" \ + CFLAGS="${cflags}" \ + CXXFLAGS="${cflags}" \ + LDFLAGS="${core_LDFLAGS[*]}" \ + "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/configure" \ + --build=${CT_BUILD} \ + --host=${host} \ + --target=${CT_TARGET} \ + --prefix="${prefix}" \ + --with-local-prefix="${CT_SYSROOT_DIR}" \ + --disable-libmudflap \ + ${CC_CORE_SYSROOT_ARG} \ + "${extra_config[@]}" \ + --enable-languages="${lang_list}" \ + "${CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY[@]}" + + if [ "${build_libgcc}" = "yes" ]; then + # 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}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ]; then + CT_DoExecLog CFG make ${JOBSFLAGS} configure-libiberty + CT_DoExecLog ALL make ${JOBSFLAGS} -C libiberty libiberty.a + CT_DoExecLog CFG make ${JOBSFLAGS} configure-gcc configure-libcpp + CT_DoExecLog ALL make ${JOBSFLAGS} all-libcpp + else + CT_DoExecLog CFG make ${JOBSFLAGS} configure-gcc configure-libcpp configure-build-libiberty + CT_DoExecLog ALL make ${JOBSFLAGS} all-libcpp all-build-libiberty + fi + # HACK: gcc-4.2 uses libdecnumber to build libgcc.mk, so build it here. + if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/libdecnumber" ]; then + CT_DoExecLog CFG make ${JOBSFLAGS} configure-libdecnumber + CT_DoExecLog ALL make ${JOBSFLAGS} -C libdecnumber libdecnumber.a + fi + # HACK: gcc-4.8 uses libbacktrace to make libgcc.mvars, so make it here. + if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/libbacktrace" ]; then + CT_DoExecLog CFG make ${JOBSFLAGS} configure-libbacktrace + CT_DoExecLog ALL make ${JOBSFLAGS} -C libbacktrace + fi + + # Starting with GCC 4.3, libgcc.mk is no longer built, + # and libgcc.mvars is used instead. + + if [ "${CT_CC_GCC_4_3_or_later}" = "y" ]; then + libgcc_rule="libgcc.mvars" + core_targets=( gcc target-libgcc ) + else + libgcc_rule="libgcc.mk" + core_targets=( gcc ) + fi + + # On bare metal and canadian build the host-compiler is used when + # actually the build-system compiler is required. Choose the correct + # compilers for canadian build and use the defaults on other + # configurations. + if [ "${CT_BARE_METAL},${CT_CANADIAN}" = "y,y" ]; then + repair_cc="CC_FOR_BUILD=${CT_BUILD}-gcc \ + CXX_FOR_BUILD=${CT_BUILD}-g++ \ + GCC_FOR_TARGET=${CT_TARGET}-gcc" + else + repair_cc="" + fi + + CT_DoExecLog ALL make ${JOBSFLAGS} -C gcc ${libgcc_rule} \ + ${repair_cc} + sed -r -i -e 's@-lc@@g' gcc/${libgcc_rule} + else # build_libgcc + core_targets=( gcc ) + fi # ! build libgcc + if [ "${build_libstdcxx}" = "yes" \ + -a "${CT_CC_LANG_CXX}" = "y" \ + ]; then + core_targets+=( target-libstdc++-v3 ) + fi + + CT_DoLog EXTRA "Building core C gcc compiler" + CT_DoExecLog ALL make ${JOBSFLAGS} "${core_targets[@]/#/all-}" + + CT_DoLog EXTRA "Installing core C gcc compiler" + CT_DoExecLog ALL make ${JOBSFLAGS} "${core_targets[@]/#/install-}" + + if [ "${build_manuals}" = "yes" ]; then + CT_DoLog EXTRA "Building the gcc manuals" + CT_DoExecLog ALL make pdf html + CT_DoLog EXTRA "Installing the gcc manuals" + CT_DoExecLog ALL make install-{pdf,html}-gcc + fi + + # Create a symlink ${CT_TARGET}-cc to ${CT_TARGET}-gcc to always be able + # to call the C compiler with the same, somewhat canonical name. + # check whether compiler has an extension + file="$( ls -1 "${prefix}/bin/${CT_TARGET}-gcc."* 2>/dev/null || true )" + [ -z "${file}" ] || ext=".${file##*.}" + CT_DoExecLog ALL ln -sfv "${CT_TARGET}-gcc${ext}" "${prefix}/bin/${CT_TARGET}-cc${ext}" + + if [ "${CT_MULTILIB}" = "y" ]; then + if [ "${CT_CANADIAN}" = "y" -a "${mode}" = "baremetal" \ + -a "${host}" = "${CT_HOST}" ]; then + CT_DoLog WARN "Canadian Cross unable to confirm multilibs configured correctly" + else + multilibs=( $( "${prefix}/bin/${CT_TARGET}-gcc" -print-multi-lib \ + |tail -n +2 ) ) + if [ ${#multilibs[@]} -ne 0 ]; then + CT_DoLog EXTRA "gcc configured with these multilibs (besides the default):" + for i in "${multilibs[@]}"; do + dir="${i%%;*}" + flags="${i#*;}" + CT_DoLog EXTRA " ${flags//@/ -} --> ${dir}/" + done + else + CT_DoLog WARN "gcc configured for multilib, but none available" + fi + fi + fi +} + +#------------------------------------------------------------------------------ +# Build complete gcc to run on build +do_gcc_for_build() { + local -a build_final_opts + local build_final_backend + + # In case we're canadian or cross-native, it seems that a + # real, complete compiler is needed?!? WTF? Sigh... + # Otherwise, there is nothing to do. + case "${CT_TOOLCHAIN_TYPE}" in + native|cross) return 0;; + esac + + build_final_opts+=( "host=${CT_BUILD}" ) + build_final_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" ) + build_final_opts+=( "complibs=${CT_BUILDTOOLS_PREFIX_DIR}" ) + build_final_opts+=( "lang_list=$( cc_gcc_lang_list )" ) + if [ "${CT_BARE_METAL}" = "y" ]; then + # In the tests I've done, bare-metal was not impacted by the + # lack of such a compiler, but better safe than sorry... + build_final_opts+=( "mode=baremetal" ) + build_final_opts+=( "build_libgcc=yes" ) + build_final_opts+=( "build_libstdcxx=yes" ) + if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then + build_final_opts+=( "build_staticlinked=yes" ) + fi + build_final_backend=do_gcc_core_backend + else + build_final_backend=do_gcc_backend + fi + + CT_DoStep INFO "Installing final gcc compiler for build" + CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-final-build-${CT_BUILD}" + + "${build_final_backend}" "${build_final_opts[@]}" + + CT_Popd + CT_EndStep +} + +#------------------------------------------------------------------------------ +# Build final gcc to run on host +do_gcc_for_host() { + local -a final_opts + local final_backend + + final_opts+=( "host=${CT_HOST}" ) + final_opts+=( "prefix=${CT_PREFIX_DIR}" ) + final_opts+=( "complibs=${CT_HOST_COMPLIBS_DIR}" ) + final_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" ) + final_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" ) + final_opts+=( "lang_list=$( cc_gcc_lang_list )" ) + if [ "${CT_BUILD_MANUALS}" = "y" ]; then + final_opts+=( "build_manuals=yes" ) + fi + if [ "${CT_BARE_METAL}" = "y" ]; then + final_opts+=( "mode=baremetal" ) + final_opts+=( "build_libgcc=yes" ) + final_opts+=( "build_libstdcxx=yes" ) + if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then + final_opts+=( "build_staticlinked=yes" ) + fi + final_backend=do_gcc_core_backend + else + final_backend=do_gcc_backend + fi + + CT_DoStep INFO "Installing final gcc compiler" + CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-final" + + "${final_backend}" "${final_opts[@]}" + + CT_Popd + CT_EndStep +} + +#------------------------------------------------------------------------------ +# Build the final gcc +# Usage: do_gcc_backend param=value [...] +# Parameter : Definition : Type : Default +# host : the host we run onto : tuple : (none) +# prefix : the runtime prefix : dir : (none) +# complibs : the companion libraries prefix : dir : (none) +# cflags : cflags to use : string : (empty) +# ldflags : ldflags to use : string : (empty) +# lang_list : the list of languages to build : string : (empty) +# build_manuals : whether to build manuals or not : bool : no +do_gcc_backend() { + local host + local prefix + local complibs + local cflags + local ldflags + local lang_list + local build_manuals + local -a host_libstdcxx_flags + local -a extra_config + local -a final_LDFLAGS + local tmp + local arg + local exeext + + for arg in "$@"; do + eval "${arg// /\\ }" + done + + CT_DoLog EXTRA "Configuring final gcc compiler" + + # Enable selected languages + extra_config+=("--enable-languages=${lang_list}") + + for tmp in ARCH ABI CPU TUNE FPU FLOAT; do + eval tmp="\${CT_ARCH_WITH_${tmp}}" + if [ -n "${tmp}" ]; then + extra_config+=("${tmp}") + fi + done + + [ "${CT_SHARED_LIBS}" = "y" ] || extra_config+=("--disable-shared") + if [ "${CT_CC_GCC_HAS_PKGVERSION_BUGURL}" = "y" ]; then + extra_config+=("--with-pkgversion=${CT_PKGVERSION}") + [ -n "${CT_TOOLCHAIN_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_TOOLCHAIN_BUGURL}") + fi + case "${CT_CC_GCC_SJLJ_EXCEPTIONS}" in + y) extra_config+=("--enable-sjlj-exceptions");; + m) ;; + "") extra_config+=("--disable-sjlj-exceptions");; + esac + if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then + extra_config+=("--enable-__cxa_atexit") + else + extra_config+=("--disable-__cxa_atexit") + fi + if [ -n "${CT_CC_GCC_ENABLE_CXX_FLAGS}" ]; then + extra_config+=("--enable-cxx-flags=${CT_CC_GCC_ENABLE_CXX_FLAGS}") + fi + if [ "${CT_CC_GCC_LIBMUDFLAP}" = "y" ]; then + extra_config+=(--enable-libmudflap) + else + extra_config+=(--disable-libmudflap) + fi + if [ "${CT_CC_GCC_LIBGOMP}" = "y" ]; then + extra_config+=(--enable-libgomp) + else + extra_config+=(--disable-libgomp) + fi + if [ "${CT_CC_GCC_LIBSSP}" = "y" ]; then + extra_config+=(--enable-libssp) + else + extra_config+=(--disable-libssp) + fi + if [ "${CT_CC_GCC_HAS_LIBQUADMATH}" = "y" ]; then + if [ "${CT_CC_GCC_LIBQUADMATH}" = "y" ]; then + extra_config+=(--enable-libquadmath) + extra_config+=(--enable-libquadmath-support) + else + extra_config+=(--disable-libquadmath) + extra_config+=(--disable-libquadmath-support) + fi + fi + + final_LDFLAGS+=("${ldflags}") + + # *** WARNING ! *** + # Keep this full if-else-if-elif-fi-fi block in sync + # with the same block in do_gcc_core, above. + if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then + final_LDFLAGS+=("-static") + host_libstdcxx_flags+=("-static-libgcc") + host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++") + host_libstdcxx_flags+=("-lm") + # Companion libraries are build static (eg !shared), so + # the libstdc++ is not pulled automatically, although it + # is needed. Shoe-horn it in our LDFLAGS + # Ditto libm on some Fedora boxen + final_LDFLAGS+=("-lstdc++") + final_LDFLAGS+=("-lm") + else + if [ "${CT_CC_GCC_STATIC_LIBSTDCXX}" = "y" ]; then + # this is from CodeSourcery arm-2010q1-202-arm-none-linux-gnueabi.src.tar.bz2 + # build script + # INFO: if the host gcc is gcc-4.5 then presumably we could use -static-libstdc++, + # see http://gcc.gnu.org/ml/gcc-patches/2009-06/msg01635.html + host_libstdcxx_flags+=("-static-libgcc") + host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++,-Bdynamic") + host_libstdcxx_flags+=("-lm") + elif [ "${CT_COMPLIBS_SHARED}" != "y" ]; then + # When companion libraries are build static (eg !shared), + # the libstdc++ is not pulled automatically, although it + # is needed. Shoe-horn it in our LDFLAGS + # Ditto libm on some Fedora boxen + final_LDFLAGS+=("-lstdc++") + final_LDFLAGS+=("-lm") + fi + fi + + if [ "${CT_CC_GCC_USE_GMP_MPFR}" = "y" ]; then + extra_config+=("--with-gmp=${complibs}") + extra_config+=("--with-mpfr=${complibs}") + fi + if [ "${CT_CC_GCC_USE_MPC}" = "y" ]; then + extra_config+=("--with-mpc=${complibs}") + fi + if [ "${CT_CC_GCC_USE_GRAPHITE}" = "y" ]; then + if [ "${CT_PPL}" = "y" ]; then + extra_config+=("--with-ppl=${complibs}") + # With PPL 0.11+, also pull libpwl if needed + if [ "${CT_PPL_NEEDS_LIBPWL}" = "y" ]; then + host_libstdcxx_flags+=("-L${complibs}/lib") + host_libstdcxx_flags+=("-lpwl") + fi + fi + if [ "${CT_ISL}" = "y" ]; then + extra_config+=("--with-isl=${complibs}") + fi + extra_config+=("--with-cloog=${complibs}") + elif [ "${CT_CC_GCC_HAS_GRAPHITE}" = "y" ]; then + extra_config+=("--with-ppl=no") + extra_config+=("--with-isl=no") + extra_config+=("--with-cloog=no") + fi + if [ "${CT_CC_GCC_USE_LTO}" = "y" ]; then + extra_config+=("--with-libelf=${complibs}") + elif [ "${CT_CC_GCC_HAS_LTO}" = "y" ]; then + extra_config+=("--with-libelf=no") + fi + + if [ ${#host_libstdcxx_flags[@]} -ne 0 ]; then + extra_config+=("--with-host-libstdcxx=${host_libstdcxx_flags[*]}") + fi + + if [ "${CT_THREADS}" = "none" ]; then + extra_config+=("--disable-threads") + if [ "${CT_CC_GCC_4_2_or_later}" = y ]; then + CT_Test "Disabling libgomp for no-thread gcc>=4.2" "${CT_CC_GCC_LIBGOMP}" = "Y" + extra_config+=("--disable-libgomp") + fi + else + if [ "${CT_THREADS}" = "win32" ]; then + extra_config+=("--enable-threads=win32") + extra_config+=("--disable-win32-registry") + else + extra_config+=("--enable-threads=posix") + fi + fi + + if [ "${CT_CC_GCC_ENABLE_TARGET_OPTSPACE}" = "y" ]; then + extra_config+=("--enable-target-optspace") + fi + if [ "${CT_CC_GCC_DISABLE_PCH}" = "y" ]; then + extra_config+=("--disable-libstdcxx-pch") + fi + + case "${CT_CC_GCC_LDBL_128}" in + y) extra_config+=("--with-long-double-128");; + m) ;; + "") extra_config+=("--without-long-double-128");; + esac + + if [ "${CT_CC_GCC_BUILD_ID}" = "y" ]; then + extra_config+=( --enable-linker-build-id ) + fi + + case "${CT_CC_GCC_LNK_HASH_STYLE}" in + "") ;; + *) extra_config+=( "--with-linker-hash-style=${CT_CC_GCC_LNK_HASH_STYLE}" );; + esac + + if [ "${CT_CC_GCC_ENABLE_PLUGINS}" = "y" ]; then + extra_config+=( --enable-plugin ) + fi + if [ "${CT_CC_GCC_GOLD}" = "y" ]; then + extra_config+=( --enable-gold ) + fi + + case "${CT_ARCH}" in + mips) + case "${CT_CC_GCC_mips_llsc}" in + y) extra_config+=( --with-llsc );; + m) ;; + *) extra_config+=( --without-llsc );; + esac + case "${CT_CC_GCC_mips_synci}" in + y) extra_config+=( --with-synci );; + m) ;; + *) extra_config+=( --without-synci );; + esac + if [ "${CT_CC_GCC_mips_plt}" ]; then + extra_config+=( --with-mips-plt ) + fi + ;; # ARCH is mips + esac + + [ "${CT_TOOLCHAIN_ENABLE_NLS}" != "y" ] && extra_config+=("--disable-nls") + + if [ "${CT_CC_GCC_SYSTEM_ZLIB}" = "y" ]; then + extra_config+=("--with-system-zlib") + fi + + if [ "${CT_MULTILIB}" = "y" ]; then + extra_config+=("--enable-multilib") + else + extra_config+=("--disable-multilib") + fi + + CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'" + + CT_DoExecLog CFG \ + CC_FOR_BUILD="${CT_BUILD}-gcc" \ + CFLAGS_FOR_BUILD="${CT_EXTRA_CFLAGS_FOR_BUILD-${cflags}}" \ + CFLAGS="${cflags}" \ + CXXFLAGS="${cflags}" \ + LDFLAGS="${final_LDFLAGS[*]}" \ + CFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \ + CXXFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \ + LDFLAGS_FOR_TARGET="${CT_TARGET_LDFLAGS}" \ + "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/configure" \ + --build=${CT_BUILD} \ + --host=${host} \ + --target=${CT_TARGET} \ + --prefix="${prefix}" \ + ${CC_SYSROOT_ARG} \ + "${extra_config[@]}" \ + --with-local-prefix="${CT_SYSROOT_DIR}" \ + --enable-c99 \ + --enable-long-long \ + "${CT_CC_GCC_EXTRA_CONFIG_ARRAY[@]}" + + if [ "${CT_CANADIAN}" = "y" ]; then + CT_DoLog EXTRA "Building libiberty" + CT_DoExecLog ALL make ${JOBSFLAGS} all-build-libiberty + fi + + CT_DoLog EXTRA "Building final gcc compiler" + CT_DoExecLog ALL make ${JOBSFLAGS} all + + CT_DoLog EXTRA "Installing final gcc compiler" + CT_DoExecLog ALL make ${JOBSFLAGS} install + + if [ "${build_manuals}" = "yes" ]; then + CT_DoLog EXTRA "Building the gcc manuals" + CT_DoExecLog ALL make pdf html + CT_DoLog EXTRA "Installing the gcc manuals" + CT_DoExecLog ALL make install-{pdf,html}-gcc + fi + + # Create a symlink ${CT_TARGET}-cc to ${CT_TARGET}-gcc to always be able + # to call the C compiler with the same, somewhat canonical name. + # check whether compiler has an extension + file="$( ls -1 "${CT_PREFIX_DIR}/bin/${CT_TARGET}-gcc."* 2>/dev/null || true )" + [ -z "${file}" ] || ext=".${file##*.}" + CT_DoExecLog ALL ln -sfv "${CT_TARGET}-gcc${ext}" "${CT_PREFIX_DIR}/bin/${CT_TARGET}-cc${ext}" + + if [ "${CT_MULTILIB}" = "y" ]; then + if [ "${CT_CANADIAN}" = "y" ]; then + CT_DoLog WARN "Canadian Cross unable to confirm multilibs configured correctly" + else + multilibs=( $( "${prefix}/bin/${CT_TARGET}-gcc" -print-multi-lib \ + |tail -n +2 ) ) + if [ ${#multilibs[@]} -ne 0 ]; then + CT_DoLog EXTRA "gcc configured with these multilibs (besides the default):" + for i in "${multilibs[@]}"; do + dir="${i%%;*}" + flags="${i#*;}" + CT_DoLog EXTRA " ${flags//@/ -} --> ${dir}/" + done + else + CT_DoLog WARN "gcc configured for multilib, but none available" + fi + fi + fi +} diff -r 7e569a9cb5fd -r 65771b86df01 scripts/build/cc/gcc.sh --- a/scripts/build/cc/gcc.sh Sat Nov 16 18:14:45 2013 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,869 +0,0 @@ -# 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 - -# Download gcc -do_cc_get() { - local linaro_version - local linaro_series - local linaro_base_url="http://launchpad.net/gcc-linaro" - - if [ "${CT_CC_CUSTOM}" = "y" ]; then - CT_GetCustom "gcc" "${CT_CC_VERSION}" "${CT_CC_CUSTOM_LOCATION}" - else - # Account for the Linaro versioning - linaro_version="$( echo "${CT_CC_VERSION}" \ - |sed -r -e 's/^linaro-//;' \ - )" - linaro_series="$( echo "${linaro_version}" \ - |sed -r -e 's/-.*//;' \ - )" - - # Ah! gcc folks are kind of 'different': they store the tarballs in - # subdirectories of the same name! - # 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! - CT_GetFile "gcc-${CT_CC_VERSION}" \ - {ftp,http}://ftp.gnu.org/gnu/gcc{,{,/releases}/gcc-${CT_CC_VERSION}} \ - ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-${CT_CC_VERSION} \ - ftp://ftp.uvsq.fr/pub/gcc/snapshots/${CT_CC_VERSION} \ - "${linaro_base_url}/${linaro_series}/${linaro_version}/+download" - - fi # ! custom location - # Starting with GCC 4.3, ecj is used for Java, and will only be - # built if the configure script finds ecj.jar at the top of the - # GCC source tree, which will not be there unless we get it and - # put it there ourselves - if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y" ]; then - CT_GetFile ecj-latest .jar ftp://gcc.gnu.org/pub/java \ - ftp://sourceware.org/pub/java - fi -} - -# Extract gcc -do_cc_extract() { - # If using custom directory location, nothing to do - if [ "${CT_CC_CUSTOM}" = "y" \ - -a -d "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}" ]; then - return 0 - fi - - CT_Extract "gcc-${CT_CC_VERSION}" - CT_Patch "gcc" "${CT_CC_VERSION}" - - # Copy ecj-latest.jar to ecj.jar at the top of the GCC source tree - if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y" \ - -a ! -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar" \ - ]; then - CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/ecj-latest.jar" "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar" - fi -} - -#------------------------------------------------------------------------------ -# This function builds up the set of languages to enable -# No argument expected, returns the comma-separated language list on stdout -cc_gcc_lang_list() { - local lang_list - - lang_list="c" - [ "${CT_CC_LANG_CXX}" = "y" ] && lang_list+=",c++" - [ "${CT_CC_LANG_FORTRAN}" = "y" ] && lang_list+=",fortran" - [ "${CT_CC_LANG_ADA}" = "y" ] && lang_list+=",ada" - [ "${CT_CC_LANG_JAVA}" = "y" ] && lang_list+=",java" - [ "${CT_CC_LANG_OBJC}" = "y" ] && lang_list+=",objc" - [ "${CT_CC_LANG_OBJCXX}" = "y" ] && lang_list+=",obj-c++" - [ "${CT_CC_LANG_GOLANG}" = "y" ] && lang_list+=",go" - lang_list+="${CT_CC_LANG_OTHERS:+,${CT_CC_LANG_OTHERS}}" - - printf "%s" "${lang_list}" -} - -#------------------------------------------------------------------------------ -# Core gcc pass 1 -do_cc_core_pass_1() { - local -a core_opts - - if [ "${CT_CC_CORE_PASSES_NEEDED}" != "y" ]; then - return 0 - fi - - core_opts+=( "mode=static" ) - core_opts+=( "host=${CT_BUILD}" ) - core_opts+=( "complibs=${CT_BUILDTOOLS_PREFIX_DIR}" ) - core_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" ) - core_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" ) - core_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" ) - core_opts+=( "lang_list=c" ) - - CT_DoStep INFO "Installing pass-1 core C compiler" - CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-core-pass-1" - - do_cc_core_backend "${core_opts[@]}" - - CT_Popd - CT_EndStep -} - -# Core gcc pass 2 -do_cc_core_pass_2() { - local -a core_opts - - if [ "${CT_CC_CORE_PASSES_NEEDED}" != "y" ]; then - return 0 - fi - - # Common options: - core_opts+=( "host=${CT_BUILD}" ) - core_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" ) - core_opts+=( "complibs=${CT_BUILDTOOLS_PREFIX_DIR}" ) - core_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" ) - core_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" ) - core_opts+=( "lang_list=c" ) - - # Different conditions are at stake here: - # - In case the threading model is NPTL, we need a shared-capable core - # gcc; in all other cases, we need a static-only core gcc. - # - In case the threading model is NPTL or win32, or gcc is 4.3 or - # later, we need to build libgcc - case "${CT_THREADS}" in - nptl) - core_opts+=( "mode=shared" ) - core_opts+=( "build_libgcc=yes" ) - ;; - win32) - core_opts+=( "mode=static" ) - core_opts+=( "build_libgcc=yes" ) - ;; - *) - core_opts+=( "mode=static" ) - if [ "${CT_CC_GCC_4_3_or_later}" = "y" ]; then - core_opts+=( "build_libgcc=yes" ) - fi - ;; - esac - - CT_DoStep INFO "Installing pass-2 core C compiler" - CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-core-pass-2" - - do_cc_core_backend "${core_opts[@]}" - - CT_Popd - CT_EndStep -} - -#------------------------------------------------------------------------------ -# Build core gcc -# This function is used to build the core C compiler. -# Usage: do_cc_core_backend param=value [...] -# Parameter : Definition : Type : Default -# mode : build a 'static', 'shared' or 'baremetal' : string : (none) -# host : the machine the core will run on : tuple : (none) -# prefix : dir prefix to install into : dir : (none) -# complibs : dir where complibs are isntalled : dir : (none) -# lang_list : the list of languages to build : string : (empty) -# build_libgcc : build libgcc or not : bool : no -# build_libstdcxx : build libstdc++ or not : bool : no -# build_staticlinked : build statically linked or not : bool : no -# build_manuals : whether to build manuals or not : bool : no -# cflags : cflags to use : string : (empty) -# ldflags : ldflags to use : string : (empty) -# Usage: do_cc_core_backend mode=[static|shared|baremetal] build_libgcc=[yes|no] build_staticlinked=[yes|no] -do_cc_core_backend() { - local mode - local build_libgcc=no - local build_libstdcxx=no - local build_staticlinked=no - local build_manuals=no - local host - local prefix - local complibs - local lang_list - local cflags - local ldflags - local tmp - local -a host_libstdcxx_flags - local -a extra_config - local -a core_LDFLAGS - local -a core_targets - local arg - - for arg in "$@"; do - eval "${arg// /\\ }" - done - - CT_DoLog EXTRA "Configuring gcc" - - case "${mode}" in - static) - extra_config+=("--with-newlib") - extra_config+=("--enable-threads=no") - extra_config+=("--disable-shared") - copy_headers=y # For baremetal, as there's no headers to copy, - # we copy an empty directory. So, who cares? - ;; - shared) - extra_config+=("--enable-shared") - copy_headers=y - ;; - baremetal) - extra_config+=("--with-newlib") - extra_config+=("--enable-threads=no") - extra_config+=("--disable-shared") - copy_headers=n - ;; - *) - CT_Abort "Internal Error: 'mode' must be one of: 'static', 'shared' or 'baremetal', not '${mode:-(empty)}'" - ;; - esac - - if [ "${CT_CC_GCC_HAS_PKGVERSION_BUGURL}" = "y" ]; then - # Bare metal delivers the core compiler as final compiler, so add version info and bugurl - extra_config+=("--with-pkgversion=${CT_PKGVERSION}") - [ -n "${CT_TOOLCHAIN_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_TOOLCHAIN_BUGURL}") - fi - - if [ "${copy_headers}" = "y" ]; then - CT_DoLog DEBUG "Copying headers to install area of bootstrap gcc, so it can build libgcc2" - CT_DoExecLog ALL cp -a "${CT_HEADERS_DIR}" "${prefix}/${CT_TARGET}/include" - fi - - for tmp in ARCH ABI CPU TUNE FPU FLOAT; do - eval tmp="\${CT_ARCH_WITH_${tmp}}" - if [ -n "${tmp}" ]; then - extra_config+=("${tmp}") - fi - done - if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then - extra_config+=("--enable-__cxa_atexit") - else - extra_config+=("--disable-__cxa_atexit") - fi - - core_LDFLAGS+=("${ldflags}") - - # *** WARNING ! *** - # Keep this full if-else-if-elif-fi-fi block in sync - # with the same block in do_cc, below. - if [ "${build_staticlinked}" = "yes" ]; then - core_LDFLAGS+=("-static") - host_libstdcxx_flags+=("-static-libgcc") - host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++") - host_libstdcxx_flags+=("-lm") - # Companion libraries are build static (eg !shared), so - # the libstdc++ is not pulled automatically, although it - # is needed. Shoe-horn it in our LDFLAGS - # Ditto libm on some Fedora boxen - core_LDFLAGS+=("-lstdc++") - core_LDFLAGS+=("-lm") - else - if [ "${CT_CC_STATIC_LIBSTDCXX}" = "y" ]; then - # this is from CodeSourcery arm-2010q1-202-arm-none-linux-gnueabi.src.tar.bz2 - # build script - # INFO: if the host gcc is gcc-4.5 then presumably we could use -static-libstdc++, - # see http://gcc.gnu.org/ml/gcc-patches/2009-06/msg01635.html - host_libstdcxx_flags+=("-static-libgcc") - host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++,-Bdynamic") - host_libstdcxx_flags+=("-lm") - elif [ "${CT_COMPLIBS_SHARED}" != "y" ]; then - # When companion libraries are build static (eg !shared), - # the libstdc++ is not pulled automatically, although it - # is needed. Shoe-horn it in our LDFLAGS - # Ditto libm on some Fedora boxen - core_LDFLAGS+=("-lstdc++") - core_LDFLAGS+=("-lm") - fi - fi - - if [ "${CT_CC_GCC_USE_GMP_MPFR}" = "y" ]; then - extra_config+=("--with-gmp=${complibs}") - extra_config+=("--with-mpfr=${complibs}") - fi - if [ "${CT_CC_GCC_USE_MPC}" = "y" ]; then - extra_config+=("--with-mpc=${complibs}") - fi - if [ "${CT_CC_GCC_USE_GRAPHITE}" = "y" ]; then - if [ "${CT_PPL}" = "y" ]; then - extra_config+=("--with-ppl=${complibs}") - # With PPL 0.11+, also pull libpwl if needed - if [ "${CT_PPL_NEEDS_LIBPWL}" = "y" ]; then - host_libstdcxx_flags+=("-L${complibs}/lib") - host_libstdcxx_flags+=("-lpwl") - fi - fi - if [ "${CT_ISL}" = "y" ]; then - extra_config+=("--with-isl=${complibs}") - fi - extra_config+=("--with-cloog=${complibs}") - elif [ "${CT_CC_GCC_HAS_GRAPHITE}" = "y" ]; then - extra_config+=("--with-ppl=no") - extra_config+=("--with-isl=no") - extra_config+=("--with-cloog=no") - fi - if [ "${CT_CC_GCC_USE_LTO}" = "y" ]; then - extra_config+=("--with-libelf=${complibs}") - extra_config+=("--enable-lto") - elif [ "${CT_CC_GCC_HAS_LTO}" = "y" ]; then - extra_config+=("--with-libelf=no") - extra_config+=("--disable-lto") - fi - - if [ ${#host_libstdcxx_flags[@]} -ne 0 ]; then - extra_config+=("--with-host-libstdcxx=${host_libstdcxx_flags[*]}") - fi - - if [ "${CT_CC_GCC_ENABLE_TARGET_OPTSPACE}" = "y" ]; then - extra_config+=("--enable-target-optspace") - fi - - case "${CT_CC_GCC_LDBL_128}" in - y) extra_config+=("--with-long-double-128");; - m) ;; - "") extra_config+=("--without-long-double-128");; - esac - - if [ "${CT_CC_GCC_BUILD_ID}" = "y" ]; then - extra_config+=( --enable-linker-build-id ) - fi - - case "${CT_CC_GCC_LNK_HASH_STYLE}" in - "") ;; - *) extra_config+=( "--with-linker-hash-style=${CT_CC_GCC_LNK_HASH_STYLE}" );; - esac - - case "${CT_ARCH}" in - mips) - case "${CT_CC_GCC_mips_llsc}" in - y) extra_config+=( --with-llsc );; - m) ;; - *) extra_config+=( --without-llsc );; - esac - case "${CT_CC_GCC_mips_synci}" in - y) extra_config+=( --with-synci );; - m) ;; - *) extra_config+=( --without-synci );; - esac - if [ "${CT_CC_GCC_mips_plt}" ]; then - extra_config+=( --with-mips-plt ) - fi - ;; # ARCH is mips - esac - - extra_config+=(--disable-libgomp) - extra_config+=(--disable-libmudflap) - - [ "${CT_TOOLCHAIN_ENABLE_NLS}" != "y" ] && extra_config+=("--disable-nls") - - [ "${CT_CC_GCC_DISABLE_PCH}" = "y" ] && extra_config+=("--disable-libstdcxx-pch") - - if [ "${CT_CC_GCC_SYSTEM_ZLIB}" = "y" ]; then - extra_config+=("--with-system-zlib") - fi - - if [ "${CT_MULTILIB}" = "y" ]; then - extra_config+=("--enable-multilib") - else - extra_config+=("--disable-multilib") - fi - - 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) - CT_DoExecLog CFG \ - CC_FOR_BUILD="${CT_BUILD}-gcc" \ - CFLAGS="${cflags}" \ - LDFLAGS="${core_LDFLAGS[*]}" \ - "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/configure" \ - --build=${CT_BUILD} \ - --host=${host} \ - --target=${CT_TARGET} \ - --prefix="${prefix}" \ - --with-local-prefix="${CT_SYSROOT_DIR}" \ - --disable-libmudflap \ - ${CC_CORE_SYSROOT_ARG} \ - "${extra_config[@]}" \ - --enable-languages="${lang_list}" \ - "${CT_CC_CORE_EXTRA_CONFIG_ARRAY[@]}" - - if [ "${build_libgcc}" = "yes" ]; then - # 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}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then - CT_DoExecLog CFG make ${JOBSFLAGS} configure-libiberty - CT_DoExecLog ALL make ${JOBSFLAGS} -C libiberty libiberty.a - CT_DoExecLog CFG make ${JOBSFLAGS} configure-gcc configure-libcpp - CT_DoExecLog ALL make ${JOBSFLAGS} all-libcpp - else - CT_DoExecLog CFG make ${JOBSFLAGS} configure-gcc configure-libcpp configure-build-libiberty - CT_DoExecLog ALL make ${JOBSFLAGS} all-libcpp all-build-libiberty - fi - # HACK: gcc-4.2 uses libdecnumber to build libgcc.mk, so build it here. - if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/libdecnumber" ]; then - CT_DoExecLog CFG make ${JOBSFLAGS} configure-libdecnumber - CT_DoExecLog ALL make ${JOBSFLAGS} -C libdecnumber libdecnumber.a - fi - # HACK: gcc-4.8 uses libbacktrace to make libgcc.mvars, so make it here. - if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/libbacktrace" ]; then - CT_DoExecLog CFG make ${JOBSFLAGS} configure-libbacktrace - CT_DoExecLog ALL make ${JOBSFLAGS} -C libbacktrace - fi - - # Starting with GCC 4.3, libgcc.mk is no longer built, - # and libgcc.mvars is used instead. - - if [ "${CT_CC_GCC_4_3_or_later}" = "y" ]; then - libgcc_rule="libgcc.mvars" - core_targets=( gcc target-libgcc ) - else - libgcc_rule="libgcc.mk" - core_targets=( gcc ) - fi - - # On bare metal and canadian build the host-compiler is used when - # actually the build-system compiler is required. Choose the correct - # compilers for canadian build and use the defaults on other - # configurations. - if [ "${CT_BARE_METAL},${CT_CANADIAN}" = "y,y" ]; then - repair_cc="CC_FOR_BUILD=${CT_BUILD}-gcc \ - CXX_FOR_BUILD=${CT_BUILD}-g++ \ - GCC_FOR_TARGET=${CT_TARGET}-gcc" - else - repair_cc="" - fi - - CT_DoExecLog ALL make ${JOBSFLAGS} -C gcc ${libgcc_rule} \ - ${repair_cc} - sed -r -i -e 's@-lc@@g' gcc/${libgcc_rule} - else # build_libgcc - core_targets=( gcc ) - fi # ! build libgcc - if [ "${build_libstdcxx}" = "yes" \ - -a "${CT_CC_LANG_CXX}" = "y" \ - ]; then - core_targets+=( target-libstdc++-v3 ) - fi - - CT_DoLog EXTRA "Building gcc" - CT_DoExecLog ALL make ${JOBSFLAGS} "${core_targets[@]/#/all-}" - - CT_DoLog EXTRA "Installing gcc" - CT_DoExecLog ALL make ${JOBSFLAGS} "${core_targets[@]/#/install-}" - - if [ "${build_manuals}" = "yes" ]; then - CT_DoLog EXTRA "Building the GCC manuals" - CT_DoExecLog ALL make pdf html - CT_DoLog EXTRA "Installing the GCC manuals" - CT_DoExecLog ALL make install-{pdf,html}-gcc - fi - - # Create a symlink ${CT_TARGET}-cc to ${CT_TARGET}-gcc to always be able - # to call the C compiler with the same, somewhat canonical name. - # check whether compiler has an extension - file="$( ls -1 "${prefix}/bin/${CT_TARGET}-gcc."* 2>/dev/null || true )" - [ -z "${file}" ] || ext=".${file##*.}" - CT_DoExecLog ALL ln -sfv "${CT_TARGET}-gcc${ext}" "${prefix}/bin/${CT_TARGET}-cc${ext}" - - if [ "${CT_MULTILIB}" = "y" ]; then - if [ "${CT_CANADIAN}" = "y" -a "${mode}" = "baremetal" \ - -a "${host}" = "${CT_HOST}" ]; then - CT_DoLog WARN "Canadian Cross unable to confirm multilibs configured correctly" - else - multilibs=( $( "${prefix}/bin/${CT_TARGET}-gcc" -print-multi-lib \ - |tail -n +2 ) ) - if [ ${#multilibs[@]} -ne 0 ]; then - CT_DoLog EXTRA "gcc configured with these multilibs (besides the default):" - for i in "${multilibs[@]}"; do - dir="${i%%;*}" - flags="${i#*;}" - CT_DoLog EXTRA " ${flags//@/ -} --> ${dir}/" - done - else - CT_DoLog WARN "gcc configured for multilib, but none available" - fi - fi - fi -} - -#------------------------------------------------------------------------------ -# Build complete gcc to run on build -do_cc_for_build() { - local -a build_final_opts - local build_final_backend - - # In case we're canadian or cross-native, it seems that a - # real, complete compiler is needed?!? WTF? Sigh... - # Otherwise, there is nothing to do. - case "${CT_TOOLCHAIN_TYPE}" in - native|cross) return 0;; - esac - - build_final_opts+=( "host=${CT_BUILD}" ) - build_final_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" ) - build_final_opts+=( "complibs=${CT_BUILDTOOLS_PREFIX_DIR}" ) - build_final_opts+=( "lang_list=$( cc_gcc_lang_list )" ) - if [ "${CT_BARE_METAL}" = "y" ]; then - # In the tests I've done, bare-metal was not impacted by the - # lack of such a compiler, but better safe than sorry... - build_final_opts+=( "mode=baremetal" ) - build_final_opts+=( "build_libgcc=yes" ) - build_final_opts+=( "build_libstdcxx=yes" ) - if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then - build_final_opts+=( "build_staticlinked=yes" ) - fi - build_final_backend=do_cc_core_backend - else - build_final_backend=do_cc_backend - fi - - CT_DoStep INFO "Installing final compiler for build" - CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-final-build-${CT_BUILD}" - - "${build_final_backend}" "${build_final_opts[@]}" - - CT_Popd - CT_EndStep -} - -#------------------------------------------------------------------------------ -# Build final gcc to run on host -do_cc_for_host() { - local -a final_opts - local final_backend - - final_opts+=( "host=${CT_HOST}" ) - final_opts+=( "prefix=${CT_PREFIX_DIR}" ) - final_opts+=( "complibs=${CT_HOST_COMPLIBS_DIR}" ) - final_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" ) - final_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" ) - final_opts+=( "lang_list=$( cc_gcc_lang_list )" ) - if [ "${CT_BUILD_MANUALS}" = "y" ]; then - final_opts+=( "build_manuals=yes" ) - fi - if [ "${CT_BARE_METAL}" = "y" ]; then - final_opts+=( "mode=baremetal" ) - final_opts+=( "build_libgcc=yes" ) - final_opts+=( "build_libstdcxx=yes" ) - if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then - final_opts+=( "build_staticlinked=yes" ) - fi - final_backend=do_cc_core_backend - else - final_backend=do_cc_backend - fi - - CT_DoStep INFO "Installing final compiler" - CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-final" - - "${final_backend}" "${final_opts[@]}" - - CT_Popd - CT_EndStep -} - -#------------------------------------------------------------------------------ -# Build the final gcc -# Usage: do_cc_backend param=value [...] -# Parameter : Definition : Type : Default -# host : the host we run onto : tuple : (none) -# prefix : the runtime prefix : dir : (none) -# complibs : the companion libraries prefix : dir : (none) -# cflags : cflags to use : string : (empty) -# ldflags : ldflags to use : string : (empty) -# lang_list : the list of languages to build : string : (empty) -# build_manuals : whether to build manuals or not : bool : no -do_cc_backend() { - local host - local prefix - local complibs - local cflags - local ldflags - local lang_list - local build_manuals - local -a host_libstdcxx_flags - local -a extra_config - local -a final_LDFLAGS - local tmp - local arg - - for arg in "$@"; do - eval "${arg// /\\ }" - done - - CT_DoLog EXTRA "Configuring gcc" - - # Enable selected languages - extra_config+=("--enable-languages=${lang_list}") - - for tmp in ARCH ABI CPU TUNE FPU FLOAT; do - eval tmp="\${CT_ARCH_WITH_${tmp}}" - if [ -n "${tmp}" ]; then - extra_config+=("${tmp}") - fi - done - - [ "${CT_SHARED_LIBS}" = "y" ] || extra_config+=("--disable-shared") - if [ "${CT_CC_GCC_HAS_PKGVERSION_BUGURL}" = "y" ]; then - extra_config+=("--with-pkgversion=${CT_PKGVERSION}") - [ -n "${CT_TOOLCHAIN_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_TOOLCHAIN_BUGURL}") - fi - case "${CT_CC_GCC_SJLJ_EXCEPTIONS}" in - y) extra_config+=("--enable-sjlj-exceptions");; - m) ;; - "") extra_config+=("--disable-sjlj-exceptions");; - esac - if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then - extra_config+=("--enable-__cxa_atexit") - else - extra_config+=("--disable-__cxa_atexit") - fi - if [ -n "${CT_CC_ENABLE_CXX_FLAGS}" ]; then - extra_config+=("--enable-cxx-flags=${CT_CC_ENABLE_CXX_FLAGS}") - fi - if [ "${CT_CC_GCC_LIBMUDFLAP}" = "y" ]; then - extra_config+=(--enable-libmudflap) - else - extra_config+=(--disable-libmudflap) - fi - if [ "${CT_CC_GCC_LIBGOMP}" = "y" ]; then - extra_config+=(--enable-libgomp) - else - extra_config+=(--disable-libgomp) - fi - if [ "${CT_CC_GCC_LIBSSP}" = "y" ]; then - extra_config+=(--enable-libssp) - else - extra_config+=(--disable-libssp) - fi - if [ "${CT_CC_GCC_HAS_LIBQUADMATH}" = "y" ]; then - if [ "${CT_CC_GCC_LIBQUADMATH}" = "y" ]; then - extra_config+=(--enable-libquadmath) - extra_config+=(--enable-libquadmath-support) - else - extra_config+=(--disable-libquadmath) - extra_config+=(--disable-libquadmath-support) - fi - fi - - final_LDFLAGS+=("${ldflags}") - - # *** WARNING ! *** - # Keep this full if-else-if-elif-fi-fi block in sync - # with the same block in do_cc_core, above. - if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then - final_LDFLAGS+=("-static") - host_libstdcxx_flags+=("-static-libgcc") - host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++") - host_libstdcxx_flags+=("-lm") - # Companion libraries are build static (eg !shared), so - # the libstdc++ is not pulled automatically, although it - # is needed. Shoe-horn it in our LDFLAGS - # Ditto libm on some Fedora boxen - final_LDFLAGS+=("-lstdc++") - final_LDFLAGS+=("-lm") - else - if [ "${CT_CC_STATIC_LIBSTDCXX}" = "y" ]; then - # this is from CodeSourcery arm-2010q1-202-arm-none-linux-gnueabi.src.tar.bz2 - # build script - # INFO: if the host gcc is gcc-4.5 then presumably we could use -static-libstdc++, - # see http://gcc.gnu.org/ml/gcc-patches/2009-06/msg01635.html - host_libstdcxx_flags+=("-static-libgcc") - host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++,-Bdynamic") - host_libstdcxx_flags+=("-lm") - elif [ "${CT_COMPLIBS_SHARED}" != "y" ]; then - # When companion libraries are build static (eg !shared), - # the libstdc++ is not pulled automatically, although it - # is needed. Shoe-horn it in our LDFLAGS - # Ditto libm on some Fedora boxen - final_LDFLAGS+=("-lstdc++") - final_LDFLAGS+=("-lm") - fi - fi - - if [ "${CT_CC_GCC_USE_GMP_MPFR}" = "y" ]; then - extra_config+=("--with-gmp=${complibs}") - extra_config+=("--with-mpfr=${complibs}") - fi - if [ "${CT_CC_GCC_USE_MPC}" = "y" ]; then - extra_config+=("--with-mpc=${complibs}") - fi - if [ "${CT_CC_GCC_USE_GRAPHITE}" = "y" ]; then - if [ "${CT_PPL}" = "y" ]; then - extra_config+=("--with-ppl=${complibs}") - # With PPL 0.11+, also pull libpwl if needed - if [ "${CT_PPL_NEEDS_LIBPWL}" = "y" ]; then - host_libstdcxx_flags+=("-L${complibs}/lib") - host_libstdcxx_flags+=("-lpwl") - fi - fi - if [ "${CT_ISL}" = "y" ]; then - extra_config+=("--with-isl=${complibs}") - fi - extra_config+=("--with-cloog=${complibs}") - elif [ "${CT_CC_GCC_HAS_GRAPHITE}" = "y" ]; then - extra_config+=("--with-ppl=no") - extra_config+=("--with-isl=no") - extra_config+=("--with-cloog=no") - fi - if [ "${CT_CC_GCC_USE_LTO}" = "y" ]; then - extra_config+=("--with-libelf=${complibs}") - elif [ "${CT_CC_GCC_HAS_LTO}" = "y" ]; then - extra_config+=("--with-libelf=no") - fi - - if [ ${#host_libstdcxx_flags[@]} -ne 0 ]; then - extra_config+=("--with-host-libstdcxx=${host_libstdcxx_flags[*]}") - fi - - if [ "${CT_THREADS}" = "none" ]; then - extra_config+=("--disable-threads") - if [ "${CT_CC_GCC_4_2_or_later}" = y ]; then - CT_Test "Disabling libgomp for no-thread gcc>=4.2" "${CT_CC_GCC_LIBGOMP}" = "Y" - extra_config+=("--disable-libgomp") - fi - else - if [ "${CT_THREADS}" = "win32" ]; then - extra_config+=("--enable-threads=win32") - extra_config+=("--disable-win32-registry") - else - extra_config+=("--enable-threads=posix") - fi - fi - - if [ "${CT_CC_GCC_ENABLE_TARGET_OPTSPACE}" = "y" ]; then - extra_config+=("--enable-target-optspace") - fi - if [ "${CT_CC_GCC_DISABLE_PCH}" = "y" ]; then - extra_config+=("--disable-libstdcxx-pch") - fi - - case "${CT_CC_GCC_LDBL_128}" in - y) extra_config+=("--with-long-double-128");; - m) ;; - "") extra_config+=("--without-long-double-128");; - esac - - if [ "${CT_CC_GCC_BUILD_ID}" = "y" ]; then - extra_config+=( --enable-linker-build-id ) - fi - - case "${CT_CC_GCC_LNK_HASH_STYLE}" in - "") ;; - *) extra_config+=( "--with-linker-hash-style=${CT_CC_GCC_LNK_HASH_STYLE}" );; - esac - - if [ "${CT_CC_GCC_ENABLE_PLUGINS}" = "y" ]; then - extra_config+=( --enable-plugin ) - fi - if [ "${CT_CC_GCC_GOLD}" = "y" ]; then - extra_config+=( --enable-gold ) - fi - - case "${CT_ARCH}" in - mips) - case "${CT_CC_GCC_mips_llsc}" in - y) extra_config+=( --with-llsc );; - m) ;; - *) extra_config+=( --without-llsc );; - esac - case "${CT_CC_GCC_mips_synci}" in - y) extra_config+=( --with-synci );; - m) ;; - *) extra_config+=( --without-synci );; - esac - if [ "${CT_CC_GCC_mips_plt}" ]; then - extra_config+=( --with-mips-plt ) - fi - ;; # ARCH is mips - esac - - [ "${CT_TOOLCHAIN_ENABLE_NLS}" != "y" ] && extra_config+=("--disable-nls") - - if [ "${CT_CC_GCC_SYSTEM_ZLIB}" = "y" ]; then - extra_config+=("--with-system-zlib") - fi - - if [ "${CT_MULTILIB}" = "y" ]; then - extra_config+=("--enable-multilib") - else - extra_config+=("--disable-multilib") - fi - - CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'" - - CT_DoExecLog CFG \ - CC_FOR_BUILD="${CT_BUILD}-gcc" \ - CFLAGS="${cflags}" \ - LDFLAGS="${final_LDFLAGS[*]}" \ - CFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \ - CXXFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \ - LDFLAGS_FOR_TARGET="${CT_TARGET_LDFLAGS}" \ - "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/configure" \ - --build=${CT_BUILD} \ - --host=${host} \ - --target=${CT_TARGET} \ - --prefix="${prefix}" \ - ${CC_SYSROOT_ARG} \ - "${extra_config[@]}" \ - --with-local-prefix="${CT_SYSROOT_DIR}" \ - --enable-c99 \ - --enable-long-long \ - "${CT_CC_EXTRA_CONFIG_ARRAY[@]}" - - if [ "${CT_CANADIAN}" = "y" ]; then - CT_DoLog EXTRA "Building libiberty" - CT_DoExecLog ALL make ${JOBSFLAGS} all-build-libiberty - fi - - CT_DoLog EXTRA "Building gcc" - CT_DoExecLog ALL make ${JOBSFLAGS} all - - CT_DoLog EXTRA "Installing gcc" - CT_DoExecLog ALL make ${JOBSFLAGS} install - - if [ "${build_manuals}" = "yes" ]; then - CT_DoLog EXTRA "Building the GCC manuals" - CT_DoExecLog ALL make pdf html - CT_DoLog EXTRA "Installing the GCC manuals" - CT_DoExecLog ALL make install-{pdf,html}-gcc - fi - - # Create a symlink ${CT_TARGET}-cc to ${CT_TARGET}-gcc to always be able - # to call the C compiler with the same, somewhat canonical name. - # check whether compiler has an extension - file="$( ls -1 "${CT_PREFIX_DIR}/bin/${CT_TARGET}-gcc."* 2>/dev/null || true )" - [ -z "${file}" ] || ext=".${file##*.}" - CT_DoExecLog ALL ln -sfv "${CT_TARGET}-gcc${ext}" "${CT_PREFIX_DIR}/bin/${CT_TARGET}-cc${ext}" - - if [ "${CT_MULTILIB}" = "y" ]; then - if [ "${CT_CANADIAN}" = "y" ]; then - CT_DoLog WARN "Canadian Cross unable to confirm multilibs configured correctly" - else - multilibs=( $( "${prefix}/bin/${CT_TARGET}-gcc" -print-multi-lib \ - |tail -n +2 ) ) - if [ ${#multilibs[@]} -ne 0 ]; then - CT_DoLog EXTRA "gcc configured with these multilibs (besides the default):" - for i in "${multilibs[@]}"; do - dir="${i%%;*}" - flags="${i#*;}" - CT_DoLog EXTRA " ${flags//@/ -} --> ${dir}/" - done - else - CT_DoLog WARN "gcc configured for multilib, but none available" - fi - fi - fi -} diff -r 7e569a9cb5fd -r 65771b86df01 scripts/build/debug/300-gdb.sh --- a/scripts/build/debug/300-gdb.sh Sat Nov 16 18:14:45 2013 +0100 +++ b/scripts/build/debug/300-gdb.sh Mon Dec 02 21:51:09 2013 +0100 @@ -181,11 +181,11 @@ if [ "${CT_GDB_INSTALL_GDBINIT}" = "y" ]; then CT_DoLog EXTRA "Installing '.gdbinit' template" # See in scripts/build/internals.sh for why we do this - if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then - gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ) + if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ]; then + gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ) else - gcc_version=$( sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \ - "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/version.c" \ + gcc_version=$( sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \ + "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/version.c" \ ) fi ${sed} -r \ diff -r 7e569a9cb5fd -r 65771b86df01 scripts/build/internals.sh --- a/scripts/build/internals.sh Sat Nov 16 18:14:45 2013 +0100 +++ b/scripts/build/internals.sh Mon Dec 02 21:51:09 2013 +0100 @@ -28,33 +28,35 @@ CT_DoExecLog ALL "${CT_TARGET}-strip" ${strip_args} \ "${CT_TARGET}/debug-root/usr/bin/gdbserver" fi - # We can not use the version in CT_CC_VERSION because - # of the Linaro stuff. So, harvest the version string - # directly from the gcc sources... - # All gcc 4.x seem to have the version in gcc/BASE-VER - # while version prior to 4.x have the version in gcc/version.c - # Of course, here is not the better place to do that... - if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then - gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ) - else - gcc_version=$( sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \ - "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/version.c" \ - ) + if [ "${CT_CC_gcc}" = "y" ]; then + # We can not use the version in CT_CC_GCC_VERSION because + # of the Linaro stuff. So, harvest the version string + # directly from the gcc sources... + # All gcc 4.x seem to have the version in gcc/BASE-VER + # while version prior to 4.x have the version in gcc/version.c + # Of course, here is not the better place to do that... + if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ]; then + gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ) + else + gcc_version=$( sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \ + "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/version.c" \ + ) + fi + for _t in "bin/${CT_TARGET}-"* \ + "${CT_TARGET}/bin/"* \ + "libexec/gcc/${CT_TARGET}/${gcc_version}/"* \ + "libexec/gcc/${CT_TARGET}/${gcc_version}/install-tools/"* \ + ; do + _type="$( file "${_t}" |cut -d ' ' -f 2- )" + case "${_type}" in + *script*executable*) + ;; + *executable*) + CT_DoExecLog ALL ${CT_HOST}-strip ${strip_args} "${_t}" + ;; + esac + done fi - for _t in "bin/${CT_TARGET}-"* \ - "${CT_TARGET}/bin/"* \ - "libexec/gcc/${CT_TARGET}/${gcc_version}/"* \ - "libexec/gcc/${CT_TARGET}/${gcc_version}/install-tools/"* \ - ; do - _type="$( file "${_t}" |cut -d ' ' -f 2- )" - case "${_type}" in - *script*executable*) - ;; - *executable*) - CT_DoExecLog ALL ${CT_HOST}-strip ${strip_args} "${_t}" - ;; - esac - done CT_Popd fi diff -r 7e569a9cb5fd -r 65771b86df01 scripts/build/test_suite/gcc.sh --- a/scripts/build/test_suite/gcc.sh Sat Nov 16 18:14:45 2013 +0100 +++ b/scripts/build/test_suite/gcc.sh Mon Dec 02 21:51:09 2013 +0100 @@ -15,10 +15,10 @@ CT_DoStep INFO "Installing GCC test suite" CT_DoExecLog ALL mkdir -p "${CT_TEST_SUITE_DIR}/gcc" - CT_DoExecLog ALL cp -av "${CT_LIB_DIR}/contrib/gcc-test-suite/default.cfg" \ - "${CT_LIB_DIR}/contrib/gcc-test-suite/Makefile" \ - "${CT_LIB_DIR}/contrib/gcc-test-suite/README" \ - "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/testsuite" \ + CT_DoExecLog ALL cp -av "${CT_LIB_DIR}/contrib/gcc-test-suite/default.cfg" \ + "${CT_LIB_DIR}/contrib/gcc-test-suite/Makefile" \ + "${CT_LIB_DIR}/contrib/gcc-test-suite/README" \ + "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/testsuite" \ "${CT_TEST_SUITE_DIR}/gcc" CT_DoExecLog ALL sed -i -r -e "s/@@DG_TARGET@@/${CT_TARGET}/g;" \ diff -r 7e569a9cb5fd -r 65771b86df01 scripts/crosstool-NG.sh.in --- a/scripts/crosstool-NG.sh.in Sat Nov 16 18:14:45 2013 +0100 +++ b/scripts/crosstool-NG.sh.in Mon Dec 02 21:51:09 2013 +0100 @@ -140,7 +140,7 @@ . "${CT_LIB_DIR}/scripts/build/companion_libs.sh" . "${CT_LIB_DIR}/scripts/build/binutils/${CT_BINUTILS}.sh" . "${CT_LIB_DIR}/scripts/build/libc/${CT_LIBC}.sh" -. "${CT_LIB_DIR}/scripts/build/cc/${CT_CC}.sh" +. "${CT_LIB_DIR}/scripts/build/cc.sh" . "${CT_LIB_DIR}/scripts/build/debug.sh" . "${CT_LIB_DIR}/scripts/build/test_suite.sh" @@ -162,8 +162,8 @@ # Put user-supplied flags at the end, so that they take precedence. CT_TARGET_CFLAGS="${CT_ARCH_TARGET_CFLAGS} ${CT_TARGET_CFLAGS}" CT_TARGET_LDFLAGS="${CT_ARCH_TARGET_LDFLAGS} ${CT_TARGET_LDFLAGS}" -CT_CC_CORE_EXTRA_CONFIG_ARRAY=( ${CT_ARCH_CC_CORE_EXTRA_CONFIG} "${CT_CC_CORE_EXTRA_CONFIG_ARRAY[@]}" ) -CT_CC_EXTRA_CONFIG_ARRAY=( ${CT_ARCH_CC_EXTRA_CONFIG} "${CT_CC_EXTRA_CONFIG_ARRAY[@]}" ) +CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY=( ${CT_ARCH_CC_CORE_EXTRA_CONFIG} "${CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY[@]}" ) +CT_CC_GCC_EXTRA_CONFIG_ARRAY=( ${CT_ARCH_CC_EXTRA_CONFIG} "${CT_CC_GCC_EXTRA_CONFIG_ARRAY[@]}" ) # Compute the package version string CT_PKGVERSION="crosstool-NG ${CT_VERSION}${CT_TOOLCHAIN_PKGVERSION:+ - ${CT_TOOLCHAIN_PKGVERSION}}" @@ -545,8 +545,8 @@ CT_EndStep fi - if [ "${CT_CC_STATIC_LIBSTDCXX}" = "y" ]; then - CT_DoStep DEBUG "Checking that gcc can statically link libstdc++ (CT_CC_STATIC_LIBSTDCXX)" + if [ "${CT_CC_GCC_STATIC_LIBSTDCXX}" = "y" ]; then + CT_DoStep DEBUG "Checking that gcc can statically link libstdc++ (CT_CC_GCC_STATIC_LIBSTDCXX)" CT_DoLog DEBUG "You may need to ensure that libstdc++.a is installed on your system" CT_DoExecLog DEBUG "${CT_HOST}-gcc" ${CT_CFLAGS_FOR_HOST} ${CT_LDFLAGS_FOR_HOST} "${testc}" -static -lstdc++ -o "${gccout}" rm -f "${gccout}" diff -r 7e569a9cb5fd -r 65771b86df01 scripts/gen_in_frags.sh --- a/scripts/gen_in_frags.sh Sat Nov 16 18:14:45 2013 +0100 +++ b/scripts/gen_in_frags.sh Mon Dec 02 21:51:09 2013 +0100 @@ -138,6 +138,9 @@ _entry=$(printf '%s\n' "${entry}" |"${sed}" -r -s -e 's/[-.+]/_/g;') printf 'menuconfig %s_%s\n' "${cfg_prefix}" "${_entry}" printf ' bool\n' + if "${grep}" -E '^## default' ${file} >/dev/null 2>&1; then + "${sed}" -r -e '/^## default ?/!d; s/^## default ?/ default /;' ${file} 2>/dev/null + fi printf ' prompt "%s"\n' "${entry}" "${sed}" -r -e '/^## depends on /!d; s/^## / /;' ${file} 2>/dev/null "${sed}" -r -e '/^## select /!d; s/^## / /;' ${file} 2>/dev/null diff -r 7e569a9cb5fd -r 65771b86df01 scripts/showSamples.sh --- a/scripts/showSamples.sh Sat Nov 16 18:14:45 2013 +0100 +++ b/scripts/showSamples.sh Mon Dec 02 21:51:09 2013 +0100 @@ -76,7 +76,7 @@ [ -z "${CT_LIBELF}" -a -z "${CT_LIBELF_TARGET}" ] || printf " libelf-%s" "${CT_LIBELF_VERSION}" [ -z "${complibs}" ] || printf "\n" printf " %-*s : %s\n" ${width} "binutils" "binutils-${CT_BINUTILS_VERSION}" - printf " %-*s : %s" ${width} "C compiler" "${CT_CC}-${CT_CC_VERSION} (C" + printf " %-*s : %s" ${width} "C compiler" "${CT_CC}-${CT_CC_GCC_VERSION} (C" [ "${CT_CC_LANG_CXX}" = "y" ] && printf ",C++" [ "${CT_CC_LANG_FORTRAN}" = "y" ] && printf ",Fortran" [ "${CT_CC_LANG_JAVA}" = "y" ] && printf ",Java" @@ -121,7 +121,7 @@ fi printf "| ${CT_BINUTILS_VERSION} " printf "| ''${CT_CC}'' " - printf "| ${CT_CC_VERSION} " + printf "| ${CT_CC_GCC_VERSION} " printf "| ''${CT_LIBC}'' |" if [ "${CT_LIBC}" != "none" ]; then printf " ${CT_LIBC_VERSION} " -- For unsubscribe information see http://sourceware.org/lists.html#faq ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1 of 1] cc/gcc: Split gcc configurations and functions from cc ones 2013-12-02 20:54 ` [PATCH 1 of 1] cc/gcc: Split gcc configurations and functions from cc ones Yann Diorcet @ 2013-12-09 19:05 ` Ray Donnelly 2013-12-09 22:06 ` Cody P Schafer 1 sibling, 0 replies; 11+ messages in thread From: Ray Donnelly @ 2013-12-09 19:05 UTC (permalink / raw) To: Yann Diorcet; +Cc: Yann E. MORIN, crossgcc Any chance of getting this patch reviewed? It's important as the basis for the rest of the clang/llvm patches. Cheers, Ray. On Mon, Dec 2, 2013 at 8:52 PM, Yann Diorcet <diorcet.yann@gmail.com> wrote: > # HG changeset patch > # User Yann Diorcet <diorcet.yann@gmail.com> > # Date 1386017469 -3600 > # Mon Dec 02 21:51:09 2013 +0100 > # Node ID 65771b86df01ef768aa36b6db1491a198cbf2811 > # Parent 7e569a9cb5fd3ab591bb307328b947a5b7312cba > cc/gcc: Split gcc configurations and functions from cc ones > > Signed-off-by: Yann Diorcet <diorcet.yann@gmail.com> > > diff -r 7e569a9cb5fd -r 65771b86df01 config/cc.in > --- a/config/cc.in Sat Nov 16 18:14:45 2013 +0100 > +++ b/config/cc.in Mon Dec 02 21:51:09 2013 +0100 > @@ -4,9 +4,7 @@ > > config CC > string > - > -config CC_VERSION > - string > + default "gcc" > > config CC_CORE_PASSES_NEEDED > bool > @@ -126,6 +124,4 @@ > > endif # ! BARE_METAL > > -source "config.gen/cc.in.2" > - > endmenu > diff -r 7e569a9cb5fd -r 65771b86df01 config/cc/gcc.in > --- a/config/cc/gcc.in Sat Nov 16 18:14:45 2013 +0100 > +++ b/config/cc/gcc.in Mon Dec 02 21:51:09 2013 +0100 > @@ -1,5 +1,6 @@ > # Compiler options > # > +## default y > ## select CC_SUPPORT_CXX > ## select CC_SUPPORT_FORTRAN > ## select CC_SUPPORT_JAVA > @@ -36,215 +37,215 @@ > # Don't remove next line > # CT_INSERT_VERSION_BELOW > > -config CC_V_linaro_4_8 > +config CC_GCC_V_linaro_4_8 > bool > prompt "linaro-4.8-2013.06-1" > depends on CC_GCC_SHOW_LINARO > select CC_GCC_4_8 > > -config CC_V_4_8_2 > +config CC_GCC_V_4_8_2 > bool > prompt "4.8.2" > select CC_GCC_4_8 > > -config CC_V_4_8_1 > +config CC_GCC_V_4_8_1 > bool > prompt "4.8.1" > select CC_GCC_4_8 > > -config CC_V_4_8_0 > +config CC_GCC_V_4_8_0 > bool > prompt "4.8.0" > select CC_GCC_4_8 > > -config CC_V_linaro_4_7 > +config CC_GCC_V_linaro_4_7 > bool > prompt "linaro-4.7-2013.06-1" > depends on CC_GCC_SHOW_LINARO > select CC_GCC_4_7 > > -config CC_V_4_7_3 > +config CC_GCC_V_4_7_3 > bool > prompt "4.7.3" > select CC_GCC_4_7 > > -config CC_V_4_7_2 > +config CC_GCC_V_4_7_2 > bool > prompt "4.7.2" > select CC_GCC_4_7 > > -config CC_V_4_7_1 > +config CC_GCC_V_4_7_1 > bool > prompt "4.7.1" > select CC_GCC_4_7 > > -config CC_V_4_7_0 > +config CC_GCC_V_4_7_0 > bool > prompt "4.7.0" > select CC_GCC_4_7 > > -config CC_V_linaro_4_6 > +config CC_GCC_V_linaro_4_6 > bool > prompt "linaro-4.6-2013.05" > depends on CC_GCC_SHOW_LINARO > select CC_GCC_4_6 > > -config CC_V_4_6_4 > +config CC_GCC_V_4_6_4 > bool > prompt "4.6.4" > select CC_GCC_4_6 > > -config CC_V_4_6_3 > +config CC_GCC_V_4_6_3 > bool > prompt "4.6.3" > select CC_GCC_4_6 > > -config CC_V_4_6_2 > +config CC_GCC_V_4_6_2 > bool > prompt "4.6.2" > select CC_GCC_4_6 > > -config CC_V_4_6_1 > +config CC_GCC_V_4_6_1 > bool > prompt "4.6.1" > select CC_GCC_4_6 > > -config CC_V_4_6_0 > +config CC_GCC_V_4_6_0 > bool > prompt "4.6.0" > select CC_GCC_4_6 > > -config CC_V_linaro_4_5 > +config CC_GCC_V_linaro_4_5 > bool > prompt "linaro-4.5-2012.03" > depends on CC_GCC_SHOW_LINARO > select CC_GCC_4_5 > > -config CC_V_4_5_3 > +config CC_GCC_V_4_5_3 > bool > prompt "4.5.3" > select CC_GCC_4_5 > > -config CC_V_4_5_2 > +config CC_GCC_V_4_5_2 > bool > prompt "4.5.2" > select CC_GCC_4_5 > > -config CC_V_4_5_1 > +config CC_GCC_V_4_5_1 > bool > prompt "4.5.1" > select CC_GCC_4_5 > > -config CC_V_4_5_0 > +config CC_GCC_V_4_5_0 > bool > prompt "4.5.0" > select CC_GCC_4_5 > > > -config CC_V_linaro_4_4 > +config CC_GCC_V_linaro_4_4 > bool > prompt "linaro-4.4-2011.02-0" > depends on CC_GCC_SHOW_LINARO > select CC_GCC_4_4 > > -config CC_V_4_4_7 > +config CC_GCC_V_4_4_7 > bool > prompt "4.4.7" > select CC_GCC_4_4 > > -config CC_V_4_4_6 > +config CC_GCC_V_4_4_6 > bool > prompt "4.4.6" > select CC_GCC_4_4 > > -config CC_V_4_4_5 > +config CC_GCC_V_4_4_5 > bool > prompt "4.4.5" > select CC_GCC_4_4 > > -config CC_V_4_4_4 > +config CC_GCC_V_4_4_4 > bool > prompt "4.4.4" > select CC_GCC_4_4 > > -config CC_V_4_4_3 > +config CC_GCC_V_4_4_3 > bool > prompt "4.4.3" > select CC_GCC_4_4 > > -config CC_V_4_4_2 > +config CC_GCC_V_4_4_2 > bool > prompt "4.4.2" > select CC_GCC_4_4 > > -config CC_V_4_4_1 > +config CC_GCC_V_4_4_1 > bool > prompt "4.4.1" > select CC_GCC_4_4 > > -config CC_V_4_4_0 > +config CC_GCC_V_4_4_0 > bool > prompt "4.4.0" > select CC_GCC_4_4 > > -config CC_V_4_3_6 > +config CC_GCC_V_4_3_6 > bool > prompt "4.3.6" > select CC_GCC_4_3 > > -config CC_V_4_3_5 > +config CC_GCC_V_4_3_5 > bool > prompt "4.3.5" > select CC_GCC_4_3 > > -config CC_V_4_3_4 > +config CC_GCC_V_4_3_4 > bool > prompt "4.3.4" > select CC_GCC_4_3 > > -config CC_V_4_3_3 > +config CC_GCC_V_4_3_3 > bool > prompt "4.3.3" > select CC_GCC_4_3 > > -config CC_V_4_3_2 > +config CC_GCC_V_4_3_2 > bool > prompt "4.3.2" > select CC_GCC_4_3 > > -config CC_V_4_3_1 > +config CC_GCC_V_4_3_1 > bool > prompt "4.3.1" > select CC_GCC_4_3 > > -config CC_V_4_2_4 > +config CC_GCC_V_4_2_4 > bool > prompt "4.2.4" > select CC_GCC_4_2 > > # We need that one, it's the only version with avr32 support > # because we have a patch for it > -config CC_V_4_2_2 > +config CC_GCC_V_4_2_2 > bool > prompt "4.2.2" > select CC_GCC_4_2 > > -config CC_V_4_1_2 > +config CC_GCC_V_4_1_2 > bool > prompt "4.1.2 (OBSOLETE)" > depends on OBSOLETE > > -config CC_V_4_0_4 > +config CC_GCC_V_4_0_4 > bool > prompt "4.0.4 (OBSOLETE)" > depends on OBSOLETE > > -config CC_V_3_4_6 > +config CC_GCC_V_3_4_6 > bool > prompt "3.4.6 (OBSOLETE)" > depends on OBSOLETE > > -config CC_CUSTOM > +config CC_GCC_CUSTOM > bool > prompt "Custom gcc" > depends on EXPERIMENTAL > @@ -252,9 +253,9 @@ > > endchoice > > -if CC_CUSTOM > +if CC_GCC_CUSTOM > > -config CC_CUSTOM_LOCATION > +config CC_GCC_CUSTOM_LOCATION > string > prompt "Full path to custom gcc source" > default "" > @@ -262,7 +263,7 @@ > Enter the path to the directory (or tarball) of your source for gcc, > or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/gcc > > -endif #CC_CUSTOM > +endif #CC_GCC_CUSTOM > > config CC_GCC_4_2 > bool > @@ -434,6 +435,8 @@ > select GMP_NEEDED > select MPFR_NEEDED > > + select CLOOG_NEEDED > + > config CC_GCC_USE_MPC > bool > select MPC_NEEDED > @@ -445,52 +448,52 @@ > config CC_GCC_HAS_LIBQUADMATH > bool > > -config CC_VERSION > +config CC_GCC_VERSION > string > # Don't remove next line > # CT_INSERT_VERSION_STRING_BELOW > - default "linaro-4.8-2013.06-1" if CC_V_linaro_4_8 > - default "4.8.2" if CC_V_4_8_2 > - default "4.8.1" if CC_V_4_8_1 > - default "4.8.0" if CC_V_4_8_0 > - default "linaro-4.7-2013.06-1" if CC_V_linaro_4_7 > - default "4.7.3" if CC_V_4_7_3 > - default "4.7.2" if CC_V_4_7_2 > - default "4.7.1" if CC_V_4_7_1 > - default "4.7.0" if CC_V_4_7_0 > - default "linaro-4.6-2013.05" if CC_V_linaro_4_6 > - default "4.6.4" if CC_V_4_6_4 > - default "4.6.3" if CC_V_4_6_3 > - default "4.6.2" if CC_V_4_6_2 > - default "4.6.1" if CC_V_4_6_1 > - default "4.6.0" if CC_V_4_6_0 > - default "linaro-4.5-2012.03" if CC_V_linaro_4_5 > - default "4.5.3" if CC_V_4_5_3 > - default "4.5.2" if CC_V_4_5_2 > - default "4.5.1" if CC_V_4_5_1 > - default "4.5.0" if CC_V_4_5_0 > - default "linaro-4.4-2011.02-0" if CC_V_linaro_4_4 > - default "4.4.7" if CC_V_4_4_7 > - default "4.4.6" if CC_V_4_4_6 > - default "4.4.5" if CC_V_4_4_5 > - default "4.4.4" if CC_V_4_4_4 > - default "4.4.3" if CC_V_4_4_3 > - default "4.4.2" if CC_V_4_4_2 > - default "4.4.1" if CC_V_4_4_1 > - default "4.4.0" if CC_V_4_4_0 > - default "4.3.6" if CC_V_4_3_6 > - default "4.3.5" if CC_V_4_3_5 > - default "4.3.4" if CC_V_4_3_4 > - default "4.3.3" if CC_V_4_3_3 > - default "4.3.2" if CC_V_4_3_2 > - default "4.3.1" if CC_V_4_3_1 > - default "4.3.0" if CC_V_4_3_0 > - default "4.2.4" if CC_V_4_2_4 > - default "4.2.2" if CC_V_4_2_2 > - default "4.1.2" if CC_V_4_1_2 > - default "4.0.4" if CC_V_4_0_4 > - default "3.4.6" if CC_V_3_4_6 > - default "custom" if CC_CUSTOM > + default "linaro-4.8-2013.06-1" if CC_GCC_V_linaro_4_8 > + default "4.8.2" if CC_GCC_V_4_8_2 > + default "4.8.1" if CC_GCC_V_4_8_1 > + default "4.8.0" if CC_GCC_V_4_8_0 > + default "linaro-4.7-2013.06-1" if CC_GCC_V_linaro_4_7 > + default "4.7.3" if CC_GCC_V_4_7_3 > + default "4.7.2" if CC_GCC_V_4_7_2 > + default "4.7.1" if CC_GCC_V_4_7_1 > + default "4.7.0" if CC_GCC_V_4_7_0 > + default "linaro-4.6-2013.05" if CC_GCC_V_linaro_4_6 > + default "4.6.4" if CC_GCC_V_4_6_4 > + default "4.6.3" if CC_GCC_V_4_6_3 > + default "4.6.2" if CC_GCC_V_4_6_2 > + default "4.6.1" if CC_GCC_V_4_6_1 > + default "4.6.0" if CC_GCC_V_4_6_0 > + default "linaro-4.5-2012.03" if CC_GCC_V_linaro_4_5 > + default "4.5.3" if CC_GCC_V_4_5_3 > + default "4.5.2" if CC_GCC_V_4_5_2 > + default "4.5.1" if CC_GCC_V_4_5_1 > + default "4.5.0" if CC_GCC_V_4_5_0 > + default "linaro-4.4-2011.02-0" if CC_GCC_V_linaro_4_4 > + default "4.4.7" if CC_GCC_V_4_4_7 > + default "4.4.6" if CC_GCC_V_4_4_6 > + default "4.4.5" if CC_GCC_V_4_4_5 > + default "4.4.4" if CC_GCC_V_4_4_4 > + default "4.4.3" if CC_GCC_V_4_4_3 > + default "4.4.2" if CC_GCC_V_4_4_2 > + default "4.4.1" if CC_GCC_V_4_4_1 > + default "4.4.0" if CC_GCC_V_4_4_0 > + default "4.3.6" if CC_GCC_V_4_3_6 > + default "4.3.5" if CC_GCC_V_4_3_5 > + default "4.3.4" if CC_GCC_V_4_3_4 > + default "4.3.3" if CC_GCC_V_4_3_3 > + default "4.3.2" if CC_GCC_V_4_3_2 > + default "4.3.1" if CC_GCC_V_4_3_1 > + default "4.3.0" if CC_GCC_V_4_3_0 > + default "4.2.4" if CC_GCC_V_4_2_4 > + default "4.2.2" if CC_GCC_V_4_2_2 > + default "4.1.2" if CC_GCC_V_4_1_2 > + default "4.0.4" if CC_GCC_V_4_0_4 > + default "3.4.6" if CC_GCC_V_3_4_6 > + default "custom" if CC_GCC_CUSTOM > > config CC_LANG_JAVA_USE_ECJ > bool > @@ -501,3 +504,5 @@ > # Fortran always requires GMP+MPFR, whatever the gcc version > config CC_LANG_FORTRAN > select CC_GCC_USE_GMP_MPFR > + > +source "config/cc/gcc.in.2" > diff -r 7e569a9cb5fd -r 65771b86df01 config/cc/gcc.in.2 > --- a/config/cc/gcc.in.2 Sat Nov 16 18:14:45 2013 +0100 > +++ b/config/cc/gcc.in.2 Mon Dec 02 21:51:09 2013 +0100 > @@ -1,6 +1,6 @@ > # gcc configuration options > > -config CC_ENABLE_CXX_FLAGS > +config CC_GCC_ENABLE_CXX_FLAGS > string > prompt "Flags to pass to --enable-cxx-flags" > default "" > @@ -11,7 +11,7 @@ > Note: just pass in the option _value_, that is only the part that goes > after the '=' sign. > > -config CC_CORE_EXTRA_CONFIG_ARRAY > +config CC_GCC_CORE_EXTRA_CONFIG_ARRAY > string > prompt "Core gcc extra config" > default "" > @@ -25,7 +25,7 @@ > if they are properly quoted (or escaped, but prefer quotes). Eg.: > --with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space > > -config CC_EXTRA_CONFIG_ARRAY > +config CC_GCC_EXTRA_CONFIG_ARRAY > string > prompt "gcc extra config" > default "" > @@ -38,9 +38,9 @@ > --with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space > > config STATIC_TOOLCHAIN > - select CC_STATIC_LIBSTDCXX if CC_GCC_4_4_or_later > + select CC_GCC_STATIC_LIBSTDCXX if CC_GCC_4_4_or_later > > -config CC_STATIC_LIBSTDCXX > +config CC_GCC_STATIC_LIBSTDCXX > bool > prompt "Link libstdc++ statically into the gcc binary" > default y > diff -r 7e569a9cb5fd -r 65771b86df01 config/config.mk > --- a/config/config.mk Sat Nov 16 18:14:45 2013 +0100 > +++ b/config/config.mk Mon Dec 02 21:51:09 2013 +0100 > @@ -83,7 +83,7 @@ > > config.gen/cc.in: $(CC_CONFIG_FILES) $(CC_CONFIG_FILES_2) > @$(ECHO) ' IN $(@)' > - $(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh choice "$@" "C compiler" "CC" "config/cc" "N" $(CCS) > + $(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh menu "$@" "C compiler" "CC" "config/cc" $(CCS) > > config.gen/binutils.in: $(CC_BINUTILS_FILES) $(CC_BINUTILS_FILES_2) > @$(ECHO) ' IN $(@)' > diff -r 7e569a9cb5fd -r 65771b86df01 samples/alphaev56-unknown-linux-gnu/crosstool.config > --- a/samples/alphaev56-unknown-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/alphaev56-unknown-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -10,7 +10,7 @@ > CT_BINUTILS_V_2_21_1a=y > CT_BINUTILS_PLUGINS=y > CT_BINUTILS_FOR_TARGET=y > -CT_CC_V_4_4_5=y > +CT_CC_GCC_V_4_4_5=y > CT_CC_LANG_FORTRAN=y > CT_CC_LANG_CXX=y > CT_LIBC_glibc=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/alphaev67-unknown-linux-gnu/crosstool.config > --- a/samples/alphaev67-unknown-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/alphaev67-unknown-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -8,7 +8,7 @@ > CT_KERNEL_linux=y > CT_KERNEL_V_2_6_38=y > CT_BINUTILS_V_2_21_1a=y > -CT_CC_V_4_3_5=y > +CT_CC_GCC_V_4_3_5=y > CT_CC_LANG_FORTRAN=y > CT_CC_LANG_CXX=y > # CT_CC_GCC_ENABLE_TARGET_OPTSPACE is not set > diff -r 7e569a9cb5fd -r 65771b86df01 samples/arm-bare_newlib_cortex_m3_nommu-eabi/crosstool.config > --- a/samples/arm-bare_newlib_cortex_m3_nommu-eabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/arm-bare_newlib_cortex_m3_nommu-eabi/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -11,7 +11,7 @@ > CT_TARGET_VENDOR="bare_newlib_cortex_m3_nommu" > CT_ARCH_BINFMT_FLAT=y > CT_BINUTILS_V_2_19_1a=y > -CT_CC_V_4_4_1=y > +CT_CC_GCC_V_4_4_1=y > CT_CC_LANG_CXX=y > CT_LIBC_NEWLIB_V_1_18_0=y > CT_GMP_V_4_3_2=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/arm-cortex_a8-linux-gnueabi/crosstool.config > --- a/samples/arm-cortex_a8-linux-gnueabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/arm-cortex_a8-linux-gnueabi/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -10,7 +10,7 @@ > CT_KERNEL_linux=y > CT_BINUTILS_V_2_20_1a=y > CT_BINUTILS_FOR_TARGET=y > -CT_CC_V_4_4_6=y > +CT_CC_GCC_V_4_4_6=y > CT_CC_LANG_CXX=y > CT_LIBC_glibc=y > CT_LIBC_GLIBC_V_2_9=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/arm-cortexa9_neon-linux-gnueabihf/crosstool.config > --- a/samples/arm-cortexa9_neon-linux-gnueabihf/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/arm-cortexa9_neon-linux-gnueabihf/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -18,7 +18,7 @@ > CT_BINUTILS_PLUGINS=y > CT_BINUTILS_FOR_TARGET=y > CT_CC_GCC_SHOW_LINARO=y > -CT_CC_V_linaro_4_7=y > +CT_CC_GCC_V_linaro_4_7=y > CT_CC_LANG_CXX=y > CT_CC_CORE_EXTRA_CONFIG_ARRAY="\"--with-specs=%{save-temps: -fverbose-asm} %{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables}\" --enable-poison-system-directories" > CT_CC_EXTRA_CONFIG_ARRAY="\"--with-specs=%{save-temps: -fverbose-asm} %{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables}\" --enable-poison-system-directories" > diff -r 7e569a9cb5fd -r 65771b86df01 samples/arm-davinci-linux-gnueabi/crosstool.config > --- a/samples/arm-davinci-linux-gnueabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/arm-davinci-linux-gnueabi/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -11,7 +11,7 @@ > CT_KERNEL_V_2_6_33=y > CT_BINUTILS_V_2_20_1a=y > CT_BINUTILS_FOR_TARGET=y > -CT_CC_V_4_3_2=y > +CT_CC_GCC_V_4_3_2=y > CT_CC_LANG_CXX=y > CT_LIBC_glibc=y > CT_LIBC_GLIBC_V_2_9=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/arm-unknown-eabi/crosstool.config > --- a/samples/arm-unknown-eabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/arm-unknown-eabi/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -4,7 +4,7 @@ > CT_ARCH_FLOAT_SW=y > CT_ARCH_arm=y > CT_BINUTILS_V_2_19_1a=y > -CT_CC_V_4_3_4=y > +CT_CC_GCC_V_4_3_4=y > CT_CC_LANG_CXX=y > CT_LIBC_NEWLIB_V_1_17_0=y > CT_DEBUG_gdb=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/arm-unknown-linux-gnueabi/crosstool.config > --- a/samples/arm-unknown-linux-gnueabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/arm-unknown-linux-gnueabi/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -7,7 +7,7 @@ > CT_KERNEL_linux=y > CT_BINUTILS_V_2_19_1a=y > CT_BINUTILS_FOR_TARGET=y > -CT_CC_V_4_3_2=y > +CT_CC_GCC_V_4_3_2=y > CT_CC_LANG_FORTRAN=y > CT_CC_LANG_CXX=y > CT_CC_LANG_JAVA=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/arm-unknown-linux-uclibcgnueabi/crosstool.config > --- a/samples/arm-unknown-linux-uclibcgnueabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/arm-unknown-linux-uclibcgnueabi/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -11,7 +11,7 @@ > CT_KERNEL_V_2_6_33=y > CT_BINUTILS_V_2_19_1a=y > CT_BINUTILS_FOR_TARGET=y > -CT_CC_V_4_4_3=y > +CT_CC_GCC_V_4_4_3=y > CT_CC_LANG_CXX=y > CT_LIBC_uClibc=y > CT_LIBC_UCLIBC_V_0_9_30_2=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/armeb-unknown-eabi/crosstool.config > --- a/samples/armeb-unknown-eabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/armeb-unknown-eabi/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -5,7 +5,7 @@ > CT_ARCH_FLOAT_SW=y > CT_ARCH_arm=y > CT_BINUTILS_V_2_19_1a=y > -CT_CC_V_4_3_2=y > +CT_CC_GCC_V_4_3_2=y > CT_LIBC_none=y > CT_DEBUG_gdb=y > CT_GDB_V_6_8a=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/armeb-unknown-linux-gnueabi/crosstool.config > --- a/samples/armeb-unknown-linux-gnueabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/armeb-unknown-linux-gnueabi/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -11,7 +11,7 @@ > CT_KERNEL_linux=y > CT_BINUTILS_V_2_20_1a=y > CT_BINUTILS_FOR_TARGET=y > -CT_CC_V_4_4_3=y > +CT_CC_GCC_V_4_4_3=y > CT_CC_LANG_FORTRAN=y > CT_CC_LANG_CXX=y > CT_CC_LANG_JAVA=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/armeb-unknown-linux-uclibcgnueabi/crosstool.config > --- a/samples/armeb-unknown-linux-uclibcgnueabi/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/armeb-unknown-linux-uclibcgnueabi/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -16,7 +16,7 @@ > CT_BINUTILS_LD_WRAPPER=y > CT_BINUTILS_PLUGINS=y > CT_BINUTILS_FOR_TARGET=y > -CT_CC_V_4_6_4=y > +CT_CC_GCC_V_4_6_4=y > CT_CC_LANG_CXX=y > CT_CC_GCC_DISABLE_PCH=y > # CT_CC_GCC_SJLJ_EXCEPTIONS is not set > diff -r 7e569a9cb5fd -r 65771b86df01 samples/avr32-unknown-none/crosstool.config > --- a/samples/avr32-unknown-none/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/avr32-unknown-none/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -4,7 +4,7 @@ > CT_LOG_EXTRA=y > CT_ARCH_avr32=y > CT_BINUTILS_V_2_18a=y > -CT_CC_V_4_2_2=y > +CT_CC_GCC_V_4_2_2=y > CT_LIBC_NEWLIB_V_1_17_0=y > CT_LIBC_NEWLIB_IO_LL=y > CT_LIBC_NEWLIB_IO_FLOAT=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/bfin-unknown-linux-uclibc/crosstool.config > --- a/samples/bfin-unknown-linux-uclibc/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/bfin-unknown-linux-uclibc/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -6,7 +6,7 @@ > CT_KERNEL_V_2_6_33=y > CT_ARCH_BINFMT_FDPIC=y > CT_BINUTILS_V_2_20_1a=y > -CT_CC_V_4_3_4=y > +CT_CC_GCC_V_4_3_4=y > CT_LIBC_UCLIBC_V_0_9_30_2=y > CT_LIBC_UCLIBC_CONFIG_FILE="${CT_LIB_DIR}/samples/${CT_TARGET}/${CT_LIBC}-${CT_LIBC_VERSION}.config" > CT_GMP_V_4_3_2=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/i586-geode-linux-uclibc/crosstool.config > --- a/samples/i586-geode-linux-uclibc/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/i586-geode-linux-uclibc/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -8,7 +8,7 @@ > CT_KERNEL_V_2_6_36=y > CT_BINUTILS_V_2_20_1a=y > CT_BINUTILS_FOR_TARGET=y > -CT_CC_V_4_4_5=y > +CT_CC_GCC_V_4_4_5=y > CT_CC_LANG_FORTRAN=y > CT_CC_LANG_CXX=y > CT_CC_LANG_JAVA=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/i586-mingw32msvc,i686-none-linux-gnu/crosstool.config > --- a/samples/i586-mingw32msvc,i686-none-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/i586-mingw32msvc,i686-none-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -12,7 +12,7 @@ > CT_KERNEL_V_2_6_33=y > CT_BINUTILS_V_2_19_1a=y > CT_BINUTILS_EXTRA_CONFIG_ARRAY="--enable-targets=i686-none-linux-gnu" > -CT_CC_V_4_3_2=y > +CT_CC_GCC_V_4_3_2=y > CT_CC_LANG_CXX=y > CT_LIBC_glibc=y > CT_LIBC_GLIBC_V_2_9=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/i686-nptl-linux-gnu/crosstool.config > --- a/samples/i686-nptl-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/i686-nptl-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -13,7 +13,7 @@ > CT_BINUTILS_LD_WRAPPER=y > CT_BINUTILS_PLUGINS=y > CT_BINUTILS_FOR_TARGET=y > -CT_CC_V_4_5_2=y > +CT_CC_GCC_V_4_5_2=y > CT_CC_LANG_FORTRAN=y > CT_CC_LANG_CXX=y > CT_CC_LANG_JAVA=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/i686-unknown-mingw32/crosstool.config > --- a/samples/i686-unknown-mingw32/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/i686-unknown-mingw32/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -7,7 +7,7 @@ > CT_KERNEL_windows=y > CT_BINUTILS_V_2_21_1a=y > CT_BINUTILS_PLUGINS=y > -CT_CC_V_4_5_2=y > +CT_CC_GCC_V_4_5_2=y > CT_CC_LANG_CXX=y > CT_MINGW_DIRECTX=y > CT_MINGW_DDK=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/m68k-unknown-elf/crosstool.config > --- a/samples/m68k-unknown-elf/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/m68k-unknown-elf/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -6,7 +6,7 @@ > CT_ARCH_m68k=y > CT_ARCH_BINFMT_FLAT=y > CT_BINUTILS_V_2_20_1a=y > -CT_CC_V_4_3_4=y > +CT_CC_GCC_V_4_3_4=y > CT_LIBC_none=y > CT_GMP_V_4_3_2=y > CT_MPFR_V_2_4_2=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/mips-ar2315-linux-gnu/crosstool.config > --- a/samples/mips-ar2315-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/mips-ar2315-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -10,7 +10,7 @@ > CT_KERNEL_linux=y > CT_KERNEL_V_2_6_33=y > CT_BINUTILS_V_2_19_1a=y > -CT_CC_V_4_3_2=y > +CT_CC_GCC_V_4_3_2=y > CT_CC_LANG_CXX=y > CT_LIBC_EGLIBC_V_2_9=y > CT_EGLIBC_REVISION="{2009-07-21}" > diff -r 7e569a9cb5fd -r 65771b86df01 samples/mips-malta-linux-gnu/crosstool.config > --- a/samples/mips-malta-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/mips-malta-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -7,7 +7,7 @@ > CT_KERNEL_linux=y > CT_KERNEL_V_2_6_38=y > CT_BINUTILS_V_2_21_1a=y > -CT_CC_V_4_4_6=y > +CT_CC_GCC_V_4_4_6=y > # CT_CC_GCC_USE_GRAPHITE is not set > CT_LIBC_EGLIBC_V_2_13=y > CT_DEBUG_gdb=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/mips-unknown-elf/crosstool.config > --- a/samples/mips-unknown-elf/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/mips-unknown-elf/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -4,7 +4,7 @@ > CT_ARCH_FLOAT_SW=y > CT_ARCH_mips=y > CT_BINUTILS_V_2_19_1a=y > -CT_CC_V_4_3_2=y > +CT_CC_GCC_V_4_3_2=y > CT_LIBC_none=y > CT_DEBUG_gdb=y > CT_GDB_V_6_8a=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/mips-unknown-linux-uclibc/crosstool.config > --- a/samples/mips-unknown-linux-uclibc/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/mips-unknown-linux-uclibc/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -8,7 +8,7 @@ > CT_KERNEL_linux=y > CT_KERNEL_V_3_6=y > CT_BINUTILS_V_2_21_1a=y > -CT_CC_V_4_6_4=y > +CT_CC_GCC_V_4_6_4=y > CT_CC_LANG_FORTRAN=y > CT_CC_LANG_CXX=y > CT_LIBC_uClibc=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/mips64el-n32-linux-uclibc/crosstool.config > --- a/samples/mips64el-n32-linux-uclibc/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/mips64el-n32-linux-uclibc/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -10,7 +10,7 @@ > CT_KERNEL_linux=y > CT_KERNEL_V_2_6_31=y > CT_BINUTILS_V_2_19_1a=y > -CT_CC_V_4_3_2=y > +CT_CC_GCC_V_4_3_2=y > CT_CC_LANG_CXX=y > CT_LIBC_uClibc=y > CT_LIBC_UCLIBC_V_0_9_30_1=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/mips64el-n64-linux-uclibc/crosstool.config > --- a/samples/mips64el-n64-linux-uclibc/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/mips64el-n64-linux-uclibc/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -11,7 +11,7 @@ > CT_KERNEL_linux=y > CT_KERNEL_V_2_6_31=y > CT_BINUTILS_V_2_19_1a=y > -CT_CC_V_4_3_2=y > +CT_CC_GCC_V_4_3_2=y > CT_CC_LANG_CXX=y > CT_LIBC_uClibc=y > CT_LIBC_UCLIBC_V_0_9_30_1=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/mipsel-sde-elf/crosstool.config > --- a/samples/mipsel-sde-elf/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/mipsel-sde-elf/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -6,7 +6,7 @@ > CT_ARCH_mips=y > CT_TARGET_VENDOR="sde" > CT_BINUTILS_V_2_21_1a=y > -CT_CC_V_4_4_6=y > +CT_CC_GCC_V_4_4_6=y > # CT_CC_GCC_ENABLE_TARGET_OPTSPACE is not set > CT_LIBC_none=y > CT_DEBUG_gdb=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/mipsel-unknown-linux-gnu/crosstool.config > --- a/samples/mipsel-unknown-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/mipsel-unknown-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -9,7 +9,7 @@ > CT_KERNEL_V_2_6_31=y > CT_BINUTILS_V_2_19_1a=y > CT_BINUTILS_FOR_TARGET=y > -CT_CC_V_4_3_2=y > +CT_CC_GCC_V_4_3_2=y > CT_CC_LANG_CXX=y > CT_LIBC_glibc=y > CT_LIBC_GLIBC_V_2_9=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/powerpc-405-linux-gnu/crosstool.config > --- a/samples/powerpc-405-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/powerpc-405-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -10,7 +10,7 @@ > CT_KERNEL_V_2_6_31=y > CT_BINUTILS_V_2_19_1a=y > CT_BINUTILS_FOR_TARGET=y > -CT_CC_V_4_3_2=y > +CT_CC_GCC_V_4_3_2=y > CT_CC_LANG_FORTRAN=y > CT_CC_LANG_CXX=y > CT_CC_LANG_JAVA=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/powerpc-860-linux-gnu/crosstool.config > --- a/samples/powerpc-860-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/powerpc-860-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -9,7 +9,7 @@ > CT_KERNEL_V_2_6_31=y > CT_BINUTILS_V_2_19_1a=y > CT_BINUTILS_FOR_TARGET=y > -CT_CC_V_4_3_2=y > +CT_CC_GCC_V_4_3_2=y > CT_CC_LANG_FORTRAN=y > CT_CC_LANG_CXX=y > CT_CC_EXTRA_CONFIG_ARRAY="--with-cpu=860 --enable-cxx-flags=-mcpu=860 --with-float=soft --enable-cxx-flags=-msoft-float" > diff -r 7e569a9cb5fd -r 65771b86df01 samples/powerpc-e300c3-linux-gnu/crosstool.config > --- a/samples/powerpc-e300c3-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/powerpc-e300c3-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -9,7 +9,7 @@ > CT_KERNEL_V_2_6_36=y > CT_BINUTILS_V_2_21_1a=y > CT_BINUTILS_FOR_TARGET=y > -CT_CC_V_4_5_2=y > +CT_CC_GCC_V_4_5_2=y > CT_CC_LANG_CXX=y > CT_CC_EXTRA_CONFIG_ARRAY="--with-long-double-128" > # CT_CC_GCC_ENABLE_TARGET_OPTSPACE is not set > diff -r 7e569a9cb5fd -r 65771b86df01 samples/powerpc-e500v2-linux-gnuspe/crosstool.config > --- a/samples/powerpc-e500v2-linux-gnuspe/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/powerpc-e500v2-linux-gnuspe/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -14,7 +14,7 @@ > CT_BINUTILS_EXTRA_CONFIG_ARRAY="--enable-spe=yes --enable-e500x2 --with-e500x2" > CT_BINUTILS_FOR_TARGET=y > CT_CC_GCC_SHOW_LINARO=y > -CT_CC_V_4_6_4=y > +CT_CC_GCC_V_4_6_4=y > CT_CC_LANG_CXX=y > CT_CC_EXTRA_CONFIG_ARRAY="--with-long-double-128" > # CT_CC_GCC_ENABLE_TARGET_OPTSPACE is not set > diff -r 7e569a9cb5fd -r 65771b86df01 samples/powerpc-unknown-linux-gnu/crosstool.config > --- a/samples/powerpc-unknown-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/powerpc-unknown-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -6,7 +6,7 @@ > CT_KERNEL_V_2_6_31=y > CT_BINUTILS_V_2_19_1a=y > CT_BINUTILS_FOR_TARGET=y > -CT_CC_V_4_3_2=y > +CT_CC_GCC_V_4_3_2=y > CT_CC_LANG_FORTRAN=y > CT_CC_LANG_CXX=y > CT_CC_LANG_JAVA=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/powerpc-unknown-linux-uclibc/crosstool.config > --- a/samples/powerpc-unknown-linux-uclibc/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/powerpc-unknown-linux-uclibc/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -7,7 +7,7 @@ > CT_KERNEL_V_2_6_31=y > CT_BINUTILS_V_2_19_1a=y > CT_BINUTILS_FOR_TARGET=y > -CT_CC_V_4_2_4=y > +CT_CC_GCC_V_4_2_4=y > CT_CC_LANG_FORTRAN=y > CT_CC_LANG_CXX=y > CT_LIBC_uClibc=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/powerpc-unknown_nofpu-linux-gnu/crosstool.config > --- a/samples/powerpc-unknown_nofpu-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/powerpc-unknown_nofpu-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -8,7 +8,7 @@ > CT_KERNEL_V_2_6_31=y > CT_BINUTILS_V_2_19_1a=y > CT_BINUTILS_FOR_TARGET=y > -CT_CC_V_4_3_2=y > +CT_CC_GCC_V_4_3_2=y > CT_CC_LANG_FORTRAN=y > CT_CC_LANG_CXX=y > CT_CC_LANG_JAVA=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/powerpc64-unknown-linux-gnu/crosstool.config > --- a/samples/powerpc64-unknown-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/powerpc64-unknown-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -8,7 +8,7 @@ > CT_KERNEL_V_2_6_31=y > CT_BINUTILS_V_2_20_1a=y > CT_BINUTILS_FOR_TARGET=y > -CT_CC_V_4_5_2=y > +CT_CC_GCC_V_4_5_2=y > CT_CC_LANG_FORTRAN=y > CT_CC_LANG_CXX=y > CT_CC_LANG_JAVA=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/s390-ibm-linux-gnu/crosstool.config > --- a/samples/s390-ibm-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/s390-ibm-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -6,7 +6,7 @@ > CT_KERNEL_linux=y > CT_KERNEL_V_2_6_31=y > CT_BINUTILS_V_2_20_1a=y > -CT_CC_V_4_3_4=y > +CT_CC_GCC_V_4_3_4=y > CT_CC_LANG_CXX=y > CT_LIBC_glibc=y > CT_LIBC_GLIBC_V_2_9=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/s390x-ibm-linux-gnu/crosstool.config > --- a/samples/s390x-ibm-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/s390x-ibm-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -8,7 +8,7 @@ > CT_KERNEL_linux=y > CT_KERNEL_V_2_6_31=y > CT_BINUTILS_V_2_19_1a=y > -CT_CC_V_4_4_5=y > +CT_CC_GCC_V_4_4_5=y > CT_CC_LANG_CXX=y > CT_LIBC_glibc=y > CT_LIBC_GLIBC_V_2_9=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/sh4-unknown-linux-gnu/crosstool.config > --- a/samples/sh4-unknown-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/sh4-unknown-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -7,7 +7,7 @@ > CT_KERNEL_linux=y > CT_KERNEL_V_2_6_27=y > CT_BINUTILS_V_2_19_1a=y > -CT_CC_V_4_3_2=y > +CT_CC_GCC_V_4_3_2=y > CT_CC_LANG_CXX=y > CT_LIBC_glibc=y > CT_LIBC_GLIBC_V_2_9=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/x86_64-unknown-linux-gnu/crosstool.config > --- a/samples/x86_64-unknown-linux-gnu/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/x86_64-unknown-linux-gnu/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -7,7 +7,7 @@ > CT_KERNEL_V_2_6_33=y > CT_BINUTILS_V_2_20_1a=y > CT_BINUTILS_FOR_TARGET=y > -CT_CC_V_4_4_3=y > +CT_CC_GCC_V_4_4_3=y > CT_CC_LANG_FORTRAN=y > CT_CC_LANG_CXX=y > CT_CC_LANG_JAVA=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/x86_64-unknown-linux-uclibc/crosstool.config > --- a/samples/x86_64-unknown-linux-uclibc/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/x86_64-unknown-linux-uclibc/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -7,7 +7,7 @@ > CT_KERNEL_V_2_6_33=y > CT_BINUTILS_V_2_20_1a=y > CT_BINUTILS_FOR_TARGET=y > -CT_CC_V_4_4_3=y > +CT_CC_GCC_V_4_4_3=y > CT_CC_LANG_FORTRAN=y > CT_CC_LANG_CXX=y > CT_CC_LANG_JAVA=y > diff -r 7e569a9cb5fd -r 65771b86df01 samples/x86_64-unknown-mingw32/crosstool.config > --- a/samples/x86_64-unknown-mingw32/crosstool.config Sat Nov 16 18:14:45 2013 +0100 > +++ b/samples/x86_64-unknown-mingw32/crosstool.config Mon Dec 02 21:51:09 2013 +0100 > @@ -7,7 +7,7 @@ > CT_KERNEL_windows=y > CT_BINUTILS_V_2_21_1a=y > CT_BINUTILS_PLUGINS=y > -CT_CC_V_4_5_2=y > +CT_CC_GCC_V_4_5_2=y > CT_CC_LANG_CXX=y > CT_MINGW_DIRECTX=y > CT_MINGW_DDK=y > diff -r 7e569a9cb5fd -r 65771b86df01 scripts/build/cc.sh > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/scripts/build/cc.sh Mon Dec 02 21:51:09 2013 +0100 > @@ -0,0 +1,59 @@ > +# Wrapper to build the companion tools facilities > + > +# List all companion tools facilities, and parse their scripts > +CT_CC_FACILITY_LIST= > +for f in "${CT_LIB_DIR}/scripts/build/cc/"*.sh; do > + _f="$(basename "${f}" .sh)" > + _f="${_f#???-}" > + __f="CT_CC_${_f}" > + if [ "${!__f}" = "y" ]; then > + CT_DoLog DEBUG "Enabling cc '${_f}'" > + . "${f}" > + CT_CC_FACILITY_LIST="${CT_CC_FACILITY_LIST} ${_f}" > + else > + CT_DoLog DEBUG "Disabling cc '${_f}'" > + fi > +done > + > +# Download the cc facilities > +do_cc_get() { > + for f in ${CT_CC_FACILITY_LIST}; do > + do_${f}_get > + done > +} > + > +# Extract and patch the cc facilities > +do_cc_extract() { > + for f in ${CT_CC_FACILITY_LIST}; do > + do_${f}_extract > + done > +} > + > +# Core pass 1 the cc facilities > +do_cc_core_pass_1() { > + for f in ${CT_CC_FACILITY_LIST}; do > + do_${f}_core_pass_1 > + done > +} > + > +# Core pass 2 the cc facilities > +do_cc_core_pass_2() { > + for f in ${CT_CC_FACILITY_LIST}; do > + do_${f}_core_pass_2 > + done > +} > + > +# Build for build the cc facilities > +do_cc_for_build() { > + for f in ${CT_CC_FACILITY_LIST}; do > + do_${f}_for_build > + done > +} > + > +# Build for host the cc facilities > +do_cc_for_host() { > + for f in ${CT_CC_FACILITY_LIST}; do > + do_${f}_for_host > + done > +} > + > diff -r 7e569a9cb5fd -r 65771b86df01 scripts/build/cc/100-gcc.sh > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/scripts/build/cc/100-gcc.sh Mon Dec 02 21:51:09 2013 +0100 > @@ -0,0 +1,874 @@ > +# 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 > + > +# Download gcc > +do_gcc_get() { > + local linaro_version > + local linaro_series > + local linaro_base_url="http://launchpad.net/gcc-linaro" > + > + if [ "${CT_CC_GCC_CUSTOM}" = "y" ]; then > + CT_GetCustom "gcc" "${CT_CC_GCC_VERSION}" "${CT_CC_GCC_CUSTOM_LOCATION}" > + else > + # Account for the Linaro versioning > + linaro_version="$( echo "${CT_CC_GCC_VERSION}" \ > + |sed -r -e 's/^linaro-//;' \ > + )" > + linaro_series="$( echo "${linaro_version}" \ > + |sed -r -e 's/-.*//;' \ > + )" > + > + # Ah! gcc folks are kind of 'different': they store the tarballs in > + # subdirectories of the same name! > + # 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! > + CT_GetFile "gcc-${CT_CC_GCC_VERSION}" \ > + {ftp,http}://ftp.gnu.org/gnu/gcc{,{,/releases}/gcc-${CT_CC_GCC_VERSION}} \ > + ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-${CT_CC_GCC_VERSION} \ > + ftp://ftp.uvsq.fr/pub/gcc/snapshots/${CT_CC_GCC_VERSION} \ > + "${linaro_base_url}/${linaro_series}/${linaro_version}/+download" > + fi # ! custom location > + # Starting with GCC 4.3, ecj is used for Java, and will only be > + # built if the configure script finds ecj.jar at the top of the > + # GCC source tree, which will not be there unless we get it and > + # put it there ourselves > + if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y" ]; then > + CT_GetFile ecj-latest .jar ftp://gcc.gnu.org/pub/java \ > + ftp://sourceware.org/pub/java > + fi > +} > + > +# Extract gcc > +do_gcc_extract() { > + # If using custom directory location, nothing to do > + if [ "${CT_CC_GCC_CUSTOM}" = "y" \ > + -a -d "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}" ]; then > + return 0 > + fi > + > + CT_Extract "gcc-${CT_CC_GCC_VERSION}" > + CT_Patch "gcc" "${CT_CC_GCC_VERSION}" > + > + # Copy ecj-latest.jar to ecj.jar at the top of the GCC source tree > + if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y" \ > + -a ! -f "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/ecj.jar" \ > + ]; then > + CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/ecj-latest.jar" "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/ecj.jar" > + fi > +} > + > +#------------------------------------------------------------------------------ > +# This function builds up the set of languages to enable > +# No argument expected, returns the comma-separated language list on stdout > +cc_gcc_lang_list() { > + local lang_list > + > + lang_list="c" > + [ "${CT_CC_LANG_CXX}" = "y" ] && lang_list+=",c++" > + [ "${CT_CC_LANG_FORTRAN}" = "y" ] && lang_list+=",fortran" > + [ "${CT_CC_LANG_ADA}" = "y" ] && lang_list+=",ada" > + [ "${CT_CC_LANG_JAVA}" = "y" ] && lang_list+=",java" > + [ "${CT_CC_LANG_OBJC}" = "y" ] && lang_list+=",objc" > + [ "${CT_CC_LANG_OBJCXX}" = "y" ] && lang_list+=",obj-c++" > + [ "${CT_CC_LANG_GOLANG}" = "y" ] && lang_list+=",go" > + lang_list+="${CT_CC_LANG_OTHERS:+,${CT_CC_LANG_OTHERS}}" > + > + printf "%s" "${lang_list}" > +} > + > +#------------------------------------------------------------------------------ > +# Core gcc pass 1 > +do_gcc_core_pass_1() { > + local -a core_opts > + > + if [ "${CT_CC_CORE_PASSES_NEEDED}" != "y" ]; then > + return 0 > + fi > + > + core_opts+=( "mode=static" ) > + core_opts+=( "host=${CT_BUILD}" ) > + core_opts+=( "complibs=${CT_BUILDTOOLS_PREFIX_DIR}" ) > + core_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" ) > + core_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" ) > + core_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" ) > + core_opts+=( "lang_list=c" ) > + > + CT_DoStep INFO "Installing pass-1 core C gcc compiler" > + CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-core-pass-1" > + > + do_gcc_core_backend "${core_opts[@]}" > + > + CT_Popd > + CT_EndStep > +} > + > +# Core gcc pass 2 > +do_gcc_core_pass_2() { > + local -a core_opts > + > + if [ "${CT_CC_CORE_PASSES_NEEDED}" != "y" ]; then > + return 0 > + fi > + > + # Common options: > + core_opts+=( "host=${CT_BUILD}" ) > + core_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" ) > + core_opts+=( "complibs=${CT_BUILDTOOLS_PREFIX_DIR}" ) > + core_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" ) > + core_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" ) > + core_opts+=( "lang_list=c" ) > + > + # Different conditions are at stake here: > + # - In case the threading model is NPTL, we need a shared-capable core > + # gcc; in all other cases, we need a static-only core gcc. > + # - In case the threading model is NPTL or win32, or gcc is 4.3 or > + # later, we need to build libgcc > + case "${CT_THREADS}" in > + nptl) > + core_opts+=( "mode=shared" ) > + core_opts+=( "build_libgcc=yes" ) > + ;; > + win32) > + core_opts+=( "mode=static" ) > + core_opts+=( "build_libgcc=yes" ) > + ;; > + *) > + core_opts+=( "mode=static" ) > + if [ "${CT_CC_GCC_4_3_or_later}" = "y" ]; then > + core_opts+=( "build_libgcc=yes" ) > + fi > + ;; > + esac > + > + CT_DoStep INFO "Installing pass-2 core C gcc compiler" > + CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-core-pass-2" > + > + do_gcc_core_backend "${core_opts[@]}" > + > + CT_Popd > + CT_EndStep > +} > + > +#------------------------------------------------------------------------------ > +# Build core gcc > +# This function is used to build the core C compiler. > +# Usage: do_gcc_core_backend param=value [...] > +# Parameter : Definition : Type : Default > +# mode : build a 'static', 'shared' or 'baremetal' : string : (none) > +# host : the machine the core will run on : tuple : (none) > +# prefix : dir prefix to install into : dir : (none) > +# complibs : dir where complibs are isntalled : dir : (none) > +# lang_list : the list of languages to build : string : (empty) > +# build_libgcc : build libgcc or not : bool : no > +# build_libstdcxx : build libstdc++ or not : bool : no > +# build_staticlinked : build statically linked or not : bool : no > +# build_manuals : whether to build manuals or not : bool : no > +# cflags : cflags to use : string : (empty) > +# ldflags : ldflags to use : string : (empty) > +# Usage: do_gcc_core_backend mode=[static|shared|baremetal] build_libgcc=[yes|no] build_staticlinked=[yes|no] > +do_gcc_core_backend() { > + local mode > + local build_libgcc=no > + local build_libstdcxx=no > + local build_staticlinked=no > + local build_manuals=no > + local host > + local prefix > + local complibs > + local lang_list > + local cflags > + local ldflags > + local tmp > + local -a host_libstdcxx_flags > + local -a extra_config > + local -a core_LDFLAGS > + local -a core_targets > + local arg > + local exeext > + > + for arg in "$@"; do > + eval "${arg// /\\ }" > + done > + > + CT_DoLog EXTRA "Configuring core C gcc compiler" > + > + case "${mode}" in > + static) > + extra_config+=("--with-newlib") > + extra_config+=("--enable-threads=no") > + extra_config+=("--disable-shared") > + copy_headers=y # For baremetal, as there's no headers to copy, > + # we copy an empty directory. So, who cares? > + ;; > + shared) > + extra_config+=("--enable-shared") > + copy_headers=y > + ;; > + baremetal) > + extra_config+=("--with-newlib") > + extra_config+=("--enable-threads=no") > + extra_config+=("--disable-shared") > + copy_headers=n > + ;; > + *) > + CT_Abort "Internal Error: 'mode' must be one of: 'static', 'shared' or 'baremetal', not '${mode:-(empty)}'" > + ;; > + esac > + > + if [ "${CT_CC_GCC_HAS_PKGVERSION_BUGURL}" = "y" ]; then > + # Bare metal delivers the core compiler as final compiler, so add version info and bugurl > + extra_config+=("--with-pkgversion=${CT_PKGVERSION}") > + [ -n "${CT_TOOLCHAIN_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_TOOLCHAIN_BUGURL}") > + fi > + > + if [ "${copy_headers}" = "y" ]; then > + CT_DoLog DEBUG "Copying headers to install area of bootstrap gcc, so it can build libgcc2" > + CT_DoExecLog ALL cp -a "${CT_HEADERS_DIR}" "${prefix}/${CT_TARGET}/include" > + fi > + > + for tmp in ARCH ABI CPU TUNE FPU FLOAT; do > + eval tmp="\${CT_ARCH_WITH_${tmp}}" > + if [ -n "${tmp}" ]; then > + extra_config+=("${tmp}") > + fi > + done > + if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then > + extra_config+=("--enable-__cxa_atexit") > + else > + extra_config+=("--disable-__cxa_atexit") > + fi > + > + core_LDFLAGS+=("${ldflags}") > + > + # *** WARNING ! *** > + # Keep this full if-else-if-elif-fi-fi block in sync > + # with the same block in do_gcc, below. > + if [ "${build_staticlinked}" = "yes" ]; then > + core_LDFLAGS+=("-static") > + host_libstdcxx_flags+=("-static-libgcc") > + host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++") > + host_libstdcxx_flags+=("-lm") > + # Companion libraries are build static (eg !shared), so > + # the libstdc++ is not pulled automatically, although it > + # is needed. Shoe-horn it in our LDFLAGS > + # Ditto libm on some Fedora boxen > + core_LDFLAGS+=("-lstdc++") > + core_LDFLAGS+=("-lm") > + else > + if [ "${CT_CC_GCC_STATIC_LIBSTDCXX}" = "y" ]; then > + # this is from CodeSourcery arm-2010q1-202-arm-none-linux-gnueabi.src.tar.bz2 > + # build script > + # INFO: if the host gcc is gcc-4.5 then presumably we could use -static-libstdc++, > + # see http://gcc.gnu.org/ml/gcc-patches/2009-06/msg01635.html > + host_libstdcxx_flags+=("-static-libgcc") > + host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++,-Bdynamic") > + host_libstdcxx_flags+=("-lm") > + elif [ "${CT_COMPLIBS_SHARED}" != "y" ]; then > + # When companion libraries are build static (eg !shared), > + # the libstdc++ is not pulled automatically, although it > + # is needed. Shoe-horn it in our LDFLAGS > + # Ditto libm on some Fedora boxen > + core_LDFLAGS+=("-lstdc++") > + core_LDFLAGS+=("-lm") > + fi > + fi > + > + if [ "${CT_CC_GCC_USE_GMP_MPFR}" = "y" ]; then > + extra_config+=("--with-gmp=${complibs}") > + extra_config+=("--with-mpfr=${complibs}") > + fi > + if [ "${CT_CC_GCC_USE_MPC}" = "y" ]; then > + extra_config+=("--with-mpc=${complibs}") > + fi > + if [ "${CT_CC_GCC_USE_GRAPHITE}" = "y" ]; then > + if [ "${CT_PPL}" = "y" ]; then > + extra_config+=("--with-ppl=${complibs}") > + # With PPL 0.11+, also pull libpwl if needed > + if [ "${CT_PPL_NEEDS_LIBPWL}" = "y" ]; then > + host_libstdcxx_flags+=("-L${complibs}/lib") > + host_libstdcxx_flags+=("-lpwl") > + fi > + fi > + if [ "${CT_ISL}" = "y" ]; then > + extra_config+=("--with-isl=${complibs}") > + fi > + extra_config+=("--with-cloog=${complibs}") > + elif [ "${CT_CC_GCC_HAS_GRAPHITE}" = "y" ]; then > + extra_config+=("--with-ppl=no") > + extra_config+=("--with-isl=no") > + extra_config+=("--with-cloog=no") > + fi > + if [ "${CT_CC_GCC_USE_LTO}" = "y" ]; then > + extra_config+=("--with-libelf=${complibs}") > + extra_config+=("--enable-lto") > + elif [ "${CT_CC_GCC_HAS_LTO}" = "y" ]; then > + extra_config+=("--with-libelf=no") > + extra_config+=("--disable-lto") > + fi > + > + if [ ${#host_libstdcxx_flags[@]} -ne 0 ]; then > + extra_config+=("--with-host-libstdcxx=${host_libstdcxx_flags[*]}") > + fi > + > + if [ "${CT_CC_GCC_ENABLE_TARGET_OPTSPACE}" = "y" ]; then > + extra_config+=("--enable-target-optspace") > + fi > + > + case "${CT_CC_GCC_LDBL_128}" in > + y) extra_config+=("--with-long-double-128");; > + m) ;; > + "") extra_config+=("--without-long-double-128");; > + esac > + > + if [ "${CT_CC_GCC_BUILD_ID}" = "y" ]; then > + extra_config+=( --enable-linker-build-id ) > + fi > + > + case "${CT_CC_GCC_LNK_HASH_STYLE}" in > + "") ;; > + *) extra_config+=( "--with-linker-hash-style=${CT_CC_GCC_LNK_HASH_STYLE}" );; > + esac > + > + case "${CT_ARCH}" in > + mips) > + case "${CT_CC_GCC_mips_llsc}" in > + y) extra_config+=( --with-llsc );; > + m) ;; > + *) extra_config+=( --without-llsc );; > + esac > + case "${CT_CC_GCC_mips_synci}" in > + y) extra_config+=( --with-synci );; > + m) ;; > + *) extra_config+=( --without-synci );; > + esac > + if [ "${CT_CC_GCC_mips_plt}" ]; then > + extra_config+=( --with-mips-plt ) > + fi > + ;; # ARCH is mips > + esac > + > + extra_config+=(--disable-libgomp) > + extra_config+=(--disable-libmudflap) > + > + [ "${CT_TOOLCHAIN_ENABLE_NLS}" != "y" ] && extra_config+=("--disable-nls") > + > + [ "${CT_CC_GCC_DISABLE_PCH}" = "y" ] && extra_config+=("--disable-libstdcxx-pch") > + > + if [ "${CT_CC_GCC_SYSTEM_ZLIB}" = "y" ]; then > + extra_config+=("--with-system-zlib") > + fi > + > + if [ "${CT_MULTILIB}" = "y" ]; then > + extra_config+=("--enable-multilib") > + else > + extra_config+=("--disable-multilib") > + fi > + > + 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) > + CT_DoExecLog CFG \ > + CC_FOR_BUILD="${CT_BUILD}-gcc" \ > + CFLAGS_FOR_BUILD="${CT_EXTRA_CFLAGS_FOR_BUILD-${cflags}}" \ > + CFLAGS="${cflags}" \ > + CXXFLAGS="${cflags}" \ > + LDFLAGS="${core_LDFLAGS[*]}" \ > + "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/configure" \ > + --build=${CT_BUILD} \ > + --host=${host} \ > + --target=${CT_TARGET} \ > + --prefix="${prefix}" \ > + --with-local-prefix="${CT_SYSROOT_DIR}" \ > + --disable-libmudflap \ > + ${CC_CORE_SYSROOT_ARG} \ > + "${extra_config[@]}" \ > + --enable-languages="${lang_list}" \ > + "${CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY[@]}" > + > + if [ "${build_libgcc}" = "yes" ]; then > + # 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}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ]; then > + CT_DoExecLog CFG make ${JOBSFLAGS} configure-libiberty > + CT_DoExecLog ALL make ${JOBSFLAGS} -C libiberty libiberty.a > + CT_DoExecLog CFG make ${JOBSFLAGS} configure-gcc configure-libcpp > + CT_DoExecLog ALL make ${JOBSFLAGS} all-libcpp > + else > + CT_DoExecLog CFG make ${JOBSFLAGS} configure-gcc configure-libcpp configure-build-libiberty > + CT_DoExecLog ALL make ${JOBSFLAGS} all-libcpp all-build-libiberty > + fi > + # HACK: gcc-4.2 uses libdecnumber to build libgcc.mk, so build it here. > + if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/libdecnumber" ]; then > + CT_DoExecLog CFG make ${JOBSFLAGS} configure-libdecnumber > + CT_DoExecLog ALL make ${JOBSFLAGS} -C libdecnumber libdecnumber.a > + fi > + # HACK: gcc-4.8 uses libbacktrace to make libgcc.mvars, so make it here. > + if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/libbacktrace" ]; then > + CT_DoExecLog CFG make ${JOBSFLAGS} configure-libbacktrace > + CT_DoExecLog ALL make ${JOBSFLAGS} -C libbacktrace > + fi > + > + # Starting with GCC 4.3, libgcc.mk is no longer built, > + # and libgcc.mvars is used instead. > + > + if [ "${CT_CC_GCC_4_3_or_later}" = "y" ]; then > + libgcc_rule="libgcc.mvars" > + core_targets=( gcc target-libgcc ) > + else > + libgcc_rule="libgcc.mk" > + core_targets=( gcc ) > + fi > + > + # On bare metal and canadian build the host-compiler is used when > + # actually the build-system compiler is required. Choose the correct > + # compilers for canadian build and use the defaults on other > + # configurations. > + if [ "${CT_BARE_METAL},${CT_CANADIAN}" = "y,y" ]; then > + repair_cc="CC_FOR_BUILD=${CT_BUILD}-gcc \ > + CXX_FOR_BUILD=${CT_BUILD}-g++ \ > + GCC_FOR_TARGET=${CT_TARGET}-gcc" > + else > + repair_cc="" > + fi > + > + CT_DoExecLog ALL make ${JOBSFLAGS} -C gcc ${libgcc_rule} \ > + ${repair_cc} > + sed -r -i -e 's@-lc@@g' gcc/${libgcc_rule} > + else # build_libgcc > + core_targets=( gcc ) > + fi # ! build libgcc > + if [ "${build_libstdcxx}" = "yes" \ > + -a "${CT_CC_LANG_CXX}" = "y" \ > + ]; then > + core_targets+=( target-libstdc++-v3 ) > + fi > + > + CT_DoLog EXTRA "Building core C gcc compiler" > + CT_DoExecLog ALL make ${JOBSFLAGS} "${core_targets[@]/#/all-}" > + > + CT_DoLog EXTRA "Installing core C gcc compiler" > + CT_DoExecLog ALL make ${JOBSFLAGS} "${core_targets[@]/#/install-}" > + > + if [ "${build_manuals}" = "yes" ]; then > + CT_DoLog EXTRA "Building the gcc manuals" > + CT_DoExecLog ALL make pdf html > + CT_DoLog EXTRA "Installing the gcc manuals" > + CT_DoExecLog ALL make install-{pdf,html}-gcc > + fi > + > + # Create a symlink ${CT_TARGET}-cc to ${CT_TARGET}-gcc to always be able > + # to call the C compiler with the same, somewhat canonical name. > + # check whether compiler has an extension > + file="$( ls -1 "${prefix}/bin/${CT_TARGET}-gcc."* 2>/dev/null || true )" > + [ -z "${file}" ] || ext=".${file##*.}" > + CT_DoExecLog ALL ln -sfv "${CT_TARGET}-gcc${ext}" "${prefix}/bin/${CT_TARGET}-cc${ext}" > + > + if [ "${CT_MULTILIB}" = "y" ]; then > + if [ "${CT_CANADIAN}" = "y" -a "${mode}" = "baremetal" \ > + -a "${host}" = "${CT_HOST}" ]; then > + CT_DoLog WARN "Canadian Cross unable to confirm multilibs configured correctly" > + else > + multilibs=( $( "${prefix}/bin/${CT_TARGET}-gcc" -print-multi-lib \ > + |tail -n +2 ) ) > + if [ ${#multilibs[@]} -ne 0 ]; then > + CT_DoLog EXTRA "gcc configured with these multilibs (besides the default):" > + for i in "${multilibs[@]}"; do > + dir="${i%%;*}" > + flags="${i#*;}" > + CT_DoLog EXTRA " ${flags//@/ -} --> ${dir}/" > + done > + else > + CT_DoLog WARN "gcc configured for multilib, but none available" > + fi > + fi > + fi > +} > + > +#------------------------------------------------------------------------------ > +# Build complete gcc to run on build > +do_gcc_for_build() { > + local -a build_final_opts > + local build_final_backend > + > + # In case we're canadian or cross-native, it seems that a > + # real, complete compiler is needed?!? WTF? Sigh... > + # Otherwise, there is nothing to do. > + case "${CT_TOOLCHAIN_TYPE}" in > + native|cross) return 0;; > + esac > + > + build_final_opts+=( "host=${CT_BUILD}" ) > + build_final_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" ) > + build_final_opts+=( "complibs=${CT_BUILDTOOLS_PREFIX_DIR}" ) > + build_final_opts+=( "lang_list=$( cc_gcc_lang_list )" ) > + if [ "${CT_BARE_METAL}" = "y" ]; then > + # In the tests I've done, bare-metal was not impacted by the > + # lack of such a compiler, but better safe than sorry... > + build_final_opts+=( "mode=baremetal" ) > + build_final_opts+=( "build_libgcc=yes" ) > + build_final_opts+=( "build_libstdcxx=yes" ) > + if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then > + build_final_opts+=( "build_staticlinked=yes" ) > + fi > + build_final_backend=do_gcc_core_backend > + else > + build_final_backend=do_gcc_backend > + fi > + > + CT_DoStep INFO "Installing final gcc compiler for build" > + CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-final-build-${CT_BUILD}" > + > + "${build_final_backend}" "${build_final_opts[@]}" > + > + CT_Popd > + CT_EndStep > +} > + > +#------------------------------------------------------------------------------ > +# Build final gcc to run on host > +do_gcc_for_host() { > + local -a final_opts > + local final_backend > + > + final_opts+=( "host=${CT_HOST}" ) > + final_opts+=( "prefix=${CT_PREFIX_DIR}" ) > + final_opts+=( "complibs=${CT_HOST_COMPLIBS_DIR}" ) > + final_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" ) > + final_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" ) > + final_opts+=( "lang_list=$( cc_gcc_lang_list )" ) > + if [ "${CT_BUILD_MANUALS}" = "y" ]; then > + final_opts+=( "build_manuals=yes" ) > + fi > + if [ "${CT_BARE_METAL}" = "y" ]; then > + final_opts+=( "mode=baremetal" ) > + final_opts+=( "build_libgcc=yes" ) > + final_opts+=( "build_libstdcxx=yes" ) > + if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then > + final_opts+=( "build_staticlinked=yes" ) > + fi > + final_backend=do_gcc_core_backend > + else > + final_backend=do_gcc_backend > + fi > + > + CT_DoStep INFO "Installing final gcc compiler" > + CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-final" > + > + "${final_backend}" "${final_opts[@]}" > + > + CT_Popd > + CT_EndStep > +} > + > +#------------------------------------------------------------------------------ > +# Build the final gcc > +# Usage: do_gcc_backend param=value [...] > +# Parameter : Definition : Type : Default > +# host : the host we run onto : tuple : (none) > +# prefix : the runtime prefix : dir : (none) > +# complibs : the companion libraries prefix : dir : (none) > +# cflags : cflags to use : string : (empty) > +# ldflags : ldflags to use : string : (empty) > +# lang_list : the list of languages to build : string : (empty) > +# build_manuals : whether to build manuals or not : bool : no > +do_gcc_backend() { > + local host > + local prefix > + local complibs > + local cflags > + local ldflags > + local lang_list > + local build_manuals > + local -a host_libstdcxx_flags > + local -a extra_config > + local -a final_LDFLAGS > + local tmp > + local arg > + local exeext > + > + for arg in "$@"; do > + eval "${arg// /\\ }" > + done > + > + CT_DoLog EXTRA "Configuring final gcc compiler" > + > + # Enable selected languages > + extra_config+=("--enable-languages=${lang_list}") > + > + for tmp in ARCH ABI CPU TUNE FPU FLOAT; do > + eval tmp="\${CT_ARCH_WITH_${tmp}}" > + if [ -n "${tmp}" ]; then > + extra_config+=("${tmp}") > + fi > + done > + > + [ "${CT_SHARED_LIBS}" = "y" ] || extra_config+=("--disable-shared") > + if [ "${CT_CC_GCC_HAS_PKGVERSION_BUGURL}" = "y" ]; then > + extra_config+=("--with-pkgversion=${CT_PKGVERSION}") > + [ -n "${CT_TOOLCHAIN_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_TOOLCHAIN_BUGURL}") > + fi > + case "${CT_CC_GCC_SJLJ_EXCEPTIONS}" in > + y) extra_config+=("--enable-sjlj-exceptions");; > + m) ;; > + "") extra_config+=("--disable-sjlj-exceptions");; > + esac > + if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then > + extra_config+=("--enable-__cxa_atexit") > + else > + extra_config+=("--disable-__cxa_atexit") > + fi > + if [ -n "${CT_CC_GCC_ENABLE_CXX_FLAGS}" ]; then > + extra_config+=("--enable-cxx-flags=${CT_CC_GCC_ENABLE_CXX_FLAGS}") > + fi > + if [ "${CT_CC_GCC_LIBMUDFLAP}" = "y" ]; then > + extra_config+=(--enable-libmudflap) > + else > + extra_config+=(--disable-libmudflap) > + fi > + if [ "${CT_CC_GCC_LIBGOMP}" = "y" ]; then > + extra_config+=(--enable-libgomp) > + else > + extra_config+=(--disable-libgomp) > + fi > + if [ "${CT_CC_GCC_LIBSSP}" = "y" ]; then > + extra_config+=(--enable-libssp) > + else > + extra_config+=(--disable-libssp) > + fi > + if [ "${CT_CC_GCC_HAS_LIBQUADMATH}" = "y" ]; then > + if [ "${CT_CC_GCC_LIBQUADMATH}" = "y" ]; then > + extra_config+=(--enable-libquadmath) > + extra_config+=(--enable-libquadmath-support) > + else > + extra_config+=(--disable-libquadmath) > + extra_config+=(--disable-libquadmath-support) > + fi > + fi > + > + final_LDFLAGS+=("${ldflags}") > + > + # *** WARNING ! *** > + # Keep this full if-else-if-elif-fi-fi block in sync > + # with the same block in do_gcc_core, above. > + if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then > + final_LDFLAGS+=("-static") > + host_libstdcxx_flags+=("-static-libgcc") > + host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++") > + host_libstdcxx_flags+=("-lm") > + # Companion libraries are build static (eg !shared), so > + # the libstdc++ is not pulled automatically, although it > + # is needed. Shoe-horn it in our LDFLAGS > + # Ditto libm on some Fedora boxen > + final_LDFLAGS+=("-lstdc++") > + final_LDFLAGS+=("-lm") > + else > + if [ "${CT_CC_GCC_STATIC_LIBSTDCXX}" = "y" ]; then > + # this is from CodeSourcery arm-2010q1-202-arm-none-linux-gnueabi.src.tar.bz2 > + # build script > + # INFO: if the host gcc is gcc-4.5 then presumably we could use -static-libstdc++, > + # see http://gcc.gnu.org/ml/gcc-patches/2009-06/msg01635.html > + host_libstdcxx_flags+=("-static-libgcc") > + host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++,-Bdynamic") > + host_libstdcxx_flags+=("-lm") > + elif [ "${CT_COMPLIBS_SHARED}" != "y" ]; then > + # When companion libraries are build static (eg !shared), > + # the libstdc++ is not pulled automatically, although it > + # is needed. Shoe-horn it in our LDFLAGS > + # Ditto libm on some Fedora boxen > + final_LDFLAGS+=("-lstdc++") > + final_LDFLAGS+=("-lm") > + fi > + fi > + > + if [ "${CT_CC_GCC_USE_GMP_MPFR}" = "y" ]; then > + extra_config+=("--with-gmp=${complibs}") > + extra_config+=("--with-mpfr=${complibs}") > + fi > + if [ "${CT_CC_GCC_USE_MPC}" = "y" ]; then > + extra_config+=("--with-mpc=${complibs}") > + fi > + if [ "${CT_CC_GCC_USE_GRAPHITE}" = "y" ]; then > + if [ "${CT_PPL}" = "y" ]; then > + extra_config+=("--with-ppl=${complibs}") > + # With PPL 0.11+, also pull libpwl if needed > + if [ "${CT_PPL_NEEDS_LIBPWL}" = "y" ]; then > + host_libstdcxx_flags+=("-L${complibs}/lib") > + host_libstdcxx_flags+=("-lpwl") > + fi > + fi > + if [ "${CT_ISL}" = "y" ]; then > + extra_config+=("--with-isl=${complibs}") > + fi > + extra_config+=("--with-cloog=${complibs}") > + elif [ "${CT_CC_GCC_HAS_GRAPHITE}" = "y" ]; then > + extra_config+=("--with-ppl=no") > + extra_config+=("--with-isl=no") > + extra_config+=("--with-cloog=no") > + fi > + if [ "${CT_CC_GCC_USE_LTO}" = "y" ]; then > + extra_config+=("--with-libelf=${complibs}") > + elif [ "${CT_CC_GCC_HAS_LTO}" = "y" ]; then > + extra_config+=("--with-libelf=no") > + fi > + > + if [ ${#host_libstdcxx_flags[@]} -ne 0 ]; then > + extra_config+=("--with-host-libstdcxx=${host_libstdcxx_flags[*]}") > + fi > + > + if [ "${CT_THREADS}" = "none" ]; then > + extra_config+=("--disable-threads") > + if [ "${CT_CC_GCC_4_2_or_later}" = y ]; then > + CT_Test "Disabling libgomp for no-thread gcc>=4.2" "${CT_CC_GCC_LIBGOMP}" = "Y" > + extra_config+=("--disable-libgomp") > + fi > + else > + if [ "${CT_THREADS}" = "win32" ]; then > + extra_config+=("--enable-threads=win32") > + extra_config+=("--disable-win32-registry") > + else > + extra_config+=("--enable-threads=posix") > + fi > + fi > + > + if [ "${CT_CC_GCC_ENABLE_TARGET_OPTSPACE}" = "y" ]; then > + extra_config+=("--enable-target-optspace") > + fi > + if [ "${CT_CC_GCC_DISABLE_PCH}" = "y" ]; then > + extra_config+=("--disable-libstdcxx-pch") > + fi > + > + case "${CT_CC_GCC_LDBL_128}" in > + y) extra_config+=("--with-long-double-128");; > + m) ;; > + "") extra_config+=("--without-long-double-128");; > + esac > + > + if [ "${CT_CC_GCC_BUILD_ID}" = "y" ]; then > + extra_config+=( --enable-linker-build-id ) > + fi > + > + case "${CT_CC_GCC_LNK_HASH_STYLE}" in > + "") ;; > + *) extra_config+=( "--with-linker-hash-style=${CT_CC_GCC_LNK_HASH_STYLE}" );; > + esac > + > + if [ "${CT_CC_GCC_ENABLE_PLUGINS}" = "y" ]; then > + extra_config+=( --enable-plugin ) > + fi > + if [ "${CT_CC_GCC_GOLD}" = "y" ]; then > + extra_config+=( --enable-gold ) > + fi > + > + case "${CT_ARCH}" in > + mips) > + case "${CT_CC_GCC_mips_llsc}" in > + y) extra_config+=( --with-llsc );; > + m) ;; > + *) extra_config+=( --without-llsc );; > + esac > + case "${CT_CC_GCC_mips_synci}" in > + y) extra_config+=( --with-synci );; > + m) ;; > + *) extra_config+=( --without-synci );; > + esac > + if [ "${CT_CC_GCC_mips_plt}" ]; then > + extra_config+=( --with-mips-plt ) > + fi > + ;; # ARCH is mips > + esac > + > + [ "${CT_TOOLCHAIN_ENABLE_NLS}" != "y" ] && extra_config+=("--disable-nls") > + > + if [ "${CT_CC_GCC_SYSTEM_ZLIB}" = "y" ]; then > + extra_config+=("--with-system-zlib") > + fi > + > + if [ "${CT_MULTILIB}" = "y" ]; then > + extra_config+=("--enable-multilib") > + else > + extra_config+=("--disable-multilib") > + fi > + > + CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'" > + > + CT_DoExecLog CFG \ > + CC_FOR_BUILD="${CT_BUILD}-gcc" \ > + CFLAGS_FOR_BUILD="${CT_EXTRA_CFLAGS_FOR_BUILD-${cflags}}" \ > + CFLAGS="${cflags}" \ > + CXXFLAGS="${cflags}" \ > + LDFLAGS="${final_LDFLAGS[*]}" \ > + CFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \ > + CXXFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \ > + LDFLAGS_FOR_TARGET="${CT_TARGET_LDFLAGS}" \ > + "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/configure" \ > + --build=${CT_BUILD} \ > + --host=${host} \ > + --target=${CT_TARGET} \ > + --prefix="${prefix}" \ > + ${CC_SYSROOT_ARG} \ > + "${extra_config[@]}" \ > + --with-local-prefix="${CT_SYSROOT_DIR}" \ > + --enable-c99 \ > + --enable-long-long \ > + "${CT_CC_GCC_EXTRA_CONFIG_ARRAY[@]}" > + > + if [ "${CT_CANADIAN}" = "y" ]; then > + CT_DoLog EXTRA "Building libiberty" > + CT_DoExecLog ALL make ${JOBSFLAGS} all-build-libiberty > + fi > + > + CT_DoLog EXTRA "Building final gcc compiler" > + CT_DoExecLog ALL make ${JOBSFLAGS} all > + > + CT_DoLog EXTRA "Installing final gcc compiler" > + CT_DoExecLog ALL make ${JOBSFLAGS} install > + > + if [ "${build_manuals}" = "yes" ]; then > + CT_DoLog EXTRA "Building the gcc manuals" > + CT_DoExecLog ALL make pdf html > + CT_DoLog EXTRA "Installing the gcc manuals" > + CT_DoExecLog ALL make install-{pdf,html}-gcc > + fi > + > + # Create a symlink ${CT_TARGET}-cc to ${CT_TARGET}-gcc to always be able > + # to call the C compiler with the same, somewhat canonical name. > + # check whether compiler has an extension > + file="$( ls -1 "${CT_PREFIX_DIR}/bin/${CT_TARGET}-gcc."* 2>/dev/null || true )" > + [ -z "${file}" ] || ext=".${file##*.}" > + CT_DoExecLog ALL ln -sfv "${CT_TARGET}-gcc${ext}" "${CT_PREFIX_DIR}/bin/${CT_TARGET}-cc${ext}" > + > + if [ "${CT_MULTILIB}" = "y" ]; then > + if [ "${CT_CANADIAN}" = "y" ]; then > + CT_DoLog WARN "Canadian Cross unable to confirm multilibs configured correctly" > + else > + multilibs=( $( "${prefix}/bin/${CT_TARGET}-gcc" -print-multi-lib \ > + |tail -n +2 ) ) > + if [ ${#multilibs[@]} -ne 0 ]; then > + CT_DoLog EXTRA "gcc configured with these multilibs (besides the default):" > + for i in "${multilibs[@]}"; do > + dir="${i%%;*}" > + flags="${i#*;}" > + CT_DoLog EXTRA " ${flags//@/ -} --> ${dir}/" > + done > + else > + CT_DoLog WARN "gcc configured for multilib, but none available" > + fi > + fi > + fi > +} > diff -r 7e569a9cb5fd -r 65771b86df01 scripts/build/cc/gcc.sh > --- a/scripts/build/cc/gcc.sh Sat Nov 16 18:14:45 2013 +0100 > +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 > @@ -1,869 +0,0 @@ > -# 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 > - > -# Download gcc > -do_cc_get() { > - local linaro_version > - local linaro_series > - local linaro_base_url="http://launchpad.net/gcc-linaro" > - > - if [ "${CT_CC_CUSTOM}" = "y" ]; then > - CT_GetCustom "gcc" "${CT_CC_VERSION}" "${CT_CC_CUSTOM_LOCATION}" > - else > - # Account for the Linaro versioning > - linaro_version="$( echo "${CT_CC_VERSION}" \ > - |sed -r -e 's/^linaro-//;' \ > - )" > - linaro_series="$( echo "${linaro_version}" \ > - |sed -r -e 's/-.*//;' \ > - )" > - > - # Ah! gcc folks are kind of 'different': they store the tarballs in > - # subdirectories of the same name! > - # 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! > - CT_GetFile "gcc-${CT_CC_VERSION}" \ > - {ftp,http}://ftp.gnu.org/gnu/gcc{,{,/releases}/gcc-${CT_CC_VERSION}} \ > - ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-${CT_CC_VERSION} \ > - ftp://ftp.uvsq.fr/pub/gcc/snapshots/${CT_CC_VERSION} \ > - "${linaro_base_url}/${linaro_series}/${linaro_version}/+download" > - > - fi # ! custom location > - # Starting with GCC 4.3, ecj is used for Java, and will only be > - # built if the configure script finds ecj.jar at the top of the > - # GCC source tree, which will not be there unless we get it and > - # put it there ourselves > - if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y" ]; then > - CT_GetFile ecj-latest .jar ftp://gcc.gnu.org/pub/java \ > - ftp://sourceware.org/pub/java > - fi > -} > - > -# Extract gcc > -do_cc_extract() { > - # If using custom directory location, nothing to do > - if [ "${CT_CC_CUSTOM}" = "y" \ > - -a -d "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}" ]; then > - return 0 > - fi > - > - CT_Extract "gcc-${CT_CC_VERSION}" > - CT_Patch "gcc" "${CT_CC_VERSION}" > - > - # Copy ecj-latest.jar to ecj.jar at the top of the GCC source tree > - if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y" \ > - -a ! -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar" \ > - ]; then > - CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/ecj-latest.jar" "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar" > - fi > -} > - > -#------------------------------------------------------------------------------ > -# This function builds up the set of languages to enable > -# No argument expected, returns the comma-separated language list on stdout > -cc_gcc_lang_list() { > - local lang_list > - > - lang_list="c" > - [ "${CT_CC_LANG_CXX}" = "y" ] && lang_list+=",c++" > - [ "${CT_CC_LANG_FORTRAN}" = "y" ] && lang_list+=",fortran" > - [ "${CT_CC_LANG_ADA}" = "y" ] && lang_list+=",ada" > - [ "${CT_CC_LANG_JAVA}" = "y" ] && lang_list+=",java" > - [ "${CT_CC_LANG_OBJC}" = "y" ] && lang_list+=",objc" > - [ "${CT_CC_LANG_OBJCXX}" = "y" ] && lang_list+=",obj-c++" > - [ "${CT_CC_LANG_GOLANG}" = "y" ] && lang_list+=",go" > - lang_list+="${CT_CC_LANG_OTHERS:+,${CT_CC_LANG_OTHERS}}" > - > - printf "%s" "${lang_list}" > -} > - > -#------------------------------------------------------------------------------ > -# Core gcc pass 1 > -do_cc_core_pass_1() { > - local -a core_opts > - > - if [ "${CT_CC_CORE_PASSES_NEEDED}" != "y" ]; then > - return 0 > - fi > - > - core_opts+=( "mode=static" ) > - core_opts+=( "host=${CT_BUILD}" ) > - core_opts+=( "complibs=${CT_BUILDTOOLS_PREFIX_DIR}" ) > - core_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" ) > - core_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" ) > - core_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" ) > - core_opts+=( "lang_list=c" ) > - > - CT_DoStep INFO "Installing pass-1 core C compiler" > - CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-core-pass-1" > - > - do_cc_core_backend "${core_opts[@]}" > - > - CT_Popd > - CT_EndStep > -} > - > -# Core gcc pass 2 > -do_cc_core_pass_2() { > - local -a core_opts > - > - if [ "${CT_CC_CORE_PASSES_NEEDED}" != "y" ]; then > - return 0 > - fi > - > - # Common options: > - core_opts+=( "host=${CT_BUILD}" ) > - core_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" ) > - core_opts+=( "complibs=${CT_BUILDTOOLS_PREFIX_DIR}" ) > - core_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" ) > - core_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" ) > - core_opts+=( "lang_list=c" ) > - > - # Different conditions are at stake here: > - # - In case the threading model is NPTL, we need a shared-capable core > - # gcc; in all other cases, we need a static-only core gcc. > - # - In case the threading model is NPTL or win32, or gcc is 4.3 or > - # later, we need to build libgcc > - case "${CT_THREADS}" in > - nptl) > - core_opts+=( "mode=shared" ) > - core_opts+=( "build_libgcc=yes" ) > - ;; > - win32) > - core_opts+=( "mode=static" ) > - core_opts+=( "build_libgcc=yes" ) > - ;; > - *) > - core_opts+=( "mode=static" ) > - if [ "${CT_CC_GCC_4_3_or_later}" = "y" ]; then > - core_opts+=( "build_libgcc=yes" ) > - fi > - ;; > - esac > - > - CT_DoStep INFO "Installing pass-2 core C compiler" > - CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-core-pass-2" > - > - do_cc_core_backend "${core_opts[@]}" > - > - CT_Popd > - CT_EndStep > -} > - > -#------------------------------------------------------------------------------ > -# Build core gcc > -# This function is used to build the core C compiler. > -# Usage: do_cc_core_backend param=value [...] > -# Parameter : Definition : Type : Default > -# mode : build a 'static', 'shared' or 'baremetal' : string : (none) > -# host : the machine the core will run on : tuple : (none) > -# prefix : dir prefix to install into : dir : (none) > -# complibs : dir where complibs are isntalled : dir : (none) > -# lang_list : the list of languages to build : string : (empty) > -# build_libgcc : build libgcc or not : bool : no > -# build_libstdcxx : build libstdc++ or not : bool : no > -# build_staticlinked : build statically linked or not : bool : no > -# build_manuals : whether to build manuals or not : bool : no > -# cflags : cflags to use : string : (empty) > -# ldflags : ldflags to use : string : (empty) > -# Usage: do_cc_core_backend mode=[static|shared|baremetal] build_libgcc=[yes|no] build_staticlinked=[yes|no] > -do_cc_core_backend() { > - local mode > - local build_libgcc=no > - local build_libstdcxx=no > - local build_staticlinked=no > - local build_manuals=no > - local host > - local prefix > - local complibs > - local lang_list > - local cflags > - local ldflags > - local tmp > - local -a host_libstdcxx_flags > - local -a extra_config > - local -a core_LDFLAGS > - local -a core_targets > - local arg > - > - for arg in "$@"; do > - eval "${arg// /\\ }" > - done > - > - CT_DoLog EXTRA "Configuring gcc" > - > - case "${mode}" in > - static) > - extra_config+=("--with-newlib") > - extra_config+=("--enable-threads=no") > - extra_config+=("--disable-shared") > - copy_headers=y # For baremetal, as there's no headers to copy, > - # we copy an empty directory. So, who cares? > - ;; > - shared) > - extra_config+=("--enable-shared") > - copy_headers=y > - ;; > - baremetal) > - extra_config+=("--with-newlib") > - extra_config+=("--enable-threads=no") > - extra_config+=("--disable-shared") > - copy_headers=n > - ;; > - *) > - CT_Abort "Internal Error: 'mode' must be one of: 'static', 'shared' or 'baremetal', not '${mode:-(empty)}'" > - ;; > - esac > - > - if [ "${CT_CC_GCC_HAS_PKGVERSION_BUGURL}" = "y" ]; then > - # Bare metal delivers the core compiler as final compiler, so add version info and bugurl > - extra_config+=("--with-pkgversion=${CT_PKGVERSION}") > - [ -n "${CT_TOOLCHAIN_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_TOOLCHAIN_BUGURL}") > - fi > - > - if [ "${copy_headers}" = "y" ]; then > - CT_DoLog DEBUG "Copying headers to install area of bootstrap gcc, so it can build libgcc2" > - CT_DoExecLog ALL cp -a "${CT_HEADERS_DIR}" "${prefix}/${CT_TARGET}/include" > - fi > - > - for tmp in ARCH ABI CPU TUNE FPU FLOAT; do > - eval tmp="\${CT_ARCH_WITH_${tmp}}" > - if [ -n "${tmp}" ]; then > - extra_config+=("${tmp}") > - fi > - done > - if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then > - extra_config+=("--enable-__cxa_atexit") > - else > - extra_config+=("--disable-__cxa_atexit") > - fi > - > - core_LDFLAGS+=("${ldflags}") > - > - # *** WARNING ! *** > - # Keep this full if-else-if-elif-fi-fi block in sync > - # with the same block in do_cc, below. > - if [ "${build_staticlinked}" = "yes" ]; then > - core_LDFLAGS+=("-static") > - host_libstdcxx_flags+=("-static-libgcc") > - host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++") > - host_libstdcxx_flags+=("-lm") > - # Companion libraries are build static (eg !shared), so > - # the libstdc++ is not pulled automatically, although it > - # is needed. Shoe-horn it in our LDFLAGS > - # Ditto libm on some Fedora boxen > - core_LDFLAGS+=("-lstdc++") > - core_LDFLAGS+=("-lm") > - else > - if [ "${CT_CC_STATIC_LIBSTDCXX}" = "y" ]; then > - # this is from CodeSourcery arm-2010q1-202-arm-none-linux-gnueabi.src.tar.bz2 > - # build script > - # INFO: if the host gcc is gcc-4.5 then presumably we could use -static-libstdc++, > - # see http://gcc.gnu.org/ml/gcc-patches/2009-06/msg01635.html > - host_libstdcxx_flags+=("-static-libgcc") > - host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++,-Bdynamic") > - host_libstdcxx_flags+=("-lm") > - elif [ "${CT_COMPLIBS_SHARED}" != "y" ]; then > - # When companion libraries are build static (eg !shared), > - # the libstdc++ is not pulled automatically, although it > - # is needed. Shoe-horn it in our LDFLAGS > - # Ditto libm on some Fedora boxen > - core_LDFLAGS+=("-lstdc++") > - core_LDFLAGS+=("-lm") > - fi > - fi > - > - if [ "${CT_CC_GCC_USE_GMP_MPFR}" = "y" ]; then > - extra_config+=("--with-gmp=${complibs}") > - extra_config+=("--with-mpfr=${complibs}") > - fi > - if [ "${CT_CC_GCC_USE_MPC}" = "y" ]; then > - extra_config+=("--with-mpc=${complibs}") > - fi > - if [ "${CT_CC_GCC_USE_GRAPHITE}" = "y" ]; then > - if [ "${CT_PPL}" = "y" ]; then > - extra_config+=("--with-ppl=${complibs}") > - # With PPL 0.11+, also pull libpwl if needed > - if [ "${CT_PPL_NEEDS_LIBPWL}" = "y" ]; then > - host_libstdcxx_flags+=("-L${complibs}/lib") > - host_libstdcxx_flags+=("-lpwl") > - fi > - fi > - if [ "${CT_ISL}" = "y" ]; then > - extra_config+=("--with-isl=${complibs}") > - fi > - extra_config+=("--with-cloog=${complibs}") > - elif [ "${CT_CC_GCC_HAS_GRAPHITE}" = "y" ]; then > - extra_config+=("--with-ppl=no") > - extra_config+=("--with-isl=no") > - extra_config+=("--with-cloog=no") > - fi > - if [ "${CT_CC_GCC_USE_LTO}" = "y" ]; then > - extra_config+=("--with-libelf=${complibs}") > - extra_config+=("--enable-lto") > - elif [ "${CT_CC_GCC_HAS_LTO}" = "y" ]; then > - extra_config+=("--with-libelf=no") > - extra_config+=("--disable-lto") > - fi > - > - if [ ${#host_libstdcxx_flags[@]} -ne 0 ]; then > - extra_config+=("--with-host-libstdcxx=${host_libstdcxx_flags[*]}") > - fi > - > - if [ "${CT_CC_GCC_ENABLE_TARGET_OPTSPACE}" = "y" ]; then > - extra_config+=("--enable-target-optspace") > - fi > - > - case "${CT_CC_GCC_LDBL_128}" in > - y) extra_config+=("--with-long-double-128");; > - m) ;; > - "") extra_config+=("--without-long-double-128");; > - esac > - > - if [ "${CT_CC_GCC_BUILD_ID}" = "y" ]; then > - extra_config+=( --enable-linker-build-id ) > - fi > - > - case "${CT_CC_GCC_LNK_HASH_STYLE}" in > - "") ;; > - *) extra_config+=( "--with-linker-hash-style=${CT_CC_GCC_LNK_HASH_STYLE}" );; > - esac > - > - case "${CT_ARCH}" in > - mips) > - case "${CT_CC_GCC_mips_llsc}" in > - y) extra_config+=( --with-llsc );; > - m) ;; > - *) extra_config+=( --without-llsc );; > - esac > - case "${CT_CC_GCC_mips_synci}" in > - y) extra_config+=( --with-synci );; > - m) ;; > - *) extra_config+=( --without-synci );; > - esac > - if [ "${CT_CC_GCC_mips_plt}" ]; then > - extra_config+=( --with-mips-plt ) > - fi > - ;; # ARCH is mips > - esac > - > - extra_config+=(--disable-libgomp) > - extra_config+=(--disable-libmudflap) > - > - [ "${CT_TOOLCHAIN_ENABLE_NLS}" != "y" ] && extra_config+=("--disable-nls") > - > - [ "${CT_CC_GCC_DISABLE_PCH}" = "y" ] && extra_config+=("--disable-libstdcxx-pch") > - > - if [ "${CT_CC_GCC_SYSTEM_ZLIB}" = "y" ]; then > - extra_config+=("--with-system-zlib") > - fi > - > - if [ "${CT_MULTILIB}" = "y" ]; then > - extra_config+=("--enable-multilib") > - else > - extra_config+=("--disable-multilib") > - fi > - > - 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) > - CT_DoExecLog CFG \ > - CC_FOR_BUILD="${CT_BUILD}-gcc" \ > - CFLAGS="${cflags}" \ > - LDFLAGS="${core_LDFLAGS[*]}" \ > - "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/configure" \ > - --build=${CT_BUILD} \ > - --host=${host} \ > - --target=${CT_TARGET} \ > - --prefix="${prefix}" \ > - --with-local-prefix="${CT_SYSROOT_DIR}" \ > - --disable-libmudflap \ > - ${CC_CORE_SYSROOT_ARG} \ > - "${extra_config[@]}" \ > - --enable-languages="${lang_list}" \ > - "${CT_CC_CORE_EXTRA_CONFIG_ARRAY[@]}" > - > - if [ "${build_libgcc}" = "yes" ]; then > - # 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}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then > - CT_DoExecLog CFG make ${JOBSFLAGS} configure-libiberty > - CT_DoExecLog ALL make ${JOBSFLAGS} -C libiberty libiberty.a > - CT_DoExecLog CFG make ${JOBSFLAGS} configure-gcc configure-libcpp > - CT_DoExecLog ALL make ${JOBSFLAGS} all-libcpp > - else > - CT_DoExecLog CFG make ${JOBSFLAGS} configure-gcc configure-libcpp configure-build-libiberty > - CT_DoExecLog ALL make ${JOBSFLAGS} all-libcpp all-build-libiberty > - fi > - # HACK: gcc-4.2 uses libdecnumber to build libgcc.mk, so build it here. > - if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/libdecnumber" ]; then > - CT_DoExecLog CFG make ${JOBSFLAGS} configure-libdecnumber > - CT_DoExecLog ALL make ${JOBSFLAGS} -C libdecnumber libdecnumber.a > - fi > - # HACK: gcc-4.8 uses libbacktrace to make libgcc.mvars, so make it here. > - if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/libbacktrace" ]; then > - CT_DoExecLog CFG make ${JOBSFLAGS} configure-libbacktrace > - CT_DoExecLog ALL make ${JOBSFLAGS} -C libbacktrace > - fi > - > - # Starting with GCC 4.3, libgcc.mk is no longer built, > - # and libgcc.mvars is used instead. > - > - if [ "${CT_CC_GCC_4_3_or_later}" = "y" ]; then > - libgcc_rule="libgcc.mvars" > - core_targets=( gcc target-libgcc ) > - else > - libgcc_rule="libgcc.mk" > - core_targets=( gcc ) > - fi > - > - # On bare metal and canadian build the host-compiler is used when > - # actually the build-system compiler is required. Choose the correct > - # compilers for canadian build and use the defaults on other > - # configurations. > - if [ "${CT_BARE_METAL},${CT_CANADIAN}" = "y,y" ]; then > - repair_cc="CC_FOR_BUILD=${CT_BUILD}-gcc \ > - CXX_FOR_BUILD=${CT_BUILD}-g++ \ > - GCC_FOR_TARGET=${CT_TARGET}-gcc" > - else > - repair_cc="" > - fi > - > - CT_DoExecLog ALL make ${JOBSFLAGS} -C gcc ${libgcc_rule} \ > - ${repair_cc} > - sed -r -i -e 's@-lc@@g' gcc/${libgcc_rule} > - else # build_libgcc > - core_targets=( gcc ) > - fi # ! build libgcc > - if [ "${build_libstdcxx}" = "yes" \ > - -a "${CT_CC_LANG_CXX}" = "y" \ > - ]; then > - core_targets+=( target-libstdc++-v3 ) > - fi > - > - CT_DoLog EXTRA "Building gcc" > - CT_DoExecLog ALL make ${JOBSFLAGS} "${core_targets[@]/#/all-}" > - > - CT_DoLog EXTRA "Installing gcc" > - CT_DoExecLog ALL make ${JOBSFLAGS} "${core_targets[@]/#/install-}" > - > - if [ "${build_manuals}" = "yes" ]; then > - CT_DoLog EXTRA "Building the GCC manuals" > - CT_DoExecLog ALL make pdf html > - CT_DoLog EXTRA "Installing the GCC manuals" > - CT_DoExecLog ALL make install-{pdf,html}-gcc > - fi > - > - # Create a symlink ${CT_TARGET}-cc to ${CT_TARGET}-gcc to always be able > - # to call the C compiler with the same, somewhat canonical name. > - # check whether compiler has an extension > - file="$( ls -1 "${prefix}/bin/${CT_TARGET}-gcc."* 2>/dev/null || true )" > - [ -z "${file}" ] || ext=".${file##*.}" > - CT_DoExecLog ALL ln -sfv "${CT_TARGET}-gcc${ext}" "${prefix}/bin/${CT_TARGET}-cc${ext}" > - > - if [ "${CT_MULTILIB}" = "y" ]; then > - if [ "${CT_CANADIAN}" = "y" -a "${mode}" = "baremetal" \ > - -a "${host}" = "${CT_HOST}" ]; then > - CT_DoLog WARN "Canadian Cross unable to confirm multilibs configured correctly" > - else > - multilibs=( $( "${prefix}/bin/${CT_TARGET}-gcc" -print-multi-lib \ > - |tail -n +2 ) ) > - if [ ${#multilibs[@]} -ne 0 ]; then > - CT_DoLog EXTRA "gcc configured with these multilibs (besides the default):" > - for i in "${multilibs[@]}"; do > - dir="${i%%;*}" > - flags="${i#*;}" > - CT_DoLog EXTRA " ${flags//@/ -} --> ${dir}/" > - done > - else > - CT_DoLog WARN "gcc configured for multilib, but none available" > - fi > - fi > - fi > -} > - > -#------------------------------------------------------------------------------ > -# Build complete gcc to run on build > -do_cc_for_build() { > - local -a build_final_opts > - local build_final_backend > - > - # In case we're canadian or cross-native, it seems that a > - # real, complete compiler is needed?!? WTF? Sigh... > - # Otherwise, there is nothing to do. > - case "${CT_TOOLCHAIN_TYPE}" in > - native|cross) return 0;; > - esac > - > - build_final_opts+=( "host=${CT_BUILD}" ) > - build_final_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" ) > - build_final_opts+=( "complibs=${CT_BUILDTOOLS_PREFIX_DIR}" ) > - build_final_opts+=( "lang_list=$( cc_gcc_lang_list )" ) > - if [ "${CT_BARE_METAL}" = "y" ]; then > - # In the tests I've done, bare-metal was not impacted by the > - # lack of such a compiler, but better safe than sorry... > - build_final_opts+=( "mode=baremetal" ) > - build_final_opts+=( "build_libgcc=yes" ) > - build_final_opts+=( "build_libstdcxx=yes" ) > - if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then > - build_final_opts+=( "build_staticlinked=yes" ) > - fi > - build_final_backend=do_cc_core_backend > - else > - build_final_backend=do_cc_backend > - fi > - > - CT_DoStep INFO "Installing final compiler for build" > - CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-final-build-${CT_BUILD}" > - > - "${build_final_backend}" "${build_final_opts[@]}" > - > - CT_Popd > - CT_EndStep > -} > - > -#------------------------------------------------------------------------------ > -# Build final gcc to run on host > -do_cc_for_host() { > - local -a final_opts > - local final_backend > - > - final_opts+=( "host=${CT_HOST}" ) > - final_opts+=( "prefix=${CT_PREFIX_DIR}" ) > - final_opts+=( "complibs=${CT_HOST_COMPLIBS_DIR}" ) > - final_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" ) > - final_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" ) > - final_opts+=( "lang_list=$( cc_gcc_lang_list )" ) > - if [ "${CT_BUILD_MANUALS}" = "y" ]; then > - final_opts+=( "build_manuals=yes" ) > - fi > - if [ "${CT_BARE_METAL}" = "y" ]; then > - final_opts+=( "mode=baremetal" ) > - final_opts+=( "build_libgcc=yes" ) > - final_opts+=( "build_libstdcxx=yes" ) > - if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then > - final_opts+=( "build_staticlinked=yes" ) > - fi > - final_backend=do_cc_core_backend > - else > - final_backend=do_cc_backend > - fi > - > - CT_DoStep INFO "Installing final compiler" > - CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-final" > - > - "${final_backend}" "${final_opts[@]}" > - > - CT_Popd > - CT_EndStep > -} > - > -#------------------------------------------------------------------------------ > -# Build the final gcc > -# Usage: do_cc_backend param=value [...] > -# Parameter : Definition : Type : Default > -# host : the host we run onto : tuple : (none) > -# prefix : the runtime prefix : dir : (none) > -# complibs : the companion libraries prefix : dir : (none) > -# cflags : cflags to use : string : (empty) > -# ldflags : ldflags to use : string : (empty) > -# lang_list : the list of languages to build : string : (empty) > -# build_manuals : whether to build manuals or not : bool : no > -do_cc_backend() { > - local host > - local prefix > - local complibs > - local cflags > - local ldflags > - local lang_list > - local build_manuals > - local -a host_libstdcxx_flags > - local -a extra_config > - local -a final_LDFLAGS > - local tmp > - local arg > - > - for arg in "$@"; do > - eval "${arg// /\\ }" > - done > - > - CT_DoLog EXTRA "Configuring gcc" > - > - # Enable selected languages > - extra_config+=("--enable-languages=${lang_list}") > - > - for tmp in ARCH ABI CPU TUNE FPU FLOAT; do > - eval tmp="\${CT_ARCH_WITH_${tmp}}" > - if [ -n "${tmp}" ]; then > - extra_config+=("${tmp}") > - fi > - done > - > - [ "${CT_SHARED_LIBS}" = "y" ] || extra_config+=("--disable-shared") > - if [ "${CT_CC_GCC_HAS_PKGVERSION_BUGURL}" = "y" ]; then > - extra_config+=("--with-pkgversion=${CT_PKGVERSION}") > - [ -n "${CT_TOOLCHAIN_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_TOOLCHAIN_BUGURL}") > - fi > - case "${CT_CC_GCC_SJLJ_EXCEPTIONS}" in > - y) extra_config+=("--enable-sjlj-exceptions");; > - m) ;; > - "") extra_config+=("--disable-sjlj-exceptions");; > - esac > - if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then > - extra_config+=("--enable-__cxa_atexit") > - else > - extra_config+=("--disable-__cxa_atexit") > - fi > - if [ -n "${CT_CC_ENABLE_CXX_FLAGS}" ]; then > - extra_config+=("--enable-cxx-flags=${CT_CC_ENABLE_CXX_FLAGS}") > - fi > - if [ "${CT_CC_GCC_LIBMUDFLAP}" = "y" ]; then > - extra_config+=(--enable-libmudflap) > - else > - extra_config+=(--disable-libmudflap) > - fi > - if [ "${CT_CC_GCC_LIBGOMP}" = "y" ]; then > - extra_config+=(--enable-libgomp) > - else > - extra_config+=(--disable-libgomp) > - fi > - if [ "${CT_CC_GCC_LIBSSP}" = "y" ]; then > - extra_config+=(--enable-libssp) > - else > - extra_config+=(--disable-libssp) > - fi > - if [ "${CT_CC_GCC_HAS_LIBQUADMATH}" = "y" ]; then > - if [ "${CT_CC_GCC_LIBQUADMATH}" = "y" ]; then > - extra_config+=(--enable-libquadmath) > - extra_config+=(--enable-libquadmath-support) > - else > - extra_config+=(--disable-libquadmath) > - extra_config+=(--disable-libquadmath-support) > - fi > - fi > - > - final_LDFLAGS+=("${ldflags}") > - > - # *** WARNING ! *** > - # Keep this full if-else-if-elif-fi-fi block in sync > - # with the same block in do_cc_core, above. > - if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then > - final_LDFLAGS+=("-static") > - host_libstdcxx_flags+=("-static-libgcc") > - host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++") > - host_libstdcxx_flags+=("-lm") > - # Companion libraries are build static (eg !shared), so > - # the libstdc++ is not pulled automatically, although it > - # is needed. Shoe-horn it in our LDFLAGS > - # Ditto libm on some Fedora boxen > - final_LDFLAGS+=("-lstdc++") > - final_LDFLAGS+=("-lm") > - else > - if [ "${CT_CC_STATIC_LIBSTDCXX}" = "y" ]; then > - # this is from CodeSourcery arm-2010q1-202-arm-none-linux-gnueabi.src.tar.bz2 > - # build script > - # INFO: if the host gcc is gcc-4.5 then presumably we could use -static-libstdc++, > - # see http://gcc.gnu.org/ml/gcc-patches/2009-06/msg01635.html > - host_libstdcxx_flags+=("-static-libgcc") > - host_libstdcxx_flags+=("-Wl,-Bstatic,-lstdc++,-Bdynamic") > - host_libstdcxx_flags+=("-lm") > - elif [ "${CT_COMPLIBS_SHARED}" != "y" ]; then > - # When companion libraries are build static (eg !shared), > - # the libstdc++ is not pulled automatically, although it > - # is needed. Shoe-horn it in our LDFLAGS > - # Ditto libm on some Fedora boxen > - final_LDFLAGS+=("-lstdc++") > - final_LDFLAGS+=("-lm") > - fi > - fi > - > - if [ "${CT_CC_GCC_USE_GMP_MPFR}" = "y" ]; then > - extra_config+=("--with-gmp=${complibs}") > - extra_config+=("--with-mpfr=${complibs}") > - fi > - if [ "${CT_CC_GCC_USE_MPC}" = "y" ]; then > - extra_config+=("--with-mpc=${complibs}") > - fi > - if [ "${CT_CC_GCC_USE_GRAPHITE}" = "y" ]; then > - if [ "${CT_PPL}" = "y" ]; then > - extra_config+=("--with-ppl=${complibs}") > - # With PPL 0.11+, also pull libpwl if needed > - if [ "${CT_PPL_NEEDS_LIBPWL}" = "y" ]; then > - host_libstdcxx_flags+=("-L${complibs}/lib") > - host_libstdcxx_flags+=("-lpwl") > - fi > - fi > - if [ "${CT_ISL}" = "y" ]; then > - extra_config+=("--with-isl=${complibs}") > - fi > - extra_config+=("--with-cloog=${complibs}") > - elif [ "${CT_CC_GCC_HAS_GRAPHITE}" = "y" ]; then > - extra_config+=("--with-ppl=no") > - extra_config+=("--with-isl=no") > - extra_config+=("--with-cloog=no") > - fi > - if [ "${CT_CC_GCC_USE_LTO}" = "y" ]; then > - extra_config+=("--with-libelf=${complibs}") > - elif [ "${CT_CC_GCC_HAS_LTO}" = "y" ]; then > - extra_config+=("--with-libelf=no") > - fi > - > - if [ ${#host_libstdcxx_flags[@]} -ne 0 ]; then > - extra_config+=("--with-host-libstdcxx=${host_libstdcxx_flags[*]}") > - fi > - > - if [ "${CT_THREADS}" = "none" ]; then > - extra_config+=("--disable-threads") > - if [ "${CT_CC_GCC_4_2_or_later}" = y ]; then > - CT_Test "Disabling libgomp for no-thread gcc>=4.2" "${CT_CC_GCC_LIBGOMP}" = "Y" > - extra_config+=("--disable-libgomp") > - fi > - else > - if [ "${CT_THREADS}" = "win32" ]; then > - extra_config+=("--enable-threads=win32") > - extra_config+=("--disable-win32-registry") > - else > - extra_config+=("--enable-threads=posix") > - fi > - fi > - > - if [ "${CT_CC_GCC_ENABLE_TARGET_OPTSPACE}" = "y" ]; then > - extra_config+=("--enable-target-optspace") > - fi > - if [ "${CT_CC_GCC_DISABLE_PCH}" = "y" ]; then > - extra_config+=("--disable-libstdcxx-pch") > - fi > - > - case "${CT_CC_GCC_LDBL_128}" in > - y) extra_config+=("--with-long-double-128");; > - m) ;; > - "") extra_config+=("--without-long-double-128");; > - esac > - > - if [ "${CT_CC_GCC_BUILD_ID}" = "y" ]; then > - extra_config+=( --enable-linker-build-id ) > - fi > - > - case "${CT_CC_GCC_LNK_HASH_STYLE}" in > - "") ;; > - *) extra_config+=( "--with-linker-hash-style=${CT_CC_GCC_LNK_HASH_STYLE}" );; > - esac > - > - if [ "${CT_CC_GCC_ENABLE_PLUGINS}" = "y" ]; then > - extra_config+=( --enable-plugin ) > - fi > - if [ "${CT_CC_GCC_GOLD}" = "y" ]; then > - extra_config+=( --enable-gold ) > - fi > - > - case "${CT_ARCH}" in > - mips) > - case "${CT_CC_GCC_mips_llsc}" in > - y) extra_config+=( --with-llsc );; > - m) ;; > - *) extra_config+=( --without-llsc );; > - esac > - case "${CT_CC_GCC_mips_synci}" in > - y) extra_config+=( --with-synci );; > - m) ;; > - *) extra_config+=( --without-synci );; > - esac > - if [ "${CT_CC_GCC_mips_plt}" ]; then > - extra_config+=( --with-mips-plt ) > - fi > - ;; # ARCH is mips > - esac > - > - [ "${CT_TOOLCHAIN_ENABLE_NLS}" != "y" ] && extra_config+=("--disable-nls") > - > - if [ "${CT_CC_GCC_SYSTEM_ZLIB}" = "y" ]; then > - extra_config+=("--with-system-zlib") > - fi > - > - if [ "${CT_MULTILIB}" = "y" ]; then > - extra_config+=("--enable-multilib") > - else > - extra_config+=("--disable-multilib") > - fi > - > - CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'" > - > - CT_DoExecLog CFG \ > - CC_FOR_BUILD="${CT_BUILD}-gcc" \ > - CFLAGS="${cflags}" \ > - LDFLAGS="${final_LDFLAGS[*]}" \ > - CFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \ > - CXXFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \ > - LDFLAGS_FOR_TARGET="${CT_TARGET_LDFLAGS}" \ > - "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/configure" \ > - --build=${CT_BUILD} \ > - --host=${host} \ > - --target=${CT_TARGET} \ > - --prefix="${prefix}" \ > - ${CC_SYSROOT_ARG} \ > - "${extra_config[@]}" \ > - --with-local-prefix="${CT_SYSROOT_DIR}" \ > - --enable-c99 \ > - --enable-long-long \ > - "${CT_CC_EXTRA_CONFIG_ARRAY[@]}" > - > - if [ "${CT_CANADIAN}" = "y" ]; then > - CT_DoLog EXTRA "Building libiberty" > - CT_DoExecLog ALL make ${JOBSFLAGS} all-build-libiberty > - fi > - > - CT_DoLog EXTRA "Building gcc" > - CT_DoExecLog ALL make ${JOBSFLAGS} all > - > - CT_DoLog EXTRA "Installing gcc" > - CT_DoExecLog ALL make ${JOBSFLAGS} install > - > - if [ "${build_manuals}" = "yes" ]; then > - CT_DoLog EXTRA "Building the GCC manuals" > - CT_DoExecLog ALL make pdf html > - CT_DoLog EXTRA "Installing the GCC manuals" > - CT_DoExecLog ALL make install-{pdf,html}-gcc > - fi > - > - # Create a symlink ${CT_TARGET}-cc to ${CT_TARGET}-gcc to always be able > - # to call the C compiler with the same, somewhat canonical name. > - # check whether compiler has an extension > - file="$( ls -1 "${CT_PREFIX_DIR}/bin/${CT_TARGET}-gcc."* 2>/dev/null || true )" > - [ -z "${file}" ] || ext=".${file##*.}" > - CT_DoExecLog ALL ln -sfv "${CT_TARGET}-gcc${ext}" "${CT_PREFIX_DIR}/bin/${CT_TARGET}-cc${ext}" > - > - if [ "${CT_MULTILIB}" = "y" ]; then > - if [ "${CT_CANADIAN}" = "y" ]; then > - CT_DoLog WARN "Canadian Cross unable to confirm multilibs configured correctly" > - else > - multilibs=( $( "${prefix}/bin/${CT_TARGET}-gcc" -print-multi-lib \ > - |tail -n +2 ) ) > - if [ ${#multilibs[@]} -ne 0 ]; then > - CT_DoLog EXTRA "gcc configured with these multilibs (besides the default):" > - for i in "${multilibs[@]}"; do > - dir="${i%%;*}" > - flags="${i#*;}" > - CT_DoLog EXTRA " ${flags//@/ -} --> ${dir}/" > - done > - else > - CT_DoLog WARN "gcc configured for multilib, but none available" > - fi > - fi > - fi > -} > diff -r 7e569a9cb5fd -r 65771b86df01 scripts/build/debug/300-gdb.sh > --- a/scripts/build/debug/300-gdb.sh Sat Nov 16 18:14:45 2013 +0100 > +++ b/scripts/build/debug/300-gdb.sh Mon Dec 02 21:51:09 2013 +0100 > @@ -181,11 +181,11 @@ > if [ "${CT_GDB_INSTALL_GDBINIT}" = "y" ]; then > CT_DoLog EXTRA "Installing '.gdbinit' template" > # See in scripts/build/internals.sh for why we do this > - if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then > - gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ) > + if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ]; then > + gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ) > else > - gcc_version=$( sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \ > - "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/version.c" \ > + gcc_version=$( sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \ > + "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/version.c" \ > ) > fi > ${sed} -r \ > diff -r 7e569a9cb5fd -r 65771b86df01 scripts/build/internals.sh > --- a/scripts/build/internals.sh Sat Nov 16 18:14:45 2013 +0100 > +++ b/scripts/build/internals.sh Mon Dec 02 21:51:09 2013 +0100 > @@ -28,33 +28,35 @@ > CT_DoExecLog ALL "${CT_TARGET}-strip" ${strip_args} \ > "${CT_TARGET}/debug-root/usr/bin/gdbserver" > fi > - # We can not use the version in CT_CC_VERSION because > - # of the Linaro stuff. So, harvest the version string > - # directly from the gcc sources... > - # All gcc 4.x seem to have the version in gcc/BASE-VER > - # while version prior to 4.x have the version in gcc/version.c > - # Of course, here is not the better place to do that... > - if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then > - gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ) > - else > - gcc_version=$( sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \ > - "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/version.c" \ > - ) > + if [ "${CT_CC_gcc}" = "y" ]; then > + # We can not use the version in CT_CC_GCC_VERSION because > + # of the Linaro stuff. So, harvest the version string > + # directly from the gcc sources... > + # All gcc 4.x seem to have the version in gcc/BASE-VER > + # while version prior to 4.x have the version in gcc/version.c > + # Of course, here is not the better place to do that... > + if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ]; then > + gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ) > + else > + gcc_version=$( sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \ > + "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/version.c" \ > + ) > + fi > + for _t in "bin/${CT_TARGET}-"* \ > + "${CT_TARGET}/bin/"* \ > + "libexec/gcc/${CT_TARGET}/${gcc_version}/"* \ > + "libexec/gcc/${CT_TARGET}/${gcc_version}/install-tools/"* \ > + ; do > + _type="$( file "${_t}" |cut -d ' ' -f 2- )" > + case "${_type}" in > + *script*executable*) > + ;; > + *executable*) > + CT_DoExecLog ALL ${CT_HOST}-strip ${strip_args} "${_t}" > + ;; > + esac > + done > fi > - for _t in "bin/${CT_TARGET}-"* \ > - "${CT_TARGET}/bin/"* \ > - "libexec/gcc/${CT_TARGET}/${gcc_version}/"* \ > - "libexec/gcc/${CT_TARGET}/${gcc_version}/install-tools/"* \ > - ; do > - _type="$( file "${_t}" |cut -d ' ' -f 2- )" > - case "${_type}" in > - *script*executable*) > - ;; > - *executable*) > - CT_DoExecLog ALL ${CT_HOST}-strip ${strip_args} "${_t}" > - ;; > - esac > - done > CT_Popd > fi > > diff -r 7e569a9cb5fd -r 65771b86df01 scripts/build/test_suite/gcc.sh > --- a/scripts/build/test_suite/gcc.sh Sat Nov 16 18:14:45 2013 +0100 > +++ b/scripts/build/test_suite/gcc.sh Mon Dec 02 21:51:09 2013 +0100 > @@ -15,10 +15,10 @@ > CT_DoStep INFO "Installing GCC test suite" > > CT_DoExecLog ALL mkdir -p "${CT_TEST_SUITE_DIR}/gcc" > - CT_DoExecLog ALL cp -av "${CT_LIB_DIR}/contrib/gcc-test-suite/default.cfg" \ > - "${CT_LIB_DIR}/contrib/gcc-test-suite/Makefile" \ > - "${CT_LIB_DIR}/contrib/gcc-test-suite/README" \ > - "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/testsuite" \ > + CT_DoExecLog ALL cp -av "${CT_LIB_DIR}/contrib/gcc-test-suite/default.cfg" \ > + "${CT_LIB_DIR}/contrib/gcc-test-suite/Makefile" \ > + "${CT_LIB_DIR}/contrib/gcc-test-suite/README" \ > + "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/testsuite" \ > "${CT_TEST_SUITE_DIR}/gcc" > > CT_DoExecLog ALL sed -i -r -e "s/@@DG_TARGET@@/${CT_TARGET}/g;" \ > diff -r 7e569a9cb5fd -r 65771b86df01 scripts/crosstool-NG.sh.in > --- a/scripts/crosstool-NG.sh.in Sat Nov 16 18:14:45 2013 +0100 > +++ b/scripts/crosstool-NG.sh.in Mon Dec 02 21:51:09 2013 +0100 > @@ -140,7 +140,7 @@ > . "${CT_LIB_DIR}/scripts/build/companion_libs.sh" > . "${CT_LIB_DIR}/scripts/build/binutils/${CT_BINUTILS}.sh" > . "${CT_LIB_DIR}/scripts/build/libc/${CT_LIBC}.sh" > -. "${CT_LIB_DIR}/scripts/build/cc/${CT_CC}.sh" > +. "${CT_LIB_DIR}/scripts/build/cc.sh" > . "${CT_LIB_DIR}/scripts/build/debug.sh" > . "${CT_LIB_DIR}/scripts/build/test_suite.sh" > > @@ -162,8 +162,8 @@ > # Put user-supplied flags at the end, so that they take precedence. > CT_TARGET_CFLAGS="${CT_ARCH_TARGET_CFLAGS} ${CT_TARGET_CFLAGS}" > CT_TARGET_LDFLAGS="${CT_ARCH_TARGET_LDFLAGS} ${CT_TARGET_LDFLAGS}" > -CT_CC_CORE_EXTRA_CONFIG_ARRAY=( ${CT_ARCH_CC_CORE_EXTRA_CONFIG} "${CT_CC_CORE_EXTRA_CONFIG_ARRAY[@]}" ) > -CT_CC_EXTRA_CONFIG_ARRAY=( ${CT_ARCH_CC_EXTRA_CONFIG} "${CT_CC_EXTRA_CONFIG_ARRAY[@]}" ) > +CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY=( ${CT_ARCH_CC_CORE_EXTRA_CONFIG} "${CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY[@]}" ) > +CT_CC_GCC_EXTRA_CONFIG_ARRAY=( ${CT_ARCH_CC_EXTRA_CONFIG} "${CT_CC_GCC_EXTRA_CONFIG_ARRAY[@]}" ) > > # Compute the package version string > CT_PKGVERSION="crosstool-NG ${CT_VERSION}${CT_TOOLCHAIN_PKGVERSION:+ - ${CT_TOOLCHAIN_PKGVERSION}}" > @@ -545,8 +545,8 @@ > CT_EndStep > fi > > - if [ "${CT_CC_STATIC_LIBSTDCXX}" = "y" ]; then > - CT_DoStep DEBUG "Checking that gcc can statically link libstdc++ (CT_CC_STATIC_LIBSTDCXX)" > + if [ "${CT_CC_GCC_STATIC_LIBSTDCXX}" = "y" ]; then > + CT_DoStep DEBUG "Checking that gcc can statically link libstdc++ (CT_CC_GCC_STATIC_LIBSTDCXX)" > CT_DoLog DEBUG "You may need to ensure that libstdc++.a is installed on your system" > CT_DoExecLog DEBUG "${CT_HOST}-gcc" ${CT_CFLAGS_FOR_HOST} ${CT_LDFLAGS_FOR_HOST} "${testc}" -static -lstdc++ -o "${gccout}" > rm -f "${gccout}" > diff -r 7e569a9cb5fd -r 65771b86df01 scripts/gen_in_frags.sh > --- a/scripts/gen_in_frags.sh Sat Nov 16 18:14:45 2013 +0100 > +++ b/scripts/gen_in_frags.sh Mon Dec 02 21:51:09 2013 +0100 > @@ -138,6 +138,9 @@ > _entry=$(printf '%s\n' "${entry}" |"${sed}" -r -s -e 's/[-.+]/_/g;') > printf 'menuconfig %s_%s\n' "${cfg_prefix}" "${_entry}" > printf ' bool\n' > + if "${grep}" -E '^## default' ${file} >/dev/null 2>&1; then > + "${sed}" -r -e '/^## default ?/!d; s/^## default ?/ default /;' ${file} 2>/dev/null > + fi > printf ' prompt "%s"\n' "${entry}" > "${sed}" -r -e '/^## depends on /!d; s/^## / /;' ${file} 2>/dev/null > "${sed}" -r -e '/^## select /!d; s/^## / /;' ${file} 2>/dev/null > diff -r 7e569a9cb5fd -r 65771b86df01 scripts/showSamples.sh > --- a/scripts/showSamples.sh Sat Nov 16 18:14:45 2013 +0100 > +++ b/scripts/showSamples.sh Mon Dec 02 21:51:09 2013 +0100 > @@ -76,7 +76,7 @@ > [ -z "${CT_LIBELF}" -a -z "${CT_LIBELF_TARGET}" ] || printf " libelf-%s" "${CT_LIBELF_VERSION}" > [ -z "${complibs}" ] || printf "\n" > printf " %-*s : %s\n" ${width} "binutils" "binutils-${CT_BINUTILS_VERSION}" > - printf " %-*s : %s" ${width} "C compiler" "${CT_CC}-${CT_CC_VERSION} (C" > + printf " %-*s : %s" ${width} "C compiler" "${CT_CC}-${CT_CC_GCC_VERSION} (C" > [ "${CT_CC_LANG_CXX}" = "y" ] && printf ",C++" > [ "${CT_CC_LANG_FORTRAN}" = "y" ] && printf ",Fortran" > [ "${CT_CC_LANG_JAVA}" = "y" ] && printf ",Java" > @@ -121,7 +121,7 @@ > fi > printf "| ${CT_BINUTILS_VERSION} " > printf "| ''${CT_CC}'' " > - printf "| ${CT_CC_VERSION} " > + printf "| ${CT_CC_GCC_VERSION} " > printf "| ''${CT_LIBC}'' |" > if [ "${CT_LIBC}" != "none" ]; then > printf " ${CT_LIBC_VERSION} " > > -- > For unsubscribe information see http://sourceware.org/lists.html#faq > -- For unsubscribe information see http://sourceware.org/lists.html#faq ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1 of 1] cc/gcc: Split gcc configurations and functions from cc ones 2013-12-02 20:54 ` [PATCH 1 of 1] cc/gcc: Split gcc configurations and functions from cc ones Yann Diorcet 2013-12-09 19:05 ` Ray Donnelly @ 2013-12-09 22:06 ` Cody P Schafer 2013-12-10 9:26 ` Yann Diorcet 1 sibling, 1 reply; 11+ messages in thread From: Cody P Schafer @ 2013-12-09 22:06 UTC (permalink / raw) To: Yann Diorcet, Yann E. MORIN; +Cc: crossgcc > --- a/scripts/showSamples.sh Sat Nov 16 18:14:45 2013 +0100 > +++ b/scripts/showSamples.sh Mon Dec 02 21:51:09 2013 +0100 > @@ -76,7 +76,7 @@ > [ -z "${CT_LIBELF}" -a -z "${CT_LIBELF_TARGET}" ] || printf " libelf-%s" "${CT_LIBELF_VERSION}" > [ -z "${complibs}" ] || printf "\n" > printf " %-*s : %s\n" ${width} "binutils" "binutils-${CT_BINUTILS_VERSION}" > - printf " %-*s : %s" ${width} "C compiler" "${CT_CC}-${CT_CC_VERSION} (C" > + printf " %-*s : %s" ${width} "C compiler" "${CT_CC}-${CT_CC_GCC_VERSION} (C" > [ "${CT_CC_LANG_CXX}" = "y" ] && printf ",C++" > [ "${CT_CC_LANG_FORTRAN}" = "y" ] && printf ",Fortran" > [ "${CT_CC_LANG_JAVA}" = "y" ] && printf ",Java" > @@ -121,7 +121,7 @@ > fi > printf "| ${CT_BINUTILS_VERSION} " > printf "| ''${CT_CC}'' " > - printf "| ${CT_CC_VERSION} " > + printf "| ${CT_CC_GCC_VERSION} " > printf "| ''${CT_LIBC}'' |" > if [ "${CT_LIBC}" != "none" ]; then > printf " ${CT_LIBC_VERSION} " > > -- From this it looks like - there isn't a way to get the NAME-VERSION of the configured C compiler - You'll be using the GCC version number even if CT_CC isn't gcc. -- For unsubscribe information see http://sourceware.org/lists.html#faq ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1 of 1] cc/gcc: Split gcc configurations and functions from cc ones 2013-12-09 22:06 ` Cody P Schafer @ 2013-12-10 9:26 ` Yann Diorcet 0 siblings, 0 replies; 11+ messages in thread From: Yann Diorcet @ 2013-12-10 9:26 UTC (permalink / raw) To: Cody P Schafer; +Cc: Yann E. MORIN, crossgcc Hi, 2013/12/9 Cody P Schafer <dev@codyps.com>: > >> --- a/scripts/showSamples.sh Sat Nov 16 18:14:45 2013 +0100 >> +++ b/scripts/showSamples.sh Mon Dec 02 21:51:09 2013 +0100 >> @@ -76,7 +76,7 @@ >> [ -z "${CT_LIBELF}" -a -z "${CT_LIBELF_TARGET}" ] || printf >> " libelf-%s" "${CT_LIBELF_VERSION}" >> [ -z "${complibs}" ] || printf "\n" >> printf " %-*s : %s\n" ${width} "binutils" >> "binutils-${CT_BINUTILS_VERSION}" >> - printf " %-*s : %s" ${width} "C compiler" >> "${CT_CC}-${CT_CC_VERSION} (C" >> + printf " %-*s : %s" ${width} "C compiler" >> "${CT_CC}-${CT_CC_GCC_VERSION} (C" >> [ "${CT_CC_LANG_CXX}" = "y" ] && printf ",C++" >> [ "${CT_CC_LANG_FORTRAN}" = "y" ] && printf ",Fortran" >> [ "${CT_CC_LANG_JAVA}" = "y" ] && printf ",Java" >> @@ -121,7 +121,7 @@ >> fi >> printf "| ${CT_BINUTILS_VERSION} " >> printf "| ''${CT_CC}'' " >> - printf "| ${CT_CC_VERSION} " >> + printf "| ${CT_CC_GCC_VERSION} " >> printf "| ''${CT_LIBC}'' |" >> if [ "${CT_LIBC}" != "none" ]; then >> printf " ${CT_LIBC_VERSION} " >> >> -- > > > From this it looks like > - there isn't a way to get the NAME-VERSION of the configured C compiler There is maybe more that C compiler selected btw. > - You'll be using the GCC version number even if CT_CC isn't gcc. > Indeed not clean. How we can improve that? -- Diorcet Yann -- For unsubscribe information see http://sourceware.org/lists.html#faq ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 0 of 1] Split gcc from cc @ 2013-07-09 22:58 Yann Diorcet 2013-07-09 22:58 ` [PATCH 1 of 1] cc/gcc: Split gcc configurations and functions from cc ones Yann Diorcet 0 siblings, 1 reply; 11+ messages in thread From: Yann Diorcet @ 2013-07-09 22:58 UTC (permalink / raw) To: Yann E. MORIN; +Cc: crossgcc The goal of this patch is to split gcc configurations and functions from cc ones, in order to prepare the ground for including other compilers -- For unsubscribe information see http://sourceware.org/lists.html#faq ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1 of 1] cc/gcc: Split gcc configurations and functions from cc ones 2013-07-09 22:58 [PATCH 0 of 1] Split gcc from cc Yann Diorcet @ 2013-07-09 22:58 ` Yann Diorcet 2013-07-10 6:16 ` Daniel Price 0 siblings, 1 reply; 11+ messages in thread From: Yann Diorcet @ 2013-07-09 22:58 UTC (permalink / raw) To: Yann E. MORIN; +Cc: crossgcc # HG changeset patch # User Yann Diorcet <diorcet.yann@gmail.com> # Date 1373410674 -7200 # Node ID 2a93f4221ba85bfb010f088e13150f9e897c43a2 # Parent 2685dfa9de14fbe356ba76cb201bf5c039cf6860 cc/gcc: Split gcc configurations and functions from cc ones Signed-off-by: Yann Diorcet <diorcet.yann@gmail.com> diff -r 2685dfa9de14 -r 2a93f4221ba8 config/cc/gcc.in --- a/config/cc/gcc.in Thu May 23 17:51:15 2013 +0200 +++ b/config/cc/gcc.in Wed Jul 10 00:57:54 2013 +0200 @@ -36,205 +36,205 @@ # Don't remove next line # CT_INSERT_VERSION_BELOW -config CC_V_linaro_4_8 +config CC_GCC_V_linaro_4_8 bool prompt "linaro-4.8-2013.04" depends on CC_GCC_SHOW_LINARO select CC_GCC_4_8 -config CC_V_4_8_0 +config CC_GCC_V_4_8_0 bool prompt "4.8.0" select CC_GCC_4_8 -config CC_V_linaro_4_7 +config CC_GCC_V_linaro_4_7 bool prompt "linaro-4.7-2013.04" depends on CC_GCC_SHOW_LINARO select CC_GCC_4_7 -config CC_V_4_7_3 +config CC_GCC_V_4_7_3 bool prompt "4.7.3" select CC_GCC_4_7 -config CC_V_4_7_2 +config CC_GCC_V_4_7_2 bool prompt "4.7.2" select CC_GCC_4_7 -config CC_V_4_7_1 +config CC_GCC_V_4_7_1 bool prompt "4.7.1" select CC_GCC_4_7 -config CC_V_4_7_0 +config CC_GCC_V_4_7_0 bool prompt "4.7.0" select CC_GCC_4_7 -config CC_V_linaro_4_6 +config CC_GCC_V_linaro_4_6 bool prompt "linaro-4.6-2013.04" depends on CC_GCC_SHOW_LINARO select CC_GCC_4_6 -config CC_V_4_6_4 +config CC_GCC_V_4_6_4 bool prompt "4.6.4" select CC_GCC_4_6 -config CC_V_4_6_3 +config CC_GCC_V_4_6_3 bool prompt "4.6.3" select CC_GCC_4_6 -config CC_V_4_6_2 +config CC_GCC_V_4_6_2 bool prompt "4.6.2" select CC_GCC_4_6 -config CC_V_4_6_1 +config CC_GCC_V_4_6_1 bool prompt "4.6.1" select CC_GCC_4_6 -config CC_V_4_6_0 +config CC_GCC_V_4_6_0 bool prompt "4.6.0" select CC_GCC_4_6 -config CC_V_linaro_4_5 +config CC_GCC_V_linaro_4_5 bool prompt "linaro-4.5-2012.03" depends on CC_GCC_SHOW_LINARO select CC_GCC_4_5 -config CC_V_4_5_3 +config CC_GCC_V_4_5_3 bool prompt "4.5.3" select CC_GCC_4_5 -config CC_V_4_5_2 +config CC_GCC_V_4_5_2 bool prompt "4.5.2" select CC_GCC_4_5 -config CC_V_4_5_1 +config CC_GCC_V_4_5_1 bool prompt "4.5.1" select CC_GCC_4_5 -config CC_V_4_5_0 +config CC_GCC_V_4_5_0 bool prompt "4.5.0" select CC_GCC_4_5 -config CC_V_linaro_4_4 +config CC_GCC_V_linaro_4_4 bool prompt "linaro-4.4-2011.02-0" depends on CC_GCC_SHOW_LINARO select CC_GCC_4_4 -config CC_V_4_4_7 +config CC_GCC_V_4_4_7 bool prompt "4.4.7" select CC_GCC_4_4 -config CC_V_4_4_6 +config CC_GCC_V_4_4_6 bool prompt "4.4.6" select CC_GCC_4_4 -config CC_V_4_4_5 +config CC_GCC_V_4_4_5 bool prompt "4.4.5" select CC_GCC_4_4 -config CC_V_4_4_4 +config CC_GCC_V_4_4_4 bool prompt "4.4.4" select CC_GCC_4_4 -config CC_V_4_4_3 +config CC_GCC_V_4_4_3 bool prompt "4.4.3" select CC_GCC_4_4 -config CC_V_4_4_2 +config CC_GCC_V_4_4_2 bool prompt "4.4.2" select CC_GCC_4_4 -config CC_V_4_4_1 +config CC_GCC_V_4_4_1 bool prompt "4.4.1" select CC_GCC_4_4 -config CC_V_4_4_0 +config CC_GCC_V_4_4_0 bool prompt "4.4.0" select CC_GCC_4_4 -config CC_V_4_3_6 +config CC_GCC_V_4_3_6 bool prompt "4.3.6" select CC_GCC_4_3 -config CC_V_4_3_5 +config CC_GCC_V_4_3_5 bool prompt "4.3.5" select CC_GCC_4_3 -config CC_V_4_3_4 +config CC_GCC_V_4_3_4 bool prompt "4.3.4" select CC_GCC_4_3 -config CC_V_4_3_3 +config CC_GCC_V_4_3_3 bool prompt "4.3.3" select CC_GCC_4_3 -config CC_V_4_3_2 +config CC_GCC_V_4_3_2 bool prompt "4.3.2" select CC_GCC_4_3 -config CC_V_4_3_1 +config CC_GCC_V_4_3_1 bool prompt "4.3.1" select CC_GCC_4_3 -config CC_V_4_2_4 +config CC_GCC_V_4_2_4 bool prompt "4.2.4" select CC_GCC_4_2 # We need that one, it's the only version with avr32 support # because we have a patch for it -config CC_V_4_2_2 +config CC_GCC_V_4_2_2 bool prompt "4.2.2" select CC_GCC_4_2 -config CC_V_4_1_2 +config CC_GCC_V_4_1_2 bool prompt "4.1.2 (OBSOLETE)" depends on OBSOLETE -config CC_V_4_0_4 +config CC_GCC_V_4_0_4 bool prompt "4.0.4 (OBSOLETE)" depends on OBSOLETE -config CC_V_3_4_6 +config CC_GCC_V_3_4_6 bool prompt "3.4.6 (OBSOLETE)" depends on OBSOLETE -config CC_CUSTOM +config CC_GCC_CUSTOM bool prompt "Custom gcc" depends on EXPERIMENTAL @@ -242,9 +242,9 @@ endchoice -if CC_CUSTOM +if CC_GCC_CUSTOM -config CC_CUSTOM_LOCATION +config CC_GCC_CUSTOM_LOCATION string prompt "Full path to custom gcc source" default "" @@ -252,7 +252,7 @@ Enter the path to the directory (or tarball) of your source for gcc, or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/gcc -endif #CC_CUSTOM +endif #CC_GCC_CUSTOM config CC_GCC_4_2 bool @@ -436,50 +436,50 @@ config CC_GCC_HAS_LIBQUADMATH bool -config CC_VERSION +config CC_GCC_VERSION string # Don't remove next line # CT_INSERT_VERSION_STRING_BELOW - default "linaro-4.8-2013.04" if CC_V_linaro_4_8 - default "4.8.0" if CC_V_4_8_0 - default "linaro-4.7-2013.04" if CC_V_linaro_4_7 - default "4.7.3" if CC_V_4_7_3 - default "4.7.2" if CC_V_4_7_2 - default "4.7.1" if CC_V_4_7_1 - default "4.7.0" if CC_V_4_7_0 - default "linaro-4.6-2013.04" if CC_V_linaro_4_6 - default "4.6.4" if CC_V_4_6_4 - default "4.6.3" if CC_V_4_6_3 - default "4.6.2" if CC_V_4_6_2 - default "4.6.1" if CC_V_4_6_1 - default "4.6.0" if CC_V_4_6_0 - default "linaro-4.5-2012.03" if CC_V_linaro_4_5 - default "4.5.3" if CC_V_4_5_3 - default "4.5.2" if CC_V_4_5_2 - default "4.5.1" if CC_V_4_5_1 - default "4.5.0" if CC_V_4_5_0 - default "linaro-4.4-2011.02-0" if CC_V_linaro_4_4 - default "4.4.7" if CC_V_4_4_7 - default "4.4.6" if CC_V_4_4_6 - default "4.4.5" if CC_V_4_4_5 - default "4.4.4" if CC_V_4_4_4 - default "4.4.3" if CC_V_4_4_3 - default "4.4.2" if CC_V_4_4_2 - default "4.4.1" if CC_V_4_4_1 - default "4.4.0" if CC_V_4_4_0 - default "4.3.6" if CC_V_4_3_6 - default "4.3.5" if CC_V_4_3_5 - default "4.3.4" if CC_V_4_3_4 - default "4.3.3" if CC_V_4_3_3 - default "4.3.2" if CC_V_4_3_2 - default "4.3.1" if CC_V_4_3_1 - default "4.3.0" if CC_V_4_3_0 - default "4.2.4" if CC_V_4_2_4 - default "4.2.2" if CC_V_4_2_2 - default "4.1.2" if CC_V_4_1_2 - default "4.0.4" if CC_V_4_0_4 - default "3.4.6" if CC_V_3_4_6 - default "custom" if CC_CUSTOM + default "linaro-4.8-2013.04" if CC_GCC_V_linaro_4_8 + default "4.8.0" if CC_GCC_V_4_8_0 + default "linaro-4.7-2013.04" if CC_GCC_V_linaro_4_7 + default "4.7.3" if CC_GCC_V_4_7_3 + default "4.7.2" if CC_GCC_V_4_7_2 + default "4.7.1" if CC_GCC_V_4_7_1 + default "4.7.0" if CC_GCC_V_4_7_0 + default "linaro-4.6-2013.04" if CC_GCC_V_linaro_4_6 + default "4.6.4" if CC_GCC_V_4_6_4 + default "4.6.3" if CC_GCC_V_4_6_3 + default "4.6.2" if CC_GCC_V_4_6_2 + default "4.6.1" if CC_GCC_V_4_6_1 + default "4.6.0" if CC_GCC_V_4_6_0 + default "linaro-4.5-2012.03" if CC_GCC_V_linaro_4_5 + default "4.5.3" if CC_GCC_V_4_5_3 + default "4.5.2" if CC_GCC_V_4_5_2 + default "4.5.1" if CC_GCC_V_4_5_1 + default "4.5.0" if CC_GCC_V_4_5_0 + default "linaro-4.4-2011.02-0" if CC_GCC_V_linaro_4_4 + default "4.4.7" if CC_GCC_V_4_4_7 + default "4.4.6" if CC_GCC_V_4_4_6 + default "4.4.5" if CC_GCC_V_4_4_5 + default "4.4.4" if CC_GCC_V_4_4_4 + default "4.4.3" if CC_GCC_V_4_4_3 + default "4.4.2" if CC_GCC_V_4_4_2 + default "4.4.1" if CC_GCC_V_4_4_1 + default "4.4.0" if CC_GCC_V_4_4_0 + default "4.3.6" if CC_GCC_V_4_3_6 + default "4.3.5" if CC_GCC_V_4_3_5 + default "4.3.4" if CC_GCC_V_4_3_4 + default "4.3.3" if CC_GCC_V_4_3_3 + default "4.3.2" if CC_GCC_V_4_3_2 + default "4.3.1" if CC_GCC_V_4_3_1 + default "4.3.0" if CC_GCC_V_4_3_0 + default "4.2.4" if CC_GCC_V_4_2_4 + default "4.2.2" if CC_GCC_V_4_2_2 + default "4.1.2" if CC_GCC_V_4_1_2 + default "4.0.4" if CC_GCC_V_4_0_4 + default "3.4.6" if CC_GCC_V_3_4_6 + default "custom" if CC_GCC_CUSTOM config CC_LANG_JAVA_USE_ECJ bool @@ -490,3 +490,4 @@ # Fortran always requires GMP+MPFR, whatever the gcc version config CC_LANG_FORTRAN select CC_GCC_USE_GMP_MPFR + diff -r 2685dfa9de14 -r 2a93f4221ba8 config/cc/gcc.in.2 --- a/config/cc/gcc.in.2 Thu May 23 17:51:15 2013 +0200 +++ b/config/cc/gcc.in.2 Wed Jul 10 00:57:54 2013 +0200 @@ -1,6 +1,6 @@ # gcc configuration options -config CC_ENABLE_CXX_FLAGS +config CC_GCC_ENABLE_CXX_FLAGS string prompt "Flags to pass to --enable-cxx-flags" default "" @@ -11,7 +11,7 @@ Note: just pass in the option _value_, that is only the part that goes after the '=' sign. -config CC_CORE_EXTRA_CONFIG_ARRAY +config CC_GCC_CORE_EXTRA_CONFIG_ARRAY string prompt "Core gcc extra config" default "" @@ -25,7 +25,7 @@ if they are properly quoted (or escaped, but prefer quotes). Eg.: --with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space -config CC_EXTRA_CONFIG_ARRAY +config CC_GCC_EXTRA_CONFIG_ARRAY string prompt "gcc extra config" default "" @@ -38,9 +38,9 @@ --with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space config STATIC_TOOLCHAIN - select CC_STATIC_LIBSTDCXX if CC_GCC_4_4_or_later + select CC_GCC_STATIC_LIBSTDCXX if CC_GCC_4_4_or_later -config CC_STATIC_LIBSTDCXX +config CC_GCC_STATIC_LIBSTDCXX bool prompt "Link libstdc++ statically into the gcc binary" default y diff -r 2685dfa9de14 -r 2a93f4221ba8 scripts/build/cc.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/build/cc.sh Wed Jul 10 00:57:54 2013 +0200 @@ -0,0 +1,59 @@ +# Wrapper to build the companion tools facilities + +# List all companion tools facilities, and parse their scripts +CT_CC_FACILITY_LIST= +for f in "${CT_LIB_DIR}/scripts/build/cc/"*.sh; do + _f="$(basename "${f}" .sh)" + _f="${_f#???-}" + __f="CT_CC_${_f}" + if [ "${!__f}" = "y" ]; then + CT_DoLog DEBUG "Enabling cc '${_f}'" + . "${f}" + CT_CC_FACILITY_LIST="${CT_CC_FACILITY_LIST} ${_f}" + else + CT_DoLog DEBUG "Disabling cc '${_f}'" + fi +done + +# Download the cc facilities +do_cc_get() { + for f in ${CT_CC_FACILITY_LIST}; do + do_${f}_get + done +} + +# Extract and patch the cc facilities +do_cc_extract() { + for f in ${CT_CC_FACILITY_LIST}; do + do_${f}_extract + done +} + +# Core pass 1 the cc facilities +do_cc_core_pass_1() { + for f in ${CT_CC_FACILITY_LIST}; do + do_${f}_core_pass_1 + done +} + +# Core pass 2 the cc facilities +do_cc_core_pass_2() { + for f in ${CT_CC_FACILITY_LIST}; do + do_${f}_core_pass_2 + done +} + +# Build for build the cc facilities +do_cc_for_build() { + for f in ${CT_CC_FACILITY_LIST}; do + do_${f}_for_build + done +} + +# Build for host the cc facilities +do_cc_for_host() { + for f in ${CT_CC_FACILITY_LIST}; do + do_${f}_for_host + done +} + diff -r 2685dfa9de14 -r 2a93f4221ba8 scripts/build/cc/gcc.sh --- a/scripts/build/cc/gcc.sh Thu May 23 17:51:15 2013 +0200 +++ b/scripts/build/cc/gcc.sh Wed Jul 10 00:57:54 2013 +0200 @@ -3,16 +3,16 @@ # Licensed under the GPL v2. See COPYING in the root of this package # Download gcc -do_cc_get() { +do_gcc_get() { local linaro_version local linaro_series local linaro_base_url="http://launchpad.net/gcc-linaro" - if [ "${CT_CC_CUSTOM}" = "y" ]; then - CT_GetCustom "gcc" "${CT_CC_VERSION}" "${CT_CC_CUSTOM_LOCATION}" + if [ "${CT_CC_GCC_CUSTOM}" = "y" ]; then + CT_GetCustom "gcc" "${CT_CC_GCC_VERSION}" "${CT_CC_GCC_CUSTOM_LOCATION}" else # Account for the Linaro versioning - linaro_version="$( echo "${CT_CC_VERSION}" \ + linaro_version="$( echo "${CT_CC_GCC_VERSION}" \ |sed -r -e 's/^linaro-//;' \ )" linaro_series="$( echo "${linaro_version}" \ @@ -24,12 +24,11 @@ # 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! - CT_GetFile "gcc-${CT_CC_VERSION}" \ - {ftp,http}://ftp.gnu.org/gnu/gcc{,{,/releases}/gcc-${CT_CC_VERSION}} \ - ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-${CT_CC_VERSION} \ - ftp://ftp.uvsq.fr/pub/gcc/snapshots/${CT_CC_VERSION} \ - "${linaro_base_url}/${linaro_series}/${linaro_version}/+download" - + CT_GetFile "gcc-${CT_CC_GCC_VERSION}" \ + {ftp,http}://ftp.gnu.org/gnu/gcc{,{,/releases}/gcc-${CT_CC_GCC_VERSION}} \ + ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-${CT_CC_GCC_VERSION} \ + ftp://ftp.uvsq.fr/pub/gcc/snapshots/${CT_CC_GCC_VERSION} \ + "${linaro_base_url}/${linaro_series}/${linaro_version}/+download" fi # ! custom location # Starting with GCC 4.3, ecj is used for Java, and will only be # built if the configure script finds ecj.jar at the top of the @@ -42,21 +41,21 @@ } # Extract gcc -do_cc_extract() { +do_gcc_extract() { # If using custom directory location, nothing to do - if [ "${CT_CC_CUSTOM}" = "y" \ - -a -d "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}" ]; then + if [ "${CT_CC_GCC_CUSTOM}" = "y" \ + -a -d "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}" ]; then return 0 fi - CT_Extract "gcc-${CT_CC_VERSION}" - CT_Patch "gcc" "${CT_CC_VERSION}" + CT_Extract "gcc-${CT_CC_GCC_VERSION}" + CT_Patch "gcc" "${CT_CC_GCC_VERSION}" # Copy ecj-latest.jar to ecj.jar at the top of the GCC source tree if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y" \ - -a ! -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar" \ + -a ! -f "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/ecj.jar" \ ]; then - CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/ecj-latest.jar" "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar" + CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/ecj-latest.jar" "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/ecj.jar" fi } @@ -80,7 +79,7 @@ #------------------------------------------------------------------------------ # Core gcc pass 1 -do_cc_core_pass_1() { +do_gcc_core_pass_1() { local -a core_opts if [ "${CT_CC_CORE_PASSES_NEEDED}" != "y" ]; then @@ -95,17 +94,17 @@ core_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" ) core_opts+=( "lang_list=c" ) - CT_DoStep INFO "Installing pass-1 core C compiler" - CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-core-pass-1" + CT_DoStep INFO "Installing pass-1 core C gcc compiler" + CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-core-pass-1" - do_cc_core_backend "${core_opts[@]}" + do_gcc_core_backend "${core_opts[@]}" CT_Popd CT_EndStep } # Core gcc pass 2 -do_cc_core_pass_2() { +do_gcc_core_pass_2() { local -a core_opts if [ "${CT_CC_CORE_PASSES_NEEDED}" != "y" ]; then @@ -142,10 +141,10 @@ ;; esac - CT_DoStep INFO "Installing pass-2 core C compiler" - CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-core-pass-2" + CT_DoStep INFO "Installing pass-2 core C gcc compiler" + CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-core-pass-2" - do_cc_core_backend "${core_opts[@]}" + do_gcc_core_backend "${core_opts[@]}" CT_Popd CT_EndStep @@ -154,7 +153,7 @@ #------------------------------------------------------------------------------ # Build core gcc # This function is used to build the core C compiler. -# Usage: do_cc_core_backend param=value [...] +# Usage: do_gcc_core_backend param=value [...] # Parameter : Definition : Type : Default # mode : build a 'static', 'shared' or 'baremetal' : string : (none) # host : the machine the core will run on : tuple : (none) @@ -167,8 +166,8 @@ # build_manuals : whether to build manuals or not : bool : no # cflags : cflags to use : string : (empty) # ldflags : ldflags to use : string : (empty) -# Usage: do_cc_core_backend mode=[static|shared|baremetal] build_libgcc=[yes|no] build_staticlinked=[yes|no] -do_cc_core_backend() { +# Usage: do_gcc_core_backend mode=[static|shared|baremetal] build_libgcc=[yes|no] build_staticlinked=[yes|no] +do_gcc_core_backend() { local mode local build_libgcc=no local build_libstdcxx=no @@ -191,7 +190,7 @@ eval "${arg// /\\ }" done - CT_DoLog EXTRA "Configuring gcc" + CT_DoLog EXTRA "Configuring core C gcc compiler" case "${mode}" in static) @@ -243,7 +242,7 @@ # *** WARNING ! *** # Keep this full if-else-if-elif-fi-fi block in sync - # with the same block in do_cc, below. + # with the same block in do_gcc, below. if [ "${build_staticlinked}" = "yes" ]; then core_LDFLAGS+=("-static") host_libstdcxx_flags+=("-static-libgcc") @@ -368,21 +367,21 @@ 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) - CT_DoExecLog CFG \ - CC_FOR_BUILD="${CT_BUILD}-gcc" \ - CFLAGS="${cflags}" \ - LDFLAGS="${core_LDFLAGS[*]}" \ - "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/configure" \ - --build=${CT_BUILD} \ - --host=${host} \ - --target=${CT_TARGET} \ - --prefix="${prefix}" \ - --with-local-prefix="${CT_SYSROOT_DIR}" \ - --disable-libmudflap \ - ${CC_CORE_SYSROOT_ARG} \ - "${extra_config[@]}" \ - --enable-languages="${lang_list}" \ - "${CT_CC_CORE_EXTRA_CONFIG_ARRAY[@]}" + CT_DoExecLog CFG \ + CC_FOR_BUILD="${CT_BUILD}-gcc" \ + CFLAGS="${cflags}" \ + LDFLAGS="${core_LDFLAGS[*]}" \ + "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/configure" \ + --build=${CT_BUILD} \ + --host=${host} \ + --target=${CT_TARGET} \ + --prefix="${prefix}" \ + --with-local-prefix="${CT_SYSROOT_DIR}" \ + --disable-libmudflap \ + ${CC_CORE_SYSROOT_ARG} \ + "${extra_config[@]}" \ + --enable-languages="${lang_list}" \ + "${CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY[@]}" if [ "${build_libgcc}" = "yes" ]; then # HACK: we need to override SHLIB_LC from gcc/config/t-slibgcc-elf-ver or @@ -401,7 +400,7 @@ # 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}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then + if [ ! -f "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ]; then CT_DoExecLog CFG make ${JOBSFLAGS} configure-libiberty CT_DoExecLog ALL make ${JOBSFLAGS} -C libiberty libiberty.a CT_DoExecLog CFG make ${JOBSFLAGS} configure-gcc configure-libcpp @@ -411,12 +410,12 @@ CT_DoExecLog ALL make ${JOBSFLAGS} all-libcpp all-build-libiberty fi # HACK: gcc-4.2 uses libdecnumber to build libgcc.mk, so build it here. - if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/libdecnumber" ]; then + if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/libdecnumber" ]; then CT_DoExecLog CFG make ${JOBSFLAGS} configure-libdecnumber CT_DoExecLog ALL make ${JOBSFLAGS} -C libdecnumber libdecnumber.a fi # HACK: gcc-4.8 uses libbacktrace to make libgcc.mvars, so make it here. - if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/libbacktrace" ]; then + if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/libbacktrace" ]; then CT_DoExecLog CFG make ${JOBSFLAGS} configure-libbacktrace CT_DoExecLog ALL make ${JOBSFLAGS} -C libbacktrace fi @@ -456,16 +455,16 @@ core_targets+=( target-libstdc++-v3 ) fi - CT_DoLog EXTRA "Building gcc" + CT_DoLog EXTRA "Building core C gcc compiler" CT_DoExecLog ALL make ${JOBSFLAGS} "${core_targets[@]/#/all-}" - CT_DoLog EXTRA "Installing gcc" + CT_DoLog EXTRA "Installing core C gcc compiler" CT_DoExecLog ALL make ${JOBSFLAGS} "${core_targets[@]/#/install-}" if [ "${build_manuals}" = "yes" ]; then - CT_DoLog EXTRA "Building the GCC manuals" + CT_DoLog EXTRA "Building the gcc manuals" CT_DoExecLog ALL make pdf html - CT_DoLog EXTRA "Installing the GCC manuals" + CT_DoLog EXTRA "Installing the gcc manuals" CT_DoExecLog ALL make install-{pdf,html}-gcc fi @@ -499,7 +498,7 @@ #------------------------------------------------------------------------------ # Build complete gcc to run on build -do_cc_for_build() { +do_gcc_for_build() { local -a build_final_opts local build_final_backend @@ -523,13 +522,13 @@ if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then build_final_opts+=( "build_staticlinked=yes" ) fi - build_final_backend=do_cc_core_backend + build_final_backend=do_gcc_core_backend else - build_final_backend=do_cc_backend + build_final_backend=do_gcc_backend fi - CT_DoStep INFO "Installing final compiler for build" - CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-final-build-${CT_BUILD}" + CT_DoStep INFO "Installing final gcc compiler for build" + CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-final-build-${CT_BUILD}" "${build_final_backend}" "${build_final_opts[@]}" @@ -539,7 +538,7 @@ #------------------------------------------------------------------------------ # Build final gcc to run on host -do_cc_for_host() { +do_gcc_for_host() { local -a final_opts local final_backend @@ -559,13 +558,13 @@ if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then final_opts+=( "build_staticlinked=yes" ) fi - final_backend=do_cc_core_backend + final_backend=do_gcc_core_backend else - final_backend=do_cc_backend + final_backend=do_gcc_backend fi - CT_DoStep INFO "Installing final compiler" - CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-final" + CT_DoStep INFO "Installing final gcc compiler" + CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-final" "${final_backend}" "${final_opts[@]}" @@ -575,7 +574,7 @@ #------------------------------------------------------------------------------ # Build the final gcc -# Usage: do_cc_backend param=value [...] +# Usage: do_gcc_backend param=value [...] # Parameter : Definition : Type : Default # host : the host we run onto : tuple : (none) # prefix : the runtime prefix : dir : (none) @@ -584,7 +583,7 @@ # ldflags : ldflags to use : string : (empty) # lang_list : the list of languages to build : string : (empty) # build_manuals : whether to build manuals or not : bool : no -do_cc_backend() { +do_gcc_backend() { local host local prefix local complibs @@ -602,7 +601,7 @@ eval "${arg// /\\ }" done - CT_DoLog EXTRA "Configuring gcc" + CT_DoLog EXTRA "Configuring final gcc compiler" # Enable selected languages extra_config+=("--enable-languages=${lang_list}") @@ -629,8 +628,8 @@ else extra_config+=("--disable-__cxa_atexit") fi - if [ -n "${CT_CC_ENABLE_CXX_FLAGS}" ]; then - extra_config+=("--enable-cxx-flags=${CT_CC_ENABLE_CXX_FLAGS}") + if [ -n "${CT_CC_GCC_ENABLE_CXX_FLAGS}" ]; then + extra_config+=("--enable-cxx-flags=${CT_CC_GCC_ENABLE_CXX_FLAGS}") fi if [ "${CT_CC_GCC_LIBMUDFLAP}" = "y" ]; then extra_config+=(--enable-libmudflap) @@ -661,7 +660,7 @@ # *** WARNING ! *** # Keep this full if-else-if-elif-fi-fi block in sync - # with the same block in do_cc_core, above. + # with the same block in do_gcc_core, above. if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then final_LDFLAGS+=("-static") host_libstdcxx_flags+=("-static-libgcc") @@ -674,7 +673,7 @@ final_LDFLAGS+=("-lstdc++") final_LDFLAGS+=("-lm") else - if [ "${CT_CC_STATIC_LIBSTDCXX}" = "y" ]; then + if [ "${CT_CC_GCC_STATIC_LIBSTDCXX}" = "y" ]; then # this is from CodeSourcery arm-2010q1-202-arm-none-linux-gnueabi.src.tar.bz2 # build script # INFO: if the host gcc is gcc-4.5 then presumably we could use -static-libstdc++, @@ -803,40 +802,40 @@ CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'" - CT_DoExecLog CFG \ - CC_FOR_BUILD="${CT_BUILD}-gcc" \ - CFLAGS="${cflags}" \ - LDFLAGS="${final_LDFLAGS[*]}" \ - CFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \ - CXXFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \ - LDFLAGS_FOR_TARGET="${CT_TARGET_LDFLAGS}" \ - "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/configure" \ - --build=${CT_BUILD} \ - --host=${host} \ - --target=${CT_TARGET} \ - --prefix="${prefix}" \ - ${CC_SYSROOT_ARG} \ - "${extra_config[@]}" \ - --with-local-prefix="${CT_SYSROOT_DIR}" \ - --enable-c99 \ - --enable-long-long \ - "${CT_CC_EXTRA_CONFIG_ARRAY[@]}" + CT_DoExecLog CFG \ + CC_FOR_BUILD="${CT_BUILD}-gcc" \ + CFLAGS="${cflags}" \ + LDFLAGS="${final_LDFLAGS[*]}" \ + CFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \ + CXXFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \ + LDFLAGS_FOR_TARGET="${CT_TARGET_LDFLAGS}" \ + "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/configure" \ + --build=${CT_BUILD} \ + --host=${host} \ + --target=${CT_TARGET} \ + --prefix="${prefix}" \ + ${CC_SYSROOT_ARG} \ + "${extra_config[@]}" \ + --with-local-prefix="${CT_SYSROOT_DIR}" \ + --enable-c99 \ + --enable-long-long \ + "${CT_CC_GCC_EXTRA_CONFIG_ARRAY[@]}" if [ "${CT_CANADIAN}" = "y" ]; then CT_DoLog EXTRA "Building libiberty" CT_DoExecLog ALL make ${JOBSFLAGS} all-build-libiberty fi - CT_DoLog EXTRA "Building gcc" + CT_DoLog EXTRA "Building final gcc compiler" CT_DoExecLog ALL make ${JOBSFLAGS} all - CT_DoLog EXTRA "Installing gcc" + CT_DoLog EXTRA "Installing final gcc compiler" CT_DoExecLog ALL make ${JOBSFLAGS} install if [ "${build_manuals}" = "yes" ]; then - CT_DoLog EXTRA "Building the GCC manuals" + CT_DoLog EXTRA "Building the gcc manuals" CT_DoExecLog ALL make pdf html - CT_DoLog EXTRA "Installing the GCC manuals" + CT_DoLog EXTRA "Installing the gcc manuals" CT_DoExecLog ALL make install-{pdf,html}-gcc fi diff -r 2685dfa9de14 -r 2a93f4221ba8 scripts/build/debug/300-gdb.sh --- a/scripts/build/debug/300-gdb.sh Thu May 23 17:51:15 2013 +0200 +++ b/scripts/build/debug/300-gdb.sh Wed Jul 10 00:57:54 2013 +0200 @@ -181,11 +181,11 @@ if [ "${CT_GDB_INSTALL_GDBINIT}" = "y" ]; then CT_DoLog EXTRA "Installing '.gdbinit' template" # See in scripts/build/internals.sh for why we do this - if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then - gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ) + if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ]; then + gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ) else - gcc_version=$( sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \ - "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/version.c" \ + gcc_version=$( sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \ + "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/version.c" \ ) fi ${sed} -r \ diff -r 2685dfa9de14 -r 2a93f4221ba8 scripts/build/internals.sh --- a/scripts/build/internals.sh Thu May 23 17:51:15 2013 +0200 +++ b/scripts/build/internals.sh Wed Jul 10 00:57:54 2013 +0200 @@ -28,17 +28,17 @@ CT_DoExecLog ALL "${CT_TARGET}-strip" ${strip_args} \ "${CT_TARGET}/debug-root/usr/bin/gdbserver" fi - # We can not use the version in CT_CC_VERSION because + # We can not use the version in CT_CC_GCC_VERSION because # of the Linaro stuff. So, harvest the version string # directly from the gcc sources... # All gcc 4.x seem to have the version in gcc/BASE-VER # while version prior to 4.x have the version in gcc/version.c # Of course, here is not the better place to do that... - if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then - gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ) + if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ]; then + gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ) else - gcc_version=$( sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \ - "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/version.c" \ + gcc_version=$( sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \ + "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/version.c" \ ) fi for _t in "bin/${CT_TARGET}-"* \ diff -r 2685dfa9de14 -r 2a93f4221ba8 scripts/build/test_suite/gcc.sh --- a/scripts/build/test_suite/gcc.sh Thu May 23 17:51:15 2013 +0200 +++ b/scripts/build/test_suite/gcc.sh Wed Jul 10 00:57:54 2013 +0200 @@ -15,10 +15,10 @@ CT_DoStep INFO "Installing GCC test suite" CT_DoExecLog ALL mkdir -p "${CT_TEST_SUITE_DIR}/gcc" - CT_DoExecLog ALL cp -av "${CT_LIB_DIR}/contrib/gcc-test-suite/default.cfg" \ - "${CT_LIB_DIR}/contrib/gcc-test-suite/Makefile" \ - "${CT_LIB_DIR}/contrib/gcc-test-suite/README" \ - "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/testsuite" \ + CT_DoExecLog ALL cp -av "${CT_LIB_DIR}/contrib/gcc-test-suite/default.cfg" \ + "${CT_LIB_DIR}/contrib/gcc-test-suite/Makefile" \ + "${CT_LIB_DIR}/contrib/gcc-test-suite/README" \ + "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/testsuite" \ "${CT_TEST_SUITE_DIR}/gcc" CT_DoExecLog ALL sed -i -r -e "s/@@DG_TARGET@@/${CT_TARGET}/g;" \ diff -r 2685dfa9de14 -r 2a93f4221ba8 scripts/crosstool-NG.sh.in --- a/scripts/crosstool-NG.sh.in Thu May 23 17:51:15 2013 +0200 +++ b/scripts/crosstool-NG.sh.in Wed Jul 10 00:57:54 2013 +0200 @@ -140,7 +140,7 @@ . "${CT_LIB_DIR}/scripts/build/companion_libs.sh" . "${CT_LIB_DIR}/scripts/build/binutils/${CT_BINUTILS}.sh" . "${CT_LIB_DIR}/scripts/build/libc/${CT_LIBC}.sh" -. "${CT_LIB_DIR}/scripts/build/cc/${CT_CC}.sh" +. "${CT_LIB_DIR}/scripts/build/cc.sh" . "${CT_LIB_DIR}/scripts/build/debug.sh" . "${CT_LIB_DIR}/scripts/build/test_suite.sh" diff -r 2685dfa9de14 -r 2a93f4221ba8 scripts/showSamples.sh --- a/scripts/showSamples.sh Thu May 23 17:51:15 2013 +0200 +++ b/scripts/showSamples.sh Wed Jul 10 00:57:54 2013 +0200 @@ -76,7 +76,7 @@ [ -z "${CT_LIBELF}" -a -z "${CT_LIBELF_TARGET}" ] || printf " libelf-%s" "${CT_LIBELF_VERSION}" [ -z "${complibs}" ] || printf "\n" printf " %-*s : %s\n" ${width} "binutils" "binutils-${CT_BINUTILS_VERSION}" - printf " %-*s : %s" ${width} "C compiler" "${CT_CC}-${CT_CC_VERSION} (C" + printf " %-*s : %s" ${width} "C compiler" "${CT_CC}-${CT_CC_GCC_VERSION} (C" [ "${CT_CC_LANG_CXX}" = "y" ] && printf ",C++" [ "${CT_CC_LANG_FORTRAN}" = "y" ] && printf ",Fortran" [ "${CT_CC_LANG_JAVA}" = "y" ] && printf ",Java" @@ -120,7 +120,7 @@ fi printf "| ${CT_BINUTILS_VERSION} " printf "| ''${CT_CC}'' " - printf "| ${CT_CC_VERSION} " + printf "| ${CT_CC_GCC_VERSION} " printf "| ''${CT_LIBC}'' |" if [ "${CT_LIBC}" != "none" ]; then printf " ${CT_LIBC_VERSION} " -- For unsubscribe information see http://sourceware.org/lists.html#faq ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1 of 1] cc/gcc: Split gcc configurations and functions from cc ones 2013-07-09 22:58 ` [PATCH 1 of 1] cc/gcc: Split gcc configurations and functions from cc ones Yann Diorcet @ 2013-07-10 6:16 ` Daniel Price 2013-07-10 7:43 ` Diorcet Yann 0 siblings, 1 reply; 11+ messages in thread From: Daniel Price @ 2013-07-10 6:16 UTC (permalink / raw) To: Yann Diorcet; +Cc: Yann E. MORIN, crossgcc On Tue, Jul 9, 2013 at 3:58 PM, Yann Diorcet <diorcet.yann@gmail.com> wrote: > cc/gcc: Split gcc configurations and functions from cc ones > ... > -config CC_V_linaro_4_8 > +config CC_GCC_V_linaro_4_8 > bool > prompt "linaro-4.8-2013.04" Hi Yann, Maybe I've misunderstood, but would this patch invalidate all existing ct-ng configuration files? Is there an upgrade path (even a sed script would help) for existing configs? -dp -- Daniel.Price@gmail.com; Twitter: @danielbprice -- For unsubscribe information see http://sourceware.org/lists.html#faq ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1 of 1] cc/gcc: Split gcc configurations and functions from cc ones 2013-07-10 6:16 ` Daniel Price @ 2013-07-10 7:43 ` Diorcet Yann 2013-07-10 8:50 ` Martin Guy 0 siblings, 1 reply; 11+ messages in thread From: Diorcet Yann @ 2013-07-10 7:43 UTC (permalink / raw) To: Daniel Price; +Cc: Yann E. MORIN, crossgcc Hi, Indeed it will break configurations (new one will be ok). Maybe we can provide a script like this one: cat .config | sed 's/\([ _]\)CC_/\1CC_GCC_/g' | sed 's/GCC_GCC/GCC/g' > .config.new Le 10/07/13 08:16, Daniel Price a écrit : > On Tue, Jul 9, 2013 at 3:58 PM, Yann Diorcet <diorcet.yann@gmail.com> wrote: >> cc/gcc: Split gcc configurations and functions from cc ones >> > ... >> -config CC_V_linaro_4_8 >> +config CC_GCC_V_linaro_4_8 >> bool >> prompt "linaro-4.8-2013.04" > Hi Yann, > > Maybe I've misunderstood, but would this patch invalidate all existing > ct-ng configuration files? Is there an upgrade path (even a sed > script would help) for existing configs? > > -dp > > -- > Daniel.Price@gmail.com; Twitter: @danielbprice -- For unsubscribe information see http://sourceware.org/lists.html#faq ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1 of 1] cc/gcc: Split gcc configurations and functions from cc ones 2013-07-10 7:43 ` Diorcet Yann @ 2013-07-10 8:50 ` Martin Guy 0 siblings, 0 replies; 11+ messages in thread From: Martin Guy @ 2013-07-10 8:50 UTC (permalink / raw) To: Diorcet Yann; +Cc: Daniel Price, Yann E. MORIN, crossgcc On 10 July 2013 09:43, Diorcet Yann <diorcet.yann@gmail.com> wrote: >> Maybe I've misunderstood, but would this patch invalidate all existing >> ct-ng configuration files? > > Indeed it will break configurations (new one will be ok). > > Maybe we can provide a script like this one: Maybe you can make this automatic, so that it "just works". If variable-does-not-exist-and-begins-with-CC_ .... Otherwise you have to reconfigure and test all the examples... your initiative is great, and thanks for the preview. I would suggest that you finish your work before submitting patches, then when it actually works with other compilers we cn evaluate whether there is enough code in common to make it worth building one enormous crosstool-ng, or whether it makes more sense to have one for each compiler. Thanks for sharing, let us know how it goes M -- For unsubscribe information see http://sourceware.org/lists.html#faq ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2013-12-12 22:07 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2013-12-11 20:42 [PATCH 0 of 1] Split gcc from cc Yann Diorcet 2013-12-11 20:42 ` [PATCH 1 of 1] cc/gcc: Split gcc configurations and functions from cc ones Yann Diorcet 2013-12-12 22:07 ` Yann E. MORIN -- strict thread matches above, loose matches on Subject: below -- 2013-12-02 20:52 [PATCH 0 of 1] Split gcc from cc Yann Diorcet 2013-12-02 20:54 ` [PATCH 1 of 1] cc/gcc: Split gcc configurations and functions from cc ones Yann Diorcet 2013-12-09 19:05 ` Ray Donnelly 2013-12-09 22:06 ` Cody P Schafer 2013-12-10 9:26 ` Yann Diorcet 2013-07-09 22:58 [PATCH 0 of 1] Split gcc from cc Yann Diorcet 2013-07-09 22:58 ` [PATCH 1 of 1] cc/gcc: Split gcc configurations and functions from cc ones Yann Diorcet 2013-07-10 6:16 ` Daniel Price 2013-07-10 7:43 ` Diorcet Yann 2013-07-10 8:50 ` Martin Guy
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).