Convert gcc to new framework.

Signed-off-by: Alexey Neyman <stilor@att.net>
This commit is contained in:
Alexey Neyman 2017-05-11 22:00:32 -07:00
parent d589df4ebe
commit 5935d586e1
290 changed files with 456 additions and 581 deletions

View File

@ -5,11 +5,11 @@ comment "GNU binutils"
source "config/versions/binutils.in"
config BINUTILS_HAS_HASH_STYLE
default y if BINUTILS_V_2_23_2_or_later
default y if BINUTILS_V_2_23_2_or_later || BINUTILS_LINARO_V_2_23_2_2013_10_4_or_later
bool
config BINUTILS_HAS_GOLD
default y if BINUTILS_V_2_23_2_or_later
default y if BINUTILS_V_2_23_2_or_later || BINUTILS_LINARO_V_2_23_2_2013_10_4_or_later
bool
# gold only suports the listed architectures
@ -26,11 +26,11 @@ config BINUTILS_GOLD_SUPPORT
depends on ! STATIC_TOOLCHAIN
config BINUTILS_HAS_PLUGINS
default y if BINUTILS_V_2_23_2_or_later
default y if BINUTILS_V_2_23_2_or_later || BINUTILS_LINARO_V_2_23_2_2013_10_4_or_later
bool
config BINUTILS_HAS_PKGVERSION_BUGURL
default y if BINUTILS_V_2_23_2_or_later
default y if BINUTILS_V_2_23_2_or_later || BINUTILS_LINARO_V_2_23_2_2013_10_4_or_later
bool
# Force using the BFD linker if needed. There are two options:

View File

@ -14,163 +14,7 @@
## 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.
if CC_GCC_CUSTOM
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.
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_GCC_CUSTOM_VERSION
string
prompt "Custom GCC Version"
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
config CC_GCC_SHOW_LINARO
bool
prompt "Show Linaro versions"
help
Linaro is maintaining some advanced/more stable/experimental versions
of gcc, especially for the ARM architecture.
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...
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 "gcc version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config CC_GCC_V_7_1_0
bool
prompt "7.1.0"
select CC_GCC_7
config CC_GCC_V_linaro_6_3
bool
prompt "linaro-6.3-2017.05"
depends on CC_GCC_SHOW_LINARO
select CC_GCC_6
config CC_GCC_V_6_3_0
bool
prompt "6.3.0"
select CC_GCC_6
config CC_GCC_V_linaro_5_4
bool
prompt "linaro-5.4-2017.05"
depends on CC_GCC_SHOW_LINARO
select CC_GCC_5
config CC_GCC_V_5_4_0
bool
prompt "5.4.0"
select CC_GCC_5
config CC_GCC_V_linaro_4_9
bool
prompt "linaro-4.9-2017.01"
depends on CC_GCC_SHOW_LINARO
select CC_GCC_4_9
config CC_GCC_V_4_9_4
bool
prompt "4.9.4"
select CC_GCC_4_9
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
config CC_GCC_V_4_8_5
bool
prompt "4.8.5 (OBSOLETE)"
select CC_GCC_4_8
depends on OBSOLETE
endchoice
endif # ! CC_GCC_CUSTOM
config CC_GCC_4_8
bool
select CC_GCC_4_8_or_later
config CC_GCC_4_8_or_later
bool
config CC_GCC_4_9
bool
select CC_GCC_4_9_or_later
config CC_GCC_4_9_or_later
bool
select CC_GCC_4_8_or_later
config CC_GCC_5
bool
select CC_GCC_5_or_later
config CC_GCC_5_or_later
bool
select CC_GCC_4_9_or_later
select CC_GCC_HAS_LIBMPX
config CC_GCC_6
bool
select CC_GCC_6_or_later
config CC_GCC_6_or_later
bool
select CC_GCC_5_or_later
config CC_GCC_7
bool
select CC_GCC_7_or_later
config CC_GCC_7_or_later
bool
select CC_GCC_6_or_later
config CC_GCC_latest
bool
select CC_GCC_7_or_later
source "config/versions/gcc.in"
# 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
@ -188,29 +32,395 @@ config CC_GCC_GOLD
default y
config CC_GCC_HAS_LIBMPX
depends on GCC_V_5_4_0_or_later || GCC_LINARO_V_5_4_2017_01_or_later
bool
if ! CC_GCC_CUSTOM
config CC_GCC_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "7.1.0" if CC_GCC_V_7_1_0
default "linaro-6.3-2017.05" if CC_GCC_V_linaro_6_3
default "6.3.0" if CC_GCC_V_6_3_0
default "linaro-5.4-2017.05" 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
config CC_LANG_JAVA_USE_ECJ
bool
default y
depends on CC_LANG_JAVA
source "config/cc/gcc.in.2"
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 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 || 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
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

View File

@ -1,387 +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 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 || 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
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)"
depends on !LIBC_bionic
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

View File

