config/cc/gcc.in.2
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Mar 19 16:01:40 2011 +0100 (2011-03-19)
changeset 2363 bc2714299363
parent 2362 0888065f8c4d
child 2415 ae9899116f19
permissions -rw-r--r--
cc/gcc: prepare for upcoming 4.6

gcc 4.6 will no longer depend on libelf.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
     1 # Misc library-related options
     2 
     3 config CC_GCC_ENABLE_TARGET_OPTSPACE
     4     bool
     5     prompt "Optimize gcc libs for size"
     6     default y
     7     help
     8       Pass --enable-target-optspace to crossgcc's configure.
     9       
    10       This will compile crossgcc's libs with -Os.
    11 
    12 config CC_GCC_USE_GRAPHITE
    13     bool
    14     prompt "Enable GRAPHITE loop optimisations"
    15     default y
    16     depends on CC_GCC_HAS_GRAPHITE
    17     select CC_GCC_USE_PPL_CLOOG
    18     help
    19       Enable the GRAPHITE loop optimsations.
    20       
    21       This requires the PPL and CLooG companion libraries, and
    22       those will be automatically build for you.
    23       
    24       On some systems (eg. Cygwin), PPL and/or CLooG may not
    25       build properly (yet), so you'll have to say 'N' here.
    26 
    27 # The way LTO works is a bit twisted.
    28 # See: http://gcc.gnu.org/wiki/LinkTimeOptimization#Requirements
    29 # Basically:
    30 #   - if binutils has plugins: LTO is handled by ld/gold by loading
    31 #     the plugin when linking
    32 #   - if binutils does not have plugins: LTO is handled by collect2
    33 # In any case, LTO support does not depend on plugins, but takes
    34 # advantage of it
    35 # Also, only the 4.5 series needs libelf for LTO; 4.6 has dropped
    36 # the dependency.
    37 config CC_GCC_USE_LTO
    38     bool
    39     prompt "Enable LTO"
    40     default y
    41     depends on CC_GCC_HAS_LTO
    42     select CC_GCC_USE_LIBELF if CC_GCC_4_5
    43     help
    44       Enable the Link Time Optimisations.
    45       
    46       This will require the libelf companion library, and it
    47       wil be build automatically for you.
    48 
    49 config STATIC_TOOLCHAIN
    50     select CC_STATIC_LIBSTDCXX if CC_GCC_4_4_or_later
    51 
    52 config CC_STATIC_LIBSTDCXX
    53     bool
    54     prompt "Link libstdc++ statically into the gcc binary"
    55     default y
    56     depends on CC_GCC_4_4_or_later
    57     help
    58       Newer gcc versions use the PPL library which is C++ code.  Statically
    59       linking libstdc++ increases the likeliness that the gcc binary will
    60       run on machines other than the one which it was built on, without
    61       having to worry about distributing the matching version of libstdc++
    62       along with it.
    63 
    64 config CC_GCC_LIBMUDFLAP
    65     bool
    66     prompt "Compile libmudflap"
    67     default n
    68     help
    69       libmudflap is a pointer-use checking tool, which can detect
    70       various mis-usages of pointers in C and (to some extents) C++.
    71       
    72       You should say 'N' here, as libmduflap generates instrumented
    73       code (thus it is a bit bigger and a bit slower) and requires
    74       re-compilation and re-link, while it exists better run-time
    75       alternatives (eg. DUMA, dmalloc...) that need neither re-
    76       compilation nor re-link.
    77 
    78 config CC_GCC_LIBGOMP
    79     bool
    80     prompt "Compile libgomp"
    81     default n
    82     help
    83       libgomp is "the GNU implementation of the OpenMP Application Programming
    84       Interface (API) for multi-platform shared-memory parallel programming in
    85       C/C++ and Fortran". See:
    86         http://gcc.gnu.org/onlinedocs/libgomp/
    87       
    88       The default is 'N'. Say 'Y' if you need it, and report success/failure.
    89 
    90 config CC_GCC_LIBSSP
    91     bool
    92     prompt "Compile libssp"
    93     default n
    94     help
    95       libssp is the run-time Stack-Smashing Protection library.
    96       
    97       The default is 'N'. Say 'Y' if you need it, and report success/failure.
    98 
    99 #-----------------------------------------------------------------------------
   100 
   101 comment "Misc. obscure options."
   102 
   103 config CC_CXA_ATEXIT
   104     bool
   105     prompt "Use __cxa_atexit"
   106     default y
   107     depends on ! BARE_METAL
   108     help
   109       If you get the missing symbol "__cxa_atexit" when building C++ programs,
   110       you might want to try disabling this option.
   111 
   112 config CC_GCC_DISABLE_PCH
   113     bool
   114     prompt "Do not build PCH"
   115     default n
   116     help
   117       Say 'y' here to not use Pre-Compiled Headers in the resulting toolchain.
   118       at the expense of speed when compiling C++ code.
   119       
   120       For some configurations (most notably canadian?), PCH are broken, and
   121       need to be disabled. Please see:
   122         http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40974
   123 
   124 config CC_GCC_SJLJ_EXCEPTIONS
   125     tristate
   126     prompt "Use sjlj for exceptions"
   127     depends on ! BARE_METAL
   128     default m
   129     help
   130       'sjlj' is short for setjmp/longjmp.
   131       
   132       On some architectures, stack unwinding during exception handling
   133       works perfectly well without using sjlj, while on some others,
   134       use of sjlj is required for proper stack unwinding.
   135       
   136        Option  | sjlj use           | Associated ./configure switch
   137       ---------+--------------------+--------------------------------
   138          Y     | forcibly used      | --enable-sjlj-exceptions
   139          M     | auto               | (none, ./configure decides)
   140          N     | forcibly not used  | --disable-sjlj-exceptions
   141       
   142       It should be safe to say 'M' or 'N'.
   143       
   144       It can happen that ./configure is wrong in some cases. Known
   145       case is for ARM big endian, where you should say 'N'.
   146 
   147 config CC_GCC_LDBL_128
   148     tristate
   149     prompt "Enable 128-bit long doubles"
   150     default m
   151     depends on CC_GCC_4_2_or_later
   152     help
   153       Saying 'Y' will force gcc to use 128-bit wide long doubles
   154       Saying 'N' will force gcc to use 64-bit wide long doubles
   155       Saying 'M' will let gcc choose (default is 128-bit for
   156                  glibc >= 2.4, 64-bit otherwise)
   157       
   158       If in doubt, keep the default, ie. 'M'.