config/target.in
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Jun 08 23:26:54 2010 +0200 (2010-06-08)
changeset 1976 2d90ec981ba3
parent 1870 a4c4e51aa541
child 2110 ee9b54d04dd4
permissions -rw-r--r--
config: add support for a second part of the generated choices

Some components have configuration options that can depend on
generic options, so they should go below those.

uClibc for example:
- has its own options (wchar...)
- uses the generic options (threads...)
- if linuxthreads chosen, offers two impls

So we need to be able to split the components options in 2,
one part that is above the generic options, and one part that
ends up below the generic options.
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@631
    13
config ARCH_SUPPORT_ARCH
yann@631
    14
config ARCH_SUPPORT_ABI
yann@631
    15
config ARCH_SUPPORT_CPU
yann@631
    16
config ARCH_SUPPORT_TUNE
yann@631
    17
config ARCH_SUPPORT_FPU
yann@1345
    18
yann@1345
    19
config ARCH_DEFAULT_HAS_MMU
yann@628
    20
config ARCH_DEFAULT_BE
yann@628
    21
config ARCH_DEFAULT_LE
yann@1633
    22
config ARCH_DEFAULT_32
yann@1633
    23
config ARCH_DEFAULT_64
yann@1345
    24
yann@633
    25
config ARCH_ARCH
yann@633
    26
config ARCH_ABI
yann@633
    27
config ARCH_CPU
yann@633
    28
config ARCH_TUNE
yann@633
    29
config ARCH_FPU
yann@633
    30
config ARCH_BE
yann@633
    31
config ARCH_LE
yann@1638
    32
config ARCH_32
yann@1638
    33
config ARCH_64
yann@1715
    34
config ARCH_BITNESS
yann@628
    35
config ARCH_FLOAT_HW
yann@628
    36
config ARCH_FLOAT_SW
yann@628
    37
config TARGET_CFLAGS
yann@791
    38
config TARGET_LDFLAGS
yann@628
    39
yann@628
    40
comment "General target options"
yann@47
    41
yann@1870
    42
source "config.gen/arch.in"
yann@1
    43
yann@1345
    44
#--------------------------------------
yann@1345
    45
config ARCH_SUPPORTS_BOTH_MMU
yann@1345
    46
    bool
yann@1345
    47
    default n
yann@1345
    48
yann@1345
    49
config ARCH_DEFAULT_HAS_MMU
yann@1345
    50
    bool
yann@1345
    51
    default n
yann@1345
    52
yann@1345
    53
config ARCH_USE_MMU
yann@1345
    54
    bool
yann@1345
    55
    prompt "Use the MMU" if ARCH_SUPPORTS_BOTH_MMU
yann@1345
    56
    default n if ! ARCH_DEFAULT_HAS_MMU
yann@1345
    57
    default y if ARCH_DEFAULT_HAS_MMU
yann@1586
    58
    help
yann@1586
    59
      If your architecture has an MMU and you want to use it,
yann@1586
    60
      say 'Y' here.
yann@1586
    61
      
yann@1586
    62
      OTOH, if you don't want to use the MMU, or your arch
yann@1586
    63
      lacks an MMU, say 'N' here.
yann@1586
    64
      
yann@1586
    65
      Note that some architectures (eg. ARM) has variants that
yann@1586
    66
      lacks an MMU (eg. ARM Cortex-M3), while other variants
yann@1586
    67
      have one (eg. ARM Cortex-A8).
yann@1345
    68
yann@1345
    69
#--------------------------------------
yann@136
    70
config ARCH_SUPPORTS_BOTH_ENDIAN
yann@35
    71
    bool
yann@35
    72
    default n
yann@35
    73
yann@347
    74
config ARCH_DEFAULT_BE
yann@347
    75
    bool
yann@347
    76
    default n
yann@347
    77
yann@347
    78
config ARCH_DEFAULT_LE
yann@347
    79
    bool
yann@347
    80
    default n
yann@347
    81
yann@1
    82
choice
yann@1
    83
    bool
yann@1
    84
    prompt "Endianness:"
yann@136
    85
    depends on ARCH_SUPPORTS_BOTH_ENDIAN
yann@347
    86
    default ARCH_BE if ARCH_DEFAULT_BE
yann@347
    87
    default ARCH_LE if ARCH_DEFAULT_LE
yann@1
    88
yann@1
    89
config ARCH_BE
yann@1
    90
    bool
yann@1
    91
    prompt "Big endian"
yann@1
    92
yann@1
    93
config ARCH_LE
yann@1
    94
    bool
yann@1
    95
    prompt "Little endian"
yann@1
    96
yann@1
    97
endchoice
yann@1
    98
yann@1345
    99
#--------------------------------------
yann@1633
   100
config ARCH_SUPPORTS_32
yann@1633
   101
    bool
yann@1633
   102
    default n
yann@1633
   103
yann@1633
   104
