From d2d948a4ad3ba384c686be53e9afa8b5a2a0804f Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Mon, 27 Jun 2011 18:04:50 +0200 Subject: 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" 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 -- cgit v0.10.2-6-g49f6