OSDN Git Service

Initial x32 support.
[pf3gnuchains/gcc-fork.git] / gcc / config.gcc
index b5a5638..f8d7274 100644 (file)
@@ -96,6 +96,9 @@
 #  out_file            The name of the machine description C support
 #                      file, if different from "$cpu_type/$cpu_type.c".
 #
+#  common_out_file     The name of the source file for code shared between
+#                      the compiler proper and the driver.
+#
 #  md_file             The name of the machine-description file, if
 #                      different from "$cpu_type/$cpu_type.md".
 #
 #
 #  target_has_targetcm Set to yes or no depending on whether the target
 #                      has its own definition of targetcm.
+#
+#  target_has_targetm_common   Set to yes or no depending on whether the
+#                      target has its own definition of targetm_common.
 
 out_file=
+common_out_file=
 tmake_file=
 extra_headers=
 user_headers_inc_next_pre=
@@ -210,6 +217,7 @@ c_target_objs=
 cxx_target_objs=
 fortran_target_objs=
 target_has_targetcm=no
+target_has_targetm_common=yes
 tm_defines=
 xm_defines=
 libgcc_tm_file=
@@ -237,7 +245,9 @@ md_file=
 
 # Obsolete configurations.
 case ${target} in
-   i[34567]86-*-interix3*              \
+   alpha*-dec-osf5.1*                  \
+ | i[34567]86-*-interix3*              \
+ | mips-sgi-irix6.5                    \
  | mips*-*-openbsd*                    \
  | score-*                             \
  | *-*-solaris2.8*                     \
@@ -290,6 +300,7 @@ case ${target} in
 m32c*-*-*)
         cpu_type=m32c
        tmake_file=m32c/t-m32c
+       target_has_targetm_common=no
         ;;
 alpha*-*-*)
        cpu_type=alpha
@@ -310,6 +321,7 @@ avr-*-*)
        cpu_type=avr
        c_target_objs="avr-c.o"
        cxx_target_objs="avr-c.o"
+       extra_options="${extra_options} avr/avr-tables.opt"
        ;;
 bfin*-*)
        cpu_type=bfin
@@ -321,6 +333,7 @@ frv*)       cpu_type=frv
        extra_options="${extra_options} g.opt"
        ;;
 moxie*)        cpu_type=moxie
+       target_has_targetm_common=no
        ;;
 fido-*-*)
        cpu_type=m68k
@@ -421,6 +434,9 @@ sh[123456789lbe]*-*-* | sh-*-*)
        cpu_type=sh
        need_64bit_hwint=yes
        ;;
+v850*-*-*)
+       cpu_type=v850
+       ;;
 xtensa*-*-*)
        extra_options="${extra_options} fused-madd.opt"
        ;;
@@ -674,12 +690,43 @@ case ${target} in
   tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC SINGLE_LIBC"
   ;;
 *-*-solaris2*)
+  # i?86-*-solaris2* needs to insert headers between cpu default and
+  # Solaris 2 specific ones.
+  sol2_tm_file="dbxelf.h elfos.h ${cpu_type}/sysv4.h sol2.h ${cpu_type}/sol2.h"
+  case ${target} in
+    *-*-solaris2.1[0-9]*)
+      sol2_tm_file="${sol2_tm_file} sol2-10.h"
+      use_gcc_stdint=wrap
+      ;;
+    *)
+      use_gcc_stdint=provide
+      ;;
+  esac
+  if test x$gnu_ld = xyes; then
+    tm_file="usegld.h ${tm_file}"
+  fi
+  if test x$gas = xyes; then
+    tm_file="usegas.h ${tm_file}"
+  fi
+  tm_p_file="${tm_p_file} sol2-protos.h"
+  tmake_file="${tmake_file} t-sol2 t-slibgcc-dummy"
+  c_target_objs="${c_target_objs} sol2-c.o"
+  cxx_target_objs="${cxx_target_objs} sol2-c.o"
+  extra_objs="sol2.o"
   extra_options="${extra_options} sol2.opt"