config ARCH_SUPPORTS_64
yann@1633
   105
    bool
yann@1633
   106
    default n
yann@1633
   107
yann@1633
   108
config ARCH_DEFAULT_32
yann@1633
   109
    bool
yann@1633
   110
    default n
yann@1633
   111
yann@1633
   112
config ARCH_DEFAULT_64
yann@1633
   113
    bool
yann@1633
   114
    default n
yann@1633
   115
yann@1715
   116
config ARCH_BITNESS
yann@1715
   117
    int
yann@1715
   118
    default "32"    if ARCH_32
yann@1715
   119
    default "64"    if ARCH_64
yann@1715
   120
yann@1633
   121
choice
yann@1633
   122
    bool
yann@1633
   123
    prompt "Bitness:"
yann@1638
   124
    default ARCH_32 if ARCH_DEFAULT_32
yann@1638
   125
    default ARCH_64 if ARCH_DEFAULT_64
yann@1633
   126
yann@1638
   127
config ARCH_32
yann@1633
   128
    bool
yann@1633
   129
    prompt "32-bit"
yann@1633
   130
    depends on ARCH_SUPPORTS_32
yann@1633
   131
yann@1638
   132
config ARCH_64
yann@1633
   133
    bool
yann@1633
   134
    prompt "64-bit"
yann@1633
   135
    depends on ARCH_SUPPORTS_64
yann@1633
   136
yann@1633
   137
endchoice
yann@1633
   138
yann@1633
   139
#--------------------------------------
yann@1
   140
comment "Target optimisations"
yann@1
   141
yann@631
   142
config ARCH_SUPPORT_ARCH
yann@631
   143
    bool
yann@631
   144
    default n
yann@631
   145
yann@631
   146
config ARCH_SUPPORT_ABI
yann@631
   147
    bool
yann@631
   148
    default n
yann@631
   149
yann@631
   150
config ARCH_SUPPORT_CPU
yann@631
   151
    bool
yann@631
   152
    default n
yann@631
   153
yann@631
   154
config ARCH_SUPPORT_TUNE
yann@631
   155
    bool
yann@631
   156
    default n
yann@631
   157
yann@631
   158
config ARCH_SUPPORT_FPU
yann@631
   159
    bool
yann@631
   160
    default n
yann@631
   161
yann@47
   162
config ARCH_ARCH
yann@47
   163
    string
yann@425
   164
    prompt "Architecture level"
yann@631
   165
    depends on ARCH_SUPPORT_ARCH
yann@47
   166
    default ""
yann@47
   167
    help
yann@47
   168
      GCC uses this name to determine what kind of instructions it can emit
yann@47
   169
      when generating assembly code. This option can be used in conjunction
yann@47
   170
      with or instead of the ARCH_CPU option (above), or a (command-line)
yann@47
   171
      -mcpu= option.
yann@47
   172
      
yann@47
   173
      This is the configuration flag --with-arch=XXXX, and the runtime flag
yann@47
   174
      -march=XXX.
yann@47
   175
      
yann@47
   176
      Pick a value from the gcc manual for your choosen gcc version and your
yann@47
   177
      target CPU.
yann@47
   178
      
yann@47
   179
      Leave blank if you don't know, or if your target architecture does not
yann@47
   180
      offer this option.
yann@47
   181
yann@45
   182
config ARCH_ABI
yann@45
   183
    string
yann@45
   184
    prompt "Generate code for the specific ABI"
yann@631
   185
    depends on ARCH_SUPPORT_ABI
yann@45
   186
    default ""
yann@45
   187
    help
yann@45
   188
      Generate code for the given ABI.
yann@45
   189
yann@47
   190
      This is the configuration flag --with-abi=XXXX, and the runtime flag
yann@47
   191
      -mabi=XXX.
yann@47
   192
yann@45
   193
      Pick a value from the gcc manual for your choosen gcc version and your
yann@45
   194
      target CPU.
yann@45
   195
yann@45
   196
      Leave blank if you don't know, or if your target architecutre does not
yann@45
   197
      offer this option.
yann@45
   198
yann@1
   199
config ARCH_CPU
yann@1
   200
    string
yann@1
   201
    prompt "Emit assembly for CPU"
yann@631
   202
    depends on ARCH_SUPPORT_CPU
yann@1
   203
    default ""
yann@1
   204
    help
yann@283
   205
      This specifies the name of the target processor. GCC uses this name
yann@1
   206
      to determine what kind of instructions it can emit when generating
yann@1
   207
      assembly code.
yann@1
   208
      
yann@47
   209
      This is the configuration flag --with-cpu=XXXX, and the runtime flag
yann@47
   210
      -mcpu=XXX.
yann@47
   211
yann@1
   212
      Pick a value from the gcc manual for your choosen gcc version and your
yann@1
   213
      target CPU.
yann@1
   214
      
