config/cc/gcc.in.2
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Jun 04 17:43:49 2011 +0200 (2011-06-04)
changeset 2505 f87f02b00cc7
parent 2487 481cd34691f0
child 2521 9cfca603f892
permissions -rw-r--r--
Makefile: make it work for auto-completion

The latest autocompletion calls 'make -qp' to get all the possible
targets. This currently fails, as our makefile is calling itself
again and again ad-libitum.

Fix it by detecting that the recursion level is not 0, and bail out
if so. It works so well that it has the side effect of showing only
the 'public' target, and hide our internal ones! :-)

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.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@2500
    47
    depends on CONFIGURE_has_static_libstdcxx
yann@2415
    48
    depends on CC_GCC_4_4_or_later
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@2415
    56
#-----------------------------------------------------------------------------
yann@2415
    57
# Optimisation features
yann@2415
    58
yann@2415
    59
comment "Optimisation features"
yann@2041
    60
yann@2122
    61
config CC_GCC_USE_GRAPHITE
yann@2122
    62
    bool
yann@2122
    63
    prompt "Enable GRAPHITE loop optimisations"
yann@2122
    64
    default y
yann@2122
    65
    depends on CC_GCC_HAS_GRAPHITE
yann@2122
    66
    select CC_GCC_USE_PPL_CLOOG
yann@2122
    67
    help
yann@2122
    68
      Enable the GRAPHITE loop optimsations.
yann@2122
    69
      
yann@2122
    70
      This requires the PPL and CLooG companion libraries, and
yann@2122
    71
      those will be automatically build for you.
yann@2122
    72
      
yann@2122
    73
      On some systems (eg. Cygwin), PPL and/or CLooG may not
yann@2122
    74
      build properly (yet), so you'll have to say 'N' here.
yann@2122
    75
yann@2287
    76
# The way LTO works is a bit twisted.
yann@2287
    77
# See: http://gcc.gnu.org/wiki/LinkTimeOptimization#Requirements
yann@2287
    78
# Basically:
yann@2287
    79
#   - if binutils has plugins: LTO is handled by ld/gold by loading
yann@2287
    80
#     the plugin when linking
yann@2287
    81
#   - if binutils does not have plugins: LTO is handled by collect2
yann@2287
    82
# In any case, LTO support does not depend on plugins, but takes
yann@2287
    83
# advantage of it
yann@2363
    84
# Also, only the 4.5 series needs libelf for LTO; 4.6 has dropped
yann@2363
    85
# the dependency.
yann@2122
    86
config CC_GCC_USE_LTO
yann@2122
    87
    bool
yann@2122
    88
    prompt "Enable LTO"
yann@2122
    89
    default y
yann@2122
    90
    depends on CC_GCC_HAS_LTO
yann@2362
    91
    select CC_GCC_USE_LIBELF if CC_GCC_4_5
yann@2122
    92
    help
yann@2122
    93
      Enable the Link Time Optimisations.
yann@2122
    94
      
yann@2122
    95
      This will require the libelf companion library, and it
yann@2122
    96
      wil be build automatically for you.
yann@2122
    97
yann@2415
    98
#-----------------------------------------------------------------------------
yann@2415
    99
comment "Settings for libraries running on target"
bryanhundven@2211
   100
yann@2415
   101
config CC_GCC_ENABLE_TARGET_OPTSPACE
js@2045
   102
    bool
yann@2415
   103
    prompt "Optimize gcc libs for size"
js@2045
   104
    default y
js@2045
   105
    help
yann@2415
   106
      Pass --enable-target-optspace to crossgcc's configure.
yann@2415
   107
      
yann@2415
   108
      This will compile crossgcc's libs with -Os.
js@2045
   109
yann@2144
   110
config CC_GCC_LIBMUDFLAP
yann@2144
   111
    bool
yann@2144
   112
    prompt "Compile libmudflap"
yann@2144
   113
    help
yann@2144
   114
      libmudflap is a pointer-use checking tool, which can detect
yann@2144
   115
      various mis-usages of pointers in C and (to some extents) C++.
yann@2144
   116
      
yann@2144
   117
      You should say 'N' here, as libmduflap generates instrumented
yann@2144
   118
      code (thus it is a bit bigger and a bit slower) and requires
yann@2144
   119
      re-compilation and re-link, while it exists better run-time
yann@2144
   120
      alternatives (eg. DUMA, dmalloc...) that need neither re-
