OSDN Git Service

PR c++/15815
[pf3gnuchains/gcc-fork.git] / gcc / config.gcc
index 8bf7d0e..2d70d44 100644 (file)
@@ -295,7 +295,7 @@ s390*-*-*)
        need_64bit_hwint=yes
        ;;
 # Note the 'l'; we need to be able to match e.g. "shle" or "shl".
-sh[123456789l]*-*-*)
+sh[123456789lbe]*-*-*)
        cpu_type=sh
        need_64bit_hwint=yes
        ;;
@@ -412,21 +412,10 @@ case ${target} in
   esac
   fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h"
   ;;
-*-*-kfreebsd*-gnu)
-  # Must come before *-*-gnu*
-  xm_defines=POSIX # needed for cross-compiling from FreeBSD?
-  extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
-  # GNU tools are the only tools.
-  gas=yes
-  gnu_ld=yes
-  case ${enable_threads} in
-    "" | yes | posix) thread_file='posix' ;;
-  esac
-  ;;
 *-*-linux*libc1* | *-*-linux*aout*)
   # Avoid the generic linux case.
   ;;
-*-*-linux* | frv-*-*linux*)
+*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
   # Must come before *-*-gnu* (because of *-*-linux-gnu* systems).
   extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
   gas=yes
@@ -926,10 +915,14 @@ i[34567]86-*-coff*)
        tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/i386-coff.h"
        use_fixproto=yes
        ;;
-i[34567]86-*-linux*)   # Intel 80386's running GNU/Linux
+i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu)
+                       # Intel 80386's running GNU/*
                        # with ELF format using glibc 2
-                       # aka GNU/Linux C library 6
        tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h"
+       case ${target} in
+       i[34567]86-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h i386/knetbsd-gnu.h" ;;
+       i[34567]86-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;;
+       esac
        tmake_file="${tmake_file} i386/t-crtstuff"
        ;;
 x86_64-*-linux*)
@@ -937,12 +930,6 @@ x86_64-*-linux*)
                 i386/x86-64.h i386/linux64.h"
        tmake_file="${tmake_file} i386/t-linux64"
        ;;
-i[34567]86-*-kfreebsd*-gnu) # must be before i[34567]86-*-gnu*
-       tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h kfreebsdgnu.h i386/kfreebsdgnu.h"
-       tmake_file="t-slibgcc-elf-ver t-kfreebsd-gnu i386/t-crtstuff"
-       float_format=i386
-       use_fixproto=no
-       ;;
 i[34567]86-*-gnu*)
        ;;
 i[34567]86-pc-msdosdjgpp*)
@@ -1683,34 +1670,123 @@ s390x-ibm-tpf*)
        out_file=s390/s390.c
        tmake_file="t-slibgcc-elf-ver s390/t-crtstuff s390/t-tpf"
        ;;
-sh-*-elf* | sh[2346l]*-*-elf* | sh*-*-kaos*)
-       tmake_file="sh/t-sh sh/t-elf"
+sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \
+  sh-*-linux* | sh[346lbe]*-*-linux* | \
+  sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
+   sh64-*-netbsd* | sh64l*-*-netbsd*)
+       tmake_file="${tmake_file} sh/t-sh sh/t-elf"
+       if test x${with_endian} = x; then
+               case ${target} in
+               sh[1234]*be-*-* | sh[1234]*eb-*-*) with_endian=big ;;
+               shbe-*-* | sheb-*-*)               with_endian=big,little ;;
+               sh[1234]l* | sh[34]*-*-linux*)     with_endian=little ;;
+               shl* | sh64l* | sh*-*-linux* | \
+                 sh5l* | sh-superh-elf)           with_endian=little,big ;;
+               sh[1234]*-*-*)                     with_endian=big ;;
+               *)                                 with_endian=big,little ;;
+               esac
+       fi
+       case ${with_endian} in
+       big|little)     tmake_file="${tmake_file} sh/t-1e" ;;
+       big,little|little,big) ;;
+       *)      echo "with_endian=${with_endian} not supported."; exit 1 ;;
+       esac
+       case ${with_endian} in
+       little*)        tm_file="sh/little.h ${tm_file}" ;;
+       esac
+       tm_file="${tm_file} dbxelf.h elfos.h"
        case ${target} in
