config/toolchain.in
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Jan 03 22:57:25 2012 +0100 (2012-01-03)
changeset 2936 2dfea349d307
parent 2786 4f7ed2e72178
child 3042 08aecbc69f12
permissions -rw-r--r--
cc/gcc: build core compilers for canadian

Currently, we rely on an existing external cross-compiler targetting
the target, to build the C library.

This can pause quite a few problems if that compiler is different from
the one we are building, because it could introduce some ABI issues.

This patch removes this dependency, by building the core compilers
as we do for standard cross, and also by building the binutils and
gcc, for running on the build machine.

This means we no longer need to offer the cross-sompiler selection in
the menuconfig.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
yann@41
     1
menu "Toolchain options"
yann@41
     2
yann@41
     3
comment "General toolchain options"
yann@41
     4
yann@2281
     5
config FORCE_SYSROOT
yann@2281
     6
    bool
yann@2281
     7
    default y if !OBSOLETE
yann@2281
     8
    select USE_SYSROOT
yann@2281
     9
yann@41
    10
config USE_SYSROOT
yann@41
    11
    bool
yann@41
    12
    prompt "Use sysroot'ed toolchain"
yann@41
    13
    default y
yann@41
    14
    help
yann@41
    15
      Use the 'shinny new' sysroot feature of gcc: libraries split between
yann@2279
    16
      prefix/target/sysroot/lib and prefix/target/sysroot/usr/lib
yann@41
    17
      
yann@41
    18
      You definitely want to say 'Y' here. Yes you do. I know you do. Say 'Y'.
yann@41
    19
yann@2279
    20
config SYSROOT_NAME
yann@2279
    21
    string
yann@2407
    22
    prompt "sysroot directory name" if ! BACKEND
yann@2279
    23
    depends on USE_SYSROOT
yann@2279
    24
    default "sysroot"
yann@2279
    25
    help
yann@2279
    26
      Enter the base name of the sysroot directory. Usually, this simply
yann@2279
    27
      is 'sysroot' (the default) or 'sys-root'.
yann@2279
    28
      
yann@2279
    29
      You are free to enter anything here, except for spaces, and '/'
antony@2564
    30
      (see SYSROOT_DIR_PREFIX, below). If you leave this empty, then the
yann@2279
    31
      default 'sysroot' is used.
yann@2279
    32
yann@1219
    33
config SYSROOT_DIR_PREFIX
yann@1219
    34
    string
yann@1865
    35
    prompt "sysroot prefix dir (READ HELP)" if ! BACKEND
yann@1219
    36
    depends on USE_SYSROOT
yann@1219
    37
    default ""
yann@1219
    38
    help
yann@1219
    39
      *
antony@2564
    40
      * Unless you really know you need that, leave it empty!
yann@1219
    41
      *
yann@1219
    42
      
yann@1219
    43
      This string will be interpreted as a directory component to be added
yann@1219
    44
      to the sysroot path, just before the actual sysroot directory.
yann@1219
    45
      
yann@1219
    46
      In fact, the sysroot path is constructed as:
yann@2279
    47
        ${CT_PREFIX_DIR}/${CT_TARGET}/${CT_SYSROOT_DIR_PREFIX}/${CT_SYSROOT_NAME}
yann@1219
    48
yann@2717
    49
config WANTS_STATIC_LINK
yann@2500
    50
    bool
yann@2500
    51
bryanhundven@2207
    52
config STATIC_TOOLCHAIN
bryanhundven@2207
    53
    bool
bryanhundven@2207
    54
    prompt "Build Static Toolchain (EXPERIMENTAL)"
bryanhundven@2207
    55
    depends on EXPERIMENTAL
yann@2717
    56
    select WANTS_STATIC_LINK
bryanhundven@2207
    57
    help
bryanhundven@2207
    58
      Build static host binaries.
bryanhundven@2207
    59
      
bryanhundven@2207
    60
      If you wish to move the toolchain to another host, and you are not
bryanhundven@2207
    61
      confident that this host has the required versions of system libs, then
antony@2564
    62
      you can say 'Y' here, and all the host tools will be linked statically.
bryanhundven@2207
    63
      
yann@2209
    64
      The impacted tools are:
yann@2717
    65
        - the cross-binutils (GNU binutils, elf2flt)
