yann@2415: # gcc configuration options yann@2144: yann@2415: config CC_ENABLE_CXX_FLAGS yann@2415: string yann@2415: prompt "Flags to pass to --enable-cxx-flags" yann@2415: default "" yann@2415: help yann@2415: Enter here the value of the gcc's ./configure option --enable-cxx-flags. yann@2415: Leave empty if you don't know better. yann@2415: yann@2415: Note: just pass in the option _value_, that is only the part that goes yann@2415: after the '=' sign. yann@2415: yann@2467: config CC_CORE_EXTRA_CONFIG_ARRAY yann@2415: string yann@2415: prompt "Core gcc extra config" yann@2415: default "" yann@2415: help yann@2415: Extra flags to pass onto ./configure when configuring the core gcc. yann@2415: yann@2415: The core gcc is a stripped down, C-only compiler needed to build yann@2415: the C library. Kinda bootstrap gcc, if you wish. yann@2469: yann@2469: You can enter multiple arguments here, and arguments can contain spaces yann@2469: if they are properly quoted (or escaped, but prefer quotes). Eg.: yann@2469: --with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space yann@2415: yann@2467: config CC_EXTRA_CONFIG_ARRAY yann@2415: string yann@2415: prompt "gcc extra config" yann@2415: default "" yann@2415: depends on ! BARE_METAL yann@2415: help yann@2415: Extra flags to pass onto ./configure when configuring gcc. yann@2469: yann@2469: You can enter multiple arguments here, and arguments can contain spaces yann@2469: if they are properly quoted (or escaped, but prefer quotes). Eg.: yann@2469: --with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space yann@2415: yann@2415: config STATIC_TOOLCHAIN yann@2415: select CC_STATIC_LIBSTDCXX if CC_GCC_4_4_or_later yann@2415: yann@2415: config CC_STATIC_LIBSTDCXX yann@2041: bool yann@2415: prompt "Link libstdc++ statically into the gcc binary" yann@2041: default y yann@2415: depends on CC_GCC_4_4_or_later yann@2717: select WANTS_STATIC_LINK yann@2041: help yann@2415: Newer gcc versions use the PPL library which is C++ code. Statically yann@2415: linking libstdc++ increases the likeliness that the gcc binary will yann@2415: run on machines other than the one which it was built on, without yann@2415: having to worry about distributing the matching version of libstdc++ yann@2415: along with it. yann@2415: yann@2814: config CC_GCC_SYSTEM_ZLIB yann@2814: bool yann@2814: prompt "Use system zlib" yann@2814: depends on EXPERIMENTAL yann@2814: help yann@2814: Do not use bundled zlib, and use the zlib already available for yann@2814: the host (eg. the system library). yann@2814: yann@2814: If you want to build a static toolchain, you will need to also yann@2814: install the static version of zlib for your host. yann@2814: yann@2814: If unsure, say 'n'. yann@2814: yann@2415: #----------------------------------------------------------------------------- yann@2415: # Optimisation features yann@2415: yann@2415: comment "Optimisation features" yann@2041: yann@2122: config CC_GCC_USE_GRAPHITE yann@2122: bool yann@2122: prompt "Enable GRAPHITE loop optimisations" yann@2122: default y yann@2122: depends on CC_GCC_HAS_GRAPHITE yann@2122: select CC_GCC_USE_PPL_CLOOG yann@2122: help yann@2122: Enable the GRAPHITE loop optimsations. yann@2122: yann@2122: This requires the PPL and CLooG companion libraries, and yann@2122: those will be automatically build for you. yann@2122: yann@2122: On some systems (eg. Cygwin), PPL and/or CLooG may not yann@2122: build properly (yet), so you'll have to say 'N' here. yann@2122: yann@2287: # The way LTO works is a bit twisted. yann@2287: # See: http://gcc.gnu.org/wiki/LinkTimeOptimization#Requirements yann@2287: # Basically: yann@2287: # - if binutils has plugins: LTO is handled by ld/gold by loading yann@2287: # the plugin when linking yann@2287: # - if binutils does not have plugins: LTO is handled by collect2 yann@2287: # In any case, LTO support does not depend on plugins, but takes yann@2287: # advantage of it yann@2363: # Also, only the 4.5 series needs libelf for LTO; 4.6 has dropped yann@2363: # the dependency. yann@2122: config CC_GCC_USE_LTO yann@2122: bool yann@2122: prompt "Enable LTO" yann@2122: default y yann@2122: depends on CC_GCC_HAS_LTO yann@2362: select CC_GCC_USE_LIBELF if CC_GCC_4_5 yann@2122: help yann@2122: Enable the Link Time Optimisations. yann@2122: yann@2122: This will require the libelf companion library, and it yann@2122: wil be build automatically for you. yann@2122: yann@2415: #----------------------------------------------------------------------------- yann@2415: comment "Settings for libraries running on target" bryanhundven@2211: yann@2415: config CC_GCC_ENABLE_TARGET_OPTSPACE js@2045: bool yann@2415: prompt "Optimize gcc libs for size" js@2045: default y js@2045: help yann@2415: Pass --enable-target-optspace to crossgcc's configure. yann@2415: yann@2415: This will compile crossgcc's libs with -Os. js@2045: yann@2144: config CC_GCC_LIBMUDFLAP yann@2144: bool yann@2144: prompt "Compile libmudflap" yann@2144: help yann@2144: libmudflap is a pointer-use checking tool, which can detect yann@2144: various mis-usages of pointers in C and (to some extents) C++. yann@2144: yann@2144: You should say 'N' here, as libmduflap generates instrumented yann@2144: code (thus it is a bit bigger and a bit slower) and requires yann@2144: re-compilation and re-link, while it exists better run-time yann@2144: alternatives (eg. DUMA, dmalloc...) that need neither re- yann@2144: compilation nor re-link. yann@2144: yann@2145: config CC_GCC_LIBGOMP yann@2145: bool yann@2145: prompt "Compile libgomp" yann@2145: help yann@2145: libgomp is "the GNU implementation of the OpenMP Application Programming yann@2145: Interface (API) for multi-platform shared-memory parallel programming in yann@2145: C/C++ and Fortran". See: yann@2145: http://gcc.gnu.org/onlinedocs/libgomp/ yann@2145: yann@2145: The default is 'N'. Say 'Y' if you need it, and report success/failure. yann@2145: yann@2146: config CC_GCC_LIBSSP yann@2146: bool yann@2146: prompt "Compile libssp" yann@2146: help yann@2146: libssp is the run-time Stack-Smashing Protection library. yann@2146: yann@2146: The default is 'N'. Say 'Y' if you need it, and report success/failure. yann@2146: yann@2144: #----------------------------------------------------------------------------- yann@2144: yann@2041: comment "Misc. obscure options." yann@2041: yann@2041: config CC_CXA_ATEXIT yann@2041: bool yann@2041: prompt "Use __cxa_atexit" yann@2041: default y yann@2041: depends on ! BARE_METAL yann@2041: help yann@2041: If you get the missing symbol "__cxa_atexit" when building C++ programs, yann@2041: you might want to try disabling this option. yann@2041: yann@2041: config CC_GCC_DISABLE_PCH yann@2041: bool yann@2041: prompt "Do not build PCH" yann@2041: help yann@2041: Say 'y' here to not use Pre-Compiled Headers in the resulting toolchain. yann@2041: at the expense of speed when compiling C++ code. yann@2041: yann@2041: For some configurations (most notably canadian?), PCH are broken, and yann@2041: need to be disabled. Please see: yann@2041: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40974 yann@2041: yann@2042: config CC_GCC_SJLJ_EXCEPTIONS yann@2042: tristate yann@2041: prompt "Use sjlj for exceptions" yann@2054: depends on ! BARE_METAL yann@2042: default m yann@2041: help yann@2042: 'sjlj' is short for setjmp/longjmp. yann@2041: yann@2042: On some architectures, stack unwinding during exception handling yann@2042: works perfectly well without using sjlj, while on some others, yann@2042: use of sjlj is required for proper stack unwinding. yann@2041: yann@2042: Option | sjlj use | Associated ./configure switch yann@2042: ---------+--------------------+-------------------------------- yann@2042: Y | forcibly used | --enable-sjlj-exceptions yann@2042: M | auto | (none, ./configure decides) yann@2042: N | forcibly not used | --disable-sjlj-exceptions yann@2041: yann@2042: It should be safe to say 'M' or 'N'. yann@2042: yann@2042: It can happen that ./configure is wrong in some cases. Known yann@2042: case is for ARM big endian, where you should say 'N'. yann@2043: yann@2143: config CC_GCC_LDBL_128 yann@2143: tristate yann@2143: prompt "Enable 128-bit long doubles" yann@2143: default m yann@2143: depends on CC_GCC_4_2_or_later yann@2143: help yann@2143: Saying 'Y' will force gcc to use 128-bit wide long doubles yann@2143: Saying 'N' will force gcc to use 64-bit wide long doubles yann@2143: Saying 'M' will let gcc choose (default is 128-bit for yann@2143: glibc >= 2.4, 64-bit otherwise) yann@2143: yann@2143: If in doubt, keep the default, ie. 'M'. yann@2521: yann@2521: config CC_GCC_BUILD_ID yann@2521: bool yann@2521: prompt "Enable build-id" yann@2521: depends on CC_GCC_HAS_BUILD_ID yann@2521: help yann@2521: Tells GCC to pass --build-id option to the linker for all final yann@2521: links (links performed without the -r or --relocatable option), yann@2521: if the linker supports it. If you say 'y' here, but your linker yann@2521: does not support --build-id option, a warning is issued and this yann@2521: option is ignored. yann@2521: yann@2521: The default is off. yann@2522: yann@2522: choice CC_GCC_LNK_HASH_STYLE_CHOICE yann@2522: bool yann@2522: prompt "linker hash style" yann@2522: depends on CC_GCC_HAS_LNK_HASH_STYLE yann@2522: yann@2522: config CC_GCC_LNK_HASH_STYLE_DEFAULT yann@2522: bool yann@2522: prompt "Default" yann@2522: help yann@2522: Do not specify any value, and use the default value (sysv). yann@2522: yann@2522: config CC_GCC_LNK_HASH_STYLE_SYSV yann@2522: bool yann@2522: prompt "sysv" yann@2522: help yann@2522: Force use of the SYSV hash style. yann@2522: yann@2522: config CC_GCC_LNK_HASH_STYLE_GNU yann@2522: bool yann@2522: prompt "gnu" yann@2522: help yann@2522: Force use of the GNU hash style. yann@2522: yann@2522: config CC_GCC_LNK_HASH_STYLE_BOTH yann@2522: bool yann@2522: prompt "both" yann@2522: help yann@2522: Force use of both hash styles. yann@2522: yann@2522: endchoice # CC_GCC_LNK_HASH_STYLE_CHOICE yann@2522: yann@2522: config CC_GCC_LNK_HASH_STYLE yann@2522: string yann@2522: default "" if CC_GCC_LNK_HASH_STYLE_DEFAULT yann@2522: default "sysv" if CC_GCC_LNK_HASH_STYLE_SYSV yann@2522: default "gnu" if CC_GCC_LNK_HASH_STYLE_GNU yann@2522: default "both" if CC_GCC_LNK_HASH_STYLE_BOTH yann@2523: yann@2523: #----------------------------------------------------------------------------- yann@2523: yann@2523: config CC_GCC_HAS_ARCH_OPTIONS yann@2523: bool yann@2523: yann@2523: comment "archictecture-specific options" yann@2523: depends on CC_GCC_HAS_ARCH_OPTIONS yann@2523: yann@2523: if ARCH_mips yann@2523: source "config/cc/gcc.in.mips" yann@2523: endif # ARCH_mips