yann@2144
   121
      compilation nor re-link.
yann@2144
   122
yann@2145
   123
config CC_GCC_LIBGOMP
yann@2145
   124
    bool
yann@2145
   125
    prompt "Compile libgomp"
yann@2145
   126
    help
yann@2145
   127
      libgomp is "the GNU implementation of the OpenMP Application Programming
yann@2145
   128
      Interface (API) for multi-platform shared-memory parallel programming in
yann@2145
   129
      C/C++ and Fortran". See:
yann@2145
   130
        http://gcc.gnu.org/onlinedocs/libgomp/
yann@2145
   131
      
yann@2145
   132
      The default is 'N'. Say 'Y' if you need it, and report success/failure.
yann@2145
   133
yann@2146
   134
config CC_GCC_LIBSSP
yann@2146
   135
    bool
yann@2146
   136
    prompt "Compile libssp"
yann@2146
   137
    help
yann@2146
   138
      libssp is the run-time Stack-Smashing Protection library.
yann@2146
   139
      
yann@2146
   140
      The default is 'N'. Say 'Y' if you need it, and report success/failure.
yann@2146
   141
yann@2144
   142
#-----------------------------------------------------------------------------
yann@2144
   143
yann@2041
   144
comment "Misc. obscure options."
yann@2041
   145
yann@2041
   146
config CC_CXA_ATEXIT
yann@2041
   147
    bool
yann@2041
   148
    prompt "Use __cxa_atexit"
yann@2041
   149
    default y
yann@2041
   150
    depends on ! BARE_METAL
yann@2041
   151
    help
yann@2041
   152
      If you get the missing symbol "__cxa_atexit" when building C++ programs,
yann@2041
   153
      you might want to try disabling this option.
yann@2041
   154
yann@2041
   155
config CC_GCC_DISABLE_PCH
yann@2041
   156
    bool
yann@2041
   157
    prompt "Do not build PCH"
yann@2041
   158
    help
yann@2041
   159
      Say 'y' here to not use Pre-Compiled Headers in the resulting toolchain.
yann@2041
   160
      at the expense of speed when compiling C++ code.
yann@2041
   161
      
yann@2041
   162
      For some configurations (most notably canadian?), PCH are broken, and
yann@2041
   163
      need to be disabled. Please see:
yann@2041
   164
        http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40974
yann@2041
   165
yann@2042
   166
config CC_GCC_SJLJ_EXCEPTIONS
yann@2042
   167
    tristate
yann@2041
   168
    prompt "Use sjlj for exceptions"
yann@2054
   169
    depends on ! BARE_METAL
yann@2042
   170
    default m
yann@2041
   171
    help
yann@2042
   172
      'sjlj' is short for setjmp/longjmp.
yann@2041
   173
      
yann@2042
   174
      On some architectures, stack unwinding during exception handling
yann@2042
   175
      works perfectly well without using sjlj, while on some others,
yann@2042
   176
      use of sjlj is required for proper stack unwinding.
yann@2041
   177
      
yann@2042
   178
       Option  | sjlj use           | Associated ./configure switch
yann@2042
   179
      ---------+--------------------+--------------------------------
yann@2042
   180
         Y     | forcibly used      | --enable-sjlj-exceptions
yann@2042
   181
         M     | auto               | (none, ./configure decides)
yann@2042
   182
         N     | forcibly not used  | --disable-sjlj-exceptions
yann@2041
   183
      
yann@2042
   184
      It should be safe to say 'M' or 'N'.
yann@2042
   185
      
yann@2042
   186
      It can happen that ./configure is wrong in some cases. Known
yann@2042
   187
      case is for ARM big endian, where you should say 'N'.
yann@2043
   188
yann@2143
   189
config CC_GCC_LDBL_128
yann@2143
   190
    tristate
yann@2143
   191
    prompt "Enable 128-bit long doubles"
yann@2143
   192
    default m
yann@2143
   193
    depends on CC_GCC_4_2_or_later
yann@2143
   194
    help
yann@2143
   195
      Saying 'Y' will force gcc to use 128-bit wide long doubles
yann@2143
   196
      Saying 'N' will force gcc to use 64-bit wide long doubles
yann@2143
   197
      Saying 'M' will let gcc choose (default is 128-bit for
yann@2143
   198
                 glibc >= 2.4, 64-bit otherwise)
yann@2143
   199
      
yann@2143
   200
      If in doubt, keep the default, ie. 'M'.