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>
This commit is contained in:
Yann E. MORIN" 2011-06-27 18:04:50 +02:00
parent 71d5c495e9
commit d2d948a4ad
3 changed files with 78 additions and 0 deletions

View File

@ -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

34
config/cc/gcc.in.mips Normal file
View File

@ -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.

View File

@ -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