yann@2717
    66
        - the cross-compiler (gcc)
yann@2717
    67
        - the cross-debugger (gdb)
yann@2209
    68
      
bryanhundven@2207
    69
      The default is 'N', to build dynamicaly-linked host binaries.
bryanhundven@2207
    70
      
bryanhundven@2207
    71
      NOTE: this has no connection to whether the target libraries will be
bryanhundven@2207
    72
      dynamic or static. This only applies to the tools themselves.
bryanhundven@2207
    73
benoit@2487
    74
config TOOLCHAIN_PKGVERSION
benoit@2487
    75
    string
benoit@2487
    76
    prompt "Toolchain ID string"
benoit@2503
    77
    default ""
benoit@2487
    78
    help
benoit@2487
    79
      Specify a string that identifies your package. You may wish to include
benoit@2487
    80
      a build number or build date. This version string will be included in
benoit@2490
    81
      the output of gcc --version, and also in binutils, eglibc, gdb and
benoit@2490
    82
      gdbserver.
benoit@2487
    83
benoit@2503
    84
      If this string is left empty, the actual package version will be:
benoit@2503
    85
          "crosstool-NG ${CT_VERSION}"
benoit@2503
    86
      Otherwise, it will be:
benoit@2503
    87
          "crosstool-NG ${CT_VERSION} - ${CT_TOOLCHAIN_PKGVERSION}"
benoit@2503
    88
benoit@2487
    89
      This is passed to the configure flag --with-pkgversion.
benoit@2487
    90
benoit@2487
    91
config TOOLCHAIN_BUGURL
benoit@2487
    92
    string
benoit@2487
    93
    prompt "Toolchain bug URL"
benoit@2487
    94
    default ""
benoit@2487
    95
    help
benoit@2487
    96
      Specify the URL that users should visit if they wish to report a bug.
benoit@2487
    97
yann@1220
    98
comment "Tuple completion and aliasing"
yann@1220
    99
yann@41
   100
config TARGET_VENDOR
yann@41
   101
    string
yann@1220
   102
    prompt "Tuple's vendor string"
yann@41
   103
    default "unknown"
yann@41
   104
    help
yann@335
   105
      Vendor part of the target tuple.
yann@41
   106
      
yann@335
   107
      A tuple is of the form arch-vendor-kernel-system.
yann@41
   108
      You can set the second part, vendor, to whatever you see fit.
yann@41
   109
      Use a single word, or use underscores "_" to separate words.
yann@1094
   110
      Use neither dash nor space, as it breaks things.
yann@41
   111
      
yann@1704
   112
      Keep the default (unknown) if you don't know better.
yann@41
   113
yann@321
   114
config TARGET_ALIAS_SED_EXPR
yann@321
   115
    string
yann@1220
   116
    prompt "Tuple's sed transform"
yann@321
   117
    default ""
yann@321
   118
    help
antony@2564
   119
      Normally, you'd call your toolchain components (especially gcc) by
yann@335
   120
      prefixing the target tuple followed by a dash and the component name
yann@321
   121
      (eg. armeb-unknown-linux-uclibc-gcc).
yann@321
   122
      
yann@321
   123
      You can enter here a sed expression to be applied to ${CT_TARGET} to
yann@321
   124
      create an alias for your toolchain.
yann@321
   125
      
yann@321
   126
      For example, "s/${CT_TARGET_VENDOR}/foobar/" (without the double quotes)
yann@321
   127
      will create the armeb-foobar-linux-uclibc alias to the above-mentioned
yann@321
   128
      toolchain.
yann@321
   129
      
yann@321
   130
      You shouldn't need to enter anything here, unless you plan to manually
yann@321
   131
      call the tools (autotools-based ./configure will use the standard name).
yann@321
   132
yann@41
   133
config TARGET_ALIAS
yann@41
   134
    string
yann@1220
   135
    prompt "Tuple's alias"
yann@41
   136
    default ""
yann@41
   137
    help
antony@2564
   138
      Normally, you'd call your toolchain components (especially gcc) by
yann@335
   139
      prefixing the target tuple followed by a dash and the component name
yann@41
   140
      (eg. armeb-unknown-linux-uclibc-gcc).
yann@41
   141
      
yann@41
   142
      You can enter a shortcut here. This string will be used to create
