config/target.in
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue May 22 20:36:44 2007 +0000 (2007-05-22)
changeset 117 80c4338ec0a0
parent 108 69407950a2a2
child 136 22b5ef41df97
permissions -rw-r--r--
Only prompt for libfloat for those target that support it.
     1 # Target definition: architecture, optimisations, etc...
     2 
     3 menu "Target options"
     4 
     5 comment "General target options"
     6 
     7 config ARCH
     8     string
     9     default "arm"     if ARCH_ARM
    10     default "mips"    if ARCH_MIPS
    11     default "x86"     if ARCH_x86
    12     default "x86_64"  if ARCH_x86_64
    13 
    14 choice
    15     bool
    16     prompt "Target architecture:"
    17     default ARCH_x86
    18 
    19 config ARCH_ARM
    20     bool
    21     prompt "arm"
    22     select ARCH_SUPPORTS_BE
    23     select ARCH_SUPPORTS_LE
    24     select ARCH_SUPPORTS_LIBFLOAT
    25 
    26 config ARCH_MIPS
    27     bool
    28     prompt "mips"
    29     select ARCH_SUPPORTS_BE
    30     select ARCH_SUPPORTS_LE
    31 
    32 config ARCH_x86
    33     bool
    34     prompt "x86"
    35     select ARCH_SUPPORTS_LE
    36     select ARCH_SUPPORTS_LIBFLOAT
    37 
    38 config ARCH_x86_64
    39     bool
    40     prompt "x86_64"
    41     select ARCH_SUPPORTS_LE
    42 
    43 endchoice
    44 
    45 config ARCH_SUPPORTS_BE
    46     bool
    47     default n
    48 
    49 config ARCH_SUPPORTS_LE
    50     bool
    51     default n
    52 
    53 choice
    54     bool
    55     prompt "Endianness:"
    56 
    57 config ARCH_BE
    58     bool
    59     prompt "Big endian"
    60     depends on ARCH_SUPPORTS_BE
    61 
    62 config ARCH_LE
    63     bool
    64     prompt "Little endian"
    65     depends on ARCH_SUPPORTS_LE
    66 
    67 endchoice
    68 
    69 comment "Target optimisations"
    70 
    71 config ARCH_ARCH
    72     string
    73     prompt "Achitecture level"
    74     default ""
    75     help
    76       GCC uses this name to determine what kind of instructions it can emit
    77       when generating assembly code. This option can be used in conjunction
    78       with or instead of the ARCH_CPU option (above), or a (command-line)
    79       -mcpu= option.
    80       
    81       This is the configuration flag --with-arch=XXXX, and the runtime flag
    82       -march=XXX.
    83       
    84       Pick a value from the gcc manual for your choosen gcc version and your
    85       target CPU.
    86       
    87       Leave blank if you don't know, or if your target architecture does not
    88       offer this option.
    89 
    90 config ARCH_ABI
    91     string
    92     prompt "Generate code for the specific ABI"
    93     default ""
    94     help
    95       Generate code for the given ABI.
    96 
    97       This is the configuration flag --with-abi=XXXX, and the runtime flag
    98       -mabi=XXX.
    99 
   100       Pick a value from the gcc manual for your choosen gcc version and your
   101       target CPU.
   102 
   103       Leave blank if you don't know, or if your target architecutre does not
   104       offer this option.
   105 
   106 config ARCH_CPU
   107     string
   108     prompt "Emit assembly for CPU"
   109     default ""
   110     help
   111       This specifies the name of the target ARM processor. GCC uses this name
   112       to determine what kind of instructions it can emit when generating
   113       assembly code.
   114       
   115       This is the configuration flag --with-cpu=XXXX, and the runtime flag
   116       -mcpu=XXX.
   117 
   118       Pick a value from the gcc manual for your choosen gcc version and your
   119       target CPU.
   120       
   121       Leave blank if you don't know, or if your target architecture does not
   122       offer this option.
   123 
   124 config ARCH_TUNE
   125     string
   126     prompt "Tune for CPU"
   127     default ""
   128     help
   129       This option is very similar to the ARCH_CPU option (above), except
   130       that instead of specifying the actual target processor type, and hence
   131       restricting which instructions can be used, it specifies that GCC should
   132       tune the performance of the code as if the target were of the type
   133       specified in this option, but still choosing the instructions that it
   134       will generate based on the cpu specified by the ARCH_CPU option
   135       (above), or a (command-line) -mcpu= option.
   136       
   137       This is the configuration flag --with-tune=XXXX, and the runtime flag
   138       -mtune=XXX.
   139       
   140       Pick a value from the gcc manual for your choosen gcc version and your
   141       target CPU.
   142       
   143       Leave blank if you don't know, or if your target architecture does not
   144       offer this option.
   145 
   146 config ARCH_FPU
   147     string
   148     prompt "Use specific FPU"
   149     default ""
   150     help
   151       On some targets (eg. ARM), you can specify the kind of FPU to emit
   152       code for.
   153 
   154       This is the configuration flag --with-fpu=XXX, and the runtime flag
   155       -mfpu=XXX.
   156       
   157       See below wether to actually emit FP opcodes, or to emulate them.
   158       
   159       Pick a value from the gcc manual for your choosen gcc version and your
   160       target CPU.
   161       
   162       Leave blank if you don't know, or if your target architecture does not
   163       offer this option.
   164 
   165 choice
   166     bool
   167     prompt "Floating point:"
   168 
   169 config ARCH_FLOAT_HW
   170     bool
   171     prompt "hardware (FPU)"
   172     help
   173       Emit hardware floating point opcodes.
   174       
   175       If you've got a processor with a FPU, then you want that.
   176       If your hardware has no FPU, you still can use HW floating point, but
   177       need to compile support for FPU emulation in your kernel. Needless to
   178       say that emulating the FPU is /slooowwwww/...
   179       
   180       One situation you'd want HW floating point without a FPU is if you get
   181       binary blobs from different vendors that are compiling this way and
   182       can't (don't wan't to) change.
   183 
   184 config ARCH_FLOAT_SW
   185     bool
   186     prompt "software"
   187     help
   188       Do not emit any hardware floating point opcode.
   189       
   190       If your processor has no FPU, then you most probably want this, as it
   191       is faster than emulating the FPU in the kernel.
   192 
   193 endchoice
   194 
   195 config ARCH_SUPPORTS_LIBFLOAT
   196     bool
   197     default n
   198 
   199 config ARCH_FLOAT_SW_LIBFLOAT
   200     bool
   201     prompt "Use libfloat"
   202     default n
   203     depends on ARCH_FLOAT_SW && ARCH_SUPPORTS_LIBFLOAT
   204     help
   205       For those targets upporting it, you can use libfloat for the software
   206       floating point emulation.
   207       
   208       Note that some versions of gcc have support code that supersedes libfloat,
   209       while others don't. Known version of gcc that don't have support code are
   210       versions prior to 3.0, and version above 4.0.
   211       
   212       You should check gcc before deciding to use libfloat.
   213 
   214 config LIBFLOAT_VERSION
   215     string
   216     default "990616.orig"
   217     depends on ARCH_FLOAT_SW_LIBFLOAT
   218 
   219 config TARGET_CFLAGS
   220     string
   221     prompt "Target CFLAGS"
   222     default ""
   223     help
   224       Used to add specific options when compiling libraries of the toolchain,
   225       that will run on the target (eg. libc.so).
   226       
   227       Note that the options above for CPU, tune, arch and FPU will be
   228       automaticaly used. You don't need to specify them here.
   229       
   230       Leave blank if you don't know better.
   231 
   232 endmenu