From cc6b7fad46f5cb3d84cf87ae47c5f723803a67a3 Mon Sep 17 00:00:00 2001 From: Alexey Neyman Date: Wed, 5 Jan 2022 00:37:45 -0800 Subject: Retire obsoleted milestones ... and the code dependent on them, after the latest wave of obsolete package removals. This concludes the glorious history of the original uClibc (non-NG) with lots of kludges removed. There was a choice here, whether to call the resulting libc "uClibc" or "uClibc-ng". I opted in favor of giving uClibc-ng the recognition it deserves, although it had some ripple effect in the ct-ng code. Signed-off-by: Alexey Neyman --- config/cc/gcc.in | 9 +- config/comp_libs/gmp.in | 4 - config/comp_libs/isl.in | 12 -- config/comp_libs/mpc.in | 3 - config/comp_libs/newlib-nano.in | 18 +-- config/debug/gdb.in.native | 8 +- config/debug/ltrace.in | 7 -- config/libc/glibc.in | 1 - config/libc/mingw-w64.in | 4 - config/libc/newlib.in | 18 +-- config/libc/uClibc-ng.in | 170 ++++++++++++++++++++++++++++ config/libc/uClibc.in | 239 ---------------------------------------- 12 files changed, 178 insertions(+), 315 deletions(-) create mode 100644 config/libc/uClibc-ng.in delete mode 100644 config/libc/uClibc.in (limited to 'config') diff --git a/config/cc/gcc.in b/config/cc/gcc.in index e068afd5..742d563f 100644 --- a/config/cc/gcc.in +++ b/config/cc/gcc.in @@ -7,19 +7,14 @@ ## select CC_SUPPORT_OBJC ## select CC_SUPPORT_OBJCXX ## select CC_SUPPORT_GOLANG +# ISL 0.15 is the oldest release present in CTNG. # GCC7 requires ISL 0.15+ -## select ISL_REQUIRE_0_15_or_later if ISL_NEEDED && GCC_7_or_later # GCC6 requires ISL 0.14+ (it says 0.14-0.16, but accepts newer ISL as well) -## select ISL_REQUIRE_0_14_or_later if ISL_NEEDED && GCC_6_or_later # GCC5 requires ISL 0.12+ (again, it says 0.12-0.16, but also accepts newer ISL up to 0.18; # fails to compile with 0.19+) -## select ISL_REQUIRE_0_12_or_later if ISL_NEEDED && GCC_5_or_later ## select ISL_REQUIRE_0_18_or_older if ISL_NEEDED && GCC_5_or_later && !GCC_6_or_later # GCC4.9 requires ISL 0.10..0.15 -# GCC4.8 requires ISL 0.10..0.14 -## select ISL_REQUIRE_0_10_or_later if ISL_NEEDED && GCC_4_8_or_later ## select ISL_REQUIRE_0_15_or_older if ISL_NEEDED && GCC_4_9_or_later && !GCC_5_or_later -## select ISL_REQUIRE_0_14_or_older if ISL_NEEDED && GCC_4_8_or_later && !GCC_4_9_or_later ## help gcc is the full-blown GNU compiler. This is what most people will choose. ## help @@ -265,7 +260,7 @@ config CC_GCC_LIBSANITIZER bool prompt "Compile libsanitizer" depends on THREADS_NATIVE - depends on !LIBC_UCLIBC && !LIBC_MUSL # Currently lacks required headers (like netrom.h) + depends on !LIBC_UCLIBC_NG && !LIBC_MUSL # Currently lacks required headers (like netrom.h) help libsanitizer is a library which provides run-time sanitising of either or both of: diff --git a/config/comp_libs/gmp.in b/config/comp_libs/gmp.in index 72702443..f49d1a71 100644 --- a/config/comp_libs/gmp.in +++ b/config/comp_libs/gmp.in @@ -1,5 +1 @@ # GMP options - -config GMP_HAS_MPBSD - bool - default y if !GMP_5_1_0_or_later diff --git a/config/comp_libs/isl.in b/config/comp_libs/isl.in index fe6fa8d4..22b0cadb 100644 --- a/config/comp_libs/isl.in +++ b/config/comp_libs/isl.in @@ -1,13 +1 @@ # ISL options -# CLooG 0.18.4 requires ISL 0.12 or newer -# CLooG 0.18.1 requires ISL 0.12 or older -## select CLOOG_REQUIRE_0_18_1_or_older if CLOOG_NEEDED && !ISL_0_12_or_later -## select CLOOG_REQUIRE_0_18_4_or_later if CLOOG_NEEDED && !ISL_0_14_or_older - -config ISL_NEEDS_WITH_GMP - bool - default y if !ISL_0_12_or_later - -config ISL_HAS_WITH_PIPLIB - bool - default y if !ISL_0_14_or_later diff --git a/config/comp_libs/mpc.in b/config/comp_libs/mpc.in index 2ea3c0cc..422935f0 100644 --- a/config/comp_libs/mpc.in +++ b/config/comp_libs/mpc.in @@ -1,6 +1,3 @@ # MPC options -# MPC 1.1.0 and later requires MPFR 3.0.0 or later and GMP 5.0.0 or later. # MPC 1.0.x and earlier break with MPFR 4.0.0. -## select MPFR_REQUIRE_3_0_0_or_later if MPFR_NEEDED && MPC_1_1_0_or_later -## select GMP_REQUIRE_5_0_0_or_later if GMP_NEEDED && MPC_1_1_0_or_later ## select MPFR_REQUIRE_older_than_4_0_0 if MPFR_NEEDED && !MPC_1_1_0_or_later diff --git a/config/comp_libs/newlib-nano.in b/config/comp_libs/newlib-nano.in index 5a81fdec..e7ef6f73 100644 --- a/config/comp_libs/newlib-nano.in +++ b/config/comp_libs/newlib-nano.in @@ -1,6 +1,7 @@ # newlib-nano options ## depends on BARE_METAL +## select LIBC_PROVIDES_CXA_ATEXIT ## help Newlib-nano is a C library intended for use on embedded systems. It is a ## help conglomeration of several library parts, all under free software @@ -37,21 +38,6 @@ config NEWLIB_NANO_INSTALL_IN_TARGET Additionally the newlib-nano version of newlib.h will get copied to include/newlib-nano/newlib.h. -# maybe older versions of newlib will support it too, but this -# needs to be checked -config NEWLIB_NANO_CXA_ATEXIT - def_bool y - depends on NEWLIB_NANO_2_0_or_later - select LIBC_PROVIDES_CXA_ATEXIT - -config NEWLIB_NANO_HAS_NANO_MALLOC - def_bool y - depends on NEWLIB_NANO_2_1_or_later - -config NEWLIB_NANO_HAS_NANO_FORMATTED_IO - def_bool y - depends on NEWLIB_NANO_2_2_or_later - config LIBC_NEWLIB_NANO_TARGET_CFLAGS string prompt "Target CFLAGS for newlib" @@ -225,7 +211,6 @@ config LIBC_NEWLIB_NANO_NANO_MALLOC bool prompt "Enable Nano Malloc" default y - depends on NEWLIB_NANO_HAS_NANO_MALLOC help NEWLIB has two implementations of malloc family's functions, one in `mallocr.c' and the other one in `nano-mallocr.c'. This options @@ -237,7 +222,6 @@ config LIBC_NEWLIB_NANO_NANO_FORMATTED_IO bool prompt "Enable Nano Formatted I/O" default y - depends on NEWLIB_NANO_HAS_NANO_FORMATTED_IO help This builds NEWLIB with a special implementation of formatted I/O functions, designed to lower the size of application on small systems diff --git a/config/debug/gdb.in.native b/config/debug/gdb.in.native index 7ac8ec23..b4721c87 100644 --- a/config/debug/gdb.in.native +++ b/config/debug/gdb.in.native @@ -6,8 +6,8 @@ config GDB_NATIVE depends on ! BARE_METAL depends on ! LIBC_BIONIC depends on CC_LANG_CXX || !GDB_8_0_or_later - select LIBC_UCLIBC_WCHAR if LIBC_UCLIBC && GDB_8_0_or_later - select LIBC_UCLIBC_IPV6 if LIBC_UCLIBC && GDB_8_3_or_later + select LIBC_UCLIBC_WCHAR if LIBC_UCLIBC_NG && GDB_8_0_or_later + select LIBC_UCLIBC_IPV6 if LIBC_UCLIBC_NG && GDB_8_3_or_later select EXPAT_TARGET select NCURSES_TARGET select GMP_TARGET if GDB_11_1_or_later @@ -19,8 +19,8 @@ config GDB_GDBSERVER prompt "gdbserver" default y depends on ! BARE_METAL - select LIBC_UCLIBC_WCHAR if LIBC_UCLIBC && GDB_8_0_or_later - select LIBC_UCLIBC_IPV6 if LIBC_UCLIBC && GDB_8_3_or_later + select LIBC_UCLIBC_WCHAR if LIBC_UCLIBC_NG && GDB_8_0_or_later + select LIBC_UCLIBC_IPV6 if LIBC_UCLIBC_NG && GDB_8_3_or_later help Build and install a gdbserver for the target, to run on the target. diff --git a/config/debug/ltrace.in b/config/debug/ltrace.in index 1cdd1574..75bdf4f5 100644 --- a/config/debug/ltrace.in +++ b/config/debug/ltrace.in @@ -7,10 +7,3 @@ ## help It intercepts and records the dynamic library calls which are called by ## help the executed process and the signals which are received by that process. ## help It can also intercept and print the system calls executed by the program. - -# Ltrace 0.5.3 had a unique hand-crafted configure script that has to be -# run differently from any preceding or following releases. This serves -# as a reminder to remove that code once 0.5.3 support is dropped. -config LTRACE_0_5_3_CONFIGURE - bool - default y if LTRACE_V_0_5_3 diff --git a/config/libc/glibc.in b/config/libc/glibc.in index 63c31f6c..39c2c20b 100644 --- a/config/libc/glibc.in +++ b/config/libc/glibc.in @@ -66,7 +66,6 @@ config GLIBC_DEP_MAKE_4_0 def_bool y depends on GLIBC_2_28_or_later && !CONFIGURE_has_make_4_0_or_newer select COMP_TOOLS_MAKE - select MAKE_REQUIRE_4_0_or_later select MAKE_GNUMAKE_SYMLINK # Override old host make in .build/tools/bin # Glibc 2.31 removed support for pre-v8 SPARC in 32-bit mode (64-bit mode always diff --git a/config/libc/mingw-w64.in b/config/libc/mingw-w64.in index d176e477..1880f082 100644 --- a/config/libc/mingw-w64.in +++ b/config/libc/mingw-w64.in @@ -9,10 +9,6 @@ ## ## help The de-facto standard for Mingw distributions. -config MINGW_W64_REQUIRES_W64_VENDOR - bool - default y if MINGW_W64_V4_or_later - config THREADS default "win32" if THREADS_NATIVE default "posix" if THREADS_POSIX diff --git a/config/libc/newlib.in b/config/libc/newlib.in index ce426dae..83ae4b15 100644 --- a/config/libc/newlib.in +++ b/config/libc/newlib.in @@ -1,6 +1,7 @@ # newlib options ## depends on BARE_METAL +## select LIBC_PROVIDES_CXA_ATEXIT ## select LIBC_SUPPORT_THREADS_NONE ## select CC_CORE_PASS_1_NEEDED @@ -11,21 +12,6 @@ ## help array of processors, and will usually work on any architecture with ## help the addition of a few low-level routines. -# maybe older versions of newlib will support it too, but this -# needs to be checked -config NEWLIB_CXA_ATEXIT - def_bool y - depends on NEWLIB_2_0_or_later - select LIBC_PROVIDES_CXA_ATEXIT - -config NEWLIB_HAS_NANO_MALLOC - def_bool y - depends on NEWLIB_2_1_or_later - -config NEWLIB_HAS_NANO_FORMATTED_IO - def_bool y - depends on NEWLIB_2_2_or_later - config LIBC_NEWLIB_TARGET_CFLAGS string prompt "Target CFLAGS for newlib" @@ -197,7 +183,6 @@ config LIBC_NEWLIB_LTO config LIBC_NEWLIB_NANO_MALLOC bool prompt "Enable Nano Malloc" - depends on NEWLIB_HAS_NANO_MALLOC help NEWLIB has two implementations of malloc family's functions, one in `mallocr.c' and the other one in `nano-mallocr.c'. This options @@ -208,7 +193,6 @@ config LIBC_NEWLIB_NANO_MALLOC config LIBC_NEWLIB_NANO_FORMATTED_IO bool prompt "Enable Nano Formatted I/O" - depends on NEWLIB_HAS_NANO_FORMATTED_IO help This builds NEWLIB with a special implementation of formatted I/O functions, designed to lower the size of application on small systems diff --git a/config/libc/uClibc-ng.in b/config/libc/uClibc-ng.in new file mode 100644 index 00000000..705c0d46 --- /dev/null +++ b/config/libc/uClibc-ng.in @@ -0,0 +1,170 @@ +# uClibc options + +## depends on ! WINDOWS && ! BARE_METAL +## +## select LIBC_SUPPORT_THREADS_LT +## select LIBC_SUPPORT_THREADS_NONE +## select LIBC_SUPPORT_THREADS_NATIVE +## select CC_CORE_PASS_1_NEEDED +## +## help The de-facto standard for embeded linux systems. +## help +## help Highly configurable, thus as feature-rich as you +## help need, without compromising for size. + +config THREADS + default "nptl" if THREADS_NATIVE + default "linuxthreads" if THREADS_LT + +if ARCH_FLOAT_SOFTFP +comment "'softfp' ABI and uClibc is not entirely tested in crosstool-NG" +comment "You may experience issues, although it should work just fine" +endif # ARCH_FLOAT_SOFTFP + +choice + bool + prompt "uClibc verbosity:" + default LIBC_UCLIBC_VERBOSITY_0 + +config LIBC_UCLIBC_VERBOSITY_0 + bool + prompt "Quiet build" + help + Print terse command indications. + +config LIBC_UCLIBC_VERBOSITY_1 + bool + prompt "Brief build (show defines, ld flags)" + help + Print simplified command lines. + +config LIBC_UCLIBC_VERBOSITY_2 + bool + prompt "Very verbose build" + help + Print full command lines. + +endchoice + +# uClibc-ng has reverted the meaning of V=1 and V=2 compared to its +# ancestor, uClibc, in order to match kernel's Kbuild settings. +# Hence, for uClibc-ng supply V=2 if "brief build" is selected, +# and so forth. +config LIBC_UCLIBC_VERBOSITY + string + default "" if LIBC_UCLIBC_VERBOSITY_0 + default "V=2" if LIBC_UCLIBC_VERBOSITY_1 + default "V=1" if LIBC_UCLIBC_VERBOSITY_2 + +choice + bool + prompt "Debug level" + default LIBC_UCLIBC_DEBUG_LEVEL_0 + +config LIBC_UCLIBC_DEBUG_LEVEL_0 + bool + prompt "none" + +config LIBC_UCLIBC_DEBUG_LEVEL_1 + bool + prompt "minimal" + +config LIBC_UCLIBC_DEBUG_LEVEL_2 + bool + prompt "normal" + +config LIBC_UCLIBC_DEBUG_LEVEL_3 + bool + prompt "all" + +endchoice + +config LIBC_UCLIBC_DEBUG_LEVEL + int + default 0 if LIBC_UCLIBC_DEBUG_LEVEL_0 + default 1 if LIBC_UCLIBC_DEBUG_LEVEL_1 + default 2 if LIBC_UCLIBC_DEBUG_LEVEL_2 + default 3 if LIBC_UCLIBC_DEBUG_LEVEL_3 + +config LIBC_UCLIBC_CONFIG_FILE + string + prompt "Configuration file" + default "" + help + Path to the configuration file. + + If the file is not provided, we fall back to a default config file. + +config LIBC_UCLIBC_LOCALES + bool + select LIBC_UCLIBC_WCHAR + # Before it became a separate option, libiconv depended on locales + prompt "Add support for locales" + help + Say y if you want uClibc to support localisation. + + Note that seems to be broken on recent uClibc releases. + +config LIBC_UCLIBC_LIBICONV + bool "Enable iconv" + help + Say y if you want to enable and the corresponding interfaces. + +config LIBC_UCLIBC_IPV6 + bool + prompt "Add support for IPv6" + help + Say y if you want uClibc to support IPv6. + +config LIBC_UCLIBC_WCHAR + bool + prompt "Add support for WCHAR" + help + Say y if you want uClibc to support WCHAR. + + Maybe this is needed, if you're building a C++-Compiler + +config LIBC_UCLIBC_FENV + bool + prompt "Add support for fenv.h" + default y if ARCH_X86 + help + fenv.h provides functions to control the floating point environment, + such as rounding mode, exceptions... + + For some architectures, fenv.h is incomplete, so is not installed + by default. x86 is known to have a rather complete fenv.h, so it is + installed by default only for x86. + + If you need fenv.h on other architectures, say 'y' here, but you may + encounter some issues. + +config LIBC_UCLIBC_HAS_SSP + bool + prompt "Support stack smashing protection (SSP)" + default y + help + Enable support for building programs with -fstack-protector family + of options. If this option is disabled, one can also use a standalone + libssp library from GCC. + +config LIBC_UCLIBC_BUILD_SSP + bool + prompt "Build uClibc with SSP" + depends on LIBC_UCLIBC_HAS_SSP + help + Build uClibc with -fstack-protector. This adds runtime overhead + to many function calls and is disabled by default. + +if ARCH_ARM +config LIBC_UCLIBC_USE_GNU_SUFFIX + bool + default y + prompt "Use -uclibcgnueabi suffix" + help + Depending on where the resulting toolchain will be used, you may need + to tweak the "system" part of the target tuple. Buildroot prefers + to have arm-*-linux-uclibcgnueabi; OpenEmbedded prefers + arm-*-linux-uclibceabi. Other tools seem to either accept both, or + don't care about the suffix. +endif diff --git a/config/libc/uClibc.in b/config/libc/uClibc.in deleted file mode 100644 index c88bbc8a..00000000 --- a/config/libc/uClibc.in +++ /dev/null @@ -1,239 +0,0 @@ -# uClibc options - -## depends on ! WINDOWS && ! BARE_METAL -## -## select LIBC_SUPPORT_THREADS_LT -## select LIBC_SUPPORT_THREADS_NONE -## select LIBC_SUPPORT_THREADS_NATIVE if UCLIBC_0_9_33_2_or_later -## select CC_CORE_PASS_1_NEEDED -## -## help The de-facto standard for embeded linux systems. -## help -## help Highly configurable, thus as feature-rich as you -## help need, without compromising for size. - -config THREADS - default "nptl" if THREADS_NATIVE - default "linuxthreads" if THREADS_LT - -if ARCH_FLOAT_SOFTFP -comment "'softfp' ABI and uClibc is not entirely tested in crosstool-NG" -comment "You may experience issues, although it should work just fine" -endif # ARCH_FLOAT_SOFTFP - -config LIBC_UCLIBC_HAS_SUNRPC - bool - default y if !UCLIBC_1_0_23_or_later - -config LIBC_UCLIBC_HAS_LIBICONV - bool - default y if UCLIBC_1_0_21_or_later - -config LIBC_UCLIBC_PARALLEL - def_bool y - depends on UCLIBC_0_9_33_2_or_later - -config LIBC_UCLIBC_NG - def_bool y - depends on UCLIBC_1_0_0_or_later - -# uClibc-ng 1.0.15 did away with 2 implementations of linuxthreads -config UCLIBC_MERGED_LINUXTHREADS - def_bool y - depends on UCLIBC_1_0_15_or_later - -choice - bool - prompt "uClibc verbosity:" - default LIBC_UCLIBC_VERBOSITY_0 - -config LIBC_UCLIBC_VERBOSITY_0 - bool - prompt "Quiet build" - help - Print terse command indications. - -config LIBC_UCLIBC_VERBOSITY_1 - bool - prompt "Brief build (show defines, ld flags)" - help - Print simplified command lines. - -config LIBC_UCLIBC_VERBOSITY_2 - bool - prompt "Very verbose build" - help - Print full command lines. - -endchoice - -# uClibc-ng has reverted the meaning of V=1 and V=2 compared to its -# ancestor, uClibc, in order to match kernel's Kbuild settings. -# Hence, for uClibc-ng supply V=2 if "brief build" is selected, -# and so forth. -config LIBC_UCLIBC_VERBOSITY - string - default "" if LIBC_UCLIBC_VERBOSITY_0 - default "V=2" if LIBC_UCLIBC_VERBOSITY_1 && LIBC_UCLIBC_NG - default "V=1" if LIBC_UCLIBC_VERBOSITY_1 - default "V=1" if LIBC_UCLIBC_VERBOSITY_2 && LIBC_UCLIBC_NG - default "V=2" if LIBC_UCLIBC_VERBOSITY_2 - -choice - bool - prompt "Debug level" - default LIBC_UCLIBC_DEBUG_LEVEL_0 - -config LIBC_UCLIBC_DEBUG_LEVEL_0 - bool - prompt "none" - -config LIBC_UCLIBC_DEBUG_LEVEL_1 - bool - prompt "minimal" - -config LIBC_UCLIBC_DEBUG_LEVEL_2 - bool - prompt "normal" - -config LIBC_UCLIBC_DEBUG_LEVEL_3 - bool - prompt "all" - -endchoice - -config LIBC_UCLIBC_DEBUG_LEVEL - int - default 0 if LIBC_UCLIBC_DEBUG_LEVEL_0 - default 1 if LIBC_UCLIBC_DEBUG_LEVEL_1 - default 2 if LIBC_UCLIBC_DEBUG_LEVEL_2 - default 3 if LIBC_UCLIBC_DEBUG_LEVEL_3 - -config LIBC_UCLIBC_CONFIG_FILE - string - prompt "Configuration file" - default "" - help - Path to the configuration file. - - If the file is not provided, we fall back to a default config file. - -if THREADS_LT && !UCLIBC_MERGED_LINUXTHREADS - -choice - bool - prompt "Linuxthread implementation: " - default LIBC_UCLIBC_LNXTHRD_OLD - -config LIBC_UCLIBC_LNXTHRD_OLD - bool - prompt "old/stable" - help - From the uClibc config option help: - There are two versions of linuxthreads. The older (stable) version - has been in uClibc for quite a long time but hasn't seen too many - updates other than bugfixes. - -config LIBC_UCLIBC_LNXTHRD_NEW - bool - prompt "new" - help - From the uClibc config option help: - The new version has not been tested much, and lacks ports for arches - which glibc does not support (like frv, etc...), but is based on - the latest code from glibc, so it may be the only choice for the - newer ports (like alpha/amd64/64bit arches and hppa). - -endchoice - -endif # THREADS_LT - -config LIBC_UCLIBC_LNXTHRD - string - default "" if THREADS_NONE - default "" if THREADS_NATIVE - default "" if UCLIBC_MERGED_LINUXTHREADS - default "old" if LIBC_UCLIBC_LNXTHRD_OLD - default "new" if LIBC_UCLIBC_LNXTHRD_NEW - -config LIBC_UCLIBC_LOCALES - bool - select LIBC_UCLIBC_WCHAR - # Before it became a separate option, libiconv depended on locales - prompt "Add support for locales" - help - Say y if you want uClibc to support localisation. - - Note that seems to be broken on recent uClibc releases. - -config LIBC_UCLIBC_LIBICONV - bool "Enable iconv" - depends on LIBC_UCLIBC_HAS_LIBICONV - help - Say y if you want to enable and the corresponding interfaces. - -config LIBC_UCLIBC_IPV6 - bool - prompt "Add support for IPv6" - help - Say y if you want uClibc to support IPv6. - -config LIBC_UCLIBC_WCHAR - bool - prompt "Add support for WCHAR" - help - Say y if you want uClibc to support WCHAR. - - Maybe this is needed, if you're building a C++-Compiler - -config LIBC_UCLIBC_FENV - bool - prompt "Add support for fenv.h" - default y if ARCH_X86 - help - fenv.h provides functions to control the floating point environment, - such as rounding mode, exceptions... - - For some architectures, fenv.h is incomplete, so is not installed - by default. x86 is known to have a rather complete fenv.h, so it is - installed by default only for x86. - - If you need fenv.h on other architectures, say 'y' here, but you may - encounter some issues. - -config LIBC_UCLIBC_RPC - bool - prompt "Add support for RPC" - depends on LIBC_UCLIBC_HAS_SUNRPC - help - Enable support for remote procedure calls (RPC) in uClibc. - -config LIBC_UCLIBC_HAS_SSP - bool - prompt "Support stack smashing protection (SSP)" - default y - help - Enable support for building programs with -fstack-protector family - of options. If this option is disabled, one can also use a standalone - libssp library from GCC. - -config LIBC_UCLIBC_BUILD_SSP - bool - prompt "Build uClibc with SSP" - depends on LIBC_UCLIBC_HAS_SSP - help - Build uClibc with -fstack-protector. This adds runtime overhead - to many function calls and is disabled by default. - -if ARCH_ARM -config LIBC_UCLIBC_USE_GNU_SUFFIX - bool - default y - prompt "Use -uclibcgnueabi suffix" - help - Depending on where the resulting toolchain will be used, you may need - to tweak the "system" part of the target tuple. Buildroot prefers - to have arm-*-linux-uclibcgnueabi; OpenEmbedded prefers - arm-*-linux-uclibceabi. Other tools seem to either accept both, or - don't care about the suffix. -endif -- cgit v1.2.3 From b4191b23a8411e508796fe6c110fdc3b05d94e69 Mon Sep 17 00:00:00 2001 From: Alexey Neyman Date: Wed, 2 Feb 2022 14:26:22 -0800 Subject: Update tic6x sample Restrict kernel to 5.11 and below (support for this arch has been dropped in 5.12); rename the sample to match its name as printed by `ct-ng show-tuple` (otherwise, `make saveconfig` does not update the sample's configuration). Signed-off-by: Alexey Neyman --- config/arch/c6x.in | 5 ++++- packages/linux/package.desc | 2 +- samples/tic6x-uclinux-uclibc/crosstool.config | 14 -------------- samples/tic6x-uclinux-uclibc/reported.by | 3 --- samples/tic6x-uclinux/crosstool.config | 12 ++++++++++++ samples/tic6x-uclinux/reported.by | 3 +++ 6 files changed, 20 insertions(+), 19 deletions(-) delete mode 100644 samples/tic6x-uclinux-uclibc/crosstool.config delete mode 100644 samples/tic6x-uclinux-uclibc/reported.by create mode 100644 samples/tic6x-uclinux/crosstool.config create mode 100644 samples/tic6x-uclinux/reported.by (limited to 'config') diff --git a/config/arch/c6x.in b/config/arch/c6x.in index 93a8993f..98589ccc 100644 --- a/config/arch/c6x.in +++ b/config/arch/c6x.in @@ -7,9 +7,12 @@ ## select ARCH_DEFAULT_LE ## select ARCH_SUPPORTS_FLAT_FORMAT ## select ARCH_SUPPORTS_WITH_CPU +## select LINUX_REQUIRE_older_than_5_12 +## select LINUX_REQUIRE_3_7_or_later ## depends on EXPERIMENTAL ## ## help The TI C6x (TMS320C6000) architecture ## help https://www.ti.com/processors/digital-signal-processors -## help For linux, kernel must be 3.7 or later (or custom) +## help For linux, kernel must be 3.7 or later (or custom) but not newer +## help than 5.11.x (support for C6x was removed in 5.12). diff --git a/packages/linux/package.desc b/packages/linux/package.desc index f5fa0804..2896725e 100644 --- a/packages/linux/package.desc +++ b/packages/linux/package.desc @@ -2,6 +2,6 @@ origin='www.kernel.org' repository='git git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git' mirrors='$(CT_Mirrors kernel.org linux ${CT_LINUX_VERSION})' relevantpattern='2.*.*|. *.*|.' -milestones='3.2 3.7 4.8 5.3' +milestones='3.2 3.7 4.8 5.3 5.12' archive_formats='.tar.xz .tar.gz' signature_format='unpacked/.sign' diff --git a/samples/tic6x-uclinux-uclibc/crosstool.config b/samples/tic6x-uclinux-uclibc/crosstool.config deleted file mode 100644 index cd4af2c5..00000000 --- a/samples/tic6x-uclinux-uclibc/crosstool.config +++ /dev/null @@ -1,14 +0,0 @@ -CT_CONFIG_VERSION="3" -CT_EXPERIMENTAL=y -CT_ARCH_C6X=y -CT_OMIT_TARGET_VENDOR=y -CT_KERNEL_LINUX=y -CT_MULTILIB=y -CT_LIBC_UCLIBC=y -CT_THREADS="linuxthreads" -CT_UCLIBC_NG_DEVEL_VCS_git=y -CT_UCLIBC_NG_DEVEL_URL="https://github.com/DspHack/uclibc-ng.git" -CT_ARCH_BINFMT_FDPIC=y -CT_CC_LANG_CXX=y -CT_ARCH_ENDIAN="little" - diff --git a/samples/tic6x-uclinux-uclibc/reported.by b/samples/tic6x-uclinux-uclibc/reported.by deleted file mode 100644 index e51f6949..00000000 --- a/samples/tic6x-uclinux-uclibc/reported.by +++ /dev/null @@ -1,3 +0,0 @@ -reporter_name="Dan Tejada " -reporter_url="https://www.cantada.com/" -reporter_comment="Tested with uclibc and linux kernel from http://linux-c6x.org" diff --git a/samples/tic6x-uclinux/crosstool.config b/samples/tic6x-uclinux/crosstool.config new file mode 100644 index 00000000..614c39a2 --- /dev/null +++ b/samples/tic6x-uclinux/crosstool.config @@ -0,0 +1,12 @@ +CT_CONFIG_VERSION="4" +CT_EXPERIMENTAL=y +CT_ARCH_C6X=y +CT_OMIT_TARGET_VENDOR=y +CT_MULTILIB=y +CT_KERNEL_LINUX=y +CT_ARCH_BINFMT_FDPIC=y +CT_LIBC_UCLIBC_NG=y +CT_UCLIBC_NG_SRC_DEVEL=y +CT_UCLIBC_NG_DEVEL_URL="https://github.com/DspHack/uclibc-ng.git" +CT_THREADS_LT=y +CT_CC_LANG_CXX=y diff --git a/samples/tic6x-uclinux/reported.by b/samples/tic6x-uclinux/reported.by new file mode 100644 index 00000000..e51f6949 --- /dev/null +++ b/samples/tic6x-uclinux/reported.by @@ -0,0 +1,3 @@ +reporter_name="Dan Tejada " +reporter_url="https://www.cantada.com/" +reporter_comment="Tested with uclibc and linux kernel from http://linux-c6x.org" -- cgit v1.2.3 From 586c2d01565fca083837e09f217d61e8d7ca7ae2 Mon Sep 17 00:00:00 2001 From: Alexey Neyman Date: Fri, 4 Feb 2022 10:31:25 -0800 Subject: sparc-leon: restrict to GDB9 Starting with GDB10, it requires support for std::future<> in the compiler. Such support has not been available on some architectures until GCC9 (see PR 64735). I haven't determined the exact list of affected architectures, so decided to make it a broad dependency: for GDB10+, you need GCC9+. Signed-off-by: Alexey Neyman --- config/debug/gdb.in | 7 +++++++ samples/sparc-leon-linux-uclibc/crosstool.config | 1 - 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'config') diff --git a/config/debug/gdb.in b/config/debug/gdb.in index aa3235ed..b0b9d294 100644 --- a/config/debug/gdb.in +++ b/config/debug/gdb.in @@ -21,6 +21,13 @@ config GDB_DEP_CXX11 depends on !CONFIGURE_has_cxx11 select GDB_REQUIRE_older_than_8_0 +# GDB10 and newer require std::future<> which was not implemented on some +# architectures until GCC9; see GCC PR 64735. +config GDB_DEP_NO_STD_FUTURE + def_bool y + depends on !GCC_9_or_later + select GDB_REQUIRE_older_than_10_2 + # Does GDB need ps_get_thread_area with const qualifier? config GDB_CONST_GET_THREAD_AREA bool diff --git a/samples/sparc-leon-linux-uclibc/crosstool.config b/samples/sparc-leon-linux-uclibc/crosstool.config index 411ea7f4..0fd6360e 100644 --- a/samples/sparc-leon-linux-uclibc/crosstool.config +++ b/samples/sparc-leon-linux-uclibc/crosstool.config @@ -8,7 +8,6 @@ CT_KERNEL_LINUX=y CT_LINUX_V_3_10=y CT_LIBC_UCLIBC_NG=y CT_LIBC_UCLIBC_CONFIG_FILE="${CT_LIB_DIR}/samples/${CT_TARGET}/${CT_LIBC}.config" -CT_LIBC_UCLIBC_IPV6=y CT_GCC_V_6=y CT_CC_GCC_EXTRA_CONFIG_ARRAY="--disable-libitm" CT_CC_LANG_CXX=y -- cgit v1.2.3 From 4c0d78bb64797bee5414bbc92b35dbbb3e57b34f Mon Sep 17 00:00:00 2001 From: Alexey Neyman Date: Fri, 4 Feb 2022 11:35:52 -0800 Subject: gdb: use single-number versions/milestones for 9+ Starting with GDB9, the release number is only two numbers (with the last being patchlevel). Therefore, keep two numbers for releases 8 and below, but just a single number for 9 and up. Signed-off-by: Alexey Neyman --- config/debug/gdb.in | 4 ++-- config/debug/gdb.in.native | 2 +- packages/gdb/package.desc | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) (limited to 'config') diff --git a/config/debug/gdb.in b/config/debug/gdb.in index b0b9d294..741eeaea 100644 --- a/config/debug/gdb.in +++ b/config/debug/gdb.in @@ -26,7 +26,7 @@ config GDB_DEP_CXX11 config GDB_DEP_NO_STD_FUTURE def_bool y depends on !GCC_9_or_later - select GDB_REQUIRE_older_than_10_2 + select GDB_REQUIRE_older_than_10 # Does GDB need ps_get_thread_area with const qualifier? config GDB_CONST_GET_THREAD_AREA @@ -37,4 +37,4 @@ config GDB_CONST_GET_THREAD_AREA # tarball (instead of a subdirectory of gdb) config GDB_GDBSERVER_TOPLEVEL def_bool y - depends on GDB_10_2_or_later + depends on GDB_10_or_later diff --git a/config/debug/gdb.in.native b/config/debug/gdb.in.native index b4721c87..fc79084d 100644 --- a/config/debug/gdb.in.native +++ b/config/debug/gdb.in.native @@ -10,7 +10,7 @@ config GDB_NATIVE select LIBC_UCLIBC_IPV6 if LIBC_UCLIBC_NG && GDB_8_3_or_later select EXPAT_TARGET select NCURSES_TARGET - select GMP_TARGET if GDB_11_1_or_later + select GMP_TARGET if GDB_11_or_later help Build and install a native gdb for the target, to run on the target. diff --git a/packages/gdb/package.desc b/packages/gdb/package.desc index 06efd376..bdd806ab 100644 --- a/packages/gdb/package.desc +++ b/packages/gdb/package.desc @@ -1,6 +1,6 @@ origin='GNU' repository='git git://sourceware.org/git/binutils-gdb.git' mirrors='$(CT_Mirrors GNU gdb) $(CT_Mirrors sourceware gdb/releases)' -relevantpattern='*.*|[a-z.]' -milestones='7.11 7.12 8.0 8.3 10.2 11.1' +relevantpattern='[78].*|. *|.' +milestones='7.11 7.12 8.0 8.3 10 11' archive_formats='.tar.xz .tar.gz' -- cgit v1.2.3 From 58da27c96589f502744a77b1288172ab75df052c Mon Sep 17 00:00:00 2001 From: Alexey Neyman Date: Sat, 5 Feb 2022 13:26:29 -0800 Subject: Restrict bionic's GCC/GDB selections Refer to the comments in the code for the reason. Signed-off-by: Alexey Neyman --- config/libc/bionic.in | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'config') diff --git a/config/libc/bionic.in b/config/libc/bionic.in index 558c2b47..a5b150ea 100644 --- a/config/libc/bionic.in +++ b/config/libc/bionic.in @@ -1,11 +1,20 @@ # bionic options + ## package android-ndk ## depends on ! WINDOWS && ! BARE_METAL ## depends on ARCH_ARM || ARCH_MIPS || ARCH_X86 ## depends on EXPERIMENTAL +# +# Patches to support bionic were not ported to GCC11 (or to GCC5 and below). ## select GCC_REQUIRE_6_or_later -## +## select GCC_REQUIRE_older_than_11 +# +# GDB10 imported a new drop from gnulib, which fails to build against bionic. +# Patch to support bionic was ported to 7.12 and newer. +## select GDB_REQUIRE_7_12_or_later +## select GDB_REQUIRE_older_than_10 + ## select LIBC_SUPPORT_THREADS_POSIX ## ## help Bionic is the Android C library. It is prebuilt, extracted from the Android NDK. -- cgit v1.2.3 From c6ff1eca5b2d41bbfd085413fad4652524b726a8 Mon Sep 17 00:00:00 2001 From: Alexey Neyman Date: Sun, 6 Feb 2022 15:12:59 -0800 Subject: Restrict *-uclibc,* canadians to gettext 0.20 Newer gettext is incompatible with uClibc-NG in cross-compilation, see the comment in the code. Signed-off-by: Alexey Neyman --- config/comp_libs/gettext.in | 10 ++++++++++ packages/gettext/package.desc | 1 + .../crosstool.config | 1 + .../crosstool.config | 1 + scripts/build/companion_libs/330-gettext.sh | 22 ++++++++++++++++++++++ 5 files changed, 35 insertions(+) (limited to 'config') diff --git a/config/comp_libs/gettext.in b/config/comp_libs/gettext.in index df7e3361..85e43873 100644 --- a/config/comp_libs/gettext.in +++ b/config/comp_libs/gettext.in @@ -1 +1,11 @@ # gettext options + +config GETTEXT_INCOMPATIBLE_WITH_UCLIBC_NG + def_bool y + depends on GETTEXT_0_21_or_later + +if GETTEXT_INCOMPATIBLE_WITH_UCLIBC_NG +comment "This version of gettext is not compatible with uClibc-NG. Select" +comment "a different version if uClibc-NG is used on the target or (in a" +comment "Canadian cross build) on the host." +endif diff --git a/packages/gettext/package.desc b/packages/gettext/package.desc index 99d493ff..2341b4bd 100644 --- a/packages/gettext/package.desc +++ b/packages/gettext/package.desc @@ -5,3 +5,4 @@ bootstrap='./autogen.sh' mirrors='$(CT_Mirrors GNU gettext)' archive_formats='.tar.xz .tar.gz' signature_format='packed/.sig' +milestones='0.21' diff --git a/samples/powerpc-unknown-linux-uclibc,m68k-unknown-uclinux-uclibc/crosstool.config b/samples/powerpc-unknown-linux-uclibc,m68k-unknown-uclinux-uclibc/crosstool.config index 40736a5e..29e7406b 100644 --- a/samples/powerpc-unknown-linux-uclibc,m68k-unknown-uclinux-uclibc/crosstool.config +++ b/samples/powerpc-unknown-linux-uclibc,m68k-unknown-uclinux-uclibc/crosstool.config @@ -4,3 +4,4 @@ CT_CANADIAN=y CT_HOST="powerpc-unknown-linux-uclibc" CT_KERNEL_LINUX=y CT_THREADS_LT=y +CT_GETTEXT_V_0_20_1=y diff --git a/samples/x86_64-multilib-linux-uclibc,powerpc-unknown-elf/crosstool.config b/samples/x86_64-multilib-linux-uclibc,powerpc-unknown-elf/crosstool.config index ee02ef7c..867ac133 100644 --- a/samples/x86_64-multilib-linux-uclibc,powerpc-unknown-elf/crosstool.config +++ b/samples/x86_64-multilib-linux-uclibc,powerpc-unknown-elf/crosstool.config @@ -6,6 +6,7 @@ CT_HOST="x86_64-multilib-linux-uclibc" CT_BINUTILS_PLUGINS=y CT_CC_LANG_CXX=y CT_DEBUG_GDB=y +CT_GETTEXT_V_0_20_1=y CT_COMP_TOOLS_FOR_HOST=y CT_COMP_TOOLS_M4=y CT_COMP_TOOLS_MAKE=y diff --git a/scripts/build/companion_libs/330-gettext.sh b/scripts/build/companion_libs/330-gettext.sh index 149d7d73..9fa3bdcc 100644 --- a/scripts/build/companion_libs/330-gettext.sh +++ b/scripts/build/companion_libs/330-gettext.sh @@ -80,6 +80,28 @@ do_gettext_backend() { return ;; + # Starting with 0.21, gettext cannot build against uClibc-NG: gettext + # checks if it needs to use fopen wrapper (using gnulib) and newer versions + # of gnulib also check if fopen provided by the system supports 'e' and 'x' + # modes. In cross-compile environment, gnulib falls back to assuming fopen + # does not support these modes unless the target tuple is glibc or musl + # (rightly so, since these fopen modes are optional in uClibc-NG). + # Unfortunately, the fopen() wrapper does not compile against uClibc-NG's + # stdio.h then because it includes after defining __need_FILE macro. + # It looks like two bugs, one in each of uClibc-ng and gnulib: + # - uClibc-ng does not include its internal headers with the definitions for the + # __BEGIN_NAMESPACE_STD/__END_NAMESPACE_STD macros, which therefore escape + # unsubstituted into the including code. + # - gnulib shouldn't expect the fopen() prototype if it only asked for FILE + # structure definition by defining the __need_FILE macro. + # Until the maintainers sort this out, disallow newer gettext versions if + # linking against uClibc-NG. + *-uclibc*) + if [ "${CT_GETTEXT_INCOMPATIBLE_WITH_UCLIBC_NG}" = "y" ]; then + CT_Abort "This version of gettext is incompatible with uClibc-NG" + fi + ;; + # A bit ugly. D__USE_MINGW_ANSI_STDIO=1 has its own {v}asprintf functions # but gettext configure doesn't see this flag when it checks for that. An # alternative may be to use CC="${host}-gcc ${cflags}" but that didn't -- cgit v1.2.3 From 7b97bdd825bd27dc433d69dfd2e50404947a2852 Mon Sep 17 00:00:00 2001 From: Alexey Neyman Date: Tue, 8 Feb 2022 17:11:32 -0800 Subject: Convert tabs to spaces Recent changes introduced a mixture of tabs/spaces that result in broken indentation in multiple places. Signed-off-by: Alexey Neyman --- config/comp_libs/picolibc.in | 2 +- scripts/build/arch/sparc.sh | 50 ++++++++++++------------- scripts/build/cc/gcc.sh | 40 ++++++++++---------- scripts/build/companion_libs/340-picolibc.sh | 30 +++++++-------- scripts/build/companion_libs/350-newlib_nano.sh | 12 +++--- scripts/build/companion_tools/050-make.sh | 2 +- scripts/build/companion_tools/510-bison.sh | 2 +- 7 files changed, 69 insertions(+), 69 deletions(-) (limited to 'config') diff --git a/config/comp_libs/picolibc.in b/config/comp_libs/picolibc.in index cb7a1e4f..99f0e452 100644 --- a/config/comp_libs/picolibc.in +++ b/config/comp_libs/picolibc.in @@ -62,7 +62,7 @@ config LIBC_PICOLIBC_GLOBAL_ATEXIT prompt "Enable atexit data structure as global variable" help Enable atexit data structure as global variable, instead - of being thread-local. + of being thread-local. config LIBC_PICOLIBC_LITE_EXIT bool diff --git a/scripts/build/arch/sparc.sh b/scripts/build/arch/sparc.sh index 97c9b9df..22d98e4a 100644 --- a/scripts/build/arch/sparc.sh +++ b/scripts/build/arch/sparc.sh @@ -4,31 +4,31 @@ CT_DoArchTupleValues() { CT_TARGET_ARCH="sparc${target_bits_64}${CT_ARCH_SUFFIX}" if [ "${CT_KERNEL}" = "linux" -a -z "${CT_ARCH_CPU}" ]; then - if [ "${CT_ARCH_64}" = "y" ]; then - # By default, sparc64-*-linux is configured with -mcpu=v9. However, - # according to https://sourceware.org/ml/libc-alpha/2005-12/msg00027.html, - # "There is no Linux sparc64 port that runs on non-UltraSPARC-I+ ISA CPUs." - # There is a patch that would change the default to -mcpu=ultrasparc for - # sparc64-*-linux configuration: https://patchwork.ozlabs.org/patch/409424/ - # but that patch has not been integrated (yet). One concern raised about - # this patch was that -mcpu=ultrasparc can suboptimally schedule instructions - # for newer SPARC CPUs. So, override to -mcpu=ultrasparc and warn the user. - CT_DoLog WARN "Setting CPU to UltraSPARC-I for sparc64-linux. Set CT_ARCH_CPU if a different CPU is desired." - CT_ARCH_WITH_CPU="--with-cpu=ultrasparc" - if [ -n "${CT_ARCH_SUPPORTS_WITH_32_64}" -a -n "${CT_MULTILIB}" ]; then - CT_ARCH_WITH_CPU_32="--with-cpu-32=ultrasparc" - CT_ARCH_WITH_CPU_64="--with-cpu-64=ultrasparc" - fi - else - # Similarly, sparc-*-linux defaults to v7. GLIBC 2.31 started to reject - # pre-v8 configurations with 2.31, and default v8 fails a subsequent test for - # using atomics (which are presumably, only available on some v8 CPUs). - # Therefore, default to v9. - if [ -z "${CT_GLIBC_SPARC_ALLOW_V7}" ]; then - CT_DoLog WARN "Setting CPU to V9 for sparc-linux. Set CT_ARCH_CPU if a different CPU is desired." - CT_ARCH_WITH_CPU="--with-cpu=v9" - fi - fi + if [ "${CT_ARCH_64}" = "y" ]; then + # By default, sparc64-*-linux is configured with -mcpu=v9. However, + # according to https://sourceware.org/ml/libc-alpha/2005-12/msg00027.html, + # "There is no Linux sparc64 port that runs on non-UltraSPARC-I+ ISA CPUs." + # There is a patch that would change the default to -mcpu=ultrasparc for + # sparc64-*-linux configuration: https://patchwork.ozlabs.org/patch/409424/ + # but that patch has not been integrated (yet). One concern raised about + # this patch was that -mcpu=ultrasparc can suboptimally schedule instructions + # for newer SPARC CPUs. So, override to -mcpu=ultrasparc and warn the user. + CT_DoLog WARN "Setting CPU to UltraSPARC-I for sparc64-linux. Set CT_ARCH_CPU if a different CPU is desired." + CT_ARCH_WITH_CPU="--with-cpu=ultrasparc" + if [ -n "${CT_ARCH_SUPPORTS_WITH_32_64}" -a -n "${CT_MULTILIB}" ]; then + CT_ARCH_WITH_CPU_32="--with-cpu-32=ultrasparc" + CT_ARCH_WITH_CPU_64="--with-cpu-64=ultrasparc" + fi + else + # Similarly, sparc-*-linux defaults to v7. GLIBC 2.31 started to reject + # pre-v8 configurations with 2.31, and default v8 fails a subsequent test for + # using atomics (which are presumably, only available on some v8 CPUs). + # Therefore, default to v9. + if [ -z "${CT_GLIBC_SPARC_ALLOW_V7}" ]; then + CT_DoLog WARN "Setting CPU to V9 for sparc-linux. Set CT_ARCH_CPU if a different CPU is desired." + CT_ARCH_WITH_CPU="--with-cpu=v9" + fi + fi fi } diff --git a/scripts/build/cc/gcc.sh b/scripts/build/cc/gcc.sh index 0b41c29e..ab66f413 100644 --- a/scripts/build/cc/gcc.sh +++ b/scripts/build/cc/gcc.sh @@ -337,14 +337,14 @@ do_gcc_core_backend() { ;; libstdcxx) CT_DoLog EXTRA "Configuring libstdc++ for ${libstdcxx_name}" - if [ "${header_dir}" = "" ]; then - header_dir="${CT_PREFIX_DIR}/${libstdcxx_name}/include" - fi - if [ "${exec_prefix}" = "" ]; then - exec_prefix="${CT_PREFIX_DIR}/${libstdcxx_name}" - fi + if [ "${header_dir}" = "" ]; then + header_dir="${CT_PREFIX_DIR}/${libstdcxx_name}/include" + fi + if [ "${exec_prefix}" = "" ]; then + exec_prefix="${CT_PREFIX_DIR}/${libstdcxx_name}" + fi extra_config+=( "${CT_CC_SYSROOT_ARG[@]}" ) - extra_config+=( "--with-headers=${header_dir}" ) + extra_config+=( "--with-headers=${header_dir}" ) extra_user_config=( "${CT_CC_GCC_EXTRA_CONFIG_ARRAY[@]}" ) log_txt="libstdc++ ${libstdcxx_name} library" # to inhibit the libiberty and libgcc tricks later on @@ -356,7 +356,7 @@ do_gcc_core_backend() { esac if [ "${exec_prefix}" = "" ]; then - exec_prefix="${prefix}" + exec_prefix="${prefix}" fi case "${mode}" in @@ -654,7 +654,7 @@ do_gcc_core_backend() { --host=${host} \ --target=${CT_TARGET} \ --prefix="${prefix}" \ - --exec_prefix="${exec_prefix}" \ + --exec_prefix="${exec_prefix}" \ --with-local-prefix="${CT_SYSROOT_DIR}" \ "${extra_config[@]}" \ --enable-languages="${lang_list}" \ @@ -726,11 +726,11 @@ do_gcc_core_backend() { core_targets_all=all core_targets_install=install ;; - libstdcxx) - core_targets=( target-libstdc++-v3 ) - core_targets_all="${core_targets[@]/#/all-}" - core_targets_install="${core_targets[@]/#/install-}" - ;; + libstdcxx) + core_targets=( target-libstdc++-v3 ) + core_targets_all="${core_targets[@]/#/all-}" + core_targets_install="${core_targets[@]/#/install-}" + ;; esac CT_DoLog EXTRA "Building ${log_txt}" @@ -807,9 +807,9 @@ do_cc_for_build() { # lack of such a compiler, but better safe than sorry... build_final_opts+=( "mode=baremetal" ) build_final_opts+=( "build_libgcc=yes" ) - if [ "${CT_LIBC_NONE}" != "y" ]; then + if [ "${CT_LIBC_NONE}" != "y" ]; then build_final_opts+=( "build_libstdcxx=yes" ) - fi + fi build_final_opts+=( "build_libgfortran=yes" ) if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then build_final_opts+=( "build_staticlinked=yes" ) @@ -898,9 +898,9 @@ do_cc_for_host() { if [ "${CT_BARE_METAL}" = "y" ]; then final_opts+=( "mode=baremetal" ) final_opts+=( "build_libgcc=yes" ) - if [ "${CT_LIBC_NONE}" != "y" ]; then + if [ "${CT_LIBC_NONE}" != "y" ]; then final_opts+=( "build_libstdcxx=yes" ) - fi + fi final_opts+=( "build_libgfortran=yes" ) if [ "${CT_STATIC_TOOLCHAIN}" = "y" ]; then final_opts+=( "build_staticlinked=yes" ) @@ -969,7 +969,7 @@ do_gcc_backend() { done if [ "${exec_prefix}" = "" ]; then - exec_prefix="${prefix}" + exec_prefix="${prefix}" fi # This function gets called for final gcc and libstdcxx. @@ -1280,7 +1280,7 @@ do_gcc_backend() { --host=${host} \ --target=${CT_TARGET} \ --prefix="${prefix}" \ - --exec_prefix="${exec_prefix}" \ + --exec_prefix="${exec_prefix}" \ ${CT_CC_SYSROOT_ARG} \ "${extra_config[@]}" \ --with-local-prefix="${CT_SYSROOT_DIR}" \ diff --git a/scripts/build/companion_libs/340-picolibc.sh b/scripts/build/companion_libs/340-picolibc.sh index cb96e716..e879005d 100644 --- a/scripts/build/companion_libs/340-picolibc.sh +++ b/scripts/build/companion_libs/340-picolibc.sh @@ -32,18 +32,18 @@ do_cc_libstdcxx_picolibc() if [ "${CT_LIBC_PICOLIBC_GCC_LIBSTDCXX}" = "y" ]; then final_opts+=( "host=${CT_HOST}" ) - final_opts+=( "libstdcxx_name=picolibc" ) + final_opts+=( "libstdcxx_name=picolibc" ) 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=c,c++" ) final_opts+=( "build_step=libstdcxx" ) - final_opts+=( "extra_config+=('--enable-stdio=stdio_pure')" ) - final_opts+=( "extra_config+=('--disable-wchar_t')" ) - if [ "${CT_LIBC_PICOLIBC_ENABLE_TARGET_OPTSPACE}" = "y" ]; then - final_opts+=( "enable_optspace=yes" ) - fi + final_opts+=( "extra_config+=('--enable-stdio=stdio_pure')" ) + final_opts+=( "extra_config+=('--disable-wchar_t')" ) + if [ "${CT_LIBC_PICOLIBC_ENABLE_TARGET_OPTSPACE}" = "y" ]; then + final_opts+=( "enable_optspace=yes" ) + fi if [ "${CT_BARE_METAL}" = "y" ]; then final_opts+=( "mode=baremetal" ) @@ -107,7 +107,7 @@ RETARGETABLE_LOCKING:newlib-retargetable-locking done [ "${CT_USE_SYSROOT}" = "y" ] && \ - picolibc_opts+=( "-Dsysroot-install=true" ) + picolibc_opts+=( "-Dsysroot-install=true" ) [ "${CT_LIBC_PICOLIBC_EXTRA_SECTIONS}" = "y" ] && \ CT_LIBC_PICOLIBC_TARGET_CFLAGS="${CT_LIBC_PICOLIBC_TARGET_CFLAGS} -ffunction-sections -fdata-sections" @@ -122,11 +122,11 @@ RETARGETABLE_LOCKING:newlib-retargetable-locking # build : not used # host : the machine building picolibc # target : the machine picolibc runs on - meson_cflags="" - for cflag in ${cflags_for_target}; do - meson_cflags="${meson_cflags} '${cflag}'," - done - cat << EOF > picolibc-cross.txt + meson_cflags="" + for cflag in ${cflags_for_target}; do + meson_cflags="${meson_cflags} '${cflag}'," + done + cat << EOF > picolibc-cross.txt [binaries] c = '${CT_TARGET}-gcc' ar = '${CT_TARGET}-ar' @@ -149,9 +149,9 @@ EOF meson \ --cross-file picolibc-cross.txt \ --prefix="${CT_PREFIX_DIR}" \ - -Dincludedir=picolibc/include \ - -Dlibdir=picolibc/${CT_TARGET}/lib \ - -Dspecsdir="${CT_SYSROOT_DIR}"/lib \ + -Dincludedir=picolibc/include \ + -Dlibdir=picolibc/${CT_TARGET}/lib \ + -Dspecsdir="${CT_SYSROOT_DIR}"/lib \ "${CT_SRC_DIR}/picolibc" \ "${picolibc_opts[@]}" \ "${CT_LIBC_PICOLIBC_EXTRA_CONFIG_ARRAY[@]}" diff --git a/scripts/build/companion_libs/350-newlib_nano.sh b/scripts/build/companion_libs/350-newlib_nano.sh index f521be12..ad6ea9a1 100644 --- a/scripts/build/companion_libs/350-newlib_nano.sh +++ b/scripts/build/companion_libs/350-newlib_nano.sh @@ -57,16 +57,16 @@ do_cc_libstdcxx_newlib_nano() if [ "${CT_NEWLIB_NANO_GCC_LIBSTDCXX}" = "y" ]; then final_opts+=( "host=${CT_HOST}" ) - final_opts+=( "libstdcxx_name=newlib-nano" ) + final_opts+=( "libstdcxx_name=newlib-nano" ) 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=c,c++" ) final_opts+=( "build_step=libstdcxx" ) - if [ "${CT_LIBC_NEWLIB_NANO_ENABLE_TARGET_OPTSPACE}" = "y" ]; then - final_opts+=( "enable_optspace=yes" ) - fi + if [ "${CT_LIBC_NEWLIB_NANO_ENABLE_TARGET_OPTSPACE}" = "y" ]; then + final_opts+=( "enable_optspace=yes" ) + fi if [ -n "${CT_NEWLIB_NANO_GCC_LIBSTDCXX_TARGET_CXXFLAGS}" ]; then final_opts+=( "extra_cxxflags_for_target=${CT_NEWLIB_NANO_GCC_LIBSTDCXX_TARGET_CXXFLAGS}" ) fi @@ -185,8 +185,8 @@ ENABLE_TARGET_OPTSPACE:target-optspace --host=${CT_BUILD} \ --target=${CT_TARGET} \ --prefix=${CT_PREFIX_DIR} \ - --exec-prefix=${CT_PREFIX_DIR}/newlib-nano \ - --libdir=${CT_PREFIX_DIR}/newlib-nano/${CT_TARGET}/lib \ + --exec-prefix=${CT_PREFIX_DIR}/newlib-nano \ + --libdir=${CT_PREFIX_DIR}/newlib-nano/${CT_TARGET}/lib \ "${newlib_opts[@]}" \ "${CT_LIBC_NEWLIB_NANO_EXTRA_CONFIG_ARRAY[@]}" diff --git a/scripts/build/companion_tools/050-make.sh b/scripts/build/companion_tools/050-make.sh index aecea1ab..df77d5ba 100644 --- a/scripts/build/companion_tools/050-make.sh +++ b/scripts/build/companion_tools/050-make.sh @@ -72,7 +72,7 @@ do_make_backend() "${CT_SRC_DIR}/make/configure" \ --host="${host}" \ --prefix="${prefix}" \ - "${extra_config[@]}" + "${extra_config[@]}" CT_DoLog EXTRA "Building make" CT_DoExecLog ALL make diff --git a/scripts/build/companion_tools/510-bison.sh b/scripts/build/companion_tools/510-bison.sh index 9379ea82..90bf9ec7 100644 --- a/scripts/build/companion_tools/510-bison.sh +++ b/scripts/build/companion_tools/510-bison.sh @@ -56,7 +56,7 @@ do_bison_backend() "${CT_SRC_DIR}/bison/configure" \ --host="${host}" \ --prefix="${prefix}" \ - "${extra_config[@]}" + "${extra_config[@]}" CT_DoLog EXTRA "Building bison" CT_DoExecLog ALL make -- cgit v1.2.3 From 5a0be8b4ec0f1b7ff4fe30c8caaa5285b4f11ae4 Mon Sep 17 00:00:00 2001 From: Alexey Neyman Date: Tue, 8 Feb 2022 17:25:12 -0800 Subject: Unify core passes With libc_headers step before pass-1, there is no need to distinguish pass-1 and pass-2; they are configured identically (note that with the current configuration, core pass-2 is only used for win32 - hence, uses build_libgcc=yes and mode=static). Signed-off-by: Alexey Neyman --- TODO | 2 +- config/cc.in | 5 +-- config/cc/gcc.in | 2 +- config/libc/glibc.in | 2 +- config/libc/mingw-w64.in | 2 +- config/libc/moxiebox.in | 2 +- config/libc/musl.in | 2 +- config/libc/newlib.in | 2 +- config/libc/uClibc-ng.in | 2 +- ct-ng.in | 4 +- scripts/build/cc/gcc.sh | 85 ++++++++--------------------------------- scripts/build/libc/uClibc-ng.sh | 2 +- 12 files changed, 26 insertions(+), 86 deletions(-) (limited to 'config') diff --git a/TODO b/TODO index 52d0637e..d030a9c3 100644 --- a/TODO +++ b/TODO @@ -75,7 +75,7 @@ A (slightly) ordered set of tasks for crosstool-NG. Written in a cryptic languag [ ] add passthrough to configure, for host/target [ ] Read/spellcheck configs & scripts [ ] 'ct-ng olddefconfig' -[ ] Install a "trap" C++ compiler as ${CT_TARGET}-g++ during pass-1/pass-2 to trap attempts to compile target code with g++ (currently glibc detects host g++ and warns that it uses g++ w/o target triplet) +[ ] Install a "trap" C++ compiler as ${CT_TARGET}-g++ during core compiler build to trap attempts to compile target code with g++ (currently glibc detects host g++ and warns that it uses g++ w/o target triplet) [ ] Somehow it needs to be functional during the configure step - export env var while running in CT_DoExecLog with CFG level, and forward it to host compiler? [ ] elf2flt not compatible with multiple linkers enabled in binutils (ld.bfd + ld.gold) - fix upstream? [ ] Companion libs diff --git a/config/cc.in b/config/cc.in index 0890cc20..3a168055 100644 --- a/config/cc.in +++ b/config/cc.in @@ -2,10 +2,7 @@ menu "C compiler" -config CC_CORE_PASS_1_NEEDED - bool - -config CC_CORE_PASS_2_NEEDED +config CC_CORE_NEEDED bool config CC_SUPPORT_CXX diff --git a/config/cc/gcc.in b/config/cc/gcc.in index 742d563f..a708bb82 100644 --- a/config/cc/gcc.in +++ b/config/cc/gcc.in @@ -55,7 +55,7 @@ config CC_GCC_ENABLE_CXX_FLAGS config CC_GCC_CORE_EXTRA_CONFIG_ARRAY string "Core gcc extra config" default "" - depends on CC_CORE_PASS_1_NEEDED || CC_CORE_PASS_2_NEEDED + depends on CC_CORE_NEEDED help Extra flags to pass onto ./configure when configuring the core gcc. diff --git a/config/libc/glibc.in b/config/libc/glibc.in index 39c2c20b..3da38bdb 100644 --- a/config/libc/glibc.in +++ b/config/libc/glibc.in @@ -3,7 +3,7 @@ ## depends on ! WINDOWS && ! BARE_METAL && ARCH_USE_MMU ## select LIBC_SUPPORT_THREADS_NATIVE -## select CC_CORE_PASS_1_NEEDED +## select CC_CORE_NEEDED # TBD: select GETTEXT for build only, not for host ## select GETTEXT_NEEDED ## select BINUTILS_FORCE_LD_BFD_DEFAULT diff --git a/config/libc/mingw-w64.in b/config/libc/mingw-w64.in index 1880f082..2531fef7 100644 --- a/config/libc/mingw-w64.in +++ b/config/libc/mingw-w64.in @@ -4,7 +4,7 @@ ## ## select LIBC_SUPPORT_THREADS_NATIVE ## select LIBC_SUPPORT_THREADS_POSIX -## select CC_CORE_PASS_2_NEEDED +## select CC_CORE_NEEDED ## select BINUTILS_FORCE_LD_BFD_DEFAULT ## ## help The de-facto standard for Mingw distributions. diff --git a/config/libc/moxiebox.in b/config/libc/moxiebox.in index aa6ff534..07fc3335 100644 --- a/config/libc/moxiebox.in +++ b/config/libc/moxiebox.in @@ -10,7 +10,7 @@ ## select LIBC_SUPPORT_THREADS_NONE ## select COMP_TOOLS_AUTOCONF if !CONFIGURE_has_autoconf_2_65_or_newer || !CONFIGURE_has_autoreconf_2_64_or_newer ## select COMP_TOOLS_AUTOMAKE if !CONFIGURE_has_automake_1_15_or_newer -## select CC_CORE_PASS_1_NEEDED +## select CC_CORE_NEEDED ## select LIBELF_NEEDED ## ## help Secure execution runtime for Moxie architecture. diff --git a/config/libc/musl.in b/config/libc/musl.in index 0ea388e4..db7abb7a 100644 --- a/config/libc/musl.in +++ b/config/libc/musl.in @@ -3,7 +3,7 @@ ## depends on ! WINDOWS && ! BARE_METAL ## depends on EXPERIMENTAL ## select LIBC_SUPPORT_THREADS_NATIVE -## select CC_CORE_PASS_1_NEEDED +## select CC_CORE_NEEDED ## help Musl is a new standard library to power a new generation of Linux-based ## help devices. musl is lightweight, fast, simple, free, and strives to be diff --git a/config/libc/newlib.in b/config/libc/newlib.in index 83ae4b15..f1cb29be 100644 --- a/config/libc/newlib.in +++ b/config/libc/newlib.in @@ -3,7 +3,7 @@ ## depends on BARE_METAL ## select LIBC_PROVIDES_CXA_ATEXIT ## select LIBC_SUPPORT_THREADS_NONE -## select CC_CORE_PASS_1_NEEDED +## select CC_CORE_NEEDED ## help Newlib is a C library intended for use on embedded systems. It is a ## help conglomeration of several library parts, all under free software diff --git a/config/libc/uClibc-ng.in b/config/libc/uClibc-ng.in index 705c0d46..dc83ca7e 100644 --- a/config/libc/uClibc-ng.in +++ b/config/libc/uClibc-ng.in @@ -5,7 +5,7 @@ ## select LIBC_SUPPORT_THREADS_LT ## select LIBC_SUPPORT_THREADS_NONE ## select LIBC_SUPPORT_THREADS_NATIVE -## select CC_CORE_PASS_1_NEEDED +## select CC_CORE_NEEDED ## ## help The de-facto standard for embeded linux systems. ## help diff --git a/ct-ng.in b/ct-ng.in index e0ec0f86..75e09ac5 100644 --- a/ct-ng.in +++ b/ct-ng.in @@ -268,7 +268,6 @@ build.%: # but are actual steps for canadian and cross-native. # Please keep the last line with a '\' and keep the following empty line: # it helps when diffing and merging. -# TBD move kernel headers and unify pass_1/pass_2? CT_STEPS := \ companion_tools_for_build \ companion_libs_for_build \ @@ -277,9 +276,8 @@ CT_STEPS := \ companion_libs_for_host \ binutils_for_host \ libc_headers \ - cc_core_pass_1 \ kernel_headers \ - cc_core_pass_2 \ + cc_core \ libc_main \ cc_for_build \ cc_for_host \ diff --git a/scripts/build/cc/gcc.sh b/scripts/build/cc/gcc.sh index ab66f413..9623d6ca 100644 --- a/scripts/build/cc/gcc.sh +++ b/scripts/build/cc/gcc.sh @@ -134,7 +134,7 @@ evaluate_multilib_cflags() # 1. On MIPS target, gcc (or rather, ld, which it invokes under the hood) chokes # if supplied with two -mabi=* options. I.e., 'gcc -mabi=n32' and 'gcc -mabi=32' both # work, but 'gcc -mabi=32 -mabi=n32' produces an internal error in ld. Thus we do -# not supply target's CFLAGS in multilib builds - and after compiling pass-1 gcc, +# not supply target's CFLAGS in multilib builds - and after compiling core gcc, # attempt to determine which CFLAGS need to be filtered out. # # 2. If "demultilibing" is in effect, create top-level directories for any @@ -186,11 +186,10 @@ cc_gcc_multilib_housekeeping() { } #------------------------------------------------------------------------------ -# Core gcc pass 1 -do_cc_core_pass_1() { +do_cc_core() { local -a core_opts - if [ "${CT_CC_CORE_PASS_1_NEEDED}" != "y" ]; then + if [ "${CT_CC_CORE_NEEDED}" != "y" ]; then return 0 fi @@ -201,62 +200,12 @@ do_cc_core_pass_1() { core_opts+=( "cflags=${CT_CFLAGS_FOR_BUILD}" ) core_opts+=( "ldflags=${CT_LDFLAGS_FOR_BUILD}" ) core_opts+=( "lang_list=c" ) - core_opts+=( "build_step=core1" ) + core_opts+=( "build_step=core" ) core_opts+=( "mode=static" ) core_opts+=( "build_libgcc=yes" ) - CT_DoStep INFO "Installing pass-1 core C gcc compiler" - CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-core-pass-1" - - do_gcc_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_PASS_2_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_BUILD}" ) - core_opts+=( "ldflags=${CT_LDFLAGS_FOR_BUILD}" ) - core_opts+=( "lang_list=c" ) - core_opts+=( "build_step=core2" ) - - # 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) - if [ "${CT_SHARED_LIBS}" = "y" ]; then - core_opts+=( "mode=shared" ) - else - core_opts+=( "mode=static" ) - fi - core_opts+=( "build_libgcc=yes" ) - ;; - win32) - core_opts+=( "mode=static" ) - core_opts+=( "build_libgcc=yes" ) - ;; - *) - core_opts+=( "mode=static" ) - core_opts+=( "build_libgcc=yes" ) - ;; - esac - - CT_DoStep INFO "Installing pass-2 core C gcc compiler" - CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-core-pass-2" + CT_DoStep INFO "Installing core C gcc compiler" + CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-core" do_gcc_core_backend "${core_opts[@]}" @@ -281,9 +230,8 @@ do_cc_core_pass_2() { # build_manuals : whether to build manuals or not : bool : no # cflags : cflags to use : string : (empty) # ldflags : ldflags to use : string : (empty) -# build_step : build step 'core1', 'core2', 'gcc_build', -# 'libstdcxx' -# or 'gcc_host' : string : (none) +# build_step : build step 'core', 'gcc_build', +# 'libstdcxx' or 'gcc_host' : string : (none) # Usage: do_gcc_core_backend mode=[static|shared|baremetal] build_libgcc=[yes|no] build_staticlinked=[yes|no] do_gcc_core_backend() { local mode @@ -321,7 +269,7 @@ do_gcc_core_backend() { # This function gets called in case of a bare metal compiler for the final gcc, too. case "${build_step}" in - core1|core2) + core) CT_DoLog EXTRA "Configuring core C gcc compiler" log_txt="gcc" extra_config+=( "${CT_CC_CORE_SYSROOT_ARG[@]}" ) @@ -351,7 +299,7 @@ do_gcc_core_backend() { build_libgcc=no ;; *) - CT_Abort "Internal Error: 'build_step' must be one of: 'core1', 'core2', 'gcc_build', 'gcc_host' or 'libstdcxx', not '${build_step:-(empty)}'" + CT_Abort "Internal Error: 'build_step' must be one of: 'core', 'gcc_build', 'gcc_host' or 'libstdcxx', not '${build_step:-(empty)}'" ;; esac @@ -501,8 +449,6 @@ do_gcc_core_backend() { if [ "${CT_LIBC_GLIBC}" = "y" ]; then # Report GLIBC's version to GCC, it affects the defaults on other options. - # Pass-2 should be able to get it from the headers, but for some options - # (such as --with-long-double-128) we need to get it right even in pass-1. # GCC expects just two numbers separated by a dot. local glibc_version @@ -571,11 +517,10 @@ do_gcc_core_backend() { # Some versions of gcc have a defective --enable-multilib. # Since that's the default, only pass --disable-multilib. For multilib, - # also enable multiarch. Without explicit --enable-multiarch, pass-1 - # compiler is configured as multilib/no-multiarch and pass-2/final - # are multilib/multiarch (because gcc autodetects multiarch based on - # multiple instances of crt*.o in the install directory - which do - # not exist in pass-1). + # also enable multiarch. Without explicit --enable-multiarch, core + # compiler is configured as multilib/no-multiarch (because gcc autodetects + # multiarch based on multiple instances of crt*.o in the install directory + # which do not exist in the core pass). if [ "${CT_MULTILIB}" != "y" ]; then extra_config+=("--disable-multilib") else @@ -609,7 +554,7 @@ do_gcc_core_backend() { fi # For non-sysrooted toolchain, GCC doesn't search except at the installation - # prefix; in core-1/2 stage we use a temporary installation prefix - but + # prefix; in core stage we use a temporary installation prefix - but # we may have installed something into the final prefix. This is less than ideal: # in the installation prefix GCC also handles subdirectories for multilibs # (e.g. first trying ${prefix}/include/${arch-triplet}) but diff --git a/scripts/build/libc/uClibc-ng.sh b/scripts/build/libc/uClibc-ng.sh index 5b260495..7b81d92c 100644 --- a/scripts/build/libc/uClibc-ng.sh +++ b/scripts/build/libc/uClibc-ng.sh @@ -34,7 +34,7 @@ uClibc_ng_backend_once() # Construct make arguments: # - uClibc uses the CROSS environment variable as a prefix to the compiler - # tools to use. Since it requires core pass-1, thusly named compiler is + # tools to use. Since it requires core compiler, thusly named compiler is # already available. # - Note about CFLAGS: In uClibc, CFLAGS are generated by Rules.mak, # depending on the configuration of the library. That is, they are tailored -- cgit v1.2.3