diff options
Diffstat (limited to 'config')
37 files changed, 460 insertions, 61 deletions
diff --git a/config/arch/bpf.in b/config/arch/bpf.in index 9d0d7373..75cae2af 100644 --- a/config/arch/bpf.in +++ b/config/arch/bpf.in @@ -3,7 +3,7 @@ ## no-package ## select ARCH_SUPPORTS_EITHER_ENDIAN ## select ARCH_DEFAULT_LE -## select GCC_VERY_NEW -## select BINUTILS_VERY_NEW +## select GCC_REQUIRE_12_or_later +## select BINUTILS_REQUIRE_2_41_or_later ## ## help The BPF architecture. diff --git a/config/arch/lm32.in b/config/arch/lm32.in new file mode 100644 index 00000000..a2ae3b2d --- /dev/null +++ b/config/arch/lm32.in @@ -0,0 +1,10 @@ +# LatticeMico32 soft-core architecture + +## no-package +## select ARCH_SUPPORTS_32 +## select ARCH_DEFAULT_32 +## select ARCH_DEFAULT_BE +## depends on EXPERIMENTAL + +## help The LatticeMico32 soft-core architecture: +## help https://www.latticesemi.com/en/Products/DesignSoftwareAndIP/IntellectualProperty/IPCore/IPCores02/LatticeMico32.aspx diff --git a/config/arch/m68k.in b/config/arch/m68k.in index d21de008..3105712a 100644 --- a/config/arch/m68k.in +++ b/config/arch/m68k.in @@ -4,6 +4,7 @@ ## select ARCH_SUPPORTS_32 ## select ARCH_DEFAULT_32 ## select ARCH_DEFAULT_BE +## select ARCH_USE_MMU ## select ARCH_SUPPORTS_FLAT_FORMAT ## select ARCH_SUPPORTS_WITH_CPU ## diff --git a/config/arch/nios2.in b/config/arch/nios2.in index de28246f..b5ebedb5 100644 --- a/config/arch/nios2.in +++ b/config/arch/nios2.in @@ -7,6 +7,10 @@ ## select ARCH_DEFAULT_LE ## select ARCH_SUPPORTS_WITH_ARCH ## select ARCH_SUPPORTS_FLAT_FORMAT +## select GCC_REQUIRE_older_than_15 +## select GDB_REQUIRE_older_than_16 if DEBUG_GDB +## select GLIBC_REQUIRE_older_than_2_41 if LIBC_GLIBC +## select BINUTILS_REQUIRE_older_than_2_44 ## ## help The NIOS2 architecture, as defined by: ## help http://www.altera.com diff --git a/config/arch/openrisc.in b/config/arch/openrisc.in new file mode 100644 index 00000000..d4623ed1 --- /dev/null +++ b/config/arch/openrisc.in @@ -0,0 +1,13 @@ +# OpenRISC specific configuration file + +## no-package +## select ARCH_SUPPORTS_32 +## select ARCH_DEFAULT_32 +## select ARCH_SUPPORTS_BOTH_MMU +## select ARCH_DEFAULT_BE +## select ARCH_SUPPORTS_WITH_ARCH +## select ARCH_SUPPORTS_FLAT_FORMAT +## depends on EXPERIMENTAL +## +## help The OpenRISC architecture +## help https://openrisc.io/ diff --git a/config/arch/parisc.in b/config/arch/parisc.in new file mode 100644 index 00000000..79fa2e8e --- /dev/null +++ b/config/arch/parisc.in @@ -0,0 +1,13 @@ +# HP PA-RISC specific configuration file + +## no-package +## depends on EXPERIMENTAL +## +## select ARCH_SUPPORTS_32 +## select ARCH_SUPPORTS_64 +## select ARCH_DEFAULT_32 +## select ARCH_DEFAULT_BE +## select ARCH_USE_MMU +## select ARCH_SUPPORTS_FLAT_FORMAT +## +## help The parisc architecture diff --git a/config/arch/powerpc.in b/config/arch/powerpc.in index 26954c88..dddd73a6 100644 --- a/config/arch/powerpc.in +++ b/config/arch/powerpc.in @@ -19,9 +19,10 @@ config ARCH_powerpc_ABI string - default "" if ARCH_powerpc_ABI_DEFAULT - default "eabi" if ARCH_powerpc_ABI_EABI - default "spe" if ARCH_powerpc_ABI_SPE + default "" if ARCH_powerpc_ABI_DEFAULT + default "eabi" if ARCH_powerpc_ABI_EABI + default "spe" if ARCH_powerpc_ABI_SPE + default "elfv2" if ARCH_64 && LIBC_MUSL choice bool diff --git a/config/arch/riscv.in b/config/arch/riscv.in index 3e6ffbfb..e7a54dd1 100644 --- a/config/arch/riscv.in +++ b/config/arch/riscv.in @@ -1,7 +1,6 @@ # RISC-V specific config options ## no-package -## depends on EXPERIMENTAL ## ## select ARCH_SUPPORTS_32 ## select ARCH_SUPPORTS_64 diff --git a/config/arch/rx.in b/config/arch/rx.in new file mode 100644 index 00000000..6e58d628 --- /dev/null +++ b/config/arch/rx.in @@ -0,0 +1,11 @@ +## no-package +## select ARCH_SUPPORTS_32 +## select ARCH_DEFAULT_32 +## select ARCH_SUPPORTS_FLAT_FORMAT +## select ARCH_SUPPORTS_EITHER_ENDIAN +## select ARCH_DEFAULT_LE +## select ARCH_REQUIRES_MULTILIB +## select ARCH_SUPPORTS_WITH_ENDIAN + +## help The RX architecture, as defined by: +## help https://www.renesas.com/en/products/microcontrollers-microprocessors/rx-32-bit-performance-efficiency-mcus diff --git a/config/arch/sh.in b/config/arch/sh.in index ff2ec142..8ebdd744 100644 --- a/config/arch/sh.in +++ b/config/arch/sh.in @@ -3,8 +3,6 @@ ## no-package ## select ARCH_SUPPORTS_32 ## select ARCH_DEFAULT_32 -## select ARCH_SUPPORTS_BOTH_MMU -## select ARCH_DEFAULT_HAS_MMU ## select ARCH_SUPPORTS_FLAT_FORMAT ## select ARCH_SUPPORTS_EITHER_ENDIAN ## select ARCH_DEFAULT_LE @@ -21,6 +19,8 @@ choice # GCC supports both endiannesses even if a specific CPU is selected (so long # as that CPU can be both BE/LE), but the binutils (or specifically, ld) # configures for both endiannesses only if sh-*-linux target is selected. +# --with-cpu can be used to set the mmu and precision options, +# so dont include the options aswell config ARCH_SH_SH bool prompt "unspecified" @@ -62,16 +62,45 @@ config ARCH_SH_SH4A bool prompt "sh4a" +config ARCH_SH_SH4AL + bool + prompt "sh4al" + endchoice config ARCH_SH_VARIANT string - default "sh" if ARCH_SH_SH + default "sh" if ARCH_SH_SH default "sh1" if ARCH_SH_SH1 default "sh2" if ARCH_SH_SH2 - default "sh2e" if ARCH_SH_SH2E - default "sh2a" if ARCH_SH_SH2A + default "sh2e" if ARCH_SH_SH2E + default "sh2a" if ARCH_SH_SH2A default "sh3" if ARCH_SH_SH3 - default "sh3e" if ARCH_SH_SH3E + default "sh3e" if ARCH_SH_SH3E default "sh4" if ARCH_SH_SH4 default "sh4a" if ARCH_SH_SH4A + default "sh4al" if ARCH_SH_SH4AL + +config ARCH_SH_ENABLE_FPU_OPTIONS + bool + default y if ARCH_SH_SH2A + default y if ARCH_SH_SH4 + default y if ARCH_SH_SH4A + select ARCH_SUPPORTS_BOTH_MMU + select ARCH_DEFAULT_HAS_MMU + +config ARCH_SH_ENABLE_PRECISION_OPTIONS + bool + default y if ARCH_USE_MMU + select ARCH_SUPPORTS_WITH_FLOATING_PRECISION + select ARCH_SUPPORTS_PRECISION_UNSPECIFIED + select ARCH_SUPPORTS_PRECISION_SINGLE_ONLY + select ARCH_SUPPORTS_PRECISION_SINGLE_WITH_DOUBLE + select ARCH_DEFAULT_PRECISION_UNSPECIFIED + +config ARCH_SH_FLOAT_SUFFIX + string + default "" if !ARCH_SH_ENABLE_FPU_OPTIONS + default "_nofpu" if !ARCH_USE_MMU + default "_single" if ARCH_FLOATING_PRECISION_SINGLE_WITH_DOUBLE + default "_single_only" if ARCH_FLOATING_PRECISION_SINGLE_ONLY diff --git a/config/arch/tricore.in b/config/arch/tricore.in new file mode 100644 index 00000000..cff8ca63 --- /dev/null +++ b/config/arch/tricore.in @@ -0,0 +1,10 @@ +# tricore specific configuration file + +## no-package +## depends on EXPERIMENTAL +## +## select ARCH_SUPPORTS_32 +## select ARCH_SUPPORTS_BOTH_ENDIAN +## select ARCH_DEFAULT_LE +## select ARCH_SUPPORTS_FLAT_FORMAT + diff --git a/config/binutils/binutils.in b/config/binutils/binutils.in index 338220d0..030e0b9d 100644 --- a/config/binutils/binutils.in +++ b/config/binutils/binutils.in @@ -6,13 +6,23 @@ comment "GNU binutils" config BINUTILS_GOLD_SUPPORTS_ARCH bool default y if ARCH_ARM + default y if ARCH_LOONGARCH + default y if ARCH_MIPS + default y if ARCH_POWERPC + default y if ARCH_S390 + default y if ARCH_SPARC default y if ARCH_X86 +# Support for gold was deprecated and removed from binutils 2.44. +config BINUTILS_HAS_GOLD + bool + default y if !BINUTILS_2_44_or_later + default y if !BINUTILS_SRC_RELEASE + config BINUTILS_GOLD_SUPPORT bool default y - depends on BINUTILS_GOLD_SUPPORTS_ARCH - depends on ! STATIC_TOOLCHAIN + depends on BINUTILS_GOLD_SUPPORTS_ARCH && BINUTILS_HAS_GOLD # Force using the BFD linker if needed. There are two options: # - For some C libraries (eg. glibc at least), BFD ld must be @@ -30,6 +40,11 @@ config BINUTILS_DEP_BISON depends on BINUTILS_2_39_or_later && !CONFIGURE_has_bison_3_0_4_or_newer && (ARCH_X86 || (ARCH_ARM && ARCH_64)) select COMP_TOOLS_BISON +if BINUTILS_2_44_or_later && BINUTILS_GOLD_SUPPORT && !BINUTILS_SRC_RELEASE +comment "WARNING! For binutils >= 2.44 only enable gold support if supplied" +comment "| through custom source tree." +endif + choice bool prompt "Linkers to enable" @@ -128,6 +143,7 @@ config BINUTILS_LINKER_DEFAULT config BINUTILS_PLUGINS bool prompt "Enable support for plugins" + depends on !STATIC_TOOLCHAIN help binutils can be extended through the use of plugins. Especially, gold can use the lto-plugin, as installed diff --git a/config/cc.in b/config/cc.in index 068d445a..17264da3 100644 --- a/config/cc.in +++ b/config/cc.in @@ -67,18 +67,6 @@ config CC_LANG_JIT Only select this if you know that your specific version of the compiler supports the libgccjit. -if ! BARE_METAL - -config CC_LANG_JAVA - bool - prompt "Java" - depends on CC_SUPPORT_JAVA - help - Enable building a Java compiler. - - Only select this if you know that your specific version of the - compiler supports this language. - config CC_LANG_ADA bool prompt "Ada (EXPERIMENTAL)" @@ -88,7 +76,8 @@ config CC_LANG_ADA Enable building an Ada compiler. Only select this if you know that your specific version of the - compiler supports this language. + compiler supports this language. If the target is bare, the runtime + won't be included. config CC_LANG_D bool @@ -99,6 +88,19 @@ config CC_LANG_D Enable building a D compiler. Only select this if you know that your specific version of the + compiler supports this language. If the target is bare, the runtime + won't be included. + +if ! BARE_METAL + +config CC_LANG_JAVA + bool + prompt "Java" + depends on CC_SUPPORT_JAVA + help + Enable building a Java compiler. + + Only select this if you know that your specific version of the compiler supports this language. config CC_LANG_OBJC diff --git a/config/cc/gcc.in b/config/cc/gcc.in index 6e6bb828..7928468c 100644 --- a/config/cc/gcc.in +++ b/config/cc/gcc.in @@ -53,15 +53,6 @@ config CC_GCC_ENABLE_CXX_FLAGS Note: just pass in the option _value_, that is only the part that goes after the '=' sign. -config CC_GCC_EXTRA_LIBSTDCXX - bool "Re-enable libstdcxx" - default n - depends on LIBC_AVR_LIBC - select CC_CORE_PASS_2_NEEDED - help - libstdcxx is normally disabled on avr systems due to size limitations. - Set this option to re-enable libstdcxx support. - config CC_GCC_CORE_EXTRA_CONFIG_ARRAY string "Core gcc extra config" default "" @@ -240,6 +231,48 @@ config CC_GCC_ENABLE_TARGET_OPTSPACE This will compile crossgcc's libs with -Os. +config CC_GCC_LIBSTDCXX + tristate "Build libstdcxx" + default n if ARCH_AVR || LIBC_NONE + default m + depends on CC_LANG_CXX + select CC_CORE_NEEDED if ARCH_AVR + help + libstdcxx is normally disabled on some systems, like avr, due to size + limitations or it being not supported. + Set this option to force libstdcxx support. + + Option | libstdcxx build | Associated ./configure switch + ---------+--------------------+-------------------------------- + Y | forcibly | --enable-libstdcxx + M | auto | (none, ./configure decides) + N | forcibly not | --disable-libstdcxx + +config CC_GCC_LIBSTDCXX_HOSTED_DISABLE + bool "Build freestanding libstdcxx" + default y if LIBC_AVR_LIBC + default n + depends on CC_GCC_LIBSTDCXX + help + libstdcxx can be compiled in two modes: hosted and freestanding. + Hosted mode is the default, and is used when the OS is available. + Freestanding mode is used when the OS is not available, like in + bare-metal systems. + + Some architectures, like avr, do not support hosted mode, but default + to it, and will fail to build libstdcxx in hosted mode. + + Answer 'y' here to force freestanding mode, otherwise answer let + ./configure decide. + +config CC_GCC_LIBSTDCXX_TARGET_CXXFLAGS + string + prompt "Target CXXFLAGS for libstdc++" + default "" + help + Used to add extra CXXFLAGS when compiling the target libstdc++ + library (e.g. -fno-exceptions). + config CC_GCC_LIBMUDFLAP bool prompt "Compile libmudflap" diff --git a/config/comp_libs/gmp.in b/config/comp_libs/gmp.in index f49d1a71..7baac528 100644 --- a/config/comp_libs/gmp.in +++ b/config/comp_libs/gmp.in @@ -1 +1,6 @@ # GMP options +config GMP_EXTRA_CFLAGS + string "extra target CFLAGS" + default "-std=gnu17" if GCC_15_or_later + help + Extra target CFLAGS to use when building. diff --git a/config/comp_libs/gnumach.in b/config/comp_libs/gnumach.in new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/config/comp_libs/gnumach.in diff --git a/config/comp_libs/mpc.in b/config/comp_libs/mpc.in index 422935f0..2d948a78 100644 --- a/config/comp_libs/mpc.in +++ b/config/comp_libs/mpc.in @@ -1,3 +1 @@ # MPC options -# MPC 1.0.x and earlier break with MPFR 4.0.0. -## select MPFR_REQUIRE_older_than_4_0_0 if MPFR_NEEDED && !MPC_1_1_0_or_later diff --git a/config/comp_libs/ncurses.in b/config/comp_libs/ncurses.in index 4e7e6d47..3d257439 100644 --- a/config/comp_libs/ncurses.in +++ b/config/comp_libs/ncurses.in @@ -55,3 +55,8 @@ config NCURSES_TARGET_FALLBACKS List of terminal descriptions that will be compiled into the curses library for the target. +config NCURSES_EXTRA_CFLAGS + string "extra target CFLAGS" + default "-std=gnu17" if GCC_15_or_later + help + Extra target CFLAGS fto use when building. diff --git a/config/comp_libs/picolibc.in b/config/comp_libs/picolibc.in index 4b283aec..c978c35b 100644 --- a/config/comp_libs/picolibc.in +++ b/config/comp_libs/picolibc.in @@ -27,6 +27,14 @@ config LIBC_PICOLIBC_GCC_LIBSTDCXX the picolibc companion library. This version is linked when "--specs=picolibcpp.specs" is specified. +config LIBC_PICOLIBC_GCC_LIBSTDCXX_TARGET_CXXFLAGS + string + prompt "Target CXXFLAGS for libstdc++ picolibc variant" + default "" + help + Used to add extra CXXFLAGS when compiling the target libstdc++ + picolibc library (e.g. -fno-exceptions). + comment "Configuration for picolibc can be found under" comment "* -> C-library" comment "* -> picolibc" diff --git a/config/comp_tools/mig.in b/config/comp_tools/mig.in new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/config/comp_tools/mig.in diff --git a/config/config.in b/config/config.in index cc349aa0..47effa53 100644 --- a/config/config.in +++ b/config/config.in @@ -1,4 +1,5 @@ mainmenu "crosstool-NG $(CT_VERSION) Configuration" +source "config/config_utils.in" source "config/configure.in" source "config/global.in" source "config/target.in" @@ -7,6 +8,7 @@ source "config/kernel.in" source "config/binutils.in" source "config/libc.in" source "config/cc.in" +source "config/linker.in" source "config/debug.in" source "config/comp_libs.in" source "config/comp_tools.in" diff --git a/config/config_utils.in b/config/config_utils.in new file mode 100644 index 00000000..cc52ca1d --- /dev/null +++ b/config/config_utils.in @@ -0,0 +1,7 @@ +# $(if-success,<command>,<then>,<else>) +# Return <then> if <command> exits with 0, <else> otherwise. +if-success = $(shell,{ $(1); } >/dev/null 2>&1 && echo "$(2)" || echo "$(3)") + +# $(success,<command>) +# Return y if <command> exits with 0, n otherwise +success = $(if-success,$(1),y,n) diff --git a/config/configure.in.in b/config/configure.in.in index fe232ef3..006b0afe 100644 --- a/config/configure.in.in +++ b/config/configure.in.in @@ -21,9 +21,6 @@ config CONFIGURE_has_meson config CONFIGURE_has_ninja @KCONFIG_ninja@ -config CONFIGURE_has_rsync - @KCONFIG_rsync@ - config CONFIGURE_has_make_3_81_or_newer @KCONFIG_make_3_81_or_newer@ diff --git a/config/contrib/gcc-test-suite.in b/config/contrib/gcc-test-suite.in new file mode 100644 index 00000000..6a4c876f --- /dev/null +++ b/config/contrib/gcc-test-suite.in @@ -0,0 +1,47 @@ +choice + bool "How to execute tests" + default TEST_SUITE_GCC_SSH + +config TEST_SUITE_GCC_SSH + bool "Run test suite on remote host" + help + Select this option to execute GCC tests on a remote host, + specified by TEST_SUITE_GCC_HOST. + +config TEST_SUITE_GCC_QEMU + bool "Run test suite using qemu" + help + Select this option to execute GCC tests using qemu on the local + host. + +endchoice + +config TEST_SUITE_GCC_TARGET_HOSTNAME + string "Remote host to execute GCC tests" + default "127.0.0.1" + depends on TEST_SUITE_GCC_SSH + help + Set this to the remote host name where gcc tests will be run. + +config TEST_SUITE_GCC_TARGET_USERNAME + string "Username on remote host" + default "root" + depends on TEST_SUITE_GCC_SSH + help + Set this to the username on the remote hosts for GCC tests. + +config TEST_SUITE_GCC_QEMU_PROGRAM + string "Qemu program" + depends on TEST_SUITE_GCC_QEMU + help + Specifies the qemu program name. If unset, this will be "qemu-" + followed by the first component of the target name. + +config TEST_SUITE_GCC_QEMU_ARGS + string "Qemu program args" + depends on TEST_SUITE_GCC_QEMU + default "-L @SYSROOT@" + help + Specifies any arguments needed by qemu before the executable + filename. If unset, this will be "-L" followed by the path to + the sysroot in the installed toolchain. diff --git a/config/debug/gdb.in b/config/debug/gdb.in index 68599d55..d39ac6cd 100644 --- a/config/debug/gdb.in +++ b/config/debug/gdb.in @@ -18,3 +18,8 @@ config GDB_DEP_NO_STD_FUTURE config GDB_GDBSERVER_TOPLEVEL def_bool y depends on GDB_10_or_later + +# As of GDB 13.x libtool is used for linking +config GDB_CC_LD_LIBTOOL + def_bool y + depends on GDB_13_or_later diff --git a/config/debug/gdb.in.native b/config/debug/gdb.in.native index 5afed525..20abb1ec 100644 --- a/config/debug/gdb.in.native +++ b/config/debug/gdb.in.native @@ -7,6 +7,7 @@ config GDB_NATIVE depends on CC_LANG_CXX select LIBC_UCLIBC_WCHAR if LIBC_UCLIBC_NG select LIBC_UCLIBC_IPV6 if LIBC_UCLIBC_NG && GDB_8_3_or_later + select LIBC_UCLIBC_LIBICONV if LIBC_UCLIBC_NG && GDB_15_or_later select EXPAT_TARGET select NCURSES_TARGET select GMP_TARGET if GDB_11_or_later @@ -21,6 +22,7 @@ config GDB_GDBSERVER depends on ! BARE_METAL select LIBC_UCLIBC_WCHAR if LIBC_UCLIBC_NG select LIBC_UCLIBC_IPV6 if LIBC_UCLIBC_NG && GDB_8_3_or_later + select LIBC_UCLIBC_LIBICONV if LIBC_UCLIBC_NG && GDB_15_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 61f5531d..cdea7197 100644 --- a/config/debug/ltrace.in +++ b/config/debug/ltrace.in @@ -1,5 +1,6 @@ # ltrace +## depends on ! BARE_METAL ## select LIBELF_TARGET ## ## help ltrace is a program that simply runs the specified command until it exits. diff --git a/config/global/download.in b/config/global/download.in index 57f42e6f..9a4d6cec 100644 --- a/config/global/download.in +++ b/config/global/download.in @@ -67,7 +67,7 @@ if DOWNLOAD_AGENT_WGET config DOWNLOAD_WGET_OPTIONS string "Extra options to wget" - default "--passive-ftp --tries=3 -nc --progress=dot:binary" + default "--tries=3 -nc --progress=dot:binary" endif diff --git a/config/kernel/hurd.in b/config/kernel/hurd.in new file mode 100644 index 00000000..030a8aa6 --- /dev/null +++ b/config/kernel/hurd.in @@ -0,0 +1,5 @@ +# Hurd config options + +## select KERNEL_SUPPORTS_SHARED_LIBS +## +## help Build a toolchain targeting systems running GNU Hurd as a kernel diff --git a/config/kernel/linux.in b/config/kernel/linux.in index 6d872c42..6e929c23 100644 --- a/config/kernel/linux.in +++ b/config/kernel/linux.in @@ -1,6 +1,6 @@ # Linux kernel options -## depends on !ARCH_AVR && !ARCH_MSP430 && !ARCH_MOXIE && !ARCH_PRU +## depends on !ARCH_AVR && !ARCH_LM32 && !ARCH_MSP430 && !ARCH_MOXIE && !ARCH_PRU ## select KERNEL_SUPPORTS_SHARED_LIBS ## help Build a toolchain targeting systems running Linux as a kernel. @@ -12,12 +12,15 @@ # (including versions in between) until the EOL dates indicated below. # Such pinned versions are indicated in version.desc files with a comment. +config KERNEL_has_rsync + def_bool $(success,which rsync) + config KERNEL_DEP_RSYNC def_bool y - select LINUX_REQUIRE_older_than_5_3 if !CONFIGURE_has_rsync + select LINUX_REQUIRE_older_than_5_3 if !KERNEL_has_rsync comment "Linux >=5.3 requires rsync" - depends on !CONFIGURE_has_rsync + depends on !KERNEL_has_rsync choice bool diff --git a/config/libc/glibc.in b/config/libc/glibc.in index fb72f67a..a34c4209 100644 --- a/config/libc/glibc.in +++ b/config/libc/glibc.in @@ -68,7 +68,7 @@ config GLIBC_DEP_MAKE_4_0 # where the build process hangs indefinitely config GLIBC_DEP_MAKE_4_3 def_bool y - depends on GLIBC_older_than_2_32 && CONFIGURE_has_make_4_4_or_newer + depends on GLIBC_older_than_2_32 && (CONFIGURE_has_make_4_4_or_newer || GLIBC_DEP_MAKE_4_0) select COMP_TOOLS_MAKE select MAKE_GNUMAKE_SYMLINK select MAKE_REQUIRE_older_than_4_4 @@ -127,7 +127,7 @@ config GLIBC_HAS_LIBIDN_ADDON # we can find in config/arch/* config GLIBC_USE_PORTS_ADDON def_bool y - depends on ARCH_ALPHA || ARCH_ARM || ARCH_M68K || ARCH_MIPS || ARCH_POWERPC + depends on ARCH_ALPHA || ARCH_ARM || ARCH_M68K || ARCH_MIPS || ARCH_PARISC || ARCH_POWERPC depends on GLIBC_HAS_PORTS_ADDON depends on !GLIBC_USE_ORACLE @@ -155,11 +155,11 @@ config GLIBC_HAS_OBSOLETE_RPC def_bool y depends on GLIBC_2_14_or_later && !GLIBC_2_32_or_later -# As of 2.38 libcrypt is no longer built by default. It will likely be removed in a future -# version. +# As of 2.38 libcrypt is no longer built by default. It was completely removed +# as of 2.39 config GLIBC_HAS_OBSOLETE_LIBCRYPT def_bool y - depends on GLIBC_2_38_or_later + depends on GLIBC_2_38_or_later && !GLIBC_2_39_or_later config GLIBC_EXTRA_CONFIG_ARRAY string @@ -197,8 +197,8 @@ config GLIBC_ENABLE_DEBUG config GLIBC_EXTRA_CFLAGS string prompt "extra target CFLAGS" - default "-Wno-missing-attributes -Wno-array-bounds -Wno-array-parameter -Wno-stringop-overflow -Wno-maybe-uninitialized" if GLIBC_2_29_or_older && GCC_11_or_later - default "" + default "-Wno-missing-attributes -Wno-array-bounds -Wno-array-parameter -Wno-stringop-overflow -Wno-maybe-uninitialized" if GLIBC_2_29_or_older && GCC_11_or_later && !GCC_14_or_later + default "-Wno-missing-attributes -Wno-array-bounds -Wno-array-parameter -Wno-stringop-overflow -Wno-maybe-uninitialized -Wno-implicit-int" if GLIBC_2_29_or_older && GCC_14_or_later help Extra target CFLAGS to use when building. @@ -289,6 +289,12 @@ comment "| Building GLIBC locales requires that GLIBC supports " comment "| the build machine as the target. " endif # LIBC_GLIBC && GLIBC_LOCALES +# Older Glibc versions are incompatible with newer makeinfo versions. Skip +# building the user manual if needed. +config GLIBC_MAKEINFO_WORKAROUND + def_bool y + depends on GLIBC_2_23_or_older + if KERNEL_LINUX choice GLIBC_SUPPORTED_KERNEL @@ -436,7 +442,7 @@ config GLIBC_ENABLE_WERROR (GCC_9_or_later && !GCC_10_or_later && GLIBC_2_29_or_later) || \ (GCC_10_or_later && !GCC_11_or_later && GLIBC_2_31_or_later) || \ (GCC_11_or_later && !GCC_13_or_later && GLIBC_2_34_or_later) || \ - (GCC_13_or_later && GLIBC_2_37_or_later) + (GCC_13_or_later && !GCC_14_or_later && GLIBC_2_37_or_later) default y help By default, glibc enables strict warning checks during the build. diff --git a/config/libc/musl.in b/config/libc/musl.in index 427dd699..71d9c990 100644 --- a/config/libc/musl.in +++ b/config/libc/musl.in @@ -1,7 +1,6 @@ # musl second-part option ## depends on ! WINDOWS && ! BARE_METAL -## depends on EXPERIMENTAL ## select LIBC_SUPPORT_THREADS_NATIVE ## select CC_CORE_NEEDED diff --git a/config/libc/picolibc.in b/config/libc/picolibc.in index 6c4c6cac..c3014b11 100644 --- a/config/libc/picolibc.in +++ b/config/libc/picolibc.in @@ -40,31 +40,47 @@ config LIBC_PICOLIBC_IO_C99FMT config LIBC_PICOLIBC_REGISTER_FINI bool - prompt "Enable finalization function registration using atexit" + prompt "Enable finalization function registration using atexit [unused]" help Enable finalization function registration using atexit. + This would be used when building with the legacy newlib exit + handling code which cannot be enabled in crosstool-ng, so + this option doesn't do anything. + config LIBC_PICOLIBC_ATEXIT_DYNAMIC_ALLOC bool - prompt "Enable dynamic allocation of atexit entries" + prompt "Enable dynamic allocation of atexit entries [unused]" help Enable dynamic allocation of atexit entries. + This would be used when building with the legacy newlib exit + handling code which cannot be enabled in crosstool-ng, so + this option doesn't do anything. + config LIBC_PICOLIBC_GLOBAL_ATEXIT bool - prompt "Enable atexit data structure as global variable" + prompt "Enable atexit data structure as global variable [unused]" help Enable atexit data structure as global variable, instead of being thread-local. + This would be used when building with the legacy newlib exit + handling code which cannot be enabled in crosstool-ng, so + this option doesn't do anything. + config LIBC_PICOLIBC_LITE_EXIT bool - prompt "Enable lite exit" + prompt "Enable lite exit [unused]" default y help Enable lite exit, a size-reduced implementation of exit that doesn't invoke clean-up functions such as _fini or global destructors. + This would be used when building with the legacy newlib exit + handling code which cannot be enabled in crosstool-ng, so + this option doesn't do anything. + config LIBC_PICOLIBC_MULTITHREAD bool prompt "Enable support for multiple threads" @@ -74,12 +90,15 @@ config LIBC_PICOLIBC_MULTITHREAD config LIBC_PICOLIBC_RETARGETABLE_LOCKING bool - prompt "Enable retargetable locking" + prompt "Enable retargetable locking [unused]" default y help Enable retargetable locking to allow the operating system to override the dummy lock functions defined within picolibc. + This value was always required to match + LIBC_PICOLIBC_MULTITHREAD, so it is no longer used. + config LIBC_PICOLIBC_EXTRA_SECTIONS bool prompt "Place each function & data element in their own section" diff --git a/config/linker.in b/config/linker.in new file mode 100644 index 00000000..b17f77fd --- /dev/null +++ b/config/linker.in @@ -0,0 +1,12 @@ +menu "Linkers" + +if BINUTILS_LINKER_LD || BINUTILS_LINKER_BOTH +comment "BFD enabled in binutils" +endif # BINUTILS_LINKER_LD +if BINUTILS_LINKER_GOLD || BINUTILS_LINKER_BOTH +comment "GOLD enabled in binutils" +endif # BINUTILS_LINKER_GOLD + +source "config/gen/linker.in" + +endmenu diff --git a/config/linker/mold.in b/config/linker/mold.in new file mode 100644 index 00000000..2e605a91 --- /dev/null +++ b/config/linker/mold.in @@ -0,0 +1,7 @@ +# mold options + +config LINKER_MOLD_has_cmake + def_bool $(success,which cmake) + +comment "mold requires cmake" + depends on !LINKER_MOLD_has_cmake diff --git a/config/target.in b/config/target.in index 21302622..ed415394 100644 --- a/config/target.in +++ b/config/target.in @@ -434,6 +434,132 @@ config ARCH_FLOAT_SW endchoice +#-------------------------------------- + +config ARCH_SUPPORTS_WITH_FLOATING_PRECISION + bool + +config ARCH_SUPPORTS_PRECISION_AUTO + bool + +config ARCH_SUPPORTS_PRECISION_SINGLE_ONLY + bool + +config ARCH_SUPPORTS_PRECISION_DOUBLE_ONLY + bool + +config ARCH_SUPPORTS_PRECISION_BOTH + bool + +config ARCH_SUPPORTS_PRECISION_SINGLE_WITH_DOUBLE + bool + +config ARCH_SUPPORTS_PRECISION_DOUBLE_WITH_SINGLE + bool + +config ARCH_SUPPORTS_PRECISION_UNSPECIFIED + bool + +config ARCH_DEFAULT_PRECISION_AUTO + bool + +config ARCH_DEFAULT_PRECISION_SINGLE_ONLY + bool + +config ARCH_DEFAULT_PRECISION_DOUBLE_ONLY + bool + +config ARCH_DEFAULT_PRECISION_BOTH + bool + +config ARCH_DEFAULT_PRECISION_SINGLE_WITH_DOUBLE + bool + +config ARCH_DEFAULT_PRECISION_DOUBLE_WITH_SINGLE + bool + +config ARCH_DEFAULT_PRECISION_UNSPECIFIED + bool + +choice + bool + prompt "Floating point precision:" + depends on ARCH_SUPPORTS_WITH_FLOATING_PRECISION + default ARCH_FLOATING_PRECISION_AUTO if ARCH_DEFAULT_PRECISION_AUTO + default ARCH_FLOATING_PRECISION_SINGLE_ONLY if ARCH_DEFAULT_PRECISION_SINGLE_ONLY + default ARCH_FLOATING_PRECISION_DOUBLE_ONLY if ARCH_DEFAULT_PRECISION_DOUBLE_ONLY + default ARCH_FLOATING_PRECISION_BOTH if ARCH_DEFAULT_PRECISION_BOTH + default ARCH_FLOATING_PRECISION_SINGLE_WITH_DOUBLE if ARCH_DEFAULT_PRECISION_SINGLE_WITH_DOUBLE + default ARCH_FLOATING_PRECISION_DOUBLE_WITH_SINGLE if ARCH_DEFAULT_PRECISION_DOUBLE_WITH_SINGLE + default ARCH_FLOATING_PRECISION_UNSPECIFIED if ARCH_DEFAULT_PRECISION_UNSPECIFIED + +config ARCH_FLOATING_PRECISION_AUTO + bool + prompt "auto (let gcc decide)" + depends on ARCH_SUPPORTS_PRECISION_AUTO + help + Instead of explicitly passing a float precision option, don't + pass any float precision options and let gcc figure it out. + +config ARCH_FLOATING_PRECISION_SINGLE_ONLY + bool + prompt "single (32-bit)" + depends on ARCH_SUPPORTS_PRECISION_SINGLE_ONLY + help + Use single precision floating point operations. + +config ARCH_FLOATING_PRECISION_DOUBLE_ONLY + bool + prompt "double (64-bit)" + depends on ARCH_SUPPORTS_PRECISION_DOUBLE_ONLY + help + Use double precision floating point operations. + +config ARCH_FLOATING_PRECISION_BOTH + bool + prompt "single and double (32-bit and 64-bit)" + depends on ARCH_SUPPORTS_PRECISION_BOTH + help + Use both single and double precision floating point operations. + +config ARCH_FLOATING_PRECISION_SINGLE_WITH_DOUBLE + bool + prompt "single with double (32-bit with 64-bit)" + depends on ARCH_SUPPORTS_PRECISION_SINGLE_WITH_DOUBLE + help + Use single precision floating point operations, but allow double + precision floating point operations when needed. + +config ARCH_FLOATING_PRECISION_DOUBLE_WITH_SINGLE + bool + prompt "double with single (64-bit with 32-bit)" + depends on ARCH_SUPPORTS_PRECISION_DOUBLE_WITH_SINGLE + help + Use double precision floating point operations, but allow single + precision floating point operations when needed. + +config ARCH_FLOATING_PRECISION_UNSPECIFIED + bool + prompt "default (leave unspecified)" + depends on ARCH_SUPPORTS_PRECISION_UNSPECIFIED + help + Use the default floating point precision for the architecture. + +endchoice + +config ARCH_FLOATING_PRECISION + string + depends on ARCH_SUPPORTS_WITH_FLOATING_PRECISION + default "auto" if ARCH_FLOATING_PRECISION_AUTO + default "single" if ARCH_FLOATING_PRECISION_SINGLE_ONLY + default "double" if ARCH_FLOATING_PRECISION_DOUBLE_ONLY + default "both" if ARCH_FLOATING_PRECISION_BOTH + default "single,double" if ARCH_FLOATING_PRECISION_SINGLE_WITH_DOUBLE + default "double,single" if ARCH_FLOATING_PRECISION_DOUBLE_WITH_SINGLE + default "" if ARCH_FLOATING_PRECISION_UNSPECIFIED + +#-------------------------------------- + config TARGET_CFLAGS string prompt "Target CFLAGS" diff --git a/config/test_suite.in b/config/test_suite.in index 978635d3..8cfe1434 100644 --- a/config/test_suite.in +++ b/config/test_suite.in @@ -17,11 +17,14 @@ config TEST_SUITE_GCC The GCC test suite includes a collection of various toolchain tests for GCC - it utilizes the DejaGnu test framework. - For some tests a network enabled target with ssh server is required. - A helper Makefile is provided for running the tests - please see the included README for information on how to run the test suite. +if TEST_SUITE_GCC +source "config/contrib/gcc-test-suite.in" +endif + endmenu endif + |