config/target.in
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Sep 24 21:47:28 2011 +0200 (2011-09-24)
branch1.10
changeset 2678 564d1f3a849b
parent 1976 2d90ec981ba3
child 2413 ac27814977fd
permissions -rw-r--r--
1.10: close branch

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