-       shl* | sh[234]l* | sh64l*)
-               tm_file="sh/little.h ${tm_file}"
-               tmake_file="${tmake_file} sh/t-le"
-               ;;
+       sh*-*-netbsd*)  ;;
+       *)              tm_file="${tm_file} svr4.h" ;;
        esac
-       tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/elf.h sh/embed-elf.h"
+       tm_file="${tm_file} sh/elf.h"
        case ${target} in
+       sh*-*-linux*)   tmake_file="${tmake_file} sh/t-linux"
+                       tm_file="${tm_file} sh/linux.h" ;;
+       sh*-*-kaos*)    tm_file="${tm_file} sh/embed-elf.h kaos.h sh/kaos-sh.h"
+                       ;;
+       sh*-*-netbsd*)  tm_file="${tm_file} netbsd.h netbsd-elf.h sh/netbsd-elf.h" ;;
+       *)              tm_file="${tm_file} sh/embed-elf.h" ;;
+       esac
+       case ${target} in
+       sh5*-*-netbsd*)
+               # SHmedia, 32-bit ABI
+               tmake_file="${tmake_file} sh/t-sh64 sh/t-netbsd"
+               ;;
+       sh64*-netbsd*)
+               # SHmedia, 64-bit ABI
+               tmake_file="${tmake_file} sh/t-sh64 sh/t-netbsd sh/t-netbsd-sh5-64"
+               ;;
+       *-*-netbsd)
+                tmake_file="${tmake_file} sh/t-netbsd"
+               ;;
+       sh64*-*-linux*)
+               tmake_file="${tmake_file} sh/t-sh64 sh/t-linux64"
+               tm_file="${tm_file} sh/sh64.h"
+               extra_headers="shmedia.h ushmedia.h sshmedia.h"
+               ;;
        sh64*)
                tmake_file="${tmake_file} sh/t-sh64"
                tm_file="${tm_file} sh/sh64.h"
                extra_headers="shmedia.h ushmedia.h sshmedia.h"
                ;;
-       sh4_single*)  target_cpu_default="SELECT_SH4_SINGLE" ;;
-       sh4*)  target_cpu_default="SELECT_SH4" ;;
-       sh3e*) target_cpu_default="SELECT_SH3E" ;;
-       sh3*)  target_cpu_default="SELECT_SH3" ;;
-       sh2e*) target_cpu_default="SELECT_SH2E" ;;
-       sh2*)  target_cpu_default="SELECT_SH2" ;;
        esac
-       case ${target} in
-       sh[234]*) tmake_file="${tmake_file} sh/t-monolib" ;;
+       # sed el/eb endian suffixes away to avoid confusion with sh[23]e
+       case `echo ${target} | sed 's/e[lb]-/-/'` in
+       sh64*-*-netbsd*)        sh_cpu_target=sh5-64media ;;
+       sh64* | sh5*-*-netbsd*) sh_cpu_target=sh5-32media ;;
+       sh4_single_only*)       sh_cpu_target=sh4-single-only ;;
+       sh4_single*)            sh_cpu_target=sh4-single ;;
+       sh4_nofpu*)             sh_cpu_target=sh4-nofpu ;;
+       sh4* | sh-superh-*)     sh_cpu_target=sh4 ;;
+       sh3e*)                  sh_cpu_target=sh3e ;;
+       sh*-*-netbsd* | sh3*)   sh_cpu_target=sh3 ;;
+       sh2e*)                  sh_cpu_target=sh2e ;;
+       sh2*)                   sh_cpu_target=sh2 ;;
+       *)                      sh_cpu_target=sh1 ;;
        esac
-       case ${target} in
-       sh*-*-kaos*) tm_file="${tm_file} kaos.h sh/kaos-sh.h" ;;
+       sh_cpu_default="`echo $with_cpu|sed s/^m/sh/|tr A-Z_ a-z-`"
+       case $sh_cpu_default in
+       sh5-64media-nofpu | sh5-64media | \
+         sh5-32media-nofpu | sh5-32media | sh5-compact-nofpu | sh5-compact | \
+         sh4-single-only | sh4-single | sh4-nofpu | sh4 | \
+         sh3e | sh3 | sh2e | sh2 | sh1) ;;
+       "")     sh_cpu_default=${sh_cpu_target} ;;
+       *)      echo "with_cpu=$with_cpu not supported"; exit 1 ;;
        esac
