summaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/.gitignore1
-rw-r--r--config/arch/alpha.in62
-rw-r--r--config/arch/alpha.in.256
-rw-r--r--config/arch/arc.in16
-rw-r--r--config/arch/arm.in102
-rw-r--r--config/arch/arm.in.293
-rw-r--r--config/arch/avr.in1
-rw-r--r--config/arch/c6x.in18
-rw-r--r--config/arch/m68k.in2
-rw-r--r--config/arch/microblaze.in10
-rw-r--r--config/arch/mips.in42
-rw-r--r--config/arch/mips.in.238
-rw-r--r--config/arch/moxie.in11
-rw-r--r--config/arch/msp430.in10
-rw-r--r--config/arch/nios2.in5
-rw-r--r--config/arch/powerpc.in51
-rw-r--r--config/arch/powerpc.in.242
-rw-r--r--config/arch/pru.in8
-rw-r--r--config/arch/riscv.in19
-rw-r--r--config/arch/s390.in1
-rw-r--r--config/arch/sh.in70
-rw-r--r--config/arch/sh.in.225
-rw-r--r--config/arch/sparc.in6
-rw-r--r--config/arch/x86.in2
-rw-r--r--config/arch/xtensa.in19
-rw-r--r--config/arch/xtensa.in.233
-rw-r--r--config/backend.in26
-rw-r--r--config/binutils.in8
-rw-r--r--config/binutils/binutils.in215
-rw-r--r--config/binutils/binutils.in.282
-rw-r--r--config/cc.in21
-rw-r--r--config/cc/gcc.in560
-rw-r--r--config/cc/gcc.in.2396
-rw-r--r--config/comp_libs.in153
-rw-r--r--config/comp_libs/cloog.in1
-rw-r--r--config/comp_libs/expat.in1
-rw-r--r--config/comp_libs/gettext.in11
-rw-r--r--config/comp_libs/gmp.in1
-rw-r--r--config/comp_libs/gnuprumcu.in2
-rw-r--r--config/comp_libs/isl.in1
-rw-r--r--config/comp_libs/libelf.in1
-rw-r--r--config/comp_libs/libiconv.in1
-rw-r--r--config/comp_libs/mpc.in3
-rw-r--r--config/comp_libs/mpfr.in1
-rw-r--r--config/comp_libs/ncurses.in (renamed from config/companion_libs/ncurses.in)22
-rw-r--r--config/comp_libs/newlib-nano.in (renamed from config/libc/newlib.in.2)118
-rw-r--r--config/comp_libs/picolibc.in132
-rw-r--r--config/comp_libs/zlib.in1
-rw-r--r--config/comp_tools.in (renamed from config/companion_tools.in)2
-rw-r--r--config/comp_tools/autoconf.in5
-rw-r--r--config/comp_tools/automake.in4
-rw-r--r--config/comp_tools/bison.in1
-rw-r--r--config/comp_tools/dtc.in6
-rw-r--r--config/comp_tools/libtool.in4
-rw-r--r--config/comp_tools/m4.in3
-rw-r--r--config/comp_tools/make.in9
-rw-r--r--config/companion_libs.in186
-rw-r--r--config/companion_libs/cloog.in52
-rw-r--r--config/companion_libs/expat.in25
-rw-r--r--config/companion_libs/gettext.in25
-rw-r--r--config/companion_libs/gmp.in83
-rw-r--r--config/companion_libs/isl.in93
-rw-r--r--config/companion_libs/libelf.in25
-rw-r--r--config/companion_libs/libiconv.in19
-rw-r--r--config/companion_libs/mpc.in61
-rw-r--r--config/companion_libs/mpfr.in67
-rw-r--r--config/companion_libs/zlib.in19
-rw-r--r--config/companion_tools/autoconf.in29
-rw-r--r--config/companion_tools/automake.in40
-rw-r--r--config/companion_tools/libtool.in23
-rw-r--r--config/companion_tools/m4.in34
-rw-r--r--config/companion_tools/make.in45
-rw-r--r--config/config.in6
-rw-r--r--config/config.mk114
-rw-r--r--config/configure.in.in85
-rw-r--r--config/debug.in2
-rw-r--r--config/debug/duma.in20
-rw-r--r--config/debug/gdb.in335
-rw-r--r--config/debug/gdb.in.cross25
-rw-r--r--config/debug/gdb.in.gdbserver47
-rw-r--r--config/debug/gdb.in.native70
-rw-r--r--config/debug/ltrace.in34
-rw-r--r--config/debug/strace.in97
-rw-r--r--config/global.in53
-rw-r--r--config/global/build-behave.in34
-rw-r--r--config/global/ct-behave.in1
-rw-r--r--config/global/download.in50
-rw-r--r--config/global/extract.in67
-rw-r--r--config/global/paths.in40
-rw-r--r--config/kernel.in14
-rw-r--r--config/kernel/bare-metal.in1
-rw-r--r--config/kernel/linux.in295
-rw-r--r--config/kernel/linux.in.240
-rw-r--r--config/kernel/windows.in3
-rw-r--r--config/libc.in45
-rw-r--r--config/libc/avr-libc.in73
-rw-r--r--config/libc/avr-libc.in.28
-rw-r--r--config/libc/bionic.in127
-rw-r--r--config/libc/glibc.in537
-rw-r--r--config/libc/glibc.in.2242
-rw-r--r--config/libc/mingw-w64.in38
-rw-r--r--config/libc/mingw.in113
-rw-r--r--config/libc/moxiebox.in26
-rw-r--r--config/libc/musl.in83
-rw-r--r--config/libc/musl.in.251
-rw-r--r--config/libc/newlib.in299
-rw-r--r--config/libc/none.in1
-rw-r--r--config/libc/uClibc-ng.in170
-rw-r--r--config/libc/uClibc.in214
-rw-r--r--config/libc/uClibc.in.2110
-rw-r--r--config/target.in138
-rw-r--r--config/toolchain.in42
112 files changed, 2865 insertions, 4245 deletions
diff --git a/config/.gitignore b/config/.gitignore
deleted file mode 100644
index b249ba2..0000000
--- a/config/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-configure.in
diff --git a/config/arch/alpha.in b/config/arch/alpha.in
index 1c7ec96..c5d76e4 100644
--- a/config/arch/alpha.in
+++ b/config/arch/alpha.in
@@ -1,9 +1,65 @@
# Alpha specific configuration file
-## select ARCH_SUPPORTS_32
-## select ARCH_DEFAULT_32
+## no-package
+## select ARCH_SUPPORTS_64
+## select ARCH_DEFAULT_64
## select ARCH_USE_MMU
## select ARCH_SUPPORTS_WITH_CPU
## select ARCH_SUPPORTS_WITH_TUNE
-##
+
## help The Alpha architecture.
+
+choice
+ bool
+ prompt "Variant"
+
+config ARCH_ALPHA_EV4
+ bool
+ prompt "EV4"
+
+config ARCH_ALPHA_EV45
+ bool
+ prompt "EV45"
+
+config ARCH_ALPHA_EV5
+ bool
+ prompt "EV5"
+
+config ARCH_ALPHA_EV56
+ bool
+ prompt "EV56"
+
+config ARCH_ALPHA_EV6
+ bool
+ prompt "EV6"
+
+config ARCH_ALPHA_EV67
+ bool
+ prompt "EV67"
+
+endchoice
+
+config ARCH_ALPHA_VARIANT
+ string
+ default "ev4" if ARCH_ALPHA_EV4
+ default "ev45" if ARCH_ALPHA_EV45
+ default "ev5" if ARCH_ALPHA_EV5
+ default "ev56" if ARCH_ALPHA_EV56
+ default "ev6" if ARCH_ALPHA_EV6
+ default "ev67" if ARCH_ALPHA_EV67
+
+config ARCH_CPU
+ default "ev4" if ARCH_ALPHA_EV4
+ default "ev45" if ARCH_ALPHA_EV45
+ default "ev5" if ARCH_ALPHA_EV5
+ default "ev56" if ARCH_ALPHA_EV56
+ default "ev6" if ARCH_ALPHA_EV6
+ default "ev67" if ARCH_ALPHA_EV67
+
+config ARCH_TUNE
+ default "ev4" if ARCH_ALPHA_EV4
+ default "ev45" if ARCH_ALPHA_EV45
+ default "ev5" if ARCH_ALPHA_EV5
+ default "ev56" if ARCH_ALPHA_EV56
+ default "ev6" if ARCH_ALPHA_EV6
+ default "ev67" if ARCH_ALPHA_EV67
diff --git a/config/arch/alpha.in.2 b/config/arch/alpha.in.2
deleted file mode 100644
index aa52624..0000000
--- a/config/arch/alpha.in.2
+++ /dev/null
@@ -1,56 +0,0 @@
-# Alpha specific configuration file
-
-choice
- bool
- prompt "Variant"
-
-config ARCH_ALPHA_EV4
- bool
- prompt "EV4"
-
-config ARCH_ALPHA_EV45
- bool
- prompt "EV45"
-
-config ARCH_ALPHA_EV5
- bool
- prompt "EV5"
-
-config ARCH_ALPHA_EV56
- bool
- prompt "EV56"
-
-config ARCH_ALPHA_EV6
- bool
- prompt "EV6"
-
-config ARCH_ALPHA_EV67
- bool
- prompt "EV67"
-
-endchoice
-
-config ARCH_ALPHA_VARIANT
- string
- default "ev4" if ARCH_ALPHA_EV4
- default "ev45" if ARCH_ALPHA_EV45
- default "ev5" if ARCH_ALPHA_EV5
- default "ev56" if ARCH_ALPHA_EV56
- default "ev6" if ARCH_ALPHA_EV6
- default "ev67" if ARCH_ALPHA_EV67
-
-config ARCH_CPU
- default "ev4" if ARCH_ALPHA_EV4
- default "ev45" if ARCH_ALPHA_EV45
- default "ev5" if ARCH_ALPHA_EV5
- default "ev56" if ARCH_ALPHA_EV56
- default "ev6" if ARCH_ALPHA_EV6
- default "ev67" if ARCH_ALPHA_EV67
-
-config ARCH_TUNE
- default "ev4" if ARCH_ALPHA_EV4
- default "ev45" if ARCH_ALPHA_EV45
- default "ev5" if ARCH_ALPHA_EV5
- default "ev56" if ARCH_ALPHA_EV56
- default "ev6" if ARCH_ALPHA_EV6
- default "ev67" if ARCH_ALPHA_EV67
diff --git a/config/arch/arc.in b/config/arch/arc.in
new file mode 100644
index 0000000..d7c6e04
--- /dev/null
+++ b/config/arch/arc.in
@@ -0,0 +1,16 @@
+# ARC specific configuration file
+
+## no-package
+## select ARCH_SUPPORTS_32
+## select ARCH_DEFAULT_32
+## select ARCH_SUPPORTS_BOTH_MMU
+## select ARCH_DEFAULT_HAS_MMU
+## select ARCH_SUPPORTS_EITHER_ENDIAN
+## select ARCH_DEFAULT_LE
+## select ARCH_SUPPORTS_WITH_CPU
+## select GCC_REQUIRE_7_or_later
+## select BINUTILS_REQUIRE_2_30_or_later
+## select LINUX_REQUIRE_4_8_or_later if KERNEL_LINUX
+##
+## help The Synopsys DesignWare ARC architecture, see more info here:
+## help https://www.synopsys.com/designware-ip/processor-solutions/arc-processors.html
diff --git a/config/arch/arm.in b/config/arch/arm.in
index 5dbc717..07ad5ed 100644
--- a/config/arch/arm.in
+++ b/config/arch/arm.in
@@ -1,11 +1,13 @@
# ARM specific configuration file
+## no-package
## select ARCH_SUPPORTS_32
## select ARCH_SUPPORTS_64
## select ARCH_DEFAULT_32
## select ARCH_SUPPORTS_BOTH_MMU
## select ARCH_DEFAULT_HAS_MMU
-## select ARCH_SUPPORTS_BOTH_ENDIAN
+## select ARCH_SUPPORTS_FLAT_FORMAT
+## select ARCH_SUPPORTS_EITHER_ENDIAN
## select ARCH_DEFAULT_LE
## select ARCH_SUPPORTS_WITH_ARCH
## select ARCH_SUPPORTS_WITH_CPU
@@ -14,6 +16,102 @@
## select ARCH_SUPPORTS_WITH_FLOAT if ARCH_32
## select ARCH_SUPPORTS_WITH_FPU if ARCH_32
## select ARCH_SUPPORTS_SOFTFP if ARCH_32
-##
+## select LINUX_REQUIRE_3_7_or_later if ARCH_64 && KERNEL_LINUX
+
## help The ARM architecture, as defined by:
## help http://www.arm.com/
+
+if ARCH_32
+config ARCH_ARM_MODE
+ string
+ default "arm" if ARCH_ARM_MODE_ARM
+ default "thumb" if ARCH_ARM_MODE_THUMB
+
+choice
+ bool
+ prompt "Default instruction set mode"
+ default ARCH_ARM_MODE_ARM
+
+config ARCH_ARM_MODE_ARM
+ bool
+ prompt "arm"
+ help
+ Defaults to emitting instructions in the ARM mode.
+
+config ARCH_ARM_MODE_THUMB
+ bool
+ prompt "thumb"
+ help
+ Defaults to emitting instructions in the THUMB mode.
+
+endchoice
+
+config ARCH_ARM_INTERWORKING
+ bool
+ prompt "Use Thumb-interworking (READ HELP)"
+ help
+ Excerpt from the gcc manual:
+
+ > Generate code which supports calling between the ARM and Thumb
+ > instruction sets. Without this option the two instruction sets
+ > cannot be reliably used inside one program. The default is
+ > [not to use interwork], since slightly larger code is generated
+ > when [interwork] is specified.
+
+ NOTE: Interworking in crosstool-NG is not well-tested. Use at your
+ own risks, and report success and/or failure.
+
+# Until we only support EABI:
+config ARCH_ARM_ABI_OK
+ def_bool y
+ depends on ! ARCH_ARM_EABI
+ select ARCH_SUPPORTS_WITH_ABI
+
+# Little trick to force EABI *and* always show the prompt
+config ARCH_ARM_EABI_FORCE
+ bool
+ default y if ! OBSOLETE
+ select ARCH_ARM_EABI
+
+config ARCH_ARM_EABI
+ bool
+ prompt "Use EABI"
+ default y
+ help
+ Set up the toolchain so that it generates EABI-compliant binaries.
+
+ If you say 'n' here, then the toolchain will generate OABI binaries.
+ OABI has long been deprecated, and is now considered legacy.
+
+config ARCH_ARM_TUPLE_USE_EABIHF
+ bool
+ prompt "append 'hf' to the tuple (EXPERIMENTAL)"
+ depends on ARCH_FLOAT_HW
+ depends on ARCH_ARM_EABI # Until we only support that...
+ default y
+ help
+ Is you say 'y' here, then the tuple for the toolchain will end
+ up with *eabihf, instead of the usual *eabi.
+
+ *eabihf is used to denote that the toolchain *is* using the
+ hard-float ABI, while *eabi is just an indication of using the
+ soft-float ABI.
+
+ Ie. all one can say is: *eabihf ⊢ hard-float ABI
+
+ Saying 'n' here does *not* impact the ability of the toolchain to
+ generate hard-float instructions with the hard-float ABI. It is a
+ purely cosmetic thing, used by distros to differentiate their
+ hard-float-ABI-using ports from their soft-float-ABI-using ports.
+ (eg. Debian Wheezy and above).
+
+ This is an option, as not all versions of gcc/binutils do support
+ such tuple, and fail to build with *eabihf. Stock gcc version up
+ to, and including 4.7.2 have an issue or another with *eabihf.
+
+ This option is here for the future.
+
+ Say 'n', unless you are trying to fix gcc to properly recognise
+ the *eabihf tuples.
+
+endif
diff --git a/config/arch/arm.in.2 b/config/arch/arm.in.2
deleted file mode 100644
index a53ad33..0000000
--- a/config/arch/arm.in.2
+++ /dev/null
@@ -1,93 +0,0 @@
-# ARM specific configuration file
-
-config ARCH_ARM_MODE
- string
- default "arm" if ARCH_ARM_MODE_ARM
- default "thumb" if ARCH_ARM_MODE_THUMB
-
-choice
- bool
- prompt "Default instruction set mode"
- default ARCH_ARM_MODE_ARM
-
-config ARCH_ARM_MODE_ARM
- bool
- prompt "arm"
- help
- Defaults to emitting instructions in the ARM mode.
-
-config ARCH_ARM_MODE_THUMB
- bool
- prompt "thumb"
- help
- Defaults to emitting instructions in the THUMB mode.
-
-endchoice
-
-config ARCH_ARM_INTERWORKING
- bool
- prompt "Use Thumb-interworking (READ HELP)"
- help
- Excerpt from the gcc manual:
-
- > Generate code which supports calling between the ARM and Thumb
- > instruction sets. Without this option the two instruction sets
- > cannot be reliably used inside one program. The default is
- > [not to use interwork], since slightly larger code is generated
- > when [interwork] is specified.
-
- NOTE: Interworking in crosstool-NG is not sell-tested. Use at your
- own risks, and report success and/or failure.
-
-# Until we only support EABI:
-config ARCH_ARM_ABI_OK
- def_bool y
- depends on ! ARCH_ARM_EABI
- select ARCH_SUPPORTS_WITH_ABI
-
-# Little trick to force EABI *and* always show the prompt
-config ARCH_ARM_EABI_FORCE
- bool
- default y if ! OBSOLETE
- select ARCH_ARM_EABI
-
-config ARCH_ARM_EABI
- bool
- prompt "Use EABI"
- default y
- help
- Set up the toolchain so that it generates EABI-compliant binaries.
-
- If you say 'n' here, then the toolchain will generate OABI binaries.
- OABI has long been deprecated, and is now considered legacy.
-
-config ARCH_ARM_TUPLE_USE_EABIHF
- bool
- prompt "append 'hf' to the tuple (EXPERIMENTAL)"
- depends on ARCH_FLOAT_HW
- depends on ARCH_ARM_EABI # Until we only support that...
- default y
- help
- Is you say 'y' here, then the tuple for the toolchain will end
- up with *eabihf, instead of the usual *eabi.
-
- *eabihf is used to denote that the toolchain *is* using the
- hard-float ABI, while *eabi is just an indication of using the
- soft-float ABI.
-
- Ie. all one can say is: *eabihf ⊢ hard-float ABI
-
- Saying 'n' here does *not* impact the ability of the toolchain to
- generate hard-float instructions with the hard-float ABI. It is a
- purely cosmetic thing, used by distros to differentiate their
- hard-float-ABI-using ports from their soft-float-ABI-using ports.
- (eg. Debian Wheezy and above).
-
- This is an option, as not all versions of gcc/binutils do support
- such tuple, and fail to build with *eabihf. Stock gcc version up
- to, and including 4.7.2 have an issue or another with *eabihf.
-
- This option is here for the future.
-
- Say 'n', unless you are trying to fix gcc to properly recognise
- the *eabihf tuples.
diff --git a/config/arch/avr.in b/config/arch/avr.in
index cf8e9af..ddf0cb6 100644
--- a/config/arch/avr.in
+++ b/config/arch/avr.in
@@ -1,5 +1,6 @@
# AVR specific config options
+## no-package
## select ARCH_SUPPORTS_8
## select ARCH_DEFAULT_8
## select ARCH_REQUIRES_MULTILIB
diff --git a/config/arch/c6x.in b/config/arch/c6x.in
new file mode 100644
index 0000000..98589cc
--- /dev/null
+++ b/config/arch/c6x.in
@@ -0,0 +1,18 @@
+# c6x specific configuration file
+
+## no-package
+## select ARCH_SUPPORTS_32
+## select ARCH_DEFAULT_32
+## select ARCH_SUPPORTS_EITHER_ENDIAN
+## 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) but not newer
+## help than 5.11.x (support for C6x was removed in 5.12).
+
diff --git a/config/arch/m68k.in b/config/arch/m68k.in
index 6c76e78..d21de00 100644
--- a/config/arch/m68k.in
+++ b/config/arch/m68k.in
@@ -1,8 +1,10 @@
# m68k specific configuration file
+## no-package
## select ARCH_SUPPORTS_32
## select ARCH_DEFAULT_32
## select ARCH_DEFAULT_BE
+## select ARCH_SUPPORTS_FLAT_FORMAT
## select ARCH_SUPPORTS_WITH_CPU
##
## help The m68k architecture
diff --git a/config/arch/microblaze.in b/config/arch/microblaze.in
index d236007..c8496ee 100644
--- a/config/arch/microblaze.in
+++ b/config/arch/microblaze.in
@@ -1,22 +1,24 @@
# MicroBlaze specific config options
+## no-package
## depends on EXPERIMENTAL
##
-## select ARCH_SUPPORT_ARCH
+## select ARCH_SUPPORTS_WITH_CPU
## select ARCH_FLOAT_SW
-## select ARCH_SUPPORTS_BOTH_ENDIAN
+## select ARCH_SUPPORTS_EITHER_ENDIAN
## select ARCH_DEFAULT_BE
## select ARCH_SUPPORTS_BOTH_MMU
## select ARCH_DEFAULT_HAS_MMU
+## select ARCH_SUPPORTS_FLAT_FORMAT
##
## help The MicroBlaze architecture, as defined by:
## help http://www.xilinx.com/
-## help
+## help
## help Upstream projects do not currently provide
## help full support for the microblaze architecture
## help and as such, this is marked as EXPERIMENTAL
## help for CT-NG.
-## help
+## help
## help Support is being added for a modern gcc,
## help binutils and gdb along with nptl threading
## help in glibc for microblaze.
diff --git a/config/arch/mips.in b/config/arch/mips.in
index 1168f5e..ad8b1c6 100644
--- a/config/arch/mips.in
+++ b/config/arch/mips.in
@@ -1,14 +1,52 @@
# MIPS specific config options
+## no-package
## select ARCH_SUPPORTS_32
## select ARCH_SUPPORTS_64
## select ARCH_DEFAULT_32
## select ARCH_USE_MMU
-## select ARCH_SUPPORTS_BOTH_ENDIAN
+## select ARCH_SUPPORTS_EITHER_ENDIAN
## select ARCH_DEFAULT_BE
## select ARCH_SUPPORTS_WITH_ARCH
## select ARCH_SUPPORTS_WITH_TUNE
## select ARCH_SUPPORTS_WITH_FLOAT
-##
+
## help The MIPS architecture, as defined by:
## help http://www.mips.com/
+
+choice
+ bool
+ prompt "ABI"
+
+config ARCH_mips_o32
+ bool
+ prompt "o32"
+ depends on (ARCH_32 || MULTILIB)
+ help
+ This is the -mabi=32 gcc option.
+
+config ARCH_mips_n32
+ bool
+ prompt "n32"
+ depends on ARCH_64
+ help
+ This is the -mabi=n32 gcc option.
+
+config ARCH_mips_n64
+ bool
+ prompt "n64"
+ depends on ARCH_64
+ help
+ This is the -mabi=64 gcc option.
+
+# Not supported on Linux:
+# o64 : seems related to *BSD
+# eabi : seems related to bare-metal
+
+endchoice
+
+config ARCH_mips_ABI
+ string
+ default "32" if ARCH_mips_o32
+ default "n32" if ARCH_mips_n32
+ default "64" if ARCH_mips_n64
diff --git a/config/arch/mips.in.2 b/config/arch/mips.in.2
deleted file mode 100644
index 35c60e0..0000000
--- a/config/arch/mips.in.2
+++ /dev/null
@@ -1,38 +0,0 @@
-# MIPS specific config options
-
-choice
- bool
- prompt "ABI"
-
-config ARCH_mips_o32
- bool
- prompt "o32"
- depends on (ARCH_32 || MULTILIB)
- help
- This is the -mabi=32 gcc option.
-
-config ARCH_mips_n32
- bool
- prompt "n32"
- depends on ARCH_64
- help
- This is the -mabi=n32 gcc option.
-
-config ARCH_mips_n64
- bool
- prompt "n64"
- depends on ARCH_64
- help
- This is the -mabi=64 gcc option.
-
-# Not supported on Linux:
-# o64 : seems related to *BSD
-# eabi : seems related to bare-metal
-
-endchoice
-
-config ARCH_mips_ABI
- string
- default "32" if ARCH_mips_o32
- default "n32" if ARCH_mips_n32
- default "64" if ARCH_mips_n64
diff --git a/config/arch/moxie.in b/config/arch/moxie.in
new file mode 100644
index 0000000..8d8bb22
--- /dev/null
+++ b/config/arch/moxie.in
@@ -0,0 +1,11 @@
+# Moxie soft-core architecture
+
+## no-package
+## select ARCH_SUPPORTS_32
+## select ARCH_DEFAULT_32
+## select ARCH_SUPPORTS_EITHER_ENDIAN
+## select ARCH_DEFAULT_BE
+## depends on EXPERIMENTAL
+
+## help The Moxie soft-core architecture, as defined by:
+## help http://moxielogic.org/blog/pages/architecture.html
diff --git a/config/arch/msp430.in b/config/arch/msp430.in
new file mode 100644
index 0000000..320eca8
--- /dev/null
+++ b/config/arch/msp430.in
@@ -0,0 +1,10 @@
+# MSP430 specific config options
+
+## no-package
+## select ARCH_SUPPORTS_16
+## select ARCH_DEFAULT_16
+## select ARCH_REQUIRES_MULTILIB
+## depends on EXPERIMENTAL
+##
+## help The 16-bit MSP430 architecture, as defined by:
+## help http://www.ti.com/lsds/ti/microcontrollers-16-bit-32-bit/msp/overview.page?HQS=msp430
diff --git a/config/arch/nios2.in b/config/arch/nios2.in
index 2674bfd..de28246 100644
--- a/config/arch/nios2.in
+++ b/config/arch/nios2.in
@@ -1,9 +1,12 @@
# NIOS232 specific configuration file
+## no-package
## select ARCH_SUPPORTS_32
## select ARCH_DEFAULT_32
+## select ARCH_SUPPORTS_BOTH_MMU
## select ARCH_DEFAULT_LE
-## select ARCH_SUPPORTS_WITH_CPU
+## select ARCH_SUPPORTS_WITH_ARCH
+## select ARCH_SUPPORTS_FLAT_FORMAT
##
## help The NIOS2 architecture, as defined by:
## help http://www.altera.com
diff --git a/config/arch/powerpc.in b/config/arch/powerpc.in
index 6dfc742..bb75ac0 100644
--- a/config/arch/powerpc.in
+++ b/config/arch/powerpc.in
@@ -1,15 +1,62 @@
-# powerpc specific configuration file
+# Powerpc specific configuration file
+## no-package
## select ARCH_SUPPORTS_32
## select ARCH_SUPPORTS_64
## select ARCH_DEFAULT_32
-## select ARCH_SUPPORTS_BOTH_ENDIAN
+## select ARCH_SUPPORTS_EITHER_ENDIAN
## select ARCH_DEFAULT_BE
## select ARCH_USE_MMU
## select ARCH_SUPPORTS_WITH_ABI
## select ARCH_SUPPORTS_WITH_CPU
## select ARCH_SUPPORTS_WITH_TUNE
## select ARCH_SUPPORTS_WITH_FLOAT
+## select ARCH_SUPPORTS_WITH_32_64
##
## help The PowerPC architecture, as defined by:
## help http://www.ibm.com/developerworks/eserver/articles/archguide.html
+
+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
+
+choice
+ bool
+ prompt "ABI"
+ default ARCH_powerpc_ABI_DEFAULT
+
+config ARCH_powerpc_ABI_DEFAULT
+ bool
+ prompt "default"
+ help
+ The default ABI (System V.4).
+
+config ARCH_powerpc_ABI_EABI
+ bool
+ prompt "EABI"
+ depends on BARE_METAL
+ help
+ The Embedded ABI (stack alignment of 8 bytes, etc).
+
+config ARCH_powerpc_ABI_SPE
+ bool
+ prompt "SPE"
+ select GCC_REQUIRE_older_than_9
+ select GLIBC_REQUIRE_2_29_or_older
+ help
+ Add support for the Signal Processing Engine. This will set up
+ the toolchain so that it supports the SPE ABI extensions. This
+ mainly targets Freescale e500 processors.
+
+ Setting this option will append "spe" to the end of your target
+ tuple name (e.g., powerpc-e500v2-linux-gnuspe) so that the gcc
+ configure/build system will know to include SPE ABI support. It
+ will also automatically add "-mabi=spe -mspe" to your TARGET_CFLAGS,
+ and "--enable-e500_double" to your CC_EXTRA_CONFIG_ARRAY, so you
+ do not need to explicitly add them.
+
+ Support for SPE ABI has been removed in GCC 9.
+
+endchoice
diff --git a/config/arch/powerpc.in.2 b/config/arch/powerpc.in.2
deleted file mode 100644
index 2cbc370..0000000
--- a/config/arch/powerpc.in.2
+++ /dev/null
@@ -1,42 +0,0 @@
-# powerpc specific configuration file
-
-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
-
-choice
- bool
- prompt "ABI"
- default ARCH_powerpc_ABI_DEFAULT
-
-config ARCH_powerpc_ABI_DEFAULT
- bool
- prompt "default"
- help
- The default ABI (System V.4).
-
-config ARCH_powerpc_ABI_EABI
- bool
- prompt "EABI"
- depends on BARE_METAL
- help
- The Embedded ABI (stack alignment of 8 bytes, etc).
-
-config ARCH_powerpc_ABI_SPE
- bool
- prompt "SPE"
- help
- Add support for the Signal Processing Engine. This will set up
- the toolchain so that it supports the SPE ABI extensions. This
- mainly targets Freescale e500 processors.
-
- Setting this option will append "spe" to the end of your target
- tuple name (e.g., powerpc-e500v2-linux-gnuspe) so that the gcc
- configure/build system will know to include SPE ABI support. It
- will also automatically add "-mabi=spe -mspe" to your TARGET_CFLAGS,
- and "--enable-e500_double" to your CC_EXTRA_CONFIG_ARRAY, so you
- do not need to explicitly add them.
-
-endchoice
diff --git a/config/arch/pru.in b/config/arch/pru.in
new file mode 100644
index 0000000..f26dc7a
--- /dev/null
+++ b/config/arch/pru.in
@@ -0,0 +1,8 @@
+# PRU specific config options
+
+## no-package
+## select ARCH_SUPPORTS_8
+## select ARCH_DEFAULT_8
+##
+## help The TI PRU core, as defined by:
+## help http://bbb.io/pru
diff --git a/config/arch/riscv.in b/config/arch/riscv.in
new file mode 100644
index 0000000..6b98520
--- /dev/null
+++ b/config/arch/riscv.in
@@ -0,0 +1,19 @@
+# RISC-V specific config options
+
+## no-package
+## depends on EXPERIMENTAL
+##
+## select ARCH_SUPPORTS_32
+## select ARCH_SUPPORTS_64
+## select ARCH_DEFAULT_32
+## select ARCH_SUPPORTS_BOTH_MMU
+## select ARCH_SUPPORTS_WITH_ABI
+## select ARCH_SUPPORTS_WITH_ARCH
+## select ARCH_SUPPORTS_WITH_TUNE
+## select GCC_REQUIRE_7_or_later
+## select BINUTILS_REQUIRE_2_28_or_later
+## select GDB_REQUIRE_8_0_or_later if DEBUG_GDB
+## select GLIBC_REQUIRE_2_29_or_later if LIBC_GLIBC
+
+## help The RISC-V architecture, as defined by:
+## help http://www.riscv.org/
diff --git a/config/arch/s390.in b/config/arch/s390.in
index 00bc879..64107b6 100644
--- a/config/arch/s390.in
+++ b/config/arch/s390.in
@@ -1,5 +1,6 @@
# s390 specific config options
+## no-package
## select ARCH_SUPPORTS_32
## select ARCH_SUPPORTS_64
## select ARCH_DEFAULT_32
diff --git a/config/arch/sh.in b/config/arch/sh.in
index 60de313..ff2ec14 100644
--- a/config/arch/sh.in
+++ b/config/arch/sh.in
@@ -1,11 +1,77 @@
# Super-H specific configuration file
+## no-package
## select ARCH_SUPPORTS_32
## select ARCH_DEFAULT_32
-## select ARCH_USE_MMU
-## select ARCH_SUPPORTS_BOTH_ENDIAN
+## select ARCH_SUPPORTS_BOTH_MMU
+## select ARCH_DEFAULT_HAS_MMU
+## 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 Super-H architecture, as defined by:
## help http://www.renesas.com/fmwk.jsp?cnt=superh_family_landing.jsp&fp=/products/mpumcu/superh_family/
+
+choice
+ bool
+ prompt "Variant"
+
+# 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.
+config ARCH_SH_SH
+ bool
+ prompt "unspecified"
+ select ARCH_SUPPORTS_BOTH_ENDIAN
+ select ARCH_SUPPORTS_WITH_CPU
+ help
+ If left unspecified, GCC will determine the set of multilibs to compile automatically
+ based on selected endianness, FPU mode and OS.
+
+config ARCH_SH_SH1
+ bool
+ prompt "sh1"
+
+config ARCH_SH_SH2
+ bool
+ prompt "sh2"
+
+config ARCH_SH_SH2E
+ bool
+ prompt "sh2e"
+
+config ARCH_SH_SH2A
+ bool
+ prompt "sh2a"
+
+config ARCH_SH_SH3
+ bool
+ prompt "sh3"
+
+config ARCH_SH_SH3E
+ bool
+ prompt "sh3e"
+
+config ARCH_SH_SH4
+ bool
+ prompt "sh4"
+
+config ARCH_SH_SH4A
+ bool
+ prompt "sh4a"
+
+endchoice
+
+config ARCH_SH_VARIANT
+ string
+ 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 "sh3" if ARCH_SH_SH3
+ default "sh3e" if ARCH_SH_SH3E
+ default "sh4" if ARCH_SH_SH4
+ default "sh4a" if ARCH_SH_SH4A
diff --git a/config/arch/sh.in.2 b/config/arch/sh.in.2
deleted file mode 100644
index 82856ee..0000000
--- a/config/arch/sh.in.2
+++ /dev/null
@@ -1,25 +0,0 @@
-# Super-H specific configuration file
-
-choice
- bool
- prompt "Variant"
-
-config ARCH_SH_SH3
- bool
- prompt "sh3"
-
-config ARCH_SH_SH4
- bool
- prompt "sh4"
-
-config ARCH_SH_SH4A
- bool
- prompt "sh4a"
-
-endchoice
-
-config ARCH_SH_VARIANT
- string
- default "sh3" if ARCH_SH_SH3
- default "sh4" if ARCH_SH_SH4
- default "sh4a" if ARCH_SH_SH4A
diff --git a/config/arch/sparc.in b/config/arch/sparc.in
index 27eaf9c..fe46eaa 100644
--- a/config/arch/sparc.in
+++ b/config/arch/sparc.in
@@ -1,12 +1,16 @@
# SPARC specific config options
+## no-package
## select ARCH_SUPPORTS_32
## select ARCH_SUPPORTS_64
## select ARCH_DEFAULT_32
-## select ARCH_USE_MMU
+## select ARCH_SUPPORTS_BOTH_MMU
+## select ARCH_DEFAULT_HAS_MMU
+## select ARCH_SUPPORTS_FLAT_FORMAT
## select ARCH_SUPPORTS_WITH_CPU
## select ARCH_SUPPORTS_WITH_TUNE
## select ARCH_SUPPORTS_WITH_FLOAT
+## select ARCH_SUPPORTS_WITH_32_64 if GCC_6_or_later
##
## help The SUN SPARC architecture, as defined by:
## help 32 bit: http://www.sparc.org/standards/V8.pdf
diff --git a/config/arch/x86.in b/config/arch/x86.in
index 3863c02..ec16655 100644
--- a/config/arch/x86.in
+++ b/config/arch/x86.in
@@ -1,5 +1,6 @@
# x86 specific options
+## no-package
## select ARCH_SUPPORTS_32
## select ARCH_SUPPORTS_64
## select ARCH_DEFAULT_32
@@ -7,6 +8,7 @@
## select ARCH_SUPPORTS_WITH_ARCH
## select ARCH_SUPPORTS_WITH_CPU
## select ARCH_SUPPORTS_WITH_TUNE
+## select ARCH_SUPPORTS_WITH_32_64
##
## help The x86 architecture, as defined by:
## help 32-bit (ia32) : http://www.intel.com/
diff --git a/config/arch/xtensa.in b/config/arch/xtensa.in
index 3ffa4e8..14ba10d 100644
--- a/config/arch/xtensa.in
+++ b/config/arch/xtensa.in
@@ -1,11 +1,13 @@
# xtensa specific configuration file
+## no-package
## select ARCH_SUPPORTS_32
-## select ARCH_SUPPORTS_BOTH_ENDIAN
+## select ARCH_SUPPORTS_EITHER_ENDIAN
## select ARCH_DEFAULT_LE
## select ARCH_SUPPORTS_BOTH_MMU
## select ARCH_DEFAULT_HAS_MMU
-##
+## select ARCH_SUPPORTS_FLAT_FORMAT
+
## help The xtensa architecture
## help
## help Xtensa is a configurable and extensible processor architecture.
@@ -20,3 +22,16 @@
## help
## help The default option (ARCH_xtensa_fsf) uses a built-in configuration,
## help which may or may not work for a particular Xtensa processor.
+
+choice
+ prompt "Target Architecture Variant"
+ default ARCH_xtensa_fsf
+
+config XTENSA_CUSTOM
+ bool "Custom Xtensa processor configuration"
+ select TARGET_USE_OVERLAY
+
+config ARCH_xtensa_fsf
+ bool "fsf - Default configuration"
+
+endchoice
diff --git a/config/arch/xtensa.in.2 b/config/arch/xtensa.in.2
deleted file mode 100644
index 25ece70..0000000
--- a/config/arch/xtensa.in.2
+++ /dev/null
@@ -1,33 +0,0 @@
-choice
- prompt "Target Architecture Variant"
- default ARCH_xtensa_fsf
-
-config XTENSA_CUSTOM
- bool "Custom Xtensa processor configuration"
-
-config ARCH_xtensa_fsf
- bool "fsf - Default configuration"
-
-endchoice
-
-config ARCH_XTENSA_CUSTOM_NAME
- string "Custom Xtensa processor configuration name"
- depends on XTENSA_CUSTOM
- default ""
- help
- Enter the name of the custom processor configuration.
- Overlay file for that configuration must be called
- 'xtensa_<CUSTOM_NAME>.tar'.
-
- Leave blank to use the default 'xtensa-overlay.tar'.
- For more information about this option, please also consult
- section 'Using crosstool-NG to build Xtensa toolchains' in the
- docs/C - Misc. tutorials.txt
-
-config ARCH_XTENSA_CUSTOM_OVERLAY_LOCATION
- string "Full path to custom Xtensa processor configurations"
- depends on XTENSA_CUSTOM
- default ""
- help
- Enter the path to the directory for the custom processor
- configuration file.
diff --git a/config/backend.in b/config/backend.in
deleted file mode 100644
index 12d278b..0000000
--- a/config/backend.in
+++ /dev/null
@@ -1,26 +0,0 @@
-# Options specific to crosstool-NG acting as a backend
-
-config IS_A_BACKEND
- string
- option env="CT_IS_A_BACKEND"
-
-config BACKEND
- bool
- depends on OBSOLETE
- default y if IS_A_BACKEND = "y" || IS_A_BACKEND = "Y"
-
-if BACKEND
-
-config BACKEND_ARCH
- string
- option env="CT_BACKEND_ARCH"
-
-config BACKEND_KERNEL
- string
- option env="CT_BACKEND_KERNEL"
-
-config BACKEND_LIBC
- string
- option env="CT_BACKEND_LIBC"
-
-endif #if BACKEND
diff --git a/config/binutils.in b/config/binutils.in
index 99b8b9f..c4762aa 100644
--- a/config/binutils.in
+++ b/config/binutils.in
@@ -17,7 +17,7 @@ config ARCH_BINFMT_ELF
config ARCH_BINFMT_FLAT
bool
prompt "Flat"
- depends on ! ARCH_USE_MMU
+ depends on ! ARCH_USE_MMU && ARCH_SUPPORTS_FLAT_FORMAT
help
This will build flat binaries, suitable for
MMU-less architectures.
@@ -33,10 +33,6 @@ config ARCH_BINFMT_FDPIC
endchoice
-config BINUTILS
- string
-
-source "config.gen/binutils.in"
-source "config.gen/binutils.in.2"
+source "config/gen/binutils.in"
endmenu
diff --git a/config/binutils/binutils.in b/config/binutils/binutils.in
index 695256a..286ed4b 100644
--- a/config/binutils/binutils.in
+++ b/config/binutils/binutils.in
@@ -2,182 +2,18 @@
comment "GNU binutils"
-config BINUTILS_CUSTOM
- bool
- prompt "Custom binutils"
- depends on EXPERIMENTAL
- select BINUTILS_2_26_or_later
- help
- The choosen binutils version shall be not downloaded. Instead use
- a custom location to get the source.
-
-if BINUTILS_CUSTOM
-
-config BINUTILS_CUSTOM_LOCATION
- string
- prompt "Full path to custom binutils source"
- help
- Enter the path to the directory or tarball of your source for binutils.
-
- If the path is a tarball, it should extract to: <name>-<version>/
- where the name is this component, binutils, and the version is set
- below in the custom version string.
-
-config BINUTILS_CUSTOM_VERSION
- string
- prompt "Binutils Custom Version number"
- help
- Enter the version number for your custom binutils.
-
-config BINUTILS_VERSION
- string
- default BINUTILS_CUSTOM_VERSION
-
-endif # BINUTILS_CUSTOM
-
-if ! BINUTILS_CUSTOM
-
-config BINUTILS_SHOW_LINARO
- bool
- prompt "Show Linaro versions"
- help
- Linaro is maintaining some advanced/more stable/experimental versions
- of binutils, especially for the ARM architecture.
-
- Those versions have not been blessed by the binutils comunity (nor have they
- been cursed either!), but they look to be pretty much stable, and even
- more stable than the upstream versions. YMMV...
-
- If you do not know what this Linaro stuff is, then simply say 'n' here,
- and rest in peace. OTOH, if you know what you are doing, you will be
- able to use and enjoy :-) the Linaro versions by saying 'y' here.
-
- Linaro: http://www.linaro.org/
-
-choice
- bool
- prompt "binutils version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config BINUTILS_V_2_27
- bool
- prompt "2.27"
- select BINUTILS_2_27_or_later
-
-config BINUTILS_V_2_26
- bool
- prompt "2.26"
- select BINUTILS_2_26_or_later
-
-config BINUTILS_V_2_25_1
- bool
- prompt "2.25.1 (OBSOLETE)"
- select BINUTILS_2_25_1_or_later
- depends on OBSOLETE
-
-config BINUTILS_LINARO_V_2_25
- bool
- prompt "linaro-2.25.0-2015.01-2 (OBSOLETE)"
- select BINUTILS_2_25_or_later
- depends on BINUTILS_SHOW_LINARO
- depends on OBSOLETE
-
-config BINUTILS_LINARO_V_2_24
- bool
- prompt "linaro-2.24.0-2014.11-2 (OBSOLETE)"
- select BINUTILS_2_24_or_later
- depends on BINUTILS_SHOW_LINARO
- depends on OBSOLETE
-
-config BINUTILS_V_2_24
- bool
- prompt "2.24 (OBSOLETE)"
- select BINUTILS_2_24_or_later
- depends on OBSOLETE
-
-config BINUTILS_LINARO_V_2_23_2
- bool
- prompt "linaro-2.23.2-2013.10-4 (OBSOLETE)"
- select BINUTILS_2_23_2_or_later
- depends on BINUTILS_SHOW_LINARO
- depends on OBSOLETE
-
-config BINUTILS_V_2_23_2
- bool
- prompt "2.23.2 (OBSOLETE)"
- select BINUTILS_2_23_2_or_later
- depends on OBSOLETE
-
-endchoice
-
-config BINUTILS_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "2.27" if BINUTILS_V_2_27
- default "2.26" if BINUTILS_V_2_26
- default "2.25.1" if BINUTILS_V_2_25_1
- default "linaro-2.25.0-2015.01-2" if BINUTILS_LINARO_V_2_25
- default "linaro-2.24.0-2014.11-2" if BINUTILS_LINARO_V_2_24
- default "2.24" if BINUTILS_V_2_24
- default "linaro-2.23.2-2013.10-4" if BINUTILS_LINARO_V_2_23_2
- default "2.23.2" if BINUTILS_V_2_23_2
-
-endif # ! BINUTILS_CUSTOM
-
-config BINUTILS_2_27_or_later
- bool
- select BINUTILS_2_26_or_later
-
-config BINUTILS_2_26_or_later
- bool
- select BINUTILS_2_25_1_or_later
-
-config BINUTILS_2_25_1_or_later
- bool
- select BINUTILS_2_25_or_later
-
-config BINUTILS_2_25_or_later
- bool
- select BINUTILS_2_24_or_later
-
-config BINUTILS_2_24_or_later
- bool
- select BINUTILS_2_23_2_or_later
-
-config BINUTILS_2_23_2_or_later
- bool
- select BINUTILS_HAS_GOLD
- select BINUTILS_HAS_HASH_STYLE
- select BINUTILS_HAS_PKGVERSION_BUGURL
- select BINUTILS_HAS_PLUGINS
-
-config BINUTILS_HAS_HASH_STYLE
- bool
-
-config BINUTILS_HAS_GOLD
- bool
-
# gold only suports the listed architectures
config BINUTILS_GOLD_SUPPORTS_ARCH
bool
- default y if ARCH_arm
- default y if ARCH_x86
+ default y if ARCH_ARM
+ default y if ARCH_X86
config BINUTILS_GOLD_SUPPORT
bool
default y
- depends on BINUTILS_HAS_GOLD
depends on BINUTILS_GOLD_SUPPORTS_ARCH
depends on ! STATIC_TOOLCHAIN
-config BINUTILS_HAS_PLUGINS
- bool
-
-config BINUTILS_HAS_PKGVERSION_BUGURL
- bool
-
# Force using the BFD linker if needed. There are two options:
# - For some C libraries (eg. glibc at least), BFD ld must be
# built and be selected by default.
@@ -226,7 +62,7 @@ config BINUTILS_LINKER_LD_GOLD
config BINUTILS_LINKER_GOLD_LD
bool
prompt "gold, ld"
- depends on !BINUTILS_FORCE_LD_BFD_ONLY
+ depends on !BINUTILS_FORCE_LD_BFD_DEFAULT && !BINUTILS_FORCE_LD_BFD_ONLY
depends on BINUTILS_GOLD_SUPPORT
select BINUTILS_GOLD_INSTALLED
select BINUTILS_LINKER_BOTH
@@ -286,13 +122,31 @@ config BINUTILS_LINKER_DEFAULT
config BINUTILS_PLUGINS
bool
prompt "Enable support for plugins"
- depends on BINUTILS_HAS_PLUGINS
depends on ! STATIC_TOOLCHAIN
help
binutils can be extended through the use of plugins.
Especially, gold can use the lto-plugin, as installed
by gcc, to handle LTO.
+config BINUTILS_RELRO
+ tristate
+ prompt "Enable -z relro in ELF linker by default" if BINUTILS_2_27_or_later
+ default m
+ help
+ Setting this option forces "-z relro" by default in the ELF linker.
+ Clearing this option forces "-z norelro" by default in the ELF linker.
+ Setting this option to 'M' configures binutils with their internal
+ default for the selected architecture.
+
+config BINUTILS_DETERMINISTIC_ARCHIVES
+ bool
+ prompt "Enable deterministic archives by default"
+ default y
+ help
+ Setting this option will enable deterministic mode by default (-D).
+ ar and ranlib will use zero for UIDs, GIDs,
+ timestamps, and use consistent file modes for all files.
+
config BINUTILS_EXTRA_CONFIG_ARRAY
string
prompt "binutils extra config"
@@ -308,7 +162,6 @@ config BINUTILS_FOR_TARGET
bool
prompt "binutils libraries for the target"
depends on ! BARE_METAL
- depends on ! BACKEND
help
Some utilities may need binutils libraries to be available on
the target, eg. oprofile.
@@ -326,3 +179,27 @@ config BINUTILS_FOR_TARGET_BFD
default y
endif # BINUTILS_FOR_TARGET
+
+if ARCH_BINFMT_FLAT
+
+comment "elf2flt"
+
+config ELF2FLT_REQUIRES
+ def_bool y
+ select ZLIB_NEEDED
+ select BINUTILS_FORCE_LD_BFD_ONLY
+
+source "config/versions/elf2flt.in"
+
+config ELF2FLT_EXTRA_CONFIG_ARRAY
+ string
+ prompt "elf2flt extra config"
+ default ""
+ help
+ Extra flags passed onto ./configure when configuring
+
+ You can enter multiple arguments here, and arguments can contain spaces
+ if they are properly quoted (or escaped, but prefer quotes). Eg.:
+ --with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space
+
+endif # ARCH_BINFMT_FLAT
diff --git a/config/binutils/binutils.in.2 b/config/binutils/binutils.in.2
deleted file mode 100644
index 227f3d8..0000000
--- a/config/binutils/binutils.in.2
+++ /dev/null
@@ -1,82 +0,0 @@
-# elf2flt options
-
-if ARCH_BINFMT_FLAT
-
-config ELF2FLT_REQUIRES
- def_bool y
- select ZLIB
- select BINUTILS_FORCE_LD_BFD_ONLY
-
-comment "elf2flt"
-
-choice
- bool
- prompt "elf2flt version"
-
-config ELF2FLT_GIT
- bool
- prompt "git"
- depends on CONFIGURE_has_git
- help
- Grab the latest version of elf2flt from the CVS repository
-
-config ELF2FLT_CUSTOM
- bool
- prompt "Custom elf2flt"
- depends on EXPERIMENTAL || !CONFIGURE_has_git
- help
- The choosen elf2flt version shall be not downloaded. Instead use
- a custom location to get the source.
-
-endchoice
-
-if ELF2FLT_GIT
-
-config ELF2FLT_GIT_CSET
- string
- prompt "git cset"
- default "4820f0dbb77cd6564d5fa0817218fe2a1fb99f32"
- help
- Enter the git changeset to use.
-
- The default currently points to the HEAD of the git tree.
-
-endif # ELF2FLT_GIT
-
-config ELF2FLT_VERSION
- string
- default ELF2FLT_GIT_CSET if ELF2FLT_GIT
- default ELF2FLT_CUSTOM_VERSION if ELF2FLT_CUSTOM
-
-if ELF2FLT_CUSTOM
-
-config ELF2FLT_CUSTOM_LOCATION
- string
- prompt "Full path to custom elf2flt source"
- help
- Enter the path to the directory or tarball of your source for elf2flt.
-
- If the path is a tarball, it should extract to: <name>-<version>/
- where the name is this component, elf2flt, and the version is set
- below in the custom version string.
-
-config ELF2FLT_CUSTOM_VERSION
- string
- prompt "elf2flt custom version number"
- help
- Enter the version number for your custom elf2flt.
-
-endif # ELF2FLT_CUSTOM
-
-config ELF2FLT_EXTRA_CONFIG_ARRAY
- string
- prompt "elf2flt extra config"
- default ""
- help
- Extra flags passed onto ./configure when configuring
-
- You can enter multiple arguments here, and arguments can contain spaces
- if they are properly quoted (or escaped, but prefer quotes). Eg.:
- --with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space
-
-endif # ARCH_BINFMT_FLAT
diff --git a/config/cc.in b/config/cc.in
index 5603738..3a16805 100644
--- a/config/cc.in
+++ b/config/cc.in
@@ -2,26 +2,9 @@
menu "C compiler"
-config CC
- string
- default "gcc"
-
-config CC_VERSION
- string
-
-config CC_CORE_PASSES_NEEDED
- bool
- select CC_CORE_PASS_1_NEEDED
- select CC_CORE_PASS_2_NEEDED
-
-config CC_CORE_PASS_1_NEEDED
- bool
-
-config CC_CORE_PASS_2_NEEDED
+config CC_CORE_NEEDED
bool
-source "config.gen/cc.in"
-
config CC_SUPPORT_CXX
bool
@@ -43,6 +26,8 @@ config CC_SUPPORT_OBJCXX
config CC_SUPPORT_GOLANG
bool
+source "config/gen/cc.in"
+
comment "Additional supported languages:"
config CC_LANG_CXX
diff --git a/config/cc/gcc.in b/config/cc/gcc.in
index caf254c..c9c1bad 100644
--- a/config/cc/gcc.in
+++ b/config/cc/gcc.in
@@ -1,204 +1,478 @@
-# Compiler options
-#
-## default y
-## select CC_SUPPORT_CXX if !LIBC_none
+# GCC options
+
+## select CC_SUPPORT_CXX
## select CC_SUPPORT_FORTRAN
-## select CC_SUPPORT_JAVA
+## select CC_SUPPORT_JAVA if !GCC_7_or_later && OBSOLETE
## select CC_SUPPORT_ADA
## 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+
+# GCC6 requires ISL 0.14+ (it says 0.14-0.16, but accepts newer ISL as well)
+# 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_18_or_older if ISL_NEEDED && GCC_5_or_later && !GCC_6_or_later
+# GCC4.9 requires ISL 0.10..0.15
+## select ISL_REQUIRE_0_15_or_older if ISL_NEEDED && GCC_4_9_or_later && !GCC_5_or_later
+
## help gcc is the full-blown GNU compiler. This is what most people will choose.
## help
## help gcc supports many languages, a powerful code parser, optimised binary
## help output, and lots of other features.
-config CC_GCC_CUSTOM
- bool
- prompt "Custom gcc"
- depends on EXPERIMENTAL
- select CC_GCC_latest
- help
- The choosen gcc version shall be not downloaded. Instead use
- a custom location to get the source.
+# Only enable gcc's support for plugins if binutils has it as well
+# They are useful only when doing LTO, but it does no harm enabling
+# them even without LTO.
+config CC_GCC_ENABLE_PLUGINS
+ def_bool y
+ depends on BINUTILS_PLUGINS
+ depends on ! STATIC_TOOLCHAIN
-if CC_GCC_CUSTOM
+# If binutils installs gold, enable support for gold in gcc
+config CC_GCC_GOLD
+ def_bool y
+ depends on BINUTILS_GOLD_INSTALLED
-config CC_GCC_CUSTOM_LOCATION
- string
- prompt "Full path to custom gcc source"
- help
- Enter the path to the directory or tarball of your source for gcc.
+config CC_GCC_HAS_LIBMPX
+ def_bool y
+ depends on GCC_5_or_later
- If the path is a tarball, it should extract to: <name>-<version>/
- where the name is this component, gcc, and the version is set
- below in the custom version string.
+config CC_LANG_JAVA_USE_ECJ
+ def_bool y
+ depends on CC_LANG_JAVA
-config CC_GCC_CUSTOM_VERSION
- string
- prompt "Custom GCC Version"
+config CC_GCC_ENABLE_CXX_FLAGS
+ string "Flags to pass to --enable-cxx-flags"
+ default ""
help
- Enter the version number for your custom gcc.
-
-config CC_GCC_VERSION
- string
- default CC_GCC_CUSTOM_VERSION
-
-endif #CC_GCC_CUSTOM
-
-if ! CC_GCC_CUSTOM
+ Enter here the value of the gcc's ./configure option --enable-cxx-flags.
+ Leave empty if you don't know better.
+
+ Note: just pass in the option _value_, that is only the part that goes
+ after the '=' sign.
+
+config CC_GCC_CORE_EXTRA_CONFIG_ARRAY
+ string "Core gcc extra config"
+ default ""
+ depends on CC_CORE_NEEDED
+ help
+ Extra flags to pass onto ./configure when configuring the core gcc.
+
+ The core gcc is a stripped down, C-only compiler needed to build
+ the C library. Kinda bootstrap gcc, if you wish.
+
+ You can enter multiple arguments here, and arguments can contain spaces
+ if they are properly quoted (or escaped, but prefer quotes). Eg.:
+ --with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space
+
+config CC_GCC_EXTRA_CONFIG_ARRAY
+ string "gcc extra config"
+ default ""
+ help
+ Extra flags to pass onto ./configure when configuring gcc.
+
+ You can enter multiple arguments here, and arguments can contain spaces
+ if they are properly quoted (or escaped, but prefer quotes). Eg.:
+ --with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space
+
+config CC_GCC_MULTILIB_LIST
+ string "List of multilib variants"
+ depends on MULTILIB
+ default "m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single" if GCC_V_11 && ARCH_SH
+ help
+ Architecture-specific option of expanding or restricting the list of
+ the multilib variants to be built. Refer to GCC installation manual
+ for the format of this option for a particular architecture.
+ Leave empty to use the default list for this architecture.
-config CC_GCC_SHOW_LINARO
+config STATIC_TOOLCHAIN
bool
- prompt "Show Linaro versions"
+ select CC_GCC_STATIC_LIBSTDCXX
+
+config CC_GCC_STATIC_LIBSTDCXX
+ bool "Link libstdc++ statically into the gcc binary"
+ default y
+ depends on CONFIGURE_has_static_link || CANADIAN || CROSS_NATIVE
+ select WANTS_STATIC_LINK if CROSS || NATIVE
+ select WANTS_STATIC_LINK_CXX if CROSS || NATIVE
+ help
+ Newer gcc versions require some c++ libraries. So statically
+ linking libstdc++ increases the likeliness that the gcc binary will
+ run on machines other than the one which it was built on, without
+ having to worry about distributing the matching version of libstdc++
+ along with it.
+
+config CC_GCC_SYSTEM_ZLIB
+ bool "Use system zlib"
+ help
+ Do not use bundled zlib, and use the zlib already available for
+ the host (eg. the system library).
+
+ If zlib is built as a companion library, selecting this option
+ will use it.
+
+ If you want to build a static toolchain, you will need to also
+ install the static version of zlib for your host.
+
+ If unsure, say 'n'.
+
+config CC_GCC_CONFIG_TLS
+ tristate
+ prompt "Configure TLS (Thread Local Storage)"
+ default m
+ help
+ Specify that the target supports TLS (Thread Local Storage). Usually
+ configure can correctly determine if TLS is supported. In cases where
+ it guesses incorrectly, TLS can be explicitly enabled or disabled.
+ This can happen if the assembler supports TLS but the C library does
+ not, or if the assumptions made by the configure test are incorrect.
+
+ Option | TLS use | Associated ./configure switch
+ ---------+--------------------+--------------------------------
+ Y | forcibly used | --enable-tls
+ M | auto | (none, ./configure decides)
+ N | forcibly not used | --disable-tls
+
+ If unsure, say 'M'.
+
+#-----------------------------------------------------------------------------
+# Optimisation features
+
+comment "Optimisation features"
+
+# Defined in config/cc/gcc.in
+# For graphite: gcc needs cloog and isl
+# In >= gcc-5.x, cloog is no longer needed, but isl is.
+config CC_GCC_USE_GRAPHITE
+ bool "Enable GRAPHITE loop optimisations"
+ default y
+ select CLOOG_NEEDED if !GCC_5_or_later
+ select ISL_NEEDED
+ help
+ Enable the GRAPHITE loop optimsations.
+
+ On some systems (eg. Cygwin), CLooG and ISL (required to enable
+ GRAPHITE) may not build properly (yet), so you'll have to say 'N'
+ here (or help debug the issues)
+
+ TODO: Is this still true on Cygwin?
+
+# The way LTO works is a bit twisted.
+# See: http://gcc.gnu.org/wiki/LinkTimeOptimization#Requirements
+# Basically:
+# - if binutils has plugins: LTO is handled by ld/gold by loading
+# the plugin when linking
+# - if binutils does not have plugins: LTO is handled by collect2
+# In any case, LTO support does not depend on plugins, but takes
+# advantage of it
+config CC_GCC_USE_LTO
+ bool "Enable LTO"
+ default y
+ depends on ! STATIC_TOOLCHAIN
+ select ZLIB_NEEDED
+ help
+ Enable the Link Time Optimisations.
+
+config CC_GCC_LTO_ZSTD
+ tristate
+ prompt "Support LTO compression with zstd"
+ default m
+ depends on CC_GCC_USE_LTO
+ depends on GCC_10_or_later
+ depends on ! STATIC_TOOLCHAIN
help
- Linaro is maintaining some advanced/more stable/experimental versions
- of gcc, especially for the ARM architecture.
+ Support zstd compression for LTO object files. This will require
+ libzstd to be installed when using the toolchain
- Those versions have not been blessed by the gcc comunity (nor have they
- been cursed either!), but they look to be pretty much stable, and even
- more stable than the upstream versions. YMMV...
+ Option | ZSTD use | Associated ./configure switch
+ ---------+--------------------+--------------------------------
+ Y | forcibly used | --with-zstd
+ M | auto | (none, ./configure decides)
+ N | forcibly not used | --without-zstd
- If you do not know what this Linaro stuff is, then simply say 'n' here,
- and rest in peace. OTOH, if you know what you are doing, you will be
- able to use and enjoy :-) the Linaro versions by saying 'y' here.
+ If unsure, say 'M'
- Linaro: http://www.linaro.org/
+#-----------------------------------------------------------------------------
+comment "Settings for libraries running on target"
-choice
+config CC_GCC_ENABLE_TARGET_OPTSPACE
bool
- prompt "gcc version"
-
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
+ prompt "Optimize gcc libs for size"
+ default y
+ help
+ Pass --enable-target-optspace to crossgcc's configure.
+
+ This will compile crossgcc's libs with -Os.
-config CC_GCC_V_linaro_6_3
+config CC_GCC_LIBMUDFLAP
bool
- prompt "linaro-6.3-2017.02"
- depends on CC_GCC_SHOW_LINARO
- select CC_GCC_6
-
-config CC_GCC_V_6_3_0
+ prompt "Compile libmudflap"
+ help
+ libmudflap is a pointer-use checking tool, which can detect
+ various mis-usages of pointers in C and (to some extents) C++.
+
+ You should say 'N' here, as libmduflap generates instrumented
+ code (thus it is a bit bigger and a bit slower) and requires
+ re-compilation and re-link, while it exists better run-time
+ alternatives (eg. DUMA, dmalloc...) that need neither re-
+ compilation nor re-link.
+
+config CC_GCC_LIBGOMP
bool
- prompt "6.3.0"
- select CC_GCC_6
+ prompt "Compile libgomp"
+ depends on !THREADS_NONE
+ help
+ libgomp is "the GNU implementation of the OpenMP Application Programming
+ Interface (API) for multi-platform shared-memory parallel programming in
+ C/C++ and Fortran". See:
+ http://gcc.gnu.org/onlinedocs/libgomp/
-config CC_GCC_V_linaro_5_4
- bool
- prompt "linaro-5.4-2017.01"
- depends on CC_GCC_SHOW_LINARO
- select CC_GCC_5
+ GNU OpenMP support requires threading.
-config CC_GCC_V_5_4_0
- bool
- prompt "5.4.0"
- select CC_GCC_5
+ The default is 'N'. Say 'Y' if you need it, and report success/failure.
-config CC_GCC_V_linaro_4_9
+config CC_GCC_LIBSSP
+ tristate
+ prompt "Compile libssp"
+ help
+ libssp is the run-time Stack-Smashing Protection library.
+
+ Option | SSP implementation | libssp built | Associated ./configure switch
+ ---------+---------------------+--------------+-------------------------------
+ Y | libssp (forced) | yes | --enable-libssp
+ M | libc (if available) | yes | (none, ./configure decides)
+ N | libc (forced) | no | --disable-libssp
+
+ The default is 'N'. Say 'Y' or 'M' if you need it, and report success/failure.
+
+config CC_GCC_LIBQUADMATH
bool
- prompt "linaro-4.9-2017.01"
- depends on CC_GCC_SHOW_LINARO
- select CC_GCC_4_9
+ prompt "Compile libquadmath"
+ help
+ libquadmath is a library which provides quad-precision mathematical
+ functions on targets supporting the __float128 datatype. See:
+ http://gcc.gnu.org/onlinedocs/libquadmath/
+
+ The default is 'N'. Say 'Y' if you need it, and report success/failure.
-config CC_GCC_V_4_9_4
+config CC_GCC_LIBSANITIZER
bool
- prompt "4.9.4"
- select CC_GCC_4_9
+ prompt "Compile libsanitizer"
+ depends on THREADS_NATIVE
+ 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:
+ - memory access patterns (out-of-bonds, use-after-free)
+ - racy data accesses (in multi-threaded programs)
-config CC_GCC_V_linaro_4_8
- bool
- prompt "linaro-4.8-2015.06 (OBSOLETE)"
- depends on CC_GCC_SHOW_LINARO
- depends on OBSOLETE
- select CC_GCC_4_8
+ The default is 'N'. Say 'Y' if you need it, and report success/failure.
-config CC_GCC_V_4_8_5
+config CC_GCC_LIBMPX
bool
- prompt "4.8.5 (OBSOLETE)"
- select CC_GCC_4_8
- depends on OBSOLETE
+ default y
+ prompt "Compile libmpx"
+ depends on CC_GCC_HAS_LIBMPX
+ depends on ARCH_X86
+ # MUSL does not define libc types that GCC requires. Mingw lacks certain headers.
+ depends on !LIBC_MUSL && !LIBC_MINGW_W64
+ help
+ Enable GCC support for Intel Memory Protection Extensions (MPX).
+
+config CC_GCC_LIBSTDCXX_VERBOSE
+ tristate
+ default n if BARE_METAL
+ default m if !BARE_METAL
+ prompt "Verbose libstdc++"
+ depends on GCC_4_8_or_later
+ depends on CC_LANG_CXX
+ help
+ Write descriptive error messages on certain events.
+
+ Those messages cause the library to depend on the demangler and
+ standard I/O facilities, which will pull in alot of dependencies
+ on static builds.
+ On embedded systems this is often not wanted, and the std io
+ facilities might not work at all.
-endchoice
-endif # ! CC_GCC_CUSTOM
+#-----------------------------------------------------------------------------
-config CC_GCC_4_8
- bool
- select CC_GCC_4_8_or_later
+comment "Misc. obscure options."
-config CC_GCC_4_8_or_later
+config CC_CXA_ATEXIT
bool
+ prompt "Use __cxa_atexit"
+ default y
+ depends on ! BARE_METAL || LIBC_PROVIDES_CXA_ATEXIT
+ help
+ If you get the missing symbol "__cxa_atexit" when building C++ programs,
+ you might want to try disabling this option.
+
+config CC_GCC_TM_CLONE_REGISTRY
+ tristate
+ prompt "Use TM clone registry"
+ depends on GCC_10_or_later
+ default m
+ help
+ Enable GCC transactional memory clone registry in libgcc.
-config CC_GCC_4_9
- bool
- select CC_GCC_4_9_or_later
+ Option | tm-clone-registry | Associated ./configure switch
+ ---------+--------------------+--------------------------------
+ Y | forcibly used | --enable-tm-clone-registry
+ M | auto | (none, ./configure decides)
+ N | forcibly not used | --disable-tm-clone-registry
-config CC_GCC_4_9_or_later
+config CC_GCC_DISABLE_PCH
bool
- select CC_GCC_4_8_or_later
-
-config CC_GCC_5
+ prompt "Do not build PCH"
+ help
+ Say 'y' here to not use Pre-Compiled Headers in the resulting toolchain.
+ at the expense of speed when compiling C++ code.
+
+ For some configurations (most notably canadian?), PCH are broken, and
+ need to be disabled. Please see:
+ http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40974
+
+config CC_GCC_SJLJ_EXCEPTIONS
+ tristate
+ prompt "Use sjlj for exceptions"
+ depends on ! BARE_METAL
+ default m
+ help
+ 'sjlj' is short for setjmp/longjmp.
+
+ On some architectures, stack unwinding during exception handling
+ works perfectly well without using sjlj, while on some others,
+ use of sjlj is required for proper stack unwinding.
+
+ Option | sjlj use | Associated ./configure switch
+ ---------+--------------------+--------------------------------
+ Y | forcibly used | --enable-sjlj-exceptions
+ M | auto | (none, ./configure decides)
+ N | forcibly not used | --disable-sjlj-exceptions
+
+ It should be safe to say 'M' or 'N'.
+
+ It can happen that ./configure is wrong in some cases. Known
+ case is for ARM big endian, where you should say 'N'.
+
+config CC_GCC_LDBL_128
+ tristate
+ prompt "Enable 128-bit long doubles"
+ default m
+ help
+ Saying 'Y' will force gcc to use 128-bit wide long doubles
+ Saying 'N' will force gcc to use 64-bit wide long doubles
+ Saying 'M' will let gcc choose (default is 128-bit for
+ glibc >= 2.4, 64-bit otherwise)
+
+ If in doubt, keep the default, ie. 'M'.
+
+config CC_GCC_BUILD_ID
bool
- select CC_GCC_5_or_later
- select CC_GCC_HAS_LIBMPX
-
-config CC_GCC_5_or_later
+ prompt "Enable build-id"
+ help
+ Tells GCC to pass --build-id option to the linker for all final
+ links (links performed without the -r or --relocatable option),
+ if the linker supports it. If you say 'y' here, but your linker
+ does not support --build-id option, a warning is issued and this
+ option is ignored.
+
+ The default is off.
+
+choice CC_GCC_LNK_HASH_STYLE_CHOICE
bool
- select CC_GCC_4_9_or_later
+ prompt "linker hash style"
-config CC_GCC_6
+config CC_GCC_LNK_HASH_STYLE_DEFAULT
bool
- select CC_GCC_6_or_later
- select CC_GCC_HAS_LIBMPX
+ prompt "Default"
+ help
+ Do not specify any value, and use the default value (sysv).
-config CC_GCC_6_or_later
+config CC_GCC_LNK_HASH_STYLE_SYSV
bool
- select CC_GCC_5_or_later
+ prompt "sysv"
+ help
+ Force use of the SYSV hash style.
-config CC_GCC_latest
+config CC_GCC_LNK_HASH_STYLE_GNU
bool
- select CC_GCC_6_or_later
- select CC_GCC_HAS_LIBMPX
+ prompt "gnu"
+ help
+ Force use of the GNU hash style.
-# Only enable gcc's support for plugins if binutils has it as well
-# They are useful only when doing LTO, but it does no harm enabling
-# them even without LTO.
-config CC_GCC_ENABLE_PLUGINS
+config CC_GCC_LNK_HASH_STYLE_BOTH
bool
- depends on BINUTILS_PLUGINS
- depends on ! STATIC_TOOLCHAIN
- default y
+ prompt "both"
+ help
+ Force use of both hash styles.
-# If binutils installs gold, enable support for gold in gcc
-config CC_GCC_GOLD
- bool
- depends on BINUTILS_GOLD_INSTALLED
- default y
+endchoice # CC_GCC_LNK_HASH_STYLE_CHOICE
-config CC_GCC_HAS_LIBMPX
- bool
+config CC_GCC_LNK_HASH_STYLE
+ string
+ default "" if CC_GCC_LNK_HASH_STYLE_DEFAULT
+ default "sysv" if CC_GCC_LNK_HASH_STYLE_SYSV
+ default "gnu" if CC_GCC_LNK_HASH_STYLE_GNU
+ default "both" if CC_GCC_LNK_HASH_STYLE_BOTH
+
+choice CC_GCC_DEC_FLOATS_CHOICE
+ bool "Decimal floats"
+ default CC_GCC_DEC_FLOATS_AUTO
+ help
+ Choose what type of decimal floats to support.
+
+ Note that using decimal floats requires a C library that provides
+ support for fenv (namely, the fenv.h header). This is the case
+ for (e)glibc, and uClibc on x86/32. For other C libraries, or
+ uClibc on other archs, this might not be the case, so you should
+ disable support for decimal floats.
+
+ The default is to let ./configure decide.
+
+config CC_GCC_DEC_FLOATS_AUTO
+ bool "auto"
+ help
+ Let ./configure decide. If you say 'y' here, gcc will default to:
+ - 'bid' for x86 (32- and 64-bit)
+ - 'dpd' for powerpc
+ - 'no' for the other architectures
-if ! CC_GCC_CUSTOM
+config CC_GCC_DEC_FLOATS_BID
+ bool "bid"
+ help
+ Use the 'binary integer decimal' format for decimal floats.
+
+config CC_GCC_DEC_FLOATS_DPD
+ bool "dpd"
+ help
+ Use the 'densely packed decimal' for decimal floats.
+
+config CC_GCC_DEC_FLOATS_NO
+ bool "no"
+ help
+ Do not support decimal floats. The default.
+
+endchoice # CC_GCC_DEC_FLOATS_CHOICE
-config CC_GCC_VERSION
+config CC_GCC_DEC_FLOATS
string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "linaro-6.3-2017.02" if CC_GCC_V_linaro_6_3
- default "6.3.0" if CC_GCC_V_6_3_0
- default "linaro-5.4-2017.01" if CC_GCC_V_linaro_5_4
- default "5.4.0" if CC_GCC_V_5_4_0
- default "linaro-4.9-2017.01" if CC_GCC_V_linaro_4_9
- default "4.9.4" if CC_GCC_V_4_9_4
- default "linaro-4.8-2015.06" if CC_GCC_V_linaro_4_8
- default "4.8.5" if CC_GCC_V_4_8_5
-
-endif # ! CC_GCC_CUSTOM
+ default "" if CC_GCC_DEC_FLOATS_AUTO
+ default "bid" if CC_GCC_DEC_FLOATS_BID
+ default "dpd" if CC_GCC_DEC_FLOATS_DPD
+ default "no" if CC_GCC_DEC_FLOATS_NO
-config CC_LANG_JAVA_USE_ECJ
+#-----------------------------------------------------------------------------
+
+config CC_GCC_HAS_ARCH_OPTIONS
bool
- default y
- depends on CC_LANG_JAVA
-source "config/cc/gcc.in.2"
+comment "archictecture-specific options"
+ depends on CC_GCC_HAS_ARCH_OPTIONS
+
+if ARCH_MIPS
+source "config/cc/gcc.in.mips"
+endif # ARCH_MIPS
diff --git a/config/cc/gcc.in.2 b/config/cc/gcc.in.2
deleted file mode 100644
index b4c5528..0000000
--- a/config/cc/gcc.in.2
+++ /dev/null
@@ -1,396 +0,0 @@
-# gcc configuration options
-
-config CC_GCC_ENABLE_CXX_FLAGS
- string
- prompt "Flags to pass to --enable-cxx-flags"
- default ""
- help
- Enter here the value of the gcc's ./configure option --enable-cxx-flags.
- Leave empty if you don't know better.
-
- Note: just pass in the option _value_, that is only the part that goes
- after the '=' sign.
-
-config CC_GCC_CORE_EXTRA_CONFIG_ARRAY
- string
- prompt "Core gcc extra config"
- default ""
- depends on CC_CORE_PASS_1_NEEDED || CC_CORE_PASS_2_NEEDED
- help
- Extra flags to pass onto ./configure when configuring the core gcc.
-
- The core gcc is a stripped down, C-only compiler needed to build
- the C library. Kinda bootstrap gcc, if you wish.
-
- You can enter multiple arguments here, and arguments can contain spaces
- if they are properly quoted (or escaped, but prefer quotes). Eg.:
- --with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space
-
-config CC_GCC_EXTRA_CONFIG_ARRAY
- string
- prompt "gcc extra config"
- default ""
- help
- Extra flags to pass onto ./configure when configuring gcc.
-
- You can enter multiple arguments here, and arguments can contain spaces
- if they are properly quoted (or escaped, but prefer quotes). Eg.:
- --with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space
-
-config CC_GCC_MULTILIB_LIST
- string
- prompt "List of multilib variants"
- depends on MULTILIB
- help
- Architecture-specific option of expanding or restricting the list of
- the multilib variants to be built. Refer to GCC installation manual
- for the format of this option for a particular architecture.
- Leave empty to use the default list for this architecture.
-
-config CC_GCC_TARGET_FINAL
- bool
- prompt "Use the default targets all and install for the final compiler"
- default n
- depends on BARE_METAL
- help
- The final GCC for a bare metal system is built by the core gcc script.
- This script does a lot of tricks to build the core gcc, which are not
- required for the final gcc build. If you set this flag to true, all the
- tricks are not done and the compiler is build with all/install.
-
-config STATIC_TOOLCHAIN
- bool
- select CC_GCC_STATIC_LIBSTDCXX
-
-config CC_GCC_STATIC_LIBSTDCXX
- bool
- prompt "Link libstdc++ statically into the gcc binary"
- default y
- depends on CONFIGURE_has_static_link
- select WANTS_STATIC_LINK
- help
- Newer gcc versions require some c++ libraries. So statically
- linking libstdc++ increases the likeliness that the gcc binary will
- run on machines other than the one which it was built on, without
- having to worry about distributing the matching version of libstdc++
- along with it.
-
-config CC_GCC_SYSTEM_ZLIB
- bool
- prompt "Use system zlib"
- help
- Do not use bundled zlib, and use the zlib already available for
- the host (eg. the system library).
-
- If zlib is built as a companion library, selecting this option
- will use it.
-
- If you want to build a static toolchain, you will need to also
- install the static version of zlib for your host.
-
- If unsure, say 'n'.
-
-config CC_GCC_CONFIG_TLS
- tristate
- prompt "Configure TLS (Thread Local Storage)"
- default m
- help
- Specify that the target supports TLS (Thread Local Storage). Usually
- configure can correctly determine if TLS is supported. In cases where
- it guesses incorrectly, TLS can be explicitly enabled or disabled.
- This can happen if the assembler supports TLS but the C library does
- not, or if the assumptions made by the configure test are incorrect.
-
- Option | TLS use | Associated ./configure switch
- ---------+--------------------+--------------------------------
- Y | forcibly used | --enable-tls
- M | auto | (none, ./configure decides)
- N | forcibly not used | --disable-tls
-
- If unsure, say 'M'.
-
-#-----------------------------------------------------------------------------
-# Optimisation features
-
-comment "Optimisation features"
-
-# Defined in config/cc/gcc.in
-# For graphite: gcc needs cloog and isl
-# In >= gcc-5.x, cloog is no longer needed, but isl is.
-# Prompt in config/cc/gcc.in.2
-config CC_GCC_USE_GRAPHITE
- bool "Enable GRAPHITE loop optimisations"
- default y
- select CLOOG_NEEDED if !CC_GCC_5_or_later
- select ISL_NEEDED
- help
- Enable the GRAPHITE loop optimsations.
-
- On some systems (eg. Cygwin), CLooG and ISL (required to enable
- GRAPHITE) may not build properly (yet), so you'll have to say 'N'
- here (or help debug the issues)
-
- TODO: Is this still true on Cygwin?
-
-# The way LTO works is a bit twisted.
-# See: http://gcc.gnu.org/wiki/LinkTimeOptimization#Requirements
-# Basically:
-# - if binutils has plugins: LTO is handled by ld/gold by loading
-# the plugin when linking
-# - if binutils does not have plugins: LTO is handled by collect2
-# In any case, LTO support does not depend on plugins, but takes
-# advantage of it
-config CC_GCC_USE_LTO
- bool "Enable LTO"
- default y
- depends on ! STATIC_TOOLCHAIN
- help
- Enable the Link Time Optimisations.
-
-#-----------------------------------------------------------------------------
-comment "Settings for libraries running on target"
-
-config CC_GCC_ENABLE_TARGET_OPTSPACE
- bool
- prompt "Optimize gcc libs for size"
- default y
- help
- Pass --enable-target-optspace to crossgcc's configure.
-
- This will compile crossgcc's libs with -Os.
-
-config CC_GCC_LIBMUDFLAP
- bool
- prompt "Compile libmudflap"
- help
- libmudflap is a pointer-use checking tool, which can detect
- various mis-usages of pointers in C and (to some extents) C++.
-
- You should say 'N' here, as libmduflap generates instrumented
- code (thus it is a bit bigger and a bit slower) and requires
- re-compilation and re-link, while it exists better run-time
- alternatives (eg. DUMA, dmalloc...) that need neither re-
- compilation nor re-link.
-
-config CC_GCC_LIBGOMP
- bool
- prompt "Compile libgomp"
- depends on !THREADS_NONE
- help
- libgomp is "the GNU implementation of the OpenMP Application Programming
- Interface (API) for multi-platform shared-memory parallel programming in
- C/C++ and Fortran". See:
- http://gcc.gnu.org/onlinedocs/libgomp/
-
- GNU OpenMP support requires threading.
-
- The default is 'N'. Say 'Y' if you need it, and report success/failure.
-
-config CC_GCC_LIBSSP
- bool
- prompt "Compile libssp"
- help
- libssp is the run-time Stack-Smashing Protection library.
-
- The default is 'N'. Say 'Y' if you need it, and report success/failure.
-
-config CC_GCC_LIBQUADMATH
- bool
- prompt "Compile libquadmath"
- help
- libquadmath is a library which provides quad-precision mathematical
- functions on targets supporting the __float128 datatype. See:
- http://gcc.gnu.org/onlinedocs/libquadmath/
-
- The default is 'N'. Say 'Y' if you need it, and report success/failure.
-
-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)
- help
- libsanitizer is a library which provides run-time sanitising of either
- or both of:
- - memory access patterns (out-of-bonds, use-after-free)
- - racy data accesses (in multi-threaded programs)
-
- The default is 'N'. Say 'Y' if you need it, and report success/failure.
-
-config CC_GCC_LIBMPX
- bool
- default y
- prompt "Compile libmpx"
- depends on CC_GCC_HAS_LIBMPX
- depends on ARCH_x86
- # MUSL does not define libc types that GCC requires. Mingw lacks certain headers.
- depends on !LIBC_musl && ! LIBC_mingw
- help
- Enable GCC support for Intel Memory Protection Extensions (MPX).
-
-#-----------------------------------------------------------------------------
-
-comment "Misc. obscure options."
-
-config CC_CXA_ATEXIT
- bool
- prompt "Use __cxa_atexit"
- default y
- depends on ! BARE_METAL || LIBC_PROVIDES_CXA_ATEXIT
- help
- If you get the missing symbol "__cxa_atexit" when building C++ programs,
- you might want to try disabling this option.
-
-config CC_GCC_DISABLE_PCH
- bool
- prompt "Do not build PCH"
- help
- Say 'y' here to not use Pre-Compiled Headers in the resulting toolchain.
- at the expense of speed when compiling C++ code.
-
- For some configurations (most notably canadian?), PCH are broken, and
- need to be disabled. Please see:
- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40974
-
-config CC_GCC_SJLJ_EXCEPTIONS
- tristate
- prompt "Use sjlj for exceptions"
- depends on ! BARE_METAL
- default m
- help
- 'sjlj' is short for setjmp/longjmp.
-
- On some architectures, stack unwinding during exception handling
- works perfectly well without using sjlj, while on some others,
- use of sjlj is required for proper stack unwinding.
-
- Option | sjlj use | Associated ./configure switch
- ---------+--------------------+--------------------------------
- Y | forcibly used | --enable-sjlj-exceptions
- M | auto | (none, ./configure decides)
- N | forcibly not used | --disable-sjlj-exceptions
-
- It should be safe to say 'M' or 'N'.
-
- It can happen that ./configure is wrong in some cases. Known
- case is for ARM big endian, where you should say 'N'.
-
-config CC_GCC_LDBL_128
- tristate
- prompt "Enable 128-bit long doubles"
- default m
- help
- Saying 'Y' will force gcc to use 128-bit wide long doubles
- Saying 'N' will force gcc to use 64-bit wide long doubles
- Saying 'M' will let gcc choose (default is 128-bit for
- glibc >= 2.4, 64-bit otherwise)
-
- If in doubt, keep the default, ie. 'M'.
-
-config CC_GCC_BUILD_ID
- bool
- prompt "Enable build-id"
- help
- Tells GCC to pass --build-id option to the linker for all final
- links (links performed without the -r or --relocatable option),
- if the linker supports it. If you say 'y' here, but your linker
- does not support --build-id option, a warning is issued and this
- option is ignored.
-
- The default is off.
-
-choice CC_GCC_LNK_HASH_STYLE_CHOICE
- bool
- prompt "linker hash style"
- depends on BINUTILS_HAS_HASH_STYLE
-
-config CC_GCC_LNK_HASH_STYLE_DEFAULT
- bool
- prompt "Default"
- help
- Do not specify any value, and use the default value (sysv).
-
-config CC_GCC_LNK_HASH_STYLE_SYSV
- bool
- prompt "sysv"
- help
- Force use of the SYSV hash style.
-
-config CC_GCC_LNK_HASH_STYLE_GNU
- bool
- prompt "gnu"
- help
- Force use of the GNU hash style.
-
-config CC_GCC_LNK_HASH_STYLE_BOTH
- bool
- prompt "both"
- help
- Force use of both hash styles.
-
-endchoice # CC_GCC_LNK_HASH_STYLE_CHOICE
-
-config CC_GCC_LNK_HASH_STYLE
- string
- default "" if CC_GCC_LNK_HASH_STYLE_DEFAULT
- default "sysv" if CC_GCC_LNK_HASH_STYLE_SYSV
- default "gnu" if CC_GCC_LNK_HASH_STYLE_GNU
- default "both" if CC_GCC_LNK_HASH_STYLE_BOTH
-
-choice CC_GCC_DEC_FLOATS_CHOICE
- bool "Decimal floats"
- default CC_GCC_DEC_FLOATS_AUTO
- help
- Choose what type of decimal floats to support.
-
- Note that using decimal floats requires a C library that provides
- support for fenv (namely, the fenv.h header). This is the case
- for (e)glibc, and uClibc on x86/32. For other C libraries, or
- uClibc on other archs, this might not be the case, so you should
- disable support for decimal floats.
-
- The default is to let ./configure decide.
-
-config CC_GCC_DEC_FLOAT_AUTO
- bool "auto"
- help
- Let ./configure decide. If you say 'y' here, gcc will default to:
- - 'bid' for x86 (32- and 64-bit)
- - 'dpd' for powerpc
- - 'no' for the other architectures
-
-config CC_GCC_DEC_FLOAT_BID
- bool "bid"
- help
- Use the 'binary integer decimal' format for decimal floats.
-
-config CC_GCC_DEC_FLOAT_DPD
- bool "dpd"
- help
- Use the 'densely packed decimal' for decimal floats.
-
-config CC_GCC_DEC_FLOATS_NO
- bool "no"
- help
- Do not support decimal floats. The default.
-
-endchoice # CC_GCC_DEC_FLOATS_CHOICE
-
-config CC_GCC_DEC_FLOATS
- string
- default "" if CC_GCC_DEC_FLOATS_AUTO
- default "bid" if CC_GCC_DEC_FLOATS_BID
- default "dpd" if CC_GCC_DEC_FLOATS_DPD
- default "no" if CC_GCC_DEC_FLOATS_NO
-
-#-----------------------------------------------------------------------------
-
-config CC_GCC_HAS_ARCH_OPTIONS
- bool
-
-comment "archictecture-specific options"
- depends on CC_GCC_HAS_ARCH_OPTIONS
-
-if ARCH_mips
-source "config/cc/gcc.in.mips"
-endif # ARCH_mips
diff --git a/config/comp_libs.in b/config/comp_libs.in
new file mode 100644
index 0000000..6dd8099
--- /dev/null
+++ b/config/comp_libs.in
@@ -0,0 +1,153 @@
+# Companion libraries config options
+# Those libraries are required for different versions of gcc,
+# and can be used by binutils and gdb (maybe others as well).
+
+menu "Companion libraries"
+
+config COMPLIBS_CHECK
+ bool
+ prompt "Check the companion libraries builds (!!! READ HELP!!!)"
+ help
+ It is highly recommended to check the newly built companion libraries.
+ Unfortunately, this is a very intensive task, and takes a loooong time.
+
+ Checking the newly built companion libraries is thus disabled by default,
+ but it is suggested that you check them at least once on your machine,
+ and if they work, disable the check on subsequent builds.
+
+ If you suspect that one (or more) of your companion libraries is the
+ cause for incorrectly generated code, you should answer 'Y' here.
+ Note however that this will take a really long time.
+
+source "config/gen/comp_libs.in"
+
+# FIXME this needs to have a list of options
+# [ ] libfoo for build
+# [ ] libfoo for host (if canadian)
+# [ ] libfoo for target
+# libfoo options -->
+#
+# Then have other packages *set default* for build/host
+# (but not select, so that user can utilize build's or host's system library)
+# and *select* the target (so that we build it if we must, and let user optionally
+# build it if he wants). Upon any of these options LIBFOO_{BUILD,HOST,TARGET}
+# being set, set LIBFOO_ENABLED and use that as a qualifier for submenu.
+# For now, LIBFOO_NEEDED symbol may or may not user-selectable, and COMP_LIBS_LIBFOO
+# determines whether it is actually built. LIBFOO_NEEDED is currently for build/host
+# and LIBFOO_TARGET (if exists) is for target.
+
+config LIBICONV_NEEDED
+ bool "Build local libiconv"
+ default y if CANADIAN || CROSS_NATIVE
+ select COMP_LIBS_LIBICONV
+
+config GETTEXT_NEEDED
+ bool "Build local gettext"
+ default y if CANADIAN || CROSS_NATIVE
+ select LIBICONV_NEEDED
+ select NCURSES_NEEDED
+ select COMP_LIBS_GETTEXT
+
+config GMP_NEEDED
+ def_bool y
+ select COMP_LIBS_GMP
+
+config GMP_TARGET
+ bool
+ select COMP_LIBS_GMP
+
+config MPFR_NEEDED
+ def_bool y
+ select GMP_NEEDED
+ select COMP_LIBS_MPFR
+
+config ISL_NEEDED
+ bool
+ select GMP_NEEDED
+ select COMP_LIBS_ISL
+
+config CLOOG_NEEDED
+ bool
+ select GMP_NEEDED
+ select COMP_LIBS_CLOOG
+
+config MPC_NEEDED
+ def_bool y
+ select GMP_NEEDED
+ select MPFR_NEEDED
+ select COMP_LIBS_MPC
+
+config LIBELF_NEEDED
+ bool
+ select COMP_LIBS_LIBELF
+
+config LIBELF_TARGET
+ bool
+ select COMP_LIBS_LIBELF
+
+config EXPAT_NEEDED
+ bool
+ select COMP_LIBS_EXPAT
+
+config EXPAT_TARGET
+ bool
+ select COMP_LIBS_EXPAT
+
+config NCURSES_NEEDED
+ bool
+ select COMP_LIBS_NCURSES
+
+config NCURSES_TARGET
+ bool
+ select COMP_LIBS_NCURSES
+
+config ZLIB_NEEDED
+ bool "Build local zlib"
+ select COMP_LIBS_ZLIB
+
+# FIXME remove these legacy knobs
+config LIBICONV
+ def_bool y
+ depends on LIBICONV_NEEDED
+
+config GETTEXT
+ def_bool y
+ depends on GETTEXT_NEEDED
+
+config GMP
+ def_bool y
+ depends on GMP_NEEDED
+
+config MPFR
+ def_bool y
+ depends on MPFR_NEEDED
+
+config ISL
+ def_bool y
+ depends on ISL_NEEDED
+
+config CLOOG
+ def_bool y
+ depends on CLOOG_NEEDED
+
+config MPC
+ def_bool y
+ depends on MPC_NEEDED
+
+config LIBELF
+ def_bool y
+ depends on LIBELF_NEEDED
+
+config EXPAT
+ def_bool y
+ depends on EXPAT_NEEDED
+
+config NCURSES
+ def_bool y
+ depends on NCURSES_NEEDED
+
+config ZLIB
+ def_bool y
+ depends on ZLIB_NEEDED
+
+endmenu
diff --git a/config/comp_libs/cloog.in b/config/comp_libs/cloog.in
new file mode 100644
index 0000000..01318b4
--- /dev/null
+++ b/config/comp_libs/cloog.in
@@ -0,0 +1 @@
+# CLooG options
diff --git a/config/comp_libs/expat.in b/config/comp_libs/expat.in
new file mode 100644
index 0000000..c435757
--- /dev/null
+++ b/config/comp_libs/expat.in
@@ -0,0 +1 @@
+# expat config file
diff --git a/config/comp_libs/gettext.in b/config/comp_libs/gettext.in
new file mode 100644
index 0000000..85e4387
--- /dev/null
+++ b/config/comp_libs/gettext.in
@@ -0,0 +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/config/comp_libs/gmp.in b/config/comp_libs/gmp.in
new file mode 100644
index 0000000..f49d1a7
--- /dev/null
+++ b/config/comp_libs/gmp.in
@@ -0,0 +1 @@
+# GMP options
diff --git a/config/comp_libs/gnuprumcu.in b/config/comp_libs/gnuprumcu.in
new file mode 100644
index 0000000..1ee9cfa
--- /dev/null
+++ b/config/comp_libs/gnuprumcu.in
@@ -0,0 +1,2 @@
+# gnuprumcu config file
+## depends on ARCH_PRU
diff --git a/config/comp_libs/isl.in b/config/comp_libs/isl.in
new file mode 100644
index 0000000..22b0cad
--- /dev/null
+++ b/config/comp_libs/isl.in
@@ -0,0 +1 @@
+# ISL options
diff --git a/config/comp_libs/libelf.in b/config/comp_libs/libelf.in
new file mode 100644
index 0000000..e1376c2
--- /dev/null
+++ b/config/comp_libs/libelf.in
@@ -0,0 +1 @@
+# libelf config file
diff --git a/config/comp_libs/libiconv.in b/config/comp_libs/libiconv.in
new file mode 100644
index 0000000..35cf1c4
--- /dev/null
+++ b/config/comp_libs/libiconv.in
@@ -0,0 +1 @@
+# libiconv options
diff --git a/config/comp_libs/mpc.in b/config/comp_libs/mpc.in
new file mode 100644
index 0000000..422935f
--- /dev/null
+++ b/config/comp_libs/mpc.in
@@ -0,0 +1,3 @@
+# 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/mpfr.in b/config/comp_libs/mpfr.in
new file mode 100644
index 0000000..733d9ed
--- /dev/null
+++ b/config/comp_libs/mpfr.in
@@ -0,0 +1 @@
+# MPFR options
diff --git a/config/companion_libs/ncurses.in b/config/comp_libs/ncurses.in
index 68ecbb7..4e7e6d4 100644
--- a/config/companion_libs/ncurses.in
+++ b/config/comp_libs/ncurses.in
@@ -1,26 +1,8 @@
-# expat config file
-
-choice
- bool
- prompt "ncurses version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config NCURSES_V_6_0
- bool
- prompt "6.0"
-
-endchoice
-
-config NCURSES_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "6.0" if NCURSES_V_6_0
+# ncurses config file
config NCURSES_NEW_ABI
bool "ncurses 6.0 ABI support"
- depends on EXPERIMENTAL
+ default y
help
This option allows you to use the new ncurses-6 ABI.
It's wise to leave this disabled and stick with the ncurses-5 ABI!
diff --git a/config/libc/newlib.in.2 b/config/comp_libs/newlib-nano.in
index 96bd22b..e7ef6f7 100644
--- a/config/libc/newlib.in.2
+++ b/config/comp_libs/newlib-nano.in
@@ -1,38 +1,90 @@
-# newlib second-part options
+# newlib-nano options
-config LIBC_NEWLIB_IO_C99FMT
+## 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
+## help licenses that make them easily usable on embedded products. Newlib-nano
+## help is only available in source form. It can be compiled for a wide
+## help array of processors, and will usually work on any architecture with
+## help the addition of a few low-level routines.
+
+config NEWLIB_NANO_GCC_LIBSTDCXX
+ bool
+ prompt "Compile libstdc++ newlib-nano variant"
+ default y
+ depends on CC_LANG_CXX
+ help
+ This option compiles an additional target libstdc++ for use with
+ newlib-nano.
+
+config NEWLIB_NANO_GCC_LIBSTDCXX_TARGET_CXXFLAGS
+ string
+ prompt "Target CXXFLAGS for libstdc++ newlib-nano variant"
+ default "-fno-exceptions"
+ help
+ Used to add extra CXXFLAGS when compiling the target libstdc++
+ newlib-nano library (e.g. -fno-exceptions).
+
+config NEWLIB_NANO_INSTALL_IN_TARGET
+ bool
+ prompt "Additionally install newlib-nano libs into TARGET dir"
+ help
+ This option will install a copy of newlib-nano lib*.a file in the target
+ dir but renamed with a nano.a suffix (eg: libc_nano.a) as some default
+ nano.spec files from newlib expect this setup.
+
+ Additionally the newlib-nano version of newlib.h will get copied to
+ include/newlib-nano/newlib.h.
+
+config LIBC_NEWLIB_NANO_TARGET_CFLAGS
+ string
+ prompt "Target CFLAGS for newlib"
+ default ""
+ help
+ Used to add specific options when compiling the target libraries
+ (eg. -ffunction-sections -fdata-sections), which can't be defined
+ in global TARGET_CFLAGS, because they shall be not used for the
+ gcc target libraries.
+ Note: Both TARGET_CFLAGS and LIBC_NEWLIB_NANO_TARGET_CFLAGS are used
+ to compile the libraries.
+
+ Leave blank if you don't know better.
+
+config LIBC_NEWLIB_NANO_IO_C99FMT
bool
prompt "Enable IOs on C99 formats"
help
Enable support for IOs on C99 formats.
-config LIBC_NEWLIB_IO_LL
+config LIBC_NEWLIB_NANO_IO_LL
bool
prompt "Enable IOs on long long"
help
Enable support for IOs on long long integers.
-config LIBC_NEWLIB_IO_FLOAT
+config LIBC_NEWLIB_NANO_IO_FLOAT
bool
prompt "Enable IOs on floats and doubles"
help
Enable support for IOs on floating point
values (float and double).
-config LIBC_NEWLIB_IO_LDBL
+config LIBC_NEWLIB_NANO_IO_LDBL
bool
prompt "Enable IOs on long doubles"
- depends on LIBC_NEWLIB_IO_FLOAT
+ depends on LIBC_NEWLIB_NANO_IO_FLOAT
help
Enable support for IOs on long doubles.
-config LIBC_NEWLIB_IO_POS_ARGS
+config LIBC_NEWLIB_NANO_IO_POS_ARGS
bool
prompt "Enable printf-family positional arg support"
help
Enable printf-family positional arg support.
-config LIBC_NEWLIB_FVWRITE_IN_STREAMIO
+config LIBC_NEWLIB_NANO_FVWRITE_IN_STREAMIO
bool
prompt "Vector buffer mechanism to support stream IO buffering"
default y
@@ -44,24 +96,22 @@ config LIBC_NEWLIB_FVWRITE_IN_STREAMIO
still acts as default for STDIN/STDOUT/STDERR even if this option
is specified.
-config LIBC_NEWLIB_UNBUF_STREAM_OPT
+config LIBC_NEWLIB_NANO_UNBUF_STREAM_OPT
bool
prompt "Optimize fprintf to unbuffered unix file"
- default y
help
NEWLIB does optimization when `fprintf to write only unbuffered unix
file'. It creates a temorary buffer to do the optimization that
increases stack consumption by about `BUFSIZ' bytes. Disabling this option
disables the optimization and saves size of text and stack.
-config LIBC_NEWLIB_FSEEK_OPTIMIZATION
+config LIBC_NEWLIB_NANO_FSEEK_OPTIMIZATION
bool
prompt "Fseek optimisation"
- default y
help
Disabling fseek optimisation can decrease code size.
-config LIBC_NEWLIB_DISABLE_SUPPLIED_SYSCALLS
+config LIBC_NEWLIB_NANO_DISABLE_SUPPLIED_SYSCALLS
bool
prompt "Disable the syscalls supplied with newlib"
help
@@ -70,65 +120,75 @@ config LIBC_NEWLIB_DISABLE_SUPPLIED_SYSCALLS
_write... If you plan to port newlib to a new
platform/board, say Yes.
-config LIBC_NEWLIB_REGISTER_FINI
+config LIBC_NEWLIB_NANO_REGISTER_FINI
bool
prompt "Enable finalization function registration using atexit"
help
Enable finalization function registration using atexit.
-config LIBC_NEWLIB_ATEXIT_DYNAMIC_ALLOC
+config LIBC_NEWLIB_NANO_ATEXIT_DYNAMIC_ALLOC
bool
prompt "Enable dynamic allocation of atexit entries"
default y
help
Enable dynamic allocation of atexit entries.
-config LIBC_NEWLIB_GLOBAL_ATEXIT
+config LIBC_NEWLIB_NANO_GLOBAL_ATEXIT
bool
prompt "Enable atexit data structure as global variable"
+ default y
help
Enable atexit data structure as global variable. By doing so it is
move out of _reent structure, and can be garbage collected if atexit
is not referenced.
-config LIBC_NEWLIB_LITE_EXIT
+config LIBC_NEWLIB_NANO_LITE_EXIT
bool
prompt "Enable lite exit"
+ 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.
-config LIBC_NEWLIB_REENT_SMALL
+config LIBC_NEWLIB_NANO_REENT_SMALL
bool
prompt "Enable small reentrant struct support"
+ default y
help
Enable small reentrant struct support.
-config LIBC_NEWLIB_MULTITHREAD
+config LIBC_NEWLIB_NANO_MULTITHREAD
bool
prompt "Enable support for multiple threads"
default y
help
Enable support for multiple threads.
-config LIBC_NEWLIB_EXTRA_SECTIONS
+config LIBC_NEWLIB_NANO_RETARGETABLE_LOCKING
+ bool
+ prompt "Enable retargetable locking"
+ help
+ Enable retargetable locking to allow the operating system to override
+ the dummy lock functions defined within the newlib.
+
+config LIBC_NEWLIB_NANO_EXTRA_SECTIONS
bool
prompt "Place each function & data element in their own section"
help
Place each function & data symbol in their own section. This allows
the linker to garbage collect unused symbols at link time.
-config LIBC_NEWLIB_WIDE_ORIENT
+config LIBC_NEWLIB_NANO_WIDE_ORIENT
bool
prompt "Allow wide C99 stream orientation"
- default y
+ default n
help
C99 states that each stream has an orientation, wide or byte. This
feature is possibly unnecessary for embedded systems which only do
byte input/output operations on stream. Disabling this feature can
decrease code size.
-config LIBC_NEWLIB_ENABLE_TARGET_OPTSPACE
+config LIBC_NEWLIB_NANO_ENABLE_TARGET_OPTSPACE
bool
prompt "Optimize newlib for size"
default y
@@ -137,7 +197,7 @@ config LIBC_NEWLIB_ENABLE_TARGET_OPTSPACE
This will compile newlib with -Os.
-config LIBC_NEWLIB_LTO
+config LIBC_NEWLIB_NANO_LTO
bool
prompt "Enable Link Time Optimization"
depends on CC_GCC_USE_LTO
@@ -147,10 +207,10 @@ config LIBC_NEWLIB_LTO
application's link line to keep the RETURN assembler macro together
with it's consumers.
-config LIBC_NEWLIB_NANO_MALLOC
+config LIBC_NEWLIB_NANO_NANO_MALLOC
bool
prompt "Enable Nano Malloc"
- depends on LIBC_NEWLIB_2_1_or_later
+ default y
help
NEWLIB has two implementations of malloc family's functions, one in
`mallocr.c' and the other one in `nano-mallocr.c'. This options
@@ -158,17 +218,17 @@ config LIBC_NEWLIB_NANO_MALLOC
with very limited memory. Note that this implementation does not
support `--enable-malloc-debugging' any more.
-config LIBC_NEWLIB_NANO_FORMATTED_IO
+config LIBC_NEWLIB_NANO_NANO_FORMATTED_IO
bool
prompt "Enable Nano Formatted I/O"
- depends on LIBC_NEWLIB_2_2_or_later
+ default y
help
This builds NEWLIB with a special implementation of formatted I/O
functions, designed to lower the size of application on small systems
with size constraint issues. This option does not affect wide-char
formatted I/O functions.
-config LIBC_NEWLIB_EXTRA_CONFIG_ARRAY
+config LIBC_NEWLIB_NANO_EXTRA_CONFIG_ARRAY
string
prompt "Extra config for newlib"
default ""
diff --git a/config/comp_libs/picolibc.in b/config/comp_libs/picolibc.in
new file mode 100644
index 0000000..99f0e45
--- /dev/null
+++ b/config/comp_libs/picolibc.in
@@ -0,0 +1,132 @@
+# picolibc options
+
+## depends on BARE_METAL && CONFIGURE_has_meson && CONFIGURE_has_ninja
+
+## help This option adds Picolibc to an existing configuration which may have
+## help a C library, allowing you to install both and select between them
+## help when compiling applications using the toolchain
+## help
+## help Picolibc is a C library intended for use on embedded systems. It is a
+## help conglomeration of several library parts, all under BSD-compatible software
+## help licenses that make them easily usable on embedded products.
+
+config LIBC_PICOLIBC_GCC_LIBSTDCXX
+ bool
+ prompt "Compile libstdc++ picolibc variant"
+ default y
+ depends on CC_LANG_CXX
+ help
+ This option compiles an additional target libstdc++ for use with
+ picolibc. This version is linked when "--specs=picolibcpp.specs"
+ is specified.
+
+config LIBC_PICOLIBC_CXA_ATEXIT
+ def_bool y
+ select LIBC_PROVIDES_CXA_ATEXIT
+
+config LIBC_PICOLIBC_TARGET_CFLAGS
+ string
+ prompt "Target CFLAGS for picolibc"
+ default ""
+ help
+ Used to add specific options when compiling the target libraries
+ (eg. -ffunction-sections -fdata-sections), which can't be defined
+ in global TARGET_CFLAGS, because they shall be not used for the
+ gcc target libraries.
+ Note: Both TARGET_CFLAGS and LIBC_PICOLIBC_TARGET_CFLAGS are used
+ to compile the libraries.
+
+ Leave blank if you don't know better.
+
+config LIBC_PICOLIBC_IO_C99FMT
+ bool
+ prompt "Enable IOs on C99 formats"
+ default y
+ help
+ Enable support for IOs on C99 formats.
+
+config LIBC_PICOLIBC_REGISTER_FINI
+ bool
+ prompt "Enable finalization function registration using atexit"
+ help
+ Enable finalization function registration using atexit.
+
+config LIBC_PICOLIBC_ATEXIT_DYNAMIC_ALLOC
+ bool
+ prompt "Enable dynamic allocation of atexit entries"
+ help
+ Enable dynamic allocation of atexit entries.
+
+config LIBC_PICOLIBC_GLOBAL_ATEXIT
+ bool
+ prompt "Enable atexit data structure as global variable"
+ help
+ Enable atexit data structure as global variable, instead
+ of being thread-local.
+
+config LIBC_PICOLIBC_LITE_EXIT
+ bool
+ prompt "Enable lite exit"
+ 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.
+
+config LIBC_PICOLIBC_MULTITHREAD
+ bool
+ prompt "Enable support for multiple threads"
+ default y
+ help
+ Enable support for multiple threads.
+
+config LIBC_PICOLIBC_RETARGETABLE_LOCKING
+ bool
+ prompt "Enable retargetable locking"
+ default y
+ help
+ Enable retargetable locking to allow the operating system to override
+ the dummy lock functions defined within picolibc.
+
+config LIBC_PICOLIBC_EXTRA_SECTIONS
+ bool
+ prompt "Place each function & data element in their own section"
+ help
+ Place each function & data symbol in their own section. This allows
+ the linker to garbage collect unused symbols at link time.
+
+config LIBC_PICOLIBC_ENABLE_TARGET_OPTSPACE
+ bool
+ prompt "Optimize picolibc for size"
+ default y
+ help
+ Pass --enable-target-optspace to picolibc configure.
+
+ This will compile picolibc with -Os.
+
+config LIBC_PICOLIBC_LTO
+ bool
+ prompt "Enable Link Time Optimization"
+ depends on CC_GCC_USE_LTO
+ help
+ Builds the libraries with -flto to enable more aggressive link time
+ optimization. You will need to add -flto-partition=one to your
+ application's link line to keep the RETURN assembler macro together
+ with it's consumers.
+
+config LIBC_PICOLIBC_NANO_MALLOC
+ bool
+ prompt "Enable Nano Malloc"
+ default y
+ help
+ PICOLIBC has two implementations of malloc family's functions, one in
+ `mallocr.c' and the other one in `nano-mallocr.c'. This options
+ enables the nano-malloc implementation, which is for small systems
+ with very limited memory. Note that this implementation does not
+ support `--enable-malloc-debugging' any more.
+
+config LIBC_PICOLIBC_EXTRA_CONFIG_ARRAY
+ string
+ prompt "Extra config for picolibc"
+ default ""
+ help
+ Extra flags to pass to meson when configuring picolibc.
diff --git a/config/comp_libs/zlib.in b/config/comp_libs/zlib.in
new file mode 100644
index 0000000..3481166
--- /dev/null
+++ b/config/comp_libs/zlib.in
@@ -0,0 +1 @@
+# Zlib options
diff --git a/config/companion_tools.in b/config/comp_tools.in
index 5291f46..020a070 100644
--- a/config/companion_tools.in
+++ b/config/comp_tools.in
@@ -10,6 +10,6 @@ config COMP_TOOLS_FOR_HOST
tools into the final toolchain (rather than just using them
to build it).
-source "config.gen/companion_tools.in"
+source "config/gen/comp_tools.in"
endmenu
diff --git a/config/comp_tools/autoconf.in b/config/comp_tools/autoconf.in
new file mode 100644
index 0000000..1232782
--- /dev/null
+++ b/config/comp_tools/autoconf.in
@@ -0,0 +1,5 @@
+# Autoconf
+
+## default y if !CONFIGURE_has_autoconf_2_65_or_newer
+## default y if !CONFIGURE_has_autoreconf_2_65_or_newer
+## help Autoconf
diff --git a/config/comp_tools/automake.in b/config/comp_tools/automake.in
new file mode 100644
index 0000000..6982156
--- /dev/null
+++ b/config/comp_tools/automake.in
@@ -0,0 +1,4 @@
+# Automake
+
+## default y if !CONFIGURE_has_automake_1_15_or_newer
+## help Automake
diff --git a/config/comp_tools/bison.in b/config/comp_tools/bison.in
new file mode 100644
index 0000000..b0dc9e1
--- /dev/null
+++ b/config/comp_tools/bison.in
@@ -0,0 +1 @@
+# GNU bison
diff --git a/config/comp_tools/dtc.in b/config/comp_tools/dtc.in
new file mode 100644
index 0000000..72c7b14
--- /dev/null
+++ b/config/comp_tools/dtc.in
@@ -0,0 +1,6 @@
+# Kernel.org's device tree compiler
+
+## default y if !CONFIGURE_has_dtc && ARCH_MOXIE
+
+config DTC_VERBOSE
+ bool "Verbose DTC build output"
diff --git a/config/comp_tools/libtool.in b/config/comp_tools/libtool.in
new file mode 100644
index 0000000..253a731
--- /dev/null
+++ b/config/comp_tools/libtool.in
@@ -0,0 +1,4 @@
+# Libtool
+
+## default y if !CONFIGURE_has_libtool_2_4_or_newer
+## default y if !CONFIGURE_has_libtoolize_2_4_or_newer
diff --git a/config/comp_tools/m4.in b/config/comp_tools/m4.in
new file mode 100644
index 0000000..de59a7f
--- /dev/null
+++ b/config/comp_tools/m4.in
@@ -0,0 +1,3 @@
+# GNU m4
+
+## default y if !CONFIGURE_has_gnu_m4_1_4_12_or_newer
diff --git a/config/comp_tools/make.in b/config/comp_tools/make.in
new file mode 100644
index 0000000..ca7996b
--- /dev/null
+++ b/config/comp_tools/make.in
@@ -0,0 +1,9 @@
+# GNU make
+
+## default y if !CONFIGURE_has_make_3_81_or_newer
+
+config MAKE_GMAKE_SYMLINK
+ bool "Create 'gmake' symlink"
+
+config MAKE_GNUMAKE_SYMLINK
+ bool "Create 'gnumake' symlink"
diff --git a/config/companion_libs.in b/config/companion_libs.in
deleted file mode 100644
index fae49ec..0000000
--- a/config/companion_libs.in
+++ /dev/null
@@ -1,186 +0,0 @@
-# Companion libraries config options
-# Those libraries are required for different versions of gcc,
-# and can be used by binutils and gdb (maybe others as well).
-
-menu "Companion libraries"
-
-config COMPLIBS_NEEDED
- bool
-
-config LIBICONV_NEEDED
- bool
- select LIBICONV
- select COMPLIBS_NEEDED
-
-config GETTEXT_NEEDED
- bool
- select GETTEXT
- select LIBICONV_NEEDED
- select COMPLIBS_NEEDED
-
-config GMP_NEEDED
- def_bool y
- select GMP
- select COMPLIBS_NEEDED
-
-config MPFR_NEEDED
- def_bool y
- select MPFR
- select COMPLIBS_NEEDED
-
-config ISL_NEEDED
- bool
- select ISL
- select COMPLIBS_NEEDED
-
-config CLOOG_NEEDED
- bool
- select CLOOG
- select COMPLIBS_NEEDED
-
-config MPC_NEEDED
- def_bool y
- select MPC
- select COMPLIBS_NEEDED
-
-config LIBELF_NEEDED
- bool
- select LIBELF
- select COMPLIBS_NEEDED
-
-config EXPAT_NEEDED
- bool
- select EXPAT
- select COMPLIBS_NEEDED
-
-config NCURSES_NEEDED
- bool
- select NCURSES
- select COMPLIBS_NEEDED
-
-config COMPLIBS
- bool
-
-config LIBICONV
- bool "Build local libiconv"
- default y if CANADIAN || CROSS_NATIVE
- select COMPLIBS
-
-config GETTEXT
- bool "Build local gettext"
- default y if CANADIAN || CROSS_NATIVE
- select LIBICONV_NEEDED
- select NCURSES_NEEDED
- select COMPLIBS
-
-config GMP
- bool
- select COMPLIBS
-
-config MPFR
- bool
- select GMP
- select COMPLIBS
-
-config ISL
- bool
- select GMP
- select COMPLIBS
-
-config CLOOG
- bool
- select GMP
- select COMPLIBS
-
-config MPC
- bool
- select GMP
- select MPFR
- select COMPLIBS
-
-config LIBELF
- bool
- select COMPLIBS
-
-config LIBELF_TARGET
- bool
-
-config EXPAT
- bool
- select COMPLIBS
-
-config EXPAT_TARGET
- bool
-
-config NCURSES
- bool
- select COMPLIBS
-
-config NCURSES_TARGET
- bool
-
-config ZLIB
- bool "Build local zlib"
-
-if ZLIB
-source "config/companion_libs/zlib.in"
-endif
-if LIBICONV
-source "config/companion_libs/libiconv.in"
-endif
-if GETTEXT
-source "config/companion_libs/gettext.in"
-endif
-if GMP
-source "config/companion_libs/gmp.in"
-endif
-if MPFR
-source "config/companion_libs/mpfr.in"
-endif
-if ISL
-source "config/companion_libs/isl.in"
-endif
-if CLOOG
-source "config/companion_libs/cloog.in"
-endif
-if MPC
-source "config/companion_libs/mpc.in"
-endif
-if LIBELF || LIBELF_TARGET
-comment "libelf version needed to build for target"
- depends on !LIBELF
-source "config/companion_libs/libelf.in"
-endif
-if EXPAT || EXPAT_TARGET
-comment "expat version needed to build for target"
- depends on !EXPAT
-source "config/companion_libs/expat.in"
-endif
-if NCURSES || NCURSES_TARGET
-comment "ncurses version needed to build for target"
- depends on !NCURSES
-source "config/companion_libs/ncurses.in"
-endif
-
-if COMPLIBS
-
-comment "Companion libraries common options"
-
-config COMPLIBS_CHECK
- bool
- prompt "Check the companion libraries builds (!!! READ HELP!!!)"
- help
- It is highly recommended to check the newly built companion libraries.
- Unfortunately, this is a very intensive task, and takes a loooong time.
-
- Checking the newly built companion libraries is thus disabled by default,
- but it is suggested that you check them at least once on your machine,
- and if they work, disable the check on subsequent builds.
-
- If you suspect that one (or more) of your companion libraries is the
- cause for incorrectly generated code, you should answer 'Y' here.
- Note however that this will take a really long time.
-
-endif # COMPLIBS
-
-endmenu
diff --git a/config/companion_libs/cloog.in b/config/companion_libs/cloog.in
deleted file mode 100644
index f094fa3..0000000
--- a/config/companion_libs/cloog.in
+++ /dev/null
@@ -1,52 +0,0 @@
-# CLooG options
-## depends on OBSOLETE
-
-# CLooG 0.18.4 requires ISL 0.12 or newer
-# CLooG 0.18.1/0.18.0 frequires ISL 0.12 or older
-choice
- bool
- prompt "CLooG version"
-
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config CLOOG_V_0_18_4
- bool
- prompt "0.18.4 (OBSOLETE)"
- depends on ISL_V_0_12_or_later
- depends on OBSOLETE
- select CLOOG_0_18_4_or_later
-
-config CLOOG_V_0_18_1
- bool
- prompt "0.18.1 (OBSOLETE)"
- depends on !ISL_V_0_14_or_later
- depends on OBSOLETE
- select CLOOG_0_18_or_later
-
-config CLOOG_V_0_18_0
- bool
- prompt "0.18.0 (OBSOLETE)"
- depends on !ISL_V_0_14_or_later
- depends on OBSOLETE
- select CLOOG_0_18_or_later
-
-endchoice
-
-config CLOOG_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "0.18.4" if CLOOG_V_0_18_4
- default "0.18.1" if CLOOG_V_0_18_1
- default "0.18.0" if CLOOG_V_0_18_0
-
-config CLOOG_0_18_4_or_later
- bool
- select CLOOG_0_18_or_later
-
-config CLOOG_0_18_or_later
- bool
-
-config CLOOG_NEEDS_AUTORECONF
- bool
diff --git a/config/companion_libs/expat.in b/config/companion_libs/expat.in
deleted file mode 100644
index 40ad66c..0000000
--- a/config/companion_libs/expat.in
+++ /dev/null
@@ -1,25 +0,0 @@
-# expat config file
-
-choice
- bool
- prompt "expat version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config EXPAT_V_2_2_0
- bool
- prompt "2.2.0"
-
-config EXPAT_V_2_1_1
- bool
- prompt "2.1.1 (OBSOLETE)"
- depends on OBSOLETE
-
-endchoice
-
-config EXPAT_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "2.2.0" if EXPAT_V_2_2_0
- default "2.1.1" if EXPAT_V_2_1_1
diff --git a/config/companion_libs/gettext.in b/config/companion_libs/gettext.in
deleted file mode 100644
index d76955a..0000000
--- a/config/companion_libs/gettext.in
+++ /dev/null
@@ -1,25 +0,0 @@
-# gettext options
-
-choice
- bool
- prompt "gettext version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config GETTEXT_V_0_19_8_1
- bool
- prompt "0.19.8.1"
-
-config GETTEXT_V_0_19_7
- bool
- prompt "0.19.7 (OBSOLETE)"
- depends on OBSOLETE
-
-endchoice
-
-config GETTEXT_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "0.19.8.1" if GETTEXT_V_0_19_8_1
- default "0.19.7" if GETTEXT_V_0_19_7
diff --git a/config/companion_libs/gmp.in b/config/companion_libs/gmp.in
deleted file mode 100644
index 167c772..0000000
--- a/config/companion_libs/gmp.in
+++ /dev/null
@@ -1,83 +0,0 @@
-# GMP options
-
-choice
- bool
- prompt "GMP version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config GMP_V_6_1_2
- bool
- prompt "6.1.2"
- select GMP_5_0_2_or_later
-
-config GMP_V_6_1_0
- bool
- prompt "6.1.0 (OBSOLETE)"
- select GMP_5_0_2_or_later
- depends on OBSOLETE
-
-config GMP_V_6_0_0
- bool
- prompt "6.0.0a (OBSOLETE)"
- select GMP_5_0_2_or_later
- depends on OBSOLETE
-
-config GMP_V_5_1_3
- bool
- prompt "5.1.3 (OBSOLETE)"
- select GMP_5_0_2_or_later
- depends on OBSOLETE
-
-config GMP_V_5_1_1
- bool
- prompt "5.1.1 (OBSOLETE)"
- select GMP_5_0_2_or_later
- depends on OBSOLETE
-
-config GMP_V_5_0_2
- bool
- prompt "5.0.2 (OBSOLETE)"
- select GMP_5_0_2_or_later
- depends on OBSOLETE
-
-config GMP_V_5_0_1
- bool
- prompt "5.0.1 (OBSOLETE)"
- depends on OBSOLETE
-
-config GMP_V_4_3_2
- bool
- prompt "4.3.2 (OBSOLETE)"
- depends on OBSOLETE
-
-config GMP_V_4_3_1
- bool
- prompt "4.3.1 (OBSOLETE)"
- depends on OBSOLETE
-
-config GMP_V_4_3_0
- bool
- prompt "4.3.0 (OBSOLETE)"
- depends on OBSOLETE
-
-endchoice
-
-# To disable --enable-mpbsd
-config GMP_5_0_2_or_later
- bool
-
-config GMP_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "6.1.2" if GMP_V_6_1_2
- default "6.1.0" if GMP_V_6_1_0
- default "6.0.0a" if GMP_V_6_0_0
- default "5.1.3" if GMP_V_5_1_3
- default "5.1.1" if GMP_V_5_1_1
- default "5.0.2" if GMP_V_5_0_2
- default "5.0.1" if GMP_V_5_0_1
- default "4.3.2" if GMP_V_4_3_2
- default "4.3.1" if GMP_V_4_3_1
- default "4.3.0" if GMP_V_4_3_0
diff --git a/config/companion_libs/isl.in b/config/companion_libs/isl.in
deleted file mode 100644
index 6ba9e07..0000000
--- a/config/companion_libs/isl.in
+++ /dev/null
@@ -1,93 +0,0 @@
-# ISL options
-
-# GCC 4.8 supports ISL 0.10 to 0.14
-# GCC 4.9 supports ISL 0.10 to 0.15
-# GCC 5 supports ISL 0.12 to 0.16
-# GCC 6 supports ISL 0.14 to 0.16
-# Starting with GCC 5, GCC's configure no longer checks the ISL version explicitly,
-# despite what the configure's message says ("checking for isl 0.15 or 0.16").
-# Instead, it verifies that certain interfaces are available, so it accepts 0.17.1
-# or 0.18 under that check. Include them as experimental just in case anyone needs
-# the bugfixes in these releases.
-choice
- bool
- prompt "ISL version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config ISL_V_0_18
- bool
- prompt "0.18"
- depends on EXPERIMENTAL # Not officially recommended by GCC
- depends on CC_GCC_5_or_later
- select ISL_V_0_16_or_later
-
-config ISL_V_0_17_1
- bool
- prompt "0.17.1"
- depends on EXPERIMENTAL # Not officially recommended by GCC
- depends on CC_GCC_5_or_later
- select ISL_V_0_16_or_later
-
-config ISL_V_0_16_1
- bool
- prompt "0.16.1"
- depends on CC_GCC_5_or_later
- select ISL_V_0_16_or_later
-
-# Linaro version of 4.9 does not support ISL 0.15, but most recent
-# mainline 4.9 release (4.9.4) does.
-config ISL_V_0_15
- bool
- prompt "0.15 (OBSOLETE)"
- depends on CC_GCC_4_9_or_later && !CC_GCC_V_linaro_4_9
- select ISL_V_0_15_or_later
- depends on OBSOLETE
-
-config ISL_V_0_14
- bool
- prompt "0.14 (OBSOLETE)"
- select ISL_V_0_14_or_later
- depends on OBSOLETE
-
-config ISL_V_0_12_2
- bool
- prompt "0.12.2 (OBSOLETE)"
- depends on !CC_GCC_6_or_later
- select ISL_V_0_12_or_later
- depends on OBSOLETE
-
-config ISL_V_0_11_1
- bool
- prompt "0.11.1 (OBSOLETE)"
- depends on !CC_GCC_4_9_or_later
- depends on OBSOLETE
-
-endchoice
-
-config ISL_V_0_16_or_later
- bool
- select ISL_V_0_15_or_later
-
-config ISL_V_0_15_or_later
- bool
- select ISL_V_0_14_or_later
-
-config ISL_V_0_14_or_later
- bool
- select ISL_V_0_12_or_later
-
-config ISL_V_0_12_or_later
- bool
-
-config ISL_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "0.18" if ISL_V_0_18
- default "0.17.1" if ISL_V_0_17_1
- default "0.16.1" if ISL_V_0_16_1
- default "0.15" if ISL_V_0_15
- default "0.14" if ISL_V_0_14
- default "0.12.2" if ISL_V_0_12_2
- default "0.11.1" if ISL_V_0_11_1
diff --git a/config/companion_libs/libelf.in b/config/companion_libs/libelf.in
deleted file mode 100644
index b01ab36..0000000
--- a/config/companion_libs/libelf.in
+++ /dev/null
@@ -1,25 +0,0 @@
-# libelf config file
-
-choice
- bool
- prompt "libelf version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config LIBELF_V_0_8_13
- bool
- prompt "0.8.13"
-
-config LIBELF_V_0_8_12
- bool
- prompt "0.8.12 (OBSOLETE)"
- depends on OBSOLETE
-
-endchoice
-
-config LIBELF_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "0.8.13" if LIBELF_V_0_8_13
- default "0.8.12" if LIBELF_V_0_8_12
diff --git a/config/companion_libs/libiconv.in b/config/companion_libs/libiconv.in
deleted file mode 100644
index 361d34e..0000000
--- a/config/companion_libs/libiconv.in
+++ /dev/null
@@ -1,19 +0,0 @@
-# libiconv options
-
-choice
- bool
- prompt "libiconv version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config LIBICONV_V_1_14
- bool
- prompt "1.14"
-
-endchoice
-
-config LIBICONV_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "1.14" if LIBICONV_V_1_14
diff --git a/config/companion_libs/mpc.in b/config/companion_libs/mpc.in
deleted file mode 100644
index cd8132d..0000000
--- a/config/companion_libs/mpc.in
+++ /dev/null
@@ -1,61 +0,0 @@
-# MPC options
-
-choice
- bool
- prompt "MPC version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config MPC_V_1_0_3
- bool
- prompt "1.0.3"
-
-config MPC_V_1_0_2
- bool
- prompt "1.0.2 (OBSOLETE)"
- depends on OBSOLETE
-
-config MPC_V_1_0_1
- bool
- prompt "1.0.1 (OBSOLETE)"
- depends on OBSOLETE
-
-config MPC_V_1_0
- bool
- prompt "1.0 (OBSOLETE)"
- depends on OBSOLETE
-
-config MPC_V_0_9
- bool
- prompt "0.9 (OBSOLETE)"
- depends on OBSOLETE
-
-config MPC_V_0_8_2
- bool
- prompt "0.8.2 (OBSOLETE)"
- depends on OBSOLETE
-
-config MPC_V_0_8_1
- bool
- prompt "0.8.1 (OBSOLETE)"
- depends on OBSOLETE
-
-config MPC_V_0_7
- bool
- prompt "0.7 (OBSOLETE)"
- depends on OBSOLETE
-
-endchoice
-
-config MPC_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "1.0.3" if MPC_V_1_0_3
- default "1.0.2" if MPC_V_1_0_2
- default "1.0.1" if MPC_V_1_0_1
- default "1.0" if MPC_V_1_0
- default "0.9" if MPC_V_0_9
- default "0.8.2" if MPC_V_0_8_2
- default "0.8.1" if MPC_V_0_8_1
- default "0.7" if MPC_V_0_7
diff --git a/config/companion_libs/mpfr.in b/config/companion_libs/mpfr.in
deleted file mode 100644
index ce33b3d..0000000
--- a/config/companion_libs/mpfr.in
+++ /dev/null
@@ -1,67 +0,0 @@
-# GMP options
-
-choice
- bool
- prompt "MPFR version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config MPFR_V_3_1_5
- bool
- prompt "3.1.5"
-
-config MPFR_V_3_1_3
- bool
- prompt "3.1.3 (OBSOLETE)"
- depends on OBSOLETE
-
-config MPFR_V_3_1_2
- bool
- prompt "3.1.2 (OBSOLETE)"
- depends on OBSOLETE
-
-config MPFR_V_3_1_0
- bool
- prompt "3.1.0 (OBSOLETE)"
- depends on OBSOLETE
-
-config MPFR_V_3_0_1
- bool
- prompt "3.0.1 (OBSOLETE)"
- depends on OBSOLETE
-
-config MPFR_V_3_0_0
- bool
- prompt "3.0.0 (OBSOLETE)"
- depends on OBSOLETE
-
-config MPFR_V_2_4_2
- bool
- prompt "2.4.2 (OBSOLETE)"
- depends on OBSOLETE
-
-config MPFR_V_2_4_1
- bool
- prompt "2.4.1 (OBSOLETE)"
- depends on OBSOLETE
-
-config MPFR_V_2_4_0
- bool
- prompt "2.4.0 (OBSOLETE)"
- depends on OBSOLETE
-
-endchoice
-
-config MPFR_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "3.1.5" if MPFR_V_3_1_5
- default "3.1.3" if MPFR_V_3_1_3
- default "3.1.2" if MPFR_V_3_1_2
- default "3.1.0" if MPFR_V_3_1_0
- default "3.0.1" if MPFR_V_3_0_1
- default "3.0.0" if MPFR_V_3_0_0
- default "2.4.2" if MPFR_V_2_4_2
- default "2.4.1" if MPFR_V_2_4_1
- default "2.4.0" if MPFR_V_2_4_0
diff --git a/config/companion_libs/zlib.in b/config/companion_libs/zlib.in
deleted file mode 100644
index df93682..0000000
--- a/config/companion_libs/zlib.in
+++ /dev/null
@@ -1,19 +0,0 @@
-# Zlib options
-
-choice
- bool
- prompt "zlib version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config ZLIB_V_1_2_11
- bool
- prompt "1.2.11"
-
-endchoice
-
-config ZLIB_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "1.2.11" if ZLIB_V_1_2_11
diff --git a/config/companion_tools/autoconf.in b/config/companion_tools/autoconf.in
deleted file mode 100644
index b85e1f9..0000000
--- a/config/companion_tools/autoconf.in
+++ /dev/null
@@ -1,29 +0,0 @@
-# Autoconf
-
-## default y if !CONFIGURE_has_autoconf_2_63_or_newer
-## default y if !CONFIGURE_has_autoreconf_2_63_or_newer
-## help Autoconf
-
-choice
- bool
- prompt "Autoconf version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config AUTOCONF_V_2_69
- bool
- prompt "2.69"
-
-config AUTOCONF_V_2_65
- bool
- prompt "2.65 (OBSOLETE)"
- depends on OBSOLETE
-
-endchoice
-
-config AUTOCONF_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "2.69" if AUTOCONF_V_2_69
- default "2.65" if AUTOCONF_V_2_65
diff --git a/config/companion_tools/automake.in b/config/companion_tools/automake.in
deleted file mode 100644
index 31d036b..0000000
--- a/config/companion_tools/automake.in
+++ /dev/null
@@ -1,40 +0,0 @@
-# Automake
-
-## default y if !CONFIGURE_has_automake_1_15_or_newer
-## help Automake
-
-choice
- bool
- prompt "Automake version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config AUTOMAKE_V_1_15
- bool
- prompt "1.15"
-
-config AUTOMAKE_V_1_14
- bool
- prompt "1.14 (OBSOLETE)"
- depends on OBSOLETE
-
-config AUTOMAKE_V_1_11_6
- bool
- prompt "1.11.6 (OBSOLETE)"
- depends on OBSOLETE
-
-config AUTOMAKE_V_1_11_1
- bool
- prompt "1.11.1 (OBSOLETE)"
- depends on OBSOLETE
-
-endchoice
-
-config AUTOMAKE_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "1.15" if AUTOMAKE_V_1_15
- default "1.14" if AUTOMAKE_V_1_14
- default "1.11.6" if AUTOMAKE_V_1_11_6
- default "1.11.1" if AUTOMAKE_V_1_11_1
diff --git a/config/companion_tools/libtool.in b/config/companion_tools/libtool.in
deleted file mode 100644
index 5c14fa0..0000000
--- a/config/companion_tools/libtool.in
+++ /dev/null
@@ -1,23 +0,0 @@
-# Libtool
-
-## default y if !CONFIGURE_has_libtool_2_4_or_newer
-## default y if !CONFIGURE_has_libtoolize_2_4_or_newer
-## help Libtool
-
-choice
- bool
- prompt "Libtool version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config LIBTOOL_V_2_4_6
- bool
- prompt "2.4.6"
-
-endchoice
-
-config LIBTOOL_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "2.4.6" if LIBTOOL_V_2_4_6
diff --git a/config/companion_tools/m4.in b/config/companion_tools/m4.in
deleted file mode 100644
index eb6a3d3..0000000
--- a/config/companion_tools/m4.in
+++ /dev/null
@@ -1,34 +0,0 @@
-# GNU m4
-
-## default y if !CONFIGURE_has_gnu_m4_1_4_12_or_newer
-## help GNU m4
-
-choice
- bool
- prompt "m4 version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config M4_V_1_4_18
- bool
- prompt "1.4.18"
-
-config M4_V_1_4_17
- bool
- prompt "1.4.17 (OBSOLETE)"
- depends on OBSOLETE
-
-config M4_V_1_4_13
- bool
- prompt "1.4.13 (OBSOLETE)"
- depends on OBSOLETE
-
-endchoice
-
-config M4_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "1.4.18" if M4_V_1_4_18
- default "1.4.17" if M4_V_1_4_17
- default "1.4.13" if M4_V_1_4_13
diff --git a/config/companion_tools/make.in b/config/companion_tools/make.in
deleted file mode 100644
index b6834a7..0000000
--- a/config/companion_tools/make.in
+++ /dev/null
@@ -1,45 +0,0 @@
-# GNU make
-
-## default y if !CONFIGURE_has_make_3_81_or_newer
-## help GNU make
-
-choice
- bool
- prompt "make version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config MAKE_V_4_2_1
- bool
- prompt "4.2.1"
-
-config MAKE_V_4_1
- bool
- prompt "4.1 (OBSOLETE)"
- depends on OBSOLETE
-
-config MAKE_V_4_0
- bool
- prompt "4.0 (OBSOLETE)"
- depends on OBSOLETE
-
-config MAKE_V_3_81
- bool
- prompt "3.81 (OBSOLETE)"
- depends on OBSOLETE
-
-endchoice
-
-config MAKE_GMAKE_SYMLINK
- bool
- prompt "Add gmake symlink to companion gnu/make"
- depends on COMP_TOOLS_make
-
-config MAKE_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "4.2.1" if MAKE_V_4_2_1
- default "4.1" if MAKE_V_4_1
- default "4.0" if MAKE_V_4_0
- default "3.81" if MAKE_V_3_81
diff --git a/config/config.in b/config/config.in
index 885f722..cc349aa 100644
--- a/config/config.in
+++ b/config/config.in
@@ -1,5 +1,5 @@
+mainmenu "crosstool-NG $(CT_VERSION) Configuration"
source "config/configure.in"
-source "config/backend.in"
source "config/global.in"
source "config/target.in"
source "config/toolchain.in"
@@ -8,6 +8,6 @@ source "config/binutils.in"
source "config/libc.in"
source "config/cc.in"
source "config/debug.in"
-source "config/companion_libs.in"
-source "config/companion_tools.in"
+source "config/comp_libs.in"
+source "config/comp_tools.in"
source "config/test_suite.in"
diff --git a/config/config.mk b/config/config.mk
deleted file mode 100644
index 670ecba..0000000
--- a/config/config.mk
+++ /dev/null
@@ -1,114 +0,0 @@
-# ===========================================================================
-# crosstool-NG genererated config files
-# These targets are used from top-level makefile
-
-#-----------------------------------------------------------
-# List all config files, wether sourced or generated
-
-# The top-level config file to be used be configurators
-# We need it to savedefconfig in scripts/saveSample.sh
-export KCONFIG_TOP = config/config.in
-
-# Build the list of all source config files
-STATIC_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(shell find $(CT_LIB_DIR)/config -type f \( -name '*.in' -o -name '*.in.2' \) 2>/dev/null))
-# ... and how to access them:
-$(STATIC_CONFIG_FILES): config
-
-# Build a list of per-component-type source config files
-ARCH_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/arch/*.in)))
-ARCH_CONFIG_FILES_2 = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/arch/*.in.2)))
-KERNEL_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/kernel/*.in)))
-KERNEL_CONFIG_FILES_2 = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/kernel/*.in.2)))
-CC_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/cc/*.in)))
-CC_CONFIG_FILES_2 = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/cc/*.in.2)))
-BINUTILS_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/binutils/*.in)))
-BINUTILS_CONFIG_FILES_2 = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/binutils/*.in.2)))
-LIBC_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/libc/*.in)))
-LIBC_CONFIG_FILES_2 = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/libc/*.in.2)))
-DEBUG_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/debug/*.in)))
-COMP_TOOLS_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/companion_tools/*.in)))
-
-# Build the list of generated config files
-GEN_CONFIG_FILES = config.gen/arch.in \
- config.gen/kernel.in \
- config.gen/cc.in \
- config.gen/binutils.in \
- config.gen/libc.in \
- config.gen/debug.in \
- config.gen/companion_tools.in
-# ... and how to access them:
-# Generated files depends on the gen_in_frags script because it has the
-# functions needed to build the genrated files, and thus they might need
-# re-generation if it changes.
-# They also depends on config.mk (this file) because it has the dependency
-# rules, and thus they might need re-generation if the deps change.
-$(GEN_CONFIG_FILES): config.gen \
- $(CT_LIB_DIR)/scripts/gen_in_frags.sh \
- $(CT_LIB_DIR)/config/config.mk
-
-# Helper entry for the configurators
-PHONY += config_files
-config_files: $(STATIC_CONFIG_FILES) $(GEN_CONFIG_FILES)
-
-# Where to access to the source config files from
-config:
- @$(CT_ECHO) " LN config"
- $(SILENT)ln -s $(CT_LIB_DIR)/config config
-
-# Where to store the generated config files into
-config.gen:
- @$(CT_ECHO) " MKDIR config.gen"
- $(SILENT)mkdir -p config.gen
-
-#-----------------------------------------------------------
-# Build list of per-component-type items to easily build generated files
-
-ARCHS = $(patsubst config/arch/%.in,%,$(ARCH_CONFIG_FILES))
-KERNELS = $(patsubst config/kernel/%.in,%,$(KERNEL_CONFIG_FILES))
-CCS = $(patsubst config/cc/%.in,%,$(CC_CONFIG_FILES))
-BINUTILSS = $(patsubst config/binutils/%.in,%,$(BINUTILS_CONFIG_FILES))
-LIBCS = $(patsubst config/libc/%.in,%,$(LIBC_CONFIG_FILES))
-DEBUGS = $(patsubst config/debug/%.in,%,$(DEBUG_CONFIG_FILES))
-COMP_TOOLS= $(patsubst config/companion_tools/%.in,%,$(COMP_TOOLS_CONFIG_FILES))
-
-#-----------------------------------------------------------
-# The rules for the generated config files
-
-# WARNING! If a .in file disapears between two runs, that will NOT be detected!
-
-config.gen/arch.in: $(ARCH_CONFIG_FILES) $(ARCH_CONFIG_FILES_2)
- @$(CT_ECHO) ' IN $(@)'
- $(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh choice "$@" "Target Architecture" "ARCH" "config/arch" "Y" $(ARCHS)
-
-config.gen/kernel.in: $(KERNEL_CONFIG_FILES) $(KERNEL_CONFIG_FILES_2)
- @$(CT_ECHO) ' IN $(@)'
- $(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh choice "$@" "Target OS" "KERNEL" "config/kernel" "Y" $(KERNELS)
-
-config.gen/cc.in: $(CC_CONFIG_FILES) $(CC_CONFIG_FILES_2)
- @$(CT_ECHO) ' IN $(@)'
- $(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh choice "$@" "C compiler" "CC" "config/cc" "N" $(CCS)
-
-config.gen/binutils.in: $(CC_BINUTILS_FILES) $(CC_BINUTILS_FILES_2)
- @$(CT_ECHO) ' IN $(@)'
- $(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh choice "$@" "Binutils" "BINUTILS" "config/binutils" "N" $(BINUTILSS)
-
-config.gen/libc.in: $(LIBC_CONFIG_FILES) $(LIBC_CONFIG_FILES_2)
- @$(CT_ECHO) ' IN $(@)'
- $(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh choice "$@" "C library" "LIBC" "config/libc" "Y" $(LIBCS)
-
-config.gen/debug.in: $(DEBUG_CONFIG_FILES)
- @$(CT_ECHO) ' IN $(@)'
- $(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh menu "$@" "Debug facilities" "DEBUG" "config/debug" $(DEBUGS)
-
-config.gen/companion_tools.in: $(COMP_TOOLS_CONFIG_FILES)
- @$(CT_ECHO) ' IN $(@)'
- $(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh menu "$@" "Companion tools" "COMP_TOOLS" "config/companion_tools" $(COMP_TOOLS)
-
-#-----------------------------------------------------------
-# Cleaning up the mess...
-
-clean::
- @$(CT_ECHO) " CLEAN config"
- $(SILENT)rm -f config 2>/dev/null || true
- @$(CT_ECHO) " CLEAN config.gen"
- $(SILENT)rm -rf config.gen
diff --git a/config/configure.in.in b/config/configure.in.in
new file mode 100644
index 0000000..a43fb61
--- /dev/null
+++ b/config/configure.in.in
@@ -0,0 +1,85 @@
+# Default values as found by ./configure
+
+config CONFIGURE_has_static_link
+ @KCONFIG_static_link@
+
+config CONFIGURE_has_cxx11
+ @KCONFIG_has_cxx11@
+
+config CONFIGURE_has_lzip
+ @KCONFIG_lzip@
+
+config CONFIGURE_has_wget
+ @KCONFIG_wget@
+
+config CONFIGURE_has_curl
+ @KCONFIG_curl@
+
+config CONFIGURE_has_meson
+ @KCONFIG_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@
+
+config CONFIGURE_has_make_4_0_or_newer
+ @KCONFIG_make_4_0_or_newer@
+
+config CONFIGURE_has_libtool_2_4_or_newer
+ @KCONFIG_libtool_2_4_or_newer@
+
+config CONFIGURE_has_libtoolize_2_4_or_newer
+ @KCONFIG_libtoolize_2_4_or_newer@
+
+config CONFIGURE_has_autoconf_2_65_or_newer
+ @KCONFIG_autoconf_2_65_or_newer@
+
+config CONFIGURE_has_autoreconf_2_65_or_newer
+ @KCONFIG_autoreconf_2_65_or_newer@
+
+config CONFIGURE_has_automake_1_15_or_newer
+ @KCONFIG_automake_1_15_or_newer@
+
+config CONFIGURE_has_gnu_m4_1_4_12_or_newer
+ @KCONFIG_gnu_m4_1_4_12_or_newer@
+
+config CONFIGURE_has_python_3_4_or_newer
+ @KCONFIG_python_3_4_or_newer@
+
+config CONFIGURE_has_bison_2_7_or_newer
+ @KCONFIG_bison_2_7_or_newer@
+
+config CONFIGURE_has_python
+ @KCONFIG_python@
+
+config CONFIGURE_has_dtc
+ @KCONFIG_dtc@
+
+config CONFIGURE_has_cvs
+ @KCONFIG_cvs@
+
+config CONFIGURE_has_svn
+ @KCONFIG_svn@
+
+config CONFIGURE_has_git
+ @KCONFIG_git@
+
+config CONFIGURE_has_md5sum
+ @KCONFIG_md5sum@
+
+config CONFIGURE_has_sha1sum
+ @KCONFIG_sha1sum@
+
+config CONFIGURE_has_sha256sum
+ @KCONFIG_sha256sum@
+
+config CONFIGURE_has_sha512sum
+ @KCONFIG_sha512sum@
+
+config CONFIGURE_has_install_with_strip_program
+ @KCONFIG_install_with_strip_program@
diff --git a/config/debug.in b/config/debug.in
index 9fd99ef..8fc549b 100644
--- a/config/debug.in
+++ b/config/debug.in
@@ -1,3 +1,3 @@
menu "Debug facilities"
-source "config.gen/debug.in"
+source "config/gen/debug.in"
endmenu
diff --git a/config/debug/duma.in b/config/debug/duma.in
index 9947ca2..bc69e17 100644
--- a/config/debug/duma.in
+++ b/config/debug/duma.in
@@ -1,7 +1,7 @@
# D.U.M.A. - Detect Unintended Memory Access - Memory checker
-## depends on ! BACKEND
## depends on ! BARE_METAL
+## depends on ! LIBC_BIONIC
## help D.U.M.A. - Detect Unintended Memory Access
## help A memory bound checker, with additional features.
@@ -18,21 +18,3 @@ config DUMA_CUSTOM_WRAPPER
prompt "Install custom D.U.M.A wrapper"
default y
depends on DUMA_SO
-
-choice
- bool
- prompt "D.U.M.A. version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config DUMA_V_2_5_15
- bool
- prompt "2_5_15"
-
-endchoice
-
-config DUMA_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "2_5_15" if DUMA_V_2_5_15
diff --git a/config/debug/gdb.in b/config/debug/gdb.in
index c8652ca..741eeae 100644
--- a/config/debug/gdb.in
+++ b/config/debug/gdb.in
@@ -4,308 +4,37 @@
source "config/debug/gdb.in.cross"
source "config/debug/gdb.in.native"
-source "config/debug/gdb.in.gdbserver"
-comment "gdb version"
-config GDB_CUSTOM
- bool
- prompt "Custom gdb"
- depends on EXPERIMENTAL
- select GDB_7_12_or_later
- help
- The choosen gdb version shall be not downloaded. Instead use
- a custom location to get the source.
-
-if GDB_CUSTOM
-
-config GDB_CUSTOM_LOCATION
- string
- prompt "Full path to custom gdb source"
- help
- Enter the path to the directory or tarball of your source for gcc.
-
- If the path is a tarball, it should extract to: <name>-<version>/
- where the name is this component, gcc, and the version is set
- below in the custom version string.
-
-config GDB_CUSTOM_VERSION
- string
- prompt "Custom GDB version"
- help
- Enter the version number for your custom gdb.
-
-config GDB_VERSION
- string
- default GDB_CUSTOM_VERSION
-
-endif # GDB_CUSTOM
-
-if ! GDB_CUSTOM
-
-config DEBUG_GDB_SHOW_LINARO
- bool
- prompt "Show Linaro versions"
- depends on OBSOLETE
- help
- Linaro is maintaining some advanced/more stable/experimental versions
- of gdb, especially for the ARM architecture.
-
- Those versions have not been blessed by the gdb community (nor have they
- been cursed either!), but they look to be pretty much stable, and even
- more stable than the upstream versions. YMMV...
-
- If you do not know what this Linaro stuff is, then simply say 'n' here,
- and rest in peace. OTOH, if you know what you are doing, you will be
- able to use and enjoy :-) the Linaro versions by saying 'y' here.
-
- Linaro: http://www.linaro.org/
-
-choice
- bool
- prompt "gdb version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config GDB_V_7_12_1
- bool
- prompt "7.12.1"
- select GDB_7_12_or_later
-
-config GDB_V_7_11_1
- bool
- prompt "7.11.1"
- select GDB_7_2_or_later
-
-config GDB_V_7_10_1
- bool
- prompt "7.10.1 (OBSOLETE)"
- select GDB_7_2_or_later
- depends on OBSOLETE
-
-config GDB_V_7_10
- bool
- prompt "7.10 (OBSOLETE)"
- depends on OBSOLETE
- select GDB_7_2_or_later
-
-config GDB_V_7_9_1
- bool
- prompt "7.9.1 (OBSOLETE)"
- depends on OBSOLETE
- select GDB_7_2_or_later
-
-config GDB_V_7_9
- bool
- prompt "7.9 (OBSOLETE)"
- depends on OBSOLETE
- select GDB_7_2_or_later
-
-config GDB_V_linaro_7_8
- bool
- prompt "linaro-7.8-2014.09 (OBSOLETE)"
- depends on DEBUG_GDB_SHOW_LINARO
- depends on OBSOLETE
- select GDB_7_2_or_later
-
-config GDB_V_7_8_2
- bool
- prompt "7.8.2 (OBSOLETE)"
- depends on OBSOLETE
- select GDB_7_2_or_later
-
-
-config GDB_V_7_8_1
- bool
- prompt "7.8.1 (OBSOLETE)"
- depends on OBSOLETE
- select GDB_7_2_or_later
-
-config GDB_V_7_8
- bool
- prompt "7.8 (OBSOLETE)"
- depends on OBSOLETE
- select GDB_7_2_or_later
-
-config GDB_V_linaro_7_7_1
- bool
- prompt "linaro-7.7.1-2014.06 (OBSOLETE)"
- depends on DEBUG_GDB_SHOW_LINARO
- depends on OBSOLETE
- select GDB_7_2_or_later
-
-config GDB_V_7_7_1
- bool
- prompt "7.7.1 (OBSOLETE)"
- depends on OBSOLETE
- select GDB_7_2_or_later
-
-config GDB_V_linaro_7_7
- bool
- prompt "linaro-7.7-2014.05 (OBSOLETE)"
- depends on DEBUG_GDB_SHOW_LINARO
- depends on OBSOLETE
- select GDB_7_2_or_later
-
-config GDB_V_7_7
- bool
- prompt "7.7 (OBSOLETE)"
- depends on OBSOLETE
- select GDB_7_2_or_later
-
-config GDB_V_linaro_7_6
- bool
- prompt "linaro-7.6.1-2013.10 (OBSOLETE)"
- depends on DEBUG_GDB_SHOW_LINARO
- select GDB_7_2_or_later
-
-config GDB_V_7_6_1
- bool
- prompt "7.6.1 (OBSOLETE)"
- depends on OBSOLETE
- select GDB_7_2_or_later
-
-config GDB_V_linaro_7_5
- bool
- prompt "linaro-7.5-2012.12 (OBSOLETE)"
- depends on DEBUG_GDB_SHOW_LINARO
- depends on OBSOLETE
- select GDB_7_2_or_later
-
-config GDB_V_7_5_1
- bool
- prompt "7.5.1 (OBSOLETE)"
- depends on OBSOLETE
- select GDB_7_2_or_later
-
-config GDB_V_linaro_7_4
- bool
- prompt "linaro-7.4-2012.06 (OBSOLETE)"
- depends on DEBUG_GDB_SHOW_LINARO
- depends on OBSOLETE
- select GDB_7_2_or_later
-
-config GDB_V_7_4_1
- bool
- prompt "7.4.1 (OBSOLETE)"
- depends on OBSOLETE
- select GDB_7_2_or_later
-
-config GDB_V_7_4
- bool
- prompt "7.4 (OBSOLETE)"
- depends on OBSOLETE
- select GDB_7_2_or_later
-
-config GDB_V_linaro_7_3
- bool
- prompt "linaro-7.3-2011.12 (OBSOLETE)"
- depends on DEBUG_GDB_SHOW_LINARO
- depends on OBSOLETE
- select GDB_7_2_or_later
-
-config GDB_V_7_3_1
- bool
- prompt "7.3.1 (OBSOLETE)"
- depends on OBSOLETE
- select GDB_7_2_or_later
-
-config GDB_V_7_3a
- bool
- prompt "7.3a (OBSOLETE)"
- depends on OBSOLETE
- select GDB_7_2_or_later
-
-config GDB_V_7_2a
- bool
- prompt "7.2a (OBSOLETE)"
- depends on OBSOLETE
- select GDB_7_2_or_later
-
-config GDB_V_7_1a
- bool
- prompt "7.1a (OBSOLETE)"
- depends on OBSOLETE
- select GDB_7_0_or_later
-
-config GDB_V_7_0_1a
- bool
- prompt "7.0.1a (OBSOLETE)"
- depends on OBSOLETE
- select GDB_7_0_or_later
-
-config GDB_V_7_0a
- bool
- prompt "7.0a (OBSOLETE)"
- depends on OBSOLETE
- select GDB_7_0_or_later
-
-config GDB_V_6_8a
- bool
- prompt "6.8a (OBSOLETE)"
- depends on OBSOLETE
-
-endchoice
-
-endif # ! GDB_CUSTOM
-
-config GDB_7_12_or_later
- bool
- select GDB_7_2_or_later
-
-config GDB_7_2_or_later
- bool
- select GDB_7_0_or_later
-
-config GDB_7_0_or_later
- bool
- select GDB_HAS_PKGVERSION_BUGURL
- select GDB_HAS_PYTHON
- select GDB_INSTALL_GDBINIT
-
-config GDB_HAS_PKGVERSION_BUGURL
- bool
-
-config GDB_HAS_PYTHON
- bool
-
-config GDB_INSTALL_GDBINIT
- bool
-
-if ! GDB_CUSTOM
-
-config GDB_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "7.12.1" if GDB_V_7_12_1
- default "7.11.1" if GDB_V_7_11_1
- default "7.10.1" if GDB_V_7_10_1
- default "7.10" if GDB_V_7_10
- default "7.9.1" if GDB_V_7_9_1
- default "7.9" if GDB_V_7_9
- default "7.8.2" if GDB_V_7_8_2
- default "linaro-7.8-2014.09" if GDB_V_linaro_7_8
- default "7.8.1" if GDB_V_7_8_1
- default "7.8" if GDB_V_7_8
- default "linaro-7.7.1-2014.06-1" if GDB_V_linaro_7_7_1
- default "7.7.1" if GDB_V_7_7_1
- default "linaro-7.7-2014.05" if GDB_V_linaro_7_7
- default "7.7" if GDB_V_7_7
- default "linaro-7.6.1-2013.10" if GDB_V_linaro_7_6
- default "7.6.1" if GDB_V_7_6_1
- default "linaro-7.5-2012.12" if GDB_V_linaro_7_5
- default "7.5.1" if GDB_V_7_5_1
- default "linaro-7.4-2012.06" if GDB_V_linaro_7_4
- default "7.4.1" if GDB_V_7_4_1
- default "7.4" if GDB_V_7_4
- default "linaro-7.3-2011.12" if GDB_V_linaro_7_3
- default "7.3.1" if GDB_V_7_3_1
- default "7.3a" if GDB_V_7_3a
- default "7.2a" if GDB_V_7_2a
- default "7.1a" if GDB_V_7_1a
- default "7.0.1a" if GDB_V_7_0_1a
- default "7.0a" if GDB_V_7_0a
- default "6.8a" if GDB_V_6_8a
-
-endif # ! GDB_CUSTOM
+# GDB 8.0 now requires C++ for build. GDB 7.12 offered a configure
+# switch to fall back to C. We want to use that option because
+# the conversion in 7.12 was incomplete and had some breakages.
+config GDB_HAS_DISABLE_CXX_BUILD
+ def_bool y
+ depends on GDB_7_12_or_later && !GDB_8_0_or_later
+
+# GDB 8.0 requires not just any C++, but recent enough to support C++11.
+# Yes, in 2019 there are still LTS systems still lacking such support.
+# I am looking at you, CentOS 6: no cookie for you, use an older GDB.
+config GDB_DEP_CXX11
+ def_bool y
+ 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
+
+# Does GDB need ps_get_thread_area with const qualifier?
+config GDB_CONST_GET_THREAD_AREA
+ bool
+ default y if GDB_older_than_7_12
+
+# As of GDB 10.x gdbserver is now at the toplevel of the distributed
+# tarball (instead of a subdirectory of gdb)
+config GDB_GDBSERVER_TOPLEVEL
+ def_bool y
+ depends on GDB_10_or_later
diff --git a/config/debug/gdb.in.cross b/config/debug/gdb.in.cross
index 945f8eb..7ecc2e3 100644
--- a/config/debug/gdb.in.cross
+++ b/config/debug/gdb.in.cross
@@ -17,8 +17,8 @@ if GDB_CROSS
config GDB_CROSS_STATIC
bool
prompt "Build a static cross gdb"
- depends on CONFIGURE_has_static_link
- select WANTS_STATIC_LINK
+ depends on CONFIGURE_has_static_link || CROSS_NATIVE || CANADIAN
+ select WANTS_STATIC_LINK if NATIVE || CROSS
help
A static cross gdb can be useful if you debug on a machine that is
not the one that is used to compile the toolchain.
@@ -37,9 +37,8 @@ config GDB_CROSS_SIM
config GDB_CROSS_PYTHON
bool
prompt "Enable python scripting"
- depends on GDB_HAS_PYTHON
- depends on ! GDB_CROSS_STATIC
- default y
+ depends on !GDB_CROSS_STATIC
+ default y if !CROSS_NATIVE && !CANADIAN
help
Say 'y' if you want to use Python scripting inside gdb.
Say 'n' if you do not want to.
@@ -50,6 +49,22 @@ config GDB_CROSS_PYTHON
have been reports of problems when linking gdb to the static
libpython.a. This should be fixed in gdb >=7.3. YMMV.
+config GDB_CROSS_PYTHON_BINARY
+ string "Python binary to use"
+ depends on GDB_CROSS_PYTHON
+ help
+ The path to a binary passed to GDB configure. You may need to
+ specify this if Python is not available under the default name
+ (i.e. 'python'). By default, crosstool-NG will try python, python3
+ and python2, in that order.
+
+ To use this option in a canadian/cross-native build, you will
+ need to provide a helper script that will report the compilation
+ and linking flags for the host's Python, since configure script
+ will not be able to run the interpreter and query it. See the
+ help message in gdb's configure script for the --with-python option
+ for further guidance.
+
config GDB_CROSS_EXTRA_CONFIG_ARRAY
string
prompt "Cross-gdb extra config"
diff --git a/config/debug/gdb.in.gdbserver b/config/debug/gdb.in.gdbserver
deleted file mode 100644
index 2f5576b..0000000
--- a/config/debug/gdb.in.gdbserver
+++ /dev/null
@@ -1,47 +0,0 @@
-# Menu for the native gdbserver
-
-config GDB_GDBSERVER
- bool
- prompt "gdbserver"
- default y
- depends on ! BARE_METAL
- help
- Build and install a gdbserver for the target, to run on the target.
-
-if GDB_GDBSERVER
-
-config GDB_GDBSERVER_HAS_IPA_LIB
- bool
- depends on GDB_7_2_or_later
- default y
-
-config GDB_GDBSERVER_STATIC
- bool
- prompt "Build a static gdbserver"
- depends on CONFIGURE_has_static_link
- default y
- help
- In case you have trouble with dynamic loading of shared libraries,
- you will find that a static gdbserver comes in handy.
-
-config GDB_GDBSERVER_BUILD_IPA_LIB
- bool
- prompt "Build the IPA library"
- depends on GDB_GDBSERVER_HAS_IPA_LIB && !GDB_GDBSERVER_STATIC
- help
- gdbserver >= 7.2 comes with an optional library to use tracepoints,
- the In Process Agent (IPA) library, libinproctrace.so.
-
- Say 'y' if you indend to use tracepoints when debugging your
- programs with gdbserver.
-
- Note: Currently, building this library is not possible when the
- gdbserver is built statically. This is a limitation in
- crosstool-NG, so do not bug upstream about it...
-
-endif # GDB_GDBSERVER
-
-if BARE_METAL
-comment "In bare-metal, you'll need to "
-comment "provide your own gdbserver stub."
-endif # BARE_METAL
diff --git a/config/debug/gdb.in.native b/config/debug/gdb.in.native
index 915debd..fc79084 100644
--- a/config/debug/gdb.in.native
+++ b/config/debug/gdb.in.native
@@ -1,23 +1,83 @@
-# Menu for the native GDB
+# Menu for the native GDB binaries (GDB itself and gdbserver)
config GDB_NATIVE
bool
prompt "Native gdb"
depends on ! BARE_METAL
- depends on ! BACKEND
+ depends on ! LIBC_BIONIC
+ depends on CC_LANG_CXX || !GDB_8_0_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_or_later
help
Build and install a native gdb for the target, to run on the target.
-if GDB_NATIVE
+config GDB_GDBSERVER
+ bool
+ prompt "gdbserver"
+ default y
+ depends on ! BARE_METAL
+ 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.
+
+if GDB_NATIVE || GDB_GDBSERVER
+
+config GDB_NATIVE_BUILD_IPA_LIB
+ bool
+ prompt "Build the IPA library"
+ depends on LIBC_GLIBC
+ depends on !GDB_NATIVE_STATIC
+ help
+ gdbserver >= 7.2 comes with an optional library to use tracepoints,
+ the In Process Agent (IPA) library, libinproctrace.so. This library
+ uses some GNU extensions from the C library.
+
+ Say 'y' if you intend to use tracepoints when debugging your
+ programs with gdbserver.
+
+ Note: Currently, building this library is not possible when the
+ gdbserver is built statically. This is a limitation in
+ crosstool-NG, so do not bug upstream about it...
config GDB_NATIVE_STATIC
bool
- prompt "Build a static native gdb"
- depends on CONFIGURE_has_static_link
+ prompt "Build a static gdb binaries"
+ depends on EXPERIMENTAL
help
In case you have trouble with dynamic loading of shared libraries,
you will find that a static gdb comes in handy.
+ However, it has been noticed at least on x86 that enabling this
+ option produces an invalid gdb binary. It is linked with
+ "-static -Wl,--dynamic-list=..." which
+ # (a) requests invalid program interpreter
+ # (b) crashes glibc/uClibc-ng and does not work with musl
+ # See https://sourceware.org/ml/libc-alpha/2017-03/msg00267.html
+
+ It is possible it would work with other architectures, hence it is
+ not completely removed. Use with care and report to the mailing list
+ if the resulting binaries work.
+
+ For further details, see:
+ https://sourceware.org/bugzilla/show_bug.cgi?id=19617
+ https://sourceware.org/bugzilla/show_bug.cgi?id=21086
+
+config GDB_NATIVE_STATIC_LIBSTDCXX
+ bool
+ prompt "Link against static libstdc+++"
+ depends on !GDB_NATIVE_STATIC
+ default n
+ help
+ Say 'y' if you do not want gdbserver to require libstdc++.so on the
+ target.
+
endif # GDB_NATIVE
+
+if BARE_METAL
+comment "In bare-metal, you'll need to "
+comment "provide your own gdbserver stub."
+endif # BARE_METAL
diff --git a/config/debug/ltrace.in b/config/debug/ltrace.in
index fc5822d..75bdf4f 100644
--- a/config/debug/ltrace.in
+++ b/config/debug/ltrace.in
@@ -1,41 +1,9 @@
# ltrace
-## depends on ! BACKEND
-##
## select LIBELF_TARGET
+## depends on ! LIBC_BIONIC
##
## help ltrace is a program that simply runs the specified command until it exits.
## 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.
-
-choice
- bool
- prompt "ltrace version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config LTRACE_V_0_7_3
- bool
- prompt "0.7.3"
-
-config LTRACE_V_0_5_3
- bool
- prompt "0.5.3 (OBSOLETE)"
- depends on OBSOLETE
- select LTRACE_0_5_3_CONFIGURE
-
-endchoice
-
-config LTRACE_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "0.7.3" if LTRACE_V_0_7_3
- default "0.5.3" if LTRACE_V_0_5_3
-
-# 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
diff --git a/config/debug/strace.in b/config/debug/strace.in
index 4cf6980..6f335b2 100644
--- a/config/debug/strace.in
+++ b/config/debug/strace.in
@@ -1,98 +1,3 @@
# strace
-## depends on ! BACKEND
-
-choice
- bool
- prompt "strace version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config STRACE_V_4_16
- bool
- prompt "4.16"
-
-config STRACE_V_4_15
- bool
- prompt "4.15"
-
-config STRACE_V_4_14
- bool
- prompt "4.14 (OBSOLETE)"
- depends on OBSOLETE
-
-config STRACE_V_4_13
- bool
- prompt "4.13 (OBSOLETE)"
- depends on OBSOLETE
-
-config STRACE_V_4_12
- bool
- prompt "4.12 (OBSOLETE)"
- depends on OBSOLETE
-
-config STRACE_V_4_11
- bool
- prompt "4.11 (OBSOLETE)"
- depends on OBSOLETE
-
-config STRACE_V_4_10
- bool
- prompt "4.10 (OBSOLETE)"
- depends on OBSOLETE
-
-config STRACE_V_4_9
- bool
- prompt "4.9 (OBSOLETE)"
- depends on OBSOLETE
-
-config STRACE_V_4_8
- bool
- prompt "4.8 (OBSOLETE)"
- depends on OBSOLETE
-
-config STRACE_V_4_7
- bool
- prompt "4.7 (OBSOLETE)"
- depends on OBSOLETE
-
-config STRACE_V_4_6
- bool
- prompt "4.6 (OBSOLETE)"
- depends on OBSOLETE
-
-config STRACE_V_4_5_20
- bool
- prompt "4.5.20 (OBSOLETE)"
- depends on OBSOLETE
-
-config STRACE_V_4_5_19
- bool
- prompt "4.5.19 (OBSOLETE)"
- depends on OBSOLETE
-
-config STRACE_V_4_5_18
- bool
- prompt "4.5.18 (OBSOLETE)"
- depends on OBSOLETE
-
-endchoice
-
-config STRACE_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "4.16" if STRACE_V_4_16
- default "4.15" if STRACE_V_4_15
- default "4.14" if STRACE_V_4_14
- default "4.13" if STRACE_V_4_13
- default "4.12" if STRACE_V_4_12
- default "4.11" if STRACE_V_4_11
- default "4.10" if STRACE_V_4_10
- default "4.9" if STRACE_V_4_9
- default "4.8" if STRACE_V_4_8
- default "4.7" if STRACE_V_4_7
- default "4.6" if STRACE_V_4_6
- default "4.5.20" if STRACE_V_4_5_20
- default "4.5.19" if STRACE_V_4_5_19
- default "4.5.18" if STRACE_V_4_5_18
+## depends on ! LIBC_BIONIC
diff --git a/config/global.in b/config/global.in
index 2860f1a..d2a5c5e 100644
--- a/config/global.in
+++ b/config/global.in
@@ -1,10 +1,59 @@
# Overall toolchain configuration: paths, jobs, etc...
+config VERSION
+ string
+ default "$(CT_VERSION)"
+
+# Config version checking framework. If CONFIG_VERSION is unset in the current .config
+# or defconfig, it is loaded as 0 (possibly triggering a user prompt during 'ct-ng oldconfig').
+# If the value of CONFIG_VERSION is older than CONFIG_VERSION_CURRENT, we'll advice the user
+# to run the configuration through an upgrade. If it is newer, we'll error out - I have no
+# crystal orb to perform the downgrade.
+
+# Hack to make kconfig save/load the value for CONFIG_VERSION. Set to empty value (for
+# normal operations like 'ct-ng menuconfig'); 'load' for creating a configuration from a (potentially)
+# old file, i.e. 'ct-ng <sample>' or 'ct-ng oldconfig'; 'save' for saving the current configuration,
+# i.e. 'ct-ng saveconfig' or 'ct-ng savedefconfig'.
+config VCHECK
+ string
+ default "$(CT_VCHECK)"
+
+# Kconfig's idiosynchrasy: it does not output the config settings declared with 'option env'
+# to the generated .config file. Must use one extra level of indirection.
+config CONFIG_VERSION_ENV
+ string
+ default "$(CT_CONFIG_VERSION_CURRENT)"
+
+# Up-to-date version of the configuration file. If saving a defconfig, choose a default that
+# is guaranteed not to match - so that kconfig saves the value to .config.
+config CONFIG_VERSION_CURRENT
+ string
+ default CONFIG_VERSION_ENV
+
+# Version used by the config being loaded (e.g. as part of 'oldconfig' or recalling
+# a defconfig. Make it changeable while loading/saving to force writing it to defconfig.
+config CONFIG_VERSION
+ string
+ prompt "** make it changeable **" if VCHECK = "load" || VCHECK = "save"
+ default "0" if VCHECK = "load" || VCHECK = "save"
+ default CONFIG_VERSION_CURRENT
+
+config INVALID_CONFIGURATION
+ bool
+
+if VCHECK = "warning"
+comment "*************************************************************************"
+comment "Loaded configuration was generated by a previous version of crosstool-NG."
+comment "Saving it will mark the configuration as up-to-date without verifying it."
+comment "It is recommended to run \"ct-ng upgradeconfig\" before making any "
+comment "changes to the configuration. "
+comment "*************************************************************************"
+endif
+
# Allow unconditional usage of tristates
config MODULES
- bool
+ def_bool y
option modules
- default y
menu "Paths and misc options"
diff --git a/config/global/build-behave.in b/config/global/build-behave.in
index 9ad5438..4af2f26 100644
--- a/config/global/build-behave.in
+++ b/config/global/build-behave.in
@@ -2,12 +2,9 @@
comment "Build behavior"
-comment "Build options hiden"
- depends on BACKEND
-
config PARALLEL_JOBS
int
- prompt "Number of parallel jobs" if ! BACKEND
+ prompt "Number of parallel jobs"
default 0
help
Number of jobs make will be allowed to run concurently.
@@ -16,11 +13,12 @@ config PARALLEL_JOBS
Enter 1 to have only one job at a time.
- Enter 0 to set automatically based on how many processors the host has.
+ Enter 0 to set automatically based on how many processors the build
+ machine has.
config LOAD
string
- prompt "Maximum allowed load" if ! BACKEND
+ prompt "Maximum allowed load"
default ""
help
Specifies that no new jobs should be started if there are others jobs
@@ -33,7 +31,7 @@ config LOAD
config USE_PIPES
bool
- prompt "Use -pipe" if ! BACKEND
+ prompt "Use -pipe"
default y
help
Use gcc's option -pipe to use pipes rather than temp files when building
@@ -48,7 +46,17 @@ config EXTRA_CFLAGS_FOR_BUILD
May be used to change the default features of the build
compiler such as turning off the stack protector or fortify.
-
+
+config EXTRA_CXXFLAGS_FOR_BUILD
+ string
+ prompt "Extra build compiler flags"
+ default ""
+ help
+ Extra flags to pass only to the build C++ compiler.
+
+ May be used to change the default features of the C++ build
+ compiler such as specifying the C++ standard to use.
+
config EXTRA_LDFLAGS_FOR_BUILD
string
prompt "Extra build linker flags"
@@ -83,7 +91,6 @@ choice
bool
prompt "Shell to use as CONFIG_SHELL"
default CONFIG_SHELL_BASH
- depends on ! BACKEND
config CONFIG_SHELL_SH
bool
@@ -141,13 +148,10 @@ config CONFIG_SHELL_CUSTOM
endchoice
-# Do not put this into the choice above, because the choice
-# is not available in BACKEND-mode, while we do want this to
-# be set even in BACKEND-mode.
config CONFIG_SHELL_CUSTOM_PATH
string
- prompt "Path to custom shell" if ! BACKEND
- depends on CONFIG_SHELL_CUSTOM || BACKEND
+ prompt "Path to custom shell"
+ depends on CONFIG_SHELL_CUSTOM
default "/bin/sh"
# Ditto.
@@ -157,4 +161,4 @@ config CONFIG_SHELL
default "/bin/sh" if CONFIG_SHELL_SH
default "/bin/ash" if CONFIG_SHELL_ASH
default "${bash}" if CONFIG_SHELL_BASH
- default CONFIG_SHELL_CUSTOM_PATH if CONFIG_SHELL_CUSTOM || BACKEND
+ default CONFIG_SHELL_CUSTOM_PATH if CONFIG_SHELL_CUSTOM
diff --git a/config/global/ct-behave.in b/config/global/ct-behave.in
index a57c798..42171e4 100644
--- a/config/global/ct-behave.in
+++ b/config/global/ct-behave.in
@@ -63,7 +63,6 @@ config ALLOW_BUILD_AS_ROOT_SURE
config DEBUG_CT
bool
prompt "Debug crosstool-NG"
- depends on ! BACKEND
help
Say 'y' here to get some options regarding debugging crosstool-NG.
diff --git a/config/global/download.in b/config/global/download.in
index fc79400..57f42e6 100644
--- a/config/global/download.in
+++ b/config/global/download.in
@@ -132,4 +132,54 @@ config MIRROR_BASE_URL
endif # USE_MIRROR
+config VERIFY_DOWNLOAD_DIGEST
+ bool "Verify download digests (checksums)"
+ default y
+ depends on CONFIGURE_has_sha512sum || CONFIGURE_has_sha256sum || CONFIGURE_has_sha1sum || CONFIGURE_has_md5sum
+
+if VERIFY_DOWNLOAD_DIGEST
+
+choice
+ prompt "Digest algorithm"
+
+config VERIFY_DOWNLOAD_DIGEST_SHA512
+ bool "SHA-512"
+ depends on CONFIGURE_has_sha512sum
+
+config VERIFY_DOWNLOAD_DIGEST_SHA256
+ depends on CONFIGURE_has_sha256sum
+ bool "SHA-256"
+
+config VERIFY_DOWNLOAD_DIGEST_SHA1
+ depends on CONFIGURE_has_sha1sum
+ bool "SHA-1"
+
+config VERIFY_DOWNLOAD_DIGEST_MD5
+ depends on CONFIGURE_has_md5sum
+ bool "MD5"
+
+endchoice
+
+config VERIFY_DOWNLOAD_DIGEST_ALG
+ string
+ default "md5" if VERIFY_DOWNLOAD_DIGEST_MD5
+ default "sha1" if VERIFY_DOWNLOAD_DIGEST_SHA1
+ default "sha256" if VERIFY_DOWNLOAD_DIGEST_SHA256
+ default "sha512" if VERIFY_DOWNLOAD_DIGEST_SHA512
+
+endif # VERIFY_DOWNLOAD_DIGEST
+
+config VERIFY_DOWNLOAD_SIGNATURE
+ bool "Verify detached signatures"
+ help
+ Verify the signatures for the downloads where available.
+ This requires the public keys for all the packages used in the build
+ to be imported into a keyring on the build machine.
+
+ Note that the validation will succeed so long as the signature
+ is known and valid, even if the signature is not trusted! GnuPG
+ issues a warning in this case, but ultimately reports that validation
+ succeeded. Check the log file if this is a concern; crosstool-NG
+ may add an option to verify this more paranoidally later.
+
endif # ! FORBID_DOWNLOAD
diff --git a/config/global/extract.in b/config/global/extract.in
index b754775..4e62480 100644
--- a/config/global/extract.in
+++ b/config/global/extract.in
@@ -40,60 +40,42 @@ config ONLY_EXTRACT
Useful to look at the code before doing the build itself.
choice
- prompt "Patches origin"
- bool
+ bool "Patches origin"
default PATCH_BUNDLED
config PATCH_BUNDLED
- bool
- prompt "Bundled only"
+ bool "Bundled only"
help
Only apply patches bundled with crosstool-NG.
config PATCH_LOCAL
- bool
- prompt "Local only"
+ bool "Local only"
select PATCH_USE_LOCAL
+ depends on EXPERIMENTAL
help
- Only apply your local patches.
+ Only apply your local patches. Many components require patching
+ to build or work properly; please review the bundled patches and
+ copy them into your local directory if needed.
config PATCH_BUNDLED_LOCAL
- bool
- prompt "Bundled, then local"
+ bool "Bundled, then local"
select PATCH_USE_LOCAL
help
- Apply the patches bundled with crosstool-NG,
- then apply your local patches.
+ Apply the patches bundled with crosstool-NG, then apply your local
+ patches.
config PATCH_LOCAL_BUNDLED
- bool
- prompt "Local, then bundled"
- select PATCH_USE_LOCAL
- help
- Apply your local patches, then apply the patches
- bundled with crosstool-NG.
-
-config PATCH_BUNDLED_FALLBACK_LOCAL
- bool
- prompt "Bundled only, local if no bundled"
- select PATCH_USE_LOCAL
- select PATCH_SINGLE
- help
- Apply the patches bundled with crosstool-NG;
- if there's no bundled patches, apply your local patches.
-
-config PATCH_LOCAL_FALLBACK_BUNDLED
- bool
- prompt "Local only, bundled if no local"
+ bool "Local, then bundled"
select PATCH_USE_LOCAL
- select PATCH_SINGLE
+ depends on EXPERIMENTAL
help
- Only apply your local patches;
- if there's no local patches, apply patches bundled with crosstool-NG.
+ Apply your local patches, then apply the patches bundled with
+ crosstool-NG. Note that the bundled patches cannot be guaranteed
+ to apply on top of your local patches.
config PATCH_NONE
- bool
- prompt "None"
+ bool "None"
+ depends on EXPERIMENTAL
help
Don't use any patch at all.
@@ -110,23 +92,22 @@ config PATCH_ORDER
string
default "bundled" if PATCH_BUNDLED
default "local" if PATCH_LOCAL
- default "bundled,local" if PATCH_BUNDLED_LOCAL || PATCH_BUNDLED_FALLBACK_LOCAL
- default "local,bundled" if PATCH_LOCAL_BUNDLED || PATCH_LOCAL_FALLBACK_BUNDLED
+ default "bundled,local" if PATCH_BUNDLED_LOCAL
+ default "local,bundled" if PATCH_LOCAL_BUNDLED
default "none" if PATCH_NONE
-config PATCH_SINGLE
- bool
-
config PATCH_USE_LOCAL
bool
config LOCAL_PATCH_DIR
string
- prompt "| Local patch directory"
+ prompt "Local patch directory"
default ""
depends on PATCH_USE_LOCAL
help
Enter the custom patch directory here.
- Note that you must ensure that the directory containing your custom
- patches is arranged the same way the official directory is.
+ Note that you must ensure that tree layout of the directory containing
+ your custom patches match the bundled patches one. For example, if you
+ have custom GCC patches for <gcc-version>, place them under
+ $LOCAL_PATCH_DIR/gcc/<gcc-version>.
diff --git a/config/global/paths.in b/config/global/paths.in
index 5313d0d..82ee4b3 100644
--- a/config/global/paths.in
+++ b/config/global/paths.in
@@ -4,7 +4,7 @@ comment "Paths"
config LOCAL_TARBALLS_DIR
string
- prompt "Local tarballs directory" if ! BACKEND
+ prompt "Local tarballs directory"
default "${HOME}/src"
help
If you have previously downloaded the tarballs, enter the PATH where
@@ -12,16 +12,27 @@ config LOCAL_TARBALLS_DIR
config SAVE_TARBALLS
bool
- prompt "Save new tarballs" if ! BACKEND
- depends on LOCAL_TARBALLS_DIR != "" || BACKEND
+ prompt "Save new tarballs"
+ depends on LOCAL_TARBALLS_DIR != ""
default y
help
If you say 'y' here, new downloaded tarballs will be saved in the
directory you entered above.
+config TARBALLS_BUILDROOT_LAYOUT
+ bool "Prefer buildroot-style layout of the downloads"
+ help
+ Buildroot switched the layout of its downloads directory to place
+ files for each package into a subdirectory named after that package.
+ Enable this option to have crosstool-NG create similar layout.
+ If this option is set and the required archive is located in
+ the directory with a legacy, flat layout, the archive will be moved
+ into a subdirectory. If this is option is not set, subdirectories
+ will neither be checked nor used to store the downloads.
+
config WORK_DIR
string
- prompt "Working directory" if ! BACKEND
+ prompt "Working directory"
default "${CT_TOP_DIR}/.build"
help
Set this to the directory where all build actions will be done.
@@ -42,11 +53,15 @@ config WORK_DIR
config BUILD_TOP_DIR
string
- default "${CT_WORK_DIR}/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}"
+ default "${CT_WORK_DIR:-${CT_TOP_DIR}/.build}/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}"
+
+config BUILD_DIR
+ string
+ default "${CT_BUILD_TOP_DIR}/build"
config PREFIX_DIR
string
- prompt "Prefix directory" if ! BACKEND
+ prompt "Prefix directory"
default "${CT_PREFIX:-${HOME}/x-tools}/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}"
help
This is the path the toolchain will run from.
@@ -55,7 +70,6 @@ config RM_RF_PREFIX_DIR
bool
prompt "| Remove the prefix dir prior to building"
default y
- depends on !BACKEND
help
If you say 'y' here, then PREFIX_DIR (above) will be eradicated
prior to the toolchain is built.
@@ -69,9 +83,6 @@ config RM_RF_PREFIX_DIR
it into a directory with pre-install, unrelated programs, it would be
damageable to remove that directory. In this case, you may want to
say 'n' here.
-
- Note that when acting as a backend, this option is not available, and
- is forced to 'n'.
config REMOVE_DOCS
bool
@@ -89,6 +100,15 @@ config BUILD_MANUALS
Build the PDF and HTML manuals for the main components such as
binutils, GCC, GDB, and the C library.
+config INSTALL_LICENSES
+ bool "Install licenses"
+ default y
+ help
+ Collect the license files for all the components that went into
+ producing this toolchain (including the crosstool-NG itself)
+ and place them in /share/licenses directory within the prefix
+ directory.
+
config PREFIX_DIR_RO
bool
prompt "Render the toolchain read-only"
diff --git a/config/kernel.in b/config/kernel.in
index 64b69c6..5c8a519 100644
--- a/config/kernel.in
+++ b/config/kernel.in
@@ -4,9 +4,11 @@ menu "Operating System"
# Config option used throughout the config and code to determine wether
# we have a kernel or not (there might be different bare metal stuff)...
+# FIXME use CT_KERNEL_bare_metal instead
config BARE_METAL
bool
+# FIXME use CT_KERNEL_windows instead
config WINDOWS
bool
@@ -16,13 +18,7 @@ config WINDOWS
config KERNEL_SUPPORTS_SHARED_LIBS
bool
-config KERNEL
- string
-
-config KERNEL_VERSION
- string
-
-source "config.gen/kernel.in"
+source "config/gen/kernel.in"
comment "Common kernel options"
@@ -30,6 +26,8 @@ config SHARED_LIBS
bool
prompt "Build shared libraries"
depends on KERNEL_SUPPORTS_SHARED_LIBS
+ # Building "shared flat" currently fails
+ depends on ARCH_USE_MMU || EXPERIMENTAL
default y
help
Say 'y' here, unless you don't want shared libraries.
@@ -37,6 +35,4 @@ config SHARED_LIBS
You might not want shared libraries if you're building for a target that
don't support it (maybe some nommu targets, for example, or bare metal).
-source "config.gen/kernel.in.2"
-
endmenu
diff --git a/config/kernel/bare-metal.in b/config/kernel/bare-metal.in
index fdccb0c..8ff875a 100644
--- a/config/kernel/bare-metal.in
+++ b/config/kernel/bare-metal.in
@@ -1,5 +1,6 @@
# Bare metal config options
+## no-package
## select BARE_METAL
##
## help 'Bare metal' refers to those programs that run without any kernel.
diff --git a/config/kernel/linux.in b/config/kernel/linux.in
index 0886f4c..a6cd40f 100644
--- a/config/kernel/linux.in
+++ b/config/kernel/linux.in
@@ -1,284 +1,59 @@
# Linux kernel options
-## depends on ! ARCH_avr
+## depends on !ARCH_AVR && !ARCH_MSP430 && !ARCH_MOXIE && !ARCH_PRU
## select KERNEL_SUPPORTS_SHARED_LIBS
-##
-## help Build a toolchain targeting systems running Linux as a kernel.
-
-config KERNEL_LINUX_CUSTOM
- bool
- prompt "custom tarball or directory"
- help
- The choosen linux version shall be not downloaded. Instead use
- a custom location to get the source.
-
-if KERNEL_LINUX_CUSTOM
-
-config KERNEL_LINUX_CUSTOM_LOCATION
- string
- prompt "Path to custom source, tarball or directory"
- help
- Enter the path to the directory or tarball of your source for linux.
-
- If the path is a tarball, it should extract to: <name>-<version>/
- where the name is this component, linux, and the version is set
- below in the custom version string.
-
-config KERNEL_LINUX_CUSTOM_VERSION
- string
- prompt "Custom Linux version"
- help
- Enter the version number for your custom linux.
-
-config KERNEL_VERSION
- string
- default KERNEL_LINUX_CUSTOM_VERSION
-endif # KERNEL_LINUX_CUSTOM
-
-if ! KERNEL_LINUX_CUSTOM
+## help Build a toolchain targeting systems running Linux as a kernel.
# GLIBC and kernel are special when it comes to obsoletion. Users
# of crosstool-ng depend on the ability to build new toolchains matching
# the kernel/libc versions of a particular target system, and LTS releases
# are still using quite ancient versions. Please do not retire versions
# (including versions in between) until the EOL dates indicated below.
-choice
- bool
- prompt "Linux kernel version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config KERNEL_V_4_9
- bool
- prompt "4.9.8"
-
-config KERNEL_V_4_8
- bool
- prompt "4.8.17 (EOL)"
- depends on OBSOLETE
-
-config KERNEL_V_4_7
- bool
- prompt "4.7.10 (EOL)"
- depends on OBSOLETE
-
-config KERNEL_V_4_6
- bool
- prompt "4.6.7 (EOL)"
- depends on OBSOLETE
-
-config KERNEL_V_4_5
- bool
- prompt "4.5.7 (EOL)"
- depends on OBSOLETE
-
-# EOL 04/2021 [Ubuntu16.04]
-config KERNEL_V_4_4
- bool
- prompt "4.4.47"
-
-config KERNEL_V_4_3
- bool
- prompt "4.3.6 (EOL)"
- depends on OBSOLETE
-
-config KERNEL_V_4_2
- bool
- prompt "4.2.8 (EOL)"
- depends on OBSOLETE
-
-config KERNEL_V_4_1
- bool
- prompt "4.1.38"
+# Such pinned versions are indicated in version.desc files with a comment.
-config KERNEL_V_4_0
- bool
- prompt "4.0.9 (EOL)"
- depends on OBSOLETE
-
-config KERNEL_V_3_19
- bool
- prompt "3.19.8 (EOL)"
- depends on OBSOLETE
+config KERNEL_DEP_RSYNC
+ def_bool y
+ select LINUX_REQUIRE_older_than_5_3 if !CONFIGURE_has_rsync
-config KERNEL_V_3_18
- bool
- prompt "3.18.47 (EOL)"
- depends on OBSOLETE
-
-config KERNEL_V_3_17
- bool
- prompt "3.17.8 (EOL)"
- depends on OBSOLETE
+comment "Linux >=5.3 requires rsync"
+ depends on !CONFIGURE_has_rsync
-config KERNEL_V_3_16
- bool
- prompt "3.16.39"
-
-config KERNEL_V_3_15
- bool
- prompt "3.15.10 (EOL)"
- depends on OBSOLETE
-
-config KERNEL_V_3_14
- bool
- prompt "3.14.79 (EOL)"
- depends on OBSOLETE
-
-# EOL 04/2019 [Ubuntu14.04]
-config KERNEL_V_3_13
- bool
- prompt "3.13.11 (EOL)"
- depends on OBSOLETE
-
-config KERNEL_V_3_12
- bool
- prompt "3.12.70"
-
-config KERNEL_V_3_11
- bool
- prompt "3.11.10 (EOL)"
- depends on OBSOLETE
-
-# EOL 06/2024 [CentOS7.x]
-config KERNEL_V_3_10
- bool
- prompt "3.10.104"
-
-config KERNEL_V_3_9
- bool
- prompt "3.9.11 (EOL)"
- depends on OBSOLETE
-
-config KERNEL_V_3_8
- bool
- prompt "3.8.13 (EOL)"
- depends on OBSOLETE
-
-config KERNEL_V_3_7
- bool
- prompt "3.7.10 (EOL)"
- depends on OBSOLETE
-
-config KERNEL_V_3_6
- bool
- prompt "3.6.11 (EOL)"
- depends on OBSOLETE
-
-config KERNEL_V_3_5
- bool
- prompt "3.5.7 (EOL)"
- depends on OBSOLETE
-
-config KERNEL_V_3_4
- bool
- prompt "3.4.113"
-
-config KERNEL_V_3_3
- bool
- prompt "3.3.8 (EOL)"
- depends on OBSOLETE
-
-# EOL 04/2017 [Ubuntu12.04]
-config KERNEL_V_3_2
- bool
- prompt "3.2.84"
-
-config KERNEL_V_3_1
- bool
- prompt "3.1.10 (EOL)"
- depends on OBSOLETE
-
-config KERNEL_V_3_0
- bool
- prompt "3.0.101 (EOL)"
- depends on OBSOLETE
-
-config KERNEL_V_2_6_39
- bool
- prompt "2.6.39.4 (EOL)"
- depends on OBSOLETE
-
-config KERNEL_V_2_6_38
- bool
- prompt "2.6.38.8 (EOL)"
- depends on OBSOLETE
-
-config KERNEL_V_2_6_37
- bool
- prompt "2.6.37.6 (EOL)"
- depends on OBSOLETE
-
-config KERNEL_V_2_6_36
- bool
- prompt "2.6.36.4 (EOL)"
- depends on OBSOLETE
-
-config KERNEL_V_2_6_35
+choice
bool
- prompt "2.6.35.9 (EOL)"
- depends on OBSOLETE
+ prompt "Kernel verbosity:"
+ default KERNEL_LINUX_VERBOSITY_0
-config KERNEL_V_2_6_34
+config KERNEL_LINUX_VERBOSITY_0
bool
- prompt "2.6.34.7 (EOL)"
- depends on OBSOLETE
+ prompt "Simplified"
+ help
+ Print simplified command lines.
-config KERNEL_V_2_6_33
+config KERNEL_LINUX_VERBOSITY_1
bool
- prompt "2.6.33.7 (EOL)"
- depends on OBSOLETE
+ prompt "Full commands"
+ help
+ Print full command lines.
-# EOL 11/2020 [CentOS6.x]
-config KERNEL_V_2_6_32
+config KERNEL_LINUX_VERBOSITY_2
bool
- prompt "2.6.32.27 (EOL)"
- depends on OBSOLETE
+ prompt "Exec reasons"
+ help
+ Print the reasons why a make target is rebuild.
endchoice
-config KERNEL_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "4.9.8" if KERNEL_V_4_9
- default "4.8.17" if KERNEL_V_4_8
- default "4.7.10" if KERNEL_V_4_7
- default "4.6.7" if KERNEL_V_4_6
- default "4.5.7" if KERNEL_V_4_5
- default "4.4.47" if KERNEL_V_4_4
- default "4.3.6" if KERNEL_V_4_3
- default "4.2.8" if KERNEL_V_4_2
- default "4.1.38" if KERNEL_V_4_1
- default "4.0.9" if KERNEL_V_4_0
- default "3.19.8" if KERNEL_V_3_19
- default "3.18.47" if KERNEL_V_3_18
- default "3.17.8" if KERNEL_V_3_17
- default "3.16.39" if KERNEL_V_3_16
- default "3.15.10" if KERNEL_V_3_15
- default "3.14.79" if KERNEL_V_3_14
- default "3.13.11" if KERNEL_V_3_13
- default "3.12.70" if KERNEL_V_3_12
- default "3.11.10" if KERNEL_V_3_11
- default "3.10.104" if KERNEL_V_3_10
- default "3.9.11" if KERNEL_V_3_9
- default "3.8.13" if KERNEL_V_3_8
- default "3.7.10" if KERNEL_V_3_7
- default "3.6.11" if KERNEL_V_3_6
- default "3.5.7" if KERNEL_V_3_5
- default "3.4.113" if KERNEL_V_3_4
- default "3.3.8" if KERNEL_V_3_3
- default "3.2.84" if KERNEL_V_3_2
- default "3.1.10" if KERNEL_V_3_1
- default "3.0.101" if KERNEL_V_3_0
- default "2.6.39.4" if KERNEL_V_2_6_39
- default "2.6.38.8" if KERNEL_V_2_6_38
- default "2.6.37.6" if KERNEL_V_2_6_37
- default "2.6.36.4" if KERNEL_V_2_6_36
- default "2.6.35.9" if KERNEL_V_2_6_35
- default "2.6.34.7" if KERNEL_V_2_6_34
- default "2.6.33.7" if KERNEL_V_2_6_33
- default "2.6.32.27" if KERNEL_V_2_6_32
+config KERNEL_LINUX_VERBOSE_LEVEL
+ int
+ default 0 if KERNEL_LINUX_VERBOSITY_0
+ default 1 if KERNEL_LINUX_VERBOSITY_1
+ default 2 if KERNEL_LINUX_VERBOSITY_2
-endif # ! KERNEL_LINUX_CUSTOM
+config KERNEL_LINUX_INSTALL_CHECK
+ bool
+ prompt "Check installed headers"
+ default y
+ help
+ If you are in doubt that installed headers are buggy, say 'Y'
+ here to have an extra check passed onto the headers.
diff --git a/config/kernel/linux.in.2 b/config/kernel/linux.in.2
deleted file mode 100644
index 80e13f3..0000000
--- a/config/kernel/linux.in.2
+++ /dev/null
@@ -1,40 +0,0 @@
-# Linux kernel options
-
-choice
- bool
- prompt "Kernel verbosity:"
- default KERNEL_LINUX_VERBOSITY_0
-
-config KERNEL_LINUX_VERBOSITY_0
- bool
- prompt "Simplified"
- help
- Print simplified command lines.
-
-config KERNEL_LINUX_VERBOSITY_1
- bool
- prompt "Full commands"
- help
- Print full command lines.
-
-config KERNEL_LINUX_VERBOSITY_2
- bool
- prompt "Exec reasons"
- help
- Print the reasons why a make target is rebuild.
-
-endchoice
-
-config KERNEL_LINUX_VERBOSE_LEVEL
- int
- default 0 if KERNEL_LINUX_VERBOSITY_0
- default 1 if KERNEL_LINUX_VERBOSITY_1
- default 2 if KERNEL_LINUX_VERBOSITY_2
-
-config KERNEL_LINUX_INSTALL_CHECK
- bool
- prompt "Check installed headers"
- default y
- help
- If you are in doubt that installed headers are buggy, say 'Y'
- here to have an extra check passed onto the headers.
diff --git a/config/kernel/windows.in b/config/kernel/windows.in
index 797c023..33ca5af 100644
--- a/config/kernel/windows.in
+++ b/config/kernel/windows.in
@@ -1,6 +1,7 @@
# windows config options
-## depends on ARCH_x86
+## no-package
+## depends on ARCH_X86
## depends on EXPERIMENTAL
##
## select WINDOWS
diff --git a/config/libc.in b/config/libc.in
index cd3ccec..c132fc6 100644
--- a/config/libc.in
+++ b/config/libc.in
@@ -2,24 +2,7 @@
menu "C-library"
-config LIBC
- string
-
-config LIBC_VERSION
- string
- help
- Enter the date of the snapshot you want to use in the form: YYYYMMDD
- where YYYY is the 4-digit year, MM the 2-digit month and DD the 2-digit
- day in the month.
-
- Please note:
- - glibc has snapshots done every monday, and only the last ten are kept.
- - uClibc has daily snapshots, and only the last 30-or-so are kept.
-
- So if you want to be able to re-build your toolchain later, you will
- have to save your C library tarball by yourself.
-
-source "config.gen/libc.in"
+source "config/gen/libc.in"
config LIBC_SUPPORT_THREADS_ANY
bool
@@ -47,7 +30,7 @@ config THREADS
string
default "none" if THREADS_NONE
-if ! LIBC_none
+if ! LIBC_NONE
comment "Common C library options"
@@ -87,6 +70,26 @@ config THREADS_NONE
endchoice
+config CREATE_LDSO_CONF
+ bool "Create /etc/ld.so.conf file"
+ depends on SHARED_LIBS
+ default y if MULTILIB
+ help
+ Create /etc/ld.so.conf file in the sysroot directory for the
+ target.
+
+ Note that Buildroot errors out if it sees /etc/ld.so.conf.
+
+config LDSO_CONF_EXTRA_DIRS_ARRAY
+ string "Extra directories to add to /etc/ld.so.conf"
+ depends on CREATE_LDSO_CONF
+ help
+ Extra directories to include in /etc/ld.so.conf. The directories
+ will be augmented per compiler's multilib specification,
+ if applicable. For example, if the compiler's multilibs include
+ /lib and /lib64, and you specify /usr/local/lib here, ld.so.conf
+ will have both /usr/local/lib and /usr/local/lib64.
+
config LIBC_XLDD
bool
prompt "Install a cross ldd-like helper"
@@ -103,8 +106,6 @@ config LIBC_XLDD
for the native ldd. Please see the help, by running it
with '--help' for more explanations.
-source "config.gen/libc.in.2"
-
-endif # ! LIBC_none
+endif # ! LIBC_NONE
endmenu
diff --git a/config/libc/avr-libc.in b/config/libc/avr-libc.in
index 2b8d891..ac037b7 100644
--- a/config/libc/avr-libc.in
+++ b/config/libc/avr-libc.in
@@ -1,74 +1,21 @@
# avr-libc options
-## depends on ARCH_avr
-## depends on ! LINUX && ! WINDOWS && BARE_METAL
+# Do not canonicalize the target tuple: avr-libc requires a non-canonical "avr" target.
+#
+## depends on ARCH_AVR
+## depends on BARE_METAL
##
## select LIBC_SUPPORT_THREADS_NONE
+## select OMIT_TARGET_VENDOR
+## select TARGET_SKIP_CONFIG_SUB
##
## help The AVR Libc package provides a subset of the standard C library for
## help Atmel AVR 8-bit RISC microcontrollers. In addition, the library
## help provides the basic startup code needed by most applications.
-config LIBC_AVR_LIBC_CUSTOM
- bool
- prompt "Custom avr-libc"
- depends on EXPERIMENTAL
- help
- The choosen avr-libc version shall be not downloaded. Instead use
- a custom location to get the source.
-
-if LIBC_AVR_LIBC_CUSTOM
-
-config LIBC_AVR_LIBC_CUSTOM_LOCATION
- string
- prompt "Full path to custom avr-libc source"
- help
- Enter the path to the directory or tarball of your source for avr-libc.
-
- If the path is a tarball, it should extract to: <name>-<version>/
- where the name is this component, avr-libc, and the version is set
- below in the custom version string.
-
-config LIBC_AVR_LIBC_CUSTOM_VERSION
+config LIBC_AVR_LIBC_EXTRA_CONFIG_ARRAY
string
- prompt "Custom AVR-Libc version"
+ prompt "Extra config for avr-libc"
+ default ""
help
- Enter the version number for your custom avr-libc.
-
-config LIBC_VERSION
- string
- default LIBC_AVR_LIBC_CUSTOM_VERSION
-
-endif # LIBC_AVR_LIBC_CUSTOM
-
-if ! LIBC_AVR_LIBC_CUSTOM
-
-choice
- bool
- prompt "avr-libc version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config LIBC_AVR_LIBC_V_2_0_0
- bool
- prompt "2.0.0"
-
-config LIBC_AVR_LIBC_V_1_8_1
- bool
- prompt "1.8.1"
-
-config LIBC_AVR_LIBC_V_1_8_0
- bool
- prompt "1.8.0"
-
-endchoice
-
-config LIBC_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "2.0.0" if LIBC_AVR_LIBC_V_2_0_0
- default "1.8.1" if LIBC_AVR_LIBC_V_1_8_1
- default "1.8.0" if LIBC_AVR_LIBC_V_1_8_0
-
-endif # ! LIBC_AVR_LIBC_CUSTOM
+ Extra flags to pass onto ./configure when configuring the avr-libc.
diff --git a/config/libc/avr-libc.in.2 b/config/libc/avr-libc.in.2
deleted file mode 100644
index 89a182f..0000000
--- a/config/libc/avr-libc.in.2
+++ /dev/null
@@ -1,8 +0,0 @@
-# avr-libc second-part options
-
-config LIBC_AVR_LIBC_EXTRA_CONFIG_ARRAY
- string
- prompt "Extra config for avr-libc"
- default ""
- help
- Extra flags to pass onto ./configure when configuring the avr-libc.
diff --git a/config/libc/bionic.in b/config/libc/bionic.in
new file mode 100644
index 0000000..b8b889c
--- /dev/null
+++ b/config/libc/bionic.in
@@ -0,0 +1,127 @@
+# bionic options
+
+
+## package android-ndk
+## depends on ! WINDOWS && ! BARE_METAL
+## depends on ARCH_ARM || ARCH_MIPS || ARCH_X86
+## depends on EXPERIMENTAL
+## depends on OBSOLETE
+#
+# 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.
+## help This platform has no TLS (Thread Local Storage) support so that option must be
+## help disabled in the Compiler options.
+
+config THREADS
+ default "posix"
+
+# FIXME does API level depend on the bionic version? generate that, too?
+choice
+ bool
+ prompt "Android API level"
+ help
+ The minimum for 64 bit support is 21.
+
+config ANDROID_API_28
+ bool
+ prompt "28"
+
+config ANDROID_API_27
+ bool
+ prompt "27"
+
+config ANDROID_API_26
+ bool
+ prompt "26"
+
+config ANDROID_API_24
+ bool
+ prompt "24"
+
+config ANDROID_API_23
+ bool
+ prompt "23"
+
+config ANDROID_API_22
+ bool
+ prompt "22"
+
+config ANDROID_API_21
+ bool
+ prompt "21"
+
+config ANDROID_API_19
+ bool
+ prompt "19"
+ depends on ARCH_32
+
+config ANDROID_API_18
+ bool
+ prompt "18"
+ depends on ARCH_32
+
+config ANDROID_API_17
+ bool
+ prompt "17"
+ depends on ARCH_32
+
+config ANDROID_API_16
+ bool
+ prompt "16"
+ depends on ARCH_32
+
+config ANDROID_API_15
+ bool
+ prompt "15"
+ depends on ARCH_32
+
+config ANDROID_API_14
+ bool
+ prompt "14"
+ depends on ARCH_32
+
+config ANDROID_API_13
+ bool
+ prompt "13"
+ depends on ARCH_32
+
+config ANDROID_API_12
+ bool
+ prompt "12"
+ depends on ARCH_32
+
+config ANDROID_API_9
+ bool
+ prompt "9"
+ depends on ARCH_32
+
+endchoice
+
+config ANDROID_API
+ string
+ default "28" if ANDROID_API_28
+ default "27" if ANDROID_API_27
+ default "26" if ANDROID_API_26
+ default "24" if ANDROID_API_24
+ default "23" if ANDROID_API_23
+ default "22" if ANDROID_API_22
+ default "21" if ANDROID_API_21
+ default "19" if ANDROID_API_19
+ default "18" if ANDROID_API_18
+ default "17" if ANDROID_API_17
+ default "16" if ANDROID_API_16
+ default "15" if ANDROID_API_15
+ default "14" if ANDROID_API_14
+ default "13" if ANDROID_API_13
+ default "12" if ANDROID_API_12
+ default "9" if ANDROID_API_9
diff --git a/config/libc/glibc.in b/config/libc/glibc.in
index 9e4ff56..3da38bd 100644
--- a/config/libc/glibc.in
+++ b/config/libc/glibc.in
@@ -1,222 +1,427 @@
-# glibc options
+# This file contains the common configuration options
+# that apply to both glibc.
## depends on ! WINDOWS && ! BARE_METAL && ARCH_USE_MMU
-##
## select LIBC_SUPPORT_THREADS_NATIVE
-## select CC_CORE_PASSES_NEEDED
+## select CC_CORE_NEEDED
+# TBD: select GETTEXT for build only, not for host
## select GETTEXT_NEEDED
-##
+## select BINUTILS_FORCE_LD_BFD_DEFAULT
+
## help The de-facto standard for Linux distributions.
## help Feature-rich, but large... Most useful for desktop-like systems.
+# GLIBC and kernel are special when it comes to obsoletion. Users
+# of crosstool-ng depend on the ability to build new toolchains matching
+# the kernel/libc versions of a particular target system, and LTS releases
+# are still using quite ancient versions. Please do not retire versions
+# (including versions in between) until the EOL dates indicated in version.desc.
+
+if GLIBC_USE_PORTS_EXTERNAL
+source "config/versions/glibc-ports.in"
+endif
+
+# Glibc has some dependencies on the kernel headers:
+config GLIBC_DEP_KERNEL_HEADERS_VERSION
+ def_bool y
+ select LINUX_REQUIRE_3_2_or_later if GLIBC_2_24_or_later
+
+# Glibc 2.26 requires at least binutils 2.25.
+# Also, binutils 2.30 fail while compiling aarch64 glibc; fixed in 2.27
+# and backported to 2.26. For other versions, require binutils older than
+# 2.30 (if the patch is backported, binutils 2.23 will break).
+config GLIBC_DEP_BINUTILS
+ def_bool y
+ select BINUTILS_REQUIRE_2_25_or_later if GLIBC_2_26_or_later
+ select BINUTILS_REQUIRE_older_than_2_30 if GLIBC_older_than_2_26 && ARCH_ARM && ARCH_64
+
+# Glibc 2.26 requires GCC4.9 or newer
+# Glibc 2.29 requires GCC5+ or, for ppc64le, GCC6.2+. We only support the latest
+# release on GCC6 branch, so just assume it is newer than 6.2
+# Glibc 2.30 uncondtionally requires GCC 6.2+
+config GLIBC_DEP_GCC
+ def_bool y
+ select GCC_REQUIRE_4_9_or_later if GLIBC_2_26_or_later
+ select GCC_REQUIRE_5_or_later if GLIBC_2_29_or_later
+ select GCC_REQUIRE_6_or_later if GLIBC_2_29_or_later && ARCH_POWERPC && ARCH_64 && ARCH_LE
+ select GCC_REQUIRE_6_or_later if GLIBC_2_30_or_later
+
+# Glibc 2.29 requires bison 2.7 or later. All versions in ct-ng satisfy that
+# version requirement.
+config GLIBC_DEP_BISON
+ def_bool y
+ depends on GLIBC_2_29_or_later && !CONFIGURE_has_bison_2_7_or_newer
+ select COMP_TOOLS_BISON
+
+# Glibc 2.29 now requires Python 3.4 or later, and make 4.0 or later. Ensure
+# we build 'make' as a companion tool if host's make isn't new enough.
+config GLIBC_DEP_PYTHON
+ def_bool y
+ select GLIBC_REQUIRE_older_than_2_29 if !CONFIGURE_has_python_3_4_or_newer
+
+comment "glibc >=2.29 requires python >3.4"
+ depends on !CONFIGURE_has_python_3_4_or_newer
+
+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_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
+# required UltraSPARC)
+config GLIBC_SPARC_ALLOW_V7
+ def_bool y
+ depends on GLIBC_2_30_or_older
+
config THREADS
default "nptl"
-config LIBC_GLIBC_CUSTOM
- bool
- prompt "Custom glibc"
- depends on EXPERIMENTAL
- select LIBC_CUSTOM
- select LIBC_GLIBC_2_20_or_later
+config GLIBC_BUILD_SSP
+ def_bool y
+ depends on GLIBC_2_25_or_later
+
+# Known add-ons and when they exist(ed)
+# crypt external in 2.1, no longer an add-on since 2.2
+# libidn external in 2.3.4 .. 2.10, still an add-on
+# linuxthreads external in 2.0.1 .. 2.5, no longer available since 2.6 [*]
+# localedata external in 2.0.1 .. 2.0.6, no longer an add-on since 2.1 [*]
+# ports external in 2.3.4 .. 2.16, no longer an add-on since 2.20
+# nptl never external, no longer an add-on since 2.20
+#
+# Given the list of currently supported glibc releases, we only need to worry about
+# 'libidn', 'ports' and 'nptl' add-ons. Of these, only 'ports' can be an external
+# tarball; and only 'libidn' is user-selectable ('ports' & 'nptl' are selected
+# by crosstool-NG, as dictated by the architecture and thread model).
+#
+# I had trouble locating the sources in the repository for some of the released
+# versions. E.g., there is a 2.5 version of linuxthreads, but the tag for 2.5 in Git
+# does not have the linuxthreads directory at all. Similarly, 2.0.6 tag did not have
+# localedata. Since these releases are no longer supported by crosstool-NG, this is
+# of pure historical interest now, however.
+
+config GLIBC_HAS_NPTL_ADDON
+ def_bool y
+ depends on !GLIBC_2_20_or_later
+
+config GLIBC_HAS_PORTS_ADDON
+ def_bool y
+ depends on !GLIBC_2_20_or_later
+ depends on !GLIBC_USE_ORACLE
+
+config GLIBC_HAS_PORTS_ADDON_EXTERNAL
+ def_bool y
+ depends on !GLIBC_2_17_or_later
+
+# In case it folds into main distribution in some future release, too
+config GLIBC_HAS_LIBIDN_ADDON
+ def_bool y
+
+# Some architectures require the ports addon. List them one by one here:
+# This list must be carefully in sync with the architectures names
+# 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 GLIBC_HAS_PORTS_ADDON
+ depends on !GLIBC_USE_ORACLE
+
+config GLIBC_USE_PORTS_EXTERNAL
+ def_bool y
+ depends on GLIBC_USE_PORTS_ADDON && GLIBC_HAS_PORTS_ADDON_EXTERNAL
+
+config GLIBC_USE_NPTL_ADDON
+ def_bool y
+ depends on THREADS_NATIVE && GLIBC_HAS_NPTL_ADDON
+
+config GLIBC_USE_LIBIDN_ADDON
+ bool "Build libidn add-on"
help
- The choosen glibc version shall be not downloaded. Instead use
- a custom location to get the source.
-
-if LIBC_GLIBC_CUSTOM
-
-config LIBC_GLIBC_CUSTOM_LOCATION
+ Enables the libidn add-on in GNU libc.
+
+# SPARCv8 support retired in 2.23
+config GLIBC_NO_SPARC_V8
+ def_bool y
+ depends on GLIBC_2_23_or_later
+
+# 2.14 obsoleted Sun RPC code, making it unavailable *at all* for compiling/linking
+# (only remained as versioned symbols for previously linked binaries). They backpedaled
+# in 2.16, adding an option to enable that code. Crosstool-NG backports that code
+# to 2.14/2.15, but there is no harm in throwing this option even if that patch
+# is not applied.
+# The option and the code has finally been removed in 2.32
+config GLIBC_HAS_OBSOLETE_RPC
+ def_bool y
+ depends on GLIBC_2_14_or_later && !GLIBC_2_32_or_later
+
+config GLIBC_EXTRA_CONFIG_ARRAY
string
- prompt "Full path to custom glibc source"
+ prompt "extra config"
+ default ""
help
- Enter the path to the directory or tarball of your source for glibc.
+ Extra flags to pass onto ./configure when configuring.
- If the path is a tarball, it should extract to: <name>-<version>/
- where the name is this component, glibc, and the version is set
- below in the custom version string.
+ You can enter multiple arguments here, and arguments can contain spaces
+ if they are properly quoted (or escaped, but prefer quotes). Eg.:
+ --with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space
-config LIBC_GLIBC_CUSTOM_VERSION
+config GLIBC_CONFIGPARMS
string
- prompt "Custom GLIBC version"
+ prompt "Extra config params (READ HELP)"
+ default "" if ! ARCH_SH
+ default "no-z-defs=yes" if ARCH_SH
help
- Enter the version number for your custom glibc.
+ Some architectures need to set options in the file configparms.
+ This is the case for sh3/4, which really need to set configparms
+ to "no-z-defs=yes" as of gcc-3.4/glibc-2.3.2.
+
+ Unless you are building a toolchain for sh3/4, you should leave that empty.
+
+ Note: If you need to pass more than one value, separate them with
+ '\n'. Eg.: var1=val1\nvar2=val2
-config LIBC_VERSION
+config GLIBC_EXTRA_CFLAGS
string
- default LIBC_GLIBC_CUSTOM_VERSION
-
-endif # LIBC_GLIBC_CUSTOM
+ 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 ""
+ help
+ Extra target CFLAGS to use when building.
-if ! LIBC_GLIBC_CUSTOM
+config GLIBC_ENABLE_OBSOLETE_RPC
+ bool "Enable obsolete (Sun) RPC"
+ default y
+ depends on GLIBC_HAS_OBSOLETE_RPC
+ help
+ Allow building applications using obsolete (Sun) RPC.
-config CC_GLIBC_SHOW_LINARO
+config GLIBC_ENABLE_FORTIFIED_BUILD
bool
- prompt "Show Linaro versions"
+ prompt "Enable fortified build (EXPERIMENTAL)"
+ depends on EXPERIMENTAL
help
- Linaro is maintaining some advanced/more stable/experimental versions
- of glibc, especially for the ARM architecture.
-
- Those versions have not been blessed by the glibc comunity (nor have they
- been cursed either!), but they look to be pretty much stable, and even
- more stable than the upstream versions. YMMV...
+ If you say 'y' here, then glibc will be using fortified versions
+ of functions with format arguments (eg. vsyslog, printf...), and
+ do a sanity check on the format at runtime, to avoid some of the
+ common format string attacks.
- If you do not know what this Linaro stuff is, then simply say 'n' here,
- and rest in peace. OTOH, if you know what you are doing, you will be
- able to use and enjoy :-) the Linaro versions by saying 'y' here.
+ This is currently not supported, and will most probably result in
+ a broken build, with an error message like:
+ ../misc/syslog.c: In function '__vsyslog_chk':
+ ../misc/syslog.c:123: sorry, unimplemented: inlining failed in
+ call to 'syslog': function body not available
- Linaro: http://www.linaro.org/
+ If you are brave enough and want to debug the issue, then say 'y'
+ here. Otherwise, be still and say 'n' (the default). ;-)
-# GLIBC and kernel are special when it comes to obsoletion. Users
-# of crosstool-ng depend on the ability to build new toolchains matching
-# the kernel/libc versions of a particular target system, and LTS releases
-# are still using quite ancient versions. Please do not retire versions
-# (including versions in between) until the EOL dates indicated below.
-choice
- bool
- prompt "glibc version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-config LIBC_GLIBC_V_2_25
+config GLIBC_DISABLE_VERSIONING
bool
- prompt "2.25"
- select LIBC_GLIBC_2_23_or_later
+ prompt "Disable symbols versioning"
+ help
+ Do not include versioning information in the library objects.
-config LIBC_GLIBC_V_2_24
- bool
- prompt "2.24"
- select LIBC_GLIBC_2_23_or_later
+config GLIBC_OLDEST_ABI
+ string
+ prompt "Oldest supported ABI"
+ default ""
+ help
+ Set the oldest ABI supported by the C library.
+
+ Setting this option, for example, to 2.2 will provide ABI support
+ back to (e)glibc-2.2.
-# EOL 04/2021 [Ubuntu16.04]
-config LIBC_GLIBC_V_2_23
- bool
- prompt "2.23"
- select LIBC_GLIBC_2_23_or_later
+ If this option is not set, (e)glibc will choose for you.
-config LIBC_GLIBC_V_2_22
+config GLIBC_FORCE_UNWIND
bool
- prompt "2.22 (OBSOLETE)"
- select LIBC_GLIBC_2_20_or_later
- depends on OBSOLETE
+ prompt "Force unwind support (READ HELP!)"
+ default y
+ help
+ If your toolchain fails building while building the C library
+ start files, or the complete C library, with a message like:
+ configure: error: forced unwind support is required
+
+ then you may try changing this option. Otherwise, leave it to
+ the default 'y'.
+
+ The issue seems to be related to building NPTL on old versions
+ of glibc on some architectures
+ (seen on s390, s390x and x86_64).
-config LIBC_GLIBC_V_2_21
+config GLIBC_LOCALES
bool
- prompt "2.21 (OBSOLETE)"
- select LIBC_GLIBC_2_20_or_later
- depends on OBSOLETE
-
-config LIBC_GLIBC_LINARO_V_2_20
+ prompt "Build and install locales"
+ help
+ Whether to build and install the libc locale files for the target,
+ which is required in order to support internationalization.
+
+if LIBC_GLIBC && GLIBC_LOCALES
+comment "WARNING! "
+comment "| The built locales will be usable if and only if the build "
+comment "| machine and the target: "
+comment "| - have the same endianness, "
+comment "| - and have the same alignment requirements for uint32_t. "
+comment "| You will have to check by yourself (for now). "
+comment "WARNING! "
+comment "| Building GLIBC locales requires that GLIBC supports "
+comment "| the build machine as the target. "
+endif # LIBC_GLIBC && GLIBC_LOCALES
+
+if KERNEL_LINUX
+
+choice GLIBC_SUPPORTED_KERNEL
bool
- prompt "Linaro 2.20-2014.11 (OBSOLETE)"
- select LIBC_GLIBC_2_20_or_later
- depends on CC_GLIBC_SHOW_LINARO
- depends on OBSOLETE
+ prompt "Minimum supported kernel version"
+ default GLIBC_KERNEL_VERSION_AS_HEADERS
-config LIBC_GLIBC_V_2_20
+config GLIBC_KERNEL_VERSION_NONE
bool
- prompt "2.20 (OBSOLETE)"
- select LIBC_GLIBC_2_20_or_later
- depends on OBSOLETE
-
-# EOL 04/2019 [Ubuntu14.04]
-config LIBC_GLIBC_V_2_19
+ prompt "Let ./configure decide"
+ help
+ Let ./configure decide what minimum kernel version glibc will be
+ able to run against.
+
+ This will include legacy compatibility code for older kernels in
+ the C library, thus ensuring that it will run on a large number
+ of old kernels.
+
+ The minimum kernel version supported will be dependent upon the
+ target you build for. For example:
+ alpha*-*-linux-gnu Requires Linux 2.6.9 for NPTL
+ sh[34]-*-linux-gnu Requires Linux 2.6.11
+ powerpc* Requires Linux 2.4.19
+ arm*-*-linux-*gnueabi Requires Linux 2.6.16
+
+config GLIBC_KERNEL_VERSION_AS_HEADERS
bool
- prompt "2.19 (OBSOLETE)"
- depends on OBSOLETE
- select LIBC_GLIBC_2_17_or_later
+ prompt "Same as kernel headers (default)"
+ help
+ Normally, you'll want glibc to run against the same kernel
+ version as the one used for the headers.
+
+ This is the default.
+
+ If enabled, crosstool-ng will use the chosen version of kernel
+ headers for the glibc minimum kernel version supported, which is
+ what gets passed to "--enable-kernel=" when configuring glibc.
+
+ Enabling this will ensure that no legacy compatibility code for
+ older kernels is built into your C libraries, but it will
+ be unable to run on kernel versions older than whichever kernel
+ headers version you've built the toolchain for.
+
+ If you know for sure that your toolchain will never need to build
+ applications that will run under a kernel version older than your
+ chosen kernel headers version (CT_KERNEL_VERSION), you can choose
+ "y" here.
-config LIBC_GLIBC_V_2_18
+config GLIBC_KERNEL_VERSION_CHOSEN
bool
- prompt "2.18 (OBSOLETE)"
- depends on OBSOLETE
- select LIBC_GLIBC_2_17_or_later
+ prompt "Specific kernel version"
+ help
+ Specify the earliest Linux kernel version you want glibc to
+ include support for. This does not have to match the kernel
+ headers version used for your toolchain. This controls what is
+ passed to the "--enable-kernel=" option to the glibc configure
+ script.
-# EOL 06/2024 [CentOS7.x]
-config LIBC_GLIBC_V_2_17
- bool
- prompt "2.17 (OBSOLETE)"
- depends on OBSOLETE
- select LIBC_GLIBC_2_17_or_later
+ If you want to be able to statically link programs with your
+ toolchain's C library, make sure this kernel version is lower than
+ all kernels you wish to support to avoid "FATAL: kernel too old"
+ errors. The higher the version you specify, the less legacy code
+ will be built into libc.
-config LIBC_GLIBC_V_2_16_0
- bool
- prompt "2.16.0 (OBSOLETE)"
- depends on OBSOLETE
+ Most people can leave this at the default value of "2.6.9".
-# EOL 04/2017 [Ubuntu12.04]
-config LIBC_GLIBC_V_2_15
- bool
- prompt "2.15 (OBSOLETE)"
- depends on OBSOLETE
+if GLIBC_KERNEL_VERSION_CHOSEN
-config LIBC_GLIBC_V_2_14_1
- bool
- prompt "2.14.1 (OBSOLETE)"
- depends on OBSOLETE
+config GLIBC_MIN_KERNEL_VERSION
+ string
+ prompt "Minimum kernel version to support"
+ default "2.6.9"
+ help
+ Enter here the lowest kernel version glibc will be able to run against.
+
+ The minimum kernel version supported will be dependent upon the
+ target you build for. For example:
+ alpha*-*-linux-gnu Requires Linux 2.6.9 for NPTL
+ sh[34]-*-linux-gnu Requires Linux 2.6.11
+ powerpc* Requires Linux 2.4.19
+ arm*-*-linux-*gnueabi Requires Linux 2.6.16
+
+ Note that no sanity check is performed by crosstool-NG to ensure
+ that the value you enter here is appropriate for your target.
-config LIBC_GLIBC_V_2_14
- bool
- prompt "2.14 (OBSOLETE)"
- depends on OBSOLETE
+endif # GLIBC_KERNEL_VERSION_CHOSEN
-config LIBC_GLIBC_V_2_13
- bool
- prompt "2.13 (OBSOLETE)"
- depends on OBSOLETE
+endchoice
-# This version did not have glibc-ports addon released
-config LIBC_GLIBC_V_2_12_2
- bool
- prompt "2.12.2 (OBSOLETE)"
- depends on OBSOLETE
- depends on !LIBC_GLIBC_NEEDS_PORTS
+config GLIBC_MIN_KERNEL
+ string
+ default "" if GLIBC_KERNEL_VERSION_NONE
+ default LINUX_VERSION if GLIBC_KERNEL_VERSION_AS_HEADERS
+ default GLIBC_MIN_KERNEL_VERSION if GLIBC_KERNEL_VERSION_CHOSEN
-# EOL 11/2020 [CentOS6.x]
-config LIBC_GLIBC_V_2_12_1
- bool
- prompt "2.12.1 (OBSOLETE)"
- depends on OBSOLETE
+if GLIBC_BUILD_SSP
+choice
+ bool "Stack-smashing protection (SSP) in glibc"
+ default GLIBC_SSP_DEFAULT
-endchoice
+config GLIBC_SSP_DEFAULT
+ bool "default"
+ help
+ Glibc's configure script determines the stack protection level.
-endif # ! LIBC_GLIBC_CUSTOM
+config GLIBC_SSP_NO
+ bool "no"
+ help
+ Glibc functions are not protected against stack-smashing.
-# Checked by SPARC build: SPARCv8 is dropped in 2.23.
-config LIBC_GLIBC_2_23_or_later
- select LIBC_GLIBC_2_20_or_later
- bool
+config GLIBC_SSP_YES
+ bool "yes"
+ help
+ Glibc is compiled with -fstack-protector option.
-# DeMark 2.20 as no longer needs to set NPTL as an addon.
-# It is no longer possible to build glibc without pthread!
-config LIBC_GLIBC_2_20_or_later
- bool
- select LIBC_GLIBC_2_17_or_later
+config GLIBC_SSP_ALL
+ bool "all"
+ help
+ Glibc is compiled with -fstack-protector-all option.
-# DeMark no more ports
-config LIBC_GLIBC_2_17_or_later
- bool
+config GLIBC_SSP_STRONG
+ bool "strong"
+ help
+ Glibc is compiled with -fstack-protector-strong option.
-if ! LIBC_GLIBC_CUSTOM
+endchoice
-config LIBC_VERSION
+config GLIBC_SSP
string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "2.25" if LIBC_GLIBC_V_2_25
- default "2.24" if LIBC_GLIBC_V_2_24
- default "2.23" if LIBC_GLIBC_V_2_23
- default "2.22" if LIBC_GLIBC_V_2_22
- default "2.21" if LIBC_GLIBC_V_2_21
- default "linaro-2.20-2014.11" if LIBC_GLIBC_LINARO_V_2_20
- default "2.20" if LIBC_GLIBC_V_2_20
- default "2.19" if LIBC_GLIBC_V_2_19
- default "2.18" if LIBC_GLIBC_V_2_18
- default "2.17" if LIBC_GLIBC_V_2_17
- default "2.16.0" if LIBC_GLIBC_V_2_16_0
- default "2.15" if LIBC_GLIBC_V_2_15
- default "2.14.1" if LIBC_GLIBC_V_2_14_1
- default "2.14" if LIBC_GLIBC_V_2_14
- default "2.13" if LIBC_GLIBC_V_2_13
- default "2.12.2" if LIBC_GLIBC_V_2_12_2
- default "2.12.1" if LIBC_GLIBC_V_2_12_1
-
-endif # ! LIBC_GLIBC_CUSTOM
+ default "no" if GLIBC_SSP_NO
+ default "yes" if GLIBC_SSP_YES
+ default "all" if GLIBC_SSP_ALL
+ default "strong" if GLIBC_SSP_STRONG
+
+# All supported versions of glibc build cleanly with GCC7 and earlier.
+# GCC8-related fixes were only available in glibc 2.27.
+config GLIBC_ENABLE_WERROR
+ bool "Enable -Werror during the build"
+ default y if GCC_7_or_older
+ default y if GCC_8_or_later && GLIBC_2_27_or_later
+ help
+ By default, glibc enables strict warning checks during the build.
+ However, older version of glibc may not build with newer versions
+ of the compiler than there were available at the time of a glibc
+ release (because newer compilers typically have better diagnostics).
+
+endif
+
+config GLIBC_ENABLE_COMMON_FLAG
+ bool "Enable -fcommon flag for older version of glibc when using GCC >=10"
+ default y if GLIBC_2_29_or_older && GCC_10_or_later
+ default n if GLIBC_2_30_or_later || GCC_9_or_older
+ help
+ Starting from GCC 10, the default behavior is changed to -fno-common.
+ That leads to linking errors in GLibc versions older than 2.30.
+
+endif # KERNEL_LINUX
diff --git a/config/libc/glibc.in.2 b/config/libc/glibc.in.2
deleted file mode 100644
index 9d3c2e1..0000000
--- a/config/libc/glibc.in.2
+++ /dev/null
@@ -1,242 +0,0 @@
-# This file contains the common configuration options
-# that apply to both glibc.
-
-# Some architectures require the ports addon. List them one by one here:
-# This list must be carefully in sync with the architectures names
-# we can find in config/arch/*
-
-# Ports were integrated into the main tarball in 2.17
-config LIBC_GLIBC_PORTS_EXTERNAL
- def_bool y
- depends on !LIBC_GLIBC_2_17_or_later
-
-config LIBC_GLIBC_NEEDS_PORTS
- def_bool y
- depends on ARCH_alpha || ARCH_arm || ARCH_m68k || ARCH_mips || ARCH_powerpc
-
-# Ports are no longer an add-on starting with 2.20
-config LIBC_GLIBC_USE_PORTS
- def_bool y
- depends on LIBC_GLIBC_NEEDS_PORTS && !LIBC_GLIBC_2_20_or_later
-
-# Force using the BFD linker during the toolchain build
-config LIBC_glibc_family
- bool
- default y
- select BINUTILS_FORCE_LD_BFD_DEFAULT
-
-config LIBC_GLIBC_EXTRA_CONFIG_ARRAY
- string
- prompt "extra config"
- default ""
- help
- Extra flags to pass onto ./configure when configuring.
-
- You can enter multiple arguments here, and arguments can contain spaces
- if they are properly quoted (or escaped, but prefer quotes). Eg.:
- --with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space
-
-config LIBC_GLIBC_CONFIGPARMS
- string
- prompt "Extra config params (READ HELP)"
- default "" if ! ARCH_sh
- default "no-z-defs=yes" if ARCH_sh
- help
- Some architectures need to set options in the file configparms.
- This is the case for sh3/4, which really need to set configparms
- to "no-z-defs=yes" as of gcc-3.4/glibc-2.3.2.
-
- Unless you are building a toolchain for sh3/4, you should leave that empty.
-
- Note: If you need to pass more than one value, separate them with
- '\n'. Eg.: var1=val1\nvar2=val2
-
-config LIBC_GLIBC_EXTRA_CFLAGS
- string
- prompt "extra target CFLAGS"
- default ""
- help
- Extra target CFLAGS to use when building.
-
-config LIBC_ENABLE_FORTIFIED_BUILD
- bool
- prompt "Enable fortified build (EXPERIMENTAL)"
- depends on EXPERIMENTAL
- help
- If you say 'y' here, then glibc will be using fortified versions
- of functions with format arguments (eg. vsyslog, printf...), and
- do a sanity check on the format at runtime, to avoid some of the
- common format string attacks.
-
- This is currently not supported, and will most probably result in
- a broken build, with an error message like:
- ../misc/syslog.c: In function '__vsyslog_chk':
- ../misc/syslog.c:123: sorry, unimplemented: inlining failed in
- call to 'syslog': function body not available
-
- If you are brave enough and want to debug the issue, then say 'y'
- here. Otherwise, be still and say 'n' (the default). ;-)
-
-
-config LIBC_DISABLE_VERSIONING
- bool
- prompt "Disable symbols versioning"
- help
- Do not include versioning information in the library objects.
-
-config LIBC_OLDEST_ABI
- string
- prompt "Oldest supported ABI"
- default ""
- help
- Set the oldest ABI supported by the C library.
-
- Setting this option, for example, to 2.2 will provide ABI support
- back to (e)glibc-2.2.
-
- If this option is not set, (e)glibc will choose for you.
-
-config LIBC_GLIBC_FORCE_UNWIND
- bool
- prompt "Force unwind support (READ HELP!)"
- default y
- help
- If your toolchain fails building while building the C library
- start files, or the complete C library, with a message like:
- configure: error: forced unwind support is required
-
- then you may try changing this option. Otherwise, leave it to
- the default 'y'.
-
- The issue seems to be related to building NPTL on old versions
- of glibc on some architectures
- (seen on s390, s390x and x86_64).
-
-config LIBC_ADDONS_LIST
- string
- prompt "Extra addons"
- default ""
- help
- Extra addons to include. Space separated list.
-
- You need to specify neither linuxthreads nor nptl, as they are added
- automagically for you depending on the threading model you chose
- earlier and on libc version selected.
-
- Also, do not specify ports even if applicable to the selected libc
- version/architecture; it is selected automatically.
-
- Eg.: libidn
-
-config LIBC_LOCALES
- bool
- prompt "Build and install locales"
- help
- Whether to build and install the libc locale files for the target,
- which is required in order to support internationalization.
-
-if LIBC_glibc && LIBC_LOCALES
-comment "WARNING! "
-comment "| The built locales will be usable if and only if the build "
-comment "| machine and the target: "
-comment "| - have the same endianness, "
-comment "| - and have the same alignment requirements for uint32_t. "
-comment "| You will have to check by yourself (for now). "
-endif # LIBC_glibc && LIBC_LOCALES
-
-if KERNEL_linux
-
-choice LIBC_GLIBC_SUPPORTED_KERNEL
- bool
- prompt "Minimum supported kernel version"
- default LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS
-
-config LIBC_GLIBC_KERNEL_VERSION_NONE
- bool
- prompt "Let ./configure decide"
- help
- Let ./configure decide what minimum kernel version glibc will be
- able to run against.
-
- This will include legacy compatibility code for older kernels in
- the C library, thus ensuring that it will run on a large number
- of old kernels.
-
- The minimum kernel version supported will be dependent upon the
- target you build for. For example:
- alpha*-*-linux-gnu Requires Linux 2.6.9 for NPTL
- sh[34]-*-linux-gnu Requires Linux 2.6.11
- powerpc* Requires Linux 2.4.19
- arm*-*-linux-*gnueabi Requires Linux 2.6.16
-
-config LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS
- bool
- prompt "Same as kernel headers (default)"
- help
- Normally, you'll want glibc to run against the same kernel
- version as the one used for the headers.
-
- This is the default.
-
- If enabled, crosstool-ng will use the chosen version of kernel
- headers for the glibc minimum kernel version supported, which is
- what gets passed to "--enable-kernel=" when configuring glibc.
-
- Enabling this will ensure that no legacy compatibility code for
- older kernels is built into your C libraries, but it will
- be unable to run on kernel versions older than whichever kernel
- headers version you've built the toolchain for.
-
- If you know for sure that your toolchain will never need to build
- applications that will run under a kernel version older than your
- chosen kernel headers version (CT_KERNEL_VERSION), you can choose
- "y" here.
-
-config LIBC_GLIBC_KERNEL_VERSION_CHOSEN
- bool
- prompt "Specific kernel version"
- help
- Specify the earliest Linux kernel version you want glibc to
- include support for. This does not have to match the kernel
- headers version used for your toolchain. This controls what is
- passed to the "--enable-kernel=" option to the glibc configure
- script.
-
- If you want to be able to statically link programs with your
- toolchain's C library, make sure this kernel version is lower than
- all kernels you wish to support to avoid "FATAL: kernel too old"
- errors. The higher the version you specify, the less legacy code
- will be built into libc.
-
- Most people can leave this at the default value of "2.6.9".
-
-if LIBC_GLIBC_KERNEL_VERSION_CHOSEN
-
-config LIBC_GLIBC_MIN_KERNEL_VERSION
- string
- prompt "Minimum kernel version to support"
- default "2.6.9"
- help
- Enter here the lowest kernel version glibc will be able to run against.
-
- The minimum kernel version supported will be dependent upon the
- target you build for. For example:
- alpha*-*-linux-gnu Requires Linux 2.6.9 for NPTL
- sh[34]-*-linux-gnu Requires Linux 2.6.11
- powerpc* Requires Linux 2.4.19
- arm*-*-linux-*gnueabi Requires Linux 2.6.16
-
- Note that no sanity check is performed by crosstool-NG to ensure
- that the value you enter here is appropriate for your target.
-
-endif # LIBC_GLIBC_KERNEL_VERSION_CHOSEN
-
-endchoice
-
-config LIBC_GLIBC_MIN_KERNEL
- string
- default "" if LIBC_GLIBC_KERNEL_VERSION_NONE
- default KERNEL_VERSION if LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS
- default LIBC_GLIBC_MIN_KERNEL_VERSION if LIBC_GLIBC_KERNEL_VERSION_CHOSEN
-
-endif # KERNEL_linux
diff --git a/config/libc/mingw-w64.in b/config/libc/mingw-w64.in
new file mode 100644
index 0000000..2531fef
--- /dev/null
+++ b/config/libc/mingw-w64.in
@@ -0,0 +1,38 @@
+# mingw options
+
+## depends on WINDOWS
+##
+## select LIBC_SUPPORT_THREADS_NATIVE
+## select LIBC_SUPPORT_THREADS_POSIX
+## select CC_CORE_NEEDED
+## select BINUTILS_FORCE_LD_BFD_DEFAULT
+##
+## help The de-facto standard for Mingw distributions.
+
+config THREADS
+ default "win32" if THREADS_NATIVE
+ default "posix" if THREADS_POSIX
+
+config MINGW_SECURE_API
+ bool "Expose secure API prototypes"
+ default y
+
+config MINGW_DIRECTX
+ bool "Include DirectX development files"
+
+config MINGW_DDK
+ bool "Include DDK development files"
+
+config MINGW_TOOLS
+ bool "Include the companion tools"
+ default y
+ help
+ Build the companion tools with mingw such as widl, gendef,
+ and genpeimg.
+
+config MINGW_TOOL_LIST_ARRAY
+ string "List of mingw-w64 tools to build"
+ default "gendef genidl genlib genpeimg widl"
+ depends on MINGW_TOOLS
+ help
+ List of mingw-w64 tools to build.
diff --git a/config/libc/mingw.in b/config/libc/mingw.in
deleted file mode 100644
index 62e7a46..0000000
--- a/config/libc/mingw.in
+++ /dev/null
@@ -1,113 +0,0 @@
-# mingw options
-
-## depends on WINDOWS
-##
-## select LIBC_SUPPORT_THREADS_NATIVE
-## select LIBC_SUPPORT_THREADS_POSIX
-## select CC_CORE_PASS_2_NEEDED
-##
-## help The de-facto standard for Mingw distributions.
-
-config THREADS
- default "win32" if THREADS_NATIVE
- default "posix" if THREADS_POSIX
-
-choice
- bool
- prompt "Windows API version"
-
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config WINAPI_V_5_0_1
- bool
- prompt "5.0.1"
-
-config WINAPI_V_5_0_0
- bool
- prompt "5.0.0 (OBSOLETE)"
- depends on OBSOLETE
-
-config WINAPI_V_4_0_4
- bool
- prompt "4.0.4"
-
-config WINAPI_V_4_0_2
- bool
- prompt "4.0.2 (OBSOLETE)"
- depends on OBSOLETE
-
-config WINAPI_V_4_0_1
- bool
- prompt "4.0.1 (OBSOLETE)"
- depends on OBSOLETE
-
-config WINAPI_V_4_0_0
- bool
- prompt "4.0.0 (OBSOLETE)"
- depends on OBSOLETE
-
-config WINAPI_V_3_1_0
- bool
- prompt "3.1.0"
-
-config WINAPI_V_3_0_0
- bool
- prompt "3.0.0 (OBSOLETE)"
- depends on OBSOLETE
-
-config WINAPI_V_2_0_8
- bool
- prompt "2.0.8 (OBSOLETE)"
- depends on OBSOLETE
-
-config WINAPI_V_2_0_7
- bool
- prompt "2.0.7 (OBSOLETE)"
- depends on OBSOLETE
-
-config WINAPI_V_select
- bool
- prompt "Other version"
-
-config WINAPI_V_DEVEL
- bool
- prompt "devel"
- depends on EXPERIMENTAL
- depends on CONFIGURE_has_git
-
-endchoice
-
-config WINAPI_VERSION
- string
- prompt "Windows API version" if WINAPI_V_select
- default "devel" if WINAPI_V_DEVEL
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "5.0.1" if WINAPI_V_5_0_1
- default "5.0.0" if WINAPI_V_5_0_0
- default "4.0.4" if WINAPI_V_4_0_4
- default "4.0.2" if WINAPI_V_4_0_2
- default "4.0.1" if WINAPI_V_4_0_1
- default "4.0.0" if WINAPI_V_4_0_0
- default "3.1.0" if WINAPI_V_3_1_0
- default "3.0.0" if WINAPI_V_3_0_0
- default "2.0.8" if WINAPI_V_2_0_8
- default "2.0.7" if WINAPI_V_2_0_7
- help
- Enter the version number of the Windows API files to use
-
-config MINGW_DIRECTX
- bool
- prompt "Include DirectX development files"
-
-config MINGW_DDK
- bool
- prompt "Include DDK development files"
-
-config MINGW_TOOLS
- bool
- prompt "Include the companion tools"
- help
- build the companion tools with mingw such as widl, gendef,
- and genpeimg
diff --git a/config/libc/moxiebox.in b/config/libc/moxiebox.in
new file mode 100644
index 0000000..07fc333
--- /dev/null
+++ b/config/libc/moxiebox.in
@@ -0,0 +1,26 @@
+# moxiebox options
+
+# Moxie is distributed in non-bootstrapped form, so we really need
+# autoconfig and automake.
+
+## depends on ARCH_MOXIE
+## depends on ARCH_LE
+## depends on BARE_METAL
+## select LIBC_NEWLIB_SHOW
+## 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_NEEDED
+## select LIBELF_NEEDED
+##
+## help Secure execution runtime for Moxie architecture.
+
+config MOXIEBOX_SHORT_TUPLE
+ bool "Use 'moxiebox-' as target tuple"
+ select OMIT_TARGET_ARCH
+ select OMIT_TARGET_VENDOR
+ select TARGET_SKIP_CONFIG_SUB
+ help
+ Moxiebox refers to the tools configured for 'moxie-unknown-moxiebox-' by
+ a short, 'moxiebox-' prefix. Though non-canonical, it seems to be officially
+ endorsed.
diff --git a/config/libc/musl.in b/config/libc/musl.in
index 5ea166f..db7abb7 100644
--- a/config/libc/musl.in
+++ b/config/libc/musl.in
@@ -1,75 +1,64 @@
-# musl options
+# musl second-part option
## depends on ! WINDOWS && ! BARE_METAL
## depends on EXPERIMENTAL
-##
## select LIBC_SUPPORT_THREADS_NATIVE
-## select CC_CORE_PASSES_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
## help correct in the sense of standards-conformance and safety.
+# TBD why? it claims "native", why report "musl"?
config THREADS
default "musl"
-config LIBC_MUSL_CUSTOM
+config LIBC_MUSL_DEBUG
bool
- prompt "Custom musl"
- depends on EXPERIMENTAL
+ prompt "Build with debugging information"
help
- The choosen musl-libc version shall be not downloaded. Instead use
- a custom location to get the source.
-
-if LIBC_MUSL_CUSTOM
+ This option enables debugging information, this will increase the size of
+ the resulting library.
-config LIBC_MUSL_CUSTOM_LOCATION
- string
- prompt "Full path to custom musl-libc source"
+config LIBC_MUSL_WARNINGS
+ bool
+ prompt "Build with recommended warnings flags"
help
- Enter the path to the directory or tarball of your source for musl.
+ Build musl-libc with extra warnings, useful for musl-libc development.
- If the path is a tarball, it should extract to: <name>-<version>/
- where the name is this component, musl, and the version is set
- below in the custom version string.
+choice
+ prompt "How to optimize musl-libc"
+ default LIBC_MUSL_OPTIMIZE_AUTO
-config LIBC_MUSL_CUSTOM_VERSION
- string
- prompt "Custom MUSL version"
+config LIBC_MUSL_OPTIMIZE_NONE
+ bool
+ prompt "Do not optimize musl-libc"
help
- Enter the version number for your custom musl-libc.
-
-config LIBC_VERSION
- string
- default LIBC_MUSL_CUSTOM_VERSION
-
-endif # LIBC_MUSL_CUSTOM
+ This option sets `--enable-optimize=no' to disable optimization.
-if ! LIBC_MUSL_CUSTOM
-
-choice
+config LIBC_MUSL_OPTIMIZE_AUTO
bool
- prompt "musl version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
+ prompt "Use musl-libc's automatic optimization"
+ help
+ This option sets `--enable-optimize=auto' to automatically set optimization.
-config LIBC_MUSL_V_1_1_16
+config LIBC_MUSL_OPTIMIZE_SPEED
bool
- prompt "1.1.16"
- depends on EXPERIMENTAL
+ prompt "Optimize musl-libc for speed"
+ help
+ This option sets `--enable-optimize=yes' to set optimization to -O3 for speed.
-config LIBC_MUSL_V_1_1_15
+config LIBC_MUSL_OPTIMIZE_SIZE
bool
- prompt "1.1.15 (OBSOLETE)"
- depends on EXPERIMENTAL && OBSOLETE
+ prompt "Optimize musl-libc for size"
+ help
+ This option sets `--enable-optimize=size' to set optimization to -Os for size.
endchoice
-config LIBC_VERSION
+config LIBC_MUSL_OPTIMIZE
string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "1.1.16" if LIBC_MUSL_V_1_1_16
- default "1.1.15" if LIBC_MUSL_V_1_1_15
-
-endif # ! LIBC_MUSL_CUSTOM
+ default "no" if LIBC_MUSL_OPTIMIZE_NONE
+ default "auto" if LIBC_MUSL_OPTIMIZE_AUTO
+ default "yes" if LIBC_MUSL_OPTIMIZE_SPEED
+ default "size" if LIBC_MUSL_OPTIMIZE_SIZE
diff --git a/config/libc/musl.in.2 b/config/libc/musl.in.2
deleted file mode 100644
index f4abcc4..0000000
--- a/config/libc/musl.in.2
+++ /dev/null
@@ -1,51 +0,0 @@
-# musl second-part option
-
-config LIBC_MUSL_DEBUG
- bool
- prompt "Build with debugging information"
- help
- This option enables debugging information, this will increase the size of
- the resulting library.
-
-config LIBC_MUSL_WARNINGS
- bool
- prompt "Build with recommended warnings flags"
- help
- Build musl-libc with extra warnings, useful for musl-libc development.
-
-choice
- prompt "How to optimize musl-libc"
- default LIBC_MUSL_OPTIMIZE_AUTO
-
-config LIBC_MUSL_OPTIMIZE_NONE
- bool
- prompt "Do not optimize musl-libc"
- help
- This option sets `--enable-optimize=no' to disable optimization.
-
-config LIBC_MUSL_OPTIMIZE_AUTO
- bool
- prompt "Use musl-libc's automatic optimization"
- help
- This option sets `--enable-optimize=auto' to automatically set optimization.
-
-config LIBC_MUSL_OPTIMIZE_SPEED
- bool
- prompt "Optimize musl-libc for speed"
- help
- This option sets `--enable-optimize=yes' to set optimization to -O3 for speed.
-
-config LIBC_MUSL_OPTIMIZE_SIZE
- bool
- prompt "Optimize musl-libc for size"
- help
- This option sets `--enable-optimize=size' to set optimization to -Os for size.
-
-endchoice
-
-config LIBC_MUSL_OPTIMIZE
- string
- default "no" if LIBC_MUSL_OPTIMIZE_NONE
- default "auto" if LIBC_MUSL_OPTIMIZE_AUTO
- default "yes" if LIBC_MUSL_OPTIMIZE_SPEED
- default "size" if LIBC_MUSL_OPTIMIZE_SIZE
diff --git a/config/libc/newlib.in b/config/libc/newlib.in
index 166130f..f1cb29b 100644
--- a/config/libc/newlib.in
+++ b/config/libc/newlib.in
@@ -1,220 +1,207 @@
# newlib options
## depends on BARE_METAL
-##
+## select LIBC_PROVIDES_CXA_ATEXIT
## select LIBC_SUPPORT_THREADS_NONE
-## select CC_CORE_PASSES_NEEDED if CANADIAN
-## select CC_CORE_PASS_2_NEEDED if ! CANADIAN
-##
+## 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
## help licenses that make them easily usable on embedded products. Newlib
## help is only available in source form. It can be compiled for a wide
## help array of processors, and will usually work on any architecture with
## help the addition of a few low-level routines.
-#
-config LIBC_NEWLIB_CUSTOM
- bool
- prompt "Custom newlib"
- depends on EXPERIMENTAL
- select LIBC_NEWLIB_2_5_or_later
- help
- The choosen newlib version shall be not downloaded. Instead use
- a custom location to get the source.
-if LIBC_NEWLIB_CUSTOM
-
-config LIBC_NEWLIB_CUSTOM_LOCATION
- string
- prompt "Full path to custom newlib source"
- help
- Enter the path to the directory or tarball of your source for newlib.
-
- If the path is a tarball, it should extract to: <name>-<version>/
- where the name is this component, newlib, and the version is set
- below in the custom version string.
-
-config LIBC_NEWLIB_CUSTOM_VERSION
+config LIBC_NEWLIB_TARGET_CFLAGS
string
- prompt "Custom NEWLIB version"
+ prompt "Target CFLAGS for newlib"
+ default ""
help
- Enter the version number for your custom newlib.
-
-config LIBC_VERSION
- string
- default LIBC_NEWLIB_CUSTOM_VERSION
-
-endif # LIBC_NEWLIB_CUSTOM
+ Used to add specific options when compiling the target libraries
+ (eg. -ffunction-sections -fdata-sections), which can't be defined
+ in global TARGET_CFLAGS, because they shall be not used for the
+ gcc target libraries.
+ Note: Both TARGET_CFLAGS and LIBC_NEWLIB_TARGET_CFLAGS are used
+ to compile the libraries.
-if ! LIBC_NEWLIB_CUSTOM
+ Leave blank if you don't know better.
-config CC_NEWLIB_SHOW_LINARO
+config LIBC_NEWLIB_IO_C99FMT
bool
- prompt "Show Linaro versions"
+ prompt "Enable IOs on C99 formats"
help
- Linaro is maintaining some advanced/more stable/experimental versions
- of newlib, especially for the ARM architecture.
-
- Those versions have not been blessed by the newlib comunity (nor have they
- been cursed either!), but they look to be pretty much stable, and even
- more stable than the upstream versions. YMMV...
-
- If you do not know what this Linaro stuff is, then simply say 'n' here,
- and rest in peace. OTOH, if you know what you are doing, you will be
- able to use and enjoy :-) the Linaro versions by saying 'y' here.
-
- Linaro: http://www.linaro.org/
-
-choice
- bool
- prompt "newlib version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-config LIBC_NEWLIB_V_2_5_0
- bool
- prompt "2.5.0"
- select LIBC_NEWLIB_2_5
-
-config LIBC_NEWLIB_V_2_4_0
- bool
- prompt "2.4.0.20161025"
- select LIBC_NEWLIB_2_4
+ Enable support for IOs on C99 formats.
-config LIBC_NEWLIB_V_2_3_0
+config LIBC_NEWLIB_IO_LL
bool
- prompt "2.3.0.20160226"
- select LIBC_NEWLIB_2_3
+ prompt "Enable IOs on long long"
+ help
+ Enable support for IOs on long long integers.
-config LIBC_NEWLIB_LINARO_V_2_2_0
+config LIBC_NEWLIB_IO_FLOAT
bool
- prompt "Linaro 2.2.0-2015.01"
- depends on CC_NEWLIB_SHOW_LINARO
- select LIBC_NEWLIB_2_2
+ prompt "Enable IOs on floats and doubles"
+ help
+ Enable support for IOs on floating point
+ values (float and double).
-config LIBC_NEWLIB_V_2_2_0
+config LIBC_NEWLIB_IO_LDBL
bool
- prompt "2.2.0.20151023"
- select LIBC_NEWLIB_2_2
+ prompt "Enable IOs on long doubles"
+ depends on LIBC_NEWLIB_IO_FLOAT
+ help
+ Enable support for IOs on long doubles.
-config LIBC_NEWLIB_LINARO_V_2_1_0
+config LIBC_NEWLIB_IO_POS_ARGS
bool
- prompt "Linaro 2.1.0-2014.09"
- depends on CC_NEWLIB_SHOW_LINARO
- select LIBC_NEWLIB_2_1
+ prompt "Enable printf-family positional arg support"
+ help
+ Enable printf-family positional arg support.
-config LIBC_NEWLIB_V_2_1_0
+config LIBC_NEWLIB_FVWRITE_IN_STREAMIO
bool
- prompt "2.1.0"
- select LIBC_NEWLIB_2_1
+ prompt "Vector buffer mechanism to support stream IO buffering"
+ default y
+ help
+ NEWLIB implements the vector buffer mechanism to support stream IO
+ buffering required by C standard. This feature is possibly
+ unnecessary for embedded systems which won't change file buffering
+ with functions like `setbuf' or `setvbuf'. The buffering mechanism
+ still acts as default for STDIN/STDOUT/STDERR even if this option
+ is specified.
-config LIBC_NEWLIB_V_2_0_0
+config LIBC_NEWLIB_UNBUF_STREAM_OPT
bool
- prompt "2.0.0"
- select LIBC_NEWLIB_2_0
+ prompt "Optimize fprintf to unbuffered unix file"
+ default y
+ help
+ NEWLIB does optimization when `fprintf to write only unbuffered unix
+ file'. It creates a temorary buffer to do the optimization that
+ increases stack consumption by about `BUFSIZ' bytes. Disabling this option
+ disables the optimization and saves size of text and stack.
-config LIBC_NEWLIB_V_1_20_0
+config LIBC_NEWLIB_FSEEK_OPTIMIZATION
bool
- prompt "1.20.0"
+ prompt "Fseek optimisation"
+ default y
+ help
+ Disabling fseek optimisation can decrease code size.
-config LIBC_NEWLIB_V_1_19_0
+config LIBC_NEWLIB_DISABLE_SUPPLIED_SYSCALLS
bool
- prompt "1.19.0"
+ prompt "Disable the syscalls supplied with newlib"
+ help
+ Disable the syscalls that come with newlib. You
+ will have to implement your own _sbrk, _read,
+ _write... If you plan to port newlib to a new
+ platform/board, say Yes.
-config LIBC_NEWLIB_V_1_18_0
+config LIBC_NEWLIB_REGISTER_FINI
bool
- prompt "1.18.0"
+ prompt "Enable finalization function registration using atexit"
+ help
+ Enable finalization function registration using atexit.
-config LIBC_NEWLIB_V_1_17_0
+config LIBC_NEWLIB_ATEXIT_DYNAMIC_ALLOC
bool
- prompt "1.17.0"
-
-endchoice
-
-endif # ! LIBC_NEWLIB_CUSTOM
+ prompt "Enable dynamic allocation of atexit entries"
+ default y
+ help
+ Enable dynamic allocation of atexit entries.
-config LIBC_NEWLIB_2_5
+config LIBC_NEWLIB_GLOBAL_ATEXIT
bool
- select LIBC_NEWLIB_2_5_or_later
+ prompt "Enable atexit data structure as global variable"
+ help
+ Enable atexit data structure as global variable. By doing so it is
+ move out of _reent structure, and can be garbage collected if atexit
+ is not referenced.
-config LIBC_NEWLIB_2_4
+config LIBC_NEWLIB_LITE_EXIT
bool
- select LIBC_NEWLIB_2_4_or_later
+ prompt "Enable lite exit"
+ help
+ Enable lite exit, a size-reduced implementation of exit that doesn't
+ invoke clean-up functions such as _fini or global destructors.
-config LIBC_NEWLIB_2_3
+config LIBC_NEWLIB_REENT_SMALL
bool
- select LIBC_NEWLIB_2_3_or_later
+ prompt "Enable small reentrant struct support"
+ help
+ Enable small reentrant struct support.
-config LIBC_NEWLIB_2_2
+config LIBC_NEWLIB_MULTITHREAD
bool
- select LIBC_NEWLIB_2_2_or_later
+ prompt "Enable support for multiple threads"
+ default y
+ help
+ Enable support for multiple threads.
-config LIBC_NEWLIB_2_1
+config LIBC_NEWLIB_RETARGETABLE_LOCKING
bool
- select LIBC_NEWLIB_2_1_or_later
+ prompt "Enable retargetable locking"
+ help
+ Enable retargetable locking to allow the operating system to override
+ the dummy lock functions defined within the newlib.
-config LIBC_NEWLIB_2_0
+config LIBC_NEWLIB_EXTRA_SECTIONS
bool
- select LIBC_NEWLIB_2_0_or_later
+ prompt "Place each function & data element in their own section"
+ help
+ Place each function & data symbol in their own section. This allows
+ the linker to garbage collect unused symbols at link time.
-config LIBC_NEWLIB_2_5_or_later
+config LIBC_NEWLIB_WIDE_ORIENT
bool
- select LIBC_NEWLIB_2_4_or_later
+ prompt "Allow wide C99 stream orientation"
+ default y
+ help
+ C99 states that each stream has an orientation, wide or byte. This
+ feature is possibly unnecessary for embedded systems which only do
+ byte input/output operations on stream. Disabling this feature can
+ decrease code size.
-config LIBC_NEWLIB_2_4_or_later
+config LIBC_NEWLIB_ENABLE_TARGET_OPTSPACE
bool
- select LIBC_NEWLIB_2_3_or_later
+ prompt "Optimize newlib for size"
+ default y
+ help
+ Pass --enable-target-optspace to newlib configure.
-config LIBC_NEWLIB_2_3_or_later
- bool
- select LIBC_NEWLIB_2_2_or_later
+ This will compile newlib with -Os.
-config LIBC_NEWLIB_2_2_or_later
+config LIBC_NEWLIB_LTO
bool
- select LIBC_NEWLIB_2_1_or_later
+ prompt "Enable Link Time Optimization"
+ depends on CC_GCC_USE_LTO
+ help
+ Builds the libraries with -flto to enable more aggressive link time
+ optimization. You will need to add -flto-partition=one to your
+ application's link line to keep the RETURN assembler macro together
+ with it's consumers.
-config LIBC_NEWLIB_2_1_or_later
+config LIBC_NEWLIB_NANO_MALLOC
bool
- select LIBC_NEWLIB_2_0_or_later
+ prompt "Enable 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
+ enables the nano-malloc implementation, which is for small systems
+ with very limited memory. Note that this implementation does not
+ support `--enable-malloc-debugging' any more.
-# maybe older versions of newlib will support it too, but this
-# needs to be checked
-config LIBC_NEWLIB_2_0_or_later
+config LIBC_NEWLIB_NANO_FORMATTED_IO
bool
- select LIBC_PROVIDES_CXA_ATEXIT
-
-if ! LIBC_NEWLIB_CUSTOM
-config LIBC_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "2.5.0" if LIBC_NEWLIB_V_2_5_0
- default "2.4.0.20161025" if LIBC_NEWLIB_V_2_4_0
- default "2.3.0.20160226" if LIBC_NEWLIB_V_2_3_0
- default "linaro-2.2.0-2015.01" if LIBC_NEWLIB_LINARO_V_2_2_0
- default "2.2.0.20151023" if LIBC_NEWLIB_V_2_2_0
- default "linaro-2.1.0-2014.09" if LIBC_NEWLIB_LINARO_V_2_1_0
- default "2.1.0" if LIBC_NEWLIB_V_2_1_0
- default "2.0.0" if LIBC_NEWLIB_V_2_0_0
- default "1.20.0" if LIBC_NEWLIB_V_1_20_0
- default "1.19.0" if LIBC_NEWLIB_V_1_19_0
- default "1.18.0" if LIBC_NEWLIB_V_1_18_0
- default "1.17.0" if LIBC_NEWLIB_V_1_17_0
- help
- Enter the tag you want to use.
- Leave empty to use the 'head' of the repository.
-
-endif # ! LIBC_NEWLIB_CUSTOM
+ prompt "Enable Nano Formatted I/O"
+ help
+ This builds NEWLIB with a special implementation of formatted I/O
+ functions, designed to lower the size of application on small systems
+ with size constraint issues. This option does not affect wide-char
+ formatted I/O functions.
-config LIBC_NEWLIB_TARGET_CFLAGS
+config LIBC_NEWLIB_EXTRA_CONFIG_ARRAY
string
- prompt "Target CFLAGS for newlib"
+ prompt "Extra config for newlib"
default ""
help
- Used to add specific options when compiling the target libraries
- (eg. -ffunction-sections -fdata-sections), which can't be defined
- in global TARGET_CFLAGS, because they shall be not used for the
- gcc target libraries.
- Note: Both TARGET_CFLAGS and LIBC_NEWLIB_TARGET_CFLAGS are used
- to compile the libraries.
-
- Leave blank if you don't know better.
+ Extra flags to pass onto ./configure when configuring the newlib.
diff --git a/config/libc/none.in b/config/libc/none.in
index b8860b0..713f33c 100644
--- a/config/libc/none.in
+++ b/config/libc/none.in
@@ -1,5 +1,6 @@
# Dummy config file to not use a C library *at all*
+## no-package
## depends on BARE_METAL
##
## help Do not use a C library.
diff --git a/config/libc/uClibc-ng.in b/config/libc/uClibc-ng.in
new file mode 100644
index 0000000..dc83ca7
--- /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_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 <iconv.h> 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 9d5e8fd..0000000
--- a/config/libc/uClibc.in
+++ /dev/null
@@ -1,214 +0,0 @@
-# uClibc options
-
-## depends on ! WINDOWS && ! BARE_METAL
-##
-## select LIBC_SUPPORT_THREADS_LT
-## select LIBC_SUPPORT_THREADS_NONE
-## select CC_CORE_PASSES_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_CUSTOM
- bool
- prompt "Custom uClibc"
- depends on EXPERIMENTAL
- help
- The choosen uclibc version shall be not downloaded. Instead use
- a custom location to get the source.
-
-if LIBC_UCLIBC_CUSTOM
-
-choice
- bool
- prompt "uClibc Version Name"
-
-config LIBC_UCLIBC_CUSTOM_UCLIBC
- bool "uClibc (OBSOLETE)"
- depends on OBSOLETE
- select LIBC_UCLIBC_0_9_33_2_or_later
-
-config LIBC_UCLIBC_CUSTOM_UCLIBC_NG
- bool "uClibc-ng (1.0.15 or later)"
- select LIBC_UCLIBC_NG_1_0_15_or_later
-
-config LIBC_UCLIBC_CUSTOM_UCLIBC_NG_OLD
- bool "uClibc-ng (older than 1.0.15)"
- select LIBC_UCLIBC_NG_1_0_0_or_later
-
-endchoice
-
-config LIBC_UCLIBC_CUSTOM_LOCATION
- string
- prompt "Full path to custom uClibc source"
- help
- Enter the path to the directory or tarball of your source for uClibc.
-
- If the path is a tarball, it should extract to: <name>-<version>/
- where the name is this component will be set by the uClibc Version Name
- option from above, and the version is set below in the custom version
- string.
-
-config LIBC_UCLIBC_CUSTOM_VERSION
- string
- prompt "Custom uClibc Version"
- help
- Enter the version number for your custom uClibc.
- Version 1.0.18 is only enabled in EXPERIMENTAL builds due to issues
- with static libraries.
-
-config LIBC_VERSION
- string
- default LIBC_UCLIBC_CUSTOM_VERSION
-
-endif # LIBC_UCLIBC_CUSTOM
-
-if ! LIBC_UCLIBC_CUSTOM
-
-choice
- bool
- prompt "uClibc version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config LIBC_UCLIBC_NG_V_1_0_22
- bool
- prompt "1.0.22"
- select LIBC_UCLIBC_NG_1_0_15_or_later
-
-config LIBC_UCLIBC_NG_V_1_0_21
- bool
- prompt "1.0.21 (OBSOLETE)"
- depends on OBSOLETE
- select LIBC_UCLIBC_NG_1_0_15_or_later
-
-config LIBC_UCLIBC_NG_V_1_0_20
- bool
- prompt "1.0.20 (OBSOLETE)"
- depends on OBSOLETE
- select LIBC_UCLIBC_NG_1_0_15_or_later
-
-config LIBC_UCLIBC_V_0_9_33_2
- bool
- prompt "0.9.33.2 (OBSOLETE)"
- depends on OBSOLETE
- select LIBC_UCLIBC_0_9_33_2_or_later
-
-endchoice
-
-config LIBC_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "1.0.22" if LIBC_UCLIBC_NG_V_1_0_22
- default "1.0.21" if LIBC_UCLIBC_NG_V_1_0_21
- default "1.0.20" if LIBC_UCLIBC_NG_V_1_0_20
- default "0.9.33.2" if LIBC_UCLIBC_V_0_9_33_2
-
-endif # ! LIBC_UCLIBC_CUSTOM
-
-config LIBC_UCLIBC_NG_1_0_15_or_later
- bool
- select LIBC_UCLIBC_NG_1_0_0_or_later
-
-config LIBC_UCLIBC_NG_1_0_0_or_later
- bool
- select LIBC_UCLIBC_NG
- select LIBC_UCLIBC_0_9_33_2_or_later
-
-config LIBC_UCLIBC_0_9_33_2_or_later
- bool
- select LIBC_SUPPORT_THREADS_NATIVE
- select LIBC_UCLIBC_PARALLEL
-
-config LIBC_UCLIBC_PARALLEL
- bool
-
-config LIBC_UCLIBC_NG
- bool
-
-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
-
-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.
diff --git a/config/libc/uClibc.in.2 b/config/libc/uClibc.in.2
deleted file mode 100644
index 1b34855..0000000
--- a/config/libc/uClibc.in.2
+++ /dev/null
@@ -1,110 +0,0 @@
-# uClibc second-part option
-
-if THREADS_LT && !LIBC_UCLIBC_NG_1_0_15_or_later
-
-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
-
-# uClibc-ng 1.0.15 did away with 2 implementations of linuxthreads
-config LIBC_UCLIBC_LNXTHRD
- string
- default "" if THREADS_NONE
- default "" if THREADS_NATIVE
- default "" if LIBC_UCLIBC_NG_1_0_15_or_later
- default "old" if LIBC_UCLIBC_LNXTHRD_OLD
- default "new" if LIBC_UCLIBC_LNXTHRD_NEW
-
-config LIBC_UCLIBC_LOCALES
- bool
- select LIBC_UCLIBC_WCHAR
- 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_LOCALES_PREGEN_DATA
- bool
- prompt "Use pregen locales"
- depends on LIBC_UCLIBC_LOCALES
- depends on ! LIBC_UCLIBC_NG
- default y
- help
- If you see issues with using pre-generated locales data,
- you can try switching this off.
-
- If so, please report the issue, so we can default this
- to off if too many people complain.
-
-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"
- help
- Enable support for remote procedure calls (RPC) in uClibc.
-
-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/target.in b/config/target.in
index a905b23..995457a 100644
--- a/config/target.in
+++ b/config/target.in
@@ -2,10 +2,7 @@
menu "Target options"
-config ARCH
- string
-
-source "config.gen/arch.in"
+source "config/gen/arch.in"
config ARCH_SUFFIX
string
@@ -22,6 +19,21 @@ config ARCH_SUFFIX
If you are not sure about what this is, leave it blank.
+config OMIT_TARGET_ARCH
+ bool
+ help
+ Do not include architecture into the target tuple.
+
+config OMIT_TARGET_VENDOR
+ bool "Omit vendor part of the target tuple"
+ help
+ Do not include vendor into the target tuple.
+
+config TARGET_SKIP_CONFIG_SUB
+ bool
+ help
+ Skip canonicalization of the target tuple.
+
#--------------------------------------
comment "Generic target options"
@@ -36,7 +48,6 @@ config ARCH_REQUIRES_MULTILIB
config MULTILIB
bool
prompt "Build a multilib toolchain (READ HELP!!!)"
- select CC_CORE_PASS_1_NEEDED
help
If you say 'y' here, then the toolchain will also contain the C library
optimised for some variants of the selected architecture, besides the
@@ -51,6 +62,29 @@ config MULTILIB
NOTE: The multilib feature in crosstool-NG is not well-tested.
Use at your own risk, and report success and/or failure.
+config DEMULTILIB
+ bool "Attempt to combine libraries into a single directory"
+ default y if !MULTILIB
+ depends on !MULTILIB || EXPERIMENTAL
+ help
+ Normally, Crosstool-NG installs the libraries into the directories
+ as the configure for these libraries determines appropriate. For
+ example, for AArch64 glibc wants to install the libraries into
+ /lib64 but the default dynamic linker path is /lib/ld-linux-aarch64.so.1
+ (which is installed as a symlink to ../lib64/ld-VER.so).
+
+ However, not all consumers of the toolchain can handle the libraries
+ residing in multiple directories. To appease them, crosstool-NG can
+ attempt to combine the libraries back into a single /lib directory and
+ create all other directories as symlinks to /lib. This requires all
+ the library names to be unique within each sysroot.
+
+ Note that GCC may also use separate sysroots for different multilibs.
+ Hence it may make sense to enable this option even for multilib toolchains.
+ However, separate roots are rare (any other architecture aside from
+ SuperH using them?) and hence not well tested in crosstool-NG; therefore,
+ this option is experimental when MULTILIB is enabled.
+
#--------------------------------------
config ARCH_SUPPORTS_BOTH_MMU
bool
@@ -74,8 +108,20 @@ config ARCH_USE_MMU
have one (eg. ARM Cortex-A8).
#--------------------------------------
+config ARCH_SUPPORTS_FLAT_FORMAT
+ bool
+
+#--------------------------------------
+config ARCH_SUPPORTS_EITHER_ENDIAN
+ bool
+ help
+ Architecture allows to select endianness at the time the toolchain is built.
+
config ARCH_SUPPORTS_BOTH_ENDIAN
bool
+ select ARCH_SUPPORTS_EITHER_ENDIAN
+ help
+ Toolchain supports both big/little endian.
config ARCH_DEFAULT_BE
bool
@@ -83,12 +129,22 @@ config ARCH_DEFAULT_BE
config ARCH_DEFAULT_LE
bool
+config ARCH_DEFAULT_BE_LE
+ bool
+ depends on ARCH_SUPPORTS_BOTH_ENDIAN
+
+config ARCH_DEFAULT_LE_BE
+ bool
+ depends on ARCH_SUPPORTS_BOTH_ENDIAN
+
choice
bool
prompt "Endianness:"
- depends on ARCH_SUPPORTS_BOTH_ENDIAN
+ depends on ARCH_SUPPORTS_EITHER_ENDIAN
default ARCH_BE if ARCH_DEFAULT_BE
default ARCH_LE if ARCH_DEFAULT_LE
+ default ARCH_BE_LE if ARCH_DEFAULT_BE_LE
+ default ARCH_LE_BE if ARCH_DEFAULT_LE_BE
config ARCH_BE
bool
@@ -98,18 +154,33 @@ config ARCH_LE
bool
prompt "Little endian"
+config ARCH_BE_LE
+ bool
+ prompt "Both, default big endian"
+ depends on ARCH_SUPPORTS_BOTH_ENDIAN
+
+config ARCH_LE_BE
+ bool
+ prompt "Both, default little endian"
+ depends on ARCH_SUPPORTS_BOTH_ENDIAN
+
endchoice
config ARCH_ENDIAN
string
- depends on ARCH_SUPPORTS_BOTH_ENDIAN
- default "big" if ARCH_BE
- default "little" if ARCH_LE
+ depends on ARCH_SUPPORTS_EITHER_ENDIAN
+ default "big" if ARCH_BE
+ default "little" if ARCH_LE
+ default "big,little" if ARCH_BE_LE
+ default "little,big" if ARCH_LE_BE
#--------------------------------------
config ARCH_SUPPORTS_8
bool
+config ARCH_SUPPORTS_16
+ bool
+
config ARCH_SUPPORTS_32
bool
@@ -119,6 +190,9 @@ config ARCH_SUPPORTS_64
config ARCH_DEFAULT_8
bool
+config ARCH_DEFAULT_16
+ bool
+
config ARCH_DEFAULT_32
bool
@@ -128,6 +202,7 @@ config ARCH_DEFAULT_64
config ARCH_BITNESS
int
default "8" if ARCH_8
+ default "16" if ARCH_16
default "32" if ARCH_32
default "64" if ARCH_64
@@ -135,6 +210,7 @@ choice
bool
prompt "Bitness:"
default ARCH_8 if ARCH_DEFAULT_8
+ default ARCH_16 if ARCH_DEFAULT_16
default ARCH_32 if ARCH_DEFAULT_32
default ARCH_64 if ARCH_DEFAULT_64
@@ -143,6 +219,11 @@ config ARCH_8
prompt "8-bit"
depends on ARCH_SUPPORTS_8
+config ARCH_16
+ bool
+ prompt "16-bit"
+ depends on ARCH_SUPPORTS_16
+
config ARCH_32
bool
prompt "32-bit"
@@ -155,6 +236,11 @@ config ARCH_64
endchoice
+# Whether this architecture supports passing --with-{cpu,arch,tune}-{32,64}=
+# to GCC configure.
+config ARCH_SUPPORTS_WITH_32_64
+ bool
+
#--------------------------------------
comment "Target optimisations"
@@ -176,6 +262,9 @@ config ARCH_SUPPORTS_WITH_FLOAT
config ARCH_SUPPORTS_WITH_FPU
bool
+config ARCH_SUPPORTS_WITH_ENDIAN
+ bool
+
config ARCH_SUPPORTS_SOFTFP
bool
@@ -201,7 +290,9 @@ config ARCH_ARCH
target CPU.
Leave blank if you don't know, or if your target architecture does not
- offer this option.
+ offer this option. Must be specified for 32-bit x86 that uses some
+ C library (glibc, uClibc-ng, ...) - the default, "i386" is not supported
+ by these libraries.
config ARCH_ABI
string
@@ -364,12 +455,35 @@ config TARGET_LDFLAGS
config ARCH_FLOAT
string
- default "" if ! ARCH_SUPPORTS_WITH_FLOAT
default "auto" if ARCH_FLOAT_AUTO
default "hard" if ARCH_FLOAT_HW
default "soft" if ARCH_FLOAT_SW
default "softfp" if ARCH_FLOAT_SOFTFP
-source "config.gen/arch.in.2"
+config TARGET_USE_OVERLAY
+ bool
+
+if TARGET_USE_OVERLAY
+
+config OVERLAY_NAME
+ string "Custom processor configuration name"
+ help
+ Enter the name of the custom processor configuration.
+ Overlay file for that configuration must be called
+ '<ARCH>_<OVERLAY_NAME>.tar' (optionally, with .gz/.bz2/.lzma/.xz
+ extension).
+
+ Leave blank to use the default '<ARCH>_overlay.tar'.
+ For more information about this option, please also consult the
+ section 'Using crosstool-NG to build Xtensa toolchains' in the
+ in http://crosstool-ng.github.io/docs/caveats-features/
+
+config OVERLAY_LOCATION
+ string "Full path to custom configuration (overlay)"
+ help
+ Enter the path to the directory for the custom processor
+ configuration file.
+
+endif
endmenu
diff --git a/config/toolchain.in b/config/toolchain.in
index 9d3ad18..36a4782 100644
--- a/config/toolchain.in
+++ b/config/toolchain.in
@@ -20,7 +20,7 @@ config USE_SYSROOT
config SYSROOT_NAME
string
- prompt "sysroot directory name" if ! BACKEND
+ prompt "sysroot directory name"
depends on USE_SYSROOT
default "sysroot"
help
@@ -33,7 +33,7 @@ config SYSROOT_NAME
config SYSROOT_DIR_PREFIX
string
- prompt "sysroot prefix dir (READ HELP)" if ! BACKEND
+ prompt "sysroot prefix dir (READ HELP)"
depends on USE_SYSROOT
default ""
help
@@ -47,14 +47,18 @@ config SYSROOT_DIR_PREFIX
In fact, the sysroot path is constructed as:
${CT_PREFIX_DIR}/${CT_TARGET}/${CT_SYSROOT_DIR_PREFIX}/${CT_SYSROOT_NAME}
+# FIXME: the name is misleading, it is only checking if we want the build machine
+# to support static linking.
config WANTS_STATIC_LINK
bool
+config WANTS_STATIC_LINK_CXX
+ bool
config STATIC_TOOLCHAIN
bool
prompt "Build Static Toolchain"
depends on CONFIGURE_has_static_link
- select WANTS_STATIC_LINK
+ select WANTS_STATIC_LINK if NATIVE || CROSS
help
Build static host binaries.
@@ -72,6 +76,22 @@ config STATIC_TOOLCHAIN
NOTE: this has no connection to whether the target libraries will be
dynamic or static. This only applies to the tools themselves.
+config SHOW_CT_VERSION
+ bool
+ prompt "Add crosstool-NG version to --version output"
+ default y
+ help
+ If yes, the crosstool-NG version will be included in the output of
+ gcc --version, and also in binutils, glibc, gdb and gdbserver.
+
+ If this is enabled, the package version will include:
+ "crosstool-NG ${CT_VERSION}"
+
+ If this is disabled and no ID string is given below, the default
+ of each individual package will be used.
+
+ This is passed to the configure flag --with-pkgversion.
+
config TOOLCHAIN_PKGVERSION
string
prompt "Toolchain ID string"
@@ -82,10 +102,10 @@ config TOOLCHAIN_PKGVERSION
the output of gcc --version, and also in binutils, glibc, gdb and
gdbserver.
- If this string is left empty, the actual package version will be:
- "crosstool-NG ${CT_VERSION}"
- Otherwise, it will be:
+ If this is enabled, it will either be added to the crosstool-NG version:
"crosstool-NG ${CT_VERSION} - ${CT_TOOLCHAIN_PKGVERSION}"
+ Or it will be entirely on its own:
+ "${CT_TOOLCHAIN_PKGVERSION}"
This is passed to the configure flag --with-pkgversion.
@@ -101,7 +121,7 @@ comment "Tuple completion and aliasing"
config TARGET_VENDOR
string
prompt "Tuple's vendor string"
- depends on !LIBC_avr_libc
+ depends on !OMIT_TARGET_VENDOR
default "unknown"
help
Vendor part of the target tuple.
@@ -162,14 +182,14 @@ config NATIVE
depends on EXPERIMENTAL
help
Build a native toolchain.
- See: "docs/6 - Toolchain types.txt"
+ See: "docs/6_Toolchain_Types.md"
config CROSS
bool
prompt "Cross"
help
Build a cross-toolchain.
- See: "docs/6 - Toolchain types.txt"
+ See: "docs/6_Toolchain_Types.md"
config CROSS_NATIVE
bool
@@ -177,14 +197,14 @@ config CROSS_NATIVE
depends on EXPERIMENTAL
help
Build a cross-native toolchain.
- See: "docs/6 - Toolchain types.txt"
+ See: "docs/6_Toolchain_Types.md"
config CANADIAN
bool
prompt "Canadian"
help
Build a canadian-toolchain.
- See: "docs/6 - Toolchain types.txt"
+ See: "docs/6_Toolchain_Types.md"
endchoice