@ -12,6 +12,13 @@ debug()
fi
}
info()
{
if [ -z "${QUIET}" ]; then
echo "INFO :: $@" >&2
fi
}
warn()
{
echo "WARN :: $@" >&2
@ -148,6 +155,9 @@ run_lines()
"#!foreach "*)
run_foreach "${s#* }"
;;
"#!//"*)
# Comment, do nothing
;;
"#!"*)
error "line ${l}: unrecognized command"
;;
@ -193,8 +203,9 @@ read_file()
while read l; do
case "${l}" in
"#*") continue;;
*) echo "info[${l%%=*}]=${l#*=}";;
"#"*) continue;;
*=*) echo "info[${l%%=*}]=${l#*=}";;
*) error "syntax error in '${1}': '${l}'"
esac
done < "${1}"
}
@ -238,6 +249,10 @@ enter_fork()
local versions
local only_obsolete only_experimental
# Set defaults
info[obsolete]=
info[experimental]=
eval `read_package_desc ${fork}`
info[name]=${fork}
@ -259,14 +274,22 @@ enter_fork()
for f in */version.desc; do [ -r "${f}" ] && echo "${f%/version.desc}"; done | \
sort -rV | xargs echo`
set_iter version $versions
info[all_versions]=$versions
set_iter version ${versions}
info[all_versions]=${versions}
only_obsolete=yes
only_experimental=yes
do_foreach version check_obsolete_experimental
info[only_obsolete]=${only_obsolete}
info[only_experimental]=${only_experimental}
# If a fork does not define any versions at all ("rolling release"), do not
# consider it obsolete/experimental unless it is marked in the fork's
# description.
if [ -n "${versions}" ]; then
only_obsolete=yes
only_experimental=yes
do_foreach version check_obsolete_experimental
info[only_obsolete]=${only_obsolete}
info[only_experimental]=${only_experimental}
else
info[only_obsolete]=${info[obsolete]}
info[only_experimental]=${info[experimental]}
fi
}
enter_version()
@ -274,6 +297,10 @@ enter_version()
local version="${1}"
local tmp
# Set defaults
info[obsolete]=
info[experimental]=
eval `read_version_desc ${info[name]} ${version}`
info[ver]=${version}
info[kcfg]=`kconfigize ${version}`
@ -289,7 +316,8 @@ pkg_all=( `cd packages && \
ls */package.desc 2>/dev/null | \
while read f; do [ -r "${f}" ] && echo "${f%/package.desc}"; done | \
xargs echo` )
debug "Generating package version descriptions"
info "Generating package version descriptions"
debug "Packages: ${pkg_all[@]}"
# We need to group forks of the same package into the same
@ -298,12 +326,12 @@ debug "Packages: ${pkg_all[@]}"
for p in "${pkg_all[@]}"; do
find_forks "${p}"
done
debug "Master packages: ${pkg_masters[@]}"
info "Master packages: ${pkg_masters[@]}"
# Now for each master, create its kconfig file with version
# definitions.
for p in "${pkg_masters[@]}"; do
debug "Generating '${config_dir}/${p}.in'"
info "Generating '${config_dir}/${p}.in'"
exec >"${config_dir}/${p}.in"
# Base definitions for the whole config file
info=( \
@ -312,5 +340,8 @@ for p in "${pkg_masters[@]}"; do
[nforks]=${pkg_nforks[${p}]} \
)
set_iter fork ${pkg_forks[${p}]}
# TBD check that origins are set for all forks if there is more than one? or is it automatic because of a missing variable check?
# TBD get rid of the "origin" completely and use just the fork name?
run_template "${template}"
done
info "Done!"

View File

@ -34,30 +34,41 @@ config @@masterpfx@@_USE
if @@masterpfx@@_USE_@@originpfx@@
#!end-if
#!// If a project makes official releases, using "bleeding edge"
#!// from a development repository is experimental. However, there
#!// are projects that consider its HEAD a "rolling release". For
#!// those, checking out from a repository is the regular method.
#!if [ -n "@@all_versions@@" ]
if EXPERIMENTAL
#!end-if
choice
bool "Source of @@name@@"
#!if [ -n "@@all_versions@@" ]
config @@pfx@@_SRC_RELEASE
bool "Released tarball"
help
Download a released tarball.
#!end-if
#!if [ -n "@@repository@@" ]
config @@pfx@@_SRC_DEVEL
bool "Vendor repository"
help
Check out from vendor repository at:
@@repository@@
#!end-if
#!end-if
config @@pfx@@_SRC_CUSTOM
bool "Custom location"
depends on EXPERIMENTAL
help
Custom directory or tarball.
endchoice
#!if [ -n "@@all_versions@@" ]
endif
#!end-if
#!if [ -n "@@repository@@" ]
if @@pfx@@_SRC_DEVEL

View File

@ -1,3 +1,3 @@
repository="git git://sourceware.org/git/binutils-gdb.git"
download_url="https://ftp.gnu.org/gnu/binutils/binutils-${version}.${format}"
download_url="TBD other mirrors https://ftp.gnu.org/gnu/binutils/binutils-${version}.${format}"
origin="GNU"

View File

@ -0,0 +1 @@
obsolete="yes"

View File

View File

Some files were not shown because too many files have changed in this diff Show More