# 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=
cxx_target_objs=
fortran_target_objs=
target_has_targetcm=no
+target_has_targetm_common=yes
tm_defines=
xm_defines=
libgcc_tm_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* \
- | mips*-*-openbsd* \
)
if test "x$enable_obsolete" != xyes; then
echo "*** Configuration ${target} is obsolete." >&2
m32c*-*-*)
cpu_type=m32c
tmake_file=m32c/t-m32c
+ target_has_targetm_common=no
;;
alpha*-*-*)
cpu_type=alpha
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
extra_options="${extra_options} g.opt"
;;
moxie*) cpu_type=moxie
+ target_has_targetm_common=no
;;
fido-*-*)
cpu_type=m68k
cpu_type=sh
need_64bit_hwint=yes
;;
+v850*-*-*)
+ cpu_type=v850
+ ;;
xtensa*-*-*)
extra_options="${extra_options} fused-madd.opt"
;;
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)"
extra_passes="mips-tfile mips-tdump"
fi
use_collect2=yes
- tmake_file="alpha/t-alpha alpha/t-ieee alpha/t-crtfm alpha/t-osf5"
+ tmake_file="t-slibgcc-dummy"
tm_file="${tm_file} alpha/osf5.h"
tm_defines="${tm_defines} TARGET_SUPPORT_ARCH=1"
extra_options="${extra_options} rpath.opt alpha/osf5.opt"
case ${enable_threads} in
"" | yes | posix)
thread_file='posix'
- tmake_file="${tmake_file} alpha/t-osf-pthread"
;;
esac
;;
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"
;;
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"
need_64bit_isa=yes
# Baseline choice for a machine that allows m64 support.
with_cpu=${with_cpu:-core2}
- tmake_file="${tmake_file} t-slibgcc-darwin i386/t-crtpc i386/t-crtfm"
+ tmake_file="${tmake_file} t-slibgcc-dummy i386/t-crtpc i386/t-crtfm"
libgcc_tm_file="$libgcc_tm_file i386/darwin-lib.h"
;;
x86_64-*-darwin*)
with_cpu=${with_cpu:-core2}
- tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc-darwin i386/t-crtpc i386/t-crtfm"
+ tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc-dummy i386/t-crtpc i386/t-crtfm"
tm_file="${tm_file} ${cpu_type}/darwin64.h"
libgcc_tm_file="$libgcc_tm_file i386/darwin-lib.h"
;;
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
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
*/nwld)
extra_objs="$extra_objs nwld.o"
tm_file="${tm_file} i386/nwld.h"
- tmake_file="${tmake_file} i386/t-nwld"
+ tmake_file="${tmake_file} i386/t-nwld t-slibgcc-dummy"
extra_parts="crt0.o libgcc.def libc.def libcpre.def posixpre.def"
;;
esac
;;
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"
- extra_parts="crtbegin.o crtend.o crti.o crtn.o"
- tmake_file="${tmake_file} i386/t-rtems-i386 i386/t-crtstuff t-rtems"
+ 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
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-svr4"
- 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
- tmake_file="$tmake_file t-slibgcc-elf-ver"
- tm_defines="${tm_defines} TARGET_GNU_LD=1"
- else
- tmake_file="$tmake_file t-slibgcc-sld"
- 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"
- # i386/t-crtstuff only affects libgcc. Its inclusion
- # depends on a runtime test and is thus performed in
- # libgcc/configure.ac instead.
+ 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)
;;
;;
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)
;;
mips-sgi-irix6.5*)
tm_file="elfos.h ${tm_file} mips/iris6.h"
- tmake_file="mips/t-iris mips/t-iris6 mips/t-slibgcc-irix"
+ tmake_file="mips/t-irix6 t-slibgcc-dummy"
extra_options="${extra_options} rpath.opt mips/iris6.opt"
target_cpu_default="MASK_ABICALLS"
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_N32"
*-darwin[0-6]*)
;;
esac
- tmake_file="${tmake_file} t-slibgcc-darwin"
+ tmake_file="${tmake_file} t-slibgcc-dummy"
extra_headers=altivec.h
;;
powerpc64-*-darwin*)
extra_options="${extra_options} ${cpu_type}/darwin.opt"
extra_parts="crt2.o"
- tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc-darwin"
+ tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc-dummy"
tm_file="${tm_file} ${cpu_type}/darwin8.h ${cpu_type}/darwin64.h"
extra_headers=altivec.h
;;
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* | \
tmake_file="sparc/t-elf"
;;
esac
- tmake_file="${tmake_file} sparc/t-crtin sparc/t-crtfm"
- extra_parts="crtbegin.o crtend.o"
;;
sparc-*-rtems*)
tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
- tmake_file="sparc/t-elf sparc/t-crtin sparc/t-crtfm t-rtems"
- extra_parts="crtbegin.o crtend.o"
+ tmake_file="sparc/t-elf t-rtems"
;;
sparc-*-linux*)
tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h"
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 sparc/t-sol2 sparc/t-sol2-64 sparc/t-crtin sparc/t-crtfm"
- if test x$gnu_ld = xyes; then
- tmake_file="$tmake_file t-slibgcc-elf-ver"
- else
- tmake_file="$tmake_file t-slibgcc-sld"
- fi
- 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"
- extra_parts="crt1.o gcrt1.o gmon.o crtbegin.o crtend.o"
- 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"
sparc64-*-elf*)
tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h"
extra_options="${extra_options} sparc/little-endian.opt"
- tmake_file="${tmake_file} sparc/t-crtin sparc/t-crtfm"
- extra_parts="crtbegin.o crtend.o"
;;
sparc64-*-rtems*)
tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h sparc/rtemself.h rtems.h"
extra_options="${extra_options} sparc/little-endian.opt"
- tmake_file="${tmake_file} sparc/t-crtin sparc/t-crtfm t-rtems"
- extra_parts="crtbegin.o crtend.o"
+ tmake_file="${tmake_file} t-rtems"
;;
sparc64-*-linux*)
tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/linux64.h"
c_target_objs="${c_target_objs} spu-c.o"
cxx_target_objs="${cxx_target_objs} spu-c.o"
;;
-v850e1-*-*)
- target_cpu_default="TARGET_CPU_v850e1"
- tm_file="dbxelf.h elfos.h newlib-stdint.h v850/v850.h"
- tm_p_file=v850/v850-protos.h
- tmake_file=v850/t-v850e
- md_file=v850/v850.md
- extra_modes=v850/v850-modes.def
- out_file=v850/v850.c
- extra_options="${extra_options} v850/v850.opt"
- if test x$stabs = xyes
- then
- tm_file="${tm_file} dbx.h"
- fi
- use_collect2=no
- c_target_objs="v850-c.o"
- cxx_target_objs="v850-c.o"
- use_gcc_stdint=wrap
- ;;
-v850e-*-*)
- target_cpu_default="TARGET_CPU_v850e"
+
+v850*-*-*)
+ case ${target} in
+ v850e2v3-*-*)
+ target_cpu_default="TARGET_CPU_v850e2v3"
+ ;;
+ v850e2-*-*)
+ target_cpu_default="TARGET_CPU_v850e2"
+ ;;
+ v850e1-*-* | v850es-*-*)
+ target_cpu_default="TARGET_CPU_v850e1"
+ ;;
+ v850e-*-*)
+ target_cpu_default="TARGET_CPU_v850e"
+ ;;
+ v850-*-*)
+ target_cpu_default="TARGET_CPU_generic"
+ ;;
+ esac
tm_file="dbxelf.h elfos.h newlib-stdint.h v850/v850.h"
- tm_p_file=v850/v850-protos.h
- tmake_file=v850/t-v850e
- md_file=v850/v850.md
- extra_modes=v850/v850-modes.def
- out_file=v850/v850.c
- extra_options="${extra_options} v850/v850.opt"
- if test x$stabs = xyes
- then
- tm_file="${tm_file} dbx.h"
- fi
- use_collect2=no
- c_target_objs="v850-c.o"
- cxx_target_objs="v850-c.o"
- use_gcc_stdint=wrap
- ;;
-v850-*-*)
- target_cpu_default="TARGET_CPU_generic"
- tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
- tmake_file=v850/t-v850
if test x$stabs = xyes
then
tm_file="${tm_file} dbx.h"
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
;;
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"
;;
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
v850*-*-*)
supported_defaults=cpu
case ${with_cpu} in
- "" | v850e | v850e1)
+ "" | v850e | v850e1 | v850e2 | v850es | v850e2v3)
# OK
;;
*)
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*)
;;
v850*-*-*)
- # FIXME: The v850 is "special" in that it does not support
- # runtime CPU selection, only --with-cpu.
case "x$with_cpu" in
x)
;;
- xv850e)
+ xv850e | xv850e1 | xv850e2 | xv850e2v3)
target_cpu_default2="TARGET_CPU_$with_cpu"
;;
+ xv850es)
+ target_cpu_default2="TARGET_CPU_v850e1"
+ ;;
esac
;;
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`