aboutsummaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/arch/bpf.in4
-rw-r--r--config/arch/lm32.in10
-rw-r--r--config/arch/m68k.in1
-rw-r--r--config/arch/nios2.in4
-rw-r--r--config/arch/openrisc.in13
-rw-r--r--config/arch/parisc.in13
-rw-r--r--config/arch/powerpc.in7
-rw-r--r--config/arch/riscv.in1
-rw-r--r--config/arch/rx.in11
-rw-r--r--config/arch/sh.in41
-rw-r--r--config/arch/tricore.in10
-rw-r--r--config/binutils/binutils.in20
-rw-r--r--config/cc.in28
-rw-r--r--config/cc/gcc.in51
-rw-r--r--config/comp_libs/gmp.in5
-rw-r--r--config/comp_libs/gnumach.in0
-rw-r--r--config/comp_libs/mpc.in2
-rw-r--r--config/comp_libs/ncurses.in5
-rw-r--r--config/comp_libs/picolibc.in8
-rw-r--r--config/comp_tools/mig.in0
-rw-r--r--config/config.in2
-rw-r--r--config/config_utils.in7
-rw-r--r--config/configure.in.in3
-rw-r--r--config/contrib/gcc-test-suite.in47
-rw-r--r--config/debug/gdb.in5
-rw-r--r--config/debug/gdb.in.native2
-rw-r--r--config/debug/ltrace.in1
-rw-r--r--config/global/download.in2
-rw-r--r--config/kernel/hurd.in5
-rw-r--r--config/kernel/linux.in9
-rw-r--r--config/libc/glibc.in22
-rw-r--r--config/libc/musl.in1
-rw-r--r--config/libc/picolibc.in29
-rw-r--r--config/linker.in12
-rw-r--r--config/linker/mold.in7
-rw-r--r--config/target.in126
-rw-r--r--config/test_suite.in7
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
+