diff options
Diffstat (limited to 'gcc/config.gcc')
-rw-r--r-- | gcc/config.gcc | 103 |
1 files changed, 101 insertions, 2 deletions
diff --git a/gcc/config.gcc b/gcc/config.gcc index 605efc0e090..022701df53f 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -324,6 +324,9 @@ alpha*-*-*) am33_2.0-*-linux*) cpu_type=mn10300 ;; +arc*-*-*) + cpu_type=arc + ;; arm*-*-*) cpu_type=arm extra_headers="mmintrin.h arm_neon.h" @@ -462,6 +465,7 @@ sh[123456789lbe]*-*-* | sh-*-*) cpu_type=sh need_64bit_hwint=yes extra_options="${extra_options} fused-madd.opt" + extra_objs="${extra_objs} sh_treg_combine.o" ;; v850*-*-*) cpu_type=v850 @@ -838,7 +842,7 @@ case ${target} in *) echo 'Unknown thread configuration for VxWorks'; exit 1 ;; esac ;; -*-*-elf) +*-*-elf|arc*-*-elf*) # Assume that newlib is being used and so __cxa_atexit is provided. default_use_cxa_atexit=yes use_gcc_stdint=wrap @@ -925,6 +929,54 @@ alpha*-dec-*vms*) tm_file="${tm_file} vms/vms.h alpha/vms.h" tmake_file="${tmake_file} alpha/t-vms" ;; +arc*-*-elf*) + extra_headers="arc-simd.h" + tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}" + tmake_file="arc/t-arc-newlib arc/t-arc" + case x"${with_cpu}" in + xarc600|xarc601|xarc700) + target_cpu_default="TARGET_CPU_$with_cpu" + ;; + esac + if test x${with_endian} = x; then + case ${target} in + arc*be-*-* | arc*eb-*-*) with_endian=big ;; + *) with_endian=little ;; + esac + fi + case ${with_endian} in + big|little) ;; + *) echo "with_endian=${with_endian} not supported."; exit 1 ;; + esac + case ${with_endian} in + big*) tm_defines="DRIVER_ENDIAN_SELF_SPECS=\\\"%{!EL:%{!mlittle-endian:-mbig-endian}}\\\" ${tm_defines}" + esac + ;; +arc*-*-linux-uclibc*) + extra_headers="arc-simd.h" + tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file}" + tmake_file="${tmake_file} arc/t-arc-uClibc arc/t-arc" + tm_defines="${tm_defines} TARGET_SDATA_DEFAULT=0" + tm_defines="${tm_defines} TARGET_MMEDIUM_CALLS_DEFAULT=1" + case x"${with_cpu}" in + xarc600|xarc601|xarc700) + target_cpu_default="TARGET_CPU_$with_cpu" + ;; + esac + if test x${with_endian} = x; then + case ${target} in + arc*be-*-* | arc*eb-*-*) with_endian=big ;; + *) with_endian=little ;; + esac + fi + case ${with_endian} in + big|little) ;; + *) echo "with_endian=${with_endian} not supported."; exit 1 ;; + esac + case ${with_endian} in + big*) tm_defines="DRIVER_ENDIAN_SELF_SPECS=\\\"%{!EL:%{!mlittle-endian:-mbig-endian}}\\\" ${tm_defines}" + esac + ;; arm-wrs-vxworks) tm_file="elfos.h arm/elf.h arm/aout.h ${tm_file} vx-common.h vxworks.h arm/vxworks.h" extra_options="${extra_options} arm/vxworks.opt" @@ -1113,7 +1165,6 @@ hppa*64*-*-linux*) tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h gnu-user.h linux.h \ glibc-stdint.h pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h \ pa/pa64-linux.h" - tmake_file="${tmake_file} pa/t-linux" gas=yes gnu_ld=yes need_64bit_hwint=yes ;; @@ -3338,6 +3389,17 @@ case "${target}" in done ;; + arc*-*-*) # was: arc*-*-linux-uclibc) + supported_defaults="cpu" + case $with_cpu in + arc600|arc601|arc700) + ;; + *) echo "Unknown cpu type" + exit 1 + ;; + esac + ;; + arm*-*-*) supported_defaults="arch cpu float tune fpu abi mode tls" for which in cpu tune; do @@ -3437,6 +3499,43 @@ case "${target}" in if test "x$with_arch" != x && test "x$with_cpu" != x; then echo "Warning: --with-arch overrides --with-cpu=$with_cpu" 1>&2 fi + + # Add extra multilibs + if test "x$with_multilib_list" != x; then + arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'` + for arm_multilib in ${arm_multilibs}; do + case ${arm_multilib} in + aprofile) + # Note that arm/t-aprofile is a + # stand-alone make file fragment to be + # used only with itself. We do not + # specifically use the + # TM_MULTILIB_OPTION framework because + # this shorthand is more + # pragmatic. Additionally it is only + # designed to work without any + # with-cpu, with-arch with-mode + # with-fpu or with-float options. + if test "x$with_arch" != x \ + || test "x$with_cpu" != x \ + || test "x$with_float" != x \ + || test "x$with_fpu" != x \ + || test "x$with_mode" != x ; then + echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=aprofile" 1>&2 + exit 1 + fi + tmake_file="${tmake_file} arm/t-aprofile" + break + ;; + default) + ;; + *) + echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2 + exit 1 + ;; + esac + done + fi ;; fr*-*-*linux*) |