config/target.in
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Wed Apr 11 17:51:31 2007 +0000 (2007-04-11)
changeset 35 2dce00870893
parent 1 eeea35fbf182
child 41 fd6ad5721f77
permissions -rw-r--r--
Don't prompt for endianness not suppoted by selected architecture.
Change suggested by Robert P. J. DAY <rpjday@mindspring.com>.
     1 # Target definition: architecture, optimisations, etc...
     2 
     3 menu "Target options"
     4 
     5 comment "General target options"
     6 
     7 choice
     8     bool
     9     prompt "Target architecture:"
    10     default ARCH_x86
    11 
    12 config ARCH_ARM
    13     bool
    14     prompt "arm"
    15     select ARCH_SUPPORTS_BE
    16     select ARCH_SUPPORTS_LE
    17 
    18 config ARCH_MIPS
    19     bool
    20     prompt "mips"
    21     select ARCH_SUPPORTS_BE
    22     select ARCH_SUPPORTS_LE
    23 
    24 config ARCH_x86
    25     bool
    26     prompt "x86"
    27     select ARCH_SUPPORTS_LE
    28 
    29 config ARCH_x86_64
    30     bool
    31     prompt "x86_64"
    32     select ARCH_SUPPORTS_LE
    33 
    34 endchoice
    35 
    36 config ARCH_SUPPORTS_BE
    37     bool
    38     default n
    39 
    40 config ARCH_SUPPORTS_LE
    41     bool
    42     default n
    43 
    44 choice
    45     bool
    46     prompt "Endianness:"
    47 
    48 config ARCH_BE
    49     bool
    50     prompt "Big endian"
    51     depends on ARCH_SUPPORTS_BE
    52 
    53 config ARCH_LE
    54     bool
    55     prompt "Little endian"
    56     depends on ARCH_SUPPORTS_LE
    57 
    58 endchoice
    59 
    60 comment "Target optimisations"
    61 
    62 config ARCH_CPU
    63     string
    64     prompt "Emit assembly for CPU"
    65     default ""
    66     help
    67       This specifies the name of the target ARM processor. GCC uses this name
    68       to determine what kind of instructions it can emit when generating
    69       assembly code.
    70       
    71       Pick a value from the gcc manual for your choosen gcc version and your
    72       target CPU.
    73       
    74       Leave blank if you don't know, or if your target architecture does not
    75       offer this option.
    76 
    77 config ARCH_TUNE
    78     string
    79     prompt "Tune for CPU"
    80     default ""
    81     help
    82       This option is very similar to the ARCH_CPU option (above), except
    83       that instead of specifying the actual target processor type, and hence
    84       restricting which instructions can be used, it specifies that GCC should
    85       tune the performance of the code as if the target were of the type
    86       specified in this option, but still choosing the instructions that it
    87       will generate based on the cpu specified by the ARCH_CPU option
    88       (above), or a (command-line) -mcpu= option.
    89       
    90       Pick a value from the gcc manual for your choosen gcc version and your
    91       target CPU.
    92       
    93       Leave blank if you don't know, or if your target architecture does not
    94       offer this option.
    95 
    96 config ARCH_ARCH
    97     string
    98     prompt "Achitecture level"
    99     default ""
   100     help
   101       GCC uses this name to determine what kind of instructions it can emit
   102       when generating assembly code. This option can be used in conjunction
   103       with or instead of the ARCH_CPU option (above), or a (command-line)
   104       -mcpu= option.
   105       
   106       Pick a value from the gcc manual for your choosen gcc version and your
   107       target CPU.
   108       
   109       Leave blank if you don't know, or if your target architecture does not
   110       offer this option.
   111 
   112 config ARCH_FPU
   113     string
   114     prompt "Use FPU"
   115     default ""
   116     help
   117       On some targets (eg. ARM), you can specify the kind of FPU to emit
   118       code for.
   119       
   120       See below wether to actually emit FP opcodes, or to emulate them.
   121       
   122       Pick a value from the gcc manual for your choosen gcc version and your
   123       target CPU.
   124       
   125       Leave blank if you don't know, or if your target architecture does not
   126       offer this option.
   127 
   128 choice
   129     bool
   130     prompt "Floating point:"
   131 
   132 config ARCH_FLOAT_HW
   133     bool
   134     prompt "hardware (FPU)"
   135     help
   136       Emit hardware floating point opcodes.
   137       
   138       If you've got a processor with a FPU, then you want that.
   139       If your hardware has no FPU, you still can use HW floating point, but
   140       need to compile support for FPU emulation in your kernel. Needless to
   141       say that emulating the FPU is /slooowwwww/...
   142       
   143       One situation you'd want HW floating point without a FPU is if you get
   144       binary blobs from different vendors that are compiling this way and
   145       can't (don't wan't to) change.
   146 
   147 config ARCH_FLOAT_SW
   148     bool
   149     prompt "software"
   150     help
   151       Do not emit any hardware floating point opcode.
   152       
   153       If your processor has no FPU, then you most probably want this, as it
   154       is faster than emulating the FPU in the kernel.
   155 
   156 endchoice
   157 
   158 config ARCH_FLOAT_SW_LIBFLOAT
   159     bool
   160     prompt "Use libfloat"
   161     default n
   162     depends on ARCH_FLOAT_SW
   163     help
   164       For those targets upporting it, you can use libfloat for the software
   165       floating point emulation.
   166       
   167       Note that some versions of gcc have support code that supersedes libfloat,
   168       while others don't. Known version of gcc that don't have support code are
   169       versions prior to 3.0, and version above 4.0.
   170       
   171       You should check gcc before deciding to use libfloat.
   172 
   173 config TARGET_CFLAGS
   174     string
   175     prompt "Default target CFLAGS"
   176     default ""
   177     help
   178       Used to add specific options when compiling libraries of the toolchain,
   179       that will run on the target (eg. libc.so).
   180       
   181       Note that the options above for CPU, tune, arch and FPU will be
   182       automaticaly used. You don't need to specify them here.
   183       
   184       Leave blank if you don't know better.
   185 
   186 comment "Toolchain options"
   187 
   188 config USE_SYSROOT
   189     bool
   190     prompt "Use sysroot'ed toolchain"
   191     default y
   192     help
   193       Use the 'shinny new' sysroot feature of gcc: libraries split between
   194       prefix/target/sys-root/lib and prefix/target/sys-root/usr/lib
   195       
   196       You definitely want to say 'Y' here. Yes you do. I know you do. Say 'Y'.
   197 
   198 config SHARED_LIBS
   199     bool
   200     prompt "Build shared libraries"
   201     default y
   202     help
   203       Say 'y' here, unless you don't want shared libraries.
   204       
   205       You might not want shared librries if you're building for a target that
   206       don't support it (maybe some nommu targets, for example, or bare metal).
   207 
   208 config TARGET_MULTILIB
   209     bool
   210 #    prompt "Enable 'multilib' support (EXPERIMENTAL)"
   211     default n
   212     help
   213       Enable the so-called 'multilib' support.
   214       
   215       With the same toolchain, and on some architectures, you will be able to
   216       build big and little endian binaries, soft- and hard-float, etc...
   217       
   218       See the gcc configure manual at http://gcc.gnu.org/install/configure.html
   219       to see what multilib your target supports.
   220       
   221       It's preferable for now to build two (or more) toolchains, one for each
   222       configuration you need to support (eg. one for thumb and one for ARM,
   223       etc...). You can use the vendor string to diferentiate those toolchains.
   224 
   225 config TARGET_VENDOR
   226     string
   227     prompt "Vendor string"
   228     default "unknown"
   229     help
   230       Vendor part of the machine triplet.
   231       
   232       A triplet is of the form arch-vendor-kernel-system.
   233       You can set the second part, vendor, to whatever you see fit.
   234       Use a single word, or use underscores "_" to separate words.
   235       
   236       Keep the default (unkown) if you don't know better.
   237 
   238 config TARGET_ALIAS
   239     string
   240     prompt "Target alias"
   241     default ""
   242     help
   243       Normaly, you'd call your toolchain component (especially gcc) by
   244       prefixing the target triplet followed by a dash and the component name
   245       (eg. armeb-unknown-linux-uclibc-gcc).
   246       
   247       You can enter a shortcut here. This string will be used to create
   248       symbolic links to the toolchain tools (eg. if you enter "foo-bar" here,
   249       then gcc for your toolchain will also be available as "foo-bar-gcc" along
   250       with the original name).
   251       
   252       You shouldn't need to enter anything here, unless you plan to manually
   253       call the tools (autotools-based ./configure will use the standard name).
   254 
   255 config ARCH
   256     string
   257     default "arm"     if ARCH_ARM
   258     default "mips"    if ARCH_MIPS
   259     default "x86"     if ARCH_x86
   260     default "x86_64"  if ARCH_x86_64
   261 
   262 config BUILD 
   263     string
   264     prompt "Build system triplet"
   265     default ""
   266     help
   267       Canonical name of the machine building the toolchain.
   268       You should leave empty, unless you really now what you're doing.
   269 
   270 config CC_NATIVE
   271     string
   272     prompt "Native gcc"
   273     default "gcc"
   274     help
   275       The native C compiler.
   276       
   277       You can set this to an alternative compiler if you have more than one
   278       installed (eg. gcc is gcc-4.1.1 and you want to use gcc-3.4.6).
   279       
   280       You can leave this empty as well, in which case gcc will be used.
   281 
   282 config CANADIAN
   283     bool
   284     prompt "Canadian build (EXPERIMENTAL)"
   285     default n
   286     help
   287       A canadian build allows to build a compiler on a first machine
   288       (build system), that will run on second machine (host system),
   289       targetting a third machine (target system).
   290       
   291       An example where you'd want a candian cross-compiler is to create
   292       a native compiler for your target. In this case host and target
   293       are the same.
   294 
   295 config HOST
   296     string
   297     prompt "Host system triplet"
   298     default ""
   299     depends on CANADIAN
   300     help
   301       Canonical name of the machine serving as host.
   302 
   303 config HOST_CC
   304     string
   305     prompt "Host system compiler"
   306     default "${CT_HOST}-"
   307     depends on CANADIAN
   308     help
   309       C compiler targeting the host system.
   310       If HOST_CC ends with a dash (-), then it is considered to be the
   311       prefix to gcc (eg. x86-pc-linuc-gnu-).
   312       If it is empty, it is formed by appending '-gcc' to HOST.
   313       Else it is considered to be the complete name of the compiler, with
   314       full path, or without path (provided that it can be found in PATH).
   315 
   316 endmenu