diff options
author | Alexey Neyman <stilor@att.net> | 2017-08-29 15:36:52 -0700 |
---|---|---|
committer | Alexey Neyman <stilor@att.net> | 2017-09-03 12:11:23 -0700 |
commit | 413f5f610012ea24db9910084ea3b40db808147b (patch) | |
tree | 75e9c879151cfa7cd476fc43b1182ca63655813f /config | |
parent | 1da3cc59df185144cb01fdd32a0dc1ca417d9106 (diff) | |
download | crosstool-ng-413f5f610012ea24db9910084ea3b40db808147b.tar.gz crosstool-ng-413f5f610012ea24db9910084ea3b40db808147b.tar.bz2 crosstool-ng-413f5f610012ea24db9910084ea3b40db808147b.zip |
Super-H multilib toolchain fixes
1. On SuperH, configuring GCC with explicit variant of the CPU
(like "sh4") limits the default set of multilibs to just that CPU
and requires --with-multilib-list to change. Allow for "unspecified"
variant, so that we can defer to GCC to determine the list.
2. Support toolchains with both endiannesses at the same time.
3. Add a SuperH/newlib sample
4. Add more flags processing for uClibc
Signed-off-by: Alexey Neyman <stilor@att.net>
Diffstat (limited to 'config')
-rw-r--r-- | config/arch/arm.in | 2 | ||||
-rw-r--r-- | config/arch/microblaze.in | 4 | ||||
-rw-r--r-- | config/arch/mips.in | 2 | ||||
-rw-r--r-- | config/arch/powerpc.in | 2 | ||||
-rw-r--r-- | config/arch/sh.in | 43 | ||||
-rw-r--r-- | config/arch/xtensa.in | 2 | ||||
-rw-r--r-- | config/target.in | 38 |
7 files changed, 81 insertions, 12 deletions
diff --git a/config/arch/arm.in b/config/arch/arm.in index 269310d6..72c329f0 100644 --- a/config/arch/arm.in +++ b/config/arch/arm.in @@ -5,7 +5,7 @@ ## select ARCH_DEFAULT_32 ## select ARCH_SUPPORTS_BOTH_MMU ## select ARCH_DEFAULT_HAS_MMU -## select ARCH_SUPPORTS_BOTH_ENDIAN +## select ARCH_SUPPORTS_EITHER_ENDIAN ## select ARCH_DEFAULT_LE ## select ARCH_SUPPORTS_WITH_ARCH ## select ARCH_SUPPORTS_WITH_CPU diff --git a/config/arch/microblaze.in b/config/arch/microblaze.in index d2360077..8c73b00a 100644 --- a/config/arch/microblaze.in +++ b/config/arch/microblaze.in @@ -2,9 +2,9 @@ ## depends on EXPERIMENTAL ## -## select ARCH_SUPPORT_ARCH +## select ARCH_SUPPORTS_WITH_CPU ## select ARCH_FLOAT_SW -## select ARCH_SUPPORTS_BOTH_ENDIAN +## select ARCH_SUPPORTS_EITHER_ENDIAN ## select ARCH_DEFAULT_BE ## select ARCH_SUPPORTS_BOTH_MMU ## select ARCH_DEFAULT_HAS_MMU diff --git a/config/arch/mips.in b/config/arch/mips.in index 850fe113..8cc68dc1 100644 --- a/config/arch/mips.in +++ b/config/arch/mips.in @@ -4,7 +4,7 @@ ## select ARCH_SUPPORTS_64 ## select ARCH_DEFAULT_32 ## select ARCH_USE_MMU -## select ARCH_SUPPORTS_BOTH_ENDIAN +## select ARCH_SUPPORTS_EITHER_ENDIAN ## select ARCH_DEFAULT_BE ## select ARCH_SUPPORTS_WITH_ARCH ## select ARCH_SUPPORTS_WITH_TUNE diff --git a/config/arch/powerpc.in b/config/arch/powerpc.in index 276438f4..ae10e2db 100644 --- a/config/arch/powerpc.in +++ b/config/arch/powerpc.in @@ -3,7 +3,7 @@ ## select ARCH_SUPPORTS_32 ## select ARCH_SUPPORTS_64 ## select ARCH_DEFAULT_32 -## select ARCH_SUPPORTS_BOTH_ENDIAN +## select ARCH_SUPPORTS_EITHER_ENDIAN ## select ARCH_DEFAULT_BE ## select ARCH_USE_MMU ## select ARCH_SUPPORTS_WITH_ABI diff --git a/config/arch/sh.in b/config/arch/sh.in index be525b42..bda660cb 100644 --- a/config/arch/sh.in +++ b/config/arch/sh.in @@ -3,9 +3,11 @@ ## select ARCH_SUPPORTS_32 ## select ARCH_DEFAULT_32 ## select ARCH_USE_MMU -## select ARCH_SUPPORTS_BOTH_ENDIAN -## select ARCH_DEFAULT_LE +## select ARCH_SUPPORTS_EITHER_ENDIAN +## select ARCH_DEFAULT_LE_BE ## select ARCH_REQUIRES_MULTILIB +## select ARCH_SUPPORTS_WITH_ENDIAN +## select ARCH_SUPPORTS_WITH_CPU ## ## help The Super-H architecture, as defined by: ## help http://www.renesas.com/fmwk.jsp?cnt=superh_family_landing.jsp&fp=/products/mpumcu/superh_family/ @@ -14,10 +16,41 @@ choice bool prompt "Variant" +# GCC supports both endiannesses even if a specific CPU is selected (so long +# as that CPU can be both BE/LE), but the binutils (or specifically, ld) +# configures for both endiannesses only if sh-*-linux target is selected. +config ARCH_SH_SH + bool + prompt "unspecified" + select ARCH_SUPPORTS_BOTH_ENDIAN + help + If left unspecified, GCC will determine the set of multilibs to compile automatically + based on selected endianness, FPU mode and OS. + +config ARCH_SH_SH1 + bool + prompt "sh1" + +config ARCH_SH_SH2 + bool + prompt "sh2" + +config ARCH_SH_SH2E + bool + prompt "sh2e" + +config ARCH_SH_SH2A + bool + prompt "sh2a" + config ARCH_SH_SH3 bool prompt "sh3" +config ARCH_SH_SH3E + bool + prompt "sh3e" + config ARCH_SH_SH4 bool prompt "sh4" @@ -30,6 +63,12 @@ endchoice config ARCH_SH_VARIANT string + default "sh" if ARCH_SH_SH + default "sh1" if ARCH_SH_SH1 + default "sh2" if ARCH_SH_SH2 + default "sh2e" if ARCH_SH_SH2E + default "sh2a" if ARCH_SH_SH2A default "sh3" if ARCH_SH_SH3 + default "sh3e" if ARCH_SH_SH3E default "sh4" if ARCH_SH_SH4 default "sh4a" if ARCH_SH_SH4A diff --git a/config/arch/xtensa.in b/config/arch/xtensa.in index bf4fcb67..a376523a 100644 --- a/config/arch/xtensa.in +++ b/config/arch/xtensa.in @@ -1,7 +1,7 @@ # xtensa specific configuration file ## select ARCH_SUPPORTS_32 -## select ARCH_SUPPORTS_BOTH_ENDIAN +## select ARCH_SUPPORTS_EITHER_ENDIAN ## select ARCH_DEFAULT_LE ## select ARCH_SUPPORTS_BOTH_MMU ## select ARCH_DEFAULT_HAS_MMU diff --git a/config/target.in b/config/target.in index 738f06b1..d3b5f083 100644 --- a/config/target.in +++ b/config/target.in @@ -93,8 +93,16 @@ config ARCH_USE_MMU have one (eg. ARM Cortex-A8). #-------------------------------------- +config ARCH_SUPPORTS_EITHER_ENDIAN + bool + help + Architecture allows to select endianness at the time the toolchain is built. + config ARCH_SUPPORTS_BOTH_ENDIAN bool + select ARCH_SUPPORTS_EITHER_ENDIAN + help + Toolchain supports both big/little endian. config ARCH_DEFAULT_BE bool @@ -102,12 +110,22 @@ config ARCH_DEFAULT_BE config ARCH_DEFAULT_LE bool +config ARCH_DEFAULT_BE_LE + bool + depends on ARCH_SUPPORTS_BOTH_ENDIAN + +config ARCH_DEFAULT_LE_BE + bool + depends on ARCH_SUPPORTS_BOTH_ENDIAN + choice bool prompt "Endianness:" depends on ARCH_SUPPORTS_BOTH_ENDIAN default ARCH_BE if ARCH_DEFAULT_BE default ARCH_LE if ARCH_DEFAULT_LE + default ARCH_BE_LE if ARCH_DEFAULT_BE_LE + default ARCH_LE_BE if ARCH_DEFAULT_LE_BE config ARCH_BE bool @@ -117,13 +135,23 @@ config ARCH_LE bool prompt "Little endian" +config ARCH_BE_LE + bool + prompt "Both, default big endian" + +config ARCH_LE_BE + bool + prompt "Both, default little endian" + endchoice config ARCH_ENDIAN string - depends on ARCH_SUPPORTS_BOTH_ENDIAN - default "big" if ARCH_BE - default "little" if ARCH_LE + depends on ARCH_SUPPORTS_EITHER_ENDIAN + default "big" if ARCH_BE + default "little" if ARCH_LE + default "big,little" if ARCH_BE_LE + default "little,big" if ARCH_LE_BE #-------------------------------------- config ARCH_SUPPORTS_8 @@ -208,6 +236,9 @@ config ARCH_SUPPORTS_WITH_FLOAT config ARCH_SUPPORTS_WITH_FPU bool +config ARCH_SUPPORTS_WITH_ENDIAN + bool + config ARCH_SUPPORTS_SOFTFP bool @@ -396,7 +427,6 @@ config TARGET_LDFLAGS 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 |