config/target.in
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Wed Dec 26 20:05:19 2012 +0100 (2012-12-26)
changeset 3150 1d6fd9bde73c
parent 3140 d9e78e89b3f6
child 3169 9d0b37f08a10
permissions -rw-r--r--
all: unmark experimental features

It's been some time now we've had those features, so unmark them
being experimental.

It does not mean everything is perfect, but may gather some more
testing of those features.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
yann@1
     1
# Target definition: architecture, optimisations, etc...
yann@1
     2
yann@1
     3
menu "Target options"
yann@1
     4
yann@47
     5
config ARCH
yann@47
     6
    string
yann@628
     7
yann@628
     8
# Pre-declare target optimisation variables
yann@1345
     9
config ARCH_SUPPORTS_BOTH_MMU
yann@1345
    10
config ARCH_SUPPORTS_BOTH_ENDIAN
yann@1633
    11
config ARCH_SUPPORTS_32
yann@1633
    12
config ARCH_SUPPORTS_64
yann@2788
    13
config ARCH_SUPPORTS_WITH_ARCH
yann@2788
    14
config ARCH_SUPPORTS_WITH_ABI
yann@2788
    15
config ARCH_SUPPORTS_WITH_CPU
yann@2788
    16
config ARCH_SUPPORTS_WITH_TUNE
yann@2789
    17
config ARCH_SUPPORTS_WITH_FLOAT
yann@2788
    18
config ARCH_SUPPORTS_WITH_FPU
yann@2788
    19
config ARCH_SUPPORTS_SOFTFP
yann@1345
    20
yann@1345
    21
config ARCH_DEFAULT_HAS_MMU
yann@628
    22
config ARCH_DEFAULT_BE
yann@628
    23
config ARCH_DEFAULT_LE
yann@1633
    24
config ARCH_DEFAULT_32
yann@1633
    25
config ARCH_DEFAULT_64
yann@1345
    26
yann@633
    27
config ARCH_ARCH
yann@633
    28
config ARCH_ABI
yann@633
    29
config ARCH_CPU
yann@633
    30
config ARCH_TUNE
yann@633
    31
config ARCH_FPU
yann@633
    32
config ARCH_BE
yann@633
    33
config ARCH_LE
yann@1638
    34
config ARCH_32
yann@1638
    35
config ARCH_64
yann@1715
    36
config ARCH_BITNESS
yann@628
    37
config ARCH_FLOAT_HW
yann@628
    38
config ARCH_FLOAT_SW
yann@628
    39
config TARGET_CFLAGS
yann@791
    40
config TARGET_LDFLAGS
yann@628
    41
yann@1870
    42
source "config.gen/arch.in"
yann@1
    43
yann@1345
    44
#--------------------------------------
yann@2413
    45
comment "Generic target options"
yann@2413
    46
yann@2815
    47
#--------------------------------------
yann@2815
    48
config MULTILIB
yann@2815
    49
    bool
yann@3150
    50
    prompt "Build a multilib toolchain (READ HELP!!!)"
yann@2815
    51
    help
yann@2815
    52
      If you say 'y' here, then the toolchain will also contain the C library
yann@2815
    53
      optimised for some variants of the selected architecture, besides the
yann@2815
    54
      default settings.
yann@2815
    55
      
yann@2815
    56
      This means the build time of the C library will be in O(nb_variants).
yann@2815
    57
      
yann@2815
    58
      The list of variants is dependent on the architecture, and is hard-coded
yann@2815
    59
      in gcc, so it is not possible to say what variants to support, only
yann@2815
    60
      whether hard-coded variants should be supported or not.
yann@3150
    61
      
yann@3150
    62
      NOTE: The multilib feature in crosstool-NG is not well-tested.
yann@3150
    63
            Use at your own risk, and report success and/or failure.
yann@2815
    64
yann@2815
    65
#--------------------------------------
yann@1345
    66
config ARCH_SUPPORTS_BOTH_MMU
yann@1345
    67
    bool
yann@1345
    68
yann@1345
    69
config ARCH_DEFAULT_HAS_MMU
yann@1345
    70
    bool
yann@1345
    71
yann@1345
    72
config ARCH_USE_MMU
yann@1345
    73
    bool
yann@1345
    74
    prompt "Use the MMU" if ARCH_SUPPORTS_BOTH_MMU
yann@1345
    75
    default y if ARCH_DEFAULT_HAS_MMU
yann@1586
    76
    help
yann@1586
    77
      If your architecture has an MMU and you want to use it,
