Implement CDE intrinsics on MVE registers. Other than the basics required for adding intrinsics this patch consists of three changes. ** We separate out the MVE types and casts from the arm_mve.h header. This is so that the types can be used in arm_cde.h without the need to include the entire arm_mve.h header. The only type that arm_cde.h needs is `uint8x16_t`, so this separation could be avoided by using a `typedef` in this file. Since the introduced intrinsics are all defined to act on the full range of MVE types, declaring all such types seems intuitive since it will provide their declaration to the user too. This arm_mve_types.h header not only includes the MVE types, but also the conversion intrinsics between them. Some of the conversion intrinsics are needed for arm_cde.h, but most are not. We include all conversion intrinsics to keep the definition of such conversion functions all in one place, on the understanding that extra conversion functions being defined when including `arm_cde.h` is not a problem. ** We define the TARGET_RESOLVE_OVERLOADED_BUILTIN hook for the Arm backend. This is needed to implement the polymorphism for the required intrinsics. The intrinsics have no specialised version, and the resulting assembly instruction for all different types should be exactly the same. Due to this we have implemented these intrinsics via one builtin on one type. All other calls to the intrinsic with different types are implicitly cast to the one type that is defined, and hence are all expanded to the same RTL pattern that is only defined for one machine mode. ** We seperate the initialisation of the CDE intrinsics from others. This allows us to ensure that the CDE intrinsics acting on MVE registers are only created when both CDE and MVE are available. Only initialising these builtins when both features are available is especially important since they require a type that is only initialised when the target supports hard float. Hence trying to initialise these builtins on a soft float target would cause an ICE. Testing done: Full bootstrap and regtest on arm-none-linux-gnueabihf Regression test on arm-none-eabi Ok for trunk? gcc/ChangeLog: 2020-03-10 Matthew Malcomson <matthew.malcomson@arm.com> * config.gcc (arm_mve_types.h): New extra_header for arm. * config/arm/arm-builtins.c (arm_resolve_overloaded_builtin): New. (arm_init_cde_builtins): New. (arm_init_acle_builtins): Remove initialisation of CDE builtins. (arm_init_builtins): Call arm_init_cde_builtins when target supports CDE. * config/arm/arm-c.c (arm_resolve_overloaded_builtin): New declaration. (arm_register_target_pragmas): Initialise resolve_overloaded_builtin hook to the implementation for the arm backend. * config/arm/arm.h (ARM_MVE_CDE_CONST_1): New. (ARM_MVE_CDE_CONST_2): New. (ARM_MVE_CDE_CONST_3): New. * config/arm/arm_cde.h (__arm_vcx1q_u8): New. (__arm_vcx1qa): New. (__arm_vcx2q): New. (__arm_vcx2q_u8): New. (__arm_vcx2qa): New. (__arm_vcx3q): New. (__arm_vcx3q_u8): New. (__arm_vcx3qa): New. * config/arm/arm_cde_builtins.def (vcx1q, vcx1qa, vcx2q, vcx2qa, vcx3q, vcx3qa): New builtins defined. * config/arm/arm_mve.h: Move typedefs and conversion intrinsics to arm_mve_types.h header. * config/arm/arm_mve_types.h: New file. * config/arm/mve.md (arm_vcx1qv16qi, arm_vcx1qav16qi, arm_vcx2qv16qi, arm_vcx2qav16qi, arm_vcx3qv16qi, arm_vcx3qav16qi): New patterns. * config/arm/predicates.md (const_int_mve_cde1_operand, const_int_mve_cde2_operand, const_int_mve_cde3_operand): New. gcc/testsuite/ChangeLog: 2020-03-23 Matthew Malcomson <matthew.malcomson@arm.com> Dennis Zhang <dennis.zhang@arm.com> * gcc.target/arm/acle/cde-mve-error-1.c: New test. * gcc.target/arm/acle/cde-mve-error-2.c: New test. * gcc.target/arm/acle/cde-mve-error-3.c: New test. * gcc.target/arm/acle/cde-mve-full-assembly.c: New test. * gcc.target/arm/acle/cde-mve-tests.c: New test. * lib/target-supports.exp (arm_v8_1m_main_cde_mve_fp): New check effective. (arm_v8_1m_main_cde_mve, arm_v8m_main_cde_fp): Use -mfpu=auto so we only check configurations that make sense.
5352 lines
152 KiB
Plaintext
5352 lines
152 KiB
Plaintext
# GCC target-specific configuration file.
|
|
# Copyright (C) 1997-2020 Free Software Foundation, Inc.
|
|
|
|
#This file is part of GCC.
|
|
|
|
#GCC is free software; you can redistribute it and/or modify it under
|
|
#the terms of the GNU General Public License as published by the Free
|
|
#Software Foundation; either version 3, or (at your option) any later
|
|
#version.
|
|
|
|
#GCC is distributed in the hope that it will be useful, but WITHOUT
|
|
#ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
#FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
#for more details.
|
|
|
|
#You should have received a copy of the GNU General Public License
|
|
#along with GCC; see the file COPYING3. If not see
|
|
#<http://www.gnu.org/licenses/>.
|
|
|
|
# This is the GCC target-specific configuration file
|
|
# where a configuration type is mapped to different system-specific
|
|
# definitions and files. This is invoked by the autoconf-generated
|
|
# configure script. Putting it in a separate shell file lets us skip
|
|
# running autoconf when modifying target-specific information.
|
|
|
|
# When you change the cases in the OS or target switches, consider
|
|
# updating ../libgcc/config.host also.
|
|
|
|
# This file switches on the shell variable ${target}, and also uses the
|
|
# following shell variables:
|
|
#
|
|
# with_* Various variables as set by configure.
|
|
#
|
|
# enable_threads Either the name, yes or no depending on whether
|
|
# threads support was requested.
|
|
#
|
|
# default_use_cxa_atexit
|
|
# The default value for the $enable___cxa_atexit
|
|
# variable. enable___cxa_atexit needs to be set to
|
|
# "yes" for the correct operation of C++ destructors
|
|
# but it relies upon the presence of a non-standard C
|
|
# library function called __cxa_atexit.
|
|
# Since not all C libraries provide __cxa_atexit the
|
|
# default value of $default_use_cxa_atexit is set to
|
|
# "no" except for targets which are known to be OK.
|
|
#
|
|
# default_gnu_indirect_function
|
|
# The default value for the $enable_gnu_indirect_function
|
|
# variable. enable_gnu_indirect_function relies
|
|
# upon the presence of a non-standard gnu ifunc support
|
|
# in the assembler, linker and dynamic linker.
|
|
# Since not all libraries provide the dynamic linking
|
|
# support, the default value of
|
|
# $default_gnu_indirect_function is set to
|
|
# "no" except for targets which are known to be OK.
|
|
#
|
|
# gas_flag Either yes or no depending on whether GNU as was
|
|
# requested.
|
|
#
|
|
# gnu_ld_flag Either yes or no depending on whether GNU ld was
|
|
# requested.
|
|
|
|
# This file sets the following shell variables for use by the
|
|
# autoconf-generated configure script:
|
|
#
|
|
# cpu_type The name of the cpu, if different from the first
|
|
# chunk of the canonical target name.
|
|
#
|
|
# tm_defines List of target macros to define for all compilations.
|
|
#
|
|
# tm_file A list of target macro files, if different from
|
|
# "$cpu_type/$cpu_type.h". Usually it's constructed
|
|
# per target in a way like this:
|
|
# tm_file="${tm_file} dbxelf.h elfos.h ${cpu_type.h}/elf.h"
|
|
# Note that the preferred order is:
|
|
# - specific target header "${cpu_type}/${cpu_type.h}"
|
|
# - generic headers like dbxelf.h elfos.h, etc.
|
|
# - specializing target headers like ${cpu_type.h}/elf.h
|
|
# This helps to keep OS specific stuff out of the CPU
|
|
# defining header ${cpu_type}/${cpu_type.h}.
|
|
#
|
|
# It is possible to include automatically-generated
|
|
# build-directory files by prefixing them with "./".
|
|
# All other files should relative to $srcdir/config.
|
|
#
|
|
# tm_p_file Location of file with declarations for functions
|
|
# in $out_file.
|
|
#
|
|
# tm_d_file A list of headers with definitions of target hook
|
|
# macros for the D compiler.
|
|
#
|
|
# 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".
|
|
#
|
|
# tmake_file A list of machine-description-specific
|
|
# makefile-fragments, if different from
|
|
# "$cpu_type/t-$cpu_type".
|
|
#
|
|
# extra_modes The name of the file containing a list of extra
|
|
# machine modes, if necessary and different from
|
|
# "$cpu_type/$cpu_type-modes.def".
|
|
#
|
|
# extra_objs List of extra objects that should be linked into
|
|
# the compiler proper (cc1, cc1obj, cc1plus)
|
|
# depending on target.
|
|
#
|
|
# extra_gcc_objs List of extra objects that should be linked into
|
|
# the compiler driver (gcc) depending on target.
|
|
#
|
|
# extra_headers List of used header files from the directory
|
|
# config/${cpu_type}.
|
|
#
|
|
# user_headers_inc_next_pre
|
|
# List of header file names of internal gcc header
|
|
# files, which should be prefixed by an include_next.
|
|
# user_headers_inc_next_post
|
|
# List of header file names of internal gcc header
|
|
# files, which should be postfixed by an include_next.
|
|
# use_gcc_tgmath If set, add tgmath.h to the list of used header
|
|
# files.
|
|
#
|
|
# use_gcc_stdint If "wrap", install a version of stdint.h that
|
|
# wraps the system's copy for hosted compilations;
|
|
# if "provide", provide a version of systems without
|
|
# such a system header; otherwise "none", do not
|
|
# provide such a header at all.
|
|
#
|
|
# extra_programs List of extra executables compiled for this target
|
|
# machine, used when linking.
|
|
#
|
|
# extra_options List of target-dependent .opt files.
|
|
#
|
|
# c_target_objs List of extra target-dependent objects that be
|
|
# linked into the C compiler only.
|
|
#
|
|
# cxx_target_objs List of extra target-dependent objects that be
|
|
# linked into the C++ compiler only.
|
|
#
|
|
# d_target_objs List of extra target-dependent objects that be
|
|
# linked into the D compiler only.
|
|
#
|
|
# fortran_target_objs List of extra target-dependent objects that be
|
|
# linked into the fortran compiler only.
|
|
#
|
|
# target_gtfiles List of extra source files with type information.
|
|
#
|
|
# xm_defines List of macros to define when compiling for the
|
|
# target machine.
|
|
#
|
|
# xm_file List of files to include when compiling for the
|
|
# target machine.
|
|
#
|
|
# use_collect2 Set to yes or no, depending on whether collect2
|
|
# will be used.
|
|
#
|
|
# target_cpu_default Set to override the default target model.
|
|
#
|
|
# gdb_needs_out_file_path
|
|
# Set to yes if gdb needs a dir command with
|
|
# `dirname $out_file`.
|
|
#
|
|
# thread_file Set to control which thread package to use.
|
|
#
|
|
# gas Set to yes or no depending on whether the target
|
|
# system normally uses GNU as.
|
|
#
|
|
# configure_default_options
|
|
# Set to an initializer for configure_default_options
|
|
# in configargs.h, based on --with-cpu et cetera.
|
|
#
|
|
# native_system_header_dir
|
|
# Where system header files are found for this
|
|
# target. This defaults to /usr/include. If
|
|
# the --with-sysroot configure option or the
|
|
# --sysroot command line option is used this
|
|
# will be relative to the sysroot.
|
|
# target_type_format_char
|
|
# The default character to be used for formatting
|
|
# the attribute in a
|
|
# .type symbol_name, ${t_t_f_c}<property>
|
|
# directive.
|
|
|
|
# The following variables are used in each case-construct to build up the
|
|
# outgoing variables:
|
|
#
|
|
# gnu_ld Set to yes or no depending on whether the target
|
|
# system normally uses GNU ld.
|
|
#
|
|
# 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.
|
|
#
|
|
# target_has_targetdm Set to yes or no depending on whether the target
|
|
# has its own definition of targetdm.
|
|
|
|
out_file=
|
|
common_out_file=
|
|
tmake_file=
|
|
extra_headers=
|
|
user_headers_inc_next_pre=
|
|
user_headers_inc_next_post=
|
|
use_gcc_tgmath=yes
|
|
use_gcc_stdint=none
|
|
extra_programs=
|
|
extra_objs=
|
|
extra_gcc_objs=
|
|
extra_options=
|
|
c_target_objs=
|
|
cxx_target_objs=
|
|
d_target_objs=
|
|
fortran_target_objs=
|
|
target_has_targetcm=no
|
|
target_has_targetm_common=yes
|
|
target_has_targetdm=no
|
|
tm_defines=
|
|
xm_defines=
|
|
# Set this to force installation and use of collect2.
|
|
use_collect2=
|
|
# Set this to override the default target model.
|
|
target_cpu_default=
|
|
# Set this if gdb needs a dir command with `dirname $out_file`
|
|
gdb_needs_out_file_path=
|
|
# Set this to control which thread package will be used.
|
|
thread_file=
|
|
# Reinitialize these from the flag values every loop pass, since some
|
|
# configure entries modify them.
|
|
gas="$gas_flag"
|
|
gnu_ld="$gnu_ld_flag"
|
|
default_use_cxa_atexit=no
|
|
default_gnu_indirect_function=no
|
|
target_gtfiles=
|
|
need_64bit_isa=
|
|
native_system_header_dir=/usr/include
|
|
target_type_format_char='@'
|
|
|
|
# Don't carry these over build->host->target. Please.
|
|
xm_file=
|
|
md_file=
|
|
|
|
# Obsolete configurations.
|
|
case ${target} in
|
|
tile*-*-* \
|
|
| crisv32-*-* \
|
|
| cris-*-linux* \
|
|
)
|
|
if test "x$enable_obsolete" != xyes; then
|
|
echo "*** Configuration ${target} is obsolete." >&2
|
|
echo "*** Specify --enable-obsolete to build it anyway." >&2
|
|
echo "*** Support will be REMOVED in the next major release of GCC," >&2
|
|
echo "*** unless a maintainer comes forward." >&2
|
|
exit 1
|
|
fi;;
|
|
esac
|
|
|
|
# Unsupported targets list. Do not put an entry in this list unless
|
|
# it would otherwise be caught by a more permissive pattern. The list
|
|
# should be in alphabetical order.
|
|
case ${target} in
|
|
# Avoid special cases that are not obsolete
|
|
arm*-*-*eabi* \
|
|
)
|
|
;;
|
|
arm*-wince-pe* \
|
|
| arm*-*-ecos-elf \
|
|
| arm*-*-elf \
|
|
| arm*-*-linux* \
|
|
| arm*-*-uclinux* \
|
|
| i[34567]86-go32-* \
|
|
| i[34567]86-*-go32* \
|
|
| m68k-*-uclinuxoldabi* \
|
|
| mips64orion*-*-rtems* \
|
|
| pdp11-*-bsd \
|
|
| powerpc*-*-linux*paired* \
|
|
| powerpc*-*-*spe* \
|
|
| sparc-hal-solaris2* \
|
|
| spu*-*-* \
|
|
| thumb-*-* \
|
|
| *-*-freebsd[12] | *-*-freebsd[1234].* \
|
|
| *-*-freebsd*aout* \
|
|
| *-*-linux*aout* \
|
|
| *-*-linux*coff* \
|
|
| *-*-linux*libc1* \
|
|
| *-*-linux*oldld* \
|
|
| *-*-rtemsaout* \
|
|
| *-*-rtemscoff* \
|
|
| *-*-solaris2 \
|
|
| *-*-solaris2.[0-9] \
|
|
| *-*-solaris2.[0-9].* \
|
|
| *-*-solaris2.10* \
|
|
| *-*-sysv* \
|
|
| vax-*-vms* \
|
|
)
|
|
echo "*** Configuration ${target} not supported" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# Set default cpu_type, tm_file, tm_p_file and xm_file so it can be
|
|
# updated in each machine entry. Also set default extra_headers for some
|
|
# machines.
|
|
tm_p_file=
|
|
cpu_type=`echo ${target} | sed 's/-.*$//'`
|
|
cpu_is_64bit=
|
|
case ${target} in
|
|
m32c*-*-*)
|
|
cpu_type=m32c
|
|
tmake_file=m32c/t-m32c
|
|
target_has_targetm_common=no
|
|
;;
|
|
aarch64*-*-*)
|
|
cpu_type=aarch64
|
|
extra_headers="arm_fp16.h arm_neon.h arm_bf16.h arm_acle.h arm_sve.h"
|
|
c_target_objs="aarch64-c.o"
|
|
cxx_target_objs="aarch64-c.o"
|
|
d_target_objs="aarch64-d.o"
|
|
extra_objs="aarch64-builtins.o aarch-common.o aarch64-sve-builtins.o aarch64-sve-builtins-shapes.o aarch64-sve-builtins-base.o aarch64-sve-builtins-sve2.o cortex-a57-fma-steering.o aarch64-speculation.o falkor-tag-collision-avoidance.o aarch64-bti-insert.o"
|
|
target_gtfiles="\$(srcdir)/config/aarch64/aarch64-builtins.c \$(srcdir)/config/aarch64/aarch64-sve-builtins.h \$(srcdir)/config/aarch64/aarch64-sve-builtins.cc"
|
|
target_has_targetm_common=yes
|
|
;;
|
|
alpha*-*-*)
|
|
cpu_type=alpha
|
|
extra_options="${extra_options} g.opt"
|
|
;;
|
|
amdgcn*)
|
|
cpu_type=gcn
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
am33_2.0-*-linux*)
|
|
cpu_type=mn10300
|
|
;;
|
|
arc*-*-*)
|
|
cpu_type=arc
|
|
c_target_objs="arc-c.o"
|
|
cxx_target_objs="arc-c.o"
|
|
extra_options="${extra_options} arc/arc-tables.opt g.opt"
|
|
extra_headers="arc-simd.h"
|
|
;;
|
|
arm*-*-*)
|
|
cpu_type=arm
|
|
extra_objs="arm-builtins.o aarch-common.o"
|
|
extra_headers="mmintrin.h arm_neon.h arm_acle.h arm_fp16.h arm_cmse.h arm_bf16.h arm_mve_types.h arm_mve.h arm_cde.h"
|
|
target_type_format_char='%'
|
|
c_target_objs="arm-c.o"
|
|
cxx_target_objs="arm-c.o"
|
|
d_target_objs="arm-d.o"
|
|
extra_options="${extra_options} arm/arm-tables.opt"
|
|
target_gtfiles="\$(srcdir)/config/arm/arm-builtins.c"
|
|
;;
|
|
avr-*-*)
|
|
cpu_type=avr
|
|
c_target_objs="avr-c.o"
|
|
cxx_target_objs="avr-c.o"
|
|
;;
|
|
bfin*-*)
|
|
cpu_type=bfin
|
|
;;
|
|
bpf-*-*)
|
|
cpu_type=bpf
|
|
;;
|
|
crisv32-*)
|
|
cpu_type=cris
|
|
;;
|
|
frv*) cpu_type=frv
|
|
extra_options="${extra_options} g.opt"
|
|
;;
|
|
ft32*) cpu_type=ft32
|
|
target_has_targetm_common=no
|
|
;;
|
|
moxie*) cpu_type=moxie
|
|
target_has_targetm_common=no
|
|
;;
|
|
fido-*-*)
|
|
cpu_type=m68k
|
|
extra_headers=math-68881.h
|
|
extra_options="${extra_options} m68k/m68k-tables.opt"
|
|
;;
|
|
i[34567]86-*-*)
|
|
cpu_type=i386
|
|
c_target_objs="i386-c.o"
|
|
cxx_target_objs="i386-c.o"
|
|
d_target_objs="i386-d.o"
|
|
extra_objs="x86-tune-sched.o x86-tune-sched-bd.o x86-tune-sched-atom.o x86-tune-sched-core.o i386-options.o i386-builtins.o i386-expand.o i386-features.o"
|
|
target_gtfiles="\$(srcdir)/config/i386/i386-builtins.c \$(srcdir)/config/i386/i386-expand.c \$(srcdir)/config/i386/i386-options.c"
|
|
extra_options="${extra_options} fused-madd.opt"
|
|
extra_headers="cpuid.h mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h
|
|
pmmintrin.h tmmintrin.h ammintrin.h smmintrin.h
|
|
nmmintrin.h bmmintrin.h fma4intrin.h wmmintrin.h
|
|
immintrin.h x86intrin.h avxintrin.h xopintrin.h
|
|
ia32intrin.h cross-stdarg.h lwpintrin.h popcntintrin.h
|
|
lzcntintrin.h bmiintrin.h bmi2intrin.h tbmintrin.h
|
|
avx2intrin.h avx512fintrin.h fmaintrin.h f16cintrin.h
|
|
rtmintrin.h xtestintrin.h rdseedintrin.h prfchwintrin.h
|
|
adxintrin.h fxsrintrin.h xsaveintrin.h xsaveoptintrin.h
|
|
avx512cdintrin.h avx512erintrin.h avx512pfintrin.h
|
|
shaintrin.h clflushoptintrin.h xsavecintrin.h
|
|
xsavesintrin.h avx512dqintrin.h avx512bwintrin.h
|
|
avx512vlintrin.h avx512vlbwintrin.h avx512vldqintrin.h
|
|
avx512ifmaintrin.h avx512ifmavlintrin.h avx512vbmiintrin.h
|
|
avx512vbmivlintrin.h avx5124fmapsintrin.h avx5124vnniwintrin.h
|
|
avx512vpopcntdqintrin.h clwbintrin.h mwaitxintrin.h
|
|
clzerointrin.h pkuintrin.h sgxintrin.h cetintrin.h
|
|
gfniintrin.h cet.h avx512vbmi2intrin.h
|
|
avx512vbmi2vlintrin.h avx512vnniintrin.h
|
|
avx512vnnivlintrin.h vaesintrin.h vpclmulqdqintrin.h
|
|
avx512vpopcntdqvlintrin.h avx512bitalgintrin.h
|
|
pconfigintrin.h wbnoinvdintrin.h movdirintrin.h
|
|
waitpkgintrin.h cldemoteintrin.h avx512bf16vlintrin.h avx512bf16intrin.h
|
|
enqcmdintrin.h avx512vp2intersectintrin.h avx512vp2intersectvlintrin.h"
|
|
;;
|
|
x86_64-*-*)
|
|
cpu_type=i386
|
|
c_target_objs="i386-c.o"
|
|
cxx_target_objs="i386-c.o"
|
|
d_target_objs="i386-d.o"
|
|
extra_options="${extra_options} fused-madd.opt"
|
|
extra_objs="x86-tune-sched.o x86-tune-sched-bd.o x86-tune-sched-atom.o x86-tune-sched-core.o i386-options.o i386-builtins.o i386-expand.o i386-features.o"
|
|
target_gtfiles="\$(srcdir)/config/i386/i386-builtins.c \$(srcdir)/config/i386/i386-expand.c \$(srcdir)/config/i386/i386-options.c"
|
|
extra_headers="cpuid.h mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h
|
|
pmmintrin.h tmmintrin.h ammintrin.h smmintrin.h
|
|
nmmintrin.h bmmintrin.h fma4intrin.h wmmintrin.h
|
|
immintrin.h x86intrin.h avxintrin.h xopintrin.h
|
|
ia32intrin.h cross-stdarg.h lwpintrin.h popcntintrin.h
|
|
lzcntintrin.h bmiintrin.h bmi2intrin.h tbmintrin.h
|
|
avx2intrin.h avx512fintrin.h fmaintrin.h f16cintrin.h
|
|
rtmintrin.h xtestintrin.h rdseedintrin.h prfchwintrin.h
|
|
adxintrin.h fxsrintrin.h xsaveintrin.h xsaveoptintrin.h
|
|
avx512cdintrin.h avx512erintrin.h avx512pfintrin.h
|
|
shaintrin.h clflushoptintrin.h xsavecintrin.h
|
|
xsavesintrin.h avx512dqintrin.h avx512bwintrin.h
|
|
avx512vlintrin.h avx512vlbwintrin.h avx512vldqintrin.h
|
|
avx512ifmaintrin.h avx512ifmavlintrin.h avx512vbmiintrin.h
|
|
avx512vbmivlintrin.h avx5124fmapsintrin.h avx5124vnniwintrin.h
|
|
avx512vpopcntdqintrin.h clwbintrin.h mwaitxintrin.h
|
|
clzerointrin.h pkuintrin.h sgxintrin.h cetintrin.h
|
|
gfniintrin.h cet.h avx512vbmi2intrin.h
|
|
avx512vbmi2vlintrin.h avx512vnniintrin.h
|
|
avx512vnnivlintrin.h vaesintrin.h vpclmulqdqintrin.h
|
|
avx512vpopcntdqvlintrin.h avx512bitalgintrin.h
|
|
pconfigintrin.h wbnoinvdintrin.h movdirintrin.h
|
|
waitpkgintrin.h cldemoteintrin.h avx512bf16vlintrin.h avx512bf16intrin.h
|
|
enqcmdintrin.h avx512vp2intersectintrin.h avx512vp2intersectvlintrin.h"
|
|
;;
|
|
ia64-*-*)
|
|
extra_headers=ia64intrin.h
|
|
extra_options="${extra_options} g.opt fused-madd.opt"
|
|
;;
|
|
hppa*-*-*)
|
|
cpu_type=pa
|
|
;;
|
|
lm32*)
|
|
extra_options="${extra_options} g.opt"
|
|
;;
|
|
m32r*-*-*)
|
|
cpu_type=m32r
|
|
extra_options="${extra_options} g.opt"
|
|
;;
|
|
m68k-*-*)
|
|
extra_headers=math-68881.h
|
|
extra_options="${extra_options} m68k/m68k-tables.opt"
|
|
;;
|
|
microblaze*-*-*)
|
|
cpu_type=microblaze
|
|
extra_options="${extra_options} g.opt"
|
|
;;
|
|
mips*-*-*)
|
|
cpu_type=mips
|
|
d_target_objs="mips-d.o"
|
|
extra_headers="loongson.h loongson-mmiintrin.h msa.h"
|
|
extra_objs="frame-header-opt.o"
|
|
extra_options="${extra_options} g.opt fused-madd.opt mips/mips-tables.opt"
|
|
;;
|
|
nds32*)
|
|
cpu_type=nds32
|
|
extra_headers="nds32_intrinsic.h nds32_isr.h nds32_init.inc"
|
|
case ${target} in
|
|
nds32*-*-linux*)
|
|
extra_options="${extra_options} nds32/nds32-linux.opt"
|
|
;;
|
|
nds32*-*-elf*)
|
|
extra_options="${extra_options} nds32/nds32-elf.opt"
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
extra_objs="nds32-cost.o nds32-intrinsic.o nds32-isr.o nds32-md-auxiliary.o nds32-pipelines-auxiliary.o nds32-predicates.o nds32-memory-manipulation.o nds32-fp-as-gp.o nds32-relax-opt.o nds32-utils.o"
|
|
;;
|
|
nios2-*-*)
|
|
cpu_type=nios2
|
|
extra_options="${extra_options} g.opt"
|
|
;;
|
|
nvptx-*-*)
|
|
cpu_type=nvptx
|
|
;;
|
|
or1k*-*-*)
|
|
cpu_type=or1k
|
|
;;
|
|
powerpc*-*-*)
|
|
cpu_type=rs6000
|
|
extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o rs6000-call.o"
|
|
extra_headers="ppc-asm.h altivec.h htmintrin.h htmxlintrin.h"
|
|
extra_headers="${extra_headers} bmi2intrin.h bmiintrin.h"
|
|
extra_headers="${extra_headers} xmmintrin.h mm_malloc.h emmintrin.h"
|
|
extra_headers="${extra_headers} mmintrin.h x86intrin.h"
|
|
extra_headers="${extra_headers} pmmintrin.h tmmintrin.h smmintrin.h"
|
|
extra_headers="${extra_headers} ppu_intrinsics.h spu2vmx.h vec_types.h si2vmx.h"
|
|
extra_headers="${extra_headers} amo.h"
|
|
case x$with_cpu in
|
|
xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[3456789]|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|xe6500|xfuture)
|
|
cpu_is_64bit=yes
|
|
;;
|
|
esac
|
|
extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
|
|
target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.c \$(srcdir)/config/rs6000/rs6000-call.c"
|
|
;;
|
|
pru-*-*)
|
|
cpu_type=pru
|
|
;;
|
|
riscv*)
|
|
cpu_type=riscv
|
|
extra_objs="riscv-builtins.o riscv-c.o riscv-sr.o"
|
|
d_target_objs="riscv-d.o"
|
|
;;
|
|
rs6000*-*-*)
|
|
extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
|
|
extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o rs6000-call.o"
|
|
target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.c \$(srcdir)/config/rs6000/rs6000-call.c"
|
|
;;
|
|
sparc*-*-*)
|
|
cpu_type=sparc
|
|
c_target_objs="sparc-c.o"
|
|
cxx_target_objs="sparc-c.o"
|
|
d_target_objs="sparc-d.o"
|
|
extra_headers="visintrin.h"
|
|
;;
|
|
s390*-*-*)
|
|
cpu_type=s390
|
|
d_target_objs="s390-d.o"
|
|
extra_options="${extra_options} fused-madd.opt"
|
|
extra_headers="s390intrin.h htmintrin.h htmxlintrin.h vecintrin.h"
|
|
;;
|
|
# Note the 'l'; we need to be able to match e.g. "shle" or "shl".
|
|
sh[123456789lbe]*-*-* | sh-*-*)
|
|
cpu_type=sh
|
|
extra_options="${extra_options} fused-madd.opt"
|
|
extra_objs="${extra_objs} sh_treg_combine.o sh-mem.o sh_optimize_sett_clrt.o"
|
|
;;
|
|
v850*-*-*)
|
|
cpu_type=v850
|
|
;;
|
|
tic6x-*-*)
|
|
cpu_type=c6x
|
|
extra_headers="c6x_intrinsics.h"
|
|
extra_options="${extra_options} c6x/c6x-tables.opt"
|
|
;;
|
|
xtensa*-*-*)
|
|
extra_options="${extra_options} fused-madd.opt"
|
|
;;
|
|
tilegx*-*-*)
|
|
cpu_type=tilegx
|
|
;;
|
|
tilepro*-*-*)
|
|
cpu_type=tilepro
|
|
;;
|
|
esac
|
|
|
|
tm_file=${cpu_type}/${cpu_type}.h
|
|
tm_d_file=${cpu_type}/${cpu_type}.h
|
|
if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-protos.h
|
|
then
|
|
tm_p_file=${cpu_type}/${cpu_type}-protos.h
|
|
tm_d_file="${tm_d_file} ${cpu_type}/${cpu_type}-protos.h"
|
|
fi
|
|
|
|
extra_modes=
|
|
if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-modes.def
|
|
then
|
|
extra_modes=${cpu_type}/${cpu_type}-modes.def
|
|
fi
|
|
if test -f ${srcdir}/config/${cpu_type}/${cpu_type}.opt
|
|
then
|
|
extra_options="${extra_options} ${cpu_type}/${cpu_type}.opt"
|
|
fi
|
|
|
|
case ${target} in
|
|
aarch64*-*-*)
|
|
tm_p_file="${tm_p_file} arm/aarch-common-protos.h"
|
|
case ${with_abi} in
|
|
"")
|
|
if test "x$with_multilib_list" = xilp32; then
|
|
tm_file="aarch64/biarchilp32.h ${tm_file}"
|
|
else
|
|
tm_file="aarch64/biarchlp64.h ${tm_file}"
|
|
fi
|
|
;;
|
|
ilp32)
|
|
tm_file="aarch64/biarchilp32.h ${tm_file}"
|
|
;;
|
|
lp64)
|
|
tm_file="aarch64/biarchlp64.h ${tm_file}"
|
|
;;
|
|
*)
|
|
echo "Unknown ABI used in --with-abi=$with_abi"
|
|
exit 1
|
|
esac
|
|
;;
|
|
i[34567]86-*-*)
|
|
if test "x$with_abi" != x; then
|
|
echo "This target does not support --with-abi."
|
|
exit 1
|
|
fi
|
|
;;
|
|
x86_64-*-*)
|
|
case ${with_abi} in
|
|
"")
|
|
if test "x$with_multilib_list" = xmx32; then
|
|
tm_file="i386/biarchx32.h ${tm_file}"
|
|
else
|
|
tm_file="i386/biarch64.h ${tm_file}"
|
|
fi
|
|
;;
|
|
64 | m64)
|
|
tm_file="i386/biarch64.h ${tm_file}"
|
|
;;
|
|
x32 | mx32)
|
|
tm_file="i386/biarchx32.h ${tm_file}"
|
|
;;
|
|
*)
|
|
echo "Unknown ABI used in --with-abi=$with_abi"
|
|
exit 1
|
|
esac
|
|
;;
|
|
arm*-*-*)
|
|
tm_p_file="arm/arm-flags.h ${tm_p_file} arm/aarch-common-protos.h"
|
|
;;
|
|
esac
|
|
|
|
# On a.out targets, we need to use collect2.
|
|
case ${target} in
|
|
*-*-*aout*)
|
|
use_collect2=yes
|
|
;;
|
|
esac
|
|
|
|
# Common C libraries.
|
|
tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
|
|
|
|
# 32-bit x86 processors supported by --with-arch=. Each processor
|
|
# MUST be separated by exactly one space.
|
|
x86_archs="athlon athlon-4 athlon-fx athlon-mp athlon-tbird \
|
|
athlon-xp k6 k6-2 k6-3 geode c3 c3-2 winchip-c6 winchip2 i386 i486 \
|
|
i586 i686 pentium pentium-m pentium-mmx pentium2 pentium3 pentium3m \
|
|
pentium4 pentium4m pentiumpro prescott lakemont"
|
|
|
|
# 64-bit x86 processors supported by --with-arch=. Each processor
|
|
# MUST be separated by exactly one space.
|
|
x86_64_archs="amdfam10 athlon64 athlon64-sse3 barcelona bdver1 bdver2 \
|
|
bdver3 bdver4 znver1 znver2 btver1 btver2 k8 k8-sse3 opteron \
|
|
opteron-sse3 nocona core2 corei7 corei7-avx core-avx-i core-avx2 atom \
|
|
slm nehalem westmere sandybridge ivybridge haswell broadwell bonnell \
|
|
silvermont knl knm skylake-avx512 cannonlake icelake-client icelake-server \
|
|
skylake goldmont goldmont-plus tremont cascadelake tigerlake cooperlake x86-64 \
|
|
native"
|
|
|
|
# Additional x86 processors supported by --with-cpu=. Each processor
|
|
# MUST be separated by exactly one space.
|
|
x86_cpus="generic intel"
|
|
|
|
# Common parts for widely ported systems.
|
|
case ${target} in
|
|
*-*-darwin*)
|
|
tmake_file="t-darwin "
|
|
tm_file="${tm_file} darwin.h"
|
|
case ${target} in
|
|
*-*-darwin9*)
|
|
tm_file="${tm_file} darwin9.h"
|
|
;;
|
|
*-*-darwin[1][01]*)
|
|
tm_file="${tm_file} darwin9.h darwin10.h"
|
|
;;
|
|
*-*-darwin[1][2-9]* | *-*-darwin[2][0-9]*)
|
|
tm_file="${tm_file} darwin9.h darwin10.h darwin12.h"
|
|
;;
|
|
esac
|
|
tm_file="${tm_file} ${cpu_type}/darwin.h"
|
|
tm_p_file="${tm_p_file} darwin-protos.h"
|
|
target_gtfiles="$target_gtfiles \$(srcdir)/config/darwin.c"
|
|
extra_options="${extra_options} darwin.opt"
|
|
c_target_objs="${c_target_objs} darwin-c.o"
|
|
cxx_target_objs="${cxx_target_objs} darwin-c.o"
|
|
fortran_target_objs="darwin-f.o"
|
|
target_has_targetcm=yes
|
|
extra_objs="${extra_objs} darwin.o"
|
|
extra_gcc_objs="darwin-driver.o"
|
|
default_use_cxa_atexit=yes
|
|
use_gcc_stdint=wrap
|
|
case ${enable_threads} in
|
|
"" | yes | posix) thread_file='posix' ;;
|
|
esac
|
|
;;
|
|
*-*-dragonfly*)
|
|
gas=yes
|
|
gnu_ld=yes
|
|
tmake_file="t-slibgcc"
|
|
case ${enable_threads} in
|
|
"" | yes | posix)
|
|
thread_file='posix'
|
|
;;
|
|
no | single)
|
|
# Let these non-posix thread selections fall through if requested
|
|
;;
|
|
*)
|
|
echo 'Unknown thread configuration for DragonFly BSD'
|
|
exit 1
|
|
;;
|
|
esac
|
|
extra_options="$extra_options rpath.opt dragonfly.opt"
|
|
default_use_cxa_atexit=yes
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
*-*-freebsd*)
|
|
# This is the generic ELF configuration of FreeBSD. Later
|
|
# machine-specific sections may refine and add to this
|
|
# configuration.
|
|
#
|
|
# Due to tm_file entry ordering issues that vary between cpu
|
|
# architectures, we only define fbsd_tm_file to allow the
|
|
# machine-specific section to dictate the final order of all
|
|
# entries of tm_file with the minor exception that components
|
|
# of the tm_file set here will always be of the form:
|
|
#
|
|
# freebsd<version_number>.h [freebsd-<conf_option>.h ...] freebsd-spec.h freebsd.h
|
|
#
|
|
# The machine-specific section should not tamper with this
|
|
# ordering but may order all other entries of tm_file as it
|
|
# pleases around the provided core setting.
|
|
gas=yes
|
|
gnu_ld=yes
|
|
fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
|
|
if test "$fbsd_major" = ""; then
|
|
echo "Specify the major version number of the targeted FreeBSD release"
|
|
echo "like this: --target=amd64-unknown-freebsd10.1"
|
|
exit 1
|
|
fi
|
|
tm_defines="${tm_defines} FBSD_MAJOR=${fbsd_major}"
|
|
tmake_file="t-slibgcc"
|
|
case ${enable_threads} in
|
|
no)
|
|
fbsd_tm_file="${fbsd_tm_file} freebsd-nthr.h"
|
|
;;
|
|
"" | yes | posix)
|
|
thread_file='posix'
|
|
;;
|
|
*)
|
|
echo 'Unknown thread configuration for FreeBSD'
|
|
exit 1
|
|
;;
|
|
esac
|
|
fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h freebsd-stdint.h"
|
|
extra_options="$extra_options rpath.opt freebsd.opt"
|
|
case ${target} in
|
|
*-*-freebsd[345].*)
|
|
:;;
|
|
*)
|
|
default_use_cxa_atexit=yes;;
|
|
esac
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
*-*-fuchsia*)
|
|
native_system_header_dir=/include
|
|
;;
|
|
*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi)
|
|
extra_options="$extra_options gnu-user.opt"
|
|
gas=yes
|
|
gnu_ld=yes
|
|
case ${enable_threads} in
|
|
"" | yes | posix) thread_file='posix' ;;
|
|
esac
|
|
tmake_file="t-slibgcc"
|
|
case $target in
|
|
*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
|
|
:;;
|
|
*-*-gnu*)
|
|
native_system_header_dir=/include
|
|
;;
|
|
esac
|
|
# Linux C libraries selection switch: glibc / uclibc / bionic.
|
|
# uclibc and bionic aren't usable for GNU/Hurd and neither for GNU/k*BSD.
|
|
case $target in
|
|
*linux*)
|
|
tm_p_file="${tm_p_file} linux-protos.h"
|
|
tmake_file="${tmake_file} t-linux"
|
|
extra_objs="${extra_objs} linux.o"
|
|
extra_options="${extra_options} linux.opt"
|
|
;;
|
|
esac
|
|
case $target in
|
|
*-*-*android*)
|
|
tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC"
|
|
;;
|
|
*-*-*uclibc* | *-*-uclinuxfdpiceabi)
|
|
tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
|
|
;;
|
|
*-*-*musl*)
|
|
tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
|
|
;;
|
|
*)
|
|
tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
|
|
;;
|
|
esac
|
|
# Assume that glibc or uClibc or Bionic are being used and so __cxa_atexit
|
|
# is provided.
|
|
default_use_cxa_atexit=yes
|
|
use_gcc_tgmath=no
|
|
use_gcc_stdint=wrap
|
|
# Enable compilation for Android by default for *android* targets.
|
|
case $target in
|
|
*-*-*android*)
|
|
tm_defines="$tm_defines ANDROID_DEFAULT=1"
|
|
;;
|
|
*)
|
|
tm_defines="$tm_defines ANDROID_DEFAULT=0"
|
|
;;
|
|
esac
|
|
c_target_objs="${c_target_objs} glibc-c.o"
|
|
cxx_target_objs="${cxx_target_objs} glibc-c.o"
|
|
d_target_objs="${d_target_objs} glibc-d.o"
|
|
tmake_file="${tmake_file} t-glibc"
|
|
target_has_targetcm=yes
|
|
target_has_targetdm=yes
|
|
;;
|
|
*-*-netbsd*)
|
|
tm_p_file="${tm_p_file} netbsd-protos.h"
|
|
tmake_file="t-netbsd t-slibgcc"
|
|
extra_objs="${extra_objs} netbsd.o"
|
|
d_target_objs="${d_target_objs} netbsd-d.o"
|
|
gas=yes
|
|
gnu_ld=yes
|
|
use_gcc_stdint=wrap
|
|
case ${enable_threads} in
|
|
"" | yes | posix) thread_file='posix' ;;
|
|
esac
|
|
nbsd_tm_file="netbsd.h netbsd-stdint.h netbsd-elf.h"
|
|
default_use_cxa_atexit=yes
|
|
target_has_targetdm=yes
|
|
case ${target} in
|
|
arm*-* | i[34567]86-* | powerpc*-* | sparc*-* | x86_64-*)
|
|
default_gnu_indirect_function=yes
|
|
;;
|
|
esac
|
|
;;
|
|
*-*-openbsd*)
|
|
tmake_file="t-openbsd"
|
|
case ${enable_threads} in
|
|
yes)
|
|
thread_file='posix'
|
|
;;
|
|
esac
|
|
case ${target} in
|
|
*-*-openbsd4.[3-9]|*-*-openbsd[5-9]*)
|
|
default_use_cxa_atexit=yes
|
|
;;
|
|
esac
|
|
;;
|
|
*-*-phoenix*)
|
|
gas=yes
|
|
gnu_ld=yes
|
|
default_use_cxa_atexit=yes
|
|
;;
|
|
*-*-rtems*)
|
|
case ${enable_threads} in
|
|
"" | yes | rtems) thread_file='rtems' ;;
|
|
posix) thread_file='posix' ;;
|
|
no) ;;
|
|
*)
|
|
echo 'Unknown thread configuration for RTEMS'
|
|
exit 1
|
|
;;
|
|
esac
|
|
tmake_file="${tmake_file} t-rtems"
|
|
extra_options="${extra_options} rtems.opt"
|
|
default_use_cxa_atexit=yes
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
*-*-uclinux*)
|
|
extra_options="$extra_options gnu-user.opt"
|
|
use_gcc_stdint=wrap
|
|
case ${enable_threads} in
|
|
"" | yes | posix) thread_file='posix' ;;
|
|
esac
|
|
tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC SINGLE_LIBC"
|
|
;;
|
|
*-*-rdos*)
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
*-*-solaris2*)
|
|
# i?86-*-solaris2* needs to insert headers between cpu default and
|
|
# Solaris 2 specific ones.
|
|
sol2_tm_file_head="dbxelf.h elfos.h ${cpu_type}/sysv4.h"
|
|
sol2_tm_file_tail="${cpu_type}/sol2.h sol2.h"
|
|
sol2_tm_file="${sol2_tm_file_head} ${sol2_tm_file_tail}"
|
|
case ${target} in
|
|
*-*-solaris2.1[1-9]*)
|
|
# __cxa_atexit was introduced in Solaris 11.4.
|
|
default_use_cxa_atexit=yes
|
|
;;
|
|
esac
|
|
use_gcc_stdint=wrap
|
|
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"
|
|
c_target_objs="${c_target_objs} sol2-c.o"
|
|
cxx_target_objs="${cxx_target_objs} sol2-c.o sol2-cxx.o"
|
|
d_target_objs="${d_target_objs} sol2-d.o"
|
|
extra_objs="${extra_objs} sol2.o sol2-stubs.o"
|
|
extra_options="${extra_options} sol2.opt"
|
|
case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
|
|
"":yes:* | yes:yes:* )
|
|
thread_file=posix
|
|
;;
|
|
esac
|
|
target_has_targetdm=yes
|
|
;;
|
|
*-*-*vms*)
|
|
extra_options="${extra_options} vms/vms.opt"
|
|
xmake_file=vms/x-vms
|
|
tmake_file="vms/t-vms t-slibgcc"
|
|
extra_objs="vms.o"
|
|
target_gtfiles="$target_gtfiles \$(srcdir)/config/vms/vms.c"
|
|
tm_p_file="${tm_p_file} vms/vms-protos.h"
|
|
xm_file="vms/xm-vms.h"
|
|
c_target_objs="vms-c.o"
|
|
cxx_target_objs="vms-c.o"
|
|
fortran_target_objs="vms-f.o"
|
|
use_gcc_stdint=provide
|
|
tm_file="${tm_file} vms/vms-stdint.h"
|
|
if test x$gnu_ld != xyes; then
|
|
# Build wrappers for native case.
|
|
extra_programs="ld\$(exeext) ar\$(exeext)"
|
|
tmake_file="$tmake_file vms/t-vmsnative"
|
|
fi
|
|
;;
|
|
*-*-vxworks*)
|
|
tmake_file=t-vxworks
|
|
xm_defines=POSIX
|
|
|
|
extra_options="${extra_options} vxworks.opt"
|
|
extra_objs="$extra_objs vxworks.o"
|
|
|
|
c_target_objs="${c_target_objs} vxworks-c.o"
|
|
cxx_target_objs="${cxx_target_objs} vxworks-c.o"
|
|
extra_headers="${extra_headers} ../vxworks/vxworks-predef.h"
|
|
target_has_targetcm="yes"
|
|
|
|
# This private header exposes a consistent interface for checks on
|
|
# the VxWorks version our runtime header files need to perform, based on
|
|
# what the system headers adverstise:
|
|
|
|
extra_headers="${extra_headers} ../vxworks/_vxworks-versions.h"
|
|
|
|
# Starting from VxWorks 7, the system comes with a Dinkumware
|
|
# environment which requires the inclusion of "yvals.h" before other
|
|
# system headers. We provide wrapped versions of a few headers to
|
|
# accomodate such constraints:
|
|
|
|
extra_headers="${extra_headers} ../vxworks/_yvals.h"
|
|
extra_headers="${extra_headers} ../vxworks/_yvals-wrapper.h"
|
|
|
|
extra_headers="${extra_headers} ../vxworks/math.h ../vxworks/complex.h"
|
|
extra_headers="${extra_headers} ../vxworks/inttypes.h ../vxworks/setjmp.h"
|
|
|
|
# We provide stdint.h ...
|
|
|
|
tm_file="${tm_file} vxworks-stdint.h"
|
|
|
|
# .. only through the yvals conditional wrapping mentioned above
|
|
# to abide by the VxWorks 7 expectations. The final copy is performed
|
|
# explicitly by a t-vxworks Makefile rule.
|
|
|
|
use_gcc_stdint=none
|
|
extra_headers="${extra_headers} ../../ginclude/stdint-gcc.h"
|
|
|
|
case ${enable_threads} in
|
|
no) ;;
|
|
"" | yes | vxworks) thread_file='vxworks' ;;
|
|
*) echo 'Unknown thread configuration for VxWorks'; exit 1 ;;
|
|
esac
|
|
|
|
# A few common macro definitions conveying general characteristics
|
|
# of the configuration at hand. Note that by VxWorks 7, we mean the
|
|
# the SR6xx major update or beyond in vendor parlance:
|
|
|
|
case $target in
|
|
*-*-vxworks7*)
|
|
tm_defines="$tm_defines TARGET_VXWORKS7=1"
|
|
;;
|
|
esac
|
|
case $target in
|
|
*64-*-vxworks*)
|
|
tm_defines="$tm_defines TARGET_VXWORKS64=1"
|
|
;;
|
|
esac
|
|
|
|
# Then a few build configuration controls for VxWorks 7, which
|
|
# has specificities on top of which we aim to provide more complete
|
|
# C++ support:
|
|
|
|
case $target in
|
|
*-*-vxworks7*)
|
|
# VxWorks 7 always has init/fini_array support and it is simpler to
|
|
# just leverage this, sticking to what the system toolchain does:
|
|
gcc_cv_initfini_array=yes
|
|
;;
|
|
esac
|
|
;;
|
|
*-*-elf|arc*-*-elf*)
|
|
# Assume that newlib is being used and so __cxa_atexit is provided.
|
|
default_use_cxa_atexit=yes
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
esac
|
|
|
|
case ${target} in
|
|
aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h"
|
|
tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-elf-raw.h"
|
|
tmake_file="${tmake_file} aarch64/t-aarch64"
|
|
case $target in
|
|
aarch64-*-elf*)
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
aarch64-*-fuchsia*)
|
|
tm_file="${tm_file} fuchsia.h"
|
|
;;
|
|
aarch64-*-rtems*)
|
|
tm_file="${tm_file} rtems.h aarch64/rtems.h"
|
|
;;
|
|
esac
|
|
case $target in
|
|
aarch64_be-*)
|
|
tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
|
|
;;
|
|
esac
|
|
aarch64_multilibs="${with_multilib_list}"
|
|
if test "$aarch64_multilibs" = "default"; then
|
|
aarch64_multilibs="lp64,ilp32"
|
|
fi
|
|
aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
|
|
for aarch64_multilib in ${aarch64_multilibs}; do
|
|
case ${aarch64_multilib} in
|
|
ilp32 | lp64 )
|
|
TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
|
|
;;
|
|
*)
|
|
echo "--with-multilib-list=${aarch64_multilib} not supported."
|
|
exit 1
|
|
esac
|
|
done
|
|
TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
|
|
;;
|
|
aarch64*-*-freebsd*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file}"
|
|
tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-freebsd.h"
|
|
tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
|
|
tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
|
|
;;
|
|
aarch64*-*-netbsd*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h ${nbsd_tm_file}"
|
|
tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-netbsd.h"
|
|
tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-netbsd"
|
|
extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
|
|
;;
|
|
aarch64*-*-linux*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h"
|
|
tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-linux.h"
|
|
tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-linux"
|
|
tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
|
|
case $target in
|
|
aarch64_be-*)
|
|
tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
|
|
;;
|
|
esac
|
|
aarch64_multilibs="${with_multilib_list}"
|
|
if test "$aarch64_multilibs" = "default"; then
|
|
# TODO: turn on ILP32 multilib build after its support is mature.
|
|
# aarch64_multilibs="lp64,ilp32"
|
|
aarch64_multilibs="lp64"
|
|
fi
|
|
aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
|
|
for aarch64_multilib in ${aarch64_multilibs}; do
|
|
case ${aarch64_multilib} in
|
|
ilp32 | lp64 )
|
|
TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
|
|
;;
|
|
*)
|
|
echo "--with-multilib-list=${aarch64_multilib} not supported."
|
|
exit 1
|
|
esac
|
|
done
|
|
TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
|
|
;;
|
|
aarch64*-wrs-vxworks*)
|
|
tm_file="${tm_file} elfos.h aarch64/aarch64-elf.h"
|
|
tm_file="${tm_file} vx-common.h vxworks.h aarch64/aarch64-vxworks.h"
|
|
tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-vxworks"
|
|
;;
|
|
alpha*-*-linux*)
|
|
tm_file="elfos.h ${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h glibc-stdint.h"
|
|
tmake_file="${tmake_file} alpha/t-linux alpha/t-alpha"
|
|
extra_options="${extra_options} alpha/elf.opt"
|
|
;;
|
|
alpha*-*-netbsd*)
|
|
tm_file="elfos.h ${tm_file} ${nbsd_tm_file} alpha/elf.h alpha/netbsd.h"
|
|
tmake_file="${tmake_file} alpha/t-alpha"
|
|
extra_options="${extra_options} netbsd.opt netbsd-elf.opt \
|
|
alpha/elf.opt"
|
|
;;
|
|
alpha*-*-openbsd*)
|
|
tm_defines="${tm_defines} OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_FUNCTION_SIZE OBSD_HAS_DECLARE_OBJECT"
|
|
tm_file="elfos.h alpha/alpha.h alpha/elf.h openbsd.h openbsd-stdint.h alpha/openbsd.h openbsd-libpthread.h"
|
|
tmake_file="${tmake_file} alpha/t-alpha"
|
|
extra_options="${extra_options} openbsd.opt alpha/elf.opt"
|
|
# default x-alpha is only appropriate for dec-osf.
|
|
;;
|
|
alpha*-dec-*vms*)
|
|
tm_file="${tm_file} vms/vms.h alpha/vms.h"
|
|
tmake_file="${tmake_file} alpha/t-vms alpha/t-alpha"
|
|
;;
|
|
arc*-*-elf*)
|
|
tm_file="arc/arc-arch.h dbxelf.h elfos.h newlib-stdint.h arc/elf.h ${tm_file}"
|
|
tmake_file="arc/t-multilib arc/t-arc"
|
|
extra_gcc_objs="driver-arc.o"
|
|
if test "x$with_cpu" != x; then
|
|
tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
|
|
fi
|
|
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_file="arc/big.h ${tm_file}"
|
|
esac
|
|
;;
|
|
arc*-*-linux*)
|
|
tm_file="arc/arc-arch.h dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arc/linux.h ${tm_file}"
|
|
tmake_file="${tmake_file} arc/t-multilib-linux arc/t-arc"
|
|
extra_gcc_objs="driver-arc.o"
|
|
if test "x$with_cpu" != x; then
|
|
tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
|
|
fi
|
|
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_file="arc/big.h ${tm_file}"
|
|
esac
|
|
# Force .init_array support. The configure script cannot always
|
|
# automatically detect that GAS supports it, yet we require it.
|
|
gcc_cv_initfini_array=yes
|
|
;;
|
|
arm-wrs-vxworks7*)
|
|
# We only support VxWorks 7 now on ARM, post SR600. Pre SR600
|
|
# VxWorks 7 was transitory and major versions prior to 7 were based
|
|
# on long deprecated ABI, not supported at all any more regardless
|
|
# of VxWorks.
|
|
extra_options="${extra_options} arm/vxworks.opt"
|
|
tmake_file="${tmake_file} arm/t-arm arm/t-vxworks arm/t-bpabi"
|
|
tm_file="elfos.h arm/elf.h arm/bpabi.h arm/aout.h ${tm_file}"
|
|
tm_file="${tm_file} vx-common.h vxworks.h arm/vxworks.h"
|
|
target_cpu_cname="armv7-a"
|
|
need_64bit_hwint=yes
|
|
;;
|
|
arm*-*-freebsd*) # ARM FreeBSD EABI
|
|
tm_file="dbxelf.h elfos.h ${fbsd_tm_file} arm/elf.h"
|
|
case $target in
|
|
arm*b-*-freebsd*)
|
|
tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
|
|
;;
|
|
esac
|
|
tmake_file="${tmake_file} arm/t-arm arm/t-bpabi"
|
|
tm_file="${tm_file} arm/bpabi.h arm/freebsd.h arm/aout.h arm/arm.h"
|
|
case $target in
|
|
armv6*-*-freebsd*)
|
|
target_cpu_cname="arm1176jzf-s"
|
|
if test $fbsd_major -ge 11; then
|
|
tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
|
|
fi
|
|
;;
|
|
armv7*-*-freebsd*)
|
|
target_cpu_cname="generic-armv7-a"
|
|
tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
|
|
;;
|
|
*)
|
|
target_cpu_cname="arm9"
|
|
;;
|
|
esac
|
|
with_tls=${with_tls:-gnu}
|
|
;;
|
|
arm*-*-netbsdelf*)
|
|
target_cpu_cname="strongarm"
|
|
tmake_file="${tmake_file} arm/t-arm"
|
|
tm_file="dbxelf.h elfos.h ${nbsd_tm_file} arm/elf.h"
|
|
extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
|
|
case ${target} in
|
|
arm*eb-*) tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" ;;
|
|
esac
|
|
case ${target} in
|
|
arm*-*-netbsdelf-*eabi*)
|
|
tm_file="$tm_file arm/bpabi.h arm/netbsd-elf.h arm/netbsd-eabi.h"
|
|
tmake_file="$tmake_file arm/t-bpabi arm/t-netbsdeabi"
|
|
;;
|
|
*)
|
|
tm_file="$tm_file arm/netbsd-elf.h"
|
|
tmake_file="$tmake_file arm/t-netbsd"
|
|
;;
|
|
esac
|
|
tm_file="${tm_file} arm/aout.h arm/arm.h"
|
|
case ${target} in
|
|
arm*-*-netbsdelf-*eabihf*)
|
|
# Hard-float requires at least Arm v5te
|
|
target_cpu_cname="arm10e"
|
|
tm_defines="${tm_defines} TARGET_DEFAULT_FLOAT_ABI=ARM_FLOAT_ABI_HARD"
|
|
;;
|
|
esac
|
|
case ${target} in
|
|
armv6*) target_cpu_cname="arm1176jzf-s";;
|
|
armv7*) target_cpu_cname="generic-armv7-a";;
|
|
esac
|
|
;;
|
|
arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)
|
|
tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
|
|
extra_options="${extra_options} linux-android.opt"
|
|
case $target in
|
|
arm*b-*-linux*)
|
|
tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
|
|
;;
|
|
esac
|
|
tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
|
|
tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h arm/aout.h arm/arm.h"
|
|
case $target in
|
|
arm*-*-uclinuxfdpiceabi)
|
|
tm_file="$tm_file arm/uclinuxfdpiceabi.h"
|
|
;;
|
|
esac
|
|
# Generation of floating-point instructions requires at least ARMv5te.
|
|
if [ "$with_float" = "hard" -o "$with_float" = "softfp" ] ; then
|
|
target_cpu_cname="arm10e"
|
|
else
|
|
target_cpu_cname="arm10tdmi"
|
|
fi
|
|
# Define multilib configuration for arm-linux-androideabi.
|
|
case ${target} in
|
|
*-androideabi)
|
|
tmake_file="$tmake_file arm/t-linux-androideabi"
|
|
;;
|
|
esac
|
|
# The EABI requires the use of __cxa_atexit.
|
|
default_use_cxa_atexit=yes
|
|
with_tls=${with_tls:-gnu}
|
|
;;
|
|
arm*-*-uclinux*eabi*) # ARM ucLinux
|
|
tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
|
|
tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi"
|
|
tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h arm/aout.h arm/arm.h"
|
|
target_cpu_cname="arm7tdmi"
|
|
# The EABI requires the use of __cxa_atexit.
|
|
default_use_cxa_atexit=yes
|
|
;;
|
|
arm*-*-phoenix*)
|
|
tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
|
|
tm_file="${tm_file} newlib-stdint.h phoenix.h"
|
|
tm_file="${tm_file} arm/aout.h arm/arm.h"
|
|
tmake_file="${tmake_file} arm/t-arm arm/t-bpabi arm/t-phoenix"
|
|
target_cpu_cname="arm7tdmi"
|
|
;;
|
|
arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
|
|
case ${target} in
|
|
arm*eb-*-eabi*)
|
|
tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
|
|
esac
|
|
default_use_cxa_atexit=yes
|
|
tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
|
|
tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf"
|
|
target_cpu_cname="arm7tdmi"
|
|
case ${target} in
|
|
arm*-*-eabi*)
|
|
tm_file="$tm_file newlib-stdint.h"
|
|
tmake_file="${tmake_file} arm/t-bpabi"
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
arm*-*-fuchsia*)
|
|
tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h"
|
|
tmake_file="${tmake_file} arm/t-bpabi arm/t-fuchsia"
|
|
target_cpu_cname="generic-armv7-a"
|
|
;;
|
|
arm*-*-rtems*)
|
|
tm_file="${tm_file} rtems.h arm/rtems.h newlib-stdint.h"
|
|
tmake_file="${tmake_file} arm/t-bpabi arm/t-rtems"
|
|
;;
|
|
arm*-*-symbianelf*)
|
|
tm_file="${tm_file} arm/symbian.h"
|
|
# We do not include t-bpabi for Symbian OS because the system
|
|
# provides its own implementation of the BPABI functions.
|
|
tmake_file="${tmake_file} arm/t-symbian"
|
|
target_cpu_cname="arm10tdmi"
|
|
;;
|
|
esac
|
|
tm_file="${tm_file} arm/aout.h arm/arm.h"
|
|
;;
|
|
avr-*-*)
|
|
tm_file="elfos.h avr/elf.h avr/avr-arch.h avr/avr.h avr/specs.h dbxelf.h avr/avr-stdint.h"
|
|
if test x${with_avrlibc} != xno; then
|
|
tm_file="${tm_file} ${cpu_type}/avrlibc.h"
|
|
tm_defines="${tm_defines} WITH_AVRLIBC"
|
|
fi
|
|
# Work out avr_double_comparison which is 2 or 3 and is used in
|
|
# target hook FLOAT_LIB_COMPARE_RETURNS_BOOL to determine whether
|
|
# DFmode comparisons return 3-state or 2-state results.
|
|
case y${with_double_comparison} in
|
|
y | ytristate)
|
|
avr_double_comparison=3
|
|
;;
|
|
ybool | ylibf7)
|
|
avr_double_comparison=2
|
|
;;
|
|
*)
|
|
echo "Error: --with-double-comparison= can only be used with: 'tristate', 'bool', 'libf7'" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
case "y${with_libf7}" in
|
|
yno)
|
|
# avr_double_comparison as set above.
|
|
;;
|
|
ylibgcc)
|
|
avr_double_comparison=2
|
|
tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
|
|
;;
|
|
y | yyes | ymath-symbols)
|
|
avr_double_comparison=2
|
|
tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
|
|
tm_defines="${tm_defines} WITH_LIBF7_MATH"
|
|
tm_defines="${tm_defines} WITH_LIBF7_MATH_SYMBOLS"
|
|
;;
|
|
ymath)
|
|
avr_double_comparison=2
|
|
tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
|
|
tm_defines="${tm_defines} WITH_LIBF7_MATH"
|
|
;;
|
|
*)
|
|
echo "Error: --with-libf7=${with_libf7} but can only be used with: 'libgcc', 'math', 'math-symbols', 'yes', 'no'" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
tm_defines="${tm_defines} WITH_DOUBLE_COMPARISON=${avr_double_comparison}"
|
|
case y${with_double} in
|
|
y32)
|
|
avr_double=32
|
|
tm_defines="${tm_defines} HAVE_DOUBLE32"
|
|
;;
|
|
y64)
|
|
avr_double=64
|
|
tm_defines="${tm_defines} HAVE_DOUBLE64"
|
|
;;
|
|
y64,32)
|
|
avr_double=64
|
|
avr_double_multilib=1
|
|
tm_defines="${tm_defines} HAVE_DOUBLE32"
|
|
tm_defines="${tm_defines} HAVE_DOUBLE64"
|
|
tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
|
|
;;
|
|
y | y32,64)
|
|
avr_double=32
|
|
avr_double_multilib=1
|
|
tm_defines="${tm_defines} HAVE_DOUBLE32"
|
|
tm_defines="${tm_defines} HAVE_DOUBLE64"
|
|
tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
|
|
;;
|
|
*)
|
|
echo "Error: --with-double= can only be used with: '32', '32,64', '64,32', '64'" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
case y${with_long_double} in
|
|
y32)
|
|
avr_long_double=32
|
|
tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
|
|
;;
|
|
y64)
|
|
avr_long_double=64
|
|
tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
|
|
;;
|
|
y | y64,32)
|
|
avr_long_double=64
|
|
avr_long_double_multilib=1
|
|
tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
|
|
tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
|
|
tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
|
|
;;
|
|
y32,64)
|
|
avr_long_double=32
|
|
avr_long_double_multilib=1
|
|
tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
|
|
tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
|
|
tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
|
|
;;
|
|
ydouble)
|
|
avr_long_double=${avr_double}
|
|
tm_defines="${tm_defines} HAVE_LONG_DOUBLE_IS_DOUBLE"
|
|
if test y${avr_double_multilib} = y1; then
|
|
tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
|
|
tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
|
|
else
|
|
tm_defines="${tm_defines} HAVE_LONG_DOUBLE${avr_long_double}"
|
|
fi
|
|
;;
|
|
*)
|
|
echo "Error: --with-long_double= can only be used with: '32', '32,64', '64,32', '64', 'double'" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
if test ${avr_long_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 32xy1z; then
|
|
if test y${with_long_double} != ydouble; then
|
|
echo "Error: --with-double=${with_double} requests a multilib for double, but long double is always 32 bits wide due to --with-long-double=${with_long_double}" 1>&2
|
|
exit 1
|
|
fi
|
|
fi
|
|
if test ${avr_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 64x1yz; then
|
|
echo "Error: --with-long-double=${with_long_double} requests a multilib for long double, but double is always 64 bits wide due to --with-double=64" 1>&2
|
|
exit 1
|
|
fi
|
|
if test y${avr_double}${avr_long_double} = y6432; then
|
|
echo "Error: double default of 64 bits from --with-double=${with_double} conflicts with default of 32 bits for long double from --with-long-double=${with_long_double}" 1>&2
|
|
exit 1
|
|
fi
|
|
tm_defines="${tm_defines} WITH_DOUBLE${avr_double}"
|
|
tm_defines="${tm_defines} WITH_LONG_DOUBLE${avr_long_double}"
|
|
tmake_file="${tmake_file} avr/t-avr avr/t-multilib"
|
|
use_gcc_stdint=wrap
|
|
extra_gcc_objs="driver-avr.o avr-devices.o"
|
|
extra_objs="avr-devices.o avr-log.o"
|
|
;;
|
|
bfin*-elf*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h bfin/elf.h"
|
|
tmake_file=bfin/t-bfin-elf
|
|
use_collect2=no
|
|
;;
|
|
bfin*-uclinux*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/uclinux.h"
|
|
tmake_file=bfin/t-bfin-uclinux
|
|
use_collect2=no
|
|
;;
|
|
bfin*-linux-uclibc*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/linux.h ./linux-sysroot-suffix.h"
|
|
tmake_file="${tmake_file} bfin/t-bfin-linux"
|
|
use_collect2=no
|
|
;;
|
|
bfin*-rtems*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h bfin/rtems.h rtems.h newlib-stdint.h"
|
|
tmake_file="${tmake_file} bfin/t-rtems"
|
|
;;
|
|
bfin*-*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h bfin/elf.h"
|
|
use_collect2=no
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
bpf-*-*)
|
|
tmake_file="${tmake_file} bpf/t-bpf"
|
|
use_collect2=no
|
|
extra_headers="bpf-helpers.h"
|
|
use_gcc_stdint=provide
|
|
;;
|
|
cr16-*-elf)
|
|
tm_file="elfos.h ${tm_file} newlib-stdint.h"
|
|
tmake_file="${tmake_file} cr16/t-cr16 "
|
|
use_collect2=no
|
|
;;
|
|
crisv32-*-elf | crisv32-*-none)
|
|
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
|
|
tmake_file="cris/t-cris"
|
|
target_cpu_default=32
|
|
gas=yes
|
|
extra_options="${extra_options} cris/elf.opt"
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
cris-*-elf | cris-*-none)
|
|
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
|
|
tmake_file="cris/t-cris cris/t-elfmulti"
|
|
gas=yes
|
|
extra_options="${extra_options} cris/elf.opt"
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
crisv32-*-linux* | cris-*-linux*)
|
|
tm_file="dbxelf.h elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h cris/linux.h"
|
|
tmake_file="${tmake_file} cris/t-cris cris/t-linux"
|
|
extra_options="${extra_options} cris/linux.opt"
|
|
case $target in
|
|
cris-*-*)
|
|
target_cpu_default=10
|
|
;;
|
|
crisv32-*-*)
|
|
target_cpu_default=32
|
|
;;
|
|
esac
|
|
;;
|
|
csky-*-*)
|
|
if test x${with_endian} != x; then
|
|
case ${with_endian} in
|
|
big|little) ;;
|
|
*)
|
|
echo "with_endian=${with_endian} not supported."
|
|
exit 1
|
|
;;
|
|
esac
|
|
fi
|
|
if test x${with_float} != x; then
|
|
case ${with_float} in
|
|
soft | hard) ;;
|
|
*) echo
|
|
"Unknown floating point type used in --with-float=$with_float"
|
|
exit 1
|
|
;;
|
|
esac
|
|
fi
|
|
tm_file="csky/csky.h"
|
|
md_file="csky/csky.md"
|
|
out_file="csky/csky.c"
|
|
tm_p_file="${tm_p_file} csky/csky-protos.h"
|
|
extra_options="${extra_options} csky/csky_tables.opt"
|
|
|
|
if test x${enable_tpf_debug} = xyes; then
|
|
tm_defines="${tm_defines} ENABLE_TPF_DEBUG"
|
|
fi
|
|
|
|
case ${target} in
|
|
csky-*-elf*)
|
|
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file} csky/csky-elf.h"
|
|
tmake_file="csky/t-csky csky/t-csky-elf"
|
|
default_use_cxa_atexit=no
|
|
;;
|
|
csky-*-linux*)
|
|
tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} csky/csky-linux-elf.h"
|
|
tmake_file="${tmake_file} csky/t-csky csky/t-csky-linux"
|
|
|
|
if test "x${enable_multilib}" = xyes ; then
|
|
tm_file="$tm_file ./sysroot-suffix.h"
|
|
tmake_file="${tmake_file} csky/t-sysroot-suffix"
|
|
fi
|
|
|
|
case ${target} in
|
|
csky-*-linux-gnu*)
|
|
tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
|
|
# Force .init_array support. The configure script cannot always
|
|
# automatically detect that GAS supports it, yet we require it.
|
|
gcc_cv_initfini_array=yes
|
|
;;
|
|
csky-*-linux-uclibc*)
|
|
tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
|
|
default_use_cxa_atexit=no
|
|
;;
|
|
*)
|
|
echo "Unknown target $target"
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
echo "Unknown target $target"
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
epiphany-*-elf | epiphany-*-rtems*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h"
|
|
tmake_file="${tmake_file} epiphany/t-epiphany"
|
|
case ${target} in
|
|
epiphany-*-rtems*)
|
|
tm_file="${tm_file} rtems.h epiphany/rtems.h newlib-stdint.h"
|
|
;;
|
|
*)
|
|
tm_file="${tm_file} newlib-stdint.h"
|
|
;;
|
|
esac
|
|
extra_options="${extra_options} fused-madd.opt"
|
|
extra_objs="${extra_objs} mode-switch-use.o resolve-sw-modes.o"
|
|
tm_defines="${tm_defines} EPIPHANY_STACK_OFFSET=${with_stack_offset:-8}"
|
|
extra_headers="epiphany_intrinsics.h"
|
|
;;
|
|
fr30-*-elf)
|
|
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
|
|
;;
|
|
frv-*-elf)
|
|
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
|
|
tmake_file=frv/t-frv
|
|
;;
|
|
frv-*-*linux*)
|
|
tm_file="dbxelf.h elfos.h ${tm_file} \
|
|
gnu-user.h linux.h glibc-stdint.h frv/linux.h"
|
|
tmake_file="${tmake_file} frv/t-frv frv/t-linux"
|
|
;;
|
|
ft32-*-elf)
|
|
gas=yes
|
|
gnu_ld=yes
|
|
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
|
|
tmake_file="${tmake_file} ft32/t-ft32"
|
|
;;
|
|
amdgcn-*-amdhsa)
|
|
tm_file="elfos.h gcn/gcn-hsa.h gcn/gcn.h newlib-stdint.h"
|
|
tmake_file="gcn/t-gcn-hsa"
|
|
native_system_header_dir=/include
|
|
extra_modes=gcn/gcn-modes.def
|
|
extra_objs="${extra_objs} gcn-tree.o"
|
|
extra_gcc_objs="driver-gcn.o"
|
|
case "$host" in
|
|
x86_64*-*-linux-gnu )
|
|
if test "$ac_cv_search_dlopen" != no; then
|
|
extra_programs="${extra_programs} gcn-run\$(exeext)"
|
|
fi
|
|
;;
|
|
esac
|
|
if test x$enable_as_accelerator = xyes; then
|
|
extra_programs="${extra_programs} mkoffload\$(exeext)"
|
|
tm_file="${tm_file} gcn/offload.h"
|
|
fi
|
|
# Force .init_array support.
|
|
gcc_cv_initfini_array=yes
|
|
thread_file=gcn
|
|
;;
|
|
moxie-*-elf)
|
|
gas=yes
|
|
gnu_ld=yes
|
|
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
|
|
tmake_file="${tmake_file} moxie/t-moxie"
|
|
;;
|
|
moxie-*-uclinux*)
|
|
gas=yes
|
|
gnu_ld=yes
|
|
tm_file="dbxelf.h elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h moxie/uclinux.h"
|
|
tmake_file="${tmake_file} moxie/t-moxie"
|
|
;;
|
|
moxie-*-rtems*)
|
|
tmake_file="${tmake_file} moxie/t-moxie"
|
|
tm_file="moxie/moxie.h dbxelf.h elfos.h moxie/rtems.h rtems.h newlib-stdint.h"
|
|
;;
|
|
moxie-*-moxiebox*)
|
|
gas=yes
|
|
gnu_ld=yes
|
|
tm_file="${tm_file} dbxelf.h elfos.h moxie/moxiebox.h newlib-stdint.h"
|
|
tmake_file="${tmake_file} moxie/t-moxiebox"
|
|
;;
|
|
h8300-*-elf*)
|
|
tmake_file="h8300/t-h8300"
|
|
tm_file="h8300/h8300.h dbxelf.h elfos.h newlib-stdint.h h8300/elf.h"
|
|
;;
|
|
h8300-*-linux*)
|
|
tmake_file="${tmake_file} h8300/t-h8300 h8300/t-linux"
|
|
tm_file="h8300/h8300.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h h8300/linux.h"
|
|
;;
|
|
hppa*64*-*-linux*)
|
|
target_cpu_default="MASK_PA_11|MASK_PA_20"
|
|
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-pa pa/t-linux"
|
|
d_target_objs="${d_target_objs} pa-d.o"
|
|
gas=yes gnu_ld=yes
|
|
;;
|
|
hppa*-*-linux*)
|
|
target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS|MASK_CALLER_COPIES"
|
|
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h pa/pa-linux.h \
|
|
pa/pa32-regs.h pa/pa32-linux.h"
|
|
tmake_file="${tmake_file} pa/t-pa pa/t-linux"
|
|
d_target_objs="${d_target_objs} pa-d.o"
|
|
;;
|
|
hppa*-*-openbsd*)
|
|
target_cpu_default="MASK_PA_11"
|
|
tm_file="${tm_file} dbxelf.h elfos.h openbsd.h openbsd-stdint.h openbsd-libpthread.h \
|
|
pa/pa-openbsd.h pa/pa32-regs.h pa/pa32-openbsd.h"
|
|
extra_options="${extra_options} openbsd.opt"
|
|
tmake_file="pa/t-pa"
|
|
d_target_objs="${d_target_objs} pa-d.o"
|
|
gas=yes
|
|
gnu_ld=yes
|
|
;;
|
|
hppa*-*-netbsd*)
|
|
target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS"
|
|
tm_file="${tm_file} dbxelf.h elfos.h ${nbsd_tm_file} \
|
|
pa/pa-netbsd.h pa/pa32-regs.h pa/pa32-netbsd.h"
|
|
tmake_file="${tmake_file}"
|
|
tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
|
|
extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
|
|
;;
|
|
hppa[12]*-*-hpux10*)
|
|
case ${target} in
|
|
hppa1.1-*-* | hppa2*-*-*)
|
|
target_cpu_default="MASK_PA_11"
|
|
;;
|
|
esac
|
|
tm_file="${tm_file} pa/pa32-regs.h dbxelf.h pa/som.h \
|
|
pa/pa-hpux.h pa/pa-hpux10.h"
|
|
extra_options="${extra_options} pa/pa-hpux.opt pa/pa-hpux10.opt"
|
|
case ${target} in
|
|
*-*-hpux10.[1-9]*)
|
|
tm_file="${tm_file} pa/pa-hpux1010.h"
|
|
extra_options="${extra_options} pa/pa-hpux1010.opt"
|
|
;;
|
|
esac
|
|
use_gcc_stdint=provide
|
|
tm_file="${tm_file} hpux-stdint.h"
|
|
tmake_file="pa/t-pa t-slibgcc"
|
|
d_target_objs="${d_target_objs} pa-d.o"
|
|
case ${enable_threads} in
|
|
"")
|
|
if test x$have_pthread_h = xyes ; then
|
|
tmake_file="${tmake_file} pa/t-dce-thr"
|
|
fi
|
|
;;
|
|
yes | dce)
|
|
tmake_file="${tmake_file} pa/t-dce-thr"
|
|
;;
|
|
esac
|
|
use_collect2=yes
|
|
gas=yes
|
|
if test "x$with_dwarf2" != x; then
|
|
echo "Warning: dwarf2 debug format is not supported for this target, --with-dwarf2 ignored" 1>&2
|
|
dwarf2=no
|
|
fi
|
|
;;
|
|
hppa*64*-*-hpux11*)
|
|
target_cpu_default="MASK_PA_11|MASK_PA_20"
|
|
if test x$gnu_ld = xyes
|
|
then
|
|
target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
|
|
fi
|
|
tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h \
|
|
pa/pa64-regs.h pa/pa-hpux.h pa/pa-hpux1010.h \
|
|
pa/pa-hpux11.h"
|
|
case ${target} in
|
|
*-*-hpux11.[12]*)
|
|
tm_file="${tm_file} pa/pa-hpux1111.h pa/pa-64.h pa/pa64-hpux.h"
|
|
extra_options="${extra_options} pa/pa-hpux1111.opt"
|
|
;;
|
|
*-*-hpux11.[3-9]*)
|
|
tm_file="${tm_file} pa/pa-hpux1131.h pa/pa-64.h pa/pa64-hpux.h"
|
|
extra_options="${extra_options} pa/pa-hpux1131.opt"
|
|
;;
|
|
*)
|
|
tm_file="${tm_file} pa/pa-64.h pa/pa64-hpux.h"
|
|
;;
|
|
esac
|
|
extra_options="${extra_options} pa/pa-hpux.opt \
|
|
pa/pa-hpux1010.opt pa/pa64-hpux.opt hpux11.opt"
|
|
tmake_file="pa/t-pa t-slibgcc"
|
|
d_target_objs="${d_target_objs} pa-d.o"
|
|
case x${enable_threads} in
|
|
x | xyes | xposix )
|
|
thread_file=posix
|
|
;;
|
|
esac
|
|
gas=yes
|
|
case ${target} in
|
|
*-*-hpux11.[01]*)
|
|
use_gcc_stdint=provide
|
|
tm_file="${tm_file} hpux-stdint.h"
|
|
;;
|
|
*-*-hpux11.[23]*)
|
|
use_gcc_stdint=wrap
|
|
tm_file="${tm_file} hpux-stdint.h"
|
|
;;
|
|
esac
|
|
;;
|
|
hppa[12]*-*-hpux11*)
|
|
case ${target} in
|
|
hppa1.1-*-* | hppa2*-*-*)
|
|
target_cpu_default="MASK_PA_11"
|
|
;;
|
|
esac
|
|
tm_file="${tm_file} pa/pa32-regs.h dbxelf.h pa/som.h \
|
|
pa/pa-hpux.h pa/pa-hpux1010.h pa/pa-hpux11.h"
|
|
extra_options="${extra_options} pa/pa-hpux.opt pa/pa-hpux1010.opt \
|
|
hpux11.opt"
|
|
case ${target} in
|
|
*-*-hpux11.[12]*)
|
|
tm_file="${tm_file} pa/pa-hpux1111.h"
|
|
extra_options="${extra_options} pa/pa-hpux1111.opt"
|
|
;;
|
|
*-*-hpux11.[3-9]*)
|
|
tm_file="${tm_file} pa/pa-hpux1131.h"
|
|
extra_options="${extra_options} pa/pa-hpux1131.opt"
|
|
;;
|
|
esac
|
|
tmake_file="pa/t-pa t-slibgcc"
|
|
d_target_objs="${d_target_objs} pa-d.o"
|
|
case x${enable_threads} in
|
|
x | xyes | xposix )
|
|
thread_file=posix
|
|
;;
|
|
esac
|
|
use_collect2=yes
|
|
gas=yes
|
|
case ${target} in
|
|
*-*-hpux11.[01]*)
|
|
use_gcc_stdint=provide
|
|
tm_file="${tm_file} hpux-stdint.h"
|
|
;;
|
|
*-*-hpux11.[23]*)
|
|
use_gcc_stdint=wrap
|
|
tm_file="${tm_file} hpux-stdint.h"
|
|
;;
|
|
esac
|
|
if test "x$with_dwarf2" != x; then
|
|
echo "Warning: dwarf2 debug format is not supported for this target, --with-dwarf2 ignored" 1>&2
|
|
dwarf2=no
|
|
fi
|
|
;;
|
|
i[34567]86-*-darwin1[89]*)
|
|
echo "Error: 32bit target is not supported after Darwin17" 1>&2
|
|
;;
|
|
i[34567]86-*-darwin*)
|
|
need_64bit_isa=yes
|
|
# Baseline choice for a machine that allows m64 support.
|
|
with_cpu=${with_cpu:-core2}
|
|
tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch t-slibgcc"
|
|
tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
|
|
;;
|
|
x86_64-*-darwin1[89]* | x86_64-*-darwin2[01]*)
|
|
# Only 64b from now
|
|
with_cpu=${with_cpu:-core2}
|
|
tmake_file="${tmake_file} t-slibgcc"
|
|
;;
|
|
x86_64-*-darwin*)
|
|
with_cpu=${with_cpu:-core2}
|
|
tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
|
|
tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h"
|
|
;;
|
|
i[34567]86-*-elfiamcu)
|
|
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/iamcu.h"
|
|
;;
|
|
i[34567]86-*-elf*)
|
|
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h"
|
|
;;
|
|
x86_64-*-elf*)
|
|
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h"
|
|
;;
|
|
x86_64-*-rtems*)
|
|
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h i386/rtemself.h rtems.h"
|
|
;;
|
|
i[34567]86-*-rdos*)
|
|
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/rdos.h"
|
|
;;
|
|
x86_64-*-rdos*)
|
|
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h i386/rdos.h i386/rdos64.h"
|
|
tmake_file="i386/t-i386elf t-svr4"
|
|
;;
|
|
i[34567]86-*-dragonfly*)
|
|
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h dragonfly.h dragonfly-stdint.h i386/dragonfly.h"
|
|
tmake_file="${tmake_file} i386/t-crtstuff"
|
|
;;
|
|
x86_64-*-dragonfly*)
|
|
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h dragonfly.h dragonfly-stdint.h i386/x86-64.h i386/dragonfly.h"
|
|
tmake_file="${tmake_file} i386/t-crtstuff"
|
|
;;
|
|
i[34567]86-*-freebsd*)
|
|
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
|
|
;;
|
|
x86_64-*-freebsd*)
|
|
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h"
|
|
;;
|
|
i[34567]86-*-netbsdelf*)
|
|
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${nbsd_tm_file} i386/netbsd-elf.h"
|
|
extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
|
|
;;
|
|
x86_64-*-netbsd*)
|
|
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${nbsd_tm_file} i386/x86-64.h i386/netbsd64.h"
|
|
extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
|
|
;;
|
|
i[34567]86-*-openbsd*)
|
|
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h"
|
|
tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/openbsdelf.h"
|
|
extra_options="${extra_options} openbsd.opt"
|
|
gas=yes
|
|
gnu_ld=yes
|
|
;;
|
|
x86_64-*-openbsd*)
|
|
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h"
|
|
tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/x86-64.h i386/openbsdelf.h"
|
|
extra_options="${extra_options} openbsd.opt"
|
|
gas=yes
|
|
gnu_ld=yes
|
|
;;
|
|
i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu)
|
|
# Intel 80386's running GNU/*
|
|
# with ELF format using glibc 2
|
|
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h gnu-user.h glibc-stdint.h"
|
|
case ${target} in
|
|
i[34567]86-*-linux*)
|
|
tm_file="${tm_file} linux.h linux-android.h"
|
|
extra_options="${extra_options} linux-android.opt"
|
|
if test x$enable_targets = xall; then
|
|
tm_file="${tm_file} i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h i386/linux-common.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_isa=yes
|
|
if test x$with_cpu = x; then
|
|
if test x$with_cpu_64 = x; then
|
|
with_cpu_64=generic
|
|
fi
|
|
else
|
|
case " $x86_cpus $x86_archs $x86_64_archs " in
|
|
*" $with_cpu "*)
|
|
;;
|
|
*)
|
|
echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
|
|
echo "$x86_cpus $x86_archs $x86_64_archs " 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
fi
|
|
else
|
|
tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h i386/linux-common.h i386/linux.h"
|
|
fi
|
|
;;
|
|
i[34567]86-*-kfreebsd*-gnu)
|
|
tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kfreebsd-gnu.h i386/kfreebsd-gnu.h"
|
|
;;
|
|
i[34567]86-*-kopensolaris*-gnu)
|
|
tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kopensolaris-gnu.h i386/kopensolaris-gnu.h"
|
|
;;
|
|
i[34567]86-*-gnu*)
|
|
tm_file="$tm_file i386/gnu-user-common.h i386/gnu-user.h gnu.h i386/gnu.h"
|
|
;;
|
|
esac
|
|
;;
|
|
x86_64-*-linux* | x86_64-*-kfreebsd*-gnu)
|
|
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h gnu-user.h glibc-stdint.h \
|
|
i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h"
|
|
case ${target} in
|
|
x86_64-*-linux*)
|
|
tm_file="${tm_file} linux.h linux-android.h i386/linux-common.h i386/linux64.h"
|
|
extra_options="${extra_options} linux-android.opt"
|
|
;;
|
|
x86_64-*-kfreebsd*-gnu)
|
|
tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu64.h"
|
|
;;
|
|
esac
|
|
tmake_file="${tmake_file} i386/t-linux64"
|
|
x86_multilibs="${with_multilib_list}"
|
|
if test "$x86_multilibs" = "default"; then
|
|
case ${with_abi} in
|
|
x32 | mx32)
|
|
x86_multilibs="mx32"
|
|
;;
|
|
*)
|
|
x86_multilibs="m64,m32"
|
|
;;
|
|
esac
|
|
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
|
|
tm_file="dbxcoff.h ${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/djgpp.h i386/djgpp-stdint.h"
|
|
native_system_header_dir=/dev/env/DJDIR/include
|
|
extra_options="${extra_options} i386/djgpp.opt"
|
|
gnu_ld=yes
|
|
gas=yes
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
i[34567]86-*-lynxos*)
|
|
xm_defines=POSIX
|
|
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/lynx.h lynx.h"
|
|
tmake_file="${tmake_file} t-lynx"
|
|
extra_options="${extra_options} lynx.opt"
|
|
thread_file=lynx
|
|
gnu_ld=yes
|
|
gas=yes
|
|
;;
|
|
i[34567]86-*-nto-qnx*)
|
|
tm_file="${tm_file} i386/att.h dbxelf.h tm-dwarf2.h elfos.h i386/unix.h i386/nto.h"
|
|
extra_options="${extra_options} i386/nto.opt"
|
|
gnu_ld=yes
|
|
gas=yes
|
|
;;
|
|
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"
|
|
;;
|
|
i[34567]86-*-solaris2* | x86_64-*-solaris2*)
|
|
# Set default arch_32 to pentium4, tune_32 to generic like the other
|
|
# i386 targets, although config.guess defaults to i386-pc-solaris2*.
|
|
with_arch_32=${with_arch_32:-pentium4}
|
|
with_tune_32=${with_tune_32:-generic}
|
|
tm_file="${tm_file} i386/unix.h i386/att.h ${sol2_tm_file_head} i386/x86-64.h ${sol2_tm_file_tail}"
|
|
tm_defines="${tm_defines} TARGET_BI_ARCH=1"
|
|
tmake_file="$tmake_file i386/t-sol2"
|
|
need_64bit_isa=yes
|
|
if test x$with_cpu = x; then
|
|
if test x$with_cpu_64 = x; then
|
|
with_cpu_64=generic
|
|
fi
|
|
else
|
|
case " $x86_cpus $x86_archs $x86_64_archs " in
|
|
*" $with_cpu "*)
|
|
;;
|
|
*)
|
|
echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
|
|
echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
fi
|
|
;;
|
|
i[4567]86-wrs-vxworks|i[4567]86-wrs-vxworksae|i[4567]86-wrs-vxworks7|x86_64-wrs-vxworks7)
|
|
tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
|
|
case ${target} in
|
|
x86_64-*)
|
|
need_64bit_isa=yes
|
|
tm_file="${tm_file} i386/x86-64.h"
|
|
;;
|
|
esac
|
|
tm_file="${tm_file} vx-common.h"
|
|
case ${target} in
|
|
*-vxworksae*)
|
|
tm_file="${tm_file} vxworksae.h i386/vxworks.h i386/vxworksae.h"
|
|
tmake_file="${tmake_file} i386/t-vxworks i386/t-vxworksae"
|
|
;;
|
|
*)
|
|
tm_file="${tm_file} vxworks.h i386/vxworks.h"
|
|
tmake_file="${tmake_file} i386/t-vxworks"
|
|
;;
|
|
esac
|
|
;;
|
|
i[34567]86-*-cygwin*)
|
|
tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/cygming.h i386/cygwin.h i386/cygwin-stdint.h"
|
|
xm_file=i386/xm-cygwin.h
|
|
tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
|
|
target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.c"
|
|
extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
|
|
extra_objs="${extra_objs} winnt.o winnt-stubs.o"
|
|
c_target_objs="${c_target_objs} msformat-c.o"
|
|
cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
|
|
if test x$enable_threads = xyes; then
|
|
thread_file='posix'
|
|
fi
|
|
default_use_cxa_atexit=yes
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
x86_64-*-cygwin*)
|
|
need_64bit_isa=yes
|
|
tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/cygming.h i386/cygwin.h i386/cygwin-w64.h i386/cygwin-stdint.h"
|
|
xm_file=i386/xm-cygwin.h
|
|
tmake_file="${tmake_file} i386/t-cygming t-slibgcc i386/t-cygwin-w64"
|
|
target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.c"
|
|
extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
|
|
extra_objs="${extra_objs} winnt.o winnt-stubs.o"
|
|
c_target_objs="${c_target_objs} msformat-c.o"
|
|
cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
|
|
if test x$enable_threads = xyes; then
|
|
thread_file='posix'
|
|
fi
|
|
default_use_cxa_atexit=yes
|
|
use_gcc_stdint=wrap
|
|
tm_defines="${tm_defines} TARGET_CYGWIN64=1"
|
|
;;
|
|
i[34567]86-*-mingw* | x86_64-*-mingw*)
|
|
tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/cygming.h"
|
|
xm_file=i386/xm-mingw32.h
|
|
c_target_objs="${c_target_objs} winnt-c.o"
|
|
cxx_target_objs="${cxx_target_objs} winnt-c.o"
|
|
target_has_targetcm="yes"
|
|
case ${target} in
|
|
x86_64-*-* | *-w64-*)
|
|
need_64bit_isa=yes
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
if test x$enable_threads = xposix ; then
|
|
tm_file="${tm_file} i386/mingw-pthread.h"
|
|
fi
|
|
tm_file="${tm_file} i386/mingw32.h"
|
|
# This makes the logic if mingw's or the w64 feature set has to be used
|
|
case ${target} in
|
|
*-w64-*)
|
|
user_headers_inc_next_post="${user_headers_inc_next_post} float.h"
|
|
user_headers_inc_next_pre="${user_headers_inc_next_pre} stddef.h stdarg.h"
|
|
tm_file="${tm_file} i386/mingw-w64.h"
|
|
if test x$enable_targets = xall; then
|
|
tm_defines="${tm_defines} TARGET_BI_ARCH=1"
|
|
if test x$with_cpu = x; then
|
|
if test x$with_cpu_64 = x; then
|
|
with_cpu_64=generic
|
|
fi
|
|
else
|
|
case " $x86_cpus $x86_archs $x86_64_archs " in
|
|
*" $with_cpu "*)
|
|
;;
|
|
*)
|
|
echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
|
|
echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
fi
|
|
fi
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
tm_file="${tm_file} i386/mingw-stdint.h"
|
|
tmake_file="${tmake_file} t-winnt i386/t-cygming t-slibgcc"
|
|
case ${target} in
|
|
x86_64-w64-*)
|
|
tmake_file="${tmake_file} i386/t-mingw-w64"
|
|
;;
|
|
i[34567]86-w64-*)
|
|
tmake_file="${tmake_file} i386/t-mingw-w32"
|
|
;;
|
|
esac
|
|
native_system_header_dir=/mingw/include
|
|
target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.c"
|
|
extra_options="${extra_options} i386/cygming.opt i386/mingw.opt"
|
|
case ${target} in
|
|
*-w64-*)
|
|
extra_options="${extra_options} i386/mingw-w64.opt"
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
extra_objs="${extra_objs} winnt.o winnt-stubs.o"
|
|
c_target_objs="${c_target_objs} msformat-c.o"
|
|
cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
|
|
gas=yes
|
|
gnu_ld=yes
|
|
default_use_cxa_atexit=yes
|
|
use_gcc_stdint=wrap
|
|
case ${enable_threads} in
|
|
"" | yes | win32)
|
|
thread_file='win32'
|
|
;;
|
|
posix)
|
|
thread_file='posix'
|
|
;;
|
|
esac
|
|
case ${target} in
|
|
*mingw32crt*)
|
|
tm_file="${tm_file} i386/crtdll.h"
|
|
;;
|
|
*mingw32msv* | *mingw*)
|
|
;;
|
|
esac
|
|
;;
|
|
x86_64-*-fuchsia*)
|
|
tmake_file="${tmake_file} i386/t-x86_64-elf"
|
|
tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h fuchsia.h"
|
|
;;
|
|
ia64*-*-elf*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h ia64/sysv4.h ia64/elf.h"
|
|
tmake_file="ia64/t-ia64"
|
|
target_cpu_default="0"
|
|
if test x$gas = xyes
|
|
then
|
|
target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
|
|
fi
|
|
if test x$gnu_ld = xyes
|
|
then
|
|
target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
|
|
fi
|
|
;;
|
|
ia64*-*-freebsd*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file} ia64/sysv4.h ia64/freebsd.h"
|
|
target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
|
|
tmake_file="${tmake_file} ia64/t-ia64"
|
|
;;
|
|
ia64*-*-linux*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ia64/sysv4.h ia64/linux.h"
|
|
tmake_file="${tmake_file} ia64/t-ia64 ia64/t-linux t-libunwind"
|
|
target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
|
|
;;
|
|
ia64*-*-hpux*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h ia64/sysv4.h ia64/hpux.h"
|
|
tmake_file="ia64/t-ia64 ia64/t-hpux t-slibgcc"
|
|
target_cpu_default="MASK_GNU_AS"
|
|
case x$enable_threads in
|
|
x | xyes | xposix )
|
|
thread_file=posix
|
|
;;
|
|
esac
|
|
use_collect2=no
|
|
c_target_objs="ia64-c.o"
|
|
cxx_target_objs="ia64-c.o"
|
|
extra_options="${extra_options} ia64/ilp32.opt hpux11.opt"
|
|
use_gcc_stdint=wrap
|
|
tm_file="${tm_file} hpux-stdint.h"
|
|
case ${target} in
|
|
*-*-hpux11.3*)
|
|
tm_file="${tm_file} ia64/hpux-unix2003.h"
|
|
;;
|
|
esac
|
|
;;
|
|
ia64-hp-*vms*)
|
|
tm_file="${tm_file} elfos.h ia64/sysv4.h vms/vms.h ia64/vms.h"
|
|
tmake_file="${tmake_file} ia64/t-ia64"
|
|
target_cpu_default="0"
|
|
if test x$gas = xyes
|
|
then
|
|
target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
|
|
fi
|
|
extra_options="${extra_options} ia64/vms.opt"
|
|
;;
|
|
iq2000*-*-elf*)
|
|
tm_file="elfos.h newlib-stdint.h iq2000/iq2000.h"
|
|
out_file=iq2000/iq2000.c
|
|
md_file=iq2000/iq2000.md
|
|
;;
|
|
lm32-*-elf*)
|
|
tm_file="dbxelf.h elfos.h ${tm_file} newlib-stdint.h"
|
|
tmake_file="${tmake_file} lm32/t-lm32"
|
|
;;
|
|
lm32-*-rtems*)
|
|
tm_file="dbxelf.h elfos.h ${tm_file} lm32/rtems.h rtems.h newlib-stdint.h"
|
|
tmake_file="${tmake_file} lm32/t-lm32"
|
|
tmake_file="${tmake_file} lm32/t-rtems"
|
|
;;
|
|
lm32-*-uclinux*)
|
|
tm_file="dbxelf.h elfos.h ${tm_file} gnu-user.h linux.h lm32/uclinux-elf.h"
|
|
tmake_file="${tmake_file} lm32/t-lm32"
|
|
;;
|
|
m32r-*-elf*)
|
|
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
|
|
;;
|
|
m32rle-*-elf*)
|
|
tm_file="dbxelf.h elfos.h newlib-stdint.h m32r/little.h ${tm_file}"
|
|
;;
|
|
m32r-*-linux*)
|
|
tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} m32r/linux.h"
|
|
tmake_file="${tmake_file} m32r/t-linux t-slibgcc"
|
|
gnu_ld=yes
|
|
if test x$enable_threads = xyes; then
|
|
thread_file='posix'
|
|
fi
|
|
;;
|
|
m32rle-*-linux*)
|
|
tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h m32r/little.h ${tm_file} m32r/linux.h"
|
|
tmake_file="${tmake_file} m32r/t-linux t-slibgcc"
|
|
gnu_ld=yes
|
|
if test x$enable_threads = xyes; then
|
|
thread_file='posix'
|
|
fi
|
|
;;
|
|
m68k-*-elf* | fido-*-elf*)
|
|
case ${target} in
|
|
fido-*-elf*)
|
|
# Check that $with_cpu makes sense.
|
|
case $with_cpu in
|
|
"" | "fidoa")
|
|
;;
|
|
*)
|
|
echo "Cannot accept --with-cpu=$with_cpu"
|
|
exit 1
|
|
;;
|
|
esac
|
|
with_cpu=fidoa
|
|
;;
|
|
*)
|
|
default_m68k_cpu=68020
|
|
default_cf_cpu=5206
|
|
;;
|
|
esac
|
|
tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h newlib-stdint.h m68k/m68kemb.h m68k/m68020-elf.h"
|
|
tm_defines="${tm_defines} MOTOROLA=1"
|
|
tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-m68kelf"
|
|
# Add multilibs for targets other than fido.
|
|
case ${target} in
|
|
fido-*-elf*)
|
|
;;
|
|
*)
|
|
tmake_file="$tmake_file m68k/t-mlibs"
|
|
;;
|
|
esac
|
|
;;
|
|
m68k*-*-netbsdelf*)
|
|
default_m68k_cpu=68020
|
|
default_cf_cpu=5475
|
|
tm_file="${tm_file} dbxelf.h elfos.h ${nbsd_tm_file} m68k/netbsd-elf.h"
|
|
extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
|
|
tm_defines="${tm_defines} MOTOROLA=1 CHAR_FAST8=1 SHORT_FAST16=1"
|
|
;;
|
|
m68k*-*-openbsd*)
|
|
default_m68k_cpu=68020
|
|
default_cf_cpu=5475
|
|
# needed to unconfuse gdb
|
|
tm_defines="${tm_defines} OBSD_OLD_GAS"
|
|
tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h m68k/openbsd.h"
|
|
extra_options="${extra_options} openbsd.opt"
|
|
tmake_file="t-openbsd m68k/t-openbsd"
|
|
# we need collect2 until our bug is fixed...
|
|
use_collect2=yes
|
|
;;
|
|
m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux
|
|
# with uClibc, using the new GNU/Linux-style
|
|
# ABI.
|
|
default_m68k_cpu=68020
|
|
default_cf_cpu=5206
|
|
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h flat.h m68k/linux.h m68k/uclinux.h ./sysroot-suffix.h"
|
|
extra_options="${extra_options} m68k/uclinux.opt"
|
|
tm_defines="${tm_defines} MOTOROLA=1"
|
|
tmake_file="m68k/t-floatlib m68k/t-uclinux m68k/t-mlibs"
|
|
;;
|
|
m68k-*-linux*) # Motorola m68k's running GNU/Linux
|
|
# with ELF format using glibc 2
|
|
# aka the GNU/Linux C library 6.
|
|
default_m68k_cpu=68020
|
|
default_cf_cpu=5475
|
|
with_arch=${with_arch:-m68k}
|
|
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h m68k/linux.h ./sysroot-suffix.h"
|
|
extra_options="${extra_options} m68k/ieee.opt"
|
|
tm_defines="${tm_defines} MOTOROLA=1"
|
|
tmake_file="${tmake_file} m68k/t-floatlib m68k/t-linux m68k/t-mlibs"
|
|
;;
|
|
m68k-*-rtems*)
|
|
default_m68k_cpu=68020
|
|
default_cf_cpu=5206
|
|
tmake_file="${tmake_file} m68k/t-floatlib m68k/t-m68kbare m68k/t-crtstuff m68k/t-rtems m68k/t-mlibs"
|
|
tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h m68k/m68kemb.h m68k/m68020-elf.h m68k/rtemself.h rtems.h newlib-stdint.h"
|
|
tm_defines="${tm_defines} MOTOROLA=1"
|
|
;;
|
|
mcore-*-elf)
|
|
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file} mcore/mcore-elf.h"
|
|
tmake_file=mcore/t-mcore
|
|
inhibit_libc=true
|
|
;;
|
|
microblaze*-linux*)
|
|
case $target in
|
|
microblazeel-*)
|
|
tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
|
|
;;
|
|
microblaze-*)
|
|
tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
|
|
;;
|
|
esac
|
|
tm_file="${tm_file} dbxelf.h gnu-user.h linux.h microblaze/linux.h"
|
|
tm_file="${tm_file} glibc-stdint.h"
|
|
c_target_objs="${c_target_objs} microblaze-c.o"
|
|
cxx_target_objs="${cxx_target_objs} microblaze-c.o"
|
|
tmake_file="${tmake_file} microblaze/t-microblaze"
|
|
tmake_file="${tmake_file} microblaze/t-microblaze-linux"
|
|
;;
|
|
microblaze*-*-rtems*)
|
|
case $target in
|
|
microblazeel-*)
|
|
tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
|
|
;;
|
|
microblaze-*)
|
|
tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
|
|
;;
|
|
esac
|
|
tm_file="${tm_file} dbxelf.h"
|
|
tm_file="${tm_file} microblaze/rtems.h rtems.h newlib-stdint.h"
|
|
c_target_objs="${c_target_objs} microblaze-c.o"
|
|
cxx_target_objs="${cxx_target_objs} microblaze-c.o"
|
|
tmake_file="${tmake_file} microblaze/t-microblaze"
|
|
tmake_file="${tmake_file} microblaze/t-rtems"
|
|
;;
|
|
microblaze*-*-elf)
|
|
case $target in
|
|
microblazeel-*)
|
|
tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
|
|
;;
|
|
microblaze-*)
|
|
tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
|
|
;;
|
|
esac
|
|
tm_file="${tm_file} dbxelf.h newlib-stdint.h"
|
|
c_target_objs="${c_target_objs} microblaze-c.o"
|
|
cxx_target_objs="${cxx_target_objs} microblaze-c.o"
|
|
tmake_file="${tmake_file} microblaze/t-microblaze"
|
|
;;
|
|
riscv*-*-linux*)
|
|
tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} riscv/linux.h"
|
|
case "x${enable_multilib}" in
|
|
xno) ;;
|
|
xyes) tmake_file="${tmake_file} riscv/t-linux-multilib" ;;
|
|
*) echo "Unknown value for enable_multilib"; exit 1
|
|
esac
|
|
tmake_file="${tmake_file} riscv/t-riscv riscv/t-linux"
|
|
gnu_ld=yes
|
|
gas=yes
|
|
# Force .init_array support. The configure script cannot always
|
|
# automatically detect that GAS supports it, yet we require it.
|
|
gcc_cv_initfini_array=yes
|
|
;;
|
|
riscv*-*-elf* | riscv*-*-rtems*)
|
|
tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h"
|
|
case ${target} in
|
|
*-*-rtems*)
|
|
tm_file="${tm_file} rtems.h riscv/rtems.h"
|
|
tmake_file="${tmake_file} riscv/t-rtems"
|
|
;;
|
|
*)
|
|
case "x${enable_multilib}" in
|
|
xno) ;;
|
|
xyes) tmake_file="${tmake_file} riscv/t-elf-multilib" ;;
|
|
*) echo "Unknown value for enable_multilib"; exit 1
|
|
esac
|
|
esac
|
|
tmake_file="${tmake_file} riscv/t-riscv"
|
|
gnu_ld=yes
|
|
gas=yes
|
|
# Force .init_array support. The configure script cannot always
|
|
# automatically detect that GAS supports it, yet we require it.
|
|
gcc_cv_initfini_array=yes
|
|
;;
|
|
riscv*-*-freebsd*)
|
|
tm_file="${tm_file} elfos.h ${fbsd_tm_file} riscv/freebsd.h"
|
|
tmake_file="${tmake_file} riscv/t-riscv"
|
|
gnu_ld=yes
|
|
gas=yes
|
|
# Force .init_array support. The configure script cannot always
|
|
# automatically detect that GAS supports it, yet we require it.
|
|
gcc_cv_initfini_array=yes
|
|
;;
|
|
mips*-*-netbsd*) # NetBSD/mips, either endian.
|
|
target_cpu_default="MASK_ABICALLS"
|
|
tm_file="elfos.h ${tm_file} mips/elf.h ${nbsd_tm_file} mips/netbsd.h"
|
|
extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
|
|
;;
|
|
mips*-img-linux*)
|
|
tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h mips/linux-common.h mips/mti-linux.h"
|
|
extra_options="${extra_options} linux-android.opt"
|
|
tmake_file="${tmake_file} mips/t-img-linux"
|
|
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=37 MIPS_ABI_DEFAULT=ABI_32"
|
|
with_arch_32="mips32r6"
|
|
with_arch_64="mips64r6"
|
|
gnu_ld=yes
|
|
gas=yes
|
|
;;
|
|
mips*-mti-linux*)
|
|
tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h mips/linux-common.h mips/mti-linux.h"
|
|
extra_options="${extra_options} linux-android.opt"
|
|
tmake_file="${tmake_file} mips/t-mti-linux"
|
|
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33 MIPS_ABI_DEFAULT=ABI_32"
|
|
with_arch_32="mips32r2"
|
|
with_arch_64="mips64r2"
|
|
gnu_ld=yes
|
|
gas=yes
|
|
;;
|
|
mips*-*-linux*) # Linux MIPS, either endian.
|
|
tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h mips/linux-common.h"
|
|
extra_options="${extra_options} linux-android.opt"
|
|
case ${target} in
|
|
mipsisa32r6*)
|
|
default_mips_arch=mips32r6
|
|
;;
|
|
mipsisa32r2*)
|
|
default_mips_arch=mips32r2
|
|
;;
|
|
mipsisa32*)
|
|
default_mips_arch=mips32
|
|
;;
|
|
mips64el-st-linux-gnu)
|
|
default_mips_abi=n32
|
|
tm_file="${tm_file} mips/st.h"
|
|
tmake_file="${tmake_file} mips/t-st"
|
|
enable_mips_multilibs="yes"
|
|
;;
|
|
mips64octeon*-*-linux*)
|
|
default_mips_abi=n32
|
|
tm_defines="${tm_defines} MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\""
|
|
target_cpu_default=MASK_SOFT_FLOAT_ABI
|
|
enable_mips_multilibs="yes"
|
|
;;
|
|
mipsisa64r6*-*-linux*)
|
|
default_mips_abi=n32
|
|
default_mips_arch=mips64r6
|
|
enable_mips_multilibs="yes"
|
|
;;
|
|
mipsisa64r2*-*-linux*)
|
|
default_mips_abi=n32
|
|
default_mips_arch=mips64r2
|
|
enable_mips_multilibs="yes"
|
|
;;
|
|
mips64*-*-linux* | mipsisa64*-*-linux*)
|
|
default_mips_abi=n32
|
|
enable_mips_multilibs="yes"
|
|
;;
|
|
esac
|
|
if test x$enable_targets = xall; then
|
|
enable_mips_multilibs="yes"
|
|
fi
|
|
if test x$enable_mips_multilibs = xyes; then
|
|
tmake_file="${tmake_file} mips/t-linux64"
|
|
fi
|
|
;;
|
|
mips*-mti-elf*)
|
|
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
|
|
tmake_file="mips/t-mti-elf"
|
|
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33 MIPS_ABI_DEFAULT=ABI_32"
|
|
with_arch_32="mips32r2"
|
|
with_arch_64="mips64r2"
|
|
;;
|
|
mips*-img-elf*)
|
|
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
|
|
tmake_file="mips/t-img-elf"
|
|
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=37 MIPS_ABI_DEFAULT=ABI_32"
|
|
with_arch_32="mips32r6"
|
|
with_arch_64="mips64r6"
|
|
;;
|
|
mips*-sde-elf*)
|
|
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h"
|
|
tmake_file="mips/t-sde"
|
|
extra_options="${extra_options} mips/sde.opt"
|
|
case "${with_newlib}" in
|
|
yes)
|
|
# newlib / libgloss.
|
|
;;
|
|
*)
|
|
# MIPS toolkit libraries.
|
|
tm_file="$tm_file mips/sdemtk.h"
|
|
tmake_file="$tmake_file mips/t-sdemtk"
|
|
case ${enable_threads} in
|
|
"" | yes | mipssde)
|
|
thread_file='mipssde'
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
case ${target} in
|
|
mipsisa32r6*)
|
|
tm_defines="MIPS_ISA_DEFAULT=37 MIPS_ABI_DEFAULT=ABI_32"
|
|
;;
|
|
mipsisa32r2*)
|
|
tm_defines="MIPS_ISA_DEFAULT=33 MIPS_ABI_DEFAULT=ABI_32"
|
|
;;
|
|
mipsisa32*)
|
|
tm_defines="MIPS_ISA_DEFAULT=32 MIPS_ABI_DEFAULT=ABI_32"
|
|
;;
|
|
mipsisa64r6*)
|
|
tm_defines="MIPS_ISA_DEFAULT=69 MIPS_ABI_DEFAULT=ABI_N32"
|
|
;;
|
|
mipsisa64r2*)
|
|
tm_defines="MIPS_ISA_DEFAULT=65 MIPS_ABI_DEFAULT=ABI_N32"
|
|
;;
|
|
mipsisa64*)
|
|
tm_defines="MIPS_ISA_DEFAULT=64 MIPS_ABI_DEFAULT=ABI_N32"
|
|
;;
|
|
esac
|
|
;;
|
|
mipsisa32-*-elf* | mipsisa32el-*-elf* | \
|
|
mipsisa32r2-*-elf* | mipsisa32r2el-*-elf* | \
|
|
mipsisa32r6-*-elf* | mipsisa32r6el-*-elf* | \
|
|
mipsisa64-*-elf* | mipsisa64el-*-elf* | \
|
|
mipsisa64r2-*-elf* | mipsisa64r2el-*-elf* | \
|
|
mipsisa64r6-*-elf* | mipsisa64r6el-*-elf*)
|
|
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
|
|
tmake_file="mips/t-isa3264"
|
|
case ${target} in
|
|
mipsisa32r6*)
|
|
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=37"
|
|
;;
|
|
mipsisa32r2*)
|
|
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33"
|
|
;;
|
|
mipsisa32*)
|
|
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=32"
|
|
;;
|
|
mipsisa64r6*)
|
|
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=69"
|
|
;;
|
|
mipsisa64r2*)
|
|
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=65"
|
|
;;
|
|
mipsisa64*)
|
|
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=64"
|
|
;;
|
|
esac
|
|
case ${target} in
|
|
mipsisa32*-*-elfoabi*)
|
|
tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_32"
|
|
tm_file="${tm_file} mips/elfoabi.h"
|
|
;;
|
|
mipsisa64*-*-elfoabi*)
|
|
tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_O64"
|
|
tm_file="${tm_file} mips/elfoabi.h"
|
|
;;
|
|
*-*-elf*)
|
|
tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
|
|
;;
|
|
esac
|
|
;;
|
|
mipsisa64sr71k-*-elf*)
|
|
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
|
|
tmake_file=mips/t-sr71k
|
|
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=64 MIPS_CPU_STRING_DEFAULT=\\\"sr71000\\\" MIPS_ABI_DEFAULT=ABI_EABI"
|
|
;;
|
|
mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*)
|
|
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
|
|
tmake_file="mips/t-elf mips/t-sb1"
|
|
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=64 MIPS_CPU_STRING_DEFAULT=\\\"sb1\\\" MIPS_ABI_DEFAULT=ABI_O64"
|
|
;;
|
|
mips-*-elf* | mipsel-*-elf* | mipsr5900-*-elf* | mipsr5900el-*-elf*)
|
|
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
|
|
tmake_file="mips/t-elf"
|
|
;;
|
|
mips64r5900-*-elf* | mips64r5900el-*-elf*)
|
|
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h"
|
|
tmake_file="mips/t-elf"
|
|
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_N32"
|
|
;;
|
|
mips64-*-elf* | mips64el-*-elf*)
|
|
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
|
|
tmake_file="mips/t-elf"
|
|
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64"
|
|
;;
|
|
mips64vr-*-elf* | mips64vrel-*-elf*)
|
|
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/vr.h mips/elf.h"
|
|
tmake_file=mips/t-vr
|
|
tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
|
|
;;
|
|
mips64orion-*-elf* | mips64orionel-*-elf*)
|
|
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elforion.h mips/elf.h"
|
|
tmake_file="mips/t-elf"
|
|
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64"
|
|
;;
|
|
mips*-*-rtems*)
|
|
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/rtems.h rtems.h"
|
|
tmake_file="${tmake_file} mips/t-elf mips/t-rtems"
|
|
;;
|
|
mips-wrs-vxworks)
|
|
tm_file="elfos.h ${tm_file} mips/elf.h vx-common.h vxworks.h mips/vxworks.h"
|
|
tmake_file="${tmake_file} mips/t-vxworks"
|
|
;;
|
|
mipstx39-*-elf* | mipstx39el-*-elf*)
|
|
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/r3900.h mips/elf.h"
|
|
tmake_file="mips/t-r3900"
|
|
;;
|
|
mmix-knuth-mmixware)
|
|
tm_file="${tm_file} newlib-stdint.h"
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
mn10300-*-*)
|
|
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
|
|
if test x$stabs = xyes
|
|
then
|
|
tm_file="${tm_file} dbx.h"
|
|
fi
|
|
use_collect2=no
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
msp430-*-*)
|
|
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
|
|
c_target_objs="msp430-c.o"
|
|
cxx_target_objs="msp430-c.o"
|
|
tmake_file="${tmake_file} msp430/t-msp430"
|
|
extra_objs="${extra_objs} msp430-devices.o"
|
|
extra_gcc_objs="driver-msp430.o msp430-devices.o"
|
|
# Enable .init_array unless it has been explicitly disabled.
|
|
# The MSP430 EABI mandates the use of .init_array, and the Newlib CRT
|
|
# code since mid-2019 expects it.
|
|
if test x${disable_initfini_array} != xyes; then
|
|
gcc_cv_initfini_array=yes
|
|
fi
|
|
case ${target} in
|
|
msp430-*-elfbare)
|
|
# __cxa_atexit increases code size, and we don't need to support
|
|
# dynamic shared objects on MSP430, so regular Newlib atexit is a
|
|
# fine replacement as it also supports registration of more than 32
|
|
# functions.
|
|
default_use_cxa_atexit=no
|
|
# This target does not match the generic *-*-elf case above which
|
|
# sets use_gcc_stdint=wrap, so explicitly set it here.
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
esac
|
|
;;
|
|
nds32*-*-*)
|
|
target_cpu_default="0"
|
|
tm_defines="${tm_defines}"
|
|
case ${target} in
|
|
nds32le*-*-*)
|
|
;;
|
|
nds32be-*-*)
|
|
target_cpu_default="${target_cpu_default}|MASK_BIG_ENDIAN"
|
|
tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
|
|
;;
|
|
esac
|
|
case ${target} in
|
|
nds32*-*-elf*)
|
|
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file} nds32/elf.h nds32/nds32_intrinsic.h"
|
|
tmake_file="nds32/t-nds32 nds32/t-elf"
|
|
;;
|
|
nds32*-*-linux*)
|
|
tm_file="dbxelf.h elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h nds32/linux.h nds32/nds32_intrinsic.h"
|
|
tmake_file="${tmake_file} nds32/t-nds32 nds32/t-linux"
|
|
gcc_cv_initfini_array=yes
|
|
;;
|
|
esac
|
|
|
|
# Handle --enable-default-relax setting.
|
|
if test x${enable_default_relax} = xyes; then
|
|
tm_defines="${tm_defines} TARGET_DEFAULT_RELAX=1"
|
|
fi
|
|
# Handle --with-ext-dsp
|
|
if test x${with_ext_dsp} = xyes; then
|
|
tm_defines="${tm_defines} TARGET_DEFAULT_EXT_DSP=1"
|
|
fi
|
|
;;
|
|
nios2-*-*)
|
|
tm_file="elfos.h ${tm_file}"
|
|
tmake_file="${tmake_file} nios2/t-nios2"
|
|
case ${target} in
|
|
nios2-*-linux*)
|
|
tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h nios2/linux.h "
|
|
;;
|
|
nios2-*-elf*)
|
|
tm_file="${tm_file} newlib-stdint.h nios2/elf.h"
|
|
extra_options="${extra_options} nios2/elf.opt"
|
|
;;
|
|
nios2-*-rtems*)
|
|
tm_file="${tm_file} newlib-stdint.h nios2/rtems.h rtems.h"
|
|
tmake_file="${tmake_file} t-rtems nios2/t-rtems"
|
|
;;
|
|
esac
|
|
;;
|
|
nvptx-*)
|
|
tm_file="${tm_file} newlib-stdint.h"
|
|
use_gcc_stdint=wrap
|
|
tmake_file="nvptx/t-nvptx"
|
|
if test x$enable_as_accelerator = xyes; then
|
|
extra_programs="${extra_programs} mkoffload\$(exeext)"
|
|
tm_file="${tm_file} nvptx/offload.h"
|
|
fi
|
|
;;
|
|
or1k*-*-*)
|
|
tm_file="elfos.h ${tm_file}"
|
|
tmake_file="${tmake_file} or1k/t-or1k"
|
|
# Force .init_array support. The configure script cannot always
|
|
# automatically detect that GAS supports it, yet we require it.
|
|
gcc_cv_initfini_array=yes
|
|
|
|
# Handle --with-multilib-list=...
|
|
or1k_multilibs="${with_multilib_list}"
|
|
if test "$or1k_multilibs" = "default"; then
|
|
or1k_multilibs="mcmov,msoft-mul,msoft-div"
|
|
fi
|
|
or1k_multilibs=`echo $or1k_multilibs | sed -e 's/,/ /g'`
|
|
for or1k_multilib in ${or1k_multilibs}; do
|
|
case ${or1k_multilib} in
|
|
mcmov | msext | msfimm | \
|
|
mror | mrori | \
|
|
mhard-float | mdouble-float | munordered-float | msoft-float | \
|
|
mhard-div | mhard-mul | \
|
|
msoft-div | msoft-mul )
|
|
TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${or1k_multilib}"
|
|
;;
|
|
*)
|
|
echo "--with-multilib-list=${with_multilib_list} not supported."
|
|
exit 1
|
|
esac
|
|
done
|
|
TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
|
|
|
|
case ${target} in
|
|
or1k*-*-linux*)
|
|
tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h"
|
|
tm_file="${tm_file} or1k/linux.h"
|
|
;;
|
|
or1k*-*-elf*)
|
|
tm_file="${tm_file} newlib-stdint.h or1k/elf.h"
|
|
extra_options="${extra_options} or1k/elf.opt"
|
|
;;
|
|
or1k*-*-rtems*)
|
|
tm_file="${tm_file} newlib-stdint.h or1k/rtems.h rtems.h"
|
|
tmake_file="${tmake_file} or1k/t-rtems"
|
|
;;
|
|
esac
|
|
;;
|
|
pdp11-*-*)
|
|
tm_file="${tm_file} newlib-stdint.h"
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
# port not yet contributed
|
|
#powerpc-*-openbsd*)
|
|
# tmake_file="${tmake_file} rs6000/t-fprules"
|
|
# extra_headers=
|
|
# ;;
|
|
powerpc-*-darwin*)
|
|
extra_options="${extra_options} ${cpu_type}/darwin.opt"
|
|
case ${target} in
|
|
*-darwin1[0-9]* | *-darwin9*)
|
|
tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
|
|
tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
|
|
;;
|
|
*-darwin8*)
|
|
tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
|
|
tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
|
|
tm_file="${tm_file} ${cpu_type}/darwin8.h"
|
|
;;
|
|
*-darwin7*)
|
|
tm_file="${tm_file} ${cpu_type}/darwin7.h"
|
|
;;
|
|
*-darwin[456]*)
|
|
# Earlier - ingle arch, with 32b only
|
|
# OS X 10.0, the first edition is Darwin4
|
|
;;
|
|
esac
|
|
tmake_file="${tmake_file} t-slibgcc"
|
|
;;
|
|
powerpc64-*-darwin*)
|
|
extra_options="${extra_options} ${cpu_type}/darwin.opt"
|
|
tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
|
|
tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h"
|
|
;;
|
|
powerpc*-*-freebsd*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h ${fbsd_tm_file} rs6000/sysv4.h"
|
|
extra_options="${extra_options} rs6000/sysv4.opt"
|
|
tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
|
|
case ${target} in
|
|
powerpc64*)
|
|
tm_file="${tm_file} rs6000/default64.h rs6000/freebsd64.h"
|
|
tmake_file="${tmake_file} rs6000/t-freebsd64"
|
|
extra_options="${extra_options} rs6000/linux64.opt"
|
|
if test $fbsd_major -ge 13; then
|
|
tm_defines="${tm_defines} TARGET_FREEBSD32_SECURE_PLT=1"
|
|
fi
|
|
;;
|
|
*)
|
|
if test $fbsd_major -ge 13; then
|
|
tm_file="rs6000/secureplt.h ${tm_file}"
|
|
fi
|
|
tm_file="${tm_file} rs6000/freebsd.h"
|
|
;;
|
|
esac
|
|
;;
|
|
powerpc-*-netbsd*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h ${nbsd_tm_file} freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h"
|
|
extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
|
|
tmake_file="${tmake_file} rs6000/t-netbsd"
|
|
extra_options="${extra_options} rs6000/sysv4.opt"
|
|
;;
|
|
powerpc-*-eabisimaltivec*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabisim.h rs6000/eabialtivec.h"
|
|
extra_options="${extra_options} rs6000/sysv4.opt"
|
|
tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
powerpc-*-eabisim*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabisim.h"
|
|
extra_options="${extra_options} rs6000/sysv4.opt"
|
|
tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
powerpc-*-elf*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h"
|
|
extra_options="${extra_options} rs6000/sysv4.opt"
|
|
tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
|
|
;;
|
|
powerpc-*-eabialtivec*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabialtivec.h"
|
|
extra_options="${extra_options} rs6000/sysv4.opt"
|
|
tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
powerpc-*-eabi*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h"
|
|
extra_options="${extra_options} rs6000/sysv4.opt"
|
|
tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
powerpc-*-rtems*)
|
|
tm_file="rs6000/biarch64.h ${tm_file} dbxelf.h elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/rtems.h rtems.h"
|
|
extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
|
|
tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-rtems rs6000/t-ppccomm"
|
|
;;
|
|
powerpc*-*-linux*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h freebsd-spec.h rs6000/sysv4.h"
|
|
extra_options="${extra_options} rs6000/sysv4.opt"
|
|
tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm"
|
|
extra_objs="$extra_objs rs6000-linux.o"
|
|
case ${target} in
|
|
powerpc*le-*-*)
|
|
tm_file="${tm_file} rs6000/sysv4le.h" ;;
|
|
esac
|
|
case ${target}:${with_cpu} in
|
|
powerpc64*: | powerpc64*:native) cpu_is_64bit=yes ;;
|
|
esac
|
|
maybe_biarch=${cpu_is_64bit}
|
|
case ${enable_targets} in
|
|
*powerpc64*) maybe_biarch=yes ;;
|
|
all) maybe_biarch=yes ;;
|
|
esac
|
|
case ${target}:${enable_targets}:${maybe_biarch} in
|
|
powerpc64-* | powerpc-*:*:yes | *:*powerpc64-*:yes | *:all:yes \
|
|
| powerpc64le*:*powerpcle* | powerpc64le*:*powerpc-* \
|
|
| powerpcle-*:*powerpc64le*:yes)
|
|
if test x$cpu_is_64bit = xyes; then
|
|
tm_file="${tm_file} rs6000/default64.h"
|
|
fi
|
|
tm_file="rs6000/biarch64.h ${tm_file} rs6000/linux64.h glibc-stdint.h"
|
|
tmake_file="$tmake_file rs6000/t-linux64"
|
|
case ${target} in
|
|
powerpc*le-*-*)
|
|
tmake_file="$tmake_file rs6000/t-linux64le"
|
|
case ${enable_targets} in
|
|
all | *powerpc64-* | *powerpc-*)
|
|
tmake_file="$tmake_file rs6000/t-linux64lebe" ;;
|
|
esac ;;
|
|
*)
|
|
case ${enable_targets} in
|
|
all | *powerpc64le-* | *powerpcle-*)
|
|
tmake_file="$tmake_file rs6000/t-linux64bele" ;;
|
|
esac ;;
|
|
esac
|
|
extra_options="${extra_options} rs6000/linux64.opt"
|
|
;;
|
|
powerpc64*)
|
|
tm_file="${tm_file} rs6000/default64.h rs6000/linux64.h glibc-stdint.h"
|
|
extra_options="${extra_options} rs6000/linux64.opt"
|
|
tmake_file="${tmake_file} rs6000/t-linux"
|
|
;;
|
|
*)
|
|
tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
|
|
tmake_file="${tmake_file} rs6000/t-ppcos rs6000/t-linux"
|
|
;;
|
|
esac
|
|
case ${target} in
|
|
powerpc*-*-linux*ppc476*)
|
|
tm_file="${tm_file} rs6000/476.h"
|
|
extra_options="${extra_options} rs6000/476.opt" ;;
|
|
powerpc*-*-linux*altivec*)
|
|
tm_file="${tm_file} rs6000/linuxaltivec.h" ;;
|
|
esac
|
|
case ${target} in
|
|
*-linux*-musl*)
|
|
enable_secureplt=yes ;;
|
|
esac
|
|
if test x${enable_secureplt} = xyes; then
|
|
tm_file="rs6000/secureplt.h ${tm_file}"
|
|
fi
|
|
;;
|
|
powerpc-wrs-vxworks*)
|
|
tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h rs6000/sysv4.h"
|
|
tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm rs6000/t-vxworks"
|
|
extra_options="${extra_options} rs6000/sysv4.opt"
|
|
extra_headers="${extra_headers} ppc-asm.h"
|
|
case ${target} in
|
|
*-vxworksmils*)
|
|
tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksmils.h"
|
|
tmake_file="${tmake_file} rs6000/t-vxworksmils"
|
|
;;
|
|
*-vxworksae*)
|
|
tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksae.h"
|
|
tmake_file="${tmake_file} rs6000/t-vxworksae"
|
|
;;
|
|
*-vxworks*)
|
|
tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
|
|
;;
|
|
esac
|
|
;;
|
|
powerpc-*-lynxos*)
|
|
xm_defines=POSIX
|
|
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h rs6000/sysv4.h rs6000/lynx.h lynx.h"
|
|
tmake_file="t-lynx rs6000/t-lynx"
|
|
extra_options="${extra_options} rs6000/sysv4.opt lynx.opt"
|
|
thread_file=lynx
|
|
gnu_ld=yes
|
|
gas=yes
|
|
;;
|
|
powerpcle-*-elf*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h"
|
|
tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
|
|
extra_options="${extra_options} rs6000/sysv4.opt"
|
|
;;
|
|
powerpcle-*-eabisim*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h rs6000/eabisim.h"
|
|
tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
|
|
extra_options="${extra_options} rs6000/sysv4.opt"
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
powerpcle-*-eabi*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h"
|
|
tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
|
|
extra_options="${extra_options} rs6000/sysv4.opt"
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
pru*-*-*)
|
|
tm_file="elfos.h newlib-stdint.h ${tm_file}"
|
|
tmake_file="${tmake_file} pru/t-pru"
|
|
extra_objs="pru-pragma.o pru-passes.o"
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
rs6000-ibm-aix6.* | powerpc-ibm-aix6.*)
|
|
tm_file="${tm_file} rs6000/aix.h rs6000/aix61.h rs6000/xcoff.h rs6000/aix-stdint.h"
|
|
tmake_file="rs6000/t-aix52 t-slibgcc"
|
|
extra_options="${extra_options} rs6000/aix64.opt"
|
|
use_collect2=yes
|
|
thread_file='aix'
|
|
use_gcc_stdint=wrap
|
|
default_use_cxa_atexit=yes
|
|
;;
|
|
rs6000-ibm-aix7.1.* | powerpc-ibm-aix7.1.*)
|
|
tm_file="${tm_file} rs6000/aix.h rs6000/aix71.h rs6000/xcoff.h rs6000/aix-stdint.h"
|
|
tmake_file="rs6000/t-aix52 t-slibgcc"
|
|
extra_options="${extra_options} rs6000/aix64.opt"
|
|
use_collect2=yes
|
|
thread_file='aix'
|
|
use_gcc_stdint=wrap
|
|
default_use_cxa_atexit=yes
|
|
;;
|
|
rs6000-ibm-aix[789].* | powerpc-ibm-aix[789].*)
|
|
tm_file="${tm_file} rs6000/aix.h rs6000/aix72.h rs6000/xcoff.h rs6000/aix-stdint.h"
|
|
tmake_file="rs6000/t-aix52 t-slibgcc"
|
|
extra_options="${extra_options} rs6000/aix64.opt"
|
|
use_collect2=yes
|
|
thread_file='aix'
|
|
use_gcc_stdint=wrap
|
|
default_use_cxa_atexit=yes
|
|
;;
|
|
rl78-*-elf*)
|
|
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
|
|
target_has_targetm_common=no
|
|
c_target_objs="rl78-c.o"
|
|
cxx_target_objs="rl78-c.o"
|
|
tmake_file="${tmake_file} rl78/t-rl78"
|
|
;;
|
|
rx-*-elf*)
|
|
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
|
|
tmake_file="${tmake_file} rx/t-rx"
|
|
extra_options="${extra_options} rx/elf.opt"
|
|
;;
|
|
rx-*-linux*)
|
|
tm_file="elfos.h linux.h glibc-stdint.h rx/linux.h ../../libgcc/config/rx/rx-abi.h"
|
|
tmake_file="${tmake_file} rx/t-linux"
|
|
;;
|
|
s390-*-linux*)
|
|
tm_file="s390/s390.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
|
|
c_target_objs="${c_target_objs} s390-c.o"
|
|
cxx_target_objs="${cxx_target_objs} s390-c.o"
|
|
if test x$enable_targets = xall; then
|
|
tmake_file="${tmake_file} s390/t-linux64"
|
|
fi
|
|
tmake_file="${tmake_file} s390/t-s390"
|
|
;;
|
|
s390x-*-linux*)
|
|
tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
|
|
tm_p_file="linux-protos.h s390/s390-protos.h"
|
|
c_target_objs="${c_target_objs} s390-c.o"
|
|
cxx_target_objs="${cxx_target_objs} s390-c.o"
|
|
md_file=s390/s390.md
|
|
extra_modes=s390/s390-modes.def
|
|
out_file=s390/s390.c
|
|
tmake_file="${tmake_file} s390/t-linux64 s390/t-s390"
|
|
;;
|
|
s390x-ibm-tpf*)
|
|
tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h glibc-stdint.h s390/tpf.h"
|
|
tm_p_file=s390/s390-protos.h
|
|
c_target_objs="${c_target_objs} s390-c.o"
|
|
cxx_target_objs="${cxx_target_objs} s390-c.o"
|
|
md_file=s390/s390.md
|
|
extra_modes=s390/s390-modes.def
|
|
out_file=s390/s390.c
|
|
thread_file='tpf'
|
|
extra_options="${extra_options} s390/tpf.opt"
|
|
tmake_file="${tmake_file} s390/t-s390"
|
|
;;
|
|
sh-*-elf* | sh[12346l]*-*-elf* | \
|
|
sh-*-linux* | sh[2346lbe]*-*-linux* | \
|
|
sh-*-netbsdelf* | shl*-*-netbsdelf*)
|
|
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* | sh*-*-linux* | \
|
|
sh-superh-elf) with_endian=little,big ;;
|
|
sh[1234]*-*-*) with_endian=big ;;
|
|
*) with_endian=big,little ;;
|
|
esac
|
|
fi
|
|
# TM_ENDIAN_CONFIG is used by t-sh to determine multilibs.
|
|
# First word : the default endian.
|
|
# Second word: the secondary endian (optional).
|
|
case ${with_endian} in
|
|
big) TM_ENDIAN_CONFIG=mb ;;
|
|
little) TM_ENDIAN_CONFIG=ml ;;
|
|
big,little) TM_ENDIAN_CONFIG="mb ml" ;;
|
|
little,big) TM_ENDIAN_CONFIG="ml mb" ;;
|
|
*) 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 sh/elf.h"
|
|
case ${target} in
|
|
sh*-*-linux*) tmake_file="${tmake_file} sh/t-linux"
|
|
if test x$enable_fdpic = xyes; then
|
|
tm_defines="$tm_defines FDPIC_DEFAULT=1"
|
|
fi
|
|
tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h sh/linux.h" ;;
|
|
sh*-*-netbsd*)
|
|
tm_file="${tm_file} ${nbsd_tm_file} sh/netbsd-elf.h"
|
|
extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
|
|
|
|
;;
|
|
sh*-superh-elf) if test x$with_libgloss != xno; then
|
|
with_libgloss=yes
|
|
tm_file="${tm_file} sh/newlib.h"
|
|
fi
|
|
tm_file="${tm_file} sh/embed-elf.h"
|
|
tm_file="${tm_file} sh/superh.h"
|
|
extra_options="${extra_options} sh/superh.opt" ;;
|
|
*) if test x$with_newlib = xyes \
|
|
&& test x$with_libgloss = xyes; then
|
|
tm_file="${tm_file} sh/newlib.h"
|
|
fi
|
|
tm_file="${tm_file} sh/embed-elf.h" ;;
|
|
esac
|
|
case ${target} in
|
|
*-*-netbsd)
|
|
;;
|
|
*-*-elf*)
|
|
tm_file="${tm_file} newlib-stdint.h"
|
|
;;
|
|
esac
|
|
# sed el/eb endian suffixes away to avoid confusion with sh[23]e
|
|
case `echo ${target} | sed 's/e[lb]-/-/'` in
|
|
sh4a_single_only*) sh_cpu_target=sh4a-single-only ;;
|
|
sh4a_single*) sh_cpu_target=sh4a-single ;;
|
|
sh4a_nofpu*) sh_cpu_target=sh4a-nofpu ;;
|
|
sh4al) sh_cpu_target=sh4al ;;
|
|
sh4a*) sh_cpu_target=sh4a ;;
|
|
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 ;;
|
|
sh2a_single_only*) sh_cpu_target=sh2a-single-only ;;
|
|
sh2a_single*) sh_cpu_target=sh2a-single ;;
|
|
sh2a_nofpu*) sh_cpu_target=sh2a-nofpu ;;
|
|
sh2a*) sh_cpu_target=sh2a ;;
|
|
sh2e*) sh_cpu_target=sh2e ;;
|
|
sh2*) sh_cpu_target=sh2 ;;
|
|
*) sh_cpu_target=sh1 ;;
|
|
esac
|
|
# did the user say --without-fp ?
|
|
if test x$with_fp = xno; then
|
|
case ${sh_cpu_target} in
|
|
sh4al | sh1) ;;
|
|
sh4a* ) sh_cpu_target=sh4a-nofpu ;;
|
|
sh4*) sh_cpu_target=sh4-nofpu ;;
|
|
sh3*) sh_cpu_target=sh3 ;;
|
|
sh2a*) sh_cpu_target=sh2a-nofpu ;;
|
|
sh2*) sh_cpu_target=sh2 ;;
|
|
*) echo --without-fp not available for $target: ignored
|
|
esac
|
|
tm_defines="$tm_defines STRICT_NOFPU=1"
|
|
fi
|
|
sh_cpu_default="`echo $with_cpu|sed s/^m/sh/|tr A-Z_ a-z-`"
|
|
case $sh_cpu_default in
|
|
sh2a-single-only | sh2a-single | sh2a-nofpu | sh2a | \
|
|
sh4a-single-only | sh4a-single | sh4a-nofpu | sh4a | sh4al | \
|
|
sh4-single-only | sh4-single | sh4-nofpu | sh4 | sh4-300 | \
|
|
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 "$sh_multilibs" = "default" ; then
|
|
case ${target} in
|
|
sh[1234]*) sh_multilibs=${sh_cpu_target} ;;
|
|
sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
|
|
sh*-*-linux*) sh_multilibs=m1,m2,m2a,m3e,m4 ;;
|
|
sh*-*-netbsd*) sh_multilibs=m3,m3e,m4 ;;
|
|
*) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single ;;
|
|
esac
|
|
if test x$with_fp = xno; then
|
|
sh_multilibs="`echo $sh_multilibs|sed -e s/m4/sh4-nofpu/ -e s/,m4-[^,]*//g -e s/,m[23]e// -e s/m2a,m2a-single/m2a-nofpu/ -e s/m5-..m....,//g`"
|
|
fi
|
|
fi
|
|
target_cpu_default=SELECT_`echo ${sh_cpu_default}|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`
|
|
tm_defines=${tm_defines}' SH_MULTILIB_CPU_DEFAULT=\"'`echo $sh_cpu_default|sed s/sh/m/`'\"'
|
|
tm_defines="$tm_defines SUPPORT_`echo $sh_cpu_default | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
|
|
sh_multilibs=`echo $sh_multilibs | sed -e 's/,/ /g' -e 's/^[Ss][Hh]/m/' -e 's/ [Ss][Hh]/ m/g' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-`
|
|
for sh_multilib in ${sh_multilibs}; do
|
|
case ${sh_multilib} in
|
|
m1 | m2 | m2e | m3 | m3e | \
|
|
m4 | m4-single | m4-single-only | m4-nofpu | m4-300 |\
|
|
m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al | \
|
|
m2a | m2a-single | m2a-single-only | m2a-nofpu)
|
|
# TM_MULTILIB_CONFIG is used by t-sh for the non-endian multilib definition
|
|
# It is passed to MULTIILIB_OPTIONS verbatim.
|
|
TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG}/${sh_multilib}"
|
|
tm_defines="$tm_defines SUPPORT_`echo $sh_multilib | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
|
|
;;
|
|
\!*) # TM_MULTILIB_EXCEPTIONS_CONFIG is used by t-sh
|
|
# It is passed the MULTILIB_EXCEPTIONS verbatim.
|
|
TM_MULTILIB_EXCEPTIONS_CONFIG="${TM_MULTILIB_EXCEPTIONS_CONFIG} `echo $sh_multilib | sed 's/^!//'`" ;;
|
|
*)
|
|
echo "with_multilib_list=${sh_multilib} not supported."
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's:^/::'`
|
|
if test x${enable_incomplete_targets} = xyes ; then
|
|
tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1"
|
|
fi
|
|
tm_file="$tm_file ./sysroot-suffix.h"
|
|
tmake_file="$tmake_file t-sysroot-suffix"
|
|
;;
|
|
sh-*-rtems*)
|
|
tmake_file="${tmake_file} sh/t-sh sh/t-rtems"
|
|
tm_file="${tm_file} dbxelf.h elfos.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h newlib-stdint.h"
|
|
;;
|
|
sh-wrs-vxworks)
|
|
tmake_file="$tmake_file sh/t-sh sh/t-vxworks"
|
|
tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h vx-common.h vxworks.h sh/vxworks.h"
|
|
;;
|
|
sparc-*-elf*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp-elf.h"
|
|
case ${target} in
|
|
*-leon-*)
|
|
tmake_file="sparc/t-sparc sparc/t-leon"
|
|
;;
|
|
*-leon[3-9]*)
|
|
tmake_file="sparc/t-sparc sparc/t-leon3"
|
|
;;
|
|
*)
|
|
tmake_file="sparc/t-sparc sparc/t-elf"
|
|
;;
|
|
esac
|
|
;;
|
|
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="${tmake_file} sparc/t-sparc sparc/t-rtems"
|
|
;;
|
|
sparc-*-linux*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
|
|
extra_options="${extra_options} sparc/long-double-switch.opt"
|
|
case ${target} in
|
|
*-leon-*)
|
|
tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon"
|
|
;;
|
|
*-leon[3-9]*)
|
|
tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon3"
|
|
;;
|
|
*)
|
|
tmake_file="${tmake_file} sparc/t-sparc"
|
|
;;
|
|
esac
|
|
if test x$enable_targets = xall; then
|
|
tm_file="sparc/biarch64.h ${tm_file} sparc/linux64.h"
|
|
tmake_file="${tmake_file} sparc/t-linux64"
|
|
else
|
|
tm_file="${tm_file} sparc/linux.h"
|
|
tmake_file="${tmake_file} sparc/t-linux"
|
|
fi
|
|
;;
|
|
sparc-*-netbsdelf*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
|
|
extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
|
|
extra_options="${extra_options} sparc/long-double-switch.opt"
|
|
tmake_file="${tmake_file} sparc/t-sparc"
|
|
;;
|
|
sparc*-*-solaris2*)
|
|
tm_file="sparc/biarch64.h ${tm_file} ${sol2_tm_file} sparc/tso.h"
|
|
case ${target} in
|
|
sparc64-*-* | sparcv9-*-*)
|
|
tm_file="sparc/default64.h ${tm_file}"
|
|
;;
|
|
*)
|
|
test x$with_cpu != x || with_cpu=v9
|
|
;;
|
|
esac
|
|
tmake_file="${tmake_file} sparc/t-sparc sparc/t-sol2"
|
|
;;
|
|
sparc-wrs-vxworks)
|
|
tm_file="${tm_file} elfos.h sparc/sysv4.h vx-common.h vxworks.h sparc/vxworks.h"
|
|
tmake_file="${tmake_file} sparc/t-sparc sparc/t-vxworks"
|
|
;;
|
|
sparc64-*-elf*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h"
|
|
extra_options="${extra_options}"
|
|
tmake_file="${tmake_file} sparc/t-sparc"
|
|
;;
|
|
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}"
|
|
tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
|
|
;;
|
|
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/default64.h sparc/linux64.h sparc/tso.h"
|
|
extra_options="${extra_options} sparc/long-double-switch.opt"
|
|
tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
|
|
;;
|
|
sparc64-*-freebsd*|ultrasparc-*-freebsd*)
|
|
tm_file="${tm_file} ${fbsd_tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/freebsd.h"
|
|
extra_options="${extra_options} sparc/long-double-switch.opt"
|
|
case "x$with_cpu" in
|
|
xultrasparc) ;;
|
|
x) with_cpu=ultrasparc ;;
|
|
*) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
|
|
esac
|
|
tmake_file="${tmake_file} sparc/t-sparc"
|
|
;;
|
|
sparc64-*-netbsd*)
|
|
tm_file="sparc/biarch64.h ${tm_file}"
|
|
tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
|
|
extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
|
|
extra_options="${extra_options} sparc/long-double-switch.opt"
|
|
tmake_file="${tmake_file} sparc/t-sparc sparc/t-netbsd64"
|
|
;;
|
|
sparc64-*-openbsd*)
|
|
tm_file="sparc/openbsd1-64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp64-elf.h"
|
|
tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h sparc/openbsd64.h"
|
|
extra_options="${extra_options} openbsd.opt"
|
|
extra_options="${extra_options}"
|
|
gas=yes gnu_ld=yes
|
|
with_cpu=ultrasparc
|
|
tmake_file="${tmake_file} sparc/t-sparc"
|
|
;;
|
|
tic6x-*-elf)
|
|
tm_file="elfos.h ${tm_file} c6x/elf-common.h c6x/elf.h"
|
|
tm_file="${tm_file} dbxelf.h tm-dwarf2.h newlib-stdint.h"
|
|
tmake_file="c6x/t-c6x c6x/t-c6x-elf"
|
|
use_collect2=no
|
|
;;
|
|
tic6x-*-uclinux)
|
|
tm_file="elfos.h ${tm_file} gnu-user.h linux.h c6x/elf-common.h c6x/uclinux-elf.h"
|
|
tm_file="${tm_file} dbxelf.h tm-dwarf2.h glibc-stdint.h"
|
|
tm_file="${tm_file} ./sysroot-suffix.h"
|
|
tmake_file="t-sysroot-suffix t-slibgcc"
|
|
tmake_file="${tmake_file} c6x/t-c6x c6x/t-c6x-elf c6x/t-c6x-uclinux"
|
|
use_collect2=no
|
|
;;
|
|
tilegx*-*-linux*)
|
|
tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h tilegx/linux.h ${tm_file}"
|
|
tmake_file="${tmake_file} tilegx/t-tilegx"
|
|
extra_objs="${extra_objs} mul-tables.o"
|
|
c_target_objs="${c_target_objs} tilegx-c.o"
|
|
cxx_target_objs="${cxx_target_objs} tilegx-c.o"
|
|
extra_headers="feedback.h"
|
|
case $target in
|
|
tilegxbe-*)
|
|
tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
|
|
;;
|
|
esac
|
|
;;
|
|
tilepro*-*-linux*)
|
|
tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h tilepro/linux.h ${tm_file}"
|
|
tmake_file="${tmake_file} tilepro/t-tilepro"
|
|
extra_objs="${extra_objs} mul-tables.o"
|
|
c_target_objs="${c_target_objs} tilepro-c.o"
|
|
cxx_target_objs="${cxx_target_objs} tilepro-c.o"
|
|
extra_headers="feedback.h"
|
|
;;
|
|
v850-*-rtems*)
|
|
target_cpu_default="TARGET_CPU_generic"
|
|
tm_file="dbxelf.h elfos.h v850/v850.h"
|
|
tm_file="${tm_file} rtems.h v850/rtems.h newlib-stdint.h"
|
|
tmake_file="${tmake_file} v850/t-v850"
|
|
tmake_file="${tmake_file} v850/t-rtems"
|
|
use_collect2=no
|
|
c_target_objs="v850-c.o"
|
|
cxx_target_objs="v850-c.o"
|
|
;;
|
|
v850*-*-*)
|
|
case ${target} in
|
|
v850e3v5-*-*)
|
|
target_cpu_default="TARGET_CPU_v850e3v5"
|
|
;;
|
|
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"
|
|
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
|
|
;;
|
|
vax-*-linux*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h vax/elf.h vax/linux.h"
|
|
extra_options="${extra_options} vax/elf.opt"
|
|
;;
|
|
vax-*-netbsdelf*)
|
|
tm_file="${tm_file} elfos.h ${nbsd_tm_file} vax/elf.h vax/netbsd-elf.h"
|
|
extra_options="${extra_options} netbsd.opt netbsd-elf.opt vax/elf.opt"
|
|
tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
|
|
;;
|
|
vax-*-openbsd*)
|
|
tm_file="vax/vax.h vax/openbsd1.h openbsd.h openbsd-stdint.h openbsd-libpthread.h vax/openbsd.h"
|
|
extra_options="${extra_options} openbsd.opt"
|
|
use_collect2=yes
|
|
;;
|
|
visium-*-elf*)
|
|
tm_file="dbxelf.h elfos.h ${tm_file} visium/elf.h newlib-stdint.h"
|
|
tmake_file="visium/t-visium visium/t-crtstuff"
|
|
;;
|
|
xstormy16-*-elf)
|
|
# For historical reasons, the target files omit the 'x'.
|
|
tm_file="dbxelf.h elfos.h newlib-stdint.h stormy16/stormy16.h"
|
|
tm_p_file=stormy16/stormy16-protos.h
|
|
tm_d_file="elfos.h stormy16/stormy16.h"
|
|
md_file=stormy16/stormy16.md
|
|
out_file=stormy16/stormy16.c
|
|
extra_options=stormy16/stormy16.opt
|
|
tmake_file="stormy16/t-stormy16"
|
|
;;
|
|
xtensa*-*-elf*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h xtensa/elf.h"
|
|
extra_options="${extra_options} xtensa/elf.opt"
|
|
;;
|
|
xtensa*-*-linux*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/linux.h"
|
|
tmake_file="${tmake_file} xtensa/t-xtensa"
|
|
;;
|
|
xtensa*-*-uclinux*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/uclinux.h"
|
|
tmake_file="${tmake_file} xtensa/t-xtensa"
|
|
extra_options="${extra_options} xtensa/uclinux.opt"
|
|
;;
|
|
am33_2.0-*-linux*)
|
|
tm_file="mn10300/mn10300.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h mn10300/linux.h"
|
|
gas=yes gnu_ld=yes
|
|
use_collect2=no
|
|
;;
|
|
m32c-*-rtems*)
|
|
tm_file="dbxelf.h elfos.h ${tm_file} m32c/rtems.h rtems.h newlib-stdint.h"
|
|
c_target_objs="m32c-pragma.o"
|
|
cxx_target_objs="m32c-pragma.o"
|
|
;;
|
|
m32c-*-elf*)
|
|
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
|
|
c_target_objs="m32c-pragma.o"
|
|
cxx_target_objs="m32c-pragma.o"
|
|
;;
|
|
*)
|
|
echo "*** Configuration ${target} not supported" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case ${target} in
|
|
i[34567]86-*-linux* | x86_64-*-linux*)
|
|
tmake_file="${tmake_file} i386/t-pmm_malloc i386/t-i386"
|
|
;;
|
|
i[34567]86-*-* | x86_64-*-*)
|
|
tmake_file="${tmake_file} i386/t-gmm_malloc i386/t-i386"
|
|
;;
|
|
powerpc*-*-* | rs6000-*-*)
|
|
tm_file="${tm_file} ${cpu_type}/option-defaults.h"
|
|
esac
|
|
|
|
# non-glibc systems
|
|
case ${target} in
|
|
*-linux-musl*)
|
|
tmake_file="${tmake_file} t-musl"
|
|
;;
|
|
*-linux-uclibc*)
|
|
tmake_file="${tmake_file} t-uclibc"
|
|
;;
|
|
esac
|
|
|
|
# Assume the existence of indirect function support and allow the use of the
|
|
# resolver attribute.
|
|
case ${target} in
|
|
*-*-linux*android*|*-*-linux*uclibc*|*-*-linux*musl*)
|
|
;;
|
|
*-*-linux*)
|
|
case ${target} in
|
|
aarch64*-* | arm*-* | i[34567]86-* | powerpc*-* | s390*-* | sparc*-* | x86_64-*)
|
|
default_gnu_indirect_function=yes
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
# Build mkoffload tool
|
|
case ${target} in
|
|
*-intelmic-* | *-intelmicemul-*)
|
|
tmake_file="${tmake_file} i386/t-intelmic"
|
|
tm_file="${tm_file} i386/intelmic-offload.h"
|
|
;;
|
|
esac
|
|
|
|
if [ "$target_has_targetcm" = "no" ]; then
|
|
c_target_objs="$c_target_objs default-c.o"
|
|
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
|
|
|
|
if [ "$target_has_targetdm" = "no" ]; then
|
|
d_target_objs="$d_target_objs default-d.o"
|
|
fi
|
|
|
|
# Support for --with-cpu and related options (and a few unrelated options,
|
|
# too).
|
|
case ${with_cpu} in
|
|
yes | no)
|
|
echo "--with-cpu must be passed a value" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# Set arch and cpu from ${target} and ${target_noncanonical}. Set cpu
|
|
# to generic if there is no processor scheduler model for the target.
|
|
arch=
|
|
cpu=
|
|
arch_without_sse2=no
|
|
arch_without_64bit=no
|
|
case ${target} in
|
|
i386-*-freebsd*)
|
|
if test $fbsd_major -ge 6; then
|
|
arch=i486
|
|
else
|
|
arch=i386
|
|
fi
|
|
cpu=generic
|
|
arch_without_sse2=yes
|
|
arch_without_64bit=yes
|
|
;;
|
|
i386-*-netbsd*)
|
|
arch=i486
|
|
cpu=generic
|
|
arch_without_sse2=yes
|
|
arch_without_64bit=yes
|
|
;;
|
|
i386-*-*)
|
|
arch=i386
|
|
cpu=i386
|
|
arch_without_sse2=yes
|
|
arch_without_64bit=yes
|
|
;;
|
|
i486-*-*)
|
|
arch=i486
|
|
cpu=i486
|
|
arch_without_sse2=yes
|
|
arch_without_64bit=yes
|
|
;;
|
|
i586-*-*)
|
|
arch_without_sse2=yes
|
|
arch_without_64bit=yes
|
|
case ${target_noncanonical} in
|
|
k6_2-*)
|
|
arch=k6-2
|
|
cpu=k6-2
|
|
;;
|
|
k6_3-*)
|
|
arch=k6-3
|
|
cpu=k6-3
|
|
;;
|
|
k6-*)
|
|
arch=k6
|
|
cpu=k6
|
|
;;
|
|
pentium_mmx-*|winchip_c6-*|winchip2-*|c3-*)
|
|
arch=pentium-mmx
|
|
cpu=pentium-mmx
|
|
;;
|
|
*)
|
|
arch=pentium
|
|
cpu=pentium
|
|
;;
|
|
esac
|
|
;;
|
|
i686-*-* | i786-*-*)
|
|
case ${target_noncanonical} in
|
|
znver1-*)
|
|
arch=znver1
|
|
cpu=znver1
|
|
;;
|
|
znver2-*)
|
|
arch=znver2
|
|
cpu=znver2
|
|
;;
|
|
bdver4-*)
|
|
arch=bdver4
|
|
cpu=bdver4
|
|
;;
|
|
bdver3-*)
|
|
arch=bdver3
|
|
cpu=bdver3
|
|
;;
|
|
bdver2-*)
|
|
arch=bdver2
|
|
cpu=bdver2
|
|
;;
|
|
bdver1-*)
|
|
arch=bdver1
|
|
cpu=bdver1
|
|
;;
|
|
btver1-*)
|
|
arch=btver1
|
|
cpu=btver1
|
|
;;
|
|
btver2-*)
|
|
arch=btver2
|
|
cpu=btver2
|
|
;;
|
|
amdfam10-*|barcelona-*)
|
|
arch=amdfam10
|
|
cpu=amdfam10
|
|
;;
|
|
k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
|
|
arch=k8-sse3
|
|
cpu=k8-sse3
|
|
;;
|
|
k8-*|opteron-*|athlon64-*|athlon_fx-*)
|
|
arch=k8
|
|
cpu=k8
|
|
;;
|
|
athlon_xp-*|athlon_mp-*|athlon_4-*)
|
|
arch=athlon-4
|
|
cpu=athlon-4
|
|
arch_without_sse2=yes
|
|
arch_without_64bit=yes
|
|
;;
|
|
athlon_tbird-*|athlon-*)
|
|
arch=athlon
|
|
cpu=athlon
|
|
arch_without_sse2=yes
|
|
;;
|
|
geode-*)
|
|
arch=geode
|
|
cpu=geode
|
|
arch_without_sse2=yes
|
|
;;
|
|
pentium2-*)
|
|
arch=pentium2
|
|
cpu=pentium2
|
|
arch_without_sse2=yes
|
|
;;
|
|
pentium3-*|pentium3m-*)
|
|
arch=pentium3
|
|
cpu=pentium3
|
|
arch_without_sse2=yes
|
|
;;
|
|
pentium4-*|pentium4m-*)
|
|
arch=pentium4
|
|
cpu=pentium4
|
|
;;
|
|
prescott-*)
|
|
arch=prescott
|
|
cpu=prescott
|
|
;;
|
|
nocona-*)
|
|
arch=nocona
|
|
cpu=nocona
|
|
;;
|
|
atom-*)
|
|
arch=atom
|
|
cpu=atom
|
|
;;
|
|
slm-*)
|
|
arch=slm
|
|
cpu=slm
|
|
;;
|
|
core2-*)
|
|
arch=core2
|
|
cpu=core2
|
|
;;
|
|
corei7-*)
|
|
arch=corei7
|
|
cpu=corei7
|
|
;;
|
|
corei7_avx-*)
|
|
arch=corei7-avx
|
|
cpu=corei7-avx
|
|
;;
|
|
pentium_m-*)
|
|
arch=pentium-m
|
|
cpu=pentium-m
|
|
;;
|
|
pentiumpro-*)
|
|
arch=pentiumpro
|
|
cpu=pentiumpro
|
|
arch_without_sse2=yes
|
|
;;
|
|
*)
|
|
arch=pentiumpro
|
|
cpu=generic
|
|
arch_without_sse2=yes
|
|
arch_without_64bit=yes
|
|
;;
|
|
esac
|
|
;;
|
|
x86_64-*-*)
|
|
case ${target_noncanonical} in
|
|
znver1-*)
|
|
arch=znver1
|
|
cpu=znver1
|
|
;;
|
|
znver2-*)
|
|
arch=znver2
|
|
cpu=znver2
|
|
;;
|
|
bdver4-*)
|
|
arch=bdver4
|
|
cpu=bdver4
|
|
;;
|
|
bdver3-*)
|
|
arch=bdver3
|
|
cpu=bdver3
|
|
;;
|
|
bdver2-*)
|
|
arch=bdver2
|
|
cpu=bdver2
|
|
;;
|
|
bdver1-*)
|
|
arch=bdver1
|
|
cpu=bdver1
|
|
;;
|
|
btver1-*)
|
|
arch=btver1
|
|
cpu=btver1
|
|
;;
|
|
btver2-*)
|
|
arch=btver2
|
|
cpu=btver2
|
|
;;
|
|
amdfam10-*|barcelona-*)
|
|
arch=amdfam10
|
|
cpu=amdfam10
|
|
;;
|
|
k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
|
|
arch=k8-sse3
|
|
cpu=k8-sse3
|
|
;;
|
|
k8-*|opteron-*|athlon_64-*)
|
|
arch=k8
|
|
cpu=k8
|
|
;;
|
|
nocona-*)
|
|
arch=nocona
|
|
cpu=nocona
|
|
;;
|
|
atom-*)
|
|
arch=atom
|
|
cpu=atom
|
|
;;
|
|
slm-*)
|
|
arch=slm
|
|
cpu=slm
|
|
;;
|
|
core2-*)
|
|
arch=core2
|
|
cpu=core2
|
|
;;
|
|
corei7-*)
|
|
arch=corei7
|
|
cpu=corei7
|
|
;;
|
|
*)
|
|
arch=x86-64
|
|
cpu=generic
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
# If there is no $with_cpu option, try to infer one from ${target}.
|
|
# This block sets nothing except for with_cpu.
|
|
if test x$with_cpu = x ; then
|
|
case ${target} in
|
|
i[34567]86-*-elfiamcu)
|
|
with_cpu=lakemont
|
|
;;
|
|
i[34567]86-*-*|x86_64-*-*)
|
|
with_cpu=$cpu
|
|
;;
|
|
alphaev6[78]*-*-*)
|
|
with_cpu=ev67
|
|
;;
|
|
alphaev6*-*-*)
|
|
with_cpu=ev6
|
|
;;
|
|
alphapca56*-*-*)
|
|
with_cpu=pca56
|
|
;;
|
|
alphaev56*-*-*)
|
|
with_cpu=ev56
|
|
;;
|
|
alphaev5*-*-*)
|
|
with_cpu=ev5
|
|
;;
|
|
frv-*-*linux* | frv400-*-*linux*)
|
|
with_cpu=fr400
|
|
;;
|
|
frv550-*-*linux*)
|
|
with_cpu=fr550
|
|
;;
|
|
m68k*-*-*)
|
|
case "$with_arch" in
|
|
"cf")
|
|
with_cpu=${default_cf_cpu}
|
|
;;
|
|
"" | "m68k")
|
|
with_cpu=m${default_m68k_cpu}
|
|
;;
|
|
esac
|
|
;;
|
|
sparc*-*-*)
|
|
case ${target} in
|
|
*-leon-*)
|
|
with_cpu=leon
|
|
;;
|
|
*-leon[3-9]*)
|
|
with_cpu=leon3
|
|
;;
|
|
*-leon[3-9]v7*)
|
|
with_cpu=leon3v7
|
|
;;
|
|
*)
|
|
with_cpu="`echo ${target} | sed 's/-.*$//'`"
|
|
;;
|
|
esac
|
|
;;
|
|
visium-*-*)
|
|
with_cpu=gr5
|
|
;;
|
|
esac
|
|
|
|
# Avoid overriding --with-cpu-32 and --with-cpu-64 values.
|
|
case ${target} in
|
|
i[34567]86-*-*|x86_64-*-*)
|
|
if test x$with_cpu_32 != x || test x$with_cpu_64 != x; then
|
|
if test x$with_cpu_32 = x; then
|
|
with_cpu_32=$with_cpu
|
|
fi
|
|
if test x$with_cpu_64 = x; then
|
|
with_cpu_64=$with_cpu
|
|
fi
|
|
with_cpu=
|
|
fi
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
# Support for --with-arch and related options (and a few unrelated options,
|
|
# too).
|
|
case ${with_arch} in
|
|
yes | no)
|
|
echo "--with-arch must be passed a value" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# If there is no $with_arch option, try to infer one from ${target}.
|
|
# This block sets nothing except for with_arch.
|
|
if test x$with_arch = x ; then
|
|
case ${target} in
|
|
i[34567]86-*-darwin*|x86_64-*-darwin*)
|
|
# Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
|
|
# and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
|
|
;;
|
|
i[34567]86-*-elfiamcu)
|
|
with_arch=lakemont
|
|
;;
|
|
i[34567]86-*-*)
|
|
# --with-fpmath sets the default ISA to SSE2, which is the same
|
|
# ISA supported by Pentium 4.
|
|
if test x$with_fpmath = x || test $arch_without_sse2 = no; then
|
|
with_arch=$arch
|
|
else
|
|
with_arch=pentium4
|
|
fi
|
|
;;
|
|
x86_64-*-*)
|
|
with_arch=$arch
|
|
;;
|
|
mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
|
|
with_arch=r5900
|
|
;;
|
|
mips*-*-vxworks)
|
|
with_arch=mips2
|
|
;;
|
|
esac
|
|
|
|
# Avoid overriding --with-arch-32 and --with-arch-64 values.
|
|
case ${target} in
|
|
i[34567]86-*-darwin*|x86_64-*-darwin*)
|
|
# Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
|
|
# and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
|
|
;;
|
|
i[34567]86-*-*|x86_64-*-*)
|
|
if test x$with_arch_32 != x || test x$with_arch_64 != x; then
|
|
if test x$with_arch_32 = x; then
|
|
with_arch_32=$with_arch
|
|
fi
|
|
if test x$with_arch_64 = x; then
|
|
if test $arch_without_64bit = yes; then
|
|
# Set the default 64bit arch to x86-64 if the default arch
|
|
# doesn't support 64bit.
|
|
with_arch_64=x86-64
|
|
else
|
|
with_arch_64=$with_arch
|
|
fi
|
|
fi
|
|
with_arch=
|
|
elif test $arch_without_64bit$need_64bit_isa = yesyes; then
|
|
# Set the default 64bit arch to x86-64 if the default arch
|
|
# doesn't support 64bit and we need 64bit ISA.
|
|
with_arch_32=$with_arch
|
|
with_arch_64=x86-64
|
|
with_arch=
|
|
fi
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
# Infer a default setting for --with-float.
|
|
if test x$with_float = x; then
|
|
case ${target} in
|
|
mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
|
|
# The R5900 doesn't support 64-bit float. 32-bit float doesn't
|
|
# comply with IEEE 754.
|
|
with_float=soft
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
# Infer a default setting for --with-fpu.
|
|
if test x$with_fpu = x; then
|
|
case ${target} in
|
|
mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
|
|
# The R5900 FPU only supports single precision.
|
|
with_fpu=single
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
# Support --with-fpmath.
|
|
if test x$with_fpmath != x; then
|
|
case ${target} in
|
|
i[34567]86-*-* | x86_64-*-*)
|
|
case ${with_fpmath} in
|
|
avx)
|
|
tm_file="${tm_file} i386/avxmath.h"
|
|
;;
|
|
sse)
|
|
tm_file="${tm_file} i386/ssemath.h"
|
|
;;
|
|
*)
|
|
echo "Invalid --with-fpmath=$with_fpmath" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
echo "--with-fpmath isn't supported for $target." 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
# Similarly for --with-schedule.
|
|
if test x$with_schedule = x; then
|
|
case ${target} in
|
|
hppa1*)
|
|
# Override default PA8000 scheduling model.
|
|
with_schedule=7100LC
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
# Infer a default setting for --with-llsc.
|
|
if test x$with_llsc = x; then
|
|
case ${target} in
|
|
mips*-*-linux*)
|
|
# The kernel emulates LL and SC where necessary.
|
|
with_llsc=yes
|
|
;;
|
|
mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
|
|
# The R5900 doesn't support LL(D) and SC(D).
|
|
with_llsc=no
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
# Validate and mark as valid any --with options supported
|
|
# by this target. In order to use a particular --with option
|
|
# you must list it in supported_defaults; validating the value
|
|
# is optional. This case statement should set nothing besides
|
|
# supported_defaults.
|
|
|
|
supported_defaults=
|
|
case "${target}" in
|
|
aarch64*-*-*)
|
|
supported_defaults="abi cpu arch"
|
|
for which in cpu arch; do
|
|
|
|
eval "val=\$with_$which"
|
|
base_val=`echo $val | sed -e 's/\+.*//'`
|
|
ext_val=`echo $val | sed -e 's/[a-z0-9.-]\+//'`
|
|
|
|
if [ $which = arch ]; then
|
|
def=aarch64-arches.def
|
|
pattern=AARCH64_ARCH
|
|
else
|
|
def=aarch64-cores.def
|
|
pattern=AARCH64_CORE
|
|
fi
|
|
|
|
ext_mask=AARCH64_CPU_DEFAULT_FLAGS
|
|
|
|
# Find the base CPU or ARCH id in aarch64-cores.def or
|
|
# aarch64-arches.def
|
|
if [ x"$base_val" = x ] \
|
|
|| grep "^$pattern(\"$base_val\"," \
|
|
${srcdir}/config/aarch64/$def \
|
|
> /dev/null; then
|
|
|
|
if [ $which = arch ]; then
|
|
base_id=`grep "^$pattern(\"$base_val\"," \
|
|
${srcdir}/config/aarch64/$def | \
|
|
sed -e 's/^[^,]*,[ ]*//' | \
|
|
sed -e 's/,.*$//'`
|
|
# Extract the architecture flags from aarch64-arches.def
|
|
ext_mask=`grep "^$pattern(\"$base_val\"," \
|
|
${srcdir}/config/aarch64/$def | \
|
|
sed -e 's/)$//' | \
|
|
sed -e 's/^.*,//'`
|
|
else
|
|
base_id=`grep "^$pattern(\"$base_val\"," \
|
|
${srcdir}/config/aarch64/$def | \
|
|
sed -e 's/^[^,]*,[ ]*//' | \
|
|
sed -e 's/,.*$//'`
|
|
fi
|
|
|
|
# Use the pre-processor to strip flatten the options.
|
|
# This makes the format less rigid than if we use
|
|
# grep and sed directly here.
|
|
opt_macro="AARCH64_OPT_EXTENSION(A, B, C, D, E, F)=A, B, C, D, E, F"
|
|
options_parsed="`$ac_cv_prog_CPP -D"$opt_macro" -x c \
|
|
${srcdir}/config/aarch64/aarch64-option-extensions.def`"
|
|
|
|
# Match one element inside AARCH64_OPT_EXTENSION, we
|
|
# consume anything that's not a ,.
|
|
elem="[ ]*\([^,]\+\)[ ]*"
|
|
|
|
# Repeat the pattern for the number of entries in the
|
|
# AARCH64_OPT_EXTENSION, currently 6 times.
|
|
sed_patt="^$elem,$elem,$elem,$elem,$elem,$elem"
|
|
|
|
while [ x"$ext_val" != x ]
|
|
do
|
|
ext_val=`echo $ext_val | sed -e 's/\+//'`
|
|
ext=`echo $ext_val | sed -e 's/\+.*//'`
|
|
base_ext=`echo $ext | sed -e 's/^no//'`
|
|
opt_line=`echo -e "$options_parsed" | \
|
|
grep "^\"$base_ext\""`
|
|
|
|
if [ x"$base_ext" = x ] \
|
|
|| [[ -n $opt_line ]]; then
|
|
|
|
# These regexp extract the elements based on
|
|
# their group match index in the regexp.
|
|
ext_canon=`echo -e "$opt_line" | \
|
|
sed -e "s/$sed_patt/\2/"`
|
|
ext_on=`echo -e "$opt_line" | \
|
|
sed -e "s/$sed_patt/\3/"`
|
|
ext_off=`echo -e "$opt_line" | \
|
|
sed -e "s/$sed_patt/\4/"`
|
|
|
|
if [ $ext = $base_ext ]; then
|
|
# Adding extension
|
|
ext_mask="("$ext_mask") | ("$ext_on" | "$ext_canon")"
|
|
else
|
|
# Removing extension
|
|
ext_mask="("$ext_mask") & ~("$ext_off" | "$ext_canon")"
|
|
fi
|
|
|
|
true
|
|
else
|
|
echo "Unknown extension used in --with-$which=$val" 1>&2
|
|
exit 1
|
|
fi
|
|
ext_val=`echo $ext_val | sed -e 's/[a-z0-9]\+//'`
|
|
done
|
|
|
|
ext_mask="(("$ext_mask") << 6)"
|
|
if [ x"$base_id" != x ]; then
|
|
target_cpu_cname="TARGET_CPU_$base_id | $ext_mask"
|
|
fi
|
|
true
|
|
else
|
|
echo "Unknown $which used in --with-$which=$val" 1>&2
|
|
exit 1
|
|
fi
|
|
done
|
|
;;
|
|
|
|
alpha*-*-*)
|
|
supported_defaults="cpu tune"
|
|
for which in cpu tune; do
|
|
eval "val=\$with_$which"
|
|
case "$val" in
|
|
"" \
|
|
| ev4 | ev45 | 21064 | ev5 | 21164 | ev56 | 21164a \
|
|
| pca56 | 21164PC | 21164pc | ev6 | 21264 | ev67 \
|
|
| 21264a)
|
|
;;
|
|
*)
|
|
echo "Unknown CPU used in --with-$which=$val" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
;;
|
|
|
|
arc*-*-*)
|
|
supported_defaults="cpu"
|
|
|
|
if [ x"$with_cpu" = x ] \
|
|
|| grep "^ARC_CPU ($with_cpu," \
|
|
${srcdir}/config/arc/arc-cpus.def \
|
|
> /dev/null; then
|
|
# Ok
|
|
true
|
|
else
|
|
echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
|
|
exit 1
|
|
fi
|
|
;;
|
|
|
|
csky-*-*)
|
|
supported_defaults="cpu endian float"
|
|
;;
|
|
|
|
arm*-*-*)
|
|
supported_defaults="arch cpu float tune fpu abi mode tls"
|
|
for which in cpu tune arch; do
|
|
# See if it matches a supported value
|
|
eval "val=\$with_$which"
|
|
if [ x"$val" != x ]; then
|
|
cpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
|
|
-v cmd="chk$which $val" \
|
|
${srcdir}/config/arm/arm-cpus.in`
|
|
if [ "$cpu" = "error" ]; then
|
|
echo "Unknown target in --with-$which=$val" 1>&2
|
|
exit 1
|
|
else
|
|
new_val=$cpu
|
|
eval "target_${which}_cname=$new_val"
|
|
echo "For $val real value is $new_val"
|
|
fi
|
|
fi
|
|
done
|
|
|
|
case "$with_float" in
|
|
"" \
|
|
| soft | hard | softfp)
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Unknown floating point type used in --with-float=$with_float" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# see if --with-fpu matches any of the supported FPUs
|
|
if [ x"$with_fpu" != x ] ; then
|
|
val=$with_fpu
|
|
fpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
|
|
-v cmd="chkfpu $val" \
|
|
${srcdir}/config/arm/arm-cpus.in`
|
|
if [ "$fpu" = "error" ]
|
|
then
|
|
echo "Unknown target in --with-fpu=$val" 1>&2
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
case "$with_abi" in
|
|
"" \
|
|
| apcs-gnu | atpcs | aapcs | iwmmxt | aapcs-linux )
|
|
#OK
|
|
;;
|
|
*)
|
|
echo "Unknown ABI used in --with-abi=$with_abi"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case "$with_mode" in
|
|
"" \
|
|
| arm | thumb )
|
|
#OK
|
|
;;
|
|
*)
|
|
echo "Unknown mode used in --with-mode=$with_mode"
|
|
exit 1
|
|
;;
|
|
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 "Switch \"--with-arch\" may not be used with switch \"--with-cpu\"" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
if test "x$with_cpu" != x && test "x$with_tune" != x; then
|
|
echo "Switch \"--with-tune\" may not be used with switch \"--with-cpu\"" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
# Add extra multilibs
|
|
if test "x$with_multilib_list" != x; then
|
|
ml=
|
|
arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
|
|
if test "x${arm_multilibs}" != xdefault ; then
|
|
for arm_multilib in ${arm_multilibs}; do
|
|
case ${arm_multilib} in
|
|
aprofile|rmprofile)
|
|
tmake_profile_file="arm/t-multilib"
|
|
;;
|
|
@*)
|
|
ml=`echo "X$arm_multilib" | sed '1s,^X@,,'`
|
|
if test -f "${srcdir}/config/arm/${ml}"; then
|
|
tmake_file="${tmake_file} arm/${ml}"
|
|
else
|
|
echo "Error: ${ml} does not exist in ${srcdir}/config/arm" >&2
|
|
exit 1
|
|
fi
|
|
;;
|
|
*)
|
|
echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
fi
|
|
|
|
if test "x${tmake_profile_file}" != x ; then
|
|
# arm/t-aprofile and arm/t-rmprofile are 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=${with_multilib_list}" 1>&2
|
|
exit 1
|
|
elif test "x$ml" != x ; then
|
|
echo "Error: You cannot use builtin multilib profiles along with custom ones" 1>&2
|
|
exit 1
|
|
fi
|
|
# But pass the default value for float-abi
|
|
# through to the multilib selector
|
|
with_float="soft"
|
|
tmake_file="${tmake_file} ${tmake_profile_file}"
|
|
TM_MULTILIB_CONFIG="$with_multilib_list"
|
|
fi
|
|
fi
|
|
target_cpu_cname=${target_cpu_cname:-arm7tdmi}
|
|
with_cpu=${with_cpu:-$target_cpu_cname}
|
|
;;
|
|
|
|
fr*-*-*linux*)
|
|
supported_defaults=cpu
|
|
case "$with_cpu" in
|
|
fr400) ;;
|
|
fr550) ;;
|
|
*)
|
|
echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
fido-*-* | m68k*-*-*)
|
|
supported_defaults="arch cpu"
|
|
case "$with_arch" in
|
|
"" | "m68k"| "cf")
|
|
m68k_arch_family="$with_arch"
|
|
;;
|
|
*)
|
|
echo "Invalid --with-arch=$with_arch" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# We always have a $with_cpu setting here.
|
|
case "$with_cpu" in
|
|
"m68000" | "m68010" | "m68020" | "m68030" | "m68040" | "m68060")
|
|
m68k_cpu_ident=$with_cpu
|
|
;;
|
|
"m68020-40")
|
|
m68k_cpu_ident=m68020
|
|
tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_40"
|
|
;;
|
|
"m68020-60")
|
|
m68k_cpu_ident=m68020
|
|
tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_60"
|
|
;;
|
|
*)
|
|
# We need the C identifier rather than the string.
|
|
m68k_cpu_ident=`awk -v arg="\"$with_cpu\"" \
|
|
'BEGIN { FS="[ \t]*[,()][ \t]*" }; \
|
|
$1 == "M68K_DEVICE" && $2 == arg { print $3 }' \
|
|
${srcdir}/config/m68k/m68k-devices.def`
|
|
if [ x"$m68k_cpu_ident" = x ] ; then
|
|
echo "Unknown CPU used in --with-cpu=$with_cpu" 1>&2
|
|
exit 1
|
|
fi
|
|
with_cpu="mcpu=$with_cpu"
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
amdgcn-*-*)
|
|
supported_defaults="arch tune"
|
|
|
|
for which in arch tune; do
|
|
eval "val=\$with_$which"
|
|
case ${val} in
|
|
"" | fiji | gfx900 | gfx906 )
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Unknown cpu used in --with-$which=$val." 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
[ "x$with_arch" = x ] && with_arch=fiji
|
|
;;
|
|
|
|
hppa*-*-*)
|
|
supported_defaults="arch schedule"
|
|
|
|
case "$with_arch" in
|
|
"" | 1.0 | 1.1 | 2.0)
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Unknown architecture used in --with-arch=$with_arch" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case "$with_schedule" in
|
|
"" | 700 | 7100 | 7100LC | 7200 | 7300 | 8000)
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Unknown processor used in --with-schedule=$with_schedule." 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
i[34567]86-*-* | x86_64-*-*)
|
|
supported_defaults="abi arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64"
|
|
for which in arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64; do
|
|
eval "val=\$with_$which"
|
|
case " $x86_archs " in
|
|
*" ${val} "*)
|
|
case "${target}" in
|
|
x86_64-*-*)
|
|
case "x$which" in
|
|
*_32)
|
|
;;
|
|
*)
|
|
echo "CPU given in --with-$which=$val doesn't support 64bit mode." 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
# OK
|
|
;;
|
|
*)
|
|
if test x${val} != x; then
|
|
case " $x86_64_archs " in
|
|
*" ${val} "*)
|
|
# OK
|
|
;;
|
|
*)
|
|
# Allow $x86_cpus --with-cpu=/--with-tune=
|
|
case "x$which" in
|
|
xcpu*|xtune*)
|
|
case " $x86_cpus " in
|
|
*" ${val} "*)
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Unknown CPU given in --with-$which=$val." 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
echo "Unknown CPU given in --with-$which=$val." 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
fi
|
|
;;
|
|
esac
|
|
done
|
|
;;
|
|
|
|
riscv*-*-*)
|
|
supported_defaults="abi arch tune riscv_attribute"
|
|
|
|
case "${target}" in
|
|
riscv-* | riscv32*) xlen=32 ;;
|
|
riscv64*) xlen=64 ;;
|
|
*) echo "Unsupported RISC-V target ${target}" 1>&2; exit 1 ;;
|
|
esac
|
|
|
|
case "${with_riscv_attribute}" in
|
|
yes)
|
|
tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
|
|
;;
|
|
no)
|
|
tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=0"
|
|
;;
|
|
""|default)
|
|
case "${target}" in
|
|
riscv*-*-elf*)
|
|
tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
|
|
;;
|
|
*)
|
|
tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=0"
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
echo "--with-riscv-attribute=${with_riscv_attribute} is not supported. The argument must begin with yes, no or default." 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
|
|
# Infer arch from --with-arch, --target, and --with-abi.
|
|
case "${with_arch}" in
|
|
rv32e* | rv32i* | rv32g* | rv64i* | rv64g*)
|
|
# OK.
|
|
;;
|
|
"")
|
|
# Infer XLEN, but otherwise assume GC.
|
|
case "${with_abi}" in
|
|
ilp32e) with_arch="rv32e" ;;
|
|
ilp32 | ilp32f | ilp32d) with_arch="rv32gc" ;;
|
|
lp64 | lp64f | lp64d) with_arch="rv64gc" ;;
|
|
*) with_arch="rv${xlen}gc" ;;
|
|
esac
|
|
;;
|
|
*)
|
|
echo "--with-arch=${with_arch} is not supported. The argument must begin with rv32e, rv32i, rv32g, rv64i, or rv64g." 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# Make sure --with-abi is valid. If it was not specified,
|
|
# pick a default based on the ISA, preferring soft-float
|
|
# unless the D extension is present.
|
|
case "${with_abi}" in
|
|
ilp32 | ilp32e | ilp32f | ilp32d | lp64 | lp64f | lp64d)
|
|
;;
|
|
"")
|
|
case "${with_arch}" in
|
|
rv32*d* | rv32g*) with_abi=ilp32d ;;
|
|
rv32e*) with_abi=ilp32e ;;
|
|
rv32*) with_abi=ilp32 ;;
|
|
rv64*d* | rv64g*) with_abi=lp64d ;;
|
|
rv64*) with_abi=lp64 ;;
|
|
esac
|
|
;;
|
|
*)
|
|
echo "--with-abi=${with_abi} is not supported" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# Make sure ABI and ISA are compatible.
|
|
case "${with_abi},${with_arch}" in
|
|
ilp32,rv32* | ilp32e,rv32e* \
|
|
| ilp32f,rv32*f* | ilp32f,rv32g* \
|
|
| ilp32d,rv32*d* | ilp32d,rv32g* \
|
|
| lp64,rv64* \
|
|
| lp64f,rv64*f* | lp64f,rv64g* \
|
|
| lp64d,rv64*d* | lp64d,rv64g*)
|
|
;;
|
|
*)
|
|
echo "--with-abi=${with_abi} is not supported for ISA ${with_arch}" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# Handle --with-multilib-list.
|
|
if test "x${with_multilib_list}" != xdefault; then
|
|
tm_file="${tm_file} riscv/withmultilib.h"
|
|
tmake_file="${tmake_file} riscv/t-withmultilib"
|
|
|
|
case ${with_multilib_list} in
|
|
ilp32 | ilp32f | ilp32d \
|
|
| lp64 | lp64f | lp64d )
|
|
TM_MULTILIB_CONFIG="${with_arch},${with_multilib_list}"
|
|
;;
|
|
*)
|
|
echo "--with-multilib-list=${with_multilib_list} not supported."
|
|
exit 1
|
|
esac
|
|
|
|
# Define macros to select the default multilib.
|
|
case ${with_arch} in
|
|
rv32gc)
|
|
tm_defines="${tm_defines} TARGET_MLIB_ARCH=1"
|
|
;;
|
|
rv64gc)
|
|
tm_defines="${tm_defines} TARGET_MLIB_ARCH=2"
|
|
;;
|
|
*)
|
|
echo "unsupported --with-arch for --with-multilib-list"
|
|
exit 1
|
|
esac
|
|
case ${with_abi} in
|
|
ilp32)
|
|
tm_defines="${tm_defines} TARGET_MLIB_ABI=1"
|
|
;;
|
|
ilp32f)
|
|
tm_defines="${tm_defines} TARGET_MLIB_ABI=2"
|
|
;;
|
|
ilp32d)
|
|
tm_defines="${tm_defines} TARGET_MLIB_ABI=3"
|
|
;;
|
|
lp64)
|
|
tm_defines="${tm_defines} TARGET_MLIB_ABI=4"
|
|
;;
|
|
lp64f)
|
|
tm_defines="${tm_defines} TARGET_MLIB_ABI=5"
|
|
;;
|
|
lp64d)
|
|
tm_defines="${tm_defines} TARGET_MLIB_ABI=6"
|
|
;;
|
|
*)
|
|
echo "unsupported --with-abi for --with-multilib"
|
|
exit 1
|
|
esac
|
|
fi
|
|
;;
|
|
|
|
mips*-*-*)
|
|
supported_defaults="abi arch arch_32 arch_64 float fpu nan fp_32 odd_spreg_32 tune tune_32 tune_64 divide llsc mips-plt synci lxc1-sxc1 madd4"
|
|
|
|
case ${with_float} in
|
|
"" | soft | hard)
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Unknown floating point type used in --with-float=$with_float" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case ${with_fpu} in
|
|
"" | single | double)
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Unknown fpu type used in --with-fpu=$with_fpu" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case ${with_nan} in
|
|
"" | 2008 | legacy)
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Unknown NaN encoding used in --with-nan=$with_nan" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case ${with_fp_32} in
|
|
"" | 32 | xx | 64)
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Unknown FP mode used in --with-fp-32=$with_fp_32" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case ${with_odd_spreg_32} in
|
|
yes)
|
|
with_odd_spreg_32="odd-spreg"
|
|
;;
|
|
no)
|
|
with_odd_spreg_32="no-odd-spreg"
|
|
;;
|
|
"")
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Unknown odd-spreg-32 type used in --with-odd-spreg-32=$with_odd_spreg_32" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case ${with_abi} in
|
|
"" | 32 | o64 | n32 | 64 | eabi)
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Unknown ABI used in --with-abi=$with_abi" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case ${with_divide} in
|
|
"" | breaks | traps)
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Unknown division check type use in --with-divide=$with_divide" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case ${with_llsc} in
|
|
yes)
|
|
with_llsc=llsc
|
|
;;
|
|
no)
|
|
with_llsc="no-llsc"
|
|
;;
|
|
"")
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Unknown llsc type used in --with-llsc" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case ${with_mips_plt} in
|
|
yes)
|
|
with_mips_plt=plt
|
|
;;
|
|
no)
|
|
with_mips_plt=no-plt
|
|
;;
|
|
"")
|
|
;;
|
|
*)
|
|
echo "Unknown --with-mips-plt argument: $with_mips_plt" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case ${with_synci} in
|
|
yes)
|
|
with_synci=synci
|
|
;;
|
|
no)
|
|
with_synci=no-synci
|
|
;;
|
|
"")
|
|
;;
|
|
*)
|
|
echo "Unknown synci type used in --with-synci" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case ${with_lxc1_sxc1} in
|
|
yes)
|
|
with_lxc1_sxc1=lxc1-sxc1
|
|
;;
|
|
no)
|
|
with_lxc1_sxc1=no-lxc1-sxc1
|
|
;;
|
|
"")
|
|
;;
|
|
*)
|
|
echo "Unknown lxc1-sxc1 type used in --with-lxc1-sxc1" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case ${with_madd4} in
|
|
yes)
|
|
with_madd4=madd4
|
|
;;
|
|
no)
|
|
with_madd4=no-madd4
|
|
;;
|
|
"")
|
|
;;
|
|
*)
|
|
echo "Unknown madd4 type used in --with-madd4" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
nds32*-*-*)
|
|
supported_defaults="arch cpu nds32_lib float fpu_config"
|
|
|
|
# process --with-arch
|
|
case "${with_arch}" in
|
|
"" | v3 )
|
|
tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
|
|
;;
|
|
v2 | v2j | v3m)
|
|
# OK
|
|
tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
|
|
;;
|
|
v3f)
|
|
tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=1"
|
|
;;
|
|
v3s)
|
|
tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=2"
|
|
|
|
;;
|
|
*)
|
|
echo "Cannot accept --with-arch=$with_arch, available values are: v2 v2j v3 v3m v3f v3s" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case "${with_cpu}" in
|
|
"")
|
|
with_cpu=n9
|
|
;;
|
|
n6 | n7 |n8 | e8 | s8 | n9 | n10 | d10 | n12 | n13 | n15)
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Cannot accept --with-cpu=$with_cpu, available values are: n6 n7 n8 e8 s8 n9 n10 d10 n12 n13 n15" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# process --with-nds32-lib
|
|
case "${with_nds32_lib}" in
|
|
"")
|
|
case ${target} in
|
|
*-*-*uclibc*)
|
|
with_nds32_lib=ulibc
|
|
;;
|
|
*-*-linux*)
|
|
with_nds32_lib=glibc
|
|
;;
|
|
*)
|
|
with_nds32_lib=newlib
|
|
tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
|
|
;;
|
|
esac
|
|
;;
|
|
newlib)
|
|
# OK
|
|
tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
|
|
;;
|
|
mculib)
|
|
# OK
|
|
# for the arch=v3f or arch=v3s under mculib toolchain,
|
|
# we would like to set -fno-math-errno as default
|
|
case "${with_arch}" in
|
|
v3f | v3s)
|
|
tm_defines="${tm_defines} TARGET_DEFAULT_NO_MATH_ERRNO=1"
|
|
;;
|
|
esac
|
|
;;
|
|
glibc | uclibc)
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Cannot accept --with-nds32-lib=$with_nds32_lib, available values are: newlib mculib glibc uclibc" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# process --with-float
|
|
case "${with_float}" in
|
|
"" | soft | hard)
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Cannot accept --with-float=$with_float, available values are: soft hard" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# process --with-config-fpu
|
|
case "${with_config_fpu}" in
|
|
"" | 0 | 1 | 2 | 3)
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Cannot accept --with-config-fpu=$with_config_fpu, available values from 0 to 7" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
|
|
;;
|
|
nios2*-*-*)
|
|
supported_defaults="arch"
|
|
case "$with_arch" in
|
|
"" | r1 | r2)
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Unknown arch used in --with-arch=$with_arch" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
powerpc*-*-* | rs6000-*-*)
|
|
supported_defaults="abi cpu cpu_32 cpu_64 float tune tune_32 tune_64 advance_toolchain"
|
|
|
|
for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
|
|
eval "val=\$with_$which"
|
|
case ${val} in
|
|
default32 | default64)
|
|
case $which in
|
|
cpu | tune)
|
|
;;
|
|
*)
|
|
echo "$val only valid for --with-cpu and --with-tune." 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
with_which="with_$which"
|
|
eval $with_which=
|
|
;;
|
|
405cr)
|
|
tm_defines="${tm_defines} CONFIG_PPC405CR"
|
|
eval "with_$which=405"
|
|
;;
|
|
"" | common | native \
|
|
| power[3456789] | power5+ | power6x \
|
|
| powerpc | powerpc64 | powerpc64le \
|
|
| rs64 \
|
|
| 401 | 403 | 405 | 405fp | 440 | 440fp | 464 | 464fp \
|
|
| 476 | 476fp | 505 | 601 | 602 | 603 | 603e | ec603e \
|
|
| 604 | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 \
|
|
| a2 | e300c[23] | 854[08] | e500mc | e500mc64 | e5500 | e6500 \
|
|
| titan | 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5 | cell)
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Unknown cpu used in --with-$which=$val." 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
case "$with_abi" in
|
|
"" | elfv1 | elfv2 )
|
|
#OK
|
|
;;
|
|
*)
|
|
echo "Unknown ABI used in --with-abi=$with_abi"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
if test "x$with_advance_toolchain" != x; then
|
|
if test -d "/opt/$with_advance_toolchain/." -a \
|
|
-d "/opt/$with_advance_toolchain/bin/." -a \
|
|
-d "/opt/$with_advance_toolchain/include/."; then
|
|
|
|
tm_file="$tm_file ./advance-toolchain.h"
|
|
(at="/opt/$with_advance_toolchain"
|
|
echo "/* Use Advance Toolchain $at */"
|
|
echo
|
|
echo "#undef LINK_OS_EXTRA_SPEC32"
|
|
echo "#define LINK_OS_EXTRA_SPEC32" \
|
|
"\"%(link_os_new_dtags)" \
|
|
"-rpath $prefix/lib -rpath $at/lib\""
|
|
echo
|
|
echo "#undef LINK_OS_EXTRA_SPEC64"
|
|
echo "#define LINK_OS_EXTRA_SPEC64" \
|
|
"\"%(link_os_new_dtags)" \
|
|
"-rpath $prefix/lib64 -rpath $at/lib64\""
|
|
echo
|
|
echo "#undef LINK_OS_NEW_DTAGS_SPEC"
|
|
echo "#define LINK_OS_NEW_DTAGS_SPEC" \
|
|
"\"--enable-new-dtags\""
|
|
echo
|
|
echo "#undef DYNAMIC_LINKER_PREFIX"
|
|
echo "#define DYNAMIC_LINKER_PREFIX \"$at\""
|
|
echo
|
|
echo "#undef MD_EXEC_PREFIX"
|
|
echo "#define MD_EXEC_PREFIX \"$at/bin/\""
|
|
echo
|
|
echo "#undef MD_STARTFILE_PREFIX"
|
|
echo "#define MD_STARTFILE_PREFIX \"$prefix/lib/\""
|
|
echo
|
|
echo "#undef MD_STARTFILE_PREFIX_1"
|
|
echo "#define MD_STARTFILE_PREFIX_1 \"$at/lib/\"") \
|
|
> advance-toolchain.h
|
|
else
|
|
echo "Unknown advance-toolchain $with_advance_toolchain"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# Set up the default long double format if the user changed it.
|
|
if test x$with_long_double_format = xieee; then
|
|
tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=1"
|
|
|
|
elif test x$with_long_double_format = xibm; then
|
|
tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=0"
|
|
fi
|
|
;;
|
|
|
|
s390*-*-*)
|
|
supported_defaults="arch mode tune"
|
|
|
|
for which in arch tune; do
|
|
eval "val=\$with_$which"
|
|
case ${val} in
|
|
"" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | z15 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12 | arch13 )
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Unknown cpu used in --with-$which=$val." 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
case ${with_mode} in
|
|
"" | esa | zarch)
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Unknown architecture mode used in --with-mode=$with_mode." 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
sh[123456ble]*-*-* | sh-*-*)
|
|
supported_defaults="cpu"
|
|
case "`echo $with_cpu | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz- | sed s/sh/m/`" in
|
|
"" | m1 | m2 | m2e | m3 | m3e | m4 | m4-single | m4-single-only | m4-nofpu )
|
|
# OK
|
|
;;
|
|
m2a | m2a-single | m2a-single-only | m2a-nofpu)
|
|
;;
|
|
m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al)
|
|
;;
|
|
*)
|
|
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
|
|
echo "m4a m4a-single m4a-single-only m4a-nofpu m4al" 1>&2
|
|
echo "m2a m2a-single m2a-single-only m2a-nofpu" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
sparc*-*-*)
|
|
supported_defaults="cpu cpu_32 cpu_64 float tune tune_32 tune_64"
|
|
|
|
for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
|
|
eval "val=\$with_$which"
|
|
case ${val} in
|
|
"" | sparc | sparcv9 | sparc64 \
|
|
| v7 | cypress \
|
|
| v8 | supersparc | hypersparc | leon | leon3 | leon3v7 \
|
|
| sparclite | f930 | f934 | sparclite86x \
|
|
| sparclet | tsc701 \
|
|
| v9 | ultrasparc | ultrasparc3 | niagara | niagara2 \
|
|
| niagara3 | niagara4 | niagara7 | m8)
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Unknown cpu used in --with-$which=$val" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
case ${with_float} in
|
|
"" | soft | hard)
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Unknown floating point type used in --with-float=$with_float" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
tic6x-*-*)
|
|
supported_defaults="arch"
|
|
|
|
case ${with_arch} in
|
|
"" | c62x | c64x | c64x+ | c67x | c67x+ | c674x)
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Unknown arch used in --with-arch=$with_arch." 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
v850*-*-*)
|
|
supported_defaults=cpu
|
|
case ${with_cpu} in
|
|
"" | v850e | v850e1 | v850e2 | v850es | v850e2v3 | v850e3v5)
|
|
# OK
|
|
;;
|
|
*)
|
|
echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
visium-*-*)
|
|
supported_defaults="cpu"
|
|
case $with_cpu in
|
|
"" | gr5 | gr6)
|
|
;;
|
|
*) echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
# Targets for which there is at least one VxWorks port should include
|
|
# vxworks-dummy.h to allow safe references to various TARGET_VXWORKS kinds
|
|
# of markers from other files in the port, including the vxworks*.h files to
|
|
# distinguish VxWorks variants such as VxWorks 7 or 64).
|
|
|
|
case ${target} in
|
|
arm*-*-* | i[34567]86-*-* | mips*-*-* | powerpc*-*-* | sh*-*-* \
|
|
| sparc*-*-* | x86_64-*-*)
|
|
tm_file="vxworks-dummy.h ${tm_file}"
|
|
;;
|
|
esac
|
|
|
|
# Set some miscellaneous flags for particular targets.
|
|
target_cpu_default2=
|
|
case ${target} in
|
|
aarch64*-*-*)
|
|
if test x"$target_cpu_cname" != x
|
|
then
|
|
target_cpu_default2=$target_cpu_cname
|
|
fi
|
|
;;
|
|
|
|
arm*-*-*)
|
|
if test x$with_cpu = x
|
|
then
|
|
echo "Don't know the target cpu" 1>&2
|
|
exit 1
|
|
else
|
|
target_cpu_default2="\\\"$with_cpu\\\""
|
|
fi
|
|
;;
|
|
|
|
hppa*-*-*)
|
|
if test x$gas = xyes
|
|
then
|
|
target_cpu_default2="MASK_GAS"
|
|
fi
|
|
;;
|
|
|
|
fido*-*-* | m68k*-*-*)
|
|
target_cpu_default2=$m68k_cpu_ident
|
|
tmake_file="m68k/t-opts $tmake_file"
|
|
if [ x"$m68k_arch_family" != x ]; then
|
|
tmake_file="m68k/t-$m68k_arch_family $tmake_file"
|
|
fi
|
|
;;
|
|
|
|
i[34567]86-*-darwin* | x86_64-*-darwin*)
|
|
;;
|
|
i[34567]86-*-linux* | x86_64-*-linux*)
|
|
extra_objs="${extra_objs} cet.o"
|
|
tmake_file="$tmake_file i386/t-linux i386/t-cet"
|
|
;;
|
|
i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu)
|
|
tmake_file="$tmake_file i386/t-kfreebsd"
|
|
;;
|
|
i[34567]86-*-gnu*)
|
|
tmake_file="$tmake_file i386/t-gnu"
|
|
;;
|
|
i[34567]86-*-msdosdjgpp*)
|
|
tmake_file="${tmake_file} i386/t-djgpp"
|
|
;;
|
|
i[34567]86-*-solaris2* | x86_64-*-solaris2*)
|
|
;;
|
|
i[34567]86-*-cygwin* | x86_64-*-cygwin*)
|
|
;;
|
|
i[34567]86-*-mingw* | x86_64-*-mingw*)
|
|
;;
|
|
i[34567]86-*-dragonfly* | x86_64-*-dragonfly*)
|
|
;;
|
|
i[34567]86-*-freebsd*)
|
|
;;
|
|
x86_64-*-freebsd*)
|
|
tmake_file="${tmake_file} i386/t-freebsd64"
|
|
;;
|
|
ia64*-*-linux*)
|
|
;;
|
|
|
|
mips*-*-*)
|
|
if test x$gnu_ld = xyes
|
|
then
|
|
target_cpu_default2="MASK_SPLIT_ADDRESSES"
|
|
fi
|
|
case ${target} in
|
|
mips*el-*-*)
|
|
tm_defines="TARGET_ENDIAN_DEFAULT=0 $tm_defines"
|
|
;;
|
|
esac
|
|
if test x$with_arch != x; then
|
|
default_mips_arch=$with_arch
|
|
fi
|
|
if test x$with_abi != x; then
|
|
default_mips_abi=$with_abi
|
|
fi
|
|
case ${default_mips_arch} in
|
|
mips1) tm_defines="$tm_defines MIPS_ISA_DEFAULT=1" ;;
|
|
mips2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=2" ;;
|
|
mips3) tm_defines="$tm_defines MIPS_ISA_DEFAULT=3" ;;
|
|
mips4) tm_defines="$tm_defines MIPS_ISA_DEFAULT=4" ;;
|
|
mips32) tm_defines="$tm_defines MIPS_ISA_DEFAULT=32" ;;
|
|
mips32r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=33" ;;
|
|
mips32r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=37" ;;
|
|
mips64) tm_defines="$tm_defines MIPS_ISA_DEFAULT=64" ;;
|
|
mips64r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=65" ;;
|
|
mips64r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=69" ;;
|
|
esac
|
|
case ${default_mips_abi} in
|
|
32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_32" ;;
|
|
o64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_O64" ;;
|
|
n32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_N32" ;;
|
|
64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_64" ;;
|
|
eabi) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_EABI" ;;
|
|
esac
|
|
tmake_file="mips/t-mips $tmake_file"
|
|
;;
|
|
|
|
powerpc*-*-* | rs6000-*-*)
|
|
# FIXME: The PowerPC port uses the value set at compile time,
|
|
# although it's only cosmetic.
|
|
if test "x$with_cpu" != x
|
|
then
|
|
target_cpu_default2="\\\"$with_cpu\\\""
|
|
fi
|
|
out_file="${cpu_type}/${cpu_type}.c"
|
|
c_target_objs="${c_target_objs} ${cpu_type}-c.o"
|
|
cxx_target_objs="${cxx_target_objs} ${cpu_type}-c.o"
|
|
d_target_objs="${d_target_objs} ${cpu_type}-d.o"
|
|
tmake_file="${cpu_type}/t-${cpu_type} ${tmake_file}"
|
|
;;
|
|
|
|
sh[123456ble]*-*-* | sh-*-*)
|
|
c_target_objs="${c_target_objs} sh-c.o"
|
|
cxx_target_objs="${cxx_target_objs} sh-c.o"
|
|
;;
|
|
|
|
sparc*-*-*)
|
|
# Some standard aliases.
|
|
case x$with_cpu in
|
|
xsparc)
|
|
with_cpu=v7
|
|
;;
|
|
xsparcv9 | xsparc64)
|
|
with_cpu=v9
|
|
;;
|
|
esac
|
|
|
|
if test x$with_tune = x ; then
|
|
case ${target} in
|
|
*-leon-*)
|
|
with_tune=leon
|
|
;;
|
|
*-leon[3-9]*)
|
|
with_tune=leon3
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
# The SPARC port checks this value at compile-time.
|
|
target_cpu_default2="TARGET_CPU_$with_cpu"
|
|
;;
|
|
|
|
v850*-*-*)
|
|
case "x$with_cpu" in
|
|
x)
|
|
;;
|
|
xv850e | xv850e1 | xv850e2 | xv850e2v3 | xv850e3v5)
|
|
target_cpu_default2="TARGET_CPU_$with_cpu"
|
|
;;
|
|
xv850es)
|
|
target_cpu_default2="TARGET_CPU_v850e1"
|
|
;;
|
|
esac
|
|
;;
|
|
visium-*-*)
|
|
target_cpu_default2="TARGET_CPU_$with_cpu"
|
|
;;
|
|
esac
|
|
|
|
t=
|
|
all_defaults="abi cpu cpu_32 cpu_64 arch arch_32 arch_64 tune tune_32 tune_64 schedule float mode fpu nan fp_32 odd_spreg_32 divide llsc mips-plt synci tls lxc1-sxc1 madd4"
|
|
for option in $all_defaults
|
|
do
|
|
eval "val=\$with_"`echo $option | sed s/-/_/g`
|
|
if test -n "$val"; then
|
|
case " $supported_defaults " in
|
|
*" $option "*)
|
|
;;
|
|
*)
|
|
echo "This target does not support --with-$option." 2>&1
|
|
echo "Valid --with options are: $supported_defaults" 2>&1
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
if test "x$t" = x
|
|
then
|
|
t="{ \"$option\", \"$val\" }"
|
|
else
|
|
t="${t}, { \"$option\", \"$val\" }"
|
|
fi
|
|
fi
|
|
done
|
|
|
|
if test "x$t" = x
|
|
then
|
|
configure_default_options="{ { NULL, NULL} }"
|
|
else
|
|
configure_default_options="{ ${t} }"
|
|
fi
|
|
|
|
if test "$target_cpu_default2" != ""
|
|
then
|
|
if test "$target_cpu_default" != ""
|
|
then
|
|
target_cpu_default="(${target_cpu_default}|${target_cpu_default2})"
|
|
else
|
|
target_cpu_default=$target_cpu_default2
|
|
fi
|
|
fi
|
|
|
|
case ${target} in
|
|
i[34567]86-*-* | x86_64-*-*)
|
|
if test x$enable_as_accelerator = xyes; then
|
|
extra_programs="mkoffload\$(exeext)"
|
|
fi
|
|
;;
|
|
esac
|