yann@1
   215
      Leave blank if you don't know, or if your target architecture does not
yann@1
   216
      offer this option.
yann@1
   217
yann@1
   218
config ARCH_TUNE
yann@1
   219
    string
yann@1
   220
    prompt "Tune for CPU"
yann@631
   221
    depends on ARCH_SUPPORT_TUNE
yann@1
   222
    default ""
yann@1
   223
    help
yann@1
   224
      This option is very similar to the ARCH_CPU option (above), except
yann@1
   225
      that instead of specifying the actual target processor type, and hence
yann@1
   226
      restricting which instructions can be used, it specifies that GCC should
yann@1
   227
      tune the performance of the code as if the target were of the type
yann@1
   228
      specified in this option, but still choosing the instructions that it
yann@1
   229
      will generate based on the cpu specified by the ARCH_CPU option
yann@1
   230
      (above), or a (command-line) -mcpu= option.
yann@1
   231
      
yann@47
   232
      This is the configuration flag --with-tune=XXXX, and the runtime flag
yann@47
   233
      -mtune=XXX.
yann@1
   234
      
yann@1
   235
      Pick a value from the gcc manual for your choosen gcc version and your
yann@1
   236
      target CPU.
yann@1
   237
      
yann@1
   238
      Leave blank if you don't know, or if your target architecture does not
yann@1
   239
      offer this option.
yann@1
   240
yann@1
   241
config ARCH_FPU
yann@1
   242
    string
yann@47
   243
    prompt "Use specific FPU"
yann@631
   244
    depends on ARCH_SUPPORT_FPU
yann@1
   245
    default ""
yann@1
   246
    help
yann@1
   247
      On some targets (eg. ARM), you can specify the kind of FPU to emit
yann@1
   248
      code for.
yann@47
   249
yann@47
   250
      This is the configuration flag --with-fpu=XXX, and the runtime flag
yann@47
   251
      -mfpu=XXX.
yann@1
   252
      
yann@1
   253
      See below wether to actually emit FP opcodes, or to emulate them.
yann@1
   254
      
yann@1
   255
      Pick a value from the gcc manual for your choosen gcc version and your
yann@1
   256
      target CPU.
yann@1
   257
      
yann@1
   258
      Leave blank if you don't know, or if your target architecture does not
yann@1
   259
      offer this option.
yann@1
   260
yann@1
   261
choice
yann@1
   262
    bool
yann@1
   263
    prompt "Floating point:"
yann@1
   264
yann@1
   265
config ARCH_FLOAT_HW
yann@1
   266
    bool
yann@1
   267
    prompt "hardware (FPU)"
yann@1
   268
    help
yann@1
   269
      Emit hardware floating point opcodes.
yann@1
   270
      
yann@1
   271
      If you've got a processor with a FPU, then you want that.
yann@1
   272
      If your hardware has no FPU, you still can use HW floating point, but
yann@1
   273
      need to compile support for FPU emulation in your kernel. Needless to
yann@1
   274
      say that emulating the FPU is /slooowwwww/...
yann@1
   275
      
yann@1
   276
      One situation you'd want HW floating point without a FPU is if you get
yann@1
   277
      binary blobs from different vendors that are compiling this way and
yann@1
   278
      can't (don't wan't to) change.
yann@1
   279
yann@1
   280
config ARCH_FLOAT_SW
yann@1
   281
    bool
yann@1
   282
    prompt "software"
yann@1
   283
    help
yann@1
   284
      Do not emit any hardware floating point opcode.
yann@1
   285
      
yann@1
   286
      If your processor has no FPU, then you most probably want this, as it
yann@1
   287
      is faster than emulating the FPU in the kernel.
yann@1
   288
yann@1
   289
endchoice
yann@1
   290
yann@1
   291
config TARGET_CFLAGS
yann@1
   292
    string
yann@41
   293
    prompt "Target CFLAGS"
yann@1
   294
    default ""
yann@1
   295
    help
yann@1
   296
      Used to add specific options when compiling libraries of the toolchain,
yann@1
   297
      that will run on the target (eg. libc.so).
yann@1
   298
      
yann@531
   299
      Note that the options above for ARCH, ABI, CPU, TUNE and FPU will be
yann@1
   300
      automaticaly used. You don't need to specify them here.
yann@1
   301
      
yann@1
   302
      Leave blank if you don't know better.
yann@1
   303
yann@767
   304
config TARGET_LDFLAGS
yann@767
   305
    string
yann@767
   306
    prompt "Target LDFLAGS"
yann@767
   307
    default ""
yann@767
   308
    help
yann@767
   309
      Used to add specific options when linking libraries of the toolchain,
yann@767
   310
      that will run on your target.
yann@767
   311
      
yann@767
   312
      Leave blank if you don't know better.
yann@767
   313
yann@1976
   314
source "config.gen/arch.in.2"
yann@1976
   315
yann@1
   316
endmenu