yann@1586
    78
      say 'Y' here.
yann@1586
    79
      
yann@1586
    80
      OTOH, if you don't want to use the MMU, or your arch
yann@1586
    81
      lacks an MMU, say 'N' here.
yann@1586
    82
      
yann@1586
    83
      Note that some architectures (eg. ARM) has variants that
yann@1586
    84
      lacks an MMU (eg. ARM Cortex-M3), while other variants
yann@1586
    85
      have one (eg. ARM Cortex-A8).
yann@1345
    86
yann@1345
    87
#--------------------------------------
yann@136
    88
config ARCH_SUPPORTS_BOTH_ENDIAN
yann@35
    89
    bool
yann@35
    90
yann@347
    91
config ARCH_DEFAULT_BE
yann@347
    92
    bool
yann@347
    93
yann@347
    94
config ARCH_DEFAULT_LE
yann@347
    95
    bool
yann@347
    96
yann@1
    97
choice
yann@1
    98
    bool
yann@1
    99
    prompt "Endianness:"
yann@136
   100
    depends on ARCH_SUPPORTS_BOTH_ENDIAN
yann@347
   101
    default ARCH_BE if ARCH_DEFAULT_BE
yann@347
   102
    default ARCH_LE if ARCH_DEFAULT_LE
yann@1
   103
yann@1
   104
config ARCH_BE
yann@1
   105
    bool
yann@1
   106
    prompt "Big endian"
yann@1
   107
yann@1
   108
config ARCH_LE
yann@1
   109
    bool
yann@1
   110
    prompt "Little endian"
yann@1
   111
yann@1
   112
endchoice
yann@1
   113
yann@2772
   114
config ARCH_ENDIAN
yann@2772
   115
    string
yann@2772
   116
    depends on ARCH_SUPPORTS_BOTH_ENDIAN
yann@2772
   117
    default "big"       if ARCH_BE
yann@2772
   118
    default "little"    if ARCH_LE
yann@2772
   119
yann@1345
   120
#--------------------------------------
yann@1633
   121
config ARCH_SUPPORTS_32
yann@1633
   122
    bool
yann@1633
   123
yann@1633
   124
config ARCH_SUPPORTS_64
yann@1633
   125
    bool
yann@1633
   126
yann@1633
   127
config ARCH_DEFAULT_32
yann@1633
   128
    bool
yann@1633
   129
yann@1633
   130
config ARCH_DEFAULT_64
yann@1633
   131
    bool
yann@1633
   132
yann@1715
   133
config ARCH_BITNESS
yann@1715
   134
    int
yann@1715
   135
    default "32"    if ARCH_32
yann@1715
   136
    default "64"    if ARCH_64
yann@1715
   137
yann@1633
   138
choice
yann@1633
   139
    bool
yann@1633
   140
    prompt "Bitness:"
yann@1638
   141
    default ARCH_32 if ARCH_DEFAULT_32
yann@1638
   142
    default ARCH_64 if ARCH_DEFAULT_64
yann@1633
   143
yann@1638
   144
config ARCH_32
yann@1633
   145
    bool
yann@1633
   146
    prompt "32-bit"
yann@1633
   147
    depends on ARCH_SUPPORTS_32
yann@1633
   148
yann@1638
   149
config ARCH_64
yann@1633
   150
    bool
yann@1633
   151
    prompt "64-bit"
yann@1633
   152
    depends on ARCH_SUPPORTS_64
yann@1633
   153
yann@1633
   154
endchoice
yann@1633
   155
yann@1633
   156
#--------------------------------------
yann@1
   157
comment "Target optimisations"
yann@1
   158
yann@2788
   159
config ARCH_SUPPORTS_WITH_ARCH
yann@631
   160
    bool
yann@631
   161
yann@2788
   162
config ARCH_SUPPORTS_WITH_ABI
yann@631
   163
    bool
yann@631
   164
yann@2788
   165
config ARCH_SUPPORTS_WITH_CPU
yann@631
   166
    bool
yann@631
   167
yann@2788
   168
config ARCH_SUPPORTS_WITH_TUNE
yann@631
   169
    bool
yann@631
   170
yann@2789
   171
config ARCH_SUPPORTS_WITH_FLOAT
yann@2789
   172
    bool
yann@2789
   173
yann@2788
   174
config ARCH_SUPPORTS_WITH_FPU
yann@631
   175
    bool
yann@631
   176
yann@2788
   177
config ARCH_SUPPORTS_SOFTFP
michael@2739
   178
    bool
michael@2739
   179
