config/target.in
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Sun May 11 23:43:52 2014 +0200 (2014-05-11)
changeset 3320 78af1c99bc6d
parent 3169 9d0b37f08a10
permissions -rw-r--r--
scripts/functions: add target_endian_le and target_endian_be

We currently define target_endian_el and target_endian_eb to be the
tuple extension depending on endianness, defined to be respectively
'el' or 'eb' according to the endianness.

Some architecture do not use 'el' or 'eb', but use 'le' or 'be'.

Provide that as well, as two new variables: target_endian_le and
target_endian_be.

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