# 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'. #----------------------------------------------------------------------------- # 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 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" depends on CC_GCC_HAS_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 CC_GCC_HAS_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