yann@41
   143
      symbolic links to the toolchain tools (eg. if you enter "foo-bar" here,
yann@41
   144
      then gcc for your toolchain will also be available as "foo-bar-gcc" along
yann@41
   145
      with the original name).
yann@41
   146
      
yann@41
   147
      You shouldn't need to enter anything here, unless you plan to manually
yann@41
   148
      call the tools (autotools-based ./configure will use the standard name).
yann@41
   149
yann@41
   150
comment "Toolchain type"
yann@41
   151
yann@41
   152
choice
yann@41
   153
    bool
yann@41
   154
    prompt "Type"
yann@41
   155
    default CROSS
yann@41
   156
yann@41
   157
config NATIVE
yann@41
   158
    bool
yann@1041
   159
    prompt "Native       (NO CODE!) (EXPERIMENTAL)"
yann@41
   160
    depends on EXPERIMENTAL
yann@41
   161
    help
yann@41
   162
      Build a native toolchain.
yann@2227
   163
      See: "docs/6 - Toolchain types.txt"
yann@41
   164
yann@41
   165
config CROSS
yann@41
   166
    bool
yann@41
   167
    prompt "Cross"
yann@41
   168
    help
yann@41
   169
      Build a cross-toolchain.
yann@2227
   170
      See: "docs/6 - Toolchain types.txt"
yann@41
   171
yann@41
   172
config CROSS_NATIVE
yann@41
   173
    bool
yann@1041
   174
    prompt "Cross-native (NO CODE!) (EXPERIMENTAL)"
yann@41
   175
    depends on EXPERIMENTAL
yann@41
   176
    help
yann@41
   177
      Build a cross-native toolchain.
yann@2227
   178
      See: "docs/6 - Toolchain types.txt"
yann@41
   179
yann@41
   180
config CANADIAN
yann@41
   181
    bool
yann@1425
   182
    prompt "Canadian     (EXPERIMENTAL)"
yann@41
   183
    depends on EXPERIMENTAL
yann@41
   184
    help
yann@41
   185
      Build a canadian-toolchain.
yann@2227
   186
      See: "docs/6 - Toolchain types.txt"
yann@41
   187
yann@41
   188
endchoice
yann@41
   189
yann@96
   190
config TOOLCHAIN_TYPE
yann@96
   191
    string
yann@96
   192
    default "native"        if NATIVE
yann@96
   193
    default "cross"         if CROSS
yann@96
   194
    default "cross-native"  if CROSS_NATIVE
yann@96
   195
    default "canadian"      if CANADIAN
yann@96
   196
yann@1041
   197
comment "Build system"
yann@1041
   198
benoit@2484
   199
config BUILD
yann@41
   200
    string
yann@1041
   201
    prompt "|  Tuple        (READ HELP!)"
yann@41
   202
    default ""
yann@41
   203
    help
yann@41
   204
      Canonical name of the machine building the toolchain.
yann@41
   205
      You should leave empty, unless you really now what you're doing.
yann@41
   206
yann@1041
   207
config BUILD_PREFIX
yann@41
   208
    string
yann@1041
   209
    prompt "|  Tools prefix (READ HELP!)"
yann@1041
   210
    default ""
yann@41
   211
    help
yann@1041
   212
      If you have your *build system* tools in a weird location, and/or
yann@1041
   213
      they have an unusual prefix, enter it here.
yann@41
   214
      
yann@1041
   215
      Usually, you should leave that empty!
yann@41
   216
      
yann@1041
   217
      Eg.:
yann@1041
   218
        If your *build* gcc is /opt/build-tools/bin/weird-gcc then you
yann@1041
   219
        should enter:
yann@1041
   220
            /opt/build-tools/bin/weird-
yann@1041
   221
        
yann@1041
   222
        If your *build* gcc is /opt/build-tools/bin/weird-gcc and
yann@1041
   223
        /opt/build-tools/bin is in your PATH, you should enter:
yann@1041
   224
            weird-
yann@1041
   225
        
yann@1041
   226
        If your *build* gcc is /opt/build-tools/bin/gcc then you
yann@1041
   227
        should enter (do not forget to add the trailing '/'):
yann@1041
   228
            /opt/build-tools/bin/
yann@1041
   229
yann@1041
   230