+  case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
+    "":yes:* | yes:yes:* )
+      thread_file=posix
+      ;;
+  esac
   ;;
 *-*-*vms*)
   extra_options="${extra_options} vms/vms.opt"
   xmake_file=vms/x-vms
   tmake_file="vms/t-vms"
+  extra_objs="vms.o"
+  target_gtfiles="$target_gtfiles \$(srcdir)/config/vms/vms.c"
+  tm_p_file="${tm_p_file} vms/vms-protos.h"
   if test x$gnu_ld != xyes; then
     # Build wrappers for native case.
     extra_programs="ld\$(exeext) ar\$(exeext)"
@@ -822,6 +869,7 @@ arm*-*-linux*)                      # ARM GNU/Linux with ELF
            tmake_file="$tmake_file arm/t-linux"
            ;;
        esac
+       with_tls=${with_tls:-gnu}
        tm_file="$tm_file arm/aout.h arm/arm.h"
        tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
        ;;
@@ -891,13 +939,13 @@ arm*-wince-pe*)
        extra_objs="pe.o"
        ;;
 avr-*-rtems*)
-       tm_file="avr/avr.h dbxelf.h avr/rtems.h rtems.h newlib-stdint.h"
+       tm_file="elfos.h avr/elf.h avr/avr.h dbxelf.h avr/rtems.h rtems.h newlib-stdint.h"
        tmake_file="avr/t-avr t-rtems avr/t-rtems"
        extra_gcc_objs="driver-avr.o avr-devices.o"
        extra_objs="avr-devices.o"
        ;;
 avr-*-*)
-       tm_file="avr/avr.h dbxelf.h newlib-stdint.h"
+       tm_file="elfos.h avr/elf.h avr/avr.h dbxelf.h newlib-stdint.h"
        use_gcc_stdint=wrap
        extra_gcc_objs="driver-avr.o avr-devices.o"
        extra_objs="avr-devices.o"
@@ -1233,6 +1281,22 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i
                        tm_file="${tm_file} i386/x86-64.h i386/gnu-user64.h i386/linux64.h"
                        tm_defines="${tm_defines} TARGET_BI_ARCH=1"
                        tmake_file="${tmake_file} i386/t-linux64"
+                       x86_multilibs="${with_multilib_list}"
+                       if test "$x86_multilibs" = "default"; then
+                               x86_multilibs="m64,m32"
+                       fi
+                       x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
+                       for x86_multilib in ${x86_multilibs}; do
+                               case ${x86_multilib} in
+                               m32 | m64 | mx32)
+                                       TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
+                                       ;;
+                               *)
+                                       echo "--with-multilib-list=${x86_with_multilib} not supported."
+                                       exit 1
+                               esac
+                       done
+                       TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
                        need_64bit_hwint=yes
                        need_64bit_isa=yes
                        case X"${with_cpu}" in
@@ -1267,10 +1331,26 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
        x86_64-*-linux*)
          tm_file="${tm_file} linux.h i386/linux64.h"
          default_gnu_indirect_function=glibc-2011 ;;
-       x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;;
+       x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu64.h" ;;
        x86_64-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h" ;;
        esac
        tmake_file="${tmake_file} i386/t-linux64 i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules"
+       x86_multilibs="${with_multilib_list}"
+       if test "$x86_multilibs" = "default"; then
+               x86_multilibs="m64,m32"
+       fi
+       x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
+       for x86_multilib in ${x86_multilibs}; do
+               case ${x86_multilib} in
+               m32 | m64 | mx32)
+                       TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
+                       ;;
+               *)
+                       echo "--with-multilib-list=${x86_with_multilib} not supported."
+                       exit 1
+               esac
+       done
+       TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
        ;;
 i[34567]86-pc-msdosdjgpp*)
        xm_file=i386/xm-djgpp.h
@@ -1322,8 +1402,8 @@ i[34567]86-*-rtems*)
        tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/i386elf.h i386/rtemself.h rtems.h newlib-stdint.h"
        tmake_file="${tmake_file} i386/t-rtems t-rtems"
        ;;
