config/cc/gcc.in.2
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Mon Apr 30 17:24:58 2012 +0200 (2012-04-30)
changeset 2948 3396ce2c25ef
parent 2814 3dc2727ebffc
child 2980 150402ee5468
permissions -rw-r--r--
cc/gcc: 4.7 can request the linker's hash-style

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