config BUILD_SUFFIX
yann@1041
   231
    string
yann@1041
   232
    prompt "|  Tools suffix (READ HELP!)"
yann@1041
   233
    default ""
yann@1041
   234
    help
yann@1041
   235
      If your *build system* tools have an unusual suffix, enter it
yann@1041
   236
      here.
yann@1041
   237
      
yann@1041
   238
      Usually, you should leave that empty!
yann@1041
   239
      
yann@1041
   240
      Eg.:
yann@1041
   241
        If your 'default' gcc is gcc 4.3.1, but you also have gcc-3.4.2
yann@1041
   242
        installed as gcc-3.4, then you should enter:
yann@1041
   243
            -3.4
yann@1041
   244
      
yann@1041
   245
      It can happen that some of the tools have a suffix, when others
yann@1041
   246
      don't, eg. you can have 'gcc-3.4' and 'ar'. crosstool-NG accounts
yann@1041
   247
      for that by checking the tools without the suffix in case it can
yann@1041
   248
      not find some of the tool.
yann@1041
   249
yann@1041
   250
if CANADIAN
yann@1041
   251
yann@1041
   252
comment "Host system"
yann@41
   253
yann@41
   254
config HOST
yann@41
   255
    string
yann@1041
   256
    prompt "|  Tuple        (READ HELP!)"
yann@41
   257
    default ""
yann@41
   258
    help
yann@41
   259
      Canonical name of the machine running the toolchain.
yann@41
   260
yann@1041
   261
config HOST_PREFIX
yann@41
   262
    string
yann@1041
   263
    prompt "|  Tools prefix (READ HELP!)"
yann@1041
   264
    default ""
yann@41
   265
    help
yann@1041
   266
      If you have your *host system* tools in a weird location, and/or
yann@1041
   267
      they have an unusual prefix, enter it here.
yann@1041
   268
      
yann@1041
   269
      Usually, you should leave that empty!
yann@1041
   270
      
yann@1041
   271
      Eg.:
yann@1041
   272
        If your *host* gcc is /opt/host-tools/bin/weird-gcc then you
yann@1041
   273
        should enter:
yann@1041
   274
            /opt/host-tools/bin/weird-
yann@1041
   275
        
yann@1041
   276
        If your *host* gcc is /opt/host-tools/bin/weird-gcc and
yann@1041
   277
        /opt/host-tools/bin is in your PATH, you should enter:
yann@1041
   278
            weird-
yann@1041
   279
        
yann@1041
   280
        If your *host* gcc is /opt/host-tools/bin/gcc then you
yann@1041
   281
        should enter (do not forget to add the trailing '/'):
yann@1041
   282
            /opt/host-tools/bin/
yann@41
   283
yann@1041
   284
config HOST_SUFFIX
yann@41
   285
    string
yann@1041
   286
    prompt "|  Tools suffix (READ HELP!)"
yann@1041
   287
    default ""
yann@41
   288
    help
yann@1041
   289
      If your *host system* tools have an unusual suffix, enter it
yann@1041
   290
      here.
yann@1041
   291
      
yann@1041
   292
      Usually, you should leave that empty!
yann@1041
   293
      
yann@1041
   294
      Eg.:
yann@1041
   295
        If your 'default' gcc is gcc 4.3.1, but you also have gcc-3.4.2
yann@1041
   296
        installed as gcc-3.4, then you should enter:
yann@1041
   297
            -3.4
yann@1041
   298
      
yann@1041
   299
      It can happen that some of the tools have a suffix, when others
yann@1041
   300
      don't, eg. you can have 'gcc-3.4' and 'ar'. crosstool-NG accounts
yann@1041
   301
      for that by checking the tools without the suffix in case it can
yann@1041
   302
      not find some of the tool.
yann@1041
   303
yann@1041
   304
endif # CANADIAN
yann@1041
   305
zhenqiang@2778
   306
comment "Misc options"
zhenqiang@2778
   307
zhenqiang@2778
   308
config TOOLCHAIN_ENABLE_NLS
zhenqiang@2778
   309
    bool
zhenqiang@2778
   310
    prompt "Enable nls"
zhenqiang@2778
   311
    help
yann@2786
   312
      Say 'Y' here to enable native language support (nls).
zhenqiang@2778
   313
yann@41
   314
endmenu