config/cc/gcc.in.2
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Wed May 18 23:00:46 2011 +0200 (2011-05-18)
changeset 2467 200836977ce6
parent 2415 ae9899116f19
child 2469 3b08a7927e55
permissions -rw-r--r--
config: rename variables that are arrays

Make it explicit that a variable is an array bu the name of the variable.
It will be used later when .config gets munged to allow both multiple
arguments and arguments with spaces at the same time to be passed from the
configuration down to the build scripts.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
     1 # gcc configuration options
     2 
     3 config CC_PKGVERSION
     4     string
     5     prompt "gcc ID string"
     6     depends on CC_GCC_4_3_or_later
     7     default "crosstool-NG-${CT_VERSION}"
     8     help
     9       Specify a string that identifies your package. You may wish to include
    10       a build number or build date. This version string will be included in
    11       the output of gcc --version.
    12 
    13       This is passed to the configure flag --with-pkgversion.
    14 
    15 config CC_BUGURL
    16     string
    17     prompt "gcc bug URL"
    18     depends on CC_GCC_4_3_or_later
    19     default ""
    20     help
    21       Specify the URL that users should visit if they wish to report a bug.
    22 
    23 config CC_ENABLE_CXX_FLAGS
    24     string
    25     prompt "Flags to pass to --enable-cxx-flags"
    26     default ""
    27     help
    28       Enter here the value of the gcc's ./configure option --enable-cxx-flags.
    29       Leave empty if you don't know better.
    30       
    31       Note: just pass in the option _value_, that is only the part that goes
    32       after the '=' sign.
    33 
    34 config CC_CORE_EXTRA_CONFIG_ARRAY
    35     string
    36     prompt "Core gcc extra config"
    37     default ""
    38     help
    39       Extra flags to pass onto ./configure when configuring the core gcc.
    40       
    41       The core gcc is a stripped down, C-only compiler needed to build
    42       the C library. Kinda bootstrap gcc, if you wish.
    43 
    44 config CC_EXTRA_CONFIG_ARRAY
    45     string
    46     prompt "gcc extra config"
    47     default ""
    48     depends on ! BARE_METAL
    49     help
    50       Extra flags to pass onto ./configure when configuring gcc.
    51 
    52 config STATIC_TOOLCHAIN
    53     select CC_STATIC_LIBSTDCXX if CC_GCC_4_4_or_later
    54 
    55 config CC_STATIC_LIBSTDCXX
    56     bool
    57     prompt "Link libstdc++ statically into the gcc binary"
    58     default y
    59     depends on CC_GCC_4_4_or_later
    60     help
    61       Newer gcc versions use the PPL library which is C++ code.  Statically
    62       linking libstdc++ increases the likeliness that the gcc binary will
    63       run on machines other than the one which it was built on, without
    64       having to worry about distributing the matching version of libstdc++
    65       along with it.
    66 
    67 #-----------------------------------------------------------------------------
    68 # Optimisation features
    69 
    70 comment "Optimisation features"
    71 
    72 config CC_GCC_USE_GRAPHITE
    73     bool
    74     prompt "Enable GRAPHITE loop optimisations"
    75     default y
    76     depends on CC_GCC_HAS_GRAPHITE
    77     select CC_GCC_USE_PPL_CLOOG
    78     help
    79       Enable the GRAPHITE loop optimsations.
    80       
    81       This requires the PPL and CLooG companion libraries, and
    82       those will be automatically build for you.
    83       
    84       On some systems (eg. Cygwin), PPL and/or CLooG may not
    85       build properly (yet), so you'll have to say 'N' here.
    86 
    87 # The way LTO works is a bit twisted.
    88 # See: http://gcc.gnu.org/wiki/LinkTimeOptimization#Requirements
    89 # Basically:
    90 #   - if binutils has plugins: LTO is handled by ld/gold by loading
    91 #     the plugin when linking
    92 #   - if binutils does not have plugins: LTO is handled by collect2
    93 # In any case, LTO support does not depend on plugins, but takes
    94 # advantage of it
    95 # Also, only the 4.5 series needs libelf for LTO; 4.6 has dropped
    96 # the dependency.
    97 config CC_GCC_USE_LTO
    98     bool
    99     prompt "Enable LTO"
   100     default y
   101     depends on CC_GCC_HAS_LTO
   102     select CC_GCC_USE_LIBELF if CC_GCC_4_5
   103     help
   104       Enable the Link Time Optimisations.
   105       
   106       This will require the libelf companion library, and it
   107       wil be build automatically for you.
   108 
   109 #-----------------------------------------------------------------------------
   110 comment "Settings for libraries running on target"
   111 
   112 config CC_GCC_ENABLE_TARGET_OPTSPACE
   113     bool
   114     prompt "Optimize gcc libs for size"
   115     default y
   116     help
   117       Pass --enable-target-optspace to crossgcc's configure.
   118       
   119       This will compile crossgcc's libs with -Os.
   120 
   121 config CC_GCC_LIBMUDFLAP
   122     bool
   123     prompt "Compile libmudflap"
   124     default n
   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     default n
   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     default n
   151     help
   152       libssp is the run-time Stack-Smashing Protection library.
   153       
   154       The default is 'N'. Say 'Y' if you need it, and report success/failure.
   155 
   156 #-----------------------------------------------------------------------------
   157 
   158 comment "Misc. obscure options."
   159 
   160 config CC_CXA_ATEXIT
   161     bool
   162     prompt "Use __cxa_atexit"
   163     default y
   164     depends on ! BARE_METAL
   165     help
   166       If you get the missing symbol "__cxa_atexit" when building C++ programs,
   167       you might want to try disabling this option.
   168 
   169 config CC_GCC_DISABLE_PCH
   170     bool
   171     prompt "Do not build PCH"
   172     default n
   173     help
   174       Say 'y' here to not use Pre-Compiled Headers in the resulting toolchain.
   175       at the expense of speed when compiling C++ code.
   176       
   177       For some configurations (most notably canadian?), PCH are broken, and
   178       need to be disabled. Please see:
   179         http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40974
   180 
   181 config CC_GCC_SJLJ_EXCEPTIONS
   182     tristate
   183     prompt "Use sjlj for exceptions"
   184     depends on ! BARE_METAL
   185     default m
   186     help
   187       'sjlj' is short for setjmp/longjmp.
   188       
   189       On some architectures, stack unwinding during exception handling
   190       works perfectly well without using sjlj, while on some others,
   191       use of sjlj is required for proper stack unwinding.
   192       
   193        Option  | sjlj use           | Associated ./configure switch
   194       ---------+--------------------+--------------------------------
   195          Y     | forcibly used      | --enable-sjlj-exceptions
   196          M     | auto               | (none, ./configure decides)
   197          N     | forcibly not used  | --disable-sjlj-exceptions
   198       
   199       It should be safe to say 'M' or 'N'.
   200       
   201       It can happen that ./configure is wrong in some cases. Known
   202       case is for ARM big endian, where you should say 'N'.
   203 
   204 config CC_GCC_LDBL_128
   205     tristate
   206     prompt "Enable 128-bit long doubles"
   207     default m
   208     depends on CC_GCC_4_2_or_later
   209     help
   210       Saying 'Y' will force gcc to use 128-bit wide long doubles
   211       Saying 'N' will force gcc to use 64-bit wide long doubles
   212       Saying 'M' will let gcc choose (default is 128-bit for
   213                  glibc >= 2.4, 64-bit otherwise)
   214       
   215       If in doubt, keep the default, ie. 'M'.