+       sh_multilibs=${with_multilib_list}
+       if test x${sh_multilibs} = x ; then
+               case ${target} in
+               sh[1234]*)      sh_multilibs=${sh_cpu_target} ;;
+               sh64* | sh5*)   sh_multilibs=m5-32media,m5-32media-nofpu,m5-compact,m5-compact-nofpu,m5-64media,m5-64media-nofpu ;;
+               sh-superh-*)    sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
+               sh*-*-linux*)   sh_multilibs=m1,m3e,m4 ;;
+               sh*-*-netbsd*)  sh_multilibs=m3,m3e,m4 ;;
+               *) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only ;;
+               esac
+       fi
+       target_cpu_default=SELECT_`echo ${sh_cpu_default}|tr a-z- A-Z_`
+       tm_defines=${tm_defines}' SH_MULTILIB_CPU_DEFAULT=\"'`echo $sh_cpu_default|sed s/sh/m/`'\"'
+       sh_multilibs=`echo $sh_multilibs,$sh_cpu_default | sed -e 's/[  ,/][    ,]*/ /g' -e 's/ $//' -e s/^m/sh/ -e 's/ m/ sh/g' | tr A-Z_ a-z-`
+       for sh_multilib in ${sh_multilibs}; do
+               case ${sh_multilib} in
+               sh1 | sh2 | sh2e | sh3 | sh3e | \
+               sh4 | sh4-single | sh4-single-only | sh4-nofpu | \
+               sh5-64media | sh5-64media-nofpu | \
+               sh5-32media | sh5-32media-nofpu | \
+               sh5-compact | sh5-compact-nofpu)
+                       tmake_file="${tmake_file} sh/t-mlib-${sh_multilib}"
+                       tm_defines="$tm_defines SUPPORT_`echo $sh_multilib|tr a-z- A-Z_`"
+                       ;;
+               *)
+                       echo "with_multilib_list=${sh_multilib} not supported."
+                       exit 1
+                       ;;
+               esac
+       done
+       if test x${enable_incomplete_targets} == xyes ; then
+               tm_defines="$tm_defines SUPPORT_SH1 SUPPORT_SH2E SUPPORT_SH4 SUPPORT_SH4_SINGLE SUPPORT_SH5_32MEDIA SUPPORT_SH5_32MEDIA_NOFPU SUPPORT_SH5_64MEDIA SUPPORT_SH5_64MEDIA_NOFPU"
+       fi
        use_fixproto=yes
        ;;
 sh-*-rtemscoff*)
@@ -1721,69 +1797,6 @@ sh-*-rtems*)
        tmake_file="sh/t-sh sh/t-elf t-rtems"
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h"
        ;;
