2007-02-24 11:00:05 +00:00
|
|
|
# Target definition: architecture, optimisations, etc...
|
|
|
|
|
|
|
|
menu "Target options"
|
|
|
|
|
2007-04-23 20:30:34 +00:00
|
|
|
config ARCH
|
|
|
|
string
|
|
|
|
|
2008-06-27 13:58:53 +00:00
|
|
|
# Pre-declare target optimisation variables
|
2009-05-20 20:13:13 +00:00
|
|
|
config ARCH_SUPPORTS_BOTH_MMU
|
|
|
|
config ARCH_SUPPORTS_BOTH_ENDIAN
|
2015-06-21 23:49:10 +00:00
|
|
|
config ARCH_SUPPORTS_8
|
2009-11-17 08:27:38 +00:00
|
|
|
config ARCH_SUPPORTS_32
|
|
|
|
config ARCH_SUPPORTS_64
|
2011-11-29 23:25:22 +00:00
|
|
|
config ARCH_SUPPORTS_WITH_ARCH
|
|
|
|
config ARCH_SUPPORTS_WITH_ABI
|
|
|
|
config ARCH_SUPPORTS_WITH_CPU
|
|
|
|
config ARCH_SUPPORTS_WITH_TUNE
|
2011-11-25 22:57:55 +00:00
|
|
|
config ARCH_SUPPORTS_WITH_FLOAT
|
2011-11-29 23:25:22 +00:00
|
|
|
config ARCH_SUPPORTS_WITH_FPU
|
|
|
|
config ARCH_SUPPORTS_SOFTFP
|
2009-05-20 20:13:13 +00:00
|
|
|
|
|
|
|
config ARCH_DEFAULT_HAS_MMU
|
2008-06-27 13:58:53 +00:00
|
|
|
config ARCH_DEFAULT_BE
|
|
|
|
config ARCH_DEFAULT_LE
|
2009-11-17 08:27:38 +00:00
|
|
|
config ARCH_DEFAULT_32
|
|
|
|
config ARCH_DEFAULT_64
|
2009-05-20 20:13:13 +00:00
|
|
|
|
2008-06-30 11:33:52 +00:00
|
|
|
config ARCH_ARCH
|
|
|
|
config ARCH_ABI
|
|
|
|
config ARCH_CPU
|
|
|
|
config ARCH_TUNE
|
|
|
|
config ARCH_FPU
|
|
|
|
config ARCH_BE
|
|
|
|
config ARCH_LE
|
2009-11-17 21:29:50 +00:00
|
|
|
config ARCH_32
|
|
|
|
config ARCH_64
|
2010-01-09 14:40:08 +00:00
|
|
|
config ARCH_BITNESS
|
2008-06-27 13:58:53 +00:00
|
|
|
config ARCH_FLOAT_HW
|
|
|
|
config ARCH_FLOAT_SW
|
|
|
|
config TARGET_CFLAGS
|
2008-08-12 09:54:42 +00:00
|
|
|
config TARGET_LDFLAGS
|
2008-05-18 20:50:13 +00:00
|
|
|
|
2010-03-29 18:24:50 +00:00
|
|
|
source "config.gen/arch.in"
|
2007-02-24 11:00:05 +00:00
|
|
|
|
2013-01-20 12:58:22 +00:00
|
|
|
config ARCH_SUFFIX
|
|
|
|
string
|
|
|
|
prompt "Suffix to the arch-part"
|
|
|
|
help
|
|
|
|
Some architectures have multiple variants and being able to specify
|
|
|
|
the variant instead of the arch is quite convenient. This is commonly
|
|
|
|
seen for instance when "armv5tel-" is used as a prefix instead of the
|
|
|
|
more generic "arm-", or with "alphaev6-" instead of "alpha-".
|
|
|
|
|
|
|
|
Whatever you enter here will be appended to the architecture-part of the
|
|
|
|
tuple, just before the first '-'. It will override any architecture-
|
|
|
|
specific suffix that crosstool-NG may compute.
|
|
|
|
|
|
|
|
If you are not sure about what this is, leave it blank.
|
|
|
|
|
2009-05-20 20:13:13 +00:00
|
|
|
#--------------------------------------
|
2011-04-27 20:18:07 +00:00
|
|
|
comment "Generic target options"
|
|
|
|
|
2011-11-23 22:25:43 +00:00
|
|
|
#--------------------------------------
|
2015-06-21 23:49:10 +00:00
|
|
|
config ARCH_REQUIRES_MULTILIB
|
|
|
|
bool
|
|
|
|
select MULTILIB
|
|
|
|
|
2011-11-23 22:25:43 +00:00
|
|
|
config MULTILIB
|
|
|
|
bool
|
2012-12-26 19:05:19 +00:00
|
|
|
prompt "Build a multilib toolchain (READ HELP!!!)"
|
2011-11-23 22:25:43 +00:00
|
|
|
help
|
|
|
|
If you say 'y' here, then the toolchain will also contain the C library
|
|
|
|
optimised for some variants of the selected architecture, besides the
|
|
|
|
default settings.
|
|
|
|
|
|
|
|
This means the build time of the C library will be in O(nb_variants).
|
|
|
|
|
|
|
|
The list of variants is dependent on the architecture, and is hard-coded
|
|
|
|
in gcc, so it is not possible to say what variants to support, only
|
|
|
|
whether hard-coded variants should be supported or not.
|
2012-12-26 19:05:19 +00:00
|
|
|
|
|
|
|
NOTE: The multilib feature in crosstool-NG is not well-tested.
|
|
|
|
Use at your own risk, and report success and/or failure.
|
2011-11-23 22:25:43 +00:00
|
|
|
|
|
|
|
#--------------------------------------
|
2009-05-20 20:13:13 +00:00
|
|
|
config ARCH_SUPPORTS_BOTH_MMU
|
|
|
|
bool
|
|
|
|
|
|
|
|
config ARCH_DEFAULT_HAS_MMU
|
|
|
|
bool
|
|
|
|
|
|
|
|
config ARCH_USE_MMU
|
|
|
|
bool
|
|
|
|
prompt "Use the MMU" if ARCH_SUPPORTS_BOTH_MMU
|
|
|
|
default y if ARCH_DEFAULT_HAS_MMU
|
2009-10-21 21:45:55 +00:00
|
|
|
help
|
|
|
|
If your architecture has an MMU and you want to use it,
|
|
|
|
say 'Y' here.
|
|
|
|
|
|
|
|
OTOH, if you don't want to use the MMU, or your arch
|
|
|
|
lacks an MMU, say 'N' here.
|
|
|
|
|
|
|
|
Note that some architectures (eg. ARM) has variants that
|
|
|
|
lacks an MMU (eg. ARM Cortex-M3), while other variants
|
|
|
|
have one (eg. ARM Cortex-A8).
|
2009-05-20 20:13:13 +00:00
|
|
|
|
|
|
|
#--------------------------------------
|
2007-05-27 20:22:06 +00:00
|
|
|
config ARCH_SUPPORTS_BOTH_ENDIAN
|
2007-04-11 17:51:31 +00:00
|
|
|
bool
|
|
|
|
|
2007-08-30 19:49:21 +00:00
|
|
|
config ARCH_DEFAULT_BE
|
|
|
|
bool
|
|
|
|
|
|
|
|
config ARCH_DEFAULT_LE
|
|
|
|
bool
|
|
|
|
|
2007-02-24 11:00:05 +00:00
|
|
|
choice
|
|
|
|
bool
|
|
|
|
prompt "Endianness:"
|
2007-05-27 20:22:06 +00:00
|
|
|
depends on ARCH_SUPPORTS_BOTH_ENDIAN
|
2007-08-30 19:49:21 +00:00
|
|
|
default ARCH_BE if ARCH_DEFAULT_BE
|
|
|
|
default ARCH_LE if ARCH_DEFAULT_LE
|
2007-02-24 11:00:05 +00:00
|
|
|
|
|
|
|
config ARCH_BE
|
|
|
|
bool
|
|
|
|
prompt "Big endian"
|
|
|
|
|
|
|
|
config ARCH_LE
|
|
|
|
bool
|
|
|
|
prompt "Little endian"
|
2009-11-17 08:27:38 +00:00
|
|
|
|
|
|
|
endchoice
|
|
|
|
|
2011-11-14 18:13:00 +00:00
|
|
|
config ARCH_ENDIAN
|
|
|
|
string
|
|
|
|
depends on ARCH_SUPPORTS_BOTH_ENDIAN
|
|
|
|
default "big" if ARCH_BE
|
|
|
|
default "little" if ARCH_LE
|
|
|
|
|
2009-11-17 08:27:38 +00:00
|
|
|
#--------------------------------------
|
2015-06-21 23:49:10 +00:00
|
|
|
config ARCH_SUPPORTS_8
|
|
|
|
bool
|
|
|
|
|
2009-11-17 08:27:38 +00:00
|
|
|
config ARCH_SUPPORTS_32
|
|
|
|
bool
|
|
|
|
|
|
|
|
config ARCH_SUPPORTS_64
|
|
|
|
bool
|
|
|
|
|
2015-06-21 23:49:10 +00:00
|
|
|
config ARCH_DEFAULT_8
|
|
|
|
bool
|
|
|
|
|
2009-11-17 08:27:38 +00:00
|
|
|
config ARCH_DEFAULT_32
|
|
|
|
bool
|
|
|
|
|
|
|
|
config ARCH_DEFAULT_64
|
|
|
|
bool
|
|
|
|
|
2010-01-09 14:40:08 +00:00
|
|
|
config ARCH_BITNESS
|
|
|
|
int
|
2015-06-21 23:49:10 +00:00
|
|
|
default "8" if ARCH_8
|
2010-01-09 14:40:08 +00:00
|
|
|
default "32" if ARCH_32
|
|
|
|
default "64" if ARCH_64
|
|
|
|
|
2009-11-17 08:27:38 +00:00
|
|
|
choice
|
|
|
|
bool
|
|
|
|
prompt "Bitness:"
|
2015-06-21 23:49:10 +00:00
|
|
|
default ARCH_8 if ARCH_DEFAULT_8
|
2009-11-17 21:29:50 +00:00
|
|
|
default ARCH_32 if ARCH_DEFAULT_32
|
|
|
|
default ARCH_64 if ARCH_DEFAULT_64
|
2009-11-17 08:27:38 +00:00
|
|
|
|
2015-06-21 23:49:10 +00:00
|
|
|
config ARCH_8
|
|
|
|
bool
|
|
|
|
prompt "8-bit"
|
|
|
|
depends on ARCH_SUPPORTS_8
|
|
|
|
|
2009-11-17 21:29:50 +00:00
|
|
|
config ARCH_32
|
2009-11-17 08:27:38 +00:00
|
|
|
bool
|
|
|
|
prompt "32-bit"
|
|
|
|
depends on ARCH_SUPPORTS_32
|
|
|
|
|
2009-11-17 21:29:50 +00:00
|
|
|
config ARCH_64
|
2009-11-17 08:27:38 +00:00
|
|
|
bool
|
|
|
|
prompt "64-bit"
|
|
|
|
depends on ARCH_SUPPORTS_64
|
2007-02-24 11:00:05 +00:00
|
|
|
|
|
|
|
endchoice
|
|
|
|
|
2009-05-20 20:13:13 +00:00
|
|
|
#--------------------------------------
|
2007-02-24 11:00:05 +00:00
|
|
|
comment "Target optimisations"
|
|
|
|
|
2011-11-29 23:25:22 +00:00
|
|
|
config ARCH_SUPPORTS_WITH_ARCH
|
2008-06-27 15:08:43 +00:00
|
|
|
bool
|
|
|
|
|
2011-11-29 23:25:22 +00:00
|
|
|
config ARCH_SUPPORTS_WITH_ABI
|
2008-06-27 15:08:43 +00:00
|
|
|
bool
|
|
|
|
|
2011-11-29 23:25:22 +00:00
|
|
|
config ARCH_SUPPORTS_WITH_CPU
|
2008-06-27 15:08:43 +00:00
|
|
|
bool
|
|
|
|
|
2011-11-29 23:25:22 +00:00
|
|
|
config ARCH_SUPPORTS_WITH_TUNE
|
2008-06-27 15:08:43 +00:00
|
|
|
bool
|
|
|
|
|
2011-11-25 22:57:55 +00:00
|
|
|
config ARCH_SUPPORTS_WITH_FLOAT
|
|
|
|
bool
|
|
|
|
|
2011-11-29 23:25:22 +00:00
|
|
|
config ARCH_SUPPORTS_WITH_FPU
|
2008-06-27 15:08:43 +00:00
|
|
|
bool
|
|
|
|
|
2011-11-29 23:25:22 +00:00
|
|
|
config ARCH_SUPPORTS_SOFTFP
|
2011-10-19 02:27:32 +00:00
|
|
|
bool
|
|
|
|
|
2007-04-23 20:30:34 +00:00
|
|
|
config ARCH_ARCH
|
|
|
|
string
|
2008-02-14 22:44:34 +00:00
|
|
|
prompt "Architecture level"
|
2011-11-29 23:25:22 +00:00
|
|
|
depends on ARCH_SUPPORTS_WITH_ARCH
|
2015-06-08 20:42:38 +00:00
|
|
|
depends on ARCH_CPU = ""
|
2007-04-23 20:30:34 +00:00
|
|
|
default ""
|
|
|
|
help
|
|
|
|
GCC uses this name to determine what kind of instructions it can emit
|
|
|
|
when generating assembly code. This option can be used in conjunction
|
|
|
|
with or instead of the ARCH_CPU option (above), or a (command-line)
|
|
|
|
-mcpu= option.
|
|
|
|
|
|
|
|
This is the configuration flag --with-arch=XXXX, and the runtime flag
|
|
|
|
-march=XXX.
|
|
|
|
|
|
|
|
Pick a value from the gcc manual for your choosen gcc version and your
|
|
|
|
target CPU.
|
|
|
|
|
|
|
|
Leave blank if you don't know, or if your target architecture does not
|
|
|
|
offer this option.
|
|
|
|
|
2007-04-21 17:31:51 +00:00
|
|
|
config ARCH_ABI
|
|
|
|
string
|
|
|
|
prompt "Generate code for the specific ABI"
|
2011-11-29 23:25:22 +00:00
|
|
|
depends on ARCH_SUPPORTS_WITH_ABI
|
2007-04-21 17:31:51 +00:00
|
|
|
default ""
|
|
|
|
help
|
|
|
|
Generate code for the given ABI.
|
|
|
|
|
2007-04-23 20:30:34 +00:00
|
|
|
This is the configuration flag --with-abi=XXXX, and the runtime flag
|
|
|
|
-mabi=XXX.
|
|
|
|
|
2007-04-21 17:31:51 +00:00
|
|
|
Pick a value from the gcc manual for your choosen gcc version and your
|
|
|
|
target CPU.
|
|
|
|
|
2011-07-17 14:53:40 +00:00
|
|
|
Leave blank if you don't know, or if your target architecture does not
|
2007-04-21 17:31:51 +00:00
|
|
|
offer this option.
|
|
|
|
|
2007-02-24 11:00:05 +00:00
|
|
|
config ARCH_CPU
|
|
|
|
string
|
|
|
|
prompt "Emit assembly for CPU"
|
2011-11-29 23:25:22 +00:00
|
|
|
depends on ARCH_SUPPORTS_WITH_CPU
|
2007-02-24 11:00:05 +00:00
|
|
|
default ""
|
|
|
|
help
|
2007-07-22 16:32:24 +00:00
|
|
|
This specifies the name of the target processor. GCC uses this name
|
2007-02-24 11:00:05 +00:00
|
|
|
to determine what kind of instructions it can emit when generating
|
|
|
|
assembly code.
|
|
|
|
|
2007-04-23 20:30:34 +00:00
|
|
|
This is the configuration flag --with-cpu=XXXX, and the runtime flag
|
|
|
|
-mcpu=XXX.
|
|
|
|
|
2007-02-24 11:00:05 +00:00
|
|
|
Pick a value from the gcc manual for your choosen gcc version and your
|
|
|
|
target CPU.
|
|
|
|
|
|
|
|
Leave blank if you don't know, or if your target architecture does not
|
|
|
|
offer this option.
|
|
|
|
|
|
|
|
config ARCH_TUNE
|
|
|
|
string
|
|
|
|
prompt "Tune for CPU"
|
2011-11-29 23:25:22 +00:00
|
|
|
depends on ARCH_SUPPORTS_WITH_TUNE
|
2015-06-10 18:52:15 +00:00
|
|
|
depends on ARCH_CPU = ""
|
2007-02-24 11:00:05 +00:00
|
|
|
default ""
|
|
|
|
help
|
|
|
|
This option is very similar to the ARCH_CPU option (above), except
|
|
|
|
that instead of specifying the actual target processor type, and hence
|
|
|
|
restricting which instructions can be used, it specifies that GCC should
|
|
|
|
tune the performance of the code as if the target were of the type
|
|
|
|
specified in this option, but still choosing the instructions that it
|
|
|
|
will generate based on the cpu specified by the ARCH_CPU option
|
|
|
|
(above), or a (command-line) -mcpu= option.
|
|
|
|
|
2007-04-23 20:30:34 +00:00
|
|
|
This is the configuration flag --with-tune=XXXX, and the runtime flag
|
|
|
|
-mtune=XXX.
|
2007-02-24 11:00:05 +00:00
|
|
|
|
|
|
|
Pick a value from the gcc manual for your choosen gcc version and your
|
|
|
|
target CPU.
|
|
|
|
|
|
|
|
Leave blank if you don't know, or if your target architecture does not
|
|
|
|
offer this option.
|
|
|
|
|
|
|
|
config ARCH_FPU
|
|
|
|
string
|
2007-04-23 20:30:34 +00:00
|
|
|
prompt "Use specific FPU"
|
2011-11-29 23:25:22 +00:00
|
|
|
depends on ARCH_SUPPORTS_WITH_FPU
|
2007-02-24 11:00:05 +00:00
|
|
|
default ""
|
|
|
|
help
|
|
|
|
On some targets (eg. ARM), you can specify the kind of FPU to emit
|
|
|
|
code for.
|
2007-04-23 20:30:34 +00:00
|
|
|
|
|
|
|
This is the configuration flag --with-fpu=XXX, and the runtime flag
|
|
|
|
-mfpu=XXX.
|
2007-02-24 11:00:05 +00:00
|
|
|
|
|
|
|
See below wether to actually emit FP opcodes, or to emulate them.
|
|
|
|
|
|
|
|
Pick a value from the gcc manual for your choosen gcc version and your
|
|
|
|
target CPU.
|
|
|
|
|
|
|
|
Leave blank if you don't know, or if your target architecture does not
|
|
|
|
offer this option.
|
|
|
|
|
|
|
|
choice
|
|
|
|
bool
|
|
|
|
prompt "Floating point:"
|
2011-11-25 22:59:29 +00:00
|
|
|
depends on ARCH_SUPPORTS_WITH_FLOAT
|
2007-02-24 11:00:05 +00:00
|
|
|
|
2014-05-10 02:10:08 +00:00
|
|
|
config ARCH_FLOAT_AUTO
|
|
|
|
bool
|
|
|
|
prompt "auto (let gcc decide)"
|
|
|
|
help
|
|
|
|
Instead of explicitly passing a float option, don't
|
|
|
|
pass any float options and let gcc figure it out.
|
|
|
|
|
|
|
|
For multilib configurations, this may help.
|
|
|
|
|
2007-02-24 11:00:05 +00:00
|
|
|
config ARCH_FLOAT_HW
|
|
|
|
bool
|
|
|
|
prompt "hardware (FPU)"
|
|
|
|
help
|
|
|
|
Emit hardware floating point opcodes.
|
|
|
|
|
|
|
|
If you've got a processor with a FPU, then you want that.
|
|
|
|
If your hardware has no FPU, you still can use HW floating point, but
|
|
|
|
need to compile support for FPU emulation in your kernel. Needless to
|
|
|
|
say that emulating the FPU is /slooowwwww/...
|
|
|
|
|
|
|
|
One situation you'd want HW floating point without a FPU is if you get
|
|
|
|
binary blobs from different vendors that are compiling this way and
|
|
|
|
can't (don't wan't to) change.
|
|
|
|
|
2011-10-19 02:27:32 +00:00
|
|
|
config ARCH_FLOAT_SOFTFP
|
|
|
|
bool
|
2012-12-23 13:32:20 +00:00
|
|
|
prompt "softfp (FPU)"
|
2011-11-29 23:25:22 +00:00
|
|
|
depends on ARCH_SUPPORTS_SOFTFP
|
2011-10-19 02:27:32 +00:00
|
|
|
help
|
|
|
|
Emit hardware floating point opcodes but use the software
|
|
|
|
floating point calling convention.
|
|
|
|
|
|
|
|
Architectures such as ARM use different registers for passing
|
|
|
|
floating point values depending on if they're in software mode
|
|
|
|
or hardware mode. softfp emits FPU instructions but uses the
|
|
|
|
software FP calling convention allowing softfp code to
|
|
|
|
interoperate with legacy software only code.
|
|
|
|
|
|
|
|
If in doubt, use 'software' or 'hardware' mode instead.
|
|
|
|
|
2012-12-23 13:32:20 +00:00
|
|
|
config ARCH_FLOAT_SW
|
|
|
|
bool
|
|
|
|
prompt "software (no FPU)"
|
|
|
|
help
|
|
|
|
Do not emit any hardware floating point opcode.
|
|
|
|
|
|
|
|
If your processor has no FPU, then you most probably want this, as it
|
|
|
|
is faster than emulating the FPU in the kernel.
|
|
|
|
|
2007-02-24 11:00:05 +00:00
|
|
|
endchoice
|
|
|
|
|
|
|
|
config TARGET_CFLAGS
|
|
|
|
string
|
2007-04-17 22:24:42 +00:00
|
|
|
prompt "Target CFLAGS"
|
2007-02-24 11:00:05 +00:00
|
|
|
default ""
|
|
|
|
help
|
|
|
|
Used to add specific options when compiling libraries of the toolchain,
|
|
|
|
that will run on the target (eg. libc.so).
|
|
|
|
|
2008-05-24 22:38:07 +00:00
|
|
|
Note that the options above for ARCH, ABI, CPU, TUNE and FPU will be
|
2011-07-17 14:53:40 +00:00
|
|
|
automatically used. You don't need to specify them here.
|
2007-02-24 11:00:05 +00:00
|
|
|
|
|
|
|
Leave blank if you don't know better.
|
|
|
|
|
2008-08-07 15:18:18 +00:00
|
|
|
config TARGET_LDFLAGS
|
|
|
|
string
|
|
|
|
prompt "Target LDFLAGS"
|
|
|
|
default ""
|
|
|
|
help
|
|
|
|
Used to add specific options when linking libraries of the toolchain,
|
|
|
|
that will run on your target.
|
|
|
|
|
|
|
|
Leave blank if you don't know better.
|
|
|
|
|
2011-10-19 02:27:32 +00:00
|
|
|
config ARCH_FLOAT
|
|
|
|
string
|
2011-11-25 22:59:29 +00:00
|
|
|
default "" if ! ARCH_SUPPORTS_WITH_FLOAT
|
2014-05-10 02:10:08 +00:00
|
|
|
default "auto" if ARCH_FLOAT_AUTO
|
2011-10-19 02:27:32 +00:00
|
|
|
default "hard" if ARCH_FLOAT_HW
|
|
|
|
default "soft" if ARCH_FLOAT_SW
|
2011-10-19 02:27:32 +00:00
|
|
|
default "softfp" if ARCH_FLOAT_SOFTFP
|
2011-10-19 02:27:32 +00:00
|
|
|
|
2011-04-27 20:18:07 +00:00
|
|
|
source "config.gen/arch.in.2"
|
|
|
|
|
2007-02-24 11:00:05 +00:00
|
|
|
endmenu
|