config/cc/gcc.in.2
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Dec 31 16:23:27 2011 +0100 (2011-12-31)
changeset 2814 3dc2727ebffc
parent 2717 13df2720b374
child 2948 3396ce2c25ef
permissions -rw-r--r--
cc/gcc: add option to use system zlib

In some cases, it might be desirable to use the system zlib

Eg. because latest gcc seem to be totally borked when it comes
to multilib, and tries to build a multilib host zlib, when it
is *absolutely* *not* needed: we want mulitlib on the target,
not on the host! Sigh... :-(

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.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     depends on EXPERIMENTAL
    60     help
    61       Do not use bundled zlib, and use the zlib already available for
    62       the host (eg. the system library).
    63       
    64       If you want to build a static toolchain, you will need to also
    65       install the static version of zlib for your host.
    66       
    67       If unsure, say 'n'.
    68 
    69 #-----------------------------------------------------------------------------
    70 # Optimisation features
    71 
    72 comment "Optimisation features"
    73 
    74 config CC_GCC_USE_GRAPHITE
    75     bool
    76     prompt "Enable GRAPHITE loop optimisations"
    77     default y
    78     depends on CC_GCC_HAS_GRAPHITE
    79     select CC_GCC_USE_PPL_CLOOG
    80     help
    81       Enable the GRAPHITE loop optimsations.
    82       
    83       This requires the PPL and CLooG companion libraries, and
    84       those will be automatically build for you.
    85       
    86       On some systems (eg. Cygwin), PPL and/or CLooG may not
    87       build properly (yet), so you'll have to say 'N' here.
    88 
    89 # The way LTO works is a bit twisted.
    90 # See: http://gcc.gnu.org/wiki/LinkTimeOptimization#Requirements
    91 # Basically:
    92 #   - if binutils has plugins: LTO is handled by ld/gold by loading
    93 #     the plugin when linking
    94 #   - if binutils does not have plugins: LTO is handled by collect2
    95 # In any case, LTO support does not depend on plugins, but takes
    96 # advantage of it
    97 # Also, only the 4.5 series needs libelf for LTO; 4.6 has dropped
    98 # the dependency.
    99 config CC_GCC_USE_LTO
   100     bool
   101     prompt "Enable LTO"
   102     default y
   103     depends on CC_GCC_HAS_LTO
   104     select CC_GCC_USE_LIBELF if CC_GCC_4_5
   105     help
   106       Enable the Link Time Optimisations.
   107       
   108       This will require the libelf companion library, and it
   109       wil be build automatically for you.
   110 
   111 #-----------------------------------------------------------------------------
   112 comment "Settings for libraries running on target"
   113 
   114 config CC_GCC_ENABLE_TARGET_OPTSPACE
   115     bool
   116     prompt "Optimize gcc libs for size"
   117     default y
   118     help
   119       Pass --enable-target-optspace to crossgcc's configure.
   120       
   121       This will compile crossgcc's libs with -Os.
   122 
   123 config CC_GCC_LIBMUDFLAP
   124     bool
   125     prompt "Compile libmudflap"
   126     help
   127       libmudflap is a pointer-use checking tool, which can detect
   128       various mis-usages of pointers in C and (to some extents) C++.
   129       
   130       You should say 'N' here, as libmduflap generates instrumented
   131       code (thus it is a bit bigger and a bit slower) and requires
   132       re-compilation and re-link, while it exists better run-time
   133       alternatives (eg. DUMA, dmalloc...) that need neither re-
   134       compilation nor re-link.
   135 
   136 config CC_GCC_LIBGOMP
   137     bool
   138     prompt "Compile libgomp"
   139     help
   140       libgomp is "the GNU implementation of the OpenMP Application Programming
   141       Interface (API) for multi-platform shared-memory parallel programming in
   142       C/C++ and Fortran". See:
   143         http://gcc.gnu.org/onlinedocs/libgomp/
   144       
   145       The default is 'N'. Say 'Y' if you need it, and report success/failure.
   146 
   147 config CC_GCC_LIBSSP
   148     bool
   149     prompt "Compile libssp"
   150     help
   151       libssp is the run-time Stack-Smashing Protection library.
   152       
   153       The default is 'N'. Say 'Y' if you need it, and report success/failure.
   154 
   155 #-----------------------------------------------------------------------------
   156 
   157 comment "Misc. obscure options."
   158 
   159 config CC_CXA_ATEXIT
   160     bool
   161     prompt "Use __cxa_atexit"
   162     default y
   163     depends on ! BARE_METAL
   164     help
   165       If you get the missing symbol "__cxa_atexit" when building C++ programs,
   166       you might want to try disabling this option.
   167 
   168 config CC_GCC_DISABLE_PCH
   169     bool
   170     prompt "Do not build PCH"
   171     help
   172       Say 'y' here to not use Pre-Compiled Headers in the resulting toolchain.
   173       at the expense of speed when compiling C++ code.
   174       
   175       For some configurations (most notably canadian?), PCH are broken, and
   176       need to be disabled. Please see:
   177         http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40974
   178 
   179 config CC_GCC_SJLJ_EXCEPTIONS
   180     tristate
   181     prompt "Use sjlj for exceptions"
   182     depends on ! BARE_METAL
   183     default m
   184     help
   185       'sjlj' is short for setjmp/longjmp.
   186       
   187       On some architectures, stack unwinding during exception handling
   188       works perfectly well without using sjlj, while on some others,
   189       use of sjlj is required for proper stack unwinding.
   190       
   191        Option  | sjlj use           | Associated ./configure switch
   192       ---------+--------------------+--------------------------------
   193          Y     | forcibly used      | --enable-sjlj-exceptions
   194          M     | auto               | (none, ./configure decides)
   195          N     | forcibly not used  | --disable-sjlj-exceptions
   196       
   197       It should be safe to say 'M' or 'N'.
   198       
   199       It can happen that ./configure is wrong in some cases. Known
   200       case is for ARM big endian, where you should say 'N'.
   201 
   202 config CC_GCC_LDBL_128
   203     tristate
   204     prompt "Enable 128-bit long doubles"
   205     default m
   206     depends on CC_GCC_4_2_or_later
   207     help
   208       Saying 'Y' will force gcc to use 128-bit wide long doubles
   209       Saying 'N' will force gcc to use 64-bit wide long doubles
   210       Saying 'M' will let gcc choose (default is 128-bit for
   211                  glibc >= 2.4, 64-bit otherwise)
   212       
   213       If in doubt, keep the default, ie. 'M'.
   214 
   215 config CC_GCC_BUILD_ID
   216     bool
   217     prompt "Enable build-id"
   218     depends on CC_GCC_HAS_BUILD_ID
   219     help
   220       Tells GCC to pass --build-id option to the linker for all final
   221       links (links performed without the -r or --relocatable option),
   222       if the linker supports it. If you say 'y' here, but your linker
   223       does not support --build-id option, a warning is issued and this
   224       option is ignored.
   225       
   226       The default is off.
   227 
   228 choice CC_GCC_LNK_HASH_STYLE_CHOICE
   229     bool
   230     prompt "linker hash style"
   231     depends on CC_GCC_HAS_LNK_HASH_STYLE
   232 
   233 config CC_GCC_LNK_HASH_STYLE_DEFAULT
   234     bool
   235     prompt "Default"
   236     help
   237       Do not specify any value, and use the default value (sysv).
   238 
   239 config CC_GCC_LNK_HASH_STYLE_SYSV
   240     bool
   241     prompt "sysv"
   242     help
   243       Force use of the SYSV hash style.
   244 
   245 config CC_GCC_LNK_HASH_STYLE_GNU
   246     bool
   247     prompt "gnu"
   248     help
   249       Force use of the GNU hash style.
   250 
   251 config CC_GCC_LNK_HASH_STYLE_BOTH
   252     bool
   253     prompt "both"
   254     help
   255       Force use of both hash styles.
   256 
   257 endchoice # CC_GCC_LNK_HASH_STYLE_CHOICE
   258 
   259 config CC_GCC_LNK_HASH_STYLE
   260     string
   261     default ""      if CC_GCC_LNK_HASH_STYLE_DEFAULT
   262     default "sysv"  if CC_GCC_LNK_HASH_STYLE_SYSV
   263     default "gnu"   if CC_GCC_LNK_HASH_STYLE_GNU
   264     default "both"  if CC_GCC_LNK_HASH_STYLE_BOTH
   265 
   266 #-----------------------------------------------------------------------------
   267 
   268 config CC_GCC_HAS_ARCH_OPTIONS
   269     bool
   270 
   271 comment "archictecture-specific options"
   272     depends on CC_GCC_HAS_ARCH_OPTIONS
   273 
   274 if ARCH_mips
   275 source "config/cc/gcc.in.mips"
   276 endif # ARCH_mips