-sh-*-linux* | sh[2346lbe]*-*-linux*)
-       tmake_file="sh/t-sh sh/t-elf ${tmake_file}"
-       case ${target} in
-       sh*be-*-* | sh*eb-*-*) ;;
-       *)
-               tm_file="sh/little.h ${tm_file}"
-               tmake_file="${tmake_file} sh/t-le"
-               ;;
-       esac
-       tmake_file="${tmake_file} sh/t-linux"
-       tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/elf.h sh/linux.h"
-       case ${target} in
-       sh64*)
-               tmake_file="${tmake_file} sh/t-sh64"
-               tm_file="${tm_file} sh/sh64.h"
-               extra_headers="shmedia.h ushmedia.h sshmedia.h"
-               ;;
-       sh4_single*) target_cpu_default="SELECT_SH4_SINGLE" ;;
-       sh4*) target_cpu_default="SELECT_SH4" ;;
-       sh3e[lb]e*) target_cpu_default="SELECT_SH3E" ;;
-       sh3e[lb]*) target_cpu_default="SELECT_SH3" ;;
-       sh3e*) target_cpu_default="SELECT_SH3E" ;;
-       sh3*) target_cpu_default="SELECT_SH3" ;;
-       sh2e[lb]e*) target_cpu_default="SELECT_SH2E" ;;
-       sh2e[lb]*) target_cpu_default="SELECT_SH2" ;;
-       sh2e*) target_cpu_default="SELECT_SH2E" ;;
-       sh2*) target_cpu_default="SELECT_SH2" ;;
-       esac
-       case ${target} in
-       sh[234]*) tmake_file="${tmake_file} sh/t-monolib" ;;
-       esac
-       ;;
-sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
-  sh64-*-netbsd* | sh64l*-*-netbsd*)
-       tm_file="${tm_file} dbxelf.h elfos.h sh/elf.h netbsd.h netbsd-elf.h sh/netbsd-elf.h"
-       tmake_file="${tmake_file} sh/t-sh sh/t-elf"
-       case ${target} in
-       sh*l*-*)
-               tm_file="sh/little.h ${tm_file}"
-               tmake_file="${tmake_file} sh/t-le"
-               ;;
-       *)
-               tmake_file="${tmake_file} sh/t-be"
-               ;;
-       esac
-       case ${target} in
-       sh5*-*)
-               # SHmedia, 32-bit ABI
-               target_cpu_default="SH5_BIT|SH4_BIT|SH3_BIT|SH_E_BIT"
-               tmake_file="${tmake_file} sh/t-sh64 sh/t-netbsd-sh5"
-               ;;
-       sh64*-*)
-               # SHmedia, 64-bit ABI
-               target_cpu_default="SH5_BIT|SH4_BIT"
-               tmake_file="${tmake_file} sh/t-sh64 sh/t-netbsd-sh5 sh/t-netbsd-sh5-64"
-               ;;
-       *)
-               # SH3, software floating point
-               target_cpu_default="SH1_BIT|SH2_BIT|SH3_BIT"
-               tmake_file="${tmake_file} sh/t-netbsd"
-               ;;
-       esac
-       ;;
 sh-wrs-vxworks)
        tmake_file="$tmake_file sh/t-sh sh/t-elf sh/t-vxworks"
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/embed-elf.h sh/vxworks.h"
@@ -1903,10 +1916,6 @@ sparc86x-*-elf*)
         extra_parts="crtbegin.o crtend.o"
        use_fixproto=yes
        ;;
-sparc64-*-aout*)
-       tm_file="sparc/sparc.h sparc/aout.h sparc/sp64-aout.h"
-       use_fixproto=yes
-       ;;
 sparc64-*-elf*)
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sol2.h sparc/sol2.h sparc/sp64-elf.h"
        tmake_file="${tmake_file} sparc/t-crtfm"
@@ -2003,11 +2012,13 @@ v850-*-*)
        ;;
 vax-*-bsd*)                    # VAXen running BSD
        tm_file="${tm_file} vax/bsd.h"
+       tmake_file=vax/t-memfuncs
        use_collect2=yes
        use_fixproto=yes
        ;;
 vax-*-sysv*)                   # VAXen running system V
        tm_file="${tm_file} vax/vaxv.h"
+       tmake_file=vax/t-memfuncs
        use_fixproto=yes
        ;;
 vax-*-netbsdelf*)
@@ -2025,6 +2036,7 @@ vax-*-openbsd*)
        ;;
 vax-*-ultrix*)                 # VAXen running ultrix
        tm_file="${tm_file} vax/ultrix.h"
+       tmake_file=vax/t-memfuncs
        use_fixproto=yes
        ;;
 xscale-*-elf)
@@ -2439,6 +2451,19 @@ fi
                esac
                ;;
 
+       sh[123456ble]-*-* | sh-*-*)
+               supported_defaults="cpu"
+               case "`echo $with_cpu | tr A-Z_ a-z- | sed s/sh/m/`" in
+               "" | m1 | m2 | m2e | m3 | m3e | m4 | m4-single | m4-single-only | m4-nofpu )
+                       # OK
+                       ;;
+               *)
+                       echo "Unknown CPU used in --with-cpu=$with_cpu, known values:"  1>&2
+                       echo "m1 m2 m2e m3 m3e m4 m4-single m4-single-only m4-nofpu" 1>&2
+                       exit 1
+                       ;;
+               esac
+               ;;
        sparc*-*-*)
                supported_defaults="cpu float tune"