config/cc/gcc.in.2
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Wed Dec 26 20:05:19 2012 +0100 (2012-12-26)
changeset 3150 1d6fd9bde73c
parent 2980 150402ee5468
child 3217 15eedf548d33
permissions -rw-r--r--
all: unmark experimental features

It's been some time now we've had those features, so unmark them
being experimental.

It does not mean everything is perfect, but may gather some more
testing of those features.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
     1 # gcc configuration options
     2 
     3 config CC_ENABLE_CXX_FLAGS
     4     string
     5     prompt "Flags to pass to --enable-cxx-flags"
     6     default ""
     7     help
     8       Enter here the value of the gcc's ./configure option --enable-cxx-flags.
     9       Leave empty if you don't know better.
    10       
    11       Note: just pass in the option _value_, that is only the part that goes
    12       after the '=' sign.
    13 
    14 config CC_CORE_EXTRA_CONFIG_ARRAY
    15     string
    16     prompt "Core gcc extra config"
    17     default ""
    18     help
    19       Extra flags to pass onto ./configure when configuring the core gcc.
    20       
    21       The core gcc is a stripped down, C-only compiler needed to build
    22       the C library. Kinda bootstrap gcc, if you wish.
    23       
    24       You can enter multiple arguments here, and arguments can contain spaces
    25       if they are properly quoted (or escaped, but prefer quotes). Eg.:
    26           --with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space
    27 
    28 config CC_EXTRA_CONFIG_ARRAY
    29     string
    30     prompt "gcc extra config"
    31     default ""
    32     depends on ! BARE_METAL
    33     help
    34       Extra flags to pass onto ./configure when configuring gcc.
    35       
    36       You can enter multiple arguments here, and arguments can contain spaces
    37       if they are properly quoted (or escaped, but prefer quotes). Eg.:
    38           --with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space
    39 
    40 config STATIC_TOOLCHAIN
    41     select CC_STATIC_LIBSTDCXX if CC_GCC_4_4_or_later
    42 
    43 config CC_STATIC_LIBSTDCXX
    44     bool
    45     prompt "Link libstdc++ statically into the gcc binary"
    46     default y
    47     depends on CC_GCC_4_4_or_later
    48     select WANTS_STATIC_LINK
    49     help
    50       Newer gcc versions use the PPL library which is C++ code.  Statically
    51       linking libstdc++ increases the likeliness that the gcc binary will
    52       run on machines other than the one which it was built on, without
    53       having to worry about distributing the matching version of libstdc++
    54       along with it.
    55 
    56 config CC_GCC_SYSTEM_ZLIB
    57     bool
    58     prompt "Use system zlib"
    59     help
    60       Do not use bundled zlib, and use the zlib already available for
    61       the host (eg. the system library).
    62       
    63       If you want to build a static toolchain, you will need to also
    64       install the static version of zlib for your host.
    65       
    66       If unsure, say 'n'.
    67 
    68 #-----------------------------------------------------------------------------
    69 # Optimisation features
    70 
    71 comment "Optimisation features"
    72 
    73 config CC_GCC_USE_GRAPHITE
    74     bool
    75     prompt "Enable GRAPHITE loop optimisations"
    76     default y
    77     depends on CC_GCC_HAS_GRAPHITE
    78     select CC_GCC_USE_PPL_CLOOG
    79     help
    80       Enable the GRAPHITE loop optimsations.
    81       
    82       This requires the PPL and CLooG companion libraries, and
    83       those will be automatically build for you.
    84       
    85       On some systems (eg. Cygwin), PPL and/or CLooG may not
    86       build properly (yet), so you'll have to say 'N' here.
    87 
    88 # The way LTO works is a bit twisted.
    89 # See: http://gcc.gnu.org/wiki/LinkTimeOptimization#Requirements
    90 # Basically:
    91 #   - if binutils has plugins: LTO is handled by ld/gold by loading
    92 #     the plugin when linking
    93 #   - if binutils does not have plugins: LTO is handled by collect2
    94 # In any case, LTO support does not depend on plugins, but takes
    95 # advantage of it
    96 # Also, only the 4.5 series needs libelf for LTO; 4.6 has dropped
    97 # the dependency.
    98 config CC_GCC_USE_LTO
    99     bool
   100     prompt "Enable LTO"
   101     default y
   102     depends on CC_GCC_HAS_LTO
   103     select CC_GCC_USE_LIBELF if CC_GCC_4_5
   104     help
   105       Enable the Link Time Optimisations.
   106       
   107       This will require the libelf companion library, and it
   108       wil be build automatically for you.
   109 
   110 #-----------------------------------------------------------------------------
   111 comment "Settings for libraries running on target"
   112 
   113 config CC_GCC_ENABLE_TARGET_OPTSPACE
   114     bool
   115     prompt "Optimize gcc libs for size"
   116     default y
   117     help
   118       Pass --enable-target-optspace to crossgcc's configure.
   119       
   120       This will compile crossgcc's libs with -Os.
   121 
   122 config CC_GCC_LIBMUDFLAP
   123     bool
   124     prompt "Compile libmudflap"
   125     help
   126       libmudflap is a pointer-use checking tool, which can detect
   127       various mis-usages of pointers in C and (to some extents) C++.
   128       
   129       You should say 'N' here, as libmduflap generates instrumented
   130       code (thus it is a bit bigger and a bit slower) and requires
   131       re-compilation and re-link, while it exists better run-time
   132       alternatives (eg. DUMA, dmalloc...) that need neither re-
   133       compilation nor re-link.
   134 
   135 config CC_GCC_LIBGOMP
   136     bool
   137     prompt "Compile libgomp"
   138     help
   139       libgomp is "the GNU implementation of the OpenMP Application Programming
   140       Interface (API) for multi-platform shared-memory parallel programming in
   141       C/C++ and Fortran". See:
   142         http://gcc.gnu.org/onlinedocs/libgomp/
   143       
   144       The default is 'N'. Say 'Y' if you need it, and report success/failure.
   145 
   146 config CC_GCC_LIBSSP
   147     bool
   148     prompt "Compile libssp"
   149     help
   150       libssp is the run-time Stack-Smashing Protection library.
   151       
   152       The default is 'N'. Say 'Y' if you need it, and report success/failure.
   153 
   154 config CC_GCC_LIBQUADMATH
   155     bool
   156     prompt "Compile libquadmath"
   157     depends on CC_GCC_HAS_LIBQUADMATH
   158     help
   159       libquadmath is a library which provides quad-precision mathematical
   160       functions on targets supporting the __float128 datatype. See:
   161         http://gcc.gnu.org/onlinedocs/libquadmath/
   162       
   163       The default is 'N'. Say 'Y' if you need it, and report success/failure.
   164 
   165 #-----------------------------------------------------------------------------
   166 
   167 comment "Misc. obscure options."
   168 
   169 config CC_CXA_ATEXIT
   170     bool
   171     prompt "Use __cxa_atexit"
   172     default y
   173     depends on ! BARE_METAL
   174     help
   175       If you get the missing symbol "__cxa_atexit" when building C++ programs,
   176       you might want to try disabling this option.
   177 
   178 config CC_GCC_DISABLE_PCH
   179     bool
   180     prompt "Do not build PCH"
   181     help
   182       Say 'y' here to not use Pre-Compiled Headers in the resulting toolchain.
   183       at the expense of speed when compiling C++ code.
   184       
   185       For some configurations (most notably canadian?), PCH are broken, and
   186       need to be disabled. Please see:
   187         http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40974
   188 
   189 config CC_GCC_SJLJ_EXCEPTIONS
   190     tristate
   191     prompt "Use sjlj for exceptions"
   192     depends on ! BARE_METAL
   193     default m
   194     help
   195       'sjlj' is short for setjmp/longjmp.
   196       
   197       On some architectures, stack unwinding during exception handling
   198       works perfectly well without using sjlj, while on some others,
   199       use of sjlj is required for proper stack unwinding.
   200       
   201        Option  | sjlj use           | Associated ./configure switch
   202       ---------+--------------------+--------------------------------
   203          Y     | forcibly used      | --enable-sjlj-exceptions
   204          M     | auto               | (none, ./configure decides)
   205          N     | forcibly not used  | --disable-sjlj-exceptions
   206       
   207       It should be safe to say 'M' or 'N'.
   208       
   209       It can happen that ./configure is wrong in some cases. Known
   210       case is for ARM big endian, where you should say 'N'.
   211 
   212 config CC_GCC_LDBL_128
   213     tristate
   214     prompt "Enable 128-bit long doubles"
   215     default m
   216     depends on CC_GCC_4_2_or_later
   217     help
   218       Saying 'Y' will force gcc to use 128-bit wide long doubles
   219       Saying 'N' will force gcc to use 64-bit wide long doubles
   220       Saying 'M' will let gcc choose (default is 128-bit for
   221                  glibc >= 2.4, 64-bit otherwise)
   222       
   223       If in doubt, keep the default, ie. 'M'.
   224 
   225 config CC_GCC_BUILD_ID
   226     bool
   227     prompt "Enable build-id"
   228     depends on CC_GCC_HAS_BUILD_ID
   229     help
   230       Tells GCC to pass --build-id option to the linker for all final
   231       links (links performed without the -r or --relocatable option),
   232       if the linker supports it. If you say 'y' here, but your linker
   233       does not support --build-id option, a warning is issued and this
   234       option is ignored.
   235       
   236       The default is off.
   237 
   238 choice CC_GCC_LNK_HASH_STYLE_CHOICE
   239     bool
   240     prompt "linker hash style"
   241     depends on CC_GCC_HAS_LNK_HASH_STYLE
   242     depends on BINUTILS_HAS_HASH_STYLE
   243 
   244 config CC_GCC_LNK_HASH_STYLE_DEFAULT
   245     bool
   246     prompt "Default"
   247     help
   248       Do not specify any value, and use the default value (sysv).
   249 
   250 config CC_GCC_LNK_HASH_STYLE_SYSV
   251     bool
   252     prompt "sysv"
   253     help
   254       Force use of the SYSV hash style.
   255 
   256 config CC_GCC_LNK_HASH_STYLE_GNU
   257     bool
   258     prompt "gnu"
   259     help
   260       Force use of the GNU hash style.
   261 
   262 config CC_GCC_LNK_HASH_STYLE_BOTH
   263     bool
   264     prompt "both"
   265     help
   266       Force use of both hash styles.
   267 
   268 endchoice # CC_GCC_LNK_HASH_STYLE_CHOICE
   269 
   270 config CC_GCC_LNK_HASH_STYLE
   271     string
   272     default ""      if CC_GCC_LNK_HASH_STYLE_DEFAULT
   273     default "sysv"  if CC_GCC_LNK_HASH_STYLE_SYSV
   274     default "gnu"   if CC_GCC_LNK_HASH_STYLE_GNU
   275     default "both"  if CC_GCC_LNK_HASH_STYLE_BOTH
   276 
   277 #-----------------------------------------------------------------------------
   278 
   279 config CC_GCC_HAS_ARCH_OPTIONS
   280     bool
   281 
   282 comment "archictecture-specific options"
   283     depends on CC_GCC_HAS_ARCH_OPTIONS
   284 
   285 if ARCH_mips
   286 source "config/cc/gcc.in.mips"
   287 endif # ARCH_mips