summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYann E. MORIN" <yann.morin.1998@anciens.enib.fr>2011-06-27 16:04:50 (GMT)
committerYann E. MORIN" <yann.morin.1998@anciens.enib.fr>2011-06-27 16:04:50 (GMT)
commitd2d948a4ad3ba384c686be53e9afa8b5a2a0804f (patch)
tree88290d4e4e5127975aecef28e11bd7900c2beb7d
parent71d5c495e9885ce175378cc3138f58361532e533 (diff)
cc/gcc: add MIPS spercific configure options
Add the following MIPS specific options when configuring gcc: --with(out)-llsc --with(out)-synci --with(out)-mips-plt --with-divide=type Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
-rw-r--r--config/cc/gcc.in.212
-rw-r--r--config/cc/gcc.in.mips34
-rw-r--r--scripts/build/cc/gcc.sh32
3 files changed, 78 insertions, 0 deletions
diff --git a/config/cc/gcc.in.2 b/config/cc/gcc.in.2
index 6fbc39a..6071135 100644
--- a/config/cc/gcc.in.2
+++ b/config/cc/gcc.in.2
@@ -249,3 +249,15 @@ config CC_GCC_LNK_HASH_STYLE
default "sysv" if CC_GCC_LNK_HASH_STYLE_SYSV
default "gnu" if CC_GCC_LNK_HASH_STYLE_GNU
default "both" if CC_GCC_LNK_HASH_STYLE_BOTH
+
+#-----------------------------------------------------------------------------
+
+config CC_GCC_HAS_ARCH_OPTIONS
+ bool
+
+comment "archictecture-specific options"
+ depends on CC_GCC_HAS_ARCH_OPTIONS
+
+if ARCH_mips
+source "config/cc/gcc.in.mips"
+endif # ARCH_mips
diff --git a/config/cc/gcc.in.mips b/config/cc/gcc.in.mips
new file mode 100644
index 0000000..71fb69a
--- /dev/null
+++ b/config/cc/gcc.in.mips
@@ -0,0 +1,34 @@
+# MIPS specific options for gcc
+
+config CC_GCC_HAS_ARCH_OPTIONS
+ default y
+
+config CC_GCC_mips_llsc
+ tristate
+ prompt "Use llsc"
+ default m
+ help
+ This configures how gcc will emit load-link, store-conditional and
+ sync opcodes. Normally, you'd set this to 'M', and configure will do
+ the correct thing (ie. enable llsc for Linux-based targets, disable
+ for others). If you know better, you can force either using llsc or
+ not using it (resp. 'Y' or 'N').
+
+config CC_GCC_mips_synci
+ tristate
+ prompt "Use synci"
+ default m
+ help
+ This configures how gcc will emit the synci opcode. Normally, you'd
+ set this to 'M', and configure will do the correct thing (ie. disable).
+ If you know better, you can force using synci (say 'Y'), or not using
+ it (say 'N').
+
+config CC_GCC_mips_plt
+ bool
+ prompt "Use copy relocations & PLTs"
+ help
+ This configures gcc to use copy relocations & PLTs. These are
+ extensions to the traditional SVR4-based MIPS ABIs and require
+ support from GNU binutils and the runtime C library.
+ Say 'N' to keep the default and not use them, say 'Y' to use them.
diff --git a/scripts/build/cc/gcc.sh b/scripts/build/cc/gcc.sh
index 8cc62ac..ffd1c67 100644
--- a/scripts/build/cc/gcc.sh
+++ b/scripts/build/cc/gcc.sh
@@ -267,6 +267,22 @@ do_cc_core() {
*) extra_config+=( "--with-linker-hash-style=${CT_CC_GCC_LNK_HASH_STYLE}" );;
esac
+ case "${CT_CC_GCC_mips_llsc}" in
+ y) extra_config+=( --with-llsc );;
+ m) ;;
+ *) extra_config+=( --without-llsc );;
+ esac
+
+ case "${CT_CC_GCC_mips_synci}" in
+ y) extra_config+=( --with-synci );;
+ m) ;;
+ *) extra_config+=( --without-synci );;
+ esac
+
+ if [ "${CT_CC_GCC_mips_plt}" ]; then
+ extra_config+=( --with-mips-plt )
+ fi
+
CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'"
# Use --with-local-prefix so older gccs don't look in /usr/local (http://gcc.gnu.org/PR10532)
@@ -544,6 +560,22 @@ do_cc() {
*) extra_config+=( "--with-linker-hash-style=${CT_CC_GCC_LNK_HASH_STYLE}" );;
esac
+ case "${CT_CC_GCC_mips_llsc}" in
+ y) extra_config+=( --with-llsc );;
+ m) ;;
+ *) extra_config+=( --without-llsc );;
+ esac
+
+ case "${CT_CC_GCC_mips_synci}" in
+ y) extra_config+=( --with-synci );;
+ m) ;;
+ *) extra_config+=( --without-synci );;
+ esac
+
+ if [ "${CT_CC_GCC_mips_plt}" ]; then
+ extra_config+=( --with-mips-plt )
+ fi
+
if [ "${CT_CC_GCC_ENABLE_PLUGINS}" = "y" ]; then
extra_config+=( --enable-plugin )
fi