| # Target definition: architecture, optimisations, etc... |
| |
| menu "Target options" |
| |
| config ARCH |
| string |
| |
| # Pre-declare target optimisation variables |
| config ARCH_SUPPORTS_BOTH_MMU |
| config ARCH_SUPPORTS_BOTH_ENDIAN |
| config ARCH_SUPPORTS_32 |
| config ARCH_SUPPORTS_64 |
| config ARCH_SUPPORTS_WITH_ARCH |
| config ARCH_SUPPORTS_WITH_ABI |
| config ARCH_SUPPORTS_WITH_CPU |
| config ARCH_SUPPORTS_WITH_TUNE |
| config ARCH_SUPPORTS_WITH_FLOAT |
| config ARCH_SUPPORTS_WITH_FPU |
| config ARCH_SUPPORTS_SOFTFP |
| |
| config ARCH_DEFAULT_HAS_MMU |
| config ARCH_DEFAULT_BE |
| config ARCH_DEFAULT_LE |
| config ARCH_DEFAULT_32 |
| config ARCH_DEFAULT_64 |
| |
| config ARCH_ARCH |
| config ARCH_ABI |
| config ARCH_CPU |
| config ARCH_TUNE |
| config ARCH_FPU |
| config ARCH_BE |
| config ARCH_LE |
| config ARCH_32 |
| config ARCH_64 |
| config ARCH_BITNESS |
| config ARCH_FLOAT_HW |
| config ARCH_FLOAT_SW |
| config TARGET_CFLAGS |
| config TARGET_LDFLAGS |
| |
| source "config.gen/arch.in" |
| |
| 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. |
| |
| #-------------------------------------- |
| comment "Generic target options" |
| |
| #-------------------------------------- |
| config MULTILIB |
| bool |
| prompt "Build a multilib toolchain (READ HELP!!!)" |
| 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. |
| |
| NOTE: The multilib feature in crosstool-NG is not well-tested. |
| Use at your own risk, and report success and/or failure. |
| |
| #-------------------------------------- |
| 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 |
| 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). |
| |
| #-------------------------------------- |
| config ARCH_SUPPORTS_BOTH_ENDIAN |
| bool |
| |
| config ARCH_DEFAULT_BE |
| bool |
| |
| config ARCH_DEFAULT_LE |
| bool |
| |
| choice |
| bool |
| prompt "Endianness:" |
| depends on ARCH_SUPPORTS_BOTH_ENDIAN |
| default ARCH_BE if ARCH_DEFAULT_BE |
| default ARCH_LE if ARCH_DEFAULT_LE |
| |
| config ARCH_BE |
| bool |
| prompt "Big endian" |
| |
| config ARCH_LE |
| bool |
| prompt "Little endian" |
| |
| endchoice |
| |
| config ARCH_ENDIAN |
| string |
| depends on ARCH_SUPPORTS_BOTH_ENDIAN |
| default "big" if ARCH_BE |
| default "little" if ARCH_LE |
| |
| #-------------------------------------- |
| config ARCH_SUPPORTS_32 |
| bool |
| |
| config ARCH_SUPPORTS_64 |
| bool |
| |
| config ARCH_DEFAULT_32 |
| bool |
| |
| config ARCH_DEFAULT_64 |
| bool |
| |
| config ARCH_BITNESS |
| int |
| default "32" if ARCH_32 |
| default "64" if ARCH_64 |
| |
| choice |
| bool |
| prompt "Bitness:" |
| default ARCH_32 if ARCH_DEFAULT_32 |
| default ARCH_64 if ARCH_DEFAULT_64 |
| |
| config ARCH_32 |
| bool |
| prompt "32-bit" |
| depends on ARCH_SUPPORTS_32 |
| |
| config ARCH_64 |
| bool |
| prompt "64-bit" |
| depends on ARCH_SUPPORTS_64 |
| |
| endchoice |
| |
| #-------------------------------------- |
| comment "Target optimisations" |
| |
| config ARCH_SUPPORTS_WITH_ARCH |
| bool |
| |
| config ARCH_SUPPORTS_WITH_ABI |
| bool |
| |
| config ARCH_SUPPORTS_WITH_CPU |
| bool |
| |
| config ARCH_SUPPORTS_WITH_TUNE |
| bool |
| |
| config ARCH_SUPPORTS_WITH_FLOAT |
| bool |
| |
| config ARCH_SUPPORTS_WITH_FPU |
| bool |
| |
| config ARCH_SUPPORTS_SOFTFP |
| bool |
| |
| config ARCH_ARCH |
| string |
| prompt "Architecture level" |
| depends on ARCH_SUPPORTS_WITH_ARCH |
| 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. |
| |
| config ARCH_ABI |
| string |
| prompt "Generate code for the specific ABI" |
| depends on ARCH_SUPPORTS_WITH_ABI |
| default "" |
| help |
| Generate code for the given ABI. |
| |
| This is the configuration flag --with-abi=XXXX, and the runtime flag |
| -mabi=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. |
| |
| config ARCH_CPU |
| string |
| prompt "Emit assembly for CPU" |
| depends on ARCH_SUPPORTS_WITH_CPU |
| default "" |
| help |
| This specifies the name of the target processor. GCC uses this name |
| to determine what kind of instructions it can emit when generating |
| assembly code. |
| |
| This is the configuration flag --with-cpu=XXXX, and the runtime flag |
| -mcpu=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. |
| |
| config ARCH_TUNE |
| string |
| prompt "Tune for CPU" |
| depends on ARCH_SUPPORTS_WITH_TUNE |
| 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. |
| |
| This is the configuration flag --with-tune=XXXX, and the runtime flag |
| -mtune=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. |
| |
| config ARCH_FPU |
| string |
| prompt "Use specific FPU" |
| depends on ARCH_SUPPORTS_WITH_FPU |
| default "" |
| help |
| On some targets (eg. ARM), you can specify the kind of FPU to emit |
| code for. |
| |
| This is the configuration flag --with-fpu=XXX, and the runtime flag |
| -mfpu=XXX. |
| |
| 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:" |
| depends on ARCH_SUPPORTS_WITH_FLOAT |
| |
| 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. |
| |
| 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. |
| |
| config ARCH_FLOAT_SOFTFP |
| bool |
| prompt "softfp (FPU)" |
| depends on ARCH_SUPPORTS_SOFTFP |
| 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. |
| |
| 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. |
| |
| endchoice |
| |
| config TARGET_CFLAGS |
| string |
| prompt "Target CFLAGS" |
| default "" |
| help |
| Used to add specific options when compiling libraries of the toolchain, |
| that will run on the target (eg. libc.so). |
| |
| Note that the options above for ARCH, ABI, CPU, TUNE and FPU will be |
| automatically used. You don't need to specify them here. |
| |
| Leave blank if you don't know better. |
| |
| 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. |
| |
| config ARCH_FLOAT |
| string |
| default "" if ! ARCH_SUPPORTS_WITH_FLOAT |
| default "auto" if ARCH_FLOAT_AUTO |
| default "hard" if ARCH_FLOAT_HW |
| default "soft" if ARCH_FLOAT_SW |
| default "softfp" if ARCH_FLOAT_SOFTFP |
| |
| source "config.gen/arch.in.2" |
| |
| endmenu |