-i[34567]86-*-solaris2*)
-       tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/sysv4.h sol2.h"
+i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*)
+       tm_file="${tm_file} i386/unix.h i386/att.h ${sol2_tm_file}"
        # Set default arch_32 to pentium4, tune_32 to generic like the other
        # i386 targets, although config.guess defaults to i386-pc-solaris2*.
        case ${target} in
@@ -1339,36 +1419,11 @@ i[34567]86-*-solaris2*)
        with_tune_32=${with_tune_32:-generic}
        case ${target} in
        *-*-solaris2.1[0-9]*)
-               tm_file="${tm_file} sol2-10.h"
-               ;;
-       esac
-       tm_file="${tm_file} i386/sol2.h"
-       if test x$gnu_ld = xyes; then
-               tm_file="${tm_file} sol2-gld.h"
-       fi
-       if test x$gas = xyes; then
-               tm_file="${tm_file} i386/sol2-gas.h"
-       fi
-       tmake_file="${tmake_file} t-sol2 t-slibgcc-dummy"
-       c_target_objs="${c_target_objs} sol2-c.o"
-       cxx_target_objs="${cxx_target_objs} sol2-c.o"
-       extra_objs="sol2.o"
-       tm_p_file="${tm_p_file} sol2-protos.h"
-       if test x$gnu_ld = xyes; then
-               tm_defines="${tm_defines} TARGET_GNU_LD=1"
-       fi
-       if test x$gas = xyes; then
-               tm_file="usegas.h ${tm_file}"
-       fi
-       tm_file="$tm_file tm-dwarf2.h"
-       case ${target} in
-       *-*-solaris2.1[0-9]*)
-               tm_file="${tm_file} i386/x86-64.h i386/sol2-10.h"
+               tm_file="${tm_file} i386/x86-64.h i386/sol2-bi.h sol2-bi.h"
                tm_defines="${tm_defines} TARGET_BI_ARCH=1"
-               tmake_file="$tmake_file i386/t-sol2-10"
+               tmake_file="$tmake_file i386/t-sol2-64"
                need_64bit_hwint=yes
                need_64bit_isa=yes
-               use_gcc_stdint=wrap
                case X"${with_cpu}" in
                Xgeneric|Xatom|Xcore2|Xcorei7|Xcorei7-avx|Xnocona|Xx86-64|Xbdver1|Xbtver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
                        ;;
@@ -1384,14 +1439,6 @@ i[34567]86-*-solaris2*)
                        ;;
                esac
                ;;
-       *)
-               use_gcc_stdint=provide
-               ;;
-       esac
-       case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
-         "":yes:* | yes:yes:* )
-               thread_file=posix
-               ;;
        esac
        ;;
 i[4567]86-wrs-vxworks|i[4567]86-wrs-vxworksae)
@@ -2233,7 +2280,6 @@ score-*-elf)
         tm_file="dbxelf.h elfos.h score/elf.h score/score.h newlib-stdint.h"
        extra_parts="crti.o crtn.o crtbegin.o crtend.o"
         tmake_file="${tmake_file} score/t-score-elf score/t-score-softfp soft-fp/t-softfp"
-        extra_objs="score7.o"
         ;;
 sh-*-elf* | sh[12346l]*-*-elf* | \
   sh-*-linux* | sh[2346lbe]*-*-linux* | \
@@ -2467,46 +2513,16 @@ sparc-*-netbsdelf*)
        extra_options="${extra_options} sparc/long-double-switch.opt"
        ;;
 sparc*-*-solaris2*)
-       tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h sol2.h"
-       case ${target} in
-           *-*-solaris2.1[0-9]*)
-               tm_file="${tm_file} sol2-10.h"
-               use_gcc_stdint=wrap
-               ;;
-           *)
-               use_gcc_stdint=provide
-               ;;
-       esac
-       tm_file="${tm_file} sparc/sol2.h"
+       tm_file="sparc/biarch64.h ${tm_file} ${sol2_tm_file} sol2-bi.h"
        case ${target} in
            sparc64-*-* | sparcv9-*-*)
-               tm_file="${tm_file} sparc/sol2-64.h"
+               tm_file="sparc/sol2-64.h ${tm_file}"
                ;;
            *)
                test x$with_cpu != x || with_cpu=v9
                ;;
        esac
