summaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
authorAlexey Neyman <stilor@att.net>2017-08-29 22:36:52 (GMT)
committerAlexey Neyman <stilor@att.net>2017-09-03 19:11:23 (GMT)
commit413f5f610012ea24db9910084ea3b40db808147b (patch)
tree75e9c879151cfa7cd476fc43b1182ca63655813f /config
parent1da3cc59df185144cb01fdd32a0dc1ca417d9106 (diff)
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.in2
-rw-r--r--config/arch/microblaze.in4
-rw-r--r--config/arch/mips.in2
-rw-r--r--config/arch/powerpc.in2
-rw-r--r--config/arch/sh.in43
-rw-r--r--config/arch/xtensa.in2
-rw-r--r--config/target.in38
7 files changed, 81 insertions, 12 deletions
diff --git a/config/arch/arm.in b/config/arch/arm.in
index 269310d..72c329f 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 d236007..8c73b00 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 850fe11..8cc68dc 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 276438f..ae10e2d 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 be525b4..bda660c 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 bf4fcb6..a376523 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 738f06b..d3b5f08 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