yann@47
   180
config ARCH_ARCH
yann@47
   181
    string
yann@425
   182
    prompt "Architecture level"
yann@2788
   183
    depends on ARCH_SUPPORTS_WITH_ARCH
yann@47
   184
    default ""
yann@47
   185
    help
yann@47
   186
      GCC uses this name to determine what kind of instructions it can emit
yann@47
   187
      when generating assembly code. This option can be used in conjunction
yann@47
   188
      with or instead of the ARCH_CPU option (above), or a (command-line)
yann@47
   189
      -mcpu= option.
yann@47
   190
      
yann@47
   191
      This is the configuration flag --with-arch=XXXX, and the runtime flag
yann@47
   192
      -march=XXX.
yann@47
   193
      
yann@47
   194
      Pick a value from the gcc manual for your choosen gcc version and your
yann@47
   195
      target CPU.
yann@47
   196
      
yann@47
   197
      Leave blank if you don't know, or if your target architecture does not
yann@47
   198
      offer this option.
yann@47
   199
yann@45
   200
config ARCH_ABI
yann@45
   201
    string
yann@45
   202
    prompt "Generate code for the specific ABI"
yann@2788
   203
    depends on ARCH_SUPPORTS_WITH_ABI
yann@45
   204
    default ""
yann@45
   205
    help
yann@45
   206
      Generate code for the given ABI.
yann@45
   207
yann@47
   208
      This is the configuration flag --with-abi=XXXX, and the runtime flag
yann@47
   209
      -mabi=XXX.
yann@47
   210
yann@45
   211
      Pick a value from the gcc manual for your choosen gcc version and your
yann@45
   212
      target CPU.
yann@45
   213
antony@2564
   214
      Leave blank if you don't know, or if your target architecture does not
yann@45
   215
      offer this option.
yann@45
   216
yann@1
   217
config ARCH_CPU
yann@1
   218
    string
yann@1
   219
    prompt "Emit assembly for CPU"
yann@2788
   220
    depends on ARCH_SUPPORTS_WITH_CPU
yann@1
   221
    default ""
yann@1
   222
    help
yann@283
   223
      This specifies the name of the target processor. GCC uses this name
yann@1
   224
      to determine what kind of instructions it can emit when generating
yann@1
   225
      assembly code.
yann@1
   226
      
yann@47
   227
      This is the configuration flag --with-cpu=XXXX, and the runtime flag
yann@47
   228
      -mcpu=XXX.
yann@47
   229
yann@1
   230
      Pick a value from the gcc manual for your choosen gcc version and your
yann@1
   231
      target CPU.
yann@1
   232
      
yann@1
   233
      Leave blank if you don't know, or if your target architecture does not
yann@1
   234
      offer this option.
yann@1
   235
yann@1
   236
config ARCH_TUNE
yann@1
   237
    string
yann@1
   238
    prompt "Tune for CPU"
yann@2788
   239
    depends on ARCH_SUPPORTS_WITH_TUNE
yann@1
   240
    default ""
yann@1
   241
    help
yann@1
   242
      This option is very similar to the ARCH_CPU option (above), except
yann@1
   243
      that instead of specifying the actual target processor type, and hence
yann@1
   244
      restricting which instructions can be used, it specifies that GCC should
yann@1
   245
      tune the performance of the code as if the target were of the type
yann@1
   246
      specified in this option, but still choosing the instructions that it
yann@1
   247
      will generate based on the cpu specified by the ARCH_CPU option
yann@1
   248
      (above), or a (command-line) -mcpu= option.
yann@1
   249
      
yann@47
   250
      This is the configuration flag --with-tune=XXXX, and the runtime flag
yann@47
   251
      -mtune=XXX.
yann@1
   252
      
yann@1
   253
      Pick a value from the gcc manual for your choosen gcc version and your
yann@1
   254
      target CPU.
yann@1
   255
      
yann@1
   256
      Leave blank if you don't know, or if your target architecture does not
yann@1
   257
      offer this option.
yann@1
   258
yann@1
   259
config ARCH_FPU
yann@1
   260
    string
yann@47
   261
    prompt "Use specific FPU"
yann@2788
   262
    depends on ARCH_SUPPORTS_WITH_FPU
yann@1
   263
    default ""
yann@1
   264
    help
yann@1
   265
      On some targets (eg. ARM), you can specify the kind of FPU to emit
yann@1
   266
      code for.
yann@47
   267
yann@47
   268
      This is the configuration flag --with-fpu=XXX, and the runtime flag
yann@47
   269
      -mfpu=XXX.
yann@1
   270
      
yann@1
   271
      See below wether to actually emit FP opcodes, or to emulate them.
yann@1
   272
      
yann@1
   273
      Pick a value from the gcc manual for your choosen gcc version and your
yann@1
   274
      target CPU.
yann@1
   275
      
yann@1
   276
      Leave blank if you don't know, or if your target architecture does not
yann@1
   277
      offer this option.
yann@1
   278
yann@1
   279
choice
yann@1
   280
    bool
yann@1
   281
    prompt "Floating point:"
yann@2794
   282
    depends on ARCH_SUPPORTS_WITH_FLOAT
yann@1
   283
yann@1
   284
config ARCH_FLOAT_HW
yann@1
   285
    bool
yann@1
   286
    prompt "hardware (FPU)"
yann@1
   287
    help
yann@1
   288
      Emit hardware floating point opcodes.
yann@1
   289
      
yann@1
   290
      If you've got a processor with a FPU, then you want that.
yann@1
   291
      If your hardware has no FPU, you still can use HW floating point, but
yann@1
   292
      need to compile support for FPU emulation in your kernel. Needless to
yann@1
   293
      say that emulating the FPU is /slooowwwww/...
yann@1
   294
      
yann@1
   295
      One situation you'd want HW floating point without a FPU is if you get
yann@1
   296
      binary blobs from different vendors that are compiling this way and
yann@1
   297
      can't (don't wan't to) change.
yann@1
   298
michael@2739
   299
config ARCH_FLOAT_SOFTFP
michael@2739
   300
    bool
yann@3140
   301
    prompt "softfp (FPU)"
yann@2788
   302
    depends on ARCH_SUPPORTS_SOFTFP
michael@2739
   303
    help
michael@2739
   304
      Emit hardware floating point opcodes but use the software
michael@2739
   305
      floating point calling convention.
michael@2739
   306
michael@2739
   307
      Architectures such as ARM use different registers for passing
michael@2739
   308
      floating point values depending on if they're in software mode
michael@2739
   309
      or hardware mode.  softfp emits FPU instructions but uses the
michael@2739
   310
      software FP calling convention allowing softfp code to
michael@2739
   311
      interoperate with legacy software only code.
michael@2739
   312
michael@2739
   313
      If in doubt, use 'software' or 'hardware' mode instead.
michael@2739
   314
yann@3140
   315
config ARCH_FLOAT_SW
yann@3140
   316
    bool
yann@3140
   317
    prompt "software (no FPU)"
yann@3140
   318
    help
yann@3140
   319
      Do not emit any hardware floating point opcode.
yann@3140
   320
      
yann@3140
   321
      If your processor has no FPU, then you most probably want this, as it
yann@3140
   322
      is faster than emulating the FPU in the kernel.
yann@3140
   323
yann@1
   324
endchoice
yann@1
   325
yann@1
   326
config TARGET_CFLAGS
yann@1
   327
    string
yann@41
   328
    prompt "Target CFLAGS"
yann@1
   329
    default ""
yann@1
   330
    help
yann@1
   331
      Used to add specific options when compiling libraries of the toolchain,
yann@1
   332
      that will run on the target (eg. libc.so).
yann@1
   333
      
yann@531
   334
      Note that the options above for ARCH, ABI, CPU, TUNE and FPU will be
antony@2564
   335
      automatically used. You don't need to specify them here.
yann@1
   336
      
yann@1
   337
      Leave blank if you don't know better.
yann@1
   338
yann@767
   339
config TARGET_LDFLAGS
yann@767
   340
    string
yann@767
   341
    prompt "Target LDFLAGS"
yann@767
   342
    default ""
yann@767
   343
    help
yann@767
   344
      Used to add specific options when linking libraries of the toolchain,
yann@767
   345
      that will run on your target.
yann@767
   346
      
yann@767
   347
      Leave blank if you don't know better.
yann@767
   348
michael@2737
   349
config ARCH_FLOAT
michael@2737
   350
    string
yann@2794
   351
    default ""       if ! ARCH_SUPPORTS_WITH_FLOAT
michael@2737
   352
    default "hard"   if ARCH_FLOAT_HW
michael@2737
   353
    default "soft"   if ARCH_FLOAT_SW
michael@2739
   354
    default "softfp" if ARCH_FLOAT_SOFTFP
michael@2737
   355
yann@2413
   356
source "config.gen/arch.in.2"
yann@2413
   357
yann@1
   358
endmenu