-       tm_file="${tm_file} sparc/sol2-bi.h"
-       if test x$gas = xyes; then
-               tm_file="${tm_file} sparc/sol2-gas.h sparc/sol2-gas-bi.h"
-       fi
-       if test x$gnu_ld = xyes; then
-               tm_file="${tm_file} sol2-gld.h sparc/sol2-gld-bi.h"
-       fi
-       tm_file="${tm_file} tm-dwarf2.h"
-       tmake_file="t-sol2 t-slibgcc-dummy sparc/t-sol2-64"
-       if test x$gas = xyes; then
-               tm_file="usegas.h ${tm_file}"
-       fi
-       c_target_objs="sol2-c.o"
-       cxx_target_objs="sol2-c.o"
-       extra_objs="sol2.o"
-       tm_p_file="${tm_p_file} sol2-protos.h"
-       case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
-         "":yes:* | yes:yes:* )
-               thread_file=posix
-               ;;
-       esac
+       tmake_file="${tmake_file} sparc/t-sol2-64"
        ;;
 sparc-wrs-vxworks)
        tm_file="${tm_file} elfos.h sparc/sysv4.h vx-common.h vxworks.h sparc/vxworks.h"
@@ -2579,12 +2595,6 @@ v850*-*-*)
                ;;
        esac
        tm_file="dbxelf.h elfos.h newlib-stdint.h v850/v850.h"
-       tm_p_file=v850/v850-protos.h
-       tmake_file=v850/t-v850
-       md_file=v850/v850.md
-       extra_modes=v850/v850-modes.def
-       out_file=v850/v850.c
-       extra_options="v850/v850.opt"
        if test x$stabs = xyes
        then
                tm_file="${tm_file} dbx.h"
@@ -2667,6 +2677,14 @@ if [ "$target_has_targetcm" = "no" ]; then
   cxx_target_objs="$cxx_target_objs default-c.o"
 fi
 
+if [ "$common_out_file" = "" ]; then
+  if [ "$target_has_targetm_common" = "yes" ]; then
+    common_out_file="$cpu_type/$cpu_type-common.c"
+  else
+    common_out_file="default-common.c"
+  fi
+fi
+
 # Support for --with-cpu and related options (and a few unrelated options,
 # too).
 case ${with_cpu} in
@@ -3059,7 +3077,7 @@ case "${target}" in
                ;;
 
        arm*-*-*)
-               supported_defaults="arch cpu float tune fpu abi mode"
+               supported_defaults="arch cpu float tune fpu abi mode tls"
                for which in cpu tune; do
                        # See if it matches any of the entries in arm-cores.def
                        eval "val=\$with_$which"
@@ -3142,6 +3160,17 @@ case "${target}" in
                        ;;
                esac
 
+               case "$with_tls" in
+               "" \
+               | gnu | gnu2)
+                       # OK
+                       ;;
+               *)
+                       echo "Unknown TLS method used in --with-tls=$with_tls" 1>&2
+                       exit 1
+                       ;;
+               esac
+
                if test "x$with_arch" != x && test "x$with_cpu" != x; then
                        echo "Warning: --with-arch overrides --with-cpu=$with_cpu" 1>&2
                fi
@@ -3533,7 +3562,7 @@ case ${target} in
          i[34567]86-*-gnu*)
                tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp i386/t-linux"
                ;;
-       i[34567]86-*-solaris2*)
+       i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*)
                tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp"
                ;;
        i[34567]86-*-cygwin* | i[34567]86-*-mingw* | x86_64-*-mingw*)
@@ -3621,7 +3650,7 @@ case ${target} in
 esac
 
 t=
-all_defaults="abi cpu cpu_32 cpu_64 arch arch_32 arch_64 tune tune_32 tune_64 schedule float mode fpu divide llsc mips-plt synci"
+all_defaults="abi cpu cpu_32 cpu_64 arch arch_32 arch_64 tune tune_32 tune_64 schedule float mode fpu divide llsc mips-plt synci tls"
 for option in $all_defaults
 do
        eval "val=\$with_"`echo $option | sed s/-/_/g`