]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config.gcc
Update copyright years.
[thirdparty/gcc.git] / gcc / config.gcc
CommitLineData
39667263 1# SPDX-License-Identifier: GPL-3.0-or-later
a89ea0df 2# GCC target-specific configuration file.
7adcbafe 3# Copyright (C) 1997-2022 Free Software Foundation, Inc.
61ed06c3 4
1322177d 5#This file is part of GCC.
61ed06c3 6
1322177d
LB
7#GCC is free software; you can redistribute it and/or modify it under
8#the terms of the GNU General Public License as published by the Free
9dcd6f09 9#Software Foundation; either version 3, or (at your option) any later
1322177d 10#version.
61ed06c3 11
1322177d
LB
12#GCC is distributed in the hope that it will be useful, but WITHOUT
13#ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14#FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15#for more details.
61ed06c3
HPN
16
17#You should have received a copy of the GNU General Public License
9dcd6f09
NC
18#along with GCC; see the file COPYING3. If not see
19#<http://www.gnu.org/licenses/>.
61ed06c3 20
a89ea0df
NN
21# This is the GCC target-specific configuration file
22# where a configuration type is mapped to different system-specific
23# definitions and files. This is invoked by the autoconf-generated
24# configure script. Putting it in a separate shell file lets us skip
25# running autoconf when modifying target-specific information.
61ed06c3 26
fa958513
DJ
27# When you change the cases in the OS or target switches, consider
28# updating ../libgcc/config.host also.
29
b01bc573 30# This file switches on the shell variable ${target}, and also uses the
61ed06c3
HPN
31# following shell variables:
32#
33# with_* Various variables as set by configure.
34#
615be2cf 35# enable_threads Either the name, yes or no depending on whether
61ed06c3
HPN
36# threads support was requested.
37#
2121a768 38# default_use_cxa_atexit
c5dde55b
NC
39# The default value for the $enable___cxa_atexit
40# variable. enable___cxa_atexit needs to be set to
41# "yes" for the correct operation of C++ destructors
42# but it relies upon the presence of a non-standard C
43# library function called __cxa_atexit.
44# Since not all C libraries provide __cxa_atexit the
45# default value of $default_use_cxa_atexit is set to
46# "no" except for targets which are known to be OK.
2121a768 47#
f6c5fbfd
NS
48# default_gnu_indirect_function
49# The default value for the $enable_gnu_indirect_function
50# variable. enable_gnu_indirect_function relies
51# upon the presence of a non-standard gnu ifunc support
52# in the assembler, linker and dynamic linker.
53# Since not all libraries provide the dynamic linking
54# support, the default value of
55# $default_gnu_indirect_function is set to
56# "no" except for targets which are known to be OK.
57#
61ed06c3
HPN
58# gas_flag Either yes or no depending on whether GNU as was
59# requested.
60#
61# gnu_ld_flag Either yes or no depending on whether GNU ld was
62# requested.
63
64# This file sets the following shell variables for use by the
65# autoconf-generated configure script:
66#
b01bc573
NN
67# cpu_type The name of the cpu, if different from the first
68# chunk of the canonical target name.
61ed06c3 69#
d5355cb2
JDA
70# tm_defines List of target macros to define for all compilations.
71#
61ed06c3 72# tm_file A list of target macro files, if different from
32fb7c9d
FS
73# "$cpu_type/$cpu_type.h". Usually it's constructed
74# per target in a way like this:
57809813 75# tm_file="${tm_file} dbxelf.h elfos.h ${cpu_type.h}/elf.h"
32fb7c9d
FS
76# Note that the preferred order is:
77# - specific target header "${cpu_type}/${cpu_type.h}"
a4a4b1d3 78# - generic headers like dbxelf.h elfos.h, etc.
32fb7c9d
FS
79# - specializing target headers like ${cpu_type.h}/elf.h
80# This helps to keep OS specific stuff out of the CPU
81# defining header ${cpu_type}/${cpu_type.h}.
61ed06c3 82#
9c63c208
SL
83# It is possible to include automatically-generated
84# build-directory files by prefixing them with "./".
85# All other files should relative to $srcdir/config.
86#
61ed06c3
HPN
87# tm_p_file Location of file with declarations for functions
88# in $out_file.
89#
b4c522fa
IB
90# tm_d_file A list of headers with definitions of target hook
91# macros for the D compiler.
92#
61ed06c3
HPN
93# out_file The name of the machine description C support
94# file, if different from "$cpu_type/$cpu_type.c".
95#
c49a6962
JM
96# common_out_file The name of the source file for code shared between
97# the compiler proper and the driver.
98#
61ed06c3
HPN
99# md_file The name of the machine-description file, if
100# different from "$cpu_type/$cpu_type.md".
101#
102# tmake_file A list of machine-description-specific
103# makefile-fragments, if different from
104# "$cpu_type/t-$cpu_type".
105#
1c0ca89d
ZW
106# extra_modes The name of the file containing a list of extra
107# machine modes, if necessary and different from
108# "$cpu_type/$cpu_type-modes.def".
109#
61ed06c3
HPN
110# extra_objs List of extra objects that should be linked into
111# the compiler proper (cc1, cc1obj, cc1plus)
112# depending on target.
113#
30500d84
KC
114# extra_gcc_objs List of extra objects that should be linked into
115# the compiler driver (gcc) depending on target.
116#
61ed06c3 117# extra_headers List of used header files from the directory
817e13c4 118# config/${cpu_type}.
61ed06c3 119#
9b91e436
KT
120# user_headers_inc_next_pre
121# List of header file names of internal gcc header
122# files, which should be prefixed by an include_next.
123# user_headers_inc_next_post
124# List of header file names of internal gcc header
125# files, which should be postfixed by an include_next.
1617e5ee
GK
126# use_gcc_tgmath If set, add tgmath.h to the list of used header
127# files.
128#
207bf79d
JM
129# use_gcc_stdint If "wrap", install a version of stdint.h that
130# wraps the system's copy for hosted compilations;
131# if "provide", provide a version of systems without
132# such a system header; otherwise "none", do not
133# provide such a header at all.
134#
d82c57a8
RO
135# extra_programs List of extra executables compiled for this target
136# machine, used when linking.
61ed06c3 137#
75685792
RS
138# extra_options List of target-dependent .opt files.
139#
ff7cc307 140# c_target_objs List of extra target-dependent objects that be
aac69a49 141# linked into the C compiler only.
0e5a4ad8 142#
ff7cc307 143# cxx_target_objs List of extra target-dependent objects that be
aac69a49 144# linked into the C++ compiler only.
0e5a4ad8 145#
b4c522fa
IB
146# d_target_objs List of extra target-dependent objects that be
147# linked into the D compiler only.
148#
c776a6d0
DF
149# fortran_target_objs List of extra target-dependent objects that be
150# linked into the fortran compiler only.
151#
ef69da62
SS
152# target_gtfiles List of extra source files with type information.
153#
61ed06c3
HPN
154# xm_defines List of macros to define when compiling for the
155# target machine.
156#
157# xm_file List of files to include when compiling for the
158# target machine.
159#
160# use_collect2 Set to yes or no, depending on whether collect2
161# will be used.
162#
163# target_cpu_default Set to override the default target model.
164#
61ed06c3
HPN
165# gdb_needs_out_file_path
166# Set to yes if gdb needs a dir command with
167# `dirname $out_file`.
168#
61ed06c3
HPN
169# thread_file Set to control which thread package to use.
170#
171# gas Set to yes or no depending on whether the target
172# system normally uses GNU as.
4977bab6 173#
7816bea0
DJ
174# configure_default_options
175# Set to an initializer for configure_default_options
176# in configargs.h, based on --with-cpu et cetera.
08b2bad2
SB
177#
178# native_system_header_dir
179# Where system header files are found for this
180# target. This defaults to /usr/include. If
181# the --with-sysroot configure option or the
182# --sysroot command line option is used this
183# will be relative to the sysroot.
5ab22850
RR
184# target_type_format_char
185# The default character to be used for formatting
186# the attribute in a
187# .type symbol_name, ${t_t_f_c}<property>
188# directive.
61ed06c3
HPN
189
190# The following variables are used in each case-construct to build up the
191# outgoing variables:
192#
61ed06c3
HPN
193# gnu_ld Set to yes or no depending on whether the target
194# system normally uses GNU ld.
acce4e77
JM
195#
196# target_has_targetcm Set to yes or no depending on whether the target
197# has its own definition of targetcm.
c49a6962
JM
198#
199# target_has_targetm_common Set to yes or no depending on whether the
200# target has its own definition of targetm_common.
b4c522fa
IB
201#
202# target_has_targetdm Set to yes or no depending on whether the target
203# has its own definition of targetdm.
61ed06c3
HPN
204
205out_file=
c49a6962 206common_out_file=
61ed06c3
HPN
207tmake_file=
208extra_headers=
9b91e436
KT
209user_headers_inc_next_pre=
210user_headers_inc_next_post=
1617e5ee 211use_gcc_tgmath=yes
207bf79d 212use_gcc_stdint=none
61ed06c3
HPN
213extra_programs=
214extra_objs=
61ed06c3 215extra_gcc_objs=
75685792 216extra_options=
aac69a49
NC
217c_target_objs=
218cxx_target_objs=
b4c522fa 219d_target_objs=
c776a6d0 220fortran_target_objs=
acce4e77 221target_has_targetcm=no
677f3fa8 222target_has_targetm_common=yes
b4c522fa 223target_has_targetdm=no
d5355cb2 224tm_defines=
61ed06c3 225xm_defines=
61ed06c3
HPN
226# Set this to force installation and use of collect2.
227use_collect2=
228# Set this to override the default target model.
229target_cpu_default=
61ed06c3
HPN
230# Set this if gdb needs a dir command with `dirname $out_file`
231gdb_needs_out_file_path=
61ed06c3
HPN
232# Set this to control which thread package will be used.
233thread_file=
234# Reinitialize these from the flag values every loop pass, since some
235# configure entries modify them.
236gas="$gas_flag"
237gnu_ld="$gnu_ld_flag"
2121a768 238default_use_cxa_atexit=no
f6c5fbfd 239default_gnu_indirect_function=no
6ab185d6 240target_gtfiles=
c6b9174f 241need_64bit_isa=
08b2bad2 242native_system_header_dir=/usr/include
5ab22850 243target_type_format_char='@'
61ed06c3 244
6a38414a
NN
245# Don't carry these over build->host->target. Please.
246xm_file=
247md_file=
248
9340544b 249# Obsolete configurations.
32243d46 250case ${target} in
2f2aeda9 251 tile*-*-* \
a7348a18 252 | cr16-*-* \
10555529
RB
253 | hppa[12]*-*-hpux10* \
254 | hppa[12]*-*-hpux11* \
1f56dbe2 255 | m32c-*-rtems* \
32243d46
JM
256 )
257 if test "x$enable_obsolete" != xyes; then
258 echo "*** Configuration ${target} is obsolete." >&2
259 echo "*** Specify --enable-obsolete to build it anyway." >&2
260 echo "*** Support will be REMOVED in the next major release of GCC," >&2
261 echo "*** unless a maintainer comes forward." >&2
262 exit 1
263 fi;;
264esac
9340544b 265
7c942e17
ZW
266# Unsupported targets list. Do not put an entry in this list unless
267# it would otherwise be caught by a more permissive pattern. The list
268# should be in alphabetical order.
b01bc573 269case ${target} in
c4cc7bc1
RE
270 # Avoid special cases that are not obsolete
271 arm*-*-*eabi* \
272 )
273 ;;
274 arm*-wince-pe* \
275 | arm*-*-ecos-elf \
276 | arm*-*-elf \
c4cc7bc1 277 | arm*-*-linux* \
c4cc7bc1 278 | arm*-*-uclinux* \
2b36e4dc
HPN
279 | cris-*-linux* \
280 | crisv32-*-* \
c4cc7bc1 281 | i[34567]86-go32-* \
7c942e17 282 | i[34567]86-*-go32* \
20f3c168
AP
283 | m32r-*-linux* \
284 | m32rle-*-linux* \
40c9541a 285 | m68k*-*-openbsd* \
ebb9f8b0 286 | m68k-*-uclinuxoldabi* \
7c942e17 287 | mips64orion*-*-rtems* \
52c0e446 288 | pdp11-*-bsd \
d8905777 289 | powerpc*-*-linux*paired* \
23d3e2d5 290 | powerpc*-*-*spe* \
7c942e17 291 | sparc-hal-solaris2* \
2f2aeda9 292 | spu*-*-* \
7c942e17 293 | thumb-*-* \
1eae4574 294 | *-*-freebsd[12] | *-*-freebsd[1234].* \
0db8fa89 295 | *-*-freebsd*aout* \
cd985f66 296 | *-*-linux*aout* \
7c942e17 297 | *-*-linux*coff* \
cd985f66 298 | *-*-linux*libc1* \
7c942e17
ZW
299 | *-*-linux*oldld* \
300 | *-*-rtemsaout* \
301 | *-*-rtemscoff* \
1500b428 302 | *-*-solaris2 \
d9f069ab
RO
303 | *-*-solaris2.[0-9] \
304 | *-*-solaris2.[0-9].* \
ccd1242e 305 | *-*-solaris2.10* \
7888f266 306 | *-*-sysv* \
9ab346a1 307 | vax-*-vms* \
7c942e17 308 )
b01bc573 309 echo "*** Configuration ${target} not supported" 1>&2
7c942e17
ZW
310 exit 1
311 ;;
312esac
313
61ed06c3 314# Set default cpu_type, tm_file, tm_p_file and xm_file so it can be
ba1e6c0b
JM
315# updated in each machine entry. Also set default extra_headers for some
316# machines.
61ed06c3 317tm_p_file=
b01bc573 318cpu_type=`echo ${target} | sed 's/-.*$//'`
a8e04fe6 319cpu_is_64bit=
b01bc573 320case ${target} in
38b2d076
DD
321m32c*-*-*)
322 cpu_type=m32c
323 tmake_file=m32c/t-m32c
41dfca87 324 target_has_targetm_common=no
38b2d076 325 ;;
24034425
IB
326aarch64*-*-*)
327 cpu_type=aarch64
abbe1ed2 328 extra_headers="arm_fp16.h arm_neon.h arm_bf16.h arm_acle.h arm_sve.h"
e4ea20c8
KT
329 c_target_objs="aarch64-c.o"
330 cxx_target_objs="aarch64-c.o"
b4c522fa 331 d_target_objs="aarch64-d.o"
5a783f42 332 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 aarch64-cc-fusion.o"
624d0f07 333 target_gtfiles="\$(srcdir)/config/aarch64/aarch64-builtins.c \$(srcdir)/config/aarch64/aarch64-sve-builtins.h \$(srcdir)/config/aarch64/aarch64-sve-builtins.cc"
24034425
IB
334 target_has_targetm_common=yes
335 ;;
61ed06c3
HPN
336alpha*-*-*)
337 cpu_type=alpha
34251c0e 338 extra_options="${extra_options} g.opt"
61ed06c3 339 ;;
7431c1a1
AS
340amdgcn*)
341 cpu_type=gcn
342 use_gcc_stdint=wrap
343 ;;
2beef00e
AO
344am33_2.0-*-linux*)
345 cpu_type=mn10300
346 ;;
53426f6c
JR
347arc*-*-*)
348 cpu_type=arc
cf07c3de
CZ
349 c_target_objs="arc-c.o"
350 cxx_target_objs="arc-c.o"
9f532472 351 extra_options="${extra_options} arc/arc-tables.opt g.opt"
fad92291 352 extra_headers="arc-simd.h"
53426f6c 353 ;;
150b72ed
DJ
354arm*-*-*)
355 cpu_type=arm
9c1ce17b 356 extra_objs="arm-builtins.o arm-mve-builtins.o aarch-common.o"
78bf9163 357 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"
5ab22850 358 target_type_format_char='%'
b76c3c4b
PB
359 c_target_objs="arm-c.o"
360 cxx_target_objs="arm-c.o"
b4c522fa 361 d_target_objs="arm-d.o"
ad7be009 362 extra_options="${extra_options} arm/arm-tables.opt"
9c1ce17b 363 target_gtfiles="\$(srcdir)/config/arm/arm-builtins.c \$(srcdir)/config/arm/arm-mve-builtins.h \$(srcdir)/config/arm/arm-mve-builtins.cc"
150b72ed 364 ;;
17fad361
AH
365avr-*-*)
366 cpu_type=avr
367 c_target_objs="avr-c.o"
368 cxx_target_objs="avr-c.o"
369 ;;
0d4a78eb
BS
370bfin*-*)
371 cpu_type=bfin
372 ;;
91dfef96
JM
373bpf-*-*)
374 cpu_type=bpf
375 ;;
faf9ab98 376frv*) cpu_type=frv
34251c0e 377 extra_options="${extra_options} g.opt"
faf9ab98 378 ;;
fef939d6
JB
379ft32*) cpu_type=ft32
380 target_has_targetm_common=no
381 ;;
cceb575c 382moxie*) cpu_type=moxie
677f3fa8 383 target_has_targetm_common=no
cceb575c 384 ;;
7d33c31d
KH
385fido-*-*)
386 cpu_type=m68k
387 extra_headers=math-68881.h
47c94d21 388 extra_options="${extra_options} m68k/m68k-tables.opt"
7d33c31d 389 ;;
e52494da 390i[34567]86-*-* | x86_64-*-*)
61ed06c3 391 cpu_type=i386
ab442df7
MM
392 c_target_objs="i386-c.o"
393 cxx_target_objs="i386-c.o"
b4c522fa 394 d_target_objs="i386-d.o"
2bf6d935 395 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"
7c0b7150 396 target_gtfiles="\$(srcdir)/config/i386/i386-builtins.c \$(srcdir)/config/i386/i386-expand.c \$(srcdir)/config/i386/i386-options.c"
d48e78d6 397 extra_options="${extra_options} fused-madd.opt"
b3172cab 398 extra_headers="cpuid.h mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h
3b8dd071 399 pmmintrin.h tmmintrin.h ammintrin.h smmintrin.h
cbf2e4d4 400 nmmintrin.h bmmintrin.h fma4intrin.h wmmintrin.h
43a8b705 401 immintrin.h x86intrin.h avxintrin.h xopintrin.h
7fccdfcf 402 ia32intrin.h cross-stdarg.h lwpintrin.h popcntintrin.h
2abaf67e 403 lzcntintrin.h bmiintrin.h bmi2intrin.h tbmintrin.h
756c5857
AI
404 avx2intrin.h avx512fintrin.h fmaintrin.h f16cintrin.h
405 rtmintrin.h xtestintrin.h rdseedintrin.h prfchwintrin.h
406 adxintrin.h fxsrintrin.h xsaveintrin.h xsaveoptintrin.h
c1618f82 407 avx512cdintrin.h avx512erintrin.h avx512pfintrin.h
9cdea277 408 shaintrin.h clflushoptintrin.h xsavecintrin.h
936c0fe4 409 xsavesintrin.h avx512dqintrin.h avx512bwintrin.h
4190ea38 410 avx512vlintrin.h avx512vlbwintrin.h avx512vldqintrin.h
3dcc8af5 411 avx512ifmaintrin.h avx512ifmavlintrin.h avx512vbmiintrin.h
5fbb13a7 412 avx512vbmivlintrin.h avx5124fmapsintrin.h avx5124vnniwintrin.h
79fc8ffe 413 avx512vpopcntdqintrin.h clwbintrin.h mwaitxintrin.h
9d54607a 414 clzerointrin.h pkuintrin.h sgxintrin.h cetintrin.h
489154e7 415 gfniintrin.h cet.h avx512vbmi2intrin.h
69ddc3e5 416 avx512vbmi2vlintrin.h avx512vnniintrin.h
2abaf67e 417 avx512vnnivlintrin.h vaesintrin.h vpclmulqdqintrin.h
13b93d4b 418 avx512vpopcntdqvlintrin.h avx512bitalgintrin.h
55f31ed1 419 pconfigintrin.h wbnoinvdintrin.h movdirintrin.h
366386c7 420 waitpkgintrin.h cldemoteintrin.h avx512bf16vlintrin.h
421 avx512bf16intrin.h enqcmdintrin.h serializeintrin.h
1e47cb35 422 avx512vp2intersectintrin.h avx512vp2intersectvlintrin.h
5c609842 423 tsxldtrkintrin.h amxtileintrin.h amxint8intrin.h
83927c63 424 amxbf16intrin.h x86gprintrin.h uintrintrin.h
d8c6cc2c 425 hresetintrin.h keylockerintrin.h avxvnniintrin.h
bd7a34ef 426 mwaitintrin.h avx512fp16intrin.h avx512fp16vlintrin.h"
14f73b5a 427 ;;
817e13c4
JM
428ia64-*-*)
429 extra_headers=ia64intrin.h
f19f1e5e 430 extra_options="${extra_options} g.opt fused-madd.opt"
817e13c4 431 ;;
cd985f66 432hppa*-*-*)
61ed06c3
HPN
433 cpu_type=pa
434 ;;
34251c0e
JM
435lm32*)
436 extra_options="${extra_options} g.opt"
437 ;;
ad126521
KI
438m32r*-*-*)
439 cpu_type=m32r
34251c0e 440 extra_options="${extra_options} g.opt"
ad126521 441 ;;
ba1e6c0b
JM
442m68k-*-*)
443 extra_headers=math-68881.h
47c94d21 444 extra_options="${extra_options} m68k/m68k-tables.opt"
61ed06c3 445 ;;
80920132
ME
446microblaze*-*-*)
447 cpu_type=microblaze
448 extra_options="${extra_options} g.opt"
449 ;;
61ed06c3
HPN
450mips*-*-*)
451 cpu_type=mips
b4c522fa 452 d_target_objs="mips-d.o"
8ae8bad7 453 extra_headers="loongson.h loongson-mmiintrin.h msa.h"
d41c8b4c 454 extra_objs="frame-header-opt.o"
e5aac417 455 extra_options="${extra_options} g.opt fused-madd.opt mips/mips-tables.opt"
61ed06c3 456 ;;
9304f876
CJW
457nds32*)
458 cpu_type=nds32
a4931745 459 extra_headers="nds32_intrinsic.h nds32_isr.h nds32_init.inc"
cf3cd43d
CJW
460 case ${target} in
461 nds32*-*-linux*)
462 extra_options="${extra_options} nds32/nds32-linux.opt"
463 ;;
464 nds32*-*-elf*)
465 extra_options="${extra_options} nds32/nds32-elf.opt"
466 ;;
467 *)
468 ;;
469 esac
b99353a2 470 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"
9304f876 471 ;;
e430824f
CLT
472nios2-*-*)
473 cpu_type=nios2
474 extra_options="${extra_options} g.opt"
00020dda 475 ;;
738f2522
BS
476nvptx-*-*)
477 cpu_type=nvptx
3c496e92
RS
478 c_target_objs="nvptx-c.o"
479 cxx_target_objs="nvptx-c.o"
738f2522 480 ;;
3965b35f
SH
481or1k*-*-*)
482 cpu_type=or1k
483 ;;
61ed06c3
HPN
484powerpc*-*-*)
485 cpu_type=rs6000
b8d85f56
AS
486 extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
487 extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o"
34ad1981 488 extra_objs="${extra_objs} rs6000-builtins.o"
b76f1550 489 extra_headers="ppc-asm.h altivec.h htmintrin.h htmxlintrin.h"
a85492f3 490 extra_headers="${extra_headers} bmi2intrin.h bmiintrin.h"
09359ea3 491 extra_headers="${extra_headers} xmmintrin.h mm_malloc.h emmintrin.h"
a85492f3 492 extra_headers="${extra_headers} mmintrin.h x86intrin.h"
98e07d5c 493 extra_headers="${extra_headers} pmmintrin.h tmmintrin.h smmintrin.h"
7d37abed 494 extra_headers="${extra_headers} nmmintrin.h immintrin.h x86gprintrin.h"
b76f1550 495 extra_headers="${extra_headers} ppu_intrinsics.h spu2vmx.h vec_types.h si2vmx.h"
a1df6521 496 extra_headers="${extra_headers} amo.h"
a8e04fe6 497 case x$with_cpu in
71237df0 498 xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[3456789]|xpower10|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|xe6500)
a8e04fe6
AM
499 cpu_is_64bit=yes
500 ;;
501 esac
f10d3ac9 502 extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
1acf0246 503 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.c \$(srcdir)/config/rs6000/rs6000-call.c"
b8d85f56 504 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-pcrel-opt.c"
596f964f 505 target_gtfiles="$target_gtfiles ./rs6000-builtins.h"
4977bab6 506 ;;
8d2af3a2
DD
507pru-*-*)
508 cpu_type=pru
509 ;;
09cae750
PD
510riscv*)
511 cpu_type=riscv
de6320a8 512 extra_objs="riscv-builtins.o riscv-c.o riscv-sr.o riscv-shorten-memrefs.o"
b4c522fa 513 d_target_objs="riscv-d.o"
09cae750 514 ;;
4977bab6 515rs6000*-*-*)
f10d3ac9 516 extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
b8d85f56
AS
517 extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
518 extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o"
1acf0246 519 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.c \$(srcdir)/config/rs6000/rs6000-call.c"
b8d85f56 520 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-pcrel-opt.c"
4977bab6 521 ;;
61ed06c3
HPN
522sparc*-*-*)
523 cpu_type=sparc
8d12174d
DM
524 c_target_objs="sparc-c.o"
525 cxx_target_objs="sparc-c.o"
b4c522fa 526 d_target_objs="sparc-d.o"
e7f799ce 527 extra_headers="visintrin.h"
61ed06c3 528 ;;
4977bab6 529s390*-*-*)
6cecb0aa 530 cpu_type=s390
b4c522fa 531 d_target_objs="s390-d.o"
d7ecb504 532 extra_options="${extra_options} fused-madd.opt"
3af82a61 533 extra_headers="s390intrin.h htmintrin.h htmxlintrin.h vecintrin.h"
4977bab6 534 ;;
b4eb03fe 535# Note the 'l'; we need to be able to match e.g. "shle" or "shl".
a1fcb9a1 536sh[123456789lbe]*-*-* | sh-*-*)
fa5322fa 537 cpu_type=sh
159b4b2f 538 extra_options="${extra_options} fused-madd.opt"
ac973375 539 extra_objs="${extra_objs} sh_treg_combine.o sh-mem.o sh_optimize_sett_clrt.o"
fa5322fa 540 ;;
fd4df33d
NC
541v850*-*-*)
542 cpu_type=v850
543 ;;
bcead286
BS
544tic6x-*-*)
545 cpu_type=c6x
546 extra_headers="c6x_intrinsics.h"
547 extra_options="${extra_options} c6x/c6x-tables.opt"
548 ;;
47c21725
RH
549xtensa*-*-*)
550 extra_options="${extra_options} fused-madd.opt"
551 ;;
dd552284
WL
552tilegx*-*-*)
553 cpu_type=tilegx
dd552284 554 ;;
341c653c 555tilepro*-*-*)
dd552284 556 cpu_type=tilepro
dd552284 557 ;;
61ed06c3
HPN
558esac
559
560tm_file=${cpu_type}/${cpu_type}.h
b4c522fa 561tm_d_file=${cpu_type}/${cpu_type}.h
b6d7afec 562if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-protos.h
61ed06c3 563then
b6d7afec 564 tm_p_file=${cpu_type}/${cpu_type}-protos.h
b4c522fa 565 tm_d_file="${tm_d_file} ${cpu_type}/${cpu_type}-protos.h"
b6d7afec 566fi
b4c522fa 567
1c0ca89d
ZW
568extra_modes=
569if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-modes.def
570then
571 extra_modes=${cpu_type}/${cpu_type}-modes.def
572fi
75685792
RS
573if test -f ${srcdir}/config/${cpu_type}/${cpu_type}.opt
574then
575 extra_options="${extra_options} ${cpu_type}/${cpu_type}.opt"
576fi
e564e618 577
b01bc573 578case ${target} in
17a819cb 579aarch64*-*-*)
c451f4d6 580 tm_p_file="${tm_p_file} arm/aarch-common-protos.h"
17a819cb
YZ
581 case ${with_abi} in
582 "")
583 if test "x$with_multilib_list" = xilp32; then
584 tm_file="aarch64/biarchilp32.h ${tm_file}"
585 else
586 tm_file="aarch64/biarchlp64.h ${tm_file}"
587 fi
588 ;;
589 ilp32)
590 tm_file="aarch64/biarchilp32.h ${tm_file}"
591 ;;
592 lp64)
593 tm_file="aarch64/biarchlp64.h ${tm_file}"
594 ;;
595 *)
596 echo "Unknown ABI used in --with-abi=$with_abi"
597 exit 1
598 esac
599 ;;
922e3e33 600i[34567]86-*-*)
0465e49e
L
601 if test "x$with_abi" != x; then
602 echo "This target does not support --with-abi."
603 exit 1
604 fi
922e3e33 605 ;;
d07092a6
IS
606x86_64-*-darwin*)
607 ;;
e564e618 608x86_64-*-*)
0465e49e
L
609 case ${with_abi} in
610 "")
611 if test "x$with_multilib_list" = xmx32; then
612 tm_file="i386/biarchx32.h ${tm_file}"
613 else
614 tm_file="i386/biarch64.h ${tm_file}"
615 fi
616 ;;
617 64 | m64)
618 tm_file="i386/biarch64.h ${tm_file}"
619 ;;
620 x32 | mx32)
621 tm_file="i386/biarchx32.h ${tm_file}"
622 ;;
623 *)
624 echo "Unknown ABI used in --with-abi=$with_abi"
625 exit 1
626 esac
e564e618 627 ;;
c3f35647 628arm*-*-*)
bdb0828f 629 tm_p_file="arm/arm-flags.h ${tm_p_file} arm/aarch-common-protos.h"
1bfa5973 630 ;;
e564e618
DB
631esac
632
61ed06c3 633# On a.out targets, we need to use collect2.
b01bc573 634case ${target} in
61ed06c3
HPN
635*-*-*aout*)
636 use_collect2=yes
637 ;;
0e5a4ad8 638esac
61ed06c3 639
2c8f43e6 640# Common C libraries.
755658a5 641tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
2c8f43e6 642
646bdeab
L
643# 32-bit x86 processors supported by --with-arch=. Each processor
644# MUST be separated by exactly one space.
645x86_archs="athlon athlon-4 athlon-fx athlon-mp athlon-tbird \
646athlon-xp k6 k6-2 k6-3 geode c3 c3-2 winchip-c6 winchip2 i386 i486 \
647i586 i686 pentium pentium-m pentium-mmx pentium2 pentium3 pentium3m \
552ed3ea
JJ
648pentium4 pentium4m pentiumpro prescott lakemont samuel-2 nehemiah \
649c7 esther"
646bdeab
L
650
651# 64-bit x86 processors supported by --with-arch=. Each processor
652# MUST be separated by exactly one space.
653x86_64_archs="amdfam10 athlon64 athlon64-sse3 barcelona bdver1 bdver2 \
3e2ae3ee 654bdver3 bdver4 znver1 znver2 znver3 btver1 btver2 k8 k8-sse3 opteron \
2901f42f
VK
655opteron-sse3 nocona core2 corei7 corei7-avx core-avx-i core-avx2 atom \
656slm nehalem westmere sandybridge ivybridge haswell broadwell bonnell \
657silvermont knl knm skylake-avx512 cannonlake icelake-client icelake-server \
ba9c87d3 658skylake goldmont goldmont-plus tremont cascadelake tigerlake cooperlake \
c02c39fa 659sapphirerapids alderlake rocketlake eden-x2 nano nano-1000 nano-2000 nano-3000 \
552ed3ea 660nano-x2 eden-x4 nano-x4 x86-64 x86-64-v2 x86-64-v3 x86-64-v4 native"
646bdeab
L
661
662# Additional x86 processors supported by --with-cpu=. Each processor
663# MUST be separated by exactly one space.
664x86_cpus="generic intel"
665
4977bab6 666# Common parts for widely ported systems.
b01bc573 667case ${target} in
4d6d5bb2 668*-*-darwin*)
c2ff7104 669 tmake_file="t-darwin "
80c85ca2 670 tm_file="${tm_file} darwin.h"
a01704fc 671 tm_d_file="${tm_d_file} tm-dwarf2.h"
4a04f09d
IS
672 darwin_os=`echo ${target} | sed 's/.*darwin\([0-9.]*\).*$/\1/'`
673 darwin_maj=`expr "$darwin_os" : '\([0-9]*\).*'`
674 macos_min=`expr "$darwin_os" : '[0-9]*\.\([0-9]*\).*'`
675 macos_maj=10
676 if test x"${macos_min}" = x; then
677 macos_min=0
678 fi
679 def_ld64=85.2
19bf83a9
IS
680 # Tools hosted on earlier versions of Darwin constrained all object
681 # alignment to be 2^15 or smaller. From Darwin11 (macOS 10.7) the
682 # alignment of non-common is allowed to be up to 2^28. Note that the
683 # larger alignment is permitted when targeting 10.6 from 10.7 so that
684 # the constraint only need be applied per host (and only if the host
685 # is Darwin).
686 case ${host} in
687 *-*-darwin[4-9]* | *-*-darwin10*)
688 tm_defines="$tm_defines L2_MAX_OFILE_ALIGNMENT=15U"
689 ;;
690 *)
691 tm_defines="$tm_defines L2_MAX_OFILE_ALIGNMENT=28U"
692 ;;
693 esac
80c85ca2 694 case ${target} in
4a04f09d
IS
695 # Darwin 4 to 19 correspond to macOS 10.0 to 10.15
696 *-*-darwin[4-9]* | *-*-darwin1[0-9]*)
697 macos_min=`expr $darwin_maj - 4`
698 ;;
11b96757
SJ
699 *-*-darwin2*)
700 # Darwin 20 corresponds to macOS 11, Darwin 21 to macOS 12.
701 macos_maj=`expr $darwin_maj - 9`
4a04f09d
IS
702 def_ld64=609.0
703 ;;
704 *-*-darwin)
705 case ${cpu_type} in
706 aarch64) macos_maj=11 ;;
707 x86_64) macos_min=6 ;;
708 *) macos_min=5 ;;
709 esac
710 case ${host} in
711 *-*-darwin*) tm_defines="$tm_defines DARWIN_USE_KERNEL_VERS" ;;
712 *)
713 # If configuring a cross-compiler then we will have set some
714 # default above, but it is probably not what was intended.
715 echo "Warning: Using ${target} is only suitable for Darwin hosts" 1>&2
716 echo "configure with an explicit target version" 1>&2
717 ;;
718 esac
719 ;;
720 *)
721 echo "Error: configuring for an unreleased macOS version ${target}" 1>&2
722 exit 1
723 ;;
80c85ca2 724 esac
4a04f09d
IS
725 tm_defines="$tm_defines DEF_MIN_OSX_VERSION=\\\"${macos_maj}.${macos_min}\\\""
726 tm_defines="$tm_defines DEF_LD64=\\\"${def_ld64}\\\""
80c85ca2 727 tm_file="${tm_file} ${cpu_type}/darwin.h"
4d6d5bb2 728 tm_p_file="${tm_p_file} darwin-protos.h"
7c0b7150 729 target_gtfiles="$target_gtfiles \$(srcdir)/config/darwin.c"
15bdae01 730 extra_options="${extra_options} rpath.opt darwin.opt"
ab442df7
MM
731 c_target_objs="${c_target_objs} darwin-c.o"
732 cxx_target_objs="${cxx_target_objs} darwin-c.o"
4dce3b05 733 d_target_objs="${d_target_objs} darwin-d.o"
c776a6d0 734 fortran_target_objs="darwin-f.o"
acce4e77 735 target_has_targetcm=yes
4dce3b05 736 target_has_targetdm=yes
c73200ca 737 extra_objs="${extra_objs} darwin.o"
e46b55d0 738 extra_gcc_objs="darwin-driver.o"
747b9f55 739 default_use_cxa_atexit=yes
428ddbf0 740 use_gcc_stdint=wrap
4d6d5bb2
NN
741 case ${enable_threads} in
742 "" | yes | posix) thread_file='posix' ;;
743 esac
744 ;;
dbed5a9b
JM
745*-*-dragonfly*)
746 gas=yes
747 gnu_ld=yes
748 tmake_file="t-slibgcc"
749 case ${enable_threads} in
750 "" | yes | posix)
751 thread_file='posix'
752 ;;
753 no | single)
754 # Let these non-posix thread selections fall through if requested
755 ;;
756 *)
757 echo 'Unknown thread configuration for DragonFly BSD'
758 exit 1
759 ;;
760 esac
761 extra_options="$extra_options rpath.opt dragonfly.opt"
762 default_use_cxa_atexit=yes
763 use_gcc_stdint=wrap
fa9091ad
IB
764 d_target_objs="${d_target_objs} dragonfly-d.o"
765 tmake_file="${tmake_file} t-dragonfly"
766 target_has_targetdm=yes
dbed5a9b 767 ;;
4d6d5bb2
NN
768*-*-freebsd*)
769 # This is the generic ELF configuration of FreeBSD. Later
770 # machine-specific sections may refine and add to this
771 # configuration.
772 #
773 # Due to tm_file entry ordering issues that vary between cpu
774 # architectures, we only define fbsd_tm_file to allow the
775 # machine-specific section to dictate the final order of all
776 # entries of tm_file with the minor exception that components
777 # of the tm_file set here will always be of the form:
778 #
779 # freebsd<version_number>.h [freebsd-<conf_option>.h ...] freebsd-spec.h freebsd.h
780 #
781 # The machine-specific section should not tamper with this
782 # ordering but may order all other entries of tm_file as it
783 # pleases around the provided core setting.
784 gas=yes
785 gnu_ld=yes
b2449d40 786 fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
faabf788
AT
787 if test "$fbsd_major" = ""; then
788 echo "Specify the major version number of the targeted FreeBSD release"
789 echo "like this: --target=amd64-unknown-freebsd10.1"
790 exit 1
791 fi
b2449d40 792 tm_defines="${tm_defines} FBSD_MAJOR=${fbsd_major}"
f9989b51 793 tmake_file="t-slibgcc"
4d6d5bb2
NN
794 case ${enable_threads} in
795 no)
796 fbsd_tm_file="${fbsd_tm_file} freebsd-nthr.h"
797 ;;
769e49eb 798 "" | yes | posix)
4d6d5bb2 799 thread_file='posix'
4d6d5bb2 800 ;;
f7288899 801 *)
4d6d5bb2
NN
802 echo 'Unknown thread configuration for FreeBSD'
803 exit 1
804 ;;
805 esac
5ac69a80 806 fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h freebsd-stdint.h"
baf3ead6 807 extra_options="$extra_options rpath.opt freebsd.opt"
8a47c6c4
LR
808 case ${target} in
809 *-*-freebsd[345].*)
810 :;;
811 *)
812 default_use_cxa_atexit=yes;;
813 esac
5ac69a80 814 use_gcc_stdint=wrap
e855b30c
IB
815 d_target_objs="${d_target_objs} freebsd-d.o"
816 tmake_file="${tmake_file} t-freebsd"
817 target_has_targetdm=yes
4d6d5bb2 818 ;;
491b3c5f
JC
819*-*-fuchsia*)
820 native_system_header_dir=/include
821 ;;
b1e21e5a 822*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi)
b8e7038e 823 extra_options="$extra_options gnu-user.opt"
e3029773
NN
824 gas=yes
825 gnu_ld=yes
826 case ${enable_threads} in
827 "" | yes | posix) thread_file='posix' ;;
828 esac
f9989b51 829 tmake_file="t-slibgcc"
3328a3b7 830 case $target in
8466af06 831 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
3328a3b7
TS
832 :;;
833 *-*-gnu*)
08b2bad2
SB
834 native_system_header_dir=/include
835 ;;
3328a3b7 836 esac
5fa747a7 837 # Linux C libraries selection switch: glibc / uclibc / bionic.
74c70253 838 # uclibc and bionic aren't usable for GNU/Hurd and neither for GNU/k*BSD.
3328a3b7
TS
839 case $target in
840 *linux*)
5fa747a7
MK
841 tm_p_file="${tm_p_file} linux-protos.h"
842 tmake_file="${tmake_file} t-linux"
843 extra_objs="${extra_objs} linux.o"
844 extra_options="${extra_options} linux.opt"
845 ;;
3328a3b7 846 esac
74c70253
MK
847 case $target in
848 *-*-*android*)
849 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC"
850 ;;
b1e21e5a 851 *-*-*uclibc* | *-*-uclinuxfdpiceabi)
74c70253 852 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
7bd85ce0 853 ;;
755658a5
GR
854 *-*-*musl*)
855 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
856 ;;
7bd85ce0 857 *)
74c70253 858 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
464aea98
JM
859 ;;
860 esac
74c70253
MK
861 # Assume that glibc or uClibc or Bionic are being used and so __cxa_atexit
862 # is provided.
c5dde55b 863 default_use_cxa_atexit=yes
1617e5ee 864 use_gcc_tgmath=no
207bf79d 865 use_gcc_stdint=wrap
51b9db92
MK
866 # Enable compilation for Android by default for *android* targets.
867 case $target in
868 *-*-*android*)
869 tm_defines="$tm_defines ANDROID_DEFAULT=1"
870 ;;
871 *)
872 tm_defines="$tm_defines ANDROID_DEFAULT=0"
873 ;;
874 esac
1efcb8c6
JM
875 c_target_objs="${c_target_objs} glibc-c.o"
876 cxx_target_objs="${cxx_target_objs} glibc-c.o"
b4c522fa 877 d_target_objs="${d_target_objs} glibc-d.o"
1efcb8c6
JM
878 tmake_file="${tmake_file} t-glibc"
879 target_has_targetcm=yes
b4c522fa 880 target_has_targetdm=yes
9c560cf2
CL
881 case $target in
882 *-*-*uclibc* | *-*-uclinuxfdpiceabi)
883 ;;
884 *)
885 # Linux targets always support .init_array.
886 gcc_cv_initfini_array=yes
887 ;;
888 esac
e3029773 889 ;;
f982f805 890*-*-netbsd*)
b460e64d
KW
891 tm_p_file="${tm_p_file} netbsd-protos.h"
892 tmake_file="t-netbsd t-slibgcc"
893 extra_objs="${extra_objs} netbsd.o"
2f2b8e40 894 d_target_objs="${d_target_objs} netbsd-d.o"
e3029773
NN
895 gas=yes
896 gnu_ld=yes
0333b8d0 897 use_gcc_stdint=wrap
e3029773 898 case ${enable_threads} in
b48cd47e 899 "" | yes | posix) thread_file='posix' ;;
e3029773 900 esac
dfe2677b 901 nbsd_tm_file="netbsd.h netbsd-stdint.h netbsd-elf.h"
b74103ef 902 default_use_cxa_atexit=yes
2f2b8e40 903 target_has_targetdm=yes
856f73d1
MR
904 case ${target} in
905 arm*-* | i[34567]86-* | powerpc*-* | sparc*-* | x86_64-*)
906 default_gnu_indirect_function=yes
907 ;;
908 esac
e3029773 909 ;;
4d6d5bb2 910*-*-openbsd*)
f9989b51 911 tmake_file="t-openbsd"
e3029773 912 case ${enable_threads} in
4d6d5bb2 913 yes)
e3029773 914 thread_file='posix'
e3029773
NN
915 ;;
916 esac
af9e6b74
MK
917 case ${target} in
918 *-*-openbsd4.[3-9]|*-*-openbsd[5-9]*)
919 default_use_cxa_atexit=yes
920 ;;
921 esac
8ab1d637
IB
922 d_target_objs="${d_target_objs} openbsd-d.o"
923 target_has_targetdm=yes
e3029773 924 ;;
bfdd80d4
JS
925*-*-phoenix*)
926 gas=yes
927 gnu_ld=yes
928 default_use_cxa_atexit=yes
929 ;;
8179b3c8
NN
930*-*-rtems*)
931 case ${enable_threads} in
776c9a0d
SH
932 "" | yes | rtems) thread_file='rtems' ;;
933 posix) thread_file='posix' ;;
934 no) ;;
935 *)
936 echo 'Unknown thread configuration for RTEMS'
937 exit 1
938 ;;
8179b3c8 939 esac
aefe4056 940 tmake_file="${tmake_file} t-rtems"
cd33a412 941 extra_options="${extra_options} rtems.opt"
228c1313 942 default_use_cxa_atexit=yes
207bf79d
JM
943 use_gcc_stdint=wrap
944 ;;
945*-*-uclinux*)
b8e7038e 946 extra_options="$extra_options gnu-user.opt"
207bf79d 947 use_gcc_stdint=wrap
09955a32
WB
948 case ${enable_threads} in
949 "" | yes | posix) thread_file='posix' ;;
950 esac
b5a54c03 951 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC SINGLE_LIBC"
8179b3c8 952 ;;
5a579c3b
LE
953*-*-rdos*)
954 use_gcc_stdint=wrap
955 ;;
c28aa982 956*-*-solaris2*)
7ecfa34f
RO
957 # i?86-*-solaris2* needs to insert headers between cpu default and
958 # Solaris 2 specific ones.
2cf03b11
RO
959 sol2_tm_file_head="dbxelf.h elfos.h ${cpu_type}/sysv4.h"
960 sol2_tm_file_tail="${cpu_type}/sol2.h sol2.h"
961 sol2_tm_file="${sol2_tm_file_head} ${sol2_tm_file_tail}"
29424c7b 962 case ${target} in
f021f1d3
RO
963 *-*-solaris2.1[1-9]*)
964 # __cxa_atexit was introduced in Solaris 11.4.
29424c7b
RO
965 default_use_cxa_atexit=yes
966 ;;
967 esac
d9f069ab 968 use_gcc_stdint=wrap
7ecfa34f
RO
969 if test x$gnu_ld = xyes; then
970 tm_file="usegld.h ${tm_file}"
971 fi
972 if test x$gas = xyes; then
973 tm_file="usegas.h ${tm_file}"
974 fi
975 tm_p_file="${tm_p_file} sol2-protos.h"
b040f2be 976 tmake_file="${tmake_file} t-sol2 t-slibgcc"
7ecfa34f 977 c_target_objs="${c_target_objs} sol2-c.o"
5b880ea6 978 cxx_target_objs="${cxx_target_objs} sol2-c.o sol2-cxx.o"
cdb3f2f4 979 d_target_objs="${d_target_objs} sol2-d.o"
41f59cda 980 extra_objs="${extra_objs} sol2.o sol2-stubs.o"
c28aa982 981 extra_options="${extra_options} sol2.opt"
7ecfa34f
RO
982 case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
983 "":yes:* | yes:yes:* )
984 thread_file=posix
985 ;;
986 esac
cdb3f2f4 987 target_has_targetdm=yes
c28aa982 988 ;;
18a24fed
TG
989*-*-*vms*)
990 extra_options="${extra_options} vms/vms.opt"
991 xmake_file=vms/x-vms
b040f2be 992 tmake_file="vms/t-vms t-slibgcc"
db8b22ef
TG
993 extra_objs="vms.o"
994 target_gtfiles="$target_gtfiles \$(srcdir)/config/vms/vms.c"
995 tm_p_file="${tm_p_file} vms/vms-protos.h"
d8aba32a 996 xm_file="vms/xm-vms.h"
c750e768
TG
997 c_target_objs="vms-c.o"
998 cxx_target_objs="vms-c.o"
c531f06a 999 fortran_target_objs="vms-f.o"
20bfad56
TG
1000 use_gcc_stdint=provide
1001 tm_file="${tm_file} vms/vms-stdint.h"
18a24fed
TG
1002 if test x$gnu_ld != xyes; then
1003 # Build wrappers for native case.
1004 extra_programs="ld\$(exeext) ar\$(exeext)"
1005 tmake_file="$tmake_file vms/t-vmsnative"
1006 fi
1007 ;;
4977bab6 1008*-*-vxworks*)
e3029773 1009 tmake_file=t-vxworks
2eab15c9 1010 xm_defines=POSIX
41c1b913 1011
2eab15c9 1012 extra_options="${extra_options} vxworks.opt"
6994430a 1013 extra_objs="$extra_objs vxworks.o"
41c1b913 1014
b3405ddc
JB
1015 c_target_objs="${c_target_objs} vxworks-c.o"
1016 cxx_target_objs="${cxx_target_objs} vxworks-c.o"
1017 extra_headers="${extra_headers} ../vxworks/vxworks-predef.h"
1018 target_has_targetcm="yes"
41c1b913 1019
abb6c3ee
OH
1020 # This private header exposes a consistent interface for checks on
1021 # the VxWorks version our runtime header files need to perform, based on
1022 # what the system headers adverstise:
1023
1024 extra_headers="${extra_headers} ../vxworks/_vxworks-versions.h"
1025
41c1b913
OH
1026 # Starting from VxWorks 7, the system comes with a Dinkumware
1027 # environment which requires the inclusion of "yvals.h" before other
1028 # system headers. We provide wrapped versions of a few headers to
1029 # accomodate such constraints:
1030
1031 extra_headers="${extra_headers} ../vxworks/_yvals.h"
1032 extra_headers="${extra_headers} ../vxworks/_yvals-wrapper.h"
1033
1034 extra_headers="${extra_headers} ../vxworks/math.h ../vxworks/complex.h"
1035 extra_headers="${extra_headers} ../vxworks/inttypes.h ../vxworks/setjmp.h"
1036
6a0f6018 1037 # We provide (a tailored version of) stdint.h
bbbc0595 1038 tm_file="${tm_file} vxworks-stdint.h"
6a0f6018 1039 use_gcc_stdint=provide
bbbc0595 1040
55047c9d
PE
1041 case ${enable_threads} in
1042 no) ;;
1043 "" | yes | vxworks) thread_file='vxworks' ;;
1044 *) echo 'Unknown thread configuration for VxWorks'; exit 1 ;;
1045 esac
ebcdba9c
PB
1046
1047 # A few common macro definitions conveying general characteristics
1048 # of the configuration at hand. Note that by VxWorks 7, we mean the
1049 # the SR6xx major update or beyond in vendor parlance:
1050
b269e899
JL
1051 case $target in
1052 *-*-vxworks7*)
1053 tm_defines="$tm_defines TARGET_VXWORKS7=1"
1054 ;;
1055 esac
caa62834
OH
1056 case $target in
1057 *64-*-vxworks*)
1058 tm_defines="$tm_defines TARGET_VXWORKS64=1"
1059 ;;
1060 esac
ebcdba9c
PB
1061
1062 # Then a few build configuration controls for VxWorks 7, which
1063 # has specificities on top of which we aim to provide more complete
1064 # C++ support:
1065
1066 case $target in
1067 *-*-vxworks7*)
1068 # VxWorks 7 always has init/fini_array support and it is simpler to
1069 # just leverage this, sticking to what the system toolchain does:
1070 gcc_cv_initfini_array=yes
1071 ;;
1072 esac
e3029773 1073 ;;
53426f6c 1074*-*-elf|arc*-*-elf*)
c5dde55b
NC
1075 # Assume that newlib is being used and so __cxa_atexit is provided.
1076 default_use_cxa_atexit=yes
207bf79d 1077 use_gcc_stdint=wrap
c5dde55b 1078 ;;
61ed06c3
HPN
1079esac
1080
b01bc573 1081case ${target} in
491b3c5f 1082aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
24034425 1083 tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h"
91bed1a1 1084 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-elf-raw.h"
24034425 1085 tmake_file="${tmake_file} aarch64/t-aarch64"
11779999
JS
1086 case $target in
1087 aarch64-*-elf*)
1088 use_gcc_stdint=wrap
1089 ;;
491b3c5f
JC
1090 aarch64-*-fuchsia*)
1091 tm_file="${tm_file} fuchsia.h"
1092 ;;
11779999 1093 aarch64-*-rtems*)
0455cd76 1094 tm_file="${tm_file} aarch64/rtems.h rtems.h"
11779999
JS
1095 ;;
1096 esac
24034425
IB
1097 case $target in
1098 aarch64_be-*)
1099 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1100 ;;
1101 esac
17a819cb
YZ
1102 aarch64_multilibs="${with_multilib_list}"
1103 if test "$aarch64_multilibs" = "default"; then
1104 aarch64_multilibs="lp64,ilp32"
1105 fi
1106 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1107 for aarch64_multilib in ${aarch64_multilibs}; do
1108 case ${aarch64_multilib} in
1109 ilp32 | lp64 )
1110 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1111 ;;
1112 *)
1113 echo "--with-multilib-list=${aarch64_multilib} not supported."
1114 exit 1
1115 esac
1116 done
1117 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
24034425 1118 ;;
b20e7532
AT
1119aarch64*-*-freebsd*)
1120 tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file}"
91bed1a1 1121 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-freebsd.h"
b20e7532 1122 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
5b0acc31 1123 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
b20e7532 1124 ;;
f32f7585
MG
1125aarch64*-*-netbsd*)
1126 tm_file="${tm_file} dbxelf.h elfos.h ${nbsd_tm_file}"
91bed1a1 1127 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-netbsd.h"
f32f7585
MG
1128 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-netbsd"
1129 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1130 ;;
24034425
IB
1131aarch64*-*-linux*)
1132 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h"
91bed1a1 1133 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-linux.h"
24034425 1134 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-linux"
b39036d2 1135 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
24034425
IB
1136 case $target in
1137 aarch64_be-*)
1138 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1139 ;;
1140 esac
17a819cb
YZ
1141 aarch64_multilibs="${with_multilib_list}"
1142 if test "$aarch64_multilibs" = "default"; then
1143 # TODO: turn on ILP32 multilib build after its support is mature.
1144 # aarch64_multilibs="lp64,ilp32"
1145 aarch64_multilibs="lp64"
1146 fi
1147 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1148 for aarch64_multilib in ${aarch64_multilibs}; do
1149 case ${aarch64_multilib} in
1150 ilp32 | lp64 )
1151 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1152 ;;
1153 *)
1154 echo "--with-multilib-list=${aarch64_multilib} not supported."
1155 exit 1
1156 esac
1157 done
1158 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
24034425 1159 ;;
3004f893
DR
1160aarch64*-wrs-vxworks*)
1161 tm_file="${tm_file} elfos.h aarch64/aarch64-elf.h"
1162 tm_file="${tm_file} vx-common.h vxworks.h aarch64/aarch64-vxworks.h"
1163 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-vxworks"
1164 ;;
61ed06c3 1165alpha*-*-linux*)
8f27fc6b 1166 tm_file="elfos.h ${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h glibc-stdint.h"
a32fc216 1167 tmake_file="${tmake_file} alpha/t-linux alpha/t-alpha"
183c38a4 1168 extra_options="${extra_options} alpha/elf.opt"
61ed06c3 1169 ;;
61ed06c3 1170alpha*-*-netbsd*)
dfe2677b 1171 tm_file="elfos.h ${tm_file} ${nbsd_tm_file} alpha/elf.h alpha/netbsd.h"
a32fc216 1172 tmake_file="${tmake_file} alpha/t-alpha"
183c38a4
JM
1173 extra_options="${extra_options} netbsd.opt netbsd-elf.opt \
1174 alpha/elf.opt"
61ed06c3 1175 ;;
61ed06c3 1176alpha*-*-openbsd*)
aa58f943 1177 tm_defines="${tm_defines} OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_FUNCTION_SIZE OBSD_HAS_DECLARE_OBJECT"
8f27fc6b 1178 tm_file="elfos.h alpha/alpha.h alpha/elf.h openbsd.h openbsd-stdint.h alpha/openbsd.h openbsd-libpthread.h"
a32fc216 1179 tmake_file="${tmake_file} alpha/t-alpha"
183c38a4 1180 extra_options="${extra_options} openbsd.opt alpha/elf.opt"
61ed06c3 1181 # default x-alpha is only appropriate for dec-osf.
61ed06c3 1182 ;;
ef057c45 1183alpha*-dec-*vms*)
ba89fcb6 1184 tm_file="${tm_file} vms/vms.h alpha/vms.h"
a32fc216 1185 tmake_file="${tmake_file} alpha/t-vms alpha/t-alpha"
61ed06c3 1186 ;;
53426f6c 1187arc*-*-elf*)
fad92291 1188 tm_file="arc/arc-arch.h dbxelf.h elfos.h newlib-stdint.h arc/elf.h ${tm_file}"
f9ccf899
CZ
1189 tmake_file="arc/t-multilib arc/t-arc"
1190 extra_gcc_objs="driver-arc.o"
1191 if test "x$with_cpu" != x; then
1192 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1193 fi
53426f6c
JR
1194 if test x${with_endian} = x; then
1195 case ${target} in
1196 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1197 *) with_endian=little ;;
1198 esac
1199 fi
1200 case ${with_endian} in
1201 big|little) ;;
1202 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1203 esac
1204 case ${with_endian} in
fad92291 1205 big*) tm_file="arc/big.h ${tm_file}"
53426f6c
JR
1206 esac
1207 ;;
b1938888 1208arc*-*-linux*)
fad92291 1209 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}"
825f9d0b 1210 tmake_file="${tmake_file} arc/t-multilib-linux arc/t-arc"
f9ccf899
CZ
1211 extra_gcc_objs="driver-arc.o"
1212 if test "x$with_cpu" != x; then
1213 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1214 fi
53426f6c
JR
1215 if test x${with_endian} = x; then
1216 case ${target} in
1217 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1218 *) with_endian=little ;;
1219 esac
1220 fi
1221 case ${with_endian} in
1222 big|little) ;;
1223 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1224 esac
1225 case ${with_endian} in
fad92291 1226 big*) tm_file="arc/big.h ${tm_file}"
53426f6c 1227 esac
fac31afe
VG
1228 # Force .init_array support. The configure script cannot always
1229 # automatically detect that GAS supports it, yet we require it.
1230 gcc_cv_initfini_array=yes
1231 ;;
27204060
JL
1232arm-wrs-vxworks7*)
1233 # We only support VxWorks 7 now on ARM, post SR600. Pre SR600
1234 # VxWorks 7 was transitory and major versions prior to 7 were based
1235 # on long deprecated ABI, not supported at all any more regardless
1236 # of VxWorks.
59793c51 1237 extra_options="${extra_options} arm/vxworks.opt"
27204060
JL
1238 tmake_file="${tmake_file} arm/t-arm arm/t-vxworks arm/t-bpabi"
1239 tm_file="elfos.h arm/elf.h arm/bpabi.h arm/aout.h ${tm_file}"
1240 tm_file="${tm_file} vx-common.h vxworks.h arm/vxworks.h"
86b14bb1 1241 target_cpu_cname="generic-armv7-a"
27204060 1242 need_64bit_hwint=yes
55047c9d 1243 ;;
82a19768
AT
1244arm*-*-freebsd*) # ARM FreeBSD EABI
1245 tm_file="dbxelf.h elfos.h ${fbsd_tm_file} arm/elf.h"
1246 case $target in
1247 arm*b-*-freebsd*)
1248 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1249 ;;
1250 esac
1251 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi"
1252 tm_file="${tm_file} arm/bpabi.h arm/freebsd.h arm/aout.h arm/arm.h"
1253 case $target in
1254 armv6*-*-freebsd*)
b5e204dc 1255 target_cpu_cname="arm1176jzf-s"
c8743fc5
AT
1256 if test $fbsd_major -ge 11; then
1257 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1258 fi
82a19768 1259 ;;
eb484969
AT
1260 armv7*-*-freebsd*)
1261 target_cpu_cname="generic-armv7-a"
1262 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1263 ;;
d3d3f1af
RE
1264 *)
1265 target_cpu_cname="arm9"
1266 ;;
82a19768
AT
1267 esac
1268 with_tls=${with_tls:-gnu}
1269 ;;
69474c3c 1270arm*-*-netbsdelf*)
7a433140 1271 target_cpu_cname="strongarm"
b27c1082
MT
1272 tmake_file="${tmake_file} arm/t-arm"
1273 tm_file="dbxelf.h elfos.h ${nbsd_tm_file} arm/elf.h"
1274 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1275 case ${target} in
1276 arm*eb-*) tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" ;;
1277 esac
1278 case ${target} in
1279 arm*-*-netbsdelf-*eabi*)
1280 tm_file="$tm_file arm/bpabi.h arm/netbsd-elf.h arm/netbsd-eabi.h"
1281 tmake_file="$tmake_file arm/t-bpabi arm/t-netbsdeabi"
1282 ;;
1283 *)
1284 tm_file="$tm_file arm/netbsd-elf.h"
1285 tmake_file="$tmake_file arm/t-netbsd"
1286 ;;
1287 esac
1288 tm_file="${tm_file} arm/aout.h arm/arm.h"
1289 case ${target} in
1290 arm*-*-netbsdelf-*eabihf*)
1291 # Hard-float requires at least Arm v5te
1292 target_cpu_cname="arm10e"
1293 tm_defines="${tm_defines} TARGET_DEFAULT_FLOAT_ABI=ARM_FLOAT_ABI_HARD"
1294 ;;
1295 esac
1296 case ${target} in
1297 armv6*) target_cpu_cname="arm1176jzf-s";;
1298 armv7*) target_cpu_cname="generic-armv7-a";;
1299 esac
69474c3c 1300 ;;
b1e21e5a 1301arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)
8e38461c 1302 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"
5fa747a7 1303 extra_options="${extra_options} linux-android.opt"
d3a9662c 1304 case $target in
e3ed9d60 1305 arm*b-*-linux*)
c4cc7bc1
RE
1306 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1307 ;;
d3a9662c 1308 esac
f423a9e4 1309 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
52e18cdf 1310 tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h arm/aout.h arm/arm.h"
45d53c67
CL
1311 case $target in
1312 arm*-*-uclinuxfdpiceabi)
1313 tm_file="$tm_file arm/uclinuxfdpiceabi.h"
1314 ;;
1315 esac
87fd6bde
RE
1316 # Generation of floating-point instructions requires at least ARMv5te.
1317 if [ "$with_float" = "hard" -o "$with_float" = "softfp" ] ; then
1318 target_cpu_cname="arm10e"
1319 else
1320 target_cpu_cname="arm10tdmi"
1321 fi
c4cc7bc1 1322 # Define multilib configuration for arm-linux-androideabi.
077fc835 1323 case ${target} in
c4cc7bc1
RE
1324 *-androideabi)
1325 tmake_file="$tmake_file arm/t-linux-androideabi"
077fc835
KH
1326 ;;
1327 esac
c4cc7bc1
RE
1328 # The EABI requires the use of __cxa_atexit.
1329 default_use_cxa_atexit=yes
7cf13d1f 1330 with_tls=${with_tls:-gnu}
61ed06c3 1331 ;;
c4cc7bc1 1332arm*-*-uclinux*eabi*) # ARM ucLinux
207bf79d 1333 tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
aefe4056 1334 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi"
52e18cdf 1335 tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h arm/aout.h arm/arm.h"
d3d3f1af 1336 target_cpu_cname="arm7tdmi"
c4cc7bc1
RE
1337 # The EABI requires the use of __cxa_atexit.
1338 default_use_cxa_atexit=yes
0e5a4ad8 1339 ;;
bfdd80d4
JS
1340arm*-*-phoenix*)
1341 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1342 tm_file="${tm_file} newlib-stdint.h phoenix.h"
1343 tm_file="${tm_file} arm/aout.h arm/arm.h"
1344 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi arm/t-phoenix"
d3d3f1af 1345 target_cpu_cname="arm7tdmi"
bfdd80d4 1346 ;;
491b3c5f 1347arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
ac8d93a7
SL
1348 case ${target} in
1349 arm*eb-*-eabi*)
1350 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1351 esac
e6fc6c9b 1352 default_use_cxa_atexit=yes
b3f8d95d 1353 tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
aefe4056 1354 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf"
d3d3f1af 1355 target_cpu_cname="arm7tdmi"
b3f8d95d 1356 case ${target} in
f9a02408 1357 arm*-*-eabi*)
51b9db92 1358 tm_file="$tm_file newlib-stdint.h"
e04d8a63 1359 tmake_file="${tmake_file} arm/t-bpabi"
207bf79d 1360 use_gcc_stdint=wrap
f9a02408 1361 ;;
491b3c5f
JC
1362 arm*-*-fuchsia*)
1363 tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h"
be5c4e06 1364 tmake_file="${tmake_file} arm/t-bpabi arm/t-fuchsia"
bf35d17a 1365 target_cpu_cname="generic-armv7-a"
491b3c5f 1366 ;;
05242957 1367 arm*-*-rtems*)
0455cd76 1368 tm_file="${tm_file} arm/rtems.h rtems.h newlib-stdint.h"
5be0a29b 1369 tmake_file="${tmake_file} arm/t-bpabi arm/t-rtems"
e36c5271 1370 ;;
b3f8d95d
MM
1371 arm*-*-symbianelf*)
1372 tm_file="${tm_file} arm/symbian.h"
f9a02408
MM
1373 # We do not include t-bpabi for Symbian OS because the system
1374 # provides its own implementation of the BPABI functions.
c0354bf4 1375 tmake_file="${tmake_file} arm/t-symbian"
d3d3f1af 1376 target_cpu_cname="arm10tdmi"
b3f8d95d
MM
1377 ;;
1378 esac
52e18cdf 1379 tm_file="${tm_file} arm/aout.h arm/arm.h"
336bd6ac 1380 ;;
61ed06c3 1381avr-*-*)
4a2caf6c 1382 tm_file="elfos.h avr/elf.h avr/avr-arch.h avr/avr.h avr/specs.h dbxelf.h avr/avr-stdint.h"
b588ae30
GJL
1383 if test x${with_avrlibc} != xno; then
1384 tm_file="${tm_file} ${cpu_type}/avrlibc.h"
1385 tm_defines="${tm_defines} WITH_AVRLIBC"
1386 fi
f30dd607
GJL
1387 # Work out avr_double_comparison which is 2 or 3 and is used in
1388 # target hook FLOAT_LIB_COMPARE_RETURNS_BOOL to determine whether
1389 # DFmode comparisons return 3-state or 2-state results.
1390 case y${with_double_comparison} in
1391 y | ytristate)
1392 avr_double_comparison=3
1393 ;;
1394 ybool | ylibf7)
1395 avr_double_comparison=2
1396 ;;
1397 *)
1398 echo "Error: --with-double-comparison= can only be used with: 'tristate', 'bool', 'libf7'" 1>&2
1399 exit 1
1400 ;;
1401 esac
1402 case "y${with_libf7}" in
1403 yno)
1404 # avr_double_comparison as set above.
1405 ;;
1406 ylibgcc)
1407 avr_double_comparison=2
1408 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1409 ;;
1410 y | yyes | ymath-symbols)
1411 avr_double_comparison=2
1412 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1413 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1414 tm_defines="${tm_defines} WITH_LIBF7_MATH_SYMBOLS"
1415 ;;
1416 ymath)
1417 avr_double_comparison=2
1418 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1419 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1420 ;;
1421 *)
1422 echo "Error: --with-libf7=${with_libf7} but can only be used with: 'libgcc', 'math', 'math-symbols', 'yes', 'no'" 1>&2
1423 exit 1
1424 ;;
1425 esac
1426 tm_defines="${tm_defines} WITH_DOUBLE_COMPARISON=${avr_double_comparison}"
29f3def3 1427 case y${with_double} in
f30dd607 1428 y32)
29f3def3
GJL
1429 avr_double=32
1430 tm_defines="${tm_defines} HAVE_DOUBLE32"
1431 ;;
1432 y64)
1433 avr_double=64
1434 tm_defines="${tm_defines} HAVE_DOUBLE64"
1435 ;;
1436 y64,32)
1437 avr_double=64
1438 avr_double_multilib=1
1439 tm_defines="${tm_defines} HAVE_DOUBLE32"
1440 tm_defines="${tm_defines} HAVE_DOUBLE64"
1441 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1442 ;;
f30dd607 1443 y | y32,64)
29f3def3
GJL
1444 avr_double=32
1445 avr_double_multilib=1
1446 tm_defines="${tm_defines} HAVE_DOUBLE32"
1447 tm_defines="${tm_defines} HAVE_DOUBLE64"
1448 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1449 ;;
1450 *)
1451 echo "Error: --with-double= can only be used with: '32', '32,64', '64,32', '64'" 1>&2
1452 exit 1
1453 ;;
1454 esac
1455 case y${with_long_double} in
f30dd607 1456 y32)
29f3def3
GJL
1457 avr_long_double=32
1458 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1459 ;;
1460 y64)
1461 avr_long_double=64
1462 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1463 ;;
f30dd607 1464 y | y64,32)
29f3def3
GJL
1465 avr_long_double=64
1466 avr_long_double_multilib=1
1467 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1468 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1469 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1470 ;;
1471 y32,64)
1472 avr_long_double=32
1473 avr_long_double_multilib=1
1474 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1475 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1476 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1477 ;;
1478 ydouble)
1479 avr_long_double=${avr_double}
1480 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_IS_DOUBLE"
1481 if test y${avr_double_multilib} = y1; then
1482 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1483 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1484 else
1485 tm_defines="${tm_defines} HAVE_LONG_DOUBLE${avr_long_double}"
1486 fi
1487 ;;
1488 *)
1489 echo "Error: --with-long_double= can only be used with: '32', '32,64', '64,32', '64', 'double'" 1>&2
1490 exit 1
1491 ;;
1492 esac
1493 if test ${avr_long_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 32xy1z; then
1494 if test y${with_long_double} != ydouble; then
1495 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
1496 exit 1
1497 fi
1498 fi
1499 if test ${avr_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 64x1yz; then
1500 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
1501 exit 1
1502 fi
1503 if test y${avr_double}${avr_long_double} = y6432; then
1504 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
1505 exit 1
1506 fi
1507 tm_defines="${tm_defines} WITH_DOUBLE${avr_double}"
1508 tm_defines="${tm_defines} WITH_LONG_DOUBLE${avr_long_double}"
4de80584 1509 tmake_file="${tmake_file} avr/t-avr avr/t-multilib"
207bf79d 1510 use_gcc_stdint=wrap
4a2caf6c 1511 extra_gcc_objs="driver-avr.o avr-devices.o"
6c7dfafe 1512 extra_objs="avr-devices.o avr-log.o"
61ed06c3 1513 ;;
0d4a78eb 1514bfin*-elf*)
207bf79d 1515 tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h bfin/elf.h"
6bad46f7
JZ
1516 tmake_file=bfin/t-bfin-elf
1517 use_collect2=no
1518 ;;
1f4174d4 1519bfin*-uclinux*)
8e38461c 1520 tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/uclinux.h"
6bad46f7 1521 tmake_file=bfin/t-bfin-uclinux
6bad46f7
JZ
1522 use_collect2=no
1523 ;;
344189f9 1524bfin*-linux-uclibc*)
8e38461c 1525 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"
e08cf345 1526 tmake_file="${tmake_file} bfin/t-bfin-linux"
6bad46f7
JZ
1527 use_collect2=no
1528 ;;
152167d5 1529bfin*-rtems*)
1ddc8057 1530 tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h bfin/rtems.h rtems.h newlib-stdint.h"
aefe4056 1531 tmake_file="${tmake_file} bfin/t-rtems"
6bad46f7 1532 ;;
0d4a78eb 1533bfin*-*)
207bf79d 1534 tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h bfin/elf.h"
6bad46f7 1535 use_collect2=no
207bf79d 1536 use_gcc_stdint=wrap
6bad46f7 1537 ;;
91dfef96 1538bpf-*-*)
c9d44022 1539 tm_file="elfos.h ${tm_file}"
91dfef96
JM
1540 tmake_file="${tmake_file} bpf/t-bpf"
1541 use_collect2=no
1542 extra_headers="bpf-helpers.h"
1543 use_gcc_stdint=provide
8bdabb37
DF
1544 extra_objs="coreout.o"
1545 target_gtfiles="$target_gtfiles \$(srcdir)/config/bpf/coreout.c"
91dfef96 1546 ;;
b25364a0 1547cr16-*-elf)
db48a9e3 1548 tm_file="elfos.h ${tm_file} newlib-stdint.h"
b25364a0
S
1549 tmake_file="${tmake_file} cr16/t-cr16 "
1550 use_collect2=no
1551 ;;
0b85d816 1552cris-*-elf | cris-*-none)
d158c3f7 1553 tm_file="elfos.h newlib-stdint.h ${tm_file}"
0b85d816
HPN
1554 tmake_file="cris/t-cris cris/t-elfmulti"
1555 gas=yes
2a186d97 1556 extra_options="${extra_options} cris/elf.opt"
207bf79d 1557 use_gcc_stdint=wrap
0b85d816 1558 ;;
56856b58
J
1559csky-*-*)
1560 if test x${with_endian} != x; then
1561 case ${with_endian} in
1562 big|little) ;;
1563 *)
1564 echo "with_endian=${with_endian} not supported."
1565 exit 1
1566 ;;
1567 esac
1568 fi
1569 if test x${with_float} != x; then
1570 case ${with_float} in
1571 soft | hard) ;;
1572 *) echo
1573 "Unknown floating point type used in --with-float=$with_float"
1574 exit 1
1575 ;;
1576 esac
1577 fi
1578 tm_file="csky/csky.h"
1579 md_file="csky/csky.md"
1580 out_file="csky/csky.c"
1581 tm_p_file="${tm_p_file} csky/csky-protos.h"
1582 extra_options="${extra_options} csky/csky_tables.opt"
1583
1584 if test x${enable_tpf_debug} = xyes; then
1585 tm_defines="${tm_defines} ENABLE_TPF_DEBUG"
1586 fi
1587
1588 case ${target} in
1589 csky-*-elf*)
1590 tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file} csky/csky-elf.h"
1591 tmake_file="csky/t-csky csky/t-csky-elf"
1592 default_use_cxa_atexit=no
f8ede887 1593 use_gcc_stdint=wrap
56856b58
J
1594 ;;
1595 csky-*-linux*)
1596 tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} csky/csky-linux-elf.h"
1597 tmake_file="${tmake_file} csky/t-csky csky/t-csky-linux"
1598
56856b58
J
1599 case ${target} in
1600 csky-*-linux-gnu*)
1601 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
be3399c5
XQ
1602 # Force .init_array support. The configure script cannot always
1603 # automatically detect that GAS supports it, yet we require it.
1604 gcc_cv_initfini_array=yes
56856b58
J
1605 ;;
1606 csky-*-linux-uclibc*)
1607 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
1608 default_use_cxa_atexit=no
1609 ;;
1610 *)
1611 echo "Unknown target $target"
1612 exit 1
1613 ;;
1614 esac
1615 ;;
1616 *)
1617 echo "Unknown target $target"
1618 exit 1
1619 ;;
1620 esac
1621 ;;
64b371b1
SH
1622epiphany-*-elf | epiphany-*-rtems*)
1623 tm_file="${tm_file} dbxelf.h elfos.h"
1624 tmake_file="${tmake_file} epiphany/t-epiphany"
1625 case ${target} in
1626 epiphany-*-rtems*)
0455cd76 1627 tm_file="${tm_file} epiphany/rtems.h rtems.h newlib-stdint.h"
64b371b1
SH
1628 ;;
1629 *)
1630 tm_file="${tm_file} newlib-stdint.h"
1631 ;;
1632 esac
feeeff5c 1633 extra_options="${extra_options} fused-madd.opt"
64b371b1 1634 extra_objs="${extra_objs} mode-switch-use.o resolve-sw-modes.o"
feeeff5c
JR
1635 tm_defines="${tm_defines} EPIPHANY_STACK_OFFSET=${with_stack_offset:-8}"
1636 extra_headers="epiphany_intrinsics.h"
1637 ;;
61ed06c3 1638fr30-*-elf)
35766c1d 1639 tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
61ed06c3 1640 ;;
36a05131 1641frv-*-elf)
a3724010 1642 tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
36a05131
BS
1643 tmake_file=frv/t-frv
1644 ;;
34208acf 1645frv-*-*linux*)
a3724010 1646 tm_file="dbxelf.h elfos.h ${tm_file} \
8e38461c 1647 gnu-user.h linux.h glibc-stdint.h frv/linux.h"
65d151a7 1648 tmake_file="${tmake_file} frv/t-frv frv/t-linux"
34208acf 1649 ;;
fef939d6
JB
1650ft32-*-elf)
1651 gas=yes
1652 gnu_ld=yes
1653 tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
1654 tmake_file="${tmake_file} ft32/t-ft32"
1655 ;;
7431c1a1
AS
1656amdgcn-*-amdhsa)
1657 tm_file="elfos.h gcn/gcn-hsa.h gcn/gcn.h newlib-stdint.h"
1658 tmake_file="gcn/t-gcn-hsa"
1659 native_system_header_dir=/include
1660 extra_modes=gcn/gcn-modes.def
1661 extra_objs="${extra_objs} gcn-tree.o"
1662 extra_gcc_objs="driver-gcn.o"
1663 case "$host" in
1664 x86_64*-*-linux-gnu )
1665 if test "$ac_cv_search_dlopen" != no; then
1666 extra_programs="${extra_programs} gcn-run\$(exeext)"
1667 fi
1668 ;;
1669 esac
1670 if test x$enable_as_accelerator = xyes; then
1671 extra_programs="${extra_programs} mkoffload\$(exeext)"
1672 tm_file="${tm_file} gcn/offload.h"
1673 fi
7039cebf
KCY
1674 # Force .init_array support.
1675 gcc_cv_initfini_array=yes
76d46331 1676 thread_file=gcn
7431c1a1 1677 ;;
cceb575c
AG
1678moxie-*-elf)
1679 gas=yes
1680 gnu_ld=yes
804a304d 1681 tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
aca0b0b3 1682 tmake_file="${tmake_file} moxie/t-moxie"
cceb575c 1683 ;;
23865616
AG
1684moxie-*-uclinux*)
1685 gas=yes
1686 gnu_ld=yes
8e38461c 1687 tm_file="dbxelf.h elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h moxie/uclinux.h"
aca0b0b3 1688 tmake_file="${tmake_file} moxie/t-moxie"
23865616 1689 ;;
1242723c 1690moxie-*-rtems*)
aefe4056 1691 tmake_file="${tmake_file} moxie/t-moxie"
1242723c
AG
1692 tm_file="moxie/moxie.h dbxelf.h elfos.h moxie/rtems.h rtems.h newlib-stdint.h"
1693 ;;
17522262
AG
1694moxie-*-moxiebox*)
1695 gas=yes
1696 gnu_ld=yes
1697 tm_file="${tm_file} dbxelf.h elfos.h moxie/moxiebox.h newlib-stdint.h"
1698 tmake_file="${tmake_file} moxie/t-moxiebox"
1699 ;;
9f5b774b 1700h8300-*-elf*)
5f73c6cc 1701 tmake_file="h8300/t-h8300"
18e9e7db 1702 tm_file="h8300/h8300.h elfos.h newlib-stdint.h h8300/elf.h"
9f5b774b 1703 ;;
2f6bd6eb
YS
1704h8300-*-linux*)
1705 tmake_file="${tmake_file} h8300/t-h8300 h8300/t-linux"
18e9e7db 1706 tm_file="h8300/h8300.h elfos.h gnu-user.h linux.h glibc-stdint.h h8300/linux.h"
2f6bd6eb 1707 ;;
cd985f66 1708hppa*64*-*-linux*)
d711cf67 1709 target_cpu_default="MASK_PA_11|MASK_PA_20"
8e38461c 1710 tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h gnu-user.h linux.h \
207bf79d
JM
1711 glibc-stdint.h pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h \
1712 pa/pa64-linux.h"
40b1bb9f
JDA
1713 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1714 d_target_objs="${d_target_objs} pa-d.o"
c21a2372
AM
1715 gas=yes gnu_ld=yes
1716 ;;
cd985f66 1717hppa*-*-linux*)
dbc4d77c 1718 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS|MASK_CALLER_COPIES"
8e38461c 1719 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h pa/pa-linux.h \
c21a2372 1720 pa/pa32-regs.h pa/pa32-linux.h"
b8559e81
JDA
1721 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1722 d_target_objs="${d_target_objs} pa-d.o"
61ed06c3 1723 ;;
17f293b0
MK
1724hppa*-*-openbsd*)
1725 target_cpu_default="MASK_PA_11"
1726 tm_file="${tm_file} dbxelf.h elfos.h openbsd.h openbsd-stdint.h openbsd-libpthread.h \
1727 pa/pa-openbsd.h pa/pa32-regs.h pa/pa32-openbsd.h"
17f293b0 1728 extra_options="${extra_options} openbsd.opt"
40b1bb9f
JDA
1729 tmake_file="pa/t-pa"
1730 d_target_objs="${d_target_objs} pa-d.o"
17f293b0
MK
1731 gas=yes
1732 gnu_ld=yes
1733 ;;
428642b1
MT
1734hppa*-*-netbsd*)
1735 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS"
1736 tm_file="${tm_file} dbxelf.h elfos.h ${nbsd_tm_file} \
1737 pa/pa-netbsd.h pa/pa32-regs.h pa/pa32-netbsd.h"
1738 tmake_file="${tmake_file}"
1739 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
1740 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1741 ;;
d711cf67
JDA
1742hppa[12]*-*-hpux10*)
1743 case ${target} in
1744 hppa1.1-*-* | hppa2*-*-*)
1745 target_cpu_default="MASK_PA_11"
1746 ;;
1747 esac
1748 tm_file="${tm_file} pa/pa32-regs.h dbxelf.h pa/som.h \
1749 pa/pa-hpux.h pa/pa-hpux10.h"
b24d1acf 1750 extra_options="${extra_options} pa/pa-hpux.opt pa/pa-hpux10.opt"
d711cf67
JDA
1751 case ${target} in
1752 *-*-hpux10.[1-9]*)
1753 tm_file="${tm_file} pa/pa-hpux1010.h"
66617831 1754 extra_options="${extra_options} pa/pa-hpux1010.opt"
d711cf67 1755 ;;
61ed06c3 1756 esac
be3e4ef6
JDA
1757 use_gcc_stdint=provide
1758 tm_file="${tm_file} hpux-stdint.h"
40b1bb9f
JDA
1759 tmake_file="pa/t-pa t-slibgcc"
1760 d_target_objs="${d_target_objs} pa-d.o"
615be2cf
NN
1761 case ${enable_threads} in
1762 "")
1763 if test x$have_pthread_h = xyes ; then
1764 tmake_file="${tmake_file} pa/t-dce-thr"
1765 fi
1766 ;;
1767 yes | dce)
1768 tmake_file="${tmake_file} pa/t-dce-thr"
1769 ;;
61ed06c3 1770 esac
61ed06c3 1771 use_collect2=yes
543b6009 1772 gas=yes
a65264ae 1773 if test "x$with_dwarf2" != x; then
5cdb5d59 1774 echo "Warning: dwarf2 debug format is not supported for this target, --with-dwarf2 ignored" 1>&2
a65264ae
JDA
1775 dwarf2=no
1776 fi
61ed06c3
HPN
1777 ;;
1778hppa*64*-*-hpux11*)
d711cf67 1779 target_cpu_default="MASK_PA_11|MASK_PA_20"
7b79fe71
JDA
1780 if test x$gnu_ld = xyes
1781 then
d711cf67 1782 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
7b79fe71 1783 fi
543b6009
SE
1784 tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h \
1785 pa/pa64-regs.h pa/pa-hpux.h pa/pa-hpux1010.h \
1786 pa/pa-hpux11.h"
d711cf67 1787 case ${target} in
fc4538e4 1788 *-*-hpux11.[12]*)
d711cf67 1789 tm_file="${tm_file} pa/pa-hpux1111.h pa/pa-64.h pa/pa64-hpux.h"
66617831 1790 extra_options="${extra_options} pa/pa-hpux1111.opt"
d711cf67 1791 ;;
fc4538e4
SE
1792 *-*-hpux11.[3-9]*)
1793 tm_file="${tm_file} pa/pa-hpux1131.h pa/pa-64.h pa/pa64-hpux.h"
1794 extra_options="${extra_options} pa/pa-hpux1131.opt"
1795 ;;
d711cf67
JDA
1796 *)
1797 tm_file="${tm_file} pa/pa-64.h pa/pa64-hpux.h"
1798 ;;
1799 esac
66617831 1800 extra_options="${extra_options} pa/pa-hpux.opt \
e543b94c 1801 pa/pa-hpux1010.opt pa/pa64-hpux.opt hpux11.opt"
40b1bb9f
JDA
1802 tmake_file="pa/t-pa t-slibgcc"
1803 d_target_objs="${d_target_objs} pa-d.o"
7e2055ec 1804 case x${enable_threads} in
27ca3a61 1805 x | xyes | xposix )
f7288899 1806 thread_file=posix
7e2055ec
ZW
1807 ;;
1808 esac
543b6009 1809 gas=yes
9a17c91d
SE
1810 case ${target} in
1811 *-*-hpux11.[01]*)
1812 use_gcc_stdint=provide
1813 tm_file="${tm_file} hpux-stdint.h"
1814 ;;
1815 *-*-hpux11.[23]*)
1816 use_gcc_stdint=wrap
1817 tm_file="${tm_file} hpux-stdint.h"
1818 ;;
1819 esac
61ed06c3 1820 ;;
d711cf67
JDA
1821hppa[12]*-*-hpux11*)
1822 case ${target} in
1823 hppa1.1-*-* | hppa2*-*-*)
1824 target_cpu_default="MASK_PA_11"
1825 ;;
1826 esac
1827 tm_file="${tm_file} pa/pa32-regs.h dbxelf.h pa/som.h \
66617831 1828 pa/pa-hpux.h pa/pa-hpux1010.h pa/pa-hpux11.h"
e543b94c
JM
1829 extra_options="${extra_options} pa/pa-hpux.opt pa/pa-hpux1010.opt \
1830 hpux11.opt"
d711cf67 1831 case ${target} in
fc4538e4 1832 *-*-hpux11.[12]*)
d711cf67 1833 tm_file="${tm_file} pa/pa-hpux1111.h"
66617831 1834 extra_options="${extra_options} pa/pa-hpux1111.opt"
7e2055ec 1835 ;;
fc4538e4
SE
1836 *-*-hpux11.[3-9]*)
1837 tm_file="${tm_file} pa/pa-hpux1131.h"
1838 extra_options="${extra_options} pa/pa-hpux1131.opt"
1839 ;;
7e2055ec 1840 esac
40b1bb9f
JDA
1841 tmake_file="pa/t-pa t-slibgcc"
1842 d_target_objs="${d_target_objs} pa-d.o"
7e2055ec 1843 case x${enable_threads} in
27ca3a61 1844 x | xyes | xposix )
f7288899 1845 thread_file=posix
7e2055ec
ZW
1846 ;;
1847 esac
61ed06c3 1848 use_collect2=yes
543b6009 1849 gas=yes
9a17c91d
SE
1850 case ${target} in
1851 *-*-hpux11.[01]*)
1852 use_gcc_stdint=provide
1853 tm_file="${tm_file} hpux-stdint.h"
1854 ;;
1855 *-*-hpux11.[23]*)
1856 use_gcc_stdint=wrap
1857 tm_file="${tm_file} hpux-stdint.h"
1858 ;;
1859 esac
a65264ae 1860 if test "x$with_dwarf2" != x; then
5cdb5d59 1861 echo "Warning: dwarf2 debug format is not supported for this target, --with-dwarf2 ignored" 1>&2
a65264ae
JDA
1862 dwarf2=no
1863 fi
61ed06c3 1864 ;;
f18cbc1e 1865i[34567]86-*-darwin1[89]* | i[34567]86-*-darwin2*)
c2ff7104
IS
1866 echo "Error: 32bit target is not supported after Darwin17" 1>&2
1867 ;;
b069de3b 1868i[34567]86-*-darwin*)
c6b9174f 1869 need_64bit_isa=yes
c0aefbbe
IS
1870 # Baseline choice for a machine that allows m64 support.
1871 with_cpu=${with_cpu:-core2}
c2ff7104 1872 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch t-slibgcc"
d07092a6 1873 tm_file="${cpu_type}/darwin32-biarch.h ${tm_file} "
c2ff7104 1874 ;;
f18cbc1e 1875x86_64-*-darwin1[89]* | x86_64-*-darwin2*)
c2ff7104 1876 # Only 64b from now
d07092a6
IS
1877 tm_defines="${tm_defines} TARGET_64BIT_DEFAULT=(OPTION_MASK_ISA_64BIT|OPTION_MASK_ABI_64)"
1878 tm_defines="${tm_defines} TARGET_BI_ARCH=0"
c2ff7104 1879 with_cpu=${with_cpu:-core2}
b040f2be 1880 tmake_file="${tmake_file} t-slibgcc"
b069de3b 1881 ;;
9519e677 1882x86_64-*-darwin*)
c0aefbbe 1883 with_cpu=${with_cpu:-core2}
c2ff7104 1884 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
d07092a6 1885 tm_file="${cpu_type}/darwin64-biarch.h ${tm_file} "
9519e677 1886 ;;
d9063947
L
1887i[34567]86-*-elfiamcu)
1888 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/iamcu.h"
1889 ;;
61ed06c3 1890i[34567]86-*-elf*)
207bf79d 1891 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h"
a10dc289
HK
1892 ;;
1893x86_64-*-elf*)
207bf79d 1894 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h"
61ed06c3 1895 ;;
d6944908 1896x86_64-*-rtems*)
6fa08cbe 1897 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"
d6944908 1898 ;;
5a579c3b
LE
1899i[34567]86-*-rdos*)
1900 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/rdos.h"
1901 ;;
1902x86_64-*-rdos*)
1903 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"
1904 tmake_file="i386/t-i386elf t-svr4"
1905 ;;
dbed5a9b
JM
1906i[34567]86-*-dragonfly*)
1907 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h dragonfly.h dragonfly-stdint.h i386/dragonfly.h"
1908 tmake_file="${tmake_file} i386/t-crtstuff"
1909 ;;
1910x86_64-*-dragonfly*)
1911 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"
1912 tmake_file="${tmake_file} i386/t-crtstuff"
1913 ;;
61ed06c3 1914i[34567]86-*-freebsd*)
39ed301b 1915 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
e564e618
DB
1916 ;;
1917x86_64-*-freebsd*)
39ed301b 1918 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"
61ed06c3 1919 ;;
6ea0279f 1920i[34567]86-*-netbsdelf*)
dfe2677b 1921 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${nbsd_tm_file} i386/netbsd-elf.h"
a4714d14 1922 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
6ea0279f 1923 ;;
7c884404 1924x86_64-*-netbsd*)
dfe2677b 1925 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${nbsd_tm_file} i386/x86-64.h i386/netbsd64.h"
a4714d14 1926 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
7c884404 1927 ;;
378b66d4 1928i[34567]86-*-openbsd*)
75a3bd9d 1929 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h"
aa58f943 1930 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/openbsdelf.h"
5369e2d4 1931 extra_options="${extra_options} openbsd.opt"
378b66d4
ME
1932 gas=yes
1933 gnu_ld=yes
378b66d4 1934 ;;
613061fd
MK
1935x86_64-*-openbsd*)
1936 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h"
1937 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/x86-64.h i386/openbsdelf.h"
1938 extra_options="${extra_options} openbsd.opt"
1939 gas=yes
1940 gnu_ld=yes
1941 ;;
8466af06 1942i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu)
cfafe973 1943 # Intel 80386's running GNU/*
61ed06c3 1944 # with ELF format using glibc 2
6c0170ea 1945 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h gnu-user.h glibc-stdint.h"
cfafe973 1946 case ${target} in
0f45f0f5 1947 i[34567]86-*-linux*)
5fa747a7
MK
1948 tm_file="${tm_file} linux.h linux-android.h"
1949 extra_options="${extra_options} linux-android.opt"
0f45f0f5 1950 if test x$enable_targets = xall; then
6acc8a3c 1951 tm_file="${tm_file} i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h i386/linux-common.h i386/linux64.h"
0f45f0f5 1952 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
ff473280 1953 tmake_file="${tmake_file} i386/t-linux64"
f0ea7581
L
1954 x86_multilibs="${with_multilib_list}"
1955 if test "$x86_multilibs" = "default"; then
1956 x86_multilibs="m64,m32"
1957 fi
1958 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
1959 for x86_multilib in ${x86_multilibs}; do
1960 case ${x86_multilib} in
1961 m32 | m64 | mx32)
1962 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
1963 ;;
1964 *)
1965 echo "--with-multilib-list=${x86_with_multilib} not supported."
1966 exit 1
1967 esac
1968 done
1969 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
c6b9174f 1970 need_64bit_isa=yes
646bdeab 1971 if test x$with_cpu = x; then
8981c15b
JM
1972 if test x$with_cpu_64 = x; then
1973 with_cpu_64=generic
1974 fi
646bdeab
L
1975 else
1976 case " $x86_cpus $x86_archs $x86_64_archs " in
1977 *" $with_cpu "*)
1978 ;;
1979 *)
1980 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
1981 echo "$x86_cpus $x86_archs $x86_64_archs " 1>&2
1982 exit 1
1983 ;;
1984 esac
1985 fi
0f45f0f5 1986 else
6acc8a3c 1987 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h i386/linux-common.h i386/linux.h"
0f45f0f5
JM
1988 fi
1989 ;;
63708bf5 1990 i[34567]86-*-kfreebsd*-gnu)
70a69509 1991 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kfreebsd-gnu.h i386/kfreebsd-gnu.h"
63708bf5
UB
1992 ;;
1993 i[34567]86-*-kopensolaris*-gnu)
70a69509 1994 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kopensolaris-gnu.h i386/kopensolaris-gnu.h"
63708bf5
UB
1995 ;;
1996 i[34567]86-*-gnu*)
70a69509 1997 tm_file="$tm_file i386/gnu-user-common.h i386/gnu-user.h gnu.h i386/gnu.h"
63708bf5 1998 ;;
cfafe973 1999 esac
61ed06c3 2000 ;;
8466af06 2001x86_64-*-linux* | x86_64-*-kfreebsd*-gnu)
6c0170ea 2002 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h gnu-user.h glibc-stdint.h \
70a69509 2003 i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h"
44379973 2004 case ${target} in
f6c5fbfd 2005 x86_64-*-linux*)
5fa747a7
MK
2006 tm_file="${tm_file} linux.h linux-android.h i386/linux-common.h i386/linux64.h"
2007 extra_options="${extra_options} linux-android.opt"
63708bf5
UB
2008 ;;
2009 x86_64-*-kfreebsd*-gnu)
2010 tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu64.h"
2011 ;;
44379973 2012 esac
5f73c6cc 2013 tmake_file="${tmake_file} i386/t-linux64"
f0ea7581
L
2014 x86_multilibs="${with_multilib_list}"
2015 if test "$x86_multilibs" = "default"; then
9287b168
L
2016 case ${with_abi} in
2017 x32 | mx32)
2018 x86_multilibs="mx32"
2019 ;;
2020 *)
2021 x86_multilibs="m64,m32"
2022 ;;
2023 esac
f0ea7581
L
2024 fi
2025 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
2026 for x86_multilib in ${x86_multilibs}; do
2027 case ${x86_multilib} in
2028 m32 | m64 | mx32)
2029 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
2030 ;;
2031 *)
2032 echo "--with-multilib-list=${x86_with_multilib} not supported."
2033 exit 1
2034 esac
2035 done
2036 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
14f73b5a 2037 ;;
61ed06c3
HPN
2038i[34567]86-pc-msdosdjgpp*)
2039 xm_file=i386/xm-djgpp.h
27f98305 2040 tm_file="dbxcoff.h ${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/djgpp.h i386/djgpp-stdint.h"
08b2bad2 2041 native_system_header_dir=/dev/env/DJDIR/include
6ac49599 2042 extra_options="${extra_options} i386/djgpp.opt"
61ed06c3
HPN
2043 gnu_ld=yes
2044 gas=yes
3e3877f8 2045 use_gcc_stdint=wrap
61ed06c3 2046 ;;
61ed06c3 2047i[34567]86-*-lynxos*)
4f587cb0
AN
2048 xm_defines=POSIX
2049 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/lynx.h lynx.h"
5f73c6cc 2050 tmake_file="${tmake_file} t-lynx"
6ac49599 2051 extra_options="${extra_options} lynx.opt"
4f587cb0
AN
2052 thread_file=lynx
2053 gnu_ld=yes
2054 gas=yes
61ed06c3 2055 ;;
f2feed2c 2056i[34567]86-*-nto-qnx*)
7f260570 2057 tm_file="${tm_file} i386/att.h dbxelf.h tm-dwarf2.h elfos.h i386/unix.h i386/nto.h"
fc523387 2058 extra_options="${extra_options} i386/nto.opt"
f2feed2c
GP
2059 gnu_ld=yes
2060 gas=yes
2061 ;;
c7bdf0a6 2062i[34567]86-*-rtems*)
207bf79d 2063 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"
aefe4056 2064 tmake_file="${tmake_file} i386/t-rtems"
61ed06c3 2065 ;;
ccd1242e 2066i[34567]86-*-solaris2* | x86_64-*-solaris2*)
9d151aff
RO
2067 # Set default arch_32 to pentium4, tune_32 to generic like the other
2068 # i386 targets, although config.guess defaults to i386-pc-solaris2*.
d9f069ab 2069 with_arch_32=${with_arch_32:-pentium4}
9af27220 2070 with_tune_32=${with_tune_32:-generic}
2cf03b11 2071 tm_file="${tm_file} i386/unix.h i386/att.h ${sol2_tm_file_head} i386/x86-64.h ${sol2_tm_file_tail}"
d9f069ab 2072 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2cf03b11 2073 tmake_file="$tmake_file i386/t-sol2"
d9f069ab
RO
2074 need_64bit_isa=yes
2075 if test x$with_cpu = x; then
2076 if test x$with_cpu_64 = x; then
2077 with_cpu_64=generic
646bdeab 2078 fi
d9f069ab
RO
2079 else
2080 case " $x86_cpus $x86_archs $x86_64_archs " in
2081 *" $with_cpu "*)
2082 ;;
2083 *)
2084 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2085 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2086 exit 1
2087 ;;
2088 esac
2089 fi
61ed06c3 2090 ;;
9a835ba4 2091i[4567]86-wrs-vxworks*|x86_64-wrs-vxworks7*)
50567938
JL
2092 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
2093 case ${target} in
2094 x86_64-*)
2095 need_64bit_isa=yes
2096 tm_file="${tm_file} i386/x86-64.h"
2097 ;;
2098 esac
2099 tm_file="${tm_file} vx-common.h"
d442d7d9
PE
2100 case ${target} in
2101 *-vxworksae*)
4ce351de 2102 tm_file="${tm_file} vxworksae.h i386/vxworks.h i386/vxworksae.h"
d442d7d9
PE
2103 tmake_file="${tmake_file} i386/t-vxworks i386/t-vxworksae"
2104 ;;
2105 *)
4ce351de 2106 tm_file="${tm_file} vxworks.h i386/vxworks.h"
d442d7d9
PE
2107 tmake_file="${tmake_file} i386/t-vxworks"
2108 ;;
2109 esac
55047c9d 2110 ;;
ebb9f8b0 2111i[34567]86-*-cygwin*)
bb2aaded 2112 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"
4dc0535b 2113 xm_file=i386/xm-cygwin.h
f9989b51 2114 tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
7c0b7150 2115 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.c"
301f4402 2116 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
41f59cda 2117 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
3edeb30d
DK
2118 c_target_objs="${c_target_objs} msformat-c.o"
2119 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2892e2f7
IB
2120 d_target_objs="${d_target_objs} winnt-d.o"
2121 target_has_targetdm="yes"
61ed06c3 2122 if test x$enable_threads = xyes; then
70e5e841 2123 thread_file='posix'
61ed06c3 2124 fi
301f4402 2125 default_use_cxa_atexit=yes
bb2aaded 2126 use_gcc_stdint=wrap
61ed06c3 2127 ;;
b802ae5c
KT
2128x86_64-*-cygwin*)
2129 need_64bit_isa=yes
2130 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"
2131 xm_file=i386/xm-cygwin.h
2132 tmake_file="${tmake_file} i386/t-cygming t-slibgcc i386/t-cygwin-w64"
7c0b7150 2133 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.c"
301f4402 2134 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
41f59cda 2135 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
b802ae5c
KT
2136 c_target_objs="${c_target_objs} msformat-c.o"
2137 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2892e2f7
IB
2138 d_target_objs="${d_target_objs} winnt-d.o"
2139 target_has_targetdm="yes"
b802ae5c
KT
2140 if test x$enable_threads = xyes; then
2141 thread_file='posix'
2142 fi
301f4402 2143 default_use_cxa_atexit=yes
b802ae5c
KT
2144 use_gcc_stdint=wrap
2145 tm_defines="${tm_defines} TARGET_CYGWIN64=1"
2146 ;;
e8930cc1 2147i[34567]86-*-mingw* | x86_64-*-mingw*)
c04bdac0 2148 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/cygming.h"
4dc0535b 2149 xm_file=i386/xm-mingw32.h
88b0e79e
JC
2150 c_target_objs="${c_target_objs} winnt-c.o"
2151 cxx_target_objs="${cxx_target_objs} winnt-c.o"
2892e2f7 2152 d_target_objs="${d_target_objs} winnt-d.o"
88b0e79e 2153 target_has_targetcm="yes"
2892e2f7 2154 target_has_targetdm="yes"
933608b7
KT
2155 case ${target} in
2156 x86_64-*-* | *-w64-*)
c6b9174f 2157 need_64bit_isa=yes
933608b7
KT
2158 ;;
2159 *)
2160 ;;
2161 esac
c04bdac0
KT
2162 if test x$enable_threads = xposix ; then
2163 tm_file="${tm_file} i386/mingw-pthread.h"
2164 fi
2165 tm_file="${tm_file} i386/mingw32.h"
35091630
KT
2166 # This makes the logic if mingw's or the w64 feature set has to be used
2167 case ${target} in
2168 *-w64-*)
9b91e436
KT
2169 user_headers_inc_next_post="${user_headers_inc_next_post} float.h"
2170 user_headers_inc_next_pre="${user_headers_inc_next_pre} stddef.h stdarg.h"
35091630 2171 tm_file="${tm_file} i386/mingw-w64.h"
933608b7
KT
2172 if test x$enable_targets = xall; then
2173 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
646bdeab 2174 if test x$with_cpu = x; then
933608b7
KT
2175 if test x$with_cpu_64 = x; then
2176 with_cpu_64=generic
2177 fi
646bdeab
L
2178 else
2179 case " $x86_cpus $x86_archs $x86_64_archs " in
2180 *" $with_cpu "*)
2181 ;;
2182 *)
2183 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2184 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2185 exit 1
2186 ;;
2187 esac
2188 fi
933608b7 2189 fi
35091630
KT
2190 ;;
2191 *)
35091630
KT
2192 ;;
2193 esac
2194 tm_file="${tm_file} i386/mingw-stdint.h"
88b0e79e 2195 tmake_file="${tmake_file} t-winnt i386/t-cygming t-slibgcc"
8370a62a 2196 case ${target} in
917ed773 2197 x86_64-w64-*)
8370a62a
KT
2198 tmake_file="${tmake_file} i386/t-mingw-w64"
2199 ;;
917ed773
KT
2200 i[34567]86-w64-*)
2201 tmake_file="${tmake_file} i386/t-mingw-w32"
2202 ;;
8370a62a 2203 esac
08b2bad2 2204 native_system_header_dir=/mingw/include
7c0b7150 2205 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.c"
94564826 2206 extra_options="${extra_options} i386/cygming.opt i386/mingw.opt"
35091630
KT
2207 case ${target} in
2208 *-w64-*)
2209 extra_options="${extra_options} i386/mingw-w64.opt"
2210 ;;
2211 *)
2212 ;;
2213 esac
41f59cda 2214 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
ab442df7
MM
2215 c_target_objs="${c_target_objs} msformat-c.o"
2216 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
b993039f
EB
2217 gas=yes
2218 gnu_ld=yes
97388150 2219 default_use_cxa_atexit=yes
7d253f6e 2220 use_gcc_stdint=wrap
50c0d3fd 2221 case ${enable_threads} in
f9989b51
RO
2222 "" | yes | win32)
2223 thread_file='win32'
c04bdac0
KT
2224 ;;
2225 posix)
2226 thread_file='posix'
c04bdac0 2227 ;;
50c0d3fd 2228 esac
e8930cc1
KT
2229 case ${target} in
2230 *mingw32crt*)
2231 tm_file="${tm_file} i386/crtdll.h"
2232 ;;
2233 *mingw32msv* | *mingw*)
09eaf5a5 2234 ;;
61ed06c3
HPN
2235 esac
2236 ;;
491b3c5f
JC
2237x86_64-*-fuchsia*)
2238 tmake_file="${tmake_file} i386/t-x86_64-elf"
2239 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h fuchsia.h"
2240 ;;
61ed06c3 2241ia64*-*-elf*)
207bf79d 2242 tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h ia64/sysv4.h ia64/elf.h"
61ed06c3
HPN
2243 tmake_file="ia64/t-ia64"
2244 target_cpu_default="0"
2245 if test x$gas = xyes
2246 then
2247 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2248 fi
2249 if test x$gnu_ld = xyes
2250 then
2251 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
2252 fi
61ed06c3 2253 ;;
243a7070 2254ia64*-*-freebsd*)
fee42cc1 2255 tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file} ia64/sysv4.h ia64/freebsd.h"
243a7070
DB
2256 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2257 tmake_file="${tmake_file} ia64/t-ia64"
243a7070 2258 ;;
61ed06c3 2259ia64*-*-linux*)
8e38461c 2260 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ia64/sysv4.h ia64/linux.h"
a9011c94 2261 tmake_file="${tmake_file} ia64/t-ia64 ia64/t-linux t-libunwind"
61ed06c3 2262 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
61ed06c3 2263 ;;
7e5b9908 2264ia64*-*-hpux*)
2337b6b7 2265 tm_file="${tm_file} dbxelf.h elfos.h ia64/sysv4.h ia64/hpux.h"
b040f2be 2266 tmake_file="ia64/t-ia64 ia64/t-hpux t-slibgcc"
7e5b9908 2267 target_cpu_default="MASK_GNU_AS"
7e2055ec 2268 case x$enable_threads in
79e8b6c0 2269 x | xyes | xposix )
7e2055ec
ZW
2270 thread_file=posix
2271 ;;
2272 esac
cad61762 2273 use_collect2=no
34c1864f
SE
2274 c_target_objs="ia64-c.o"
2275 cxx_target_objs="ia64-c.o"
e543b94c 2276 extra_options="${extra_options} ia64/ilp32.opt hpux11.opt"
9a17c91d
SE
2277 use_gcc_stdint=wrap
2278 tm_file="${tm_file} hpux-stdint.h"
fc4538e4
SE
2279 case ${target} in
2280 *-*-hpux11.3*)
2281 tm_file="${tm_file} ia64/hpux-unix2003.h"
2282 ;;
2283 esac
7e5b9908 2284 ;;
a9a25daa 2285ia64-hp-*vms*)
d8aba32a
TG
2286 tm_file="${tm_file} elfos.h ia64/sysv4.h vms/vms.h ia64/vms.h"
2287 tmake_file="${tmake_file} ia64/t-ia64"
a9a25daa
DR
2288 target_cpu_default="0"
2289 if test x$gas = xyes
2290 then
2291 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2292 fi
18a24fed 2293 extra_options="${extra_options} ia64/vms.opt"
a9a25daa 2294 ;;
6b3d1e47 2295iq2000*-*-elf*)
248a9e94 2296 tm_file="elfos.h newlib-stdint.h iq2000/iq2000.h"
6b3d1e47 2297 out_file=iq2000/iq2000.c
6b3d1e47
SC
2298 md_file=iq2000/iq2000.md
2299 ;;
aa4945c1 2300lm32-*-elf*)
7c9bb341 2301 tm_file="dbxelf.h elfos.h ${tm_file} newlib-stdint.h"
aca0b0b3 2302 tmake_file="${tmake_file} lm32/t-lm32"
aa4945c1 2303 ;;
d7856dc7 2304lm32-*-rtems*)
1ddc8057 2305 tm_file="dbxelf.h elfos.h ${tm_file} lm32/rtems.h rtems.h newlib-stdint.h"
aca0b0b3 2306 tmake_file="${tmake_file} lm32/t-lm32"
4ce7e3a9 2307 tmake_file="${tmake_file} lm32/t-rtems"
d7856dc7 2308 ;;
aa4945c1 2309lm32-*-uclinux*)
8e38461c 2310 tm_file="dbxelf.h elfos.h ${tm_file} gnu-user.h linux.h lm32/uclinux-elf.h"
aca0b0b3 2311 tmake_file="${tmake_file} lm32/t-lm32"
aa4945c1 2312 ;;
61ed06c3 2313m32r-*-elf*)
d158c3f7 2314 tm_file="elfos.h newlib-stdint.h ${tm_file}"
37ec8b7a 2315 ;;
ad126521 2316m32rle-*-elf*)
d158c3f7 2317 tm_file="elfos.h newlib-stdint.h m32r/little.h ${tm_file}"
ad126521 2318 ;;
cd985f66 2319m68k-*-elf* | fido-*-elf*)
7d33c31d
KH
2320 case ${target} in
2321 fido-*-elf*)
2322 # Check that $with_cpu makes sense.
2323 case $with_cpu in
2324 "" | "fidoa")
2325 ;;
2326 *)
2327 echo "Cannot accept --with-cpu=$with_cpu"
2328 exit 1
2329 ;;
2330 esac
2331 with_cpu=fidoa
2332 ;;
2333 *)
2334 default_m68k_cpu=68020
2335 default_cf_cpu=5206
2336 ;;
2337 esac
207bf79d 2338 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"
cf909b0d 2339 tm_defines="${tm_defines} MOTOROLA=1"
7d33c31d
KH
2340 tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-m68kelf"
2341 # Add multilibs for targets other than fido.
2342 case ${target} in
2343 fido-*-elf*)
2344 ;;
2345 *)
2346 tmake_file="$tmake_file m68k/t-mlibs"
2347 ;;
2348 esac
61ed06c3 2349 ;;
cd985f66 2350m68k*-*-netbsdelf*)
59fbf3cb 2351 default_m68k_cpu=68020
10e96df4 2352 default_cf_cpu=5475
dfe2677b 2353 tm_file="${tm_file} dbxelf.h elfos.h ${nbsd_tm_file} m68k/netbsd-elf.h"
a4714d14 2354 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
dfe2677b 2355 tm_defines="${tm_defines} MOTOROLA=1 CHAR_FAST8=1 SHORT_FAST16=1"
2fd95d71 2356 ;;
4529dbf1
RS
2357m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux
2358 # with uClibc, using the new GNU/Linux-style
2359 # ABI.
59fbf3cb 2360 default_m68k_cpu=68020
10e96df4 2361 default_cf_cpu=5206
8e38461c 2362 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"
4254bbfe 2363 extra_options="${extra_options} m68k/uclinux.opt"
b5a54c03 2364 tm_defines="${tm_defines} MOTOROLA=1"
10e96df4 2365 tmake_file="m68k/t-floatlib m68k/t-uclinux m68k/t-mlibs"
ba591f5a 2366 ;;
5f73c6cc 2367m68k-*-linux*) # Motorola m68k's running GNU/Linux
61ed06c3
HPN
2368 # with ELF format using glibc 2
2369 # aka the GNU/Linux C library 6.
59fbf3cb 2370 default_m68k_cpu=68020
10e96df4 2371 default_cf_cpu=5475
368b55f6 2372 with_arch=${with_arch:-m68k}
8e38461c 2373 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h m68k/linux.h ./sysroot-suffix.h"
4af06170 2374 extra_options="${extra_options} m68k/ieee.opt"
cf909b0d 2375 tm_defines="${tm_defines} MOTOROLA=1"
368b55f6 2376 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-linux m68k/t-mlibs"
61ed06c3 2377 ;;
c7bdf0a6 2378m68k-*-rtems*)
59fbf3cb 2379 default_m68k_cpu=68020
10e96df4 2380 default_cf_cpu=5206
aefe4056 2381 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-m68kbare m68k/t-crtstuff m68k/t-rtems m68k/t-mlibs"
207bf79d 2382 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"
cf909b0d 2383 tm_defines="${tm_defines} MOTOROLA=1"
61ed06c3 2384 ;;
61ed06c3 2385mcore-*-elf)
ed38428f 2386 tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file} mcore/mcore-elf.h"
61ed06c3 2387 tmake_file=mcore/t-mcore
a929bc28 2388 inhibit_libc=true
61ed06c3 2389 ;;
80920132 2390microblaze*-linux*)
76ef61fb
EI
2391 case $target in
2392 microblazeel-*)
2393 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2394 ;;
2395 microblaze-*)
2396 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2397 ;;
2398 esac
8e38461c 2399 tm_file="${tm_file} dbxelf.h gnu-user.h linux.h microblaze/linux.h"
fbf0cf90 2400 tm_file="${tm_file} glibc-stdint.h"
80920132
ME
2401 c_target_objs="${c_target_objs} microblaze-c.o"
2402 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
fbf0cf90 2403 tmake_file="${tmake_file} microblaze/t-microblaze"
76ef61fb 2404 tmake_file="${tmake_file} microblaze/t-microblaze-linux"
80920132 2405 ;;
479f4358 2406microblaze*-*-rtems*)
c6adc8b3
RC
2407 case $target in
2408 microblazeel-*)
2409 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2410 ;;
2411 microblaze-*)
2412 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2413 ;;
2414 esac
479f4358
RC
2415 tm_file="${tm_file} dbxelf.h"
2416 tm_file="${tm_file} microblaze/rtems.h rtems.h newlib-stdint.h"
2417 c_target_objs="${c_target_objs} microblaze-c.o"
2418 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2419 tmake_file="${tmake_file} microblaze/t-microblaze"
aefe4056 2420 tmake_file="${tmake_file} microblaze/t-rtems"
479f4358 2421 ;;
6f14eef2 2422microblaze*-*-elf)
76ef61fb
EI
2423 case $target in
2424 microblazeel-*)
2425 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2426 ;;
2427 microblaze-*)
2428 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2429 ;;
2430 esac
6f14eef2 2431 tm_file="${tm_file} dbxelf.h newlib-stdint.h"
80920132
ME
2432 c_target_objs="${c_target_objs} microblaze-c.o"
2433 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
6f14eef2 2434 tmake_file="${tmake_file} microblaze/t-microblaze"
80920132 2435 ;;
09cae750
PD
2436riscv*-*-linux*)
2437 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} riscv/linux.h"
2438 case "x${enable_multilib}" in
2439 xno) ;;
2440 xyes) tmake_file="${tmake_file} riscv/t-linux-multilib" ;;
2441 *) echo "Unknown value for enable_multilib"; exit 1
2442 esac
2443 tmake_file="${tmake_file} riscv/t-riscv riscv/t-linux"
2444 gnu_ld=yes
2445 gas=yes
cd1e2f63
MC
2446 case $target in
2447 riscv32be-*|riscv64be-*)
2448 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2449 ;;
2450 esac
09cae750
PD
2451 # Force .init_array support. The configure script cannot always
2452 # automatically detect that GAS supports it, yet we require it.
2453 gcc_cv_initfini_array=yes
2454 ;;
1f9e09b5 2455riscv*-*-elf* | riscv*-*-rtems*)
09cae750 2456 tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h"
a8ef8061
SH
2457 case ${target} in
2458 *-*-rtems*)
0455cd76 2459 tm_file="${tm_file} riscv/rtems.h rtems.h"
a8ef8061
SH
2460 tmake_file="${tmake_file} riscv/t-rtems"
2461 ;;
2462 *)
c1e66912
KC
2463 if test "x${with_multilib_generator}" == xdefault; then
2464 case "x${enable_multilib}" in
2465 xno) ;;
2466 xyes) tmake_file="${tmake_file} riscv/t-elf-multilib" ;;
2467 *) echo "Unknown value for enable_multilib"; exit 1
2468 esac
2469 fi
09cae750
PD
2470 esac
2471 tmake_file="${tmake_file} riscv/t-riscv"
2472 gnu_ld=yes
2473 gas=yes
cd1e2f63
MC
2474 case $target in
2475 riscv32be-*|riscv64be-*)
2476 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2477 ;;
2478 esac
09cae750
PD
2479 # Force .init_array support. The configure script cannot always
2480 # automatically detect that GAS supports it, yet we require it.
2481 gcc_cv_initfini_array=yes
2482 ;;
4d47fe5a
RB
2483riscv*-*-freebsd*)
2484 tm_file="${tm_file} elfos.h ${fbsd_tm_file} riscv/freebsd.h"
2485 tmake_file="${tmake_file} riscv/t-riscv"
2486 gnu_ld=yes
2487 gas=yes
cd1e2f63
MC
2488 case $target in
2489 riscv32be-*|riscv64be-*)
2490 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2491 ;;
2492 esac
4d47fe5a
RB
2493 # Force .init_array support. The configure script cannot always
2494 # automatically detect that GAS supports it, yet we require it.
2495 gcc_cv_initfini_array=yes
2496 ;;
f982f805 2497mips*-*-netbsd*) # NetBSD/mips, either endian.
5811cb27 2498 target_cpu_default="MASK_ABICALLS"
dfe2677b 2499 tm_file="elfos.h ${tm_file} mips/elf.h ${nbsd_tm_file} mips/netbsd.h"
a4714d14 2500 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
61ed06c3 2501 ;;
58c9330b
MF
2502mips*-img-linux*)
2503 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"
2504 extra_options="${extra_options} linux-android.opt"
2505 tmake_file="${tmake_file} mips/t-img-linux"
4ecfc7e3 2506 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
38e9658c
MF
2507 with_arch_32="mips32r6"
2508 with_arch_64="mips64r6"
58c9330b
MF
2509 gnu_ld=yes
2510 gas=yes
2511 ;;
965c1798 2512mips*-mti-linux*)
9a7451a5 2513 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"
ed9cbf7c 2514 extra_options="${extra_options} linux-android.opt"
965c1798 2515 tmake_file="${tmake_file} mips/t-mti-linux"
4ecfc7e3 2516 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
38e9658c
MF
2517 with_arch_32="mips32r2"
2518 with_arch_64="mips64r2"
965c1798
SE
2519 gnu_ld=yes
2520 gas=yes
965c1798 2521 ;;
77893d0b 2522mips*-*-linux*) # Linux MIPS, either endian.
9a7451a5 2523 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"
ed9cbf7c 2524 extra_options="${extra_options} linux-android.opt"
900e3ae5 2525 case ${target} in
82f84ecb
MF
2526 mipsisa32r6*)
2527 default_mips_arch=mips32r6
2528 ;;
77893d0b 2529 mipsisa32r2*)
8cfebf86 2530 default_mips_arch=mips32r2
77893d0b
SE
2531 ;;
2532 mipsisa32*)
8cfebf86 2533 default_mips_arch=mips32
77893d0b 2534 ;;
900e3ae5 2535 mips64el-st-linux-gnu)
8cfebf86 2536 default_mips_abi=n32
900e3ae5
DJ
2537 tm_file="${tm_file} mips/st.h"
2538 tmake_file="${tmake_file} mips/t-st"
77893d0b 2539 enable_mips_multilibs="yes"
900e3ae5 2540 ;;
d97e6aca 2541 mips64octeon*-*-linux*)
8cfebf86 2542 default_mips_abi=n32
d97e6aca
AN
2543 tm_defines="${tm_defines} MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\""
2544 target_cpu_default=MASK_SOFT_FLOAT_ABI
77893d0b 2545 enable_mips_multilibs="yes"
d97e6aca 2546 ;;
91f78b67
YS
2547 mipsisa64r6*-*-linux-gnuabi64)
2548 default_mips_abi=64
2549 default_mips_arch=mips64r6
2550 enable_mips_multilibs="yes"
2551 ;;
82f84ecb
MF
2552 mipsisa64r6*-*-linux*)
2553 default_mips_abi=n32
2554 default_mips_arch=mips64r6
2555 enable_mips_multilibs="yes"
2556 ;;
91f78b67
YS
2557 mipsisa64r2*-*-linux-gnuabi64)
2558 default_mips_abi=64
2559 default_mips_arch=mips64r2
2560 enable_mips_multilibs="yes"
2561 ;;
f2d6ca50 2562 mipsisa64r2*-*-linux*)
8cfebf86
SE
2563 default_mips_abi=n32
2564 default_mips_arch=mips64r2
77893d0b
SE
2565 enable_mips_multilibs="yes"
2566 ;;
91f78b67
YS
2567 mips64*-*-linux-gnuabi64 | mipsisa64*-*-linux-gnuabi64)
2568 default_mips_abi=64
2569 enable_mips_multilibs="yes"
2570 ;;
77893d0b 2571 mips64*-*-linux* | mipsisa64*-*-linux*)
8cfebf86 2572 default_mips_abi=n32
77893d0b 2573 enable_mips_multilibs="yes"
f2d6ca50 2574 ;;
900e3ae5 2575 esac
bd5ab709 2576 if test x$enable_targets = xall; then
77893d0b
SE
2577 enable_mips_multilibs="yes"
2578 fi
2579 if test x$enable_mips_multilibs = xyes; then
bd5ab709 2580 tmake_file="${tmake_file} mips/t-linux64"
bd5ab709 2581 fi
61ed06c3 2582 ;;
992bcfac 2583mips*-mti-elf*)
a290fcda 2584 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
992bcfac 2585 tmake_file="mips/t-mti-elf"
4ecfc7e3 2586 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
38e9658c
MF
2587 with_arch_32="mips32r2"
2588 with_arch_64="mips64r2"
992bcfac 2589 ;;
58c9330b
MF
2590mips*-img-elf*)
2591 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2592 tmake_file="mips/t-img-elf"
4ecfc7e3 2593 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
38e9658c
MF
2594 with_arch_32="mips32r6"
2595 with_arch_64="mips64r6"
58c9330b 2596 ;;
0ea339ea 2597mips*-sde-elf*)
a290fcda 2598 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h"
45b86625 2599 tmake_file="mips/t-sde"
d1583032 2600 extra_options="${extra_options} mips/sde.opt"
d9dced13
RS
2601 case "${with_newlib}" in
2602 yes)
2603 # newlib / libgloss.
2604 ;;
2605 *)
2606 # MIPS toolkit libraries.
2607 tm_file="$tm_file mips/sdemtk.h"
2608 tmake_file="$tmake_file mips/t-sdemtk"
d9dced13
RS
2609 case ${enable_threads} in
2610 "" | yes | mipssde)
2611 thread_file='mipssde'
2612 ;;
2613 esac
2614 ;;
2615 esac
0ea339ea 2616 case ${target} in
82f84ecb 2617 mipsisa32r6*)
4ecfc7e3 2618 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
82f84ecb 2619 ;;
0ea339ea 2620 mipsisa32r2*)
4ecfc7e3 2621 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
0ea339ea
NS
2622 ;;
2623 mipsisa32*)
4ecfc7e3 2624 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32 MIPS_ABI_DEFAULT=ABI_32"
0ea339ea 2625 ;;
82f84ecb 2626 mipsisa64r6*)
4ecfc7e3 2627 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6 MIPS_ABI_DEFAULT=ABI_N32"
82f84ecb 2628 ;;
0a4a51c7 2629 mipsisa64r2*)
4ecfc7e3 2630 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2 MIPS_ABI_DEFAULT=ABI_N32"
0a4a51c7 2631 ;;
0ea339ea 2632 mipsisa64*)
4ecfc7e3 2633 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_ABI_DEFAULT=ABI_N32"
0ea339ea
NS
2634 ;;
2635 esac
2636 ;;
e2c14f5d
RS
2637mipsisa32-*-elf* | mipsisa32el-*-elf* | \
2638mipsisa32r2-*-elf* | mipsisa32r2el-*-elf* | \
82f84ecb 2639mipsisa32r6-*-elf* | mipsisa32r6el-*-elf* | \
0a4a51c7 2640mipsisa64-*-elf* | mipsisa64el-*-elf* | \
82f84ecb
MF
2641mipsisa64r2-*-elf* | mipsisa64r2el-*-elf* | \
2642mipsisa64r6-*-elf* | mipsisa64r6el-*-elf*)
207bf79d 2643 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
45b86625 2644 tmake_file="mips/t-isa3264"
e2c14f5d 2645 case ${target} in
82f84ecb 2646 mipsisa32r6*)
4ecfc7e3 2647 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6"
82f84ecb 2648 ;;
e2c14f5d 2649 mipsisa32r2*)
4ecfc7e3 2650 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2"
e2c14f5d
RS
2651 ;;
2652 mipsisa32*)
4ecfc7e3 2653 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32"
e2c14f5d 2654 ;;
82f84ecb 2655 mipsisa64r6*)
4ecfc7e3 2656 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6"
82f84ecb 2657 ;;
0a4a51c7 2658 mipsisa64r2*)
4ecfc7e3 2659 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2"
0a4a51c7 2660 ;;
e2c14f5d 2661 mipsisa64*)
4ecfc7e3 2662 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64"
e2c14f5d
RS
2663 ;;
2664 esac
2665 case ${target} in
2666 mipsisa32*-*-elfoabi*)
2667 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_32"
2668 tm_file="${tm_file} mips/elfoabi.h"
2669 ;;
2670 mipsisa64*-*-elfoabi*)
2671 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_O64"
2672 tm_file="${tm_file} mips/elfoabi.h"
2673 ;;
2674 *-*-elf*)
2675 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2676 ;;
2677 esac
5c44e275 2678 ;;
5ce6f47b 2679mipsisa64sr71k-*-elf*)
207bf79d 2680 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
5ce6f47b 2681 tmake_file=mips/t-sr71k
4ecfc7e3 2682 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sr71000\\\" MIPS_ABI_DEFAULT=ABI_EABI"
5ce6f47b 2683 ;;
3d41dbb0 2684mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*)
207bf79d 2685 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
45b86625 2686 tmake_file="mips/t-elf mips/t-sb1"
4ecfc7e3 2687 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sb1\\\" MIPS_ABI_DEFAULT=ABI_O64"
3d41dbb0 2688 ;;
107eea2c 2689mips-*-elf* | mipsel-*-elf* | mipsr5900-*-elf* | mipsr5900el-*-elf*)
207bf79d 2690 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
45b86625 2691 tmake_file="mips/t-elf"
61ed06c3 2692 ;;
107eea2c 2693mips64r5900-*-elf* | mips64r5900el-*-elf*)
a290fcda 2694 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h"
107eea2c 2695 tmake_file="mips/t-elf"
4ecfc7e3 2696 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_N32"
107eea2c 2697 ;;
74826b0f 2698mips64-*-elf* | mips64el-*-elf*)
207bf79d 2699 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
45b86625 2700 tmake_file="mips/t-elf"
4ecfc7e3 2701 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_O64"
61ed06c3 2702 ;;
5ce6f47b 2703mips64vr-*-elf* | mips64vrel-*-elf*)
207bf79d 2704 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/vr.h mips/elf.h"
5ce6f47b 2705 tmake_file=mips/t-vr
c4023c19 2706 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
5ce6f47b 2707 ;;
74826b0f 2708mips64orion-*-elf* | mips64orionel-*-elf*)
207bf79d 2709 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elforion.h mips/elf.h"
45b86625 2710 tmake_file="mips/t-elf"
4ecfc7e3 2711 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_O64"
61ed06c3 2712 ;;
bc98ef7f 2713mips*-*-rtems*)
207bf79d 2714 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/rtems.h rtems.h"
aefe4056 2715 tmake_file="${tmake_file} mips/t-elf mips/t-rtems"
61ed06c3 2716 ;;
55047c9d 2717mips-wrs-vxworks)
efa58006 2718 tm_file="elfos.h ${tm_file} mips/elf.h vx-common.h vxworks.h mips/vxworks.h"
55047c9d 2719 tmake_file="${tmake_file} mips/t-vxworks"
55047c9d 2720 ;;
74826b0f 2721mipstx39-*-elf* | mipstx39el-*-elf*)
207bf79d 2722 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/r3900.h mips/elf.h"
45b86625 2723 tmake_file="mips/t-r3900"
61ed06c3 2724 ;;
bcf684c7 2725mmix-knuth-mmixware)
207bf79d 2726 tm_file="${tm_file} newlib-stdint.h"
207bf79d 2727 use_gcc_stdint=wrap
bcf684c7 2728 ;;
61ed06c3 2729mn10300-*-*)
d158c3f7 2730 tm_file="elfos.h newlib-stdint.h ${tm_file}"
61ed06c3 2731 use_collect2=no
207bf79d 2732 use_gcc_stdint=wrap
61ed06c3 2733 ;;
e8aa9f55 2734msp430-*-*)
f6a83b4a
DD
2735 tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
2736 c_target_objs="msp430-c.o"
2737 cxx_target_objs="msp430-c.o"
f6a83b4a 2738 tmake_file="${tmake_file} msp430/t-msp430"
e37e2bb1
JL
2739 extra_objs="${extra_objs} msp430-devices.o"
2740 extra_gcc_objs="driver-msp430.o msp430-devices.o"
c46d1717 2741 # Enable .init_array unless it has been explicitly disabled.
378a578a
JL
2742 # The MSP430 EABI mandates the use of .init_array, and the Newlib CRT
2743 # code since mid-2019 expects it.
c46d1717
JL
2744 if test x${disable_initfini_array} != xyes; then
2745 gcc_cv_initfini_array=yes
2746 fi
e8aa9f55
JL
2747 case ${target} in
2748 msp430-*-elfbare)
2749 # __cxa_atexit increases code size, and we don't need to support
2750 # dynamic shared objects on MSP430, so regular Newlib atexit is a
2751 # fine replacement as it also supports registration of more than 32
2752 # functions.
2753 default_use_cxa_atexit=no
2754 # This target does not match the generic *-*-elf case above which
2755 # sets use_gcc_stdint=wrap, so explicitly set it here.
2756 use_gcc_stdint=wrap
2757 ;;
2758 esac
f6a83b4a 2759 ;;
cf3cd43d 2760nds32*-*-*)
9304f876
CJW
2761 target_cpu_default="0"
2762 tm_defines="${tm_defines}"
cf3cd43d
CJW
2763 case ${target} in
2764 nds32le*-*-*)
2765 ;;
2766 nds32be-*-*)
2767 target_cpu_default="${target_cpu_default}|MASK_BIG_ENDIAN"
2768 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2769 ;;
2770 esac
2771 case ${target} in
2772 nds32*-*-elf*)
2773 tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file} nds32/elf.h nds32/nds32_intrinsic.h"
2774 tmake_file="nds32/t-nds32 nds32/t-elf"
2775 ;;
2776 nds32*-*-linux*)
2777 tm_file="dbxelf.h elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h nds32/linux.h nds32/nds32_intrinsic.h"
2778 tmake_file="${tmake_file} nds32/t-nds32 nds32/t-linux"
3da4a68a 2779 gcc_cv_initfini_array=yes
cf3cd43d
CJW
2780 ;;
2781 esac
7c32ef41 2782
cf3cd43d
CJW
2783 # Handle --enable-default-relax setting.
2784 if test x${enable_default_relax} = xyes; then
2785 tm_defines="${tm_defines} TARGET_DEFAULT_RELAX=1"
2786 fi
7c32ef41
MC
2787 # Handle --with-ext-dsp
2788 if test x${with_ext_dsp} = xyes; then
2789 tm_defines="${tm_defines} TARGET_DEFAULT_EXT_DSP=1"
2790 fi
9304f876 2791 ;;
e430824f
CLT
2792nios2-*-*)
2793 tm_file="elfos.h ${tm_file}"
2794 tmake_file="${tmake_file} nios2/t-nios2"
2795 case ${target} in
2796 nios2-*-linux*)
2797 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h nios2/linux.h "
2798 ;;
2799 nios2-*-elf*)
2800 tm_file="${tm_file} newlib-stdint.h nios2/elf.h"
2801 extra_options="${extra_options} nios2/elf.opt"
2802 ;;
00020dda
SH
2803 nios2-*-rtems*)
2804 tm_file="${tm_file} newlib-stdint.h nios2/rtems.h rtems.h"
2805 tmake_file="${tmake_file} t-rtems nios2/t-rtems"
2806 ;;
e430824f
CLT
2807 esac
2808 ;;
738f2522
BS
2809nvptx-*)
2810 tm_file="${tm_file} newlib-stdint.h"
52956fbc 2811 use_gcc_stdint=wrap
738f2522 2812 tmake_file="nvptx/t-nvptx"
1f83528e
TS
2813 if test x$enable_as_accelerator = xyes; then
2814 extra_programs="${extra_programs} mkoffload\$(exeext)"
2815 tm_file="${tm_file} nvptx/offload.h"
2816 fi
738f2522 2817 ;;
3965b35f
SH
2818or1k*-*-*)
2819 tm_file="elfos.h ${tm_file}"
2820 tmake_file="${tmake_file} or1k/t-or1k"
2821 # Force .init_array support. The configure script cannot always
2822 # automatically detect that GAS supports it, yet we require it.
2823 gcc_cv_initfini_array=yes
2824
2825 # Handle --with-multilib-list=...
2826 or1k_multilibs="${with_multilib_list}"
2827 if test "$or1k_multilibs" = "default"; then
2828 or1k_multilibs="mcmov,msoft-mul,msoft-div"
2829 fi
2830 or1k_multilibs=`echo $or1k_multilibs | sed -e 's/,/ /g'`
2831 for or1k_multilib in ${or1k_multilibs}; do
2832 case ${or1k_multilib} in
2833 mcmov | msext | msfimm | \
1e2e81c1 2834 mror | mrori | \
44080af9 2835 mhard-float | mdouble-float | munordered-float | msoft-float | \
3965b35f
SH
2836 mhard-div | mhard-mul | \
2837 msoft-div | msoft-mul )
2838 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${or1k_multilib}"
2839 ;;
2840 *)
2841 echo "--with-multilib-list=${with_multilib_list} not supported."
2842 exit 1
2843 esac
2844 done
2845 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2846
2847 case ${target} in
2848 or1k*-*-linux*)
2849 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h"
2850 tm_file="${tm_file} or1k/linux.h"
2851 ;;
2852 or1k*-*-elf*)
2853 tm_file="${tm_file} newlib-stdint.h or1k/elf.h"
2854 extra_options="${extra_options} or1k/elf.opt"
2855 ;;
2856 or1k*-*-rtems*)
2857 tm_file="${tm_file} newlib-stdint.h or1k/rtems.h rtems.h"
2858 tmake_file="${tmake_file} or1k/t-rtems"
2859 ;;
2860 esac
2861 ;;
61ed06c3 2862pdp11-*-*)
207bf79d
JM
2863 tm_file="${tm_file} newlib-stdint.h"
2864 use_gcc_stdint=wrap
61ed06c3 2865 ;;
ca11c37c
ZW
2866# port not yet contributed
2867#powerpc-*-openbsd*)
569dc494 2868# tmake_file="${tmake_file} rs6000/t-fprules"
ca11c37c
ZW
2869# extra_headers=
2870# ;;
18922061 2871powerpc-*-darwin*)
c2ff7104 2872 extra_options="${extra_options} ${cpu_type}/darwin.opt"
f0b81cbc 2873 case ${target} in
c2ff7104
IS
2874 *-darwin1[0-9]* | *-darwin9*)
2875 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2876 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2877 ;;
2878 *-darwin8*)
2879 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2880 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
ed5b9f96
GK
2881 ;;
2882 *-darwin7*)
c2ff7104 2883 tm_file="${tm_file} ${cpu_type}/darwin7.h"
ed5b9f96 2884 ;;
c2ff7104
IS
2885 *-darwin[456]*)
2886 # Earlier - ingle arch, with 32b only
2887 # OS X 10.0, the first edition is Darwin4
ed5b9f96 2888 ;;
f0b81cbc 2889 esac
b040f2be 2890 tmake_file="${tmake_file} t-slibgcc"
18922061 2891 ;;
b8ec3cc8 2892powerpc64-*-darwin*)
b8ec3cc8 2893 extra_options="${extra_options} ${cpu_type}/darwin.opt"
c2ff7104
IS
2894 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
2895 tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h"
b8ec3cc8 2896 ;;
a26f86dc 2897powerpc*-*-freebsd*)
62045234 2898 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h ${fbsd_tm_file} rs6000/sysv4.h"
78f5898b 2899 extra_options="${extra_options} rs6000/sysv4.opt"
a26f86dc 2900 tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
2a418323
PK
2901 case ${target} in
2902 powerpc*le-*-*)
2903 tm_file="${tm_file} rs6000/sysv4le.h" ;;
2904 esac
252a969e 2905 case ${target} in
a26f86dc
AT
2906 powerpc64*)
2907 tm_file="${tm_file} rs6000/default64.h rs6000/freebsd64.h"
2908 tmake_file="${tmake_file} rs6000/t-freebsd64"
2909 extra_options="${extra_options} rs6000/linux64.opt"
15bbad92
AT
2910 if test $fbsd_major -ge 13; then
2911 tm_defines="${tm_defines} TARGET_FREEBSD32_SECURE_PLT=1"
2912 fi
a26f86dc
AT
2913 ;;
2914 *)
15bbad92
AT
2915 if test $fbsd_major -ge 13; then
2916 tm_file="rs6000/secureplt.h ${tm_file}"
2917 fi
a26f86dc
AT
2918 tm_file="${tm_file} rs6000/freebsd.h"
2919 ;;
2920 esac
b91da81f 2921 ;;
edf1b3f3 2922powerpc-*-netbsd*)
62045234 2923 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h ${nbsd_tm_file} freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h"
a4714d14 2924 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
a4967b8d 2925 tmake_file="${tmake_file} rs6000/t-netbsd"
78f5898b 2926 extra_options="${extra_options} rs6000/sysv4.opt"
edf1b3f3 2927 ;;
cf6ede82 2928powerpc-*-eabisimaltivec*)
62045234 2929 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"
78f5898b 2930 extra_options="${extra_options} rs6000/sysv4.opt"
569dc494 2931 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
207bf79d 2932 use_gcc_stdint=wrap
cf6ede82 2933 ;;
61ed06c3 2934powerpc-*-eabisim*)
62045234 2935 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"
78f5898b 2936 extra_options="${extra_options} rs6000/sysv4.opt"
569dc494 2937 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
207bf79d 2938 use_gcc_stdint=wrap
61ed06c3
HPN
2939 ;;
2940powerpc-*-elf*)
62045234 2941 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h"
78f5898b 2942 extra_options="${extra_options} rs6000/sysv4.opt"
569dc494 2943 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
61ed06c3 2944 ;;
10baca6b 2945powerpc-*-eabialtivec*)
62045234 2946 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"
78f5898b 2947 extra_options="${extra_options} rs6000/sysv4.opt"
569dc494 2948 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
207bf79d 2949 use_gcc_stdint=wrap
10baca6b 2950 ;;
61ed06c3 2951powerpc-*-eabi*)
62045234 2952 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"
78f5898b 2953 extra_options="${extra_options} rs6000/sysv4.opt"
569dc494 2954 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
207bf79d 2955 use_gcc_stdint=wrap
61ed06c3
HPN
2956 ;;
2957powerpc-*-rtems*)
62045234 2958 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"
17691698 2959 extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
aefe4056 2960 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-rtems rs6000/t-ppccomm"
61ed06c3 2961 ;;
b9a7eb5d 2962powerpc*-*-linux*)
426a04b8 2963 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h freebsd-spec.h rs6000/sysv4.h"
78f5898b 2964 extra_options="${extra_options} rs6000/sysv4.opt"
864396ff 2965 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm"
9193fb05 2966 extra_objs="$extra_objs rs6000-linux.o"
b9a7eb5d
AM
2967 case ${target} in
2968 powerpc*le-*-*)
93ed07e2 2969 tm_file="${tm_file} rs6000/sysv4le.h" ;;
b9a7eb5d 2970 esac
864396ff
AM
2971 case ${target}:${with_cpu} in
2972 powerpc64*: | powerpc64*:native) cpu_is_64bit=yes ;;
2973 esac
2974 maybe_biarch=${cpu_is_64bit}
2975 case ${enable_targets} in
2976 *powerpc64*) maybe_biarch=yes ;;
b9b1573b 2977 all) maybe_biarch=yes ;;
864396ff 2978 esac
864396ff
AM
2979 case ${target}:${enable_targets}:${maybe_biarch} in
2980 powerpc64-* | powerpc-*:*:yes | *:*powerpc64-*:yes | *:all:yes \
2981 | powerpc64le*:*powerpcle* | powerpc64le*:*powerpc-* \
2982 | powerpcle-*:*powerpc64le*:yes)
a8e04fe6
AM
2983 if test x$cpu_is_64bit = xyes; then
2984 tm_file="${tm_file} rs6000/default64.h"
2985 fi
207bf79d 2986 tm_file="rs6000/biarch64.h ${tm_file} rs6000/linux64.h glibc-stdint.h"
a8e04fe6 2987 tmake_file="$tmake_file rs6000/t-linux64"
93ed07e2
AM
2988 case ${target} in
2989 powerpc*le-*-*)
2990 tmake_file="$tmake_file rs6000/t-linux64le"
2991 case ${enable_targets} in
2992 all | *powerpc64-* | *powerpc-*)
2993 tmake_file="$tmake_file rs6000/t-linux64lebe" ;;
2994 esac ;;
2995 *)
2996 case ${enable_targets} in
2997 all | *powerpc64le-* | *powerpcle-*)
2998 tmake_file="$tmake_file rs6000/t-linux64bele" ;;
2999 esac ;;
3000 esac
f75aac9e 3001 extra_options="${extra_options} rs6000/linux64.opt"
a8e04fe6 3002 ;;
864396ff
AM
3003 powerpc64*)
3004 tm_file="${tm_file} rs6000/default64.h rs6000/linux64.h glibc-stdint.h"
3005 extra_options="${extra_options} rs6000/linux64.opt"
3006 tmake_file="${tmake_file} rs6000/t-linux"
3007 ;;
a8e04fe6 3008 *)
207bf79d 3009 tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
864396ff 3010 tmake_file="${tmake_file} rs6000/t-ppcos rs6000/t-linux"
a8e04fe6
AM
3011 ;;
3012 esac
457d1d00 3013 case ${target} in
be26142a
PB
3014 powerpc*-*-linux*ppc476*)
3015 tm_file="${tm_file} rs6000/476.h"
3016 extra_options="${extra_options} rs6000/476.opt" ;;
457d1d00
AM
3017 powerpc*-*-linux*altivec*)
3018 tm_file="${tm_file} rs6000/linuxaltivec.h" ;;
457d1d00 3019 esac
0d6be0b1
GR
3020 case ${target} in
3021 *-linux*-musl*)
3022 enable_secureplt=yes ;;
3023 esac
7f970b70
AM
3024 if test x${enable_secureplt} = xyes; then
3025 tm_file="rs6000/secureplt.h ${tm_file}"
3026 fi
61ed06c3 3027 ;;
17867980
DR
3028powerpc*-wrs-vxworks7r*)
3029
3030 # Wind River 7 post SR0600 is mostly like Linux so we setup
3031 # our config in a very similar fashion and adjust to a few
3032 # specificities.
3033
3034 # The system compiler is configured with secureplt by default.
3035 tm_file="${tm_file} rs6000/secureplt.h"
3036
3037 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h"
3038 tm_file="${tm_file} rs6000/sysv4.h rs6000/biarch64.h rs6000/default64.h rs6000/linux64.h"
3039 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3040
3041 extra_options="${extra_options} rs6000/sysv4.opt linux.opt rs6000/linux64.opt"
3042
3043 tmake_file="${tmake_file} t-linux rs6000/t-linux64 rs6000/t-fprules rs6000/t-ppccomm"
3044 tmake_file="${tmake_file} rs6000/t-vxworks"
3045
3046 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
3047 extra_objs="$extra_objs linux.o rs6000-linux.o"
3048 ;;
611e7036 3049powerpc-wrs-vxworks*)
62045234 3050 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h rs6000/sysv4.h"
569dc494 3051 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm rs6000/t-vxworks"
78f5898b 3052 extra_options="${extra_options} rs6000/sysv4.opt"
41c1b913 3053 extra_headers="${extra_headers} ppc-asm.h"
2eab15c9 3054 case ${target} in
3a8fe7c6 3055 *-vxworksmils*)
c725f69c 3056 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksmils.h"
3a8fe7c6
OH
3057 tmake_file="${tmake_file} rs6000/t-vxworksmils"
3058 ;;
2eab15c9 3059 *-vxworksae*)
c725f69c 3060 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksae.h"
2eab15c9
PE
3061 tmake_file="${tmake_file} rs6000/t-vxworksae"
3062 ;;
3063 *-vxworks*)
c725f69c 3064 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
2eab15c9
PE
3065 ;;
3066 esac
4977bab6 3067 ;;
4f587cb0
AN
3068powerpc-*-lynxos*)
3069 xm_defines=POSIX
62045234 3070 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h rs6000/sysv4.h rs6000/lynx.h lynx.h"
4f587cb0 3071 tmake_file="t-lynx rs6000/t-lynx"
78f5898b 3072 extra_options="${extra_options} rs6000/sysv4.opt lynx.opt"
4f587cb0
AN
3073 thread_file=lynx
3074 gnu_ld=yes
3075 gas=yes
3076 ;;
61ed06c3 3077powerpcle-*-elf*)
62045234 3078 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"
569dc494 3079 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
78f5898b 3080 extra_options="${extra_options} rs6000/sysv4.opt"
61ed06c3
HPN
3081 ;;
3082powerpcle-*-eabisim*)
62045234 3083 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"
569dc494 3084 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
78f5898b 3085 extra_options="${extra_options} rs6000/sysv4.opt"
207bf79d 3086 use_gcc_stdint=wrap
61ed06c3
HPN
3087 ;;
3088powerpcle-*-eabi*)
62045234 3089 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"
569dc494 3090 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
78f5898b 3091 extra_options="${extra_options} rs6000/sysv4.opt"
207bf79d 3092 use_gcc_stdint=wrap
61ed06c3 3093 ;;
8d2af3a2
DD
3094pru*-*-*)
3095 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3096 tmake_file="${tmake_file} pru/t-pru"
3097 extra_objs="pru-pragma.o pru-passes.o"
3098 use_gcc_stdint=wrap
3099 ;;
74fc2a2b 3100rs6000-ibm-aix7.1.* | powerpc-ibm-aix7.1.*)
51fbbb92 3101 tmake_file="rs6000/t-aix52 t-slibgcc"
6643d236
DE
3102 if test x$cpu_is_64bit = xyes; then
3103 tm_file="${tm_file} rs6000/biarch64.h"
3104 tmake_file="rs6000/t-aix64 t-slibgcc"
3105 fi
3106 tm_file="${tm_file} rs6000/aix.h rs6000/aix71.h rs6000/xcoff.h rs6000/aix-stdint.h"
74fc2a2b
DE
3107 extra_options="${extra_options} rs6000/aix64.opt"
3108 use_collect2=yes
3109 thread_file='aix'
3110 use_gcc_stdint=wrap
74fc2a2b
DE
3111 default_use_cxa_atexit=yes
3112 ;;
39667263 3113rs6000-ibm-aix7.2.* | powerpc-ibm-aix7.2.*)
74fc2a2b 3114 tmake_file="rs6000/t-aix52 t-slibgcc"
47ddb895 3115 if test x$cpu_is_64bit = xyes; then
6643d236 3116 tm_file="${tm_file} rs6000/biarch64.h"
47ddb895
DE
3117 tmake_file="rs6000/t-aix64 t-slibgcc"
3118 fi
3119 tm_file="${tm_file} rs6000/aix.h rs6000/aix72.h rs6000/xcoff.h rs6000/aix-stdint.h"
51fbbb92
DE
3120 extra_options="${extra_options} rs6000/aix64.opt"
3121 use_collect2=yes
3122 thread_file='aix'
3123 use_gcc_stdint=wrap
39667263
DE
3124 default_use_cxa_atexit=yes
3125 ;;
3126rs6000-ibm-aix[789].* | powerpc-ibm-aix[789].*)
3127 tmake_file="rs6000/t-aix52 t-slibgcc"
3128 if test x$cpu_is_64bit = xyes; then
3129 tm_file="${tm_file} rs6000/biarch64.h"
3130 tmake_file="rs6000/t-aix64 t-slibgcc"
3131 fi
3132 tm_file="${tm_file} rs6000/aix.h rs6000/aix73.h rs6000/xcoff.h rs6000/aix-stdint.h"
3133 extra_options="${extra_options} rs6000/aix64.opt"
3134 use_collect2=yes
3135 thread_file='aix'
3136 use_gcc_stdint=wrap
b9584cb5 3137 default_use_cxa_atexit=yes
ba6a1b78 3138 ;;
85b8555e 3139rl78-*-elf*)
052bdc7f 3140 tm_file="elfos.h newlib-stdint.h ${tm_file}"
85b8555e
DD
3141 target_has_targetm_common=no
3142 c_target_objs="rl78-c.o"
3143 cxx_target_objs="rl78-c.o"
3144 tmake_file="${tmake_file} rl78/t-rl78"
3145 ;;
65a324b4 3146rx-*-elf*)
80cf2e08 3147 tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
65a324b4 3148 tmake_file="${tmake_file} rx/t-rx"
76aaa9cd
YS
3149 extra_options="${extra_options} rx/elf.opt"
3150 ;;
3151rx-*-linux*)
3152 tm_file="elfos.h linux.h glibc-stdint.h rx/linux.h ../../libgcc/config/rx/rx-abi.h"
3153 tmake_file="${tmake_file} rx/t-linux"
65a324b4 3154 ;;
0e5a4ad8 3155s390-*-linux*)
8e38461c 3156 tm_file="s390/s390.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3af82a61
AK
3157 c_target_objs="${c_target_objs} s390-c.o"
3158 cxx_target_objs="${cxx_target_objs} s390-c.o"
f3054223
AL
3159 if test x$enable_targets = xall; then
3160 tmake_file="${tmake_file} s390/t-linux64"
3161 fi
3af82a61 3162 tmake_file="${tmake_file} s390/t-s390"
9628a767 3163 ;;
0e5a4ad8 3164s390x-*-linux*)
8e38461c 3165 tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
ed9cbf7c 3166 tm_p_file="linux-protos.h s390/s390-protos.h"
3af82a61
AK
3167 c_target_objs="${c_target_objs} s390-c.o"
3168 cxx_target_objs="${cxx_target_objs} s390-c.o"
70eeb10b 3169 md_file=s390/s390.md
1c0ca89d 3170 extra_modes=s390/s390-modes.def
70eeb10b 3171 out_file=s390/s390.c
3af82a61 3172 tmake_file="${tmake_file} s390/t-linux64 s390/t-s390"
9628a767 3173 ;;
24fe22c9 3174s390x-ibm-tpf*)
48c16b28 3175 tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h glibc-stdint.h s390/tpf.h"
3af82a61
AK
3176 tm_p_file=s390/s390-protos.h
3177 c_target_objs="${c_target_objs} s390-c.o"
3178 cxx_target_objs="${cxx_target_objs} s390-c.o"
3179 md_file=s390/s390.md
3180 extra_modes=s390/s390-modes.def
3181 out_file=s390/s390.c
3182 thread_file='tpf'
a8ba31f2 3183 extra_options="${extra_options} s390/tpf.opt"
3af82a61 3184 tmake_file="${tmake_file} s390/t-s390"
24fe22c9 3185 ;;
cd985f66 3186sh-*-elf* | sh[12346l]*-*-elf* | \
93fea8d3 3187 sh-*-linux* | sh[2346lbe]*-*-linux* | \
bc6d9014 3188 sh-*-netbsdelf* | shl*-*-netbsdelf*)
da28a3b9
JR
3189 tmake_file="${tmake_file} sh/t-sh sh/t-elf"
3190 if test x${with_endian} = x; then
3191 case ${target} in
3192 sh[1234]*be-*-* | sh[1234]*eb-*-*) with_endian=big ;;
3193 shbe-*-* | sheb-*-*) with_endian=big,little ;;
3194 sh[1234]l* | sh[34]*-*-linux*) with_endian=little ;;
bc6d9014
OE
3195 shl* | sh*-*-linux* | \
3196 sh-superh-elf) with_endian=little,big ;;
da28a3b9
JR
3197 sh[1234]*-*-*) with_endian=big ;;
3198 *) with_endian=big,little ;;
3199 esac
3200 fi
aca600aa
AS
3201 # TM_ENDIAN_CONFIG is used by t-sh to determine multilibs.
3202 # First word : the default endian.
3203 # Second word: the secondary endian (optional).
da28a3b9 3204 case ${with_endian} in
aca600aa
AS
3205 big) TM_ENDIAN_CONFIG=mb ;;
3206 little) TM_ENDIAN_CONFIG=ml ;;
3207 big,little) TM_ENDIAN_CONFIG="mb ml" ;;
3208 little,big) TM_ENDIAN_CONFIG="ml mb" ;;
da28a3b9
JR
3209 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
3210 esac
3211 case ${with_endian} in
3212 little*) tm_file="sh/little.h ${tm_file}" ;;
3213 esac
9e08f9e2 3214 tm_file="${tm_file} dbxelf.h elfos.h sh/elf.h"
b01bc573 3215 case ${target} in
da28a3b9 3216 sh*-*-linux*) tmake_file="${tmake_file} sh/t-linux"
1e44e857
DJ
3217 if test x$enable_fdpic = xyes; then
3218 tm_defines="$tm_defines FDPIC_DEFAULT=1"
3219 fi
8e38461c 3220 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h sh/linux.h" ;;
a4714d14 3221 sh*-*-netbsd*)
dfe2677b 3222 tm_file="${tm_file} ${nbsd_tm_file} sh/netbsd-elf.h"
a4714d14
JM
3223 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3224
3225 ;;
c68e4eed
CB
3226 sh*-superh-elf) if test x$with_libgloss != xno; then
3227 with_libgloss=yes
3228 tm_file="${tm_file} sh/newlib.h"
3229 fi
2d606e03 3230 tm_file="${tm_file} sh/embed-elf.h"
c68e4eed 3231 tm_file="${tm_file} sh/superh.h"
c68e4eed 3232 extra_options="${extra_options} sh/superh.opt" ;;
8c1aaf26
R
3233 *) if test x$with_newlib = xyes \
3234 && test x$with_libgloss = xyes; then
3235 tm_file="${tm_file} sh/newlib.h"
3236 fi
3237 tm_file="${tm_file} sh/embed-elf.h" ;;
da28a3b9
JR
3238 esac
3239 case ${target} in
da28a3b9 3240 *-*-netbsd)
da28a3b9 3241 ;;
207bf79d
JM
3242 *-*-elf*)
3243 tm_file="${tm_file} newlib-stdint.h"
3244 ;;
8bc6e101 3245 esac
da28a3b9
JR
3246 # sed el/eb endian suffixes away to avoid confusion with sh[23]e
3247 case `echo ${target} | sed 's/e[lb]-/-/'` in
312209c6
AO
3248 sh4a_single_only*) sh_cpu_target=sh4a-single-only ;;
3249 sh4a_single*) sh_cpu_target=sh4a-single ;;
3250 sh4a_nofpu*) sh_cpu_target=sh4a-nofpu ;;
3251 sh4al) sh_cpu_target=sh4al ;;
3252 sh4a*) sh_cpu_target=sh4a ;;
da28a3b9
JR
3253 sh4_single_only*) sh_cpu_target=sh4-single-only ;;
3254 sh4_single*) sh_cpu_target=sh4-single ;;
3255 sh4_nofpu*) sh_cpu_target=sh4-nofpu ;;
3256 sh4* | sh-superh-*) sh_cpu_target=sh4 ;;
3257 sh3e*) sh_cpu_target=sh3e ;;
3258 sh*-*-netbsd* | sh3*) sh_cpu_target=sh3 ;;
157371cf
AO
3259 sh2a_single_only*) sh_cpu_target=sh2a-single-only ;;
3260 sh2a_single*) sh_cpu_target=sh2a-single ;;
3261 sh2a_nofpu*) sh_cpu_target=sh2a-nofpu ;;
3262 sh2a*) sh_cpu_target=sh2a ;;
da28a3b9
JR
3263 sh2e*) sh_cpu_target=sh2e ;;
3264 sh2*) sh_cpu_target=sh2 ;;
3265 *) sh_cpu_target=sh1 ;;
8f48afc1 3266 esac
8c1aaf26
R
3267 # did the user say --without-fp ?
3268 if test x$with_fp = xno; then
3269 case ${sh_cpu_target} in
8c1aaf26
R
3270 sh4al | sh1) ;;
3271 sh4a* ) sh_cpu_target=sh4a-nofpu ;;
3272 sh4*) sh_cpu_target=sh4-nofpu ;;
3273 sh3*) sh_cpu_target=sh3 ;;
3274 sh2a*) sh_cpu_target=sh2a-nofpu ;;
3275 sh2*) sh_cpu_target=sh2 ;;
3276 *) echo --without-fp not available for $target: ignored
3277 esac
3278 tm_defines="$tm_defines STRICT_NOFPU=1"
3279 fi
da28a3b9
JR
3280 sh_cpu_default="`echo $with_cpu|sed s/^m/sh/|tr A-Z_ a-z-`"
3281 case $sh_cpu_default in
157371cf 3282 sh2a-single-only | sh2a-single | sh2a-nofpu | sh2a | \
312209c6 3283 sh4a-single-only | sh4a-single | sh4a-nofpu | sh4a | sh4al | \
27a0ce7d 3284 sh4-single-only | sh4-single | sh4-nofpu | sh4 | sh4-300 | \
bf09b512 3285 sh3e | sh3 | sh2e | sh2 | sh1) ;;
da28a3b9
JR
3286 "") sh_cpu_default=${sh_cpu_target} ;;
3287 *) echo "with_cpu=$with_cpu not supported"; exit 1 ;;
dbf87f32 3288 esac
da28a3b9 3289 sh_multilibs=${with_multilib_list}
aca600aa 3290 if test "$sh_multilibs" = "default" ; then
da28a3b9
JR
3291 case ${target} in
3292 sh[1234]*) sh_multilibs=${sh_cpu_target} ;;
da28a3b9 3293 sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
8f6d1c86 3294 sh*-*-linux*) sh_multilibs=m1,m2,m2a,m3e,m4 ;;
da28a3b9 3295 sh*-*-netbsd*) sh_multilibs=m3,m3e,m4 ;;
157371cf 3296 *) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single ;;
da28a3b9 3297 esac
8c1aaf26
R
3298 if test x$with_fp = xno; then
3299 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`"
3300 fi
da28a3b9 3301 fi
25e651ca 3302 target_cpu_default=SELECT_`echo ${sh_cpu_default}|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`
da28a3b9 3303 tm_defines=${tm_defines}' SH_MULTILIB_CPU_DEFAULT=\"'`echo $sh_cpu_default|sed s/sh/m/`'\"'
aca600aa 3304 tm_defines="$tm_defines SUPPORT_`echo $sh_cpu_default | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
47e5ff44 3305 sh_multilibs=`echo $sh_multilibs | sed -e 's/,/ /g' -e 's/^[Ss][Hh]/m/' -e 's/ [Ss][Hh]/ m/g' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-`
da28a3b9
JR
3306 for sh_multilib in ${sh_multilibs}; do
3307 case ${sh_multilib} in
aca600aa
AS
3308 m1 | m2 | m2e | m3 | m3e | \
3309 m4 | m4-single | m4-single-only | m4-nofpu | m4-300 |\
3310 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al | \
bc6d9014 3311 m2a | m2a-single | m2a-single-only | m2a-nofpu)
aca600aa
AS
3312 # TM_MULTILIB_CONFIG is used by t-sh for the non-endian multilib definition
3313 # It is passed to MULTIILIB_OPTIONS verbatim.
3314 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG}/${sh_multilib}"
3315 tm_defines="$tm_defines SUPPORT_`echo $sh_multilib | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
da28a3b9 3316 ;;
aca600aa
AS
3317 \!*) # TM_MULTILIB_EXCEPTIONS_CONFIG is used by t-sh
3318 # It is passed the MULTILIB_EXCEPTIONS verbatim.
3319 TM_MULTILIB_EXCEPTIONS_CONFIG="${TM_MULTILIB_EXCEPTIONS_CONFIG} `echo $sh_multilib | sed 's/^!//'`" ;;
da28a3b9
JR
3320 *)
3321 echo "with_multilib_list=${sh_multilib} not supported."
3322 exit 1
3323 ;;
3324 esac
3325 done
aca600aa 3326 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's:^/::'`
25e651ca 3327 if test x${enable_incomplete_targets} = xyes ; then
bc6d9014 3328 tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1"
da28a3b9 3329 fi
44509946
AS
3330 tm_file="$tm_file ./sysroot-suffix.h"
3331 tmake_file="$tmake_file t-sysroot-suffix"
fa5322fa 3332 ;;
314733e2 3333sh-*-rtems*)
aefe4056 3334 tmake_file="${tmake_file} sh/t-sh sh/t-rtems"
9e08f9e2 3335 tm_file="${tm_file} dbxelf.h elfos.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h newlib-stdint.h"
314733e2 3336 ;;
55047c9d 3337sh-wrs-vxworks)
5f73c6cc 3338 tmake_file="$tmake_file sh/t-sh sh/t-vxworks"
9e08f9e2 3339 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h vx-common.h vxworks.h sh/vxworks.h"
55047c9d 3340 ;;
61ed06c3 3341sparc-*-elf*)
ec047df4 3342 tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp-elf.h"
07981468
KE
3343 case ${target} in
3344 *-leon-*)
8d12174d 3345 tmake_file="sparc/t-sparc sparc/t-leon"
07981468
KE
3346 ;;
3347 *-leon[3-9]*)
8d12174d 3348 tmake_file="sparc/t-sparc sparc/t-leon3"
07981468
KE
3349 ;;
3350 *)
8d12174d 3351 tmake_file="sparc/t-sparc sparc/t-elf"
07981468
KE
3352 ;;
3353 esac
61ed06c3 3354 ;;
ad234fc7 3355sparc-*-rtems*)
ec047df4 3356 tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
9c281312 3357 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
ad234fc7
EB
3358 ;;
3359sparc-*-linux*)
6cc7fb90 3360 tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
fe609b0f 3361 extra_options="${extra_options} sparc/long-double-switch.opt"
07981468
KE
3362 case ${target} in
3363 *-leon-*)
8d12174d 3364 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon"
07981468
KE
3365 ;;
3366 *-leon[3-9]*)
8d12174d 3367 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon3"
07981468
KE
3368 ;;
3369 *)
b040f2be 3370 tmake_file="${tmake_file} sparc/t-sparc"
07981468
KE
3371 ;;
3372 esac
5f7ca34b
DM
3373 if test x$enable_targets = xall; then
3374 tm_file="sparc/biarch64.h ${tm_file} sparc/linux64.h"
ccbdd3bc 3375 tmake_file="${tmake_file} sparc/t-linux64"
5f7ca34b
DM
3376 else
3377 tm_file="${tm_file} sparc/linux.h"
d3547cab 3378 tmake_file="${tmake_file} sparc/t-linux"
5f7ca34b 3379 fi
61ed06c3 3380 ;;
ad234fc7 3381sparc-*-netbsdelf*)
dfe2677b 3382 tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
a4714d14 3383 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
ad234fc7 3384 extra_options="${extra_options} sparc/long-double-switch.opt"
8d12174d 3385 tmake_file="${tmake_file} sparc/t-sparc"
3943fe02 3386 ;;
2587aa3b 3387sparc*-*-solaris2*)
2cf03b11 3388 tm_file="sparc/biarch64.h ${tm_file} ${sol2_tm_file} sparc/tso.h"
18167442 3389 case ${target} in
2587aa3b 3390 sparc64-*-* | sparcv9-*-*)
7c7dae65 3391 tm_file="sparc/default64.h ${tm_file}"
207bf79d 3392 ;;
2587aa3b
EB
3393 *)
3394 test x$with_cpu != x || with_cpu=v9
ec23ed60 3395 ;;
18167442 3396 esac
2cf03b11 3397 tmake_file="${tmake_file} sparc/t-sparc sparc/t-sol2"
61ed06c3 3398 ;;
1910440e 3399sparc-wrs-vxworks)
ec047df4 3400 tm_file="${tm_file} elfos.h sparc/sysv4.h vx-common.h vxworks.h sparc/vxworks.h"
8d12174d 3401 tmake_file="${tmake_file} sparc/t-sparc sparc/t-vxworks"
1910440e 3402 ;;
61ed06c3 3403sparc64-*-elf*)
ec047df4 3404 tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h"
ae5f5715 3405 extra_options="${extra_options}"
8d12174d 3406 tmake_file="${tmake_file} sparc/t-sparc"
61ed06c3 3407 ;;
ad234fc7 3408sparc64-*-rtems*)
ec047df4 3409 tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h sparc/rtemself.h rtems.h"
ae5f5715 3410 extra_options="${extra_options}"
aefe4056 3411 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
ad234fc7
EB
3412 ;;
3413sparc64-*-linux*)
7c7dae65 3414 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"
ad234fc7 3415 extra_options="${extra_options} sparc/long-double-switch.opt"
b040f2be 3416 tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
ad234fc7 3417 ;;
c7240cbd
DB
3418sparc64-*-freebsd*|ultrasparc-*-freebsd*)
3419 tm_file="${tm_file} ${fbsd_tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/freebsd.h"
fe609b0f 3420 extra_options="${extra_options} sparc/long-double-switch.opt"
c7240cbd 3421 case "x$with_cpu" in
e0054185 3422 xultrasparc) ;;
c7240cbd
DB
3423 x) with_cpu=ultrasparc ;;
3424 *) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
3425 esac
8d12174d 3426 tmake_file="${tmake_file} sparc/t-sparc"
c7240cbd 3427 ;;
4cb7482c 3428sparc64-*-netbsd*)
4cb7482c 3429 tm_file="sparc/biarch64.h ${tm_file}"
dfe2677b 3430 tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
a4714d14 3431 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
fe609b0f 3432 extra_options="${extra_options} sparc/long-double-switch.opt"
8d12174d 3433 tmake_file="${tmake_file} sparc/t-sparc sparc/t-netbsd64"
4cb7482c 3434 ;;
ad234fc7 3435sparc64-*-openbsd*)
ec047df4 3436 tm_file="sparc/openbsd1-64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp64-elf.h"
ad234fc7 3437 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h sparc/openbsd64.h"
5369e2d4 3438 extra_options="${extra_options} openbsd.opt"
ae5f5715 3439 extra_options="${extra_options}"
ad234fc7
EB
3440 gas=yes gnu_ld=yes
3441 with_cpu=ultrasparc
8d12174d 3442 tmake_file="${tmake_file} sparc/t-sparc"
ad234fc7 3443 ;;
bcead286
BS
3444tic6x-*-elf)
3445 tm_file="elfos.h ${tm_file} c6x/elf-common.h c6x/elf.h"
3446 tm_file="${tm_file} dbxelf.h tm-dwarf2.h newlib-stdint.h"
bcead286 3447 tmake_file="c6x/t-c6x c6x/t-c6x-elf"
bcead286
BS
3448 use_collect2=no
3449 ;;
3450tic6x-*-uclinux)
3451 tm_file="elfos.h ${tm_file} gnu-user.h linux.h c6x/elf-common.h c6x/uclinux-elf.h"
3452 tm_file="${tm_file} dbxelf.h tm-dwarf2.h glibc-stdint.h"
3453 tm_file="${tm_file} ./sysroot-suffix.h"
b040f2be 3454 tmake_file="t-sysroot-suffix t-slibgcc"
bcead286 3455 tmake_file="${tmake_file} c6x/t-c6x c6x/t-c6x-elf c6x/t-c6x-uclinux"
bcead286
BS
3456 use_collect2=no
3457 ;;
341c653c 3458tilegx*-*-linux*)
dd552284
WL
3459 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h tilegx/linux.h ${tm_file}"
3460 tmake_file="${tmake_file} tilegx/t-tilegx"
92be22dc 3461 extra_objs="${extra_objs} mul-tables.o"
1efcb8c6
JM
3462 c_target_objs="${c_target_objs} tilegx-c.o"
3463 cxx_target_objs="${cxx_target_objs} tilegx-c.o"
fd199491 3464 extra_headers="feedback.h"
341c653c
WL
3465 case $target in
3466 tilegxbe-*)
3467 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
3468 ;;
3469 esac
dd552284 3470 ;;
341c653c 3471tilepro*-*-linux*)
dd552284
WL
3472 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h tilepro/linux.h ${tm_file}"
3473 tmake_file="${tmake_file} tilepro/t-tilepro"
92be22dc 3474 extra_objs="${extra_objs} mul-tables.o"
1efcb8c6
JM
3475 c_target_objs="${c_target_objs} tilepro-c.o"
3476 cxx_target_objs="${cxx_target_objs} tilepro-c.o"
fd199491 3477 extra_headers="feedback.h"
dd552284 3478 ;;
cc5476cb
RC
3479v850-*-rtems*)
3480 target_cpu_default="TARGET_CPU_generic"
18e9e7db 3481 tm_file="elfos.h v850/v850.h"
0455cd76 3482 tm_file="${tm_file} v850/rtems.h rtems.h newlib-stdint.h"
cc5476cb 3483 tmake_file="${tmake_file} v850/t-v850"
aefe4056 3484 tmake_file="${tmake_file} v850/t-rtems"
cc5476cb
RC
3485 use_collect2=no
3486 c_target_objs="v850-c.o"
3487 cxx_target_objs="v850-c.o"
3488 ;;
1dcad079
NC
3489v850*-*-*)
3490 case ${target} in
dbdbd982
NC
3491 v850e3v5-*-*)
3492 target_cpu_default="TARGET_CPU_v850e3v5"
3493 ;;
1dcad079
NC
3494 v850e2v3-*-*)
3495 target_cpu_default="TARGET_CPU_v850e2v3"
3496 ;;
3497 v850e2-*-*)
3498 target_cpu_default="TARGET_CPU_v850e2"
3499 ;;
3500 v850e1-*-* | v850es-*-*)
3501 target_cpu_default="TARGET_CPU_v850e1"
3502 ;;
3503 v850e-*-*)
3504 target_cpu_default="TARGET_CPU_v850e"
3505 ;;
3506 v850-*-*)
3507 target_cpu_default="TARGET_CPU_generic"
3508 ;;
3509 esac
18e9e7db 3510 tm_file="elfos.h newlib-stdint.h v850/v850.h"
b4378319
NC
3511 use_collect2=no
3512 c_target_objs="v850-c.o"
3513 cxx_target_objs="v850-c.o"
207bf79d 3514 use_gcc_stdint=wrap
b4378319 3515 ;;
c4e75102 3516vax-*-linux*)
8e38461c 3517 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h vax/elf.h vax/linux.h"
4ad70280 3518 extra_options="${extra_options} vax/elf.opt"
c4e75102 3519 ;;
69474c3c 3520vax-*-netbsdelf*)
dfe2677b 3521 tm_file="${tm_file} elfos.h ${nbsd_tm_file} vax/elf.h vax/netbsd-elf.h"
4ad70280 3522 extra_options="${extra_options} netbsd.opt netbsd-elf.opt vax/elf.opt"
dfe2677b 3523 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
69474c3c 3524 ;;
0969ec7d
EB
3525visium-*-elf*)
3526 tm_file="dbxelf.h elfos.h ${tm_file} visium/elf.h newlib-stdint.h"
3527 tmake_file="visium/t-visium visium/t-crtstuff"
3528 ;;
14d269bb
GK
3529xstormy16-*-elf)
3530 # For historical reasons, the target files omit the 'x'.
5519175f 3531 tm_file="dbxelf.h elfos.h newlib-stdint.h stormy16/stormy16.h"
14d269bb 3532 tm_p_file=stormy16/stormy16-protos.h
64ac3c33 3533 tm_d_file="elfos.h stormy16/stormy16.h"
14d269bb
GK
3534 md_file=stormy16/stormy16.md
3535 out_file=stormy16/stormy16.c
d45d2353 3536 extra_options=stormy16/stormy16.opt
14d269bb 3537 tmake_file="stormy16/t-stormy16"
14d269bb 3538 ;;
6d656178 3539xtensa*-*-elf*)
d158c3f7 3540 tm_file="${tm_file} elfos.h newlib-stdint.h xtensa/elf.h"
4933ae74 3541 extra_options="${extra_options} xtensa/elf.opt"
03984308 3542 ;;
6d656178 3543xtensa*-*-linux*)
d158c3f7 3544 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/linux.h"
5f73c6cc 3545 tmake_file="${tmake_file} xtensa/t-xtensa"
03984308 3546 ;;
4a0a9457 3547xtensa*-*-uclinux*)
d158c3f7 3548 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/uclinux.h"
4a0a9457
MF
3549 tmake_file="${tmake_file} xtensa/t-xtensa"
3550 extra_options="${extra_options} xtensa/uclinux.opt"
3551 ;;
2beef00e 3552am33_2.0-*-linux*)
d158c3f7 3553 tm_file="mn10300/mn10300.h elfos.h gnu-user.h linux.h glibc-stdint.h mn10300/linux.h"
2beef00e 3554 gas=yes gnu_ld=yes
2beef00e
AO
3555 use_collect2=no
3556 ;;
7f05b779 3557m32c-*-rtems*)
d158c3f7 3558 tm_file="elfos.h ${tm_file} m32c/rtems.h rtems.h newlib-stdint.h"
7f05b779
JS
3559 c_target_objs="m32c-pragma.o"
3560 cxx_target_objs="m32c-pragma.o"
3561 ;;
38b2d076 3562m32c-*-elf*)
d158c3f7 3563 tm_file="elfos.h newlib-stdint.h ${tm_file}"
38b2d076
DD
3564 c_target_objs="m32c-pragma.o"
3565 cxx_target_objs="m32c-pragma.o"
38b2d076 3566 ;;
61ed06c3 3567*)
b01bc573 3568 echo "*** Configuration ${target} not supported" 1>&2
61ed06c3
HPN
3569 exit 1
3570 ;;
3571esac
3572
f6bc51cb 3573case ${target} in
f6bc51cb 3574i[34567]86-*-linux* | x86_64-*-linux*)
ab442df7 3575 tmake_file="${tmake_file} i386/t-pmm_malloc i386/t-i386"
f6bc51cb
L
3576 ;;
3577i[34567]86-*-* | x86_64-*-*)
ab442df7 3578 tmake_file="${tmake_file} i386/t-gmm_malloc i386/t-i386"
f6bc51cb 3579 ;;
c5f0fe67 3580powerpc*-*-* | rs6000-*-*)
83349046 3581 tm_file="${tm_file} ${cpu_type}/option-defaults.h"
f6bc51cb
L
3582esac
3583
ad669a1a
SN
3584# non-glibc systems
3585case ${target} in
3586*-linux-musl*)
3587 tmake_file="${tmake_file} t-musl"
3588 ;;
3589*-linux-uclibc*)
3590 tmake_file="${tmake_file} t-uclibc"
3591 ;;
3592esac
3593
f25afa93
SE
3594# Assume the existence of indirect function support and allow the use of the
3595# resolver attribute.
3596case ${target} in
3597*-*-linux*android*|*-*-linux*uclibc*|*-*-linux*musl*)
3598 ;;
e9cb89b9
ST
3599*-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
3600 ;;
3601*-*-linux* | *-*-gnu*)
f25afa93 3602 case ${target} in
d71031ff 3603 aarch64*-* | arm*-* | i[34567]86-* | powerpc*-* | s390*-* | sparc*-* | x86_64-*)
f25afa93
SE
3604 default_gnu_indirect_function=yes
3605 ;;
3606 esac
3607 ;;
3608esac
3609
87b6c18c
IV
3610# Build mkoffload tool
3611case ${target} in
3612*-intelmic-* | *-intelmicemul-*)
3613 tmake_file="${tmake_file} i386/t-intelmic"
41dbbb37 3614 tm_file="${tm_file} i386/intelmic-offload.h"
87b6c18c
IV
3615 ;;
3616esac
3617
acce4e77
JM
3618if [ "$target_has_targetcm" = "no" ]; then
3619 c_target_objs="$c_target_objs default-c.o"
3620 cxx_target_objs="$cxx_target_objs default-c.o"
3621fi
3622
c49a6962
JM
3623if [ "$common_out_file" = "" ]; then
3624 if [ "$target_has_targetm_common" = "yes" ]; then
3625 common_out_file="$cpu_type/$cpu_type-common.c"
3626 else
3627 common_out_file="default-common.c"
3628 fi
3629fi
3630
b4c522fa
IB
3631if [ "$target_has_targetdm" = "no" ]; then
3632 d_target_objs="$d_target_objs default-d.o"
3633fi
3634
73f09c99 3635# Support for --with-cpu and related options (and a few unrelated options,
a89ea0df 3636# too).
35341073
NN
3637case ${with_cpu} in
3638 yes | no)
3639 echo "--with-cpu must be passed a value" 1>&2
3640 exit 1
3641 ;;
3642esac
83079d89 3643
3fd77630
L
3644# Set arch and cpu from ${target} and ${target_noncanonical}. Set cpu
3645# to generic if there is no processor scheduler model for the target.
3646arch=
3647cpu=
4d16c0dc 3648arch_without_sse2=no
c6b9174f 3649arch_without_64bit=no
3fd77630 3650case ${target} in
1c379b78
TC
3651 i386-*-freebsd*)
3652 if test $fbsd_major -ge 6; then
3653 arch=i486
3654 else
3655 arch=i386
3656 fi
3657 cpu=generic
3658 arch_without_sse2=yes
3659 arch_without_64bit=yes
3660 ;;
8a45a00e
KW
3661 i386-*-netbsd*)
3662 arch=i486
3663 cpu=generic
3664 arch_without_sse2=yes
3665 arch_without_64bit=yes
3666 ;;
3fd77630
L
3667 i386-*-*)
3668 arch=i386
3669 cpu=i386
4d16c0dc 3670 arch_without_sse2=yes
c6b9174f 3671 arch_without_64bit=yes
3fd77630
L
3672 ;;
3673 i486-*-*)
3674 arch=i486
3675 cpu=i486
4d16c0dc 3676 arch_without_sse2=yes
c6b9174f 3677 arch_without_64bit=yes
3fd77630
L
3678 ;;
3679 i586-*-*)
4d16c0dc 3680 arch_without_sse2=yes
c6b9174f 3681 arch_without_64bit=yes
3fd77630
L
3682 case ${target_noncanonical} in
3683 k6_2-*)
3684 arch=k6-2
3685 cpu=k6-2
3686 ;;
3687 k6_3-*)
3688 arch=k6-3
3689 cpu=k6-3
3690 ;;
3691 k6-*)
3692 arch=k6
3693 cpu=k6
3694 ;;
3695 pentium_mmx-*|winchip_c6-*|winchip2-*|c3-*)
3696 arch=pentium-mmx
3697 cpu=pentium-mmx
3698 ;;
3699 *)
3700 arch=pentium
3701 cpu=pentium
3702 ;;
3703 esac
3704 ;;
3705 i686-*-* | i786-*-*)
3706 case ${target_noncanonical} in
9ce29eb0
VK
3707 znver1-*)
3708 arch=znver1
3709 cpu=znver1
3710 ;;
2901f42f
VK
3711 znver2-*)
3712 arch=znver2
3713 cpu=znver2
3714 ;;
3e2ae3ee
VK
3715 znver3-*)
3716 arch=znver3
3717 cpu=znver3
3718 ;;
ed97ad47
GG
3719 bdver4-*)
3720 arch=bdver4
3721 cpu=bdver4
3722 ;;
eb2f2b44
GG
3723 bdver3-*)
3724 arch=bdver3
3725 cpu=bdver3
3726 ;;
4d652a18
HJ
3727 bdver2-*)
3728 arch=bdver2
3729 cpu=bdver2
3730 ;;
1133125e
HJ
3731 bdver1-*)
3732 arch=bdver1
3733 cpu=bdver1
3734 ;;
14b52538
CF
3735 btver1-*)
3736 arch=btver1
3737 cpu=btver1
3738 ;;
e32bfc16
VK
3739 btver2-*)
3740 arch=btver2
3741 cpu=btver2
3742 ;;
3fd77630
L
3743 amdfam10-*|barcelona-*)
3744 arch=amdfam10
3745 cpu=amdfam10
3746 ;;
3747 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3748 arch=k8-sse3
3749 cpu=k8-sse3
3750 ;;
3751 k8-*|opteron-*|athlon64-*|athlon_fx-*)
3752 arch=k8
3753 cpu=k8
3754 ;;
3755 athlon_xp-*|athlon_mp-*|athlon_4-*)
3756 arch=athlon-4
3757 cpu=athlon-4
4d16c0dc 3758 arch_without_sse2=yes
c6b9174f 3759 arch_without_64bit=yes
3fd77630
L
3760 ;;
3761 athlon_tbird-*|athlon-*)
3762 arch=athlon
3763 cpu=athlon
4d16c0dc 3764 arch_without_sse2=yes
3fd77630
L
3765 ;;
3766 geode-*)
3767 arch=geode
3768 cpu=geode
4d16c0dc 3769 arch_without_sse2=yes
3fd77630
L
3770 ;;
3771 pentium2-*)
3772 arch=pentium2
3773 cpu=pentium2
4d16c0dc 3774 arch_without_sse2=yes
3fd77630
L
3775 ;;
3776 pentium3-*|pentium3m-*)
3777 arch=pentium3
3778 cpu=pentium3
4d16c0dc 3779 arch_without_sse2=yes
3fd77630
L
3780 ;;
3781 pentium4-*|pentium4m-*)
3782 arch=pentium4
3783 cpu=pentium4
3784 ;;
3785 prescott-*)
3786 arch=prescott
3787 cpu=prescott
3788 ;;
3789 nocona-*)
3790 arch=nocona
3791 cpu=nocona
3792 ;;
3793 atom-*)
3794 arch=atom
3795 cpu=atom
3796 ;;
0b871ccf
YR
3797 slm-*)
3798 arch=slm
3799 cpu=slm
3800 ;;
3fd77630
L
3801 core2-*)
3802 arch=core2
3803 cpu=core2
3804 ;;
1dbb04c9
L
3805 corei7-*)
3806 arch=corei7
3807 cpu=corei7
3808 ;;
35758e5b
L
3809 corei7_avx-*)
3810 arch=corei7-avx
3811 cpu=corei7-avx
3812 ;;
3fd77630
L
3813 pentium_m-*)
3814 arch=pentium-m
3815 cpu=pentium-m
3816 ;;
3817 pentiumpro-*)
3818 arch=pentiumpro
3819 cpu=pentiumpro
4d16c0dc 3820 arch_without_sse2=yes
3fd77630
L
3821 ;;
3822 *)
3823 arch=pentiumpro
3824 cpu=generic
4d16c0dc 3825 arch_without_sse2=yes
c6b9174f 3826 arch_without_64bit=yes
3fd77630
L
3827 ;;
3828 esac
3829 ;;
3830 x86_64-*-*)
3831 case ${target_noncanonical} in
9ce29eb0
VK
3832 znver1-*)
3833 arch=znver1
3834 cpu=znver1
3835 ;;
2901f42f
VK
3836 znver2-*)
3837 arch=znver2
3838 cpu=znver2
3839 ;;
3e2ae3ee
VK
3840 znver3-*)
3841 arch=znver3
3842 cpu=znver3
3843 ;;
ed97ad47
GG
3844 bdver4-*)
3845 arch=bdver4
3846 cpu=bdver4
3847 ;;
eb2f2b44
GG
3848 bdver3-*)
3849 arch=bdver3
3850 cpu=bdver3
3851 ;;
4d652a18
HJ
3852 bdver2-*)
3853 arch=bdver2
3854 cpu=bdver2
3855 ;;
1133125e
HJ
3856 bdver1-*)
3857 arch=bdver1
3858 cpu=bdver1
3859 ;;
14b52538
CF
3860 btver1-*)
3861 arch=btver1
3862 cpu=btver1
3863 ;;
e32bfc16
VK
3864 btver2-*)
3865 arch=btver2
3866 cpu=btver2
3867 ;;
3fd77630
L
3868 amdfam10-*|barcelona-*)
3869 arch=amdfam10
3870 cpu=amdfam10
3871 ;;
3872 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3873 arch=k8-sse3
3874 cpu=k8-sse3
3875 ;;
3876 k8-*|opteron-*|athlon_64-*)
3877 arch=k8
3878 cpu=k8
3879 ;;
3880 nocona-*)
3881 arch=nocona
3882 cpu=nocona
3883 ;;
3884 atom-*)
3885 arch=atom
3886 cpu=atom
3887 ;;
0b871ccf
YR
3888 slm-*)
3889 arch=slm
3890 cpu=slm
3891 ;;
3fd77630
L
3892 core2-*)
3893 arch=core2
3894 cpu=core2
3895 ;;
1dbb04c9
L
3896 corei7-*)
3897 arch=corei7
3898 cpu=corei7
3899 ;;
3fd77630
L
3900 *)
3901 arch=x86-64
3902 cpu=generic
3903 ;;
3904 esac
3905 ;;
3906esac
3907
35341073
NN
3908# If there is no $with_cpu option, try to infer one from ${target}.
3909# This block sets nothing except for with_cpu.
3910if test x$with_cpu = x ; then
3911 case ${target} in
a0f4ee6e 3912 i[34567]86-*-elfiamcu)
2d6b2e28 3913 with_cpu=lakemont
a0f4ee6e 3914 ;;
3fd77630
L
3915 i[34567]86-*-*|x86_64-*-*)
3916 with_cpu=$cpu
35341073
NN
3917 ;;
3918 alphaev6[78]*-*-*)
3919 with_cpu=ev67
3920 ;;
3921 alphaev6*-*-*)
3922 with_cpu=ev6
3923 ;;
3924 alphapca56*-*-*)
3925 with_cpu=pca56
3926 ;;
3927 alphaev56*-*-*)
3928 with_cpu=ev56
3929 ;;
3930 alphaev5*-*-*)
3931 with_cpu=ev5
3932 ;;
faf9ab98 3933 frv-*-*linux* | frv400-*-*linux*)
34208acf
AO
3934 with_cpu=fr400
3935 ;;
faf9ab98
AH
3936 frv550-*-*linux*)
3937 with_cpu=fr550
3938 ;;
59fbf3cb 3939 m68k*-*-*)
10e96df4
NS
3940 case "$with_arch" in
3941 "cf")
3942 with_cpu=${default_cf_cpu}
3943 ;;
3944 "" | "m68k")
3945 with_cpu=m${default_m68k_cpu}
3946 ;;
3947 esac
59fbf3cb 3948 ;;
35341073 3949 sparc*-*-*)
1f65ae7a
EB
3950 case ${target} in
3951 *-leon-*)
3952 with_cpu=leon
3953 ;;
3954 *-leon[3-9]*)
3955 with_cpu=leon3
3956 ;;
d81230b5
DH
3957 *-leon[3-9]v7*)
3958 with_cpu=leon3v7
3959 ;;
1f65ae7a
EB
3960 *)
3961 with_cpu="`echo ${target} | sed 's/-.*$//'`"
3962 ;;
3963 esac
35341073 3964 ;;
175650bc
OH
3965 visium-*-*)
3966 with_cpu=gr5
3967 ;;
35341073 3968 esac
8981c15b
JM
3969
3970 # Avoid overriding --with-cpu-32 and --with-cpu-64 values.
3971 case ${target} in
3972 i[34567]86-*-*|x86_64-*-*)
3fd77630
L
3973 if test x$with_cpu_32 != x || test x$with_cpu_64 != x; then
3974 if test x$with_cpu_32 = x; then
3975 with_cpu_32=$with_cpu
3976 fi
3977 if test x$with_cpu_64 = x; then
3978 with_cpu_64=$with_cpu
3979 fi
3980 with_cpu=
3981 fi
3982 ;;
3983 esac
3984fi
3985
3986# Support for --with-arch and related options (and a few unrelated options,
3987# too).
3988case ${with_arch} in
3989 yes | no)
3990 echo "--with-arch must be passed a value" 1>&2
3991 exit 1
3992 ;;
3993esac
3994
3995# If there is no $with_arch option, try to infer one from ${target}.
3996# This block sets nothing except for with_arch.
3997if test x$with_arch = x ; then
3998 case ${target} in
91ad7e13
L
3999 i[34567]86-*-darwin*|x86_64-*-darwin*)
4000 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
4001 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
4002 ;;
a0f4ee6e 4003 i[34567]86-*-elfiamcu)
2d6b2e28 4004 with_arch=lakemont
a0f4ee6e 4005 ;;
a3af5e26 4006 i[34567]86-*-*)
4d16c0dc
L
4007 # --with-fpmath sets the default ISA to SSE2, which is the same
4008 # ISA supported by Pentium 4.
4009 if test x$with_fpmath = x || test $arch_without_sse2 = no; then
4010 with_arch=$arch
4011 else
4012 with_arch=pentium4
a3af5e26
L
4013 fi
4014 ;;
4015 x86_64-*-*)
3fd77630
L
4016 with_arch=$arch
4017 ;;
74240413
RS
4018 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4019 with_arch=r5900
4020 ;;
4021 mips*-*-vxworks)
4022 with_arch=mips2
4023 ;;
3fd77630
L
4024 esac
4025
4026 # Avoid overriding --with-arch-32 and --with-arch-64 values.
4027 case ${target} in
91ad7e13
L
4028 i[34567]86-*-darwin*|x86_64-*-darwin*)
4029 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
4030 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
4031 ;;
3fd77630
L
4032 i[34567]86-*-*|x86_64-*-*)
4033 if test x$with_arch_32 != x || test x$with_arch_64 != x; then
4034 if test x$with_arch_32 = x; then
55c4eeaa 4035 with_arch_32=$with_arch
3fd77630
L
4036 fi
4037 if test x$with_arch_64 = x; then
c6b9174f
L
4038 if test $arch_without_64bit = yes; then
4039 # Set the default 64bit arch to x86-64 if the default arch
4040 # doesn't support 64bit.
4041 with_arch_64=x86-64
4042 else
55c4eeaa 4043 with_arch_64=$with_arch
c6b9174f 4044 fi
3fd77630
L
4045 fi
4046 with_arch=
c6b9174f
L
4047 elif test $arch_without_64bit$need_64bit_isa = yesyes; then
4048 # Set the default 64bit arch to x86-64 if the default arch
4049 # doesn't support 64bit and we need 64bit ISA.
55c4eeaa 4050 with_arch_32=$with_arch
c6b9174f
L
4051 with_arch_64=x86-64
4052 with_arch=
8981c15b
JM
4053 fi
4054 ;;
4055 esac
35341073 4056fi
83079d89 4057
74240413
RS
4058# Infer a default setting for --with-float.
4059if test x$with_float = x; then
4060 case ${target} in
4061 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4062 # The R5900 doesn't support 64-bit float. 32-bit float doesn't
4063 # comply with IEEE 754.
4064 with_float=soft
4065 ;;
4066 esac
4067fi
4068
04dfc6df
JU
4069# Infer a default setting for --with-fpu.
4070if test x$with_fpu = x; then
4071 case ${target} in
4072 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4073 # The R5900 FPU only supports single precision.
4074 with_fpu=single
4075 ;;
4076 esac
4077fi
4078
a3af5e26
L
4079# Support --with-fpmath.
4080if test x$with_fpmath != x; then
4081 case ${target} in
4082 i[34567]86-*-* | x86_64-*-*)
4083 case ${with_fpmath} in
b71e5eba
UB
4084 avx)
4085 tm_file="${tm_file} i386/avxmath.h"
4086 ;;
a3af5e26
L
4087 sse)
4088 tm_file="${tm_file} i386/ssemath.h"
4089 ;;
4090 *)
4091 echo "Invalid --with-fpmath=$with_fpmath" 1>&2
4092 exit 1
4093 ;;
4094 esac
4095 ;;
4096 *)
4097 echo "--with-fpmath isn't supported for $target." 1>&2
4098 exit 1
4099 ;;
4100 esac
4101fi
4102
fe3e7450
AM
4103# Similarly for --with-schedule.
4104if test x$with_schedule = x; then
4105 case ${target} in
cd985f66 4106 hppa1*)
fe3e7450
AM
4107 # Override default PA8000 scheduling model.
4108 with_schedule=7100LC
4109 ;;
4110 esac
4111fi
83079d89 4112
74240413
RS
4113# Infer a default setting for --with-llsc.
4114if test x$with_llsc = x; then
4115 case ${target} in
74240413
RS
4116 mips*-*-linux*)
4117 # The kernel emulates LL and SC where necessary.
4118 with_llsc=yes
4119 ;;
240ae287
FN
4120 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4121 # The R5900 doesn't support LL(D) and SC(D).
4122 with_llsc=no
4123 ;;
74240413
RS
4124 esac
4125fi
4126
fe3e7450
AM
4127# Validate and mark as valid any --with options supported
4128# by this target. In order to use a particular --with option
4129# you must list it in supported_defaults; validating the value
4130# is optional. This case statement should set nothing besides
4131# supported_defaults.
7816bea0 4132
fe3e7450
AM
4133supported_defaults=
4134case "${target}" in
24034425 4135 aarch64*-*-*)
e63ae8c0 4136 supported_defaults="abi cpu cpu_64 arch arch_64 tune tune_64"
61ef34c5
SP
4137 if test x$with_cpu_64 != x && test x$with_cpu = x; then
4138 with_cpu=$with_cpu_64
4139 fi
61ef34c5
SP
4140 if test x$with_arch_64 != x && test x$with_arch = x; then
4141 with_arch=$with_arch_64
4142 fi
61ef34c5
SP
4143 if test x$with_tune_64 != x && test x$with_tune = x; then
4144 with_tune=$with_tune_64
4145 fi
04dedd18 4146 for which in cpu arch tune; do
24034425
IB
4147 eval "val=\$with_$which"
4148 base_val=`echo $val | sed -e 's/\+.*//'`
1140d42f 4149 ext_val=`echo $val | sed -e 's/[a-z0-9.-]\+//'`
24034425
IB
4150
4151 if [ $which = arch ]; then
4152 def=aarch64-arches.def
4153 pattern=AARCH64_ARCH
4154 else
4155 def=aarch64-cores.def
4156 pattern=AARCH64_CORE
4157 fi
4158
4159 ext_mask=AARCH64_CPU_DEFAULT_FLAGS
4160
4161 # Find the base CPU or ARCH id in aarch64-cores.def or
4162 # aarch64-arches.def
4163 if [ x"$base_val" = x ] \
4164 || grep "^$pattern(\"$base_val\"," \
4165 ${srcdir}/config/aarch64/$def \
4166 > /dev/null; then
4167
4168 if [ $which = arch ]; then
4169 base_id=`grep "^$pattern(\"$base_val\"," \
4170 ${srcdir}/config/aarch64/$def | \
4171 sed -e 's/^[^,]*,[ ]*//' | \
4172 sed -e 's/,.*$//'`
a3cd0246
KT
4173 # Extract the architecture flags from aarch64-arches.def
4174 ext_mask=`grep "^$pattern(\"$base_val\"," \
4175 ${srcdir}/config/aarch64/$def | \
4176 sed -e 's/)$//' | \
4177 sed -e 's/^.*,//'`
24034425
IB
4178 else
4179 base_id=`grep "^$pattern(\"$base_val\"," \
4180 ${srcdir}/config/aarch64/$def | \
4181 sed -e 's/^[^,]*,[ ]*//' | \
4182 sed -e 's/,.*$//'`
4183 fi
4184
4dc486b6
WD
4185 # Disallow extensions in --with-tune=cortex-a53+crc.
4186 if [ $which = tune ] && [ x"$ext_val" != x ]; then
4187 echo "Architecture extensions not supported in --with-$which=$val" 1>&2
4188 exit 1
4189 fi
4190
3644cadf
TC
4191 # Use the pre-processor to strip flatten the options.
4192 # This makes the format less rigid than if we use
4193 # grep and sed directly here.
4194 opt_macro="AARCH64_OPT_EXTENSION(A, B, C, D, E, F)=A, B, C, D, E, F"
4195 options_parsed="`$ac_cv_prog_CPP -D"$opt_macro" -x c \
4196 ${srcdir}/config/aarch64/aarch64-option-extensions.def`"
4197
4198 # Match one element inside AARCH64_OPT_EXTENSION, we
4199 # consume anything that's not a ,.
4200 elem="[ ]*\([^,]\+\)[ ]*"
4201
4202 # Repeat the pattern for the number of entries in the
4203 # AARCH64_OPT_EXTENSION, currently 6 times.
4204 sed_patt="^$elem,$elem,$elem,$elem,$elem,$elem"
4205
24034425
IB
4206 while [ x"$ext_val" != x ]
4207 do
4208 ext_val=`echo $ext_val | sed -e 's/\+//'`
4209 ext=`echo $ext_val | sed -e 's/\+.*//'`
4210 base_ext=`echo $ext | sed -e 's/^no//'`
3644cadf
TC
4211 opt_line=`echo -e "$options_parsed" | \
4212 grep "^\"$base_ext\""`
24034425
IB
4213
4214 if [ x"$base_ext" = x ] \
3644cadf
TC
4215 || [[ -n $opt_line ]]; then
4216
4217 # These regexp extract the elements based on
4218 # their group match index in the regexp.
4219 ext_canon=`echo -e "$opt_line" | \
4220 sed -e "s/$sed_patt/\2/"`
4221 ext_on=`echo -e "$opt_line" | \
4222 sed -e "s/$sed_patt/\3/"`
4223 ext_off=`echo -e "$opt_line" | \
4224 sed -e "s/$sed_patt/\4/"`
24034425
IB
4225
4226 if [ $ext = $base_ext ]; then
4227 # Adding extension
04a99ebe 4228 ext_mask="("$ext_mask") | ("$ext_on" | "$ext_canon")"
24034425
IB
4229 else
4230 # Removing extension
04a99ebe 4231 ext_mask="("$ext_mask") & ~("$ext_off" | "$ext_canon")"
24034425
IB
4232 fi
4233
4234 true
4235 else
4236 echo "Unknown extension used in --with-$which=$val" 1>&2
4237 exit 1
4238 fi
4239 ext_val=`echo $ext_val | sed -e 's/[a-z0-9]\+//'`
4240 done
4241
4242 ext_mask="(("$ext_mask") << 6)"
4243 if [ x"$base_id" != x ]; then
4244 target_cpu_cname="TARGET_CPU_$base_id | $ext_mask"
4245 fi
4246 true
4247 else
4dc486b6
WD
4248 # Allow --with-$which=native.
4249 if [ "$val" = native ]; then
4250 true
4251 else
4252 echo "Unknown $which used in --with-$which=$val" 1>&2
4253 exit 1
4254 fi
24034425
IB
4255 fi
4256 done
4257 ;;
4258
83079d89 4259 alpha*-*-*)
7816bea0
DJ
4260 supported_defaults="cpu tune"
4261 for which in cpu tune; do
4262 eval "val=\$with_$which"
b597bfd8
NN
4263 case "$val" in
4264 "" \
4265 | ev4 | ev45 | 21064 | ev5 | 21164 | ev56 | 21164a \
4266 | pca56 | 21164PC | 21164pc | ev6 | 21264 | ev67 \
4267 | 21264a)
7816bea0
DJ
4268 ;;
4269 *)
4270 echo "Unknown CPU used in --with-$which=$val" 1>&2
4271 exit 1
4272 ;;
4273 esac
4274 done
4275 ;;
4276
f9ccf899 4277 arc*-*-*)
c4c47a84 4278 supported_defaults="cpu fpu"
f9ccf899 4279
c4c47a84 4280 new_cpu=hs38_linux
f9ccf899 4281 if [ x"$with_cpu" = x ] \
c4c47a84
CZ
4282 || grep -q -E "^ARC_CPU[[:blank:]]*\($with_cpu," \
4283 ${srcdir}/config/arc/arc-cpus.def
4284 then
f9ccf899 4285 # Ok
c4c47a84 4286 new_cpu=$with_cpu
f9ccf899
CZ
4287 else
4288 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4289 exit 1
c4c47a84
CZ
4290 fi
4291
4292 # see if --with-fpu matches any of the supported FPUs
4293 case "$with_fpu" in
4294 "")
4295 # OK
4296 ;;
4297 fpus | fpus_div | fpus_fma | fpus_all)
4298 # OK if em or hs
4299 flags_ok="[emhs]+"
4300 ;;
4301 fpuda | fpuda_div | fpuda_fma | fpuda_all)
4302 # OK only em
4303 flags_ok="em"
4304 ;;
4305 fpud | fpud_div | fpud_fma | fpud_all)
4306 # OK only hs
4307 flags_ok="hs"
4308 ;;
4309 *)
4310 echo "Unknown floating point type used in "\
4311 "--with-fpu=$with_fpu" 1>&2
4312 exit 1
4313 ;;
4314 esac
4315
4316 if [ -n "$flags_ok" ] \
4317 && ! grep -q -E "^ARC_CPU[[:blank:]]*\($new_cpu,[[:blank:]]*$flags_ok," \
4318 ${srcdir}/config/arc/arc-cpus.def
4319 then
4320 echo "Unknown floating point type used in "\
4321 "--with-fpu=$with_fpu for cpu $new_cpu" 1>&2
4322 exit 1
f9ccf899 4323 fi
53426f6c
JR
4324 ;;
4325
711084c9
MJ
4326 avr-*-*)
4327 # Handle --with-multilib-list.
4328 if test "x${with_multilib_list}" != xdefault; then
4329 TM_MULTILIB_CONFIG="${with_multilib_list}"
4330 fi
4331 ;;
4332
56856b58
J
4333 csky-*-*)
4334 supported_defaults="cpu endian float"
4335 ;;
4336
7816bea0 4337 arm*-*-*)
7cf13d1f 4338 supported_defaults="arch cpu float tune fpu abi mode tls"
a92ffb3e
RE
4339 for which in cpu tune arch; do
4340 # See if it matches a supported value
7816bea0 4341 eval "val=\$with_$which"
a92ffb3e
RE
4342 if [ x"$val" != x ]; then
4343 cpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4344 -v cmd="chk$which $val" \
4345 ${srcdir}/config/arm/arm-cpus.in`
4346 if [ "$cpu" = "error" ]; then
4347 echo "Unknown target in --with-$which=$val" 1>&2
4348 exit 1
4349 else
4350 new_val=$cpu
4351 eval "target_${which}_cname=$new_val"
4352 echo "For $val real value is $new_val"
d3d3f1af 4353 fi
2682e19f 4354 fi
7816bea0
DJ
4355 done
4356
b597bfd8
NN
4357 case "$with_float" in
4358 "" \
9b66ebb1 4359 | soft | hard | softfp)
83079d89 4360 # OK
73f09c99 4361 ;;
83079d89 4362 *)
7816bea0 4363 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
83079d89 4364 exit 1
73f09c99
DJ
4365 ;;
4366 esac
7816bea0 4367
a92ffb3e
RE
4368 # see if --with-fpu matches any of the supported FPUs
4369 if [ x"$with_fpu" != x ] ; then
170f2d18 4370 val=$with_fpu
a92ffb3e 4371 fpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
170f2d18 4372 -v cmd="chkfpu $val" \
a92ffb3e 4373 ${srcdir}/config/arm/arm-cpus.in`
170f2d18 4374 if [ "$fpu" = "error" ]
a92ffb3e 4375 then
170f2d18 4376 echo "Unknown target in --with-fpu=$val" 1>&2
a92ffb3e
RE
4377 exit 1
4378 fi
14562eb9 4379 fi
5848830f
PB
4380
4381 case "$with_abi" in
4382 "" \
ebca2d91 4383 | apcs-gnu | atpcs | aapcs | iwmmxt | aapcs-linux )
5848830f
PB
4384 #OK
4385 ;;
4386 *)
4387 echo "Unknown ABI used in --with-abi=$with_abi"
9b66ebb1
PB
4388 exit 1
4389 ;;
4390 esac
4391
3cf94279
PB
4392 case "$with_mode" in
4393 "" \
4394 | arm | thumb )
4395 #OK
4396 ;;
4397 *)
4398 echo "Unknown mode used in --with-mode=$with_mode"
4399 exit 1
4400 ;;
4401 esac
4402
7cf13d1f
NS
4403 case "$with_tls" in
4404 "" \
4405 | gnu | gnu2)
4406 # OK
4407 ;;
4408 *)
4409 echo "Unknown TLS method used in --with-tls=$with_tls" 1>&2
4410 exit 1
4411 ;;
4412 esac
4413
7816bea0 4414 if test "x$with_arch" != x && test "x$with_cpu" != x; then
0cdb761c
JG
4415 echo "Switch \"--with-arch\" may not be used with switch \"--with-cpu\"" 1>&2
4416 exit 1
4417 fi
4418
4419 if test "x$with_cpu" != x && test "x$with_tune" != x; then
4420 echo "Switch \"--with-tune\" may not be used with switch \"--with-cpu\"" 1>&2
4421 exit 1
7816bea0 4422 fi
c9acb877
MGD
4423
4424 # Add extra multilibs
4425 if test "x$with_multilib_list" != x; then
5d6551f5 4426 ml=
c9acb877 4427 arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
2f738ca5
TP
4428 if test "x${arm_multilibs}" != xdefault ; then
4429 for arm_multilib in ${arm_multilibs}; do
4430 case ${arm_multilib} in
4431 aprofile|rmprofile)
4432 tmake_profile_file="arm/t-multilib"
4433 ;;
5d6551f5
AO
4434 @*)
4435 ml=`echo "X$arm_multilib" | sed '1s,^X@,,'`
4436 if test -f "${srcdir}/config/arm/${ml}"; then
4437 tmake_file="${tmake_file} arm/${ml}"
4438 else
4439 echo "Error: ${ml} does not exist in ${srcdir}/config/arm" >&2
4440 exit 1
4441 fi
4442 ;;
2f738ca5
TP
4443 *)
4444 echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2
4445 exit 1
4446 ;;
4447 esac
4448 done
c2f46874 4449 fi
ec6be462
TP
4450
4451 if test "x${tmake_profile_file}" != x ; then
3e0201f0
TP
4452 # arm/t-aprofile and arm/t-rmprofile are only
4453 # designed to work without any with-cpu,
4454 # with-arch, with-mode, with-fpu or with-float
4455 # options.
ec6be462
TP
4456 if test "x$with_arch" != x \
4457 || test "x$with_cpu" != x \
4458 || test "x$with_float" != x \
4459 || test "x$with_fpu" != x \
4460 || test "x$with_mode" != x ; then
4461 echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=${with_multilib_list}" 1>&2
4462 exit 1
5d6551f5
AO
4463 elif test "x$ml" != x ; then
4464 echo "Error: You cannot use builtin multilib profiles along with custom ones" 1>&2
4465 exit 1
ec6be462 4466 fi
93aa40fe
RE
4467 # But pass the default value for float-abi
4468 # through to the multilib selector
4469 with_float="soft"
ec6be462 4470 tmake_file="${tmake_file} ${tmake_profile_file}"
c2f46874 4471 TM_MULTILIB_CONFIG="$with_multilib_list"
ec6be462 4472 fi
c9acb877 4473 fi
7a433140 4474 target_cpu_cname=${target_cpu_cname:-arm7tdmi}
a4af8a10 4475 with_cpu=${with_cpu:-$target_cpu_cname}
73f09c99 4476 ;;
73f09c99 4477
34208acf
AO
4478 fr*-*-*linux*)
4479 supported_defaults=cpu
4480 case "$with_cpu" in
4481 fr400) ;;
faf9ab98 4482 fr550) ;;
34208acf
AO
4483 *)
4484 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4485 exit 1
4486 ;;
4487 esac
4488 ;;
4489
cd985f66 4490 fido-*-* | m68k*-*-*)
10e96df4
NS
4491 supported_defaults="arch cpu"
4492 case "$with_arch" in
4493 "" | "m68k"| "cf")
4494 m68k_arch_family="$with_arch"
4495 ;;
4496 *)
4497 echo "Invalid --with-arch=$with_arch" 1>&2
4498 exit 1
4499 ;;
4500 esac
59fbf3cb
NS
4501
4502 # We always have a $with_cpu setting here.
3704aae9 4503 case "$with_cpu" in
900ec02d
JB
4504 "m68000" | "m68010" | "m68020" | "m68030" | "m68040" | "m68060")
4505 m68k_cpu_ident=$with_cpu
4506 ;;
4507 "m68020-40")
4508 m68k_cpu_ident=m68020
4509 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_40"
4510 ;;
4511 "m68020-60")
4512 m68k_cpu_ident=m68020
4513 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_60"
3704aae9
RZ
4514 ;;
4515 *)
900ec02d
JB
4516 # We need the C identifier rather than the string.
4517 m68k_cpu_ident=`awk -v arg="\"$with_cpu\"" \
4518 'BEGIN { FS="[ \t]*[,()][ \t]*" }; \
4519 $1 == "M68K_DEVICE" && $2 == arg { print $3 }' \
4520 ${srcdir}/config/m68k/m68k-devices.def`
4521 if [ x"$m68k_cpu_ident" = x ] ; then
4522 echo "Unknown CPU used in --with-cpu=$with_cpu" 1>&2
4523 exit 1
4524 fi
4525 with_cpu="mcpu=$with_cpu"
3704aae9
RZ
4526 ;;
4527 esac
4528 ;;
4529
7431c1a1
AS
4530 amdgcn-*-*)
4531 supported_defaults="arch tune"
4532
4533 for which in arch tune; do
4534 eval "val=\$with_$which"
4535 case ${val} in
591f869a 4536 "" | fiji | gfx900 | gfx906 )
7431c1a1
AS
4537 # OK
4538 ;;
4539 *)
4540 echo "Unknown cpu used in --with-$which=$val." 1>&2
4541 exit 1
4542 ;;
4543 esac
4544 done
4545 [ "x$with_arch" = x ] && with_arch=fiji
4546 ;;
4547
cd985f66 4548 hppa*-*-*)
7816bea0
DJ
4549 supported_defaults="arch schedule"
4550
b597bfd8
NN
4551 case "$with_arch" in
4552 "" | 1.0 | 1.1 | 2.0)
7816bea0
DJ
4553 # OK
4554 ;;
4555 *)
4556 echo "Unknown architecture used in --with-arch=$with_arch" 1>&2
4557 exit 1
4558 ;;
4559 esac
4560
b597bfd8
NN
4561 case "$with_schedule" in
4562 "" | 700 | 7100 | 7100LC | 7200 | 7300 | 8000)
83079d89
DJ
4563 # OK
4564 ;;
4565 *)
4566 echo "Unknown processor used in --with-schedule=$with_schedule." 1>&2
4567 exit 1
4568 ;;
4569 esac
73f09c99 4570 ;;
73f09c99 4571
83079d89 4572 i[34567]86-*-* | x86_64-*-*)
0465e49e 4573 supported_defaults="abi arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64"
8981c15b 4574 for which in arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64; do
7816bea0 4575 eval "val=\$with_$which"
646bdeab
L
4576 case " $x86_archs " in
4577 *" ${val} "*)
d326eaf0
JH
4578 case "${target}" in
4579 x86_64-*-*)
8981c15b
JM
4580 case "x$which" in
4581 *_32)
4582 ;;
4583 *)
4584 echo "CPU given in --with-$which=$val doesn't support 64bit mode." 1>&2
4585 exit 1
4586 ;;
4587 esac
d326eaf0
JH
4588 ;;
4589 esac
4590 # OK
4591 ;;
7816bea0 4592 *)
646bdeab
L
4593 if test x${val} != x; then
4594 case " $x86_64_archs " in
4595 *" ${val} "*)
552ed3ea 4596 # Disallow x86-64-v* for --with-cpu=/--with-tune=
552ed3ea 4597 case "x$which$val" in
59482fa1 4598 xcpu*x86-64-v*|xtune*x86-64-v*)
552ed3ea
JJ
4599 echo "Unknown CPU given in --with-$which=$val." 1>&2
4600 exit 1
4601 ;;
4602 *)
4603 ;;
4604 esac
646bdeab
L
4605 # OK
4606 ;;
4607 *)
4608 # Allow $x86_cpus --with-cpu=/--with-tune=
4609 case "x$which" in
4610 xcpu*|xtune*)
4611 case " $x86_cpus " in
4612 *" ${val} "*)
4613 # OK
4614 ;;
4615 *)
4616 echo "Unknown CPU given in --with-$which=$val." 1>&2
4617 exit 1
4618 ;;
4619 esac
4620 ;;
4621 *)
4622 echo "Unknown CPU given in --with-$which=$val." 1>&2
4623 exit 1
4624 ;;
4625 esac
4626 ;;
4627 esac
4628 fi
7816bea0
DJ
4629 ;;
4630 esac
4631 done
4632 ;;
4633
09cae750 4634 riscv*-*-*)
4b815282 4635 supported_defaults="abi arch tune riscv_attribute isa_spec"
09cae750
PD
4636
4637 case "${target}" in
edace3e2 4638 riscv-* | riscv32*) xlen=32 ;;
09cae750
PD
4639 riscv64*) xlen=64 ;;
4640 *) echo "Unsupported RISC-V target ${target}" 1>&2; exit 1 ;;
4641 esac
4642
4b815282
KC
4643 case "${with_isa_spec}" in
4644 ""|default|2.2)
4645 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_2P2"
4646 ;;
4647 20191213 | 201912)
4648 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20191213"
4649 ;;
4650 20190608 | 201906)
4651 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20190608"
4652 ;;
4653 *)
4654 echo "--with-isa-spec only accept 2.2, 20191213, 201912, 20190608 or 201906" 1>&2
4655 exit 1
4656 esac
4657
8e966210
KC
4658 case "${with_riscv_attribute}" in
4659 yes)
4660 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4661 ;;
4662 no)
4663 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=0"
4664 ;;
4665 ""|default)
3c70b3ca 4666 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
8e966210
KC
4667 ;;
4668 *)
4669 echo "--with-riscv-attribute=${with_riscv_attribute} is not supported. The argument must begin with yes, no or default." 1>&2
4670 exit 1
4671 ;;
4672 esac
4673
4674
09cae750
PD
4675 # Infer arch from --with-arch, --target, and --with-abi.
4676 case "${with_arch}" in
09baee1a 4677 rv32e* | rv32i* | rv32g* | rv64i* | rv64g*)
09cae750
PD
4678 # OK.
4679 ;;
4680 "")
4681 # Infer XLEN, but otherwise assume GC.
4682 case "${with_abi}" in
09baee1a 4683 ilp32e) with_arch="rv32e" ;;
09cae750
PD
4684 ilp32 | ilp32f | ilp32d) with_arch="rv32gc" ;;
4685 lp64 | lp64f | lp64d) with_arch="rv64gc" ;;
4686 *) with_arch="rv${xlen}gc" ;;
4687 esac
4688 ;;
4689 *)
09baee1a 4690 echo "--with-arch=${with_arch} is not supported. The argument must begin with rv32e, rv32i, rv32g, rv64i, or rv64g." 1>&2
09cae750
PD
4691 exit 1
4692 ;;
4693 esac
4aaf3371
KC
4694 PYTHON=`which python || which python3 || which python2`
4695 if test "x${PYTHON}" != x; then
4696 with_arch=`${PYTHON} ${srcdir}/config/riscv/arch-canonicalize ${with_arch}`
4697 fi
a5ad5d5c 4698 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ARCH=${with_arch}"
09cae750
PD
4699
4700 # Make sure --with-abi is valid. If it was not specified,
4701 # pick a default based on the ISA, preferring soft-float
4702 # unless the D extension is present.
4703 case "${with_abi}" in
09baee1a 4704 ilp32 | ilp32e | ilp32f | ilp32d | lp64 | lp64f | lp64d)
09cae750
PD
4705 ;;
4706 "")
4707 case "${with_arch}" in
4708 rv32*d* | rv32g*) with_abi=ilp32d ;;
09baee1a 4709 rv32e*) with_abi=ilp32e ;;
09cae750
PD
4710 rv32*) with_abi=ilp32 ;;
4711 rv64*d* | rv64g*) with_abi=lp64d ;;
4712 rv64*) with_abi=lp64 ;;
4713 esac
4714 ;;
4715 *)
4716 echo "--with-abi=${with_abi} is not supported" 1>&2
4717 exit 1
4718 ;;
4719 esac
a5ad5d5c 4720 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ABI=${with_abi}"
09cae750
PD
4721
4722 # Make sure ABI and ISA are compatible.
4723 case "${with_abi},${with_arch}" in
09baee1a 4724 ilp32,rv32* | ilp32e,rv32e* \
09cae750
PD
4725 | ilp32f,rv32*f* | ilp32f,rv32g* \
4726 | ilp32d,rv32*d* | ilp32d,rv32g* \
4727 | lp64,rv64* \
4728 | lp64f,rv64*f* | lp64f,rv64g* \
4729 | lp64d,rv64*d* | lp64d,rv64g*)
4730 ;;
4731 *)
4732 echo "--with-abi=${with_abi} is not supported for ISA ${with_arch}" 1>&2
4733 exit 1
4734 ;;
4735 esac
c1e66912
KC
4736 # Handle --with-multilib-generator.
4737 if test "x${with_multilib_generator}" != xdefault; then
4738 if test "x${with_multilib_list}" != xdefault; then
4739 echo "--with-multilib-list= can't used with --with-multilib-generator= at same time" 1>&2
4740 exit 1
4741 fi
4742 case "${target}" in
4743 riscv*-*-elf*)
e0335bb7 4744 if ${srcdir}/config/riscv/multilib-generator \
c1e66912
KC
4745 `echo ${with_multilib_generator} | sed 's/;/ /g'`\
4746 > t-multilib-config;
4747 then
4748 tmake_file="${tmake_file} riscv/t-withmultilib-generator"
4749 else
4750 echo "invalid option for --with-multilib-generator" 1>&2
4751 exit 1
4752 fi
4753 ;;
4754 *)
4755 echo "--with-multilib-generator= is not supported for ${target}, only supported for riscv*-*-elf*" 1>&2
4756 exit 1
4757 ;;
4758 esac
4759 fi
f2410266
JW
4760
4761 # Handle --with-multilib-list.
4762 if test "x${with_multilib_list}" != xdefault; then
f2410266
JW
4763 tmake_file="${tmake_file} riscv/t-withmultilib"
4764
4765 case ${with_multilib_list} in
4766 ilp32 | ilp32f | ilp32d \
4767 | lp64 | lp64f | lp64d )
4768 TM_MULTILIB_CONFIG="${with_arch},${with_multilib_list}"
4769 ;;
4770 *)
4771 echo "--with-multilib-list=${with_multilib_list} not supported."
4772 exit 1
4773 esac
f2410266 4774 fi
09cae750
PD
4775 ;;
4776
7816bea0 4777 mips*-*-*)
d821744c 4778 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"
7816bea0 4779
16aa42c0
NN
4780 case ${with_float} in
4781 "" | soft | hard)
83079d89
DJ
4782 # OK
4783 ;;
4784 *)
7816bea0 4785 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
83079d89
DJ
4786 exit 1
4787 ;;
4788 esac
73f09c99 4789
04dfc6df
JU
4790 case ${with_fpu} in
4791 "" | single | double)
4792 # OK
4793 ;;
4794 *)
4795 echo "Unknown fpu type used in --with-fpu=$with_fpu" 1>&2
4796 exit 1
4797 ;;
4798 esac
4799
ff3f3951
MR
4800 case ${with_nan} in
4801 "" | 2008 | legacy)
4802 # OK
4803 ;;
4804 *)
4805 echo "Unknown NaN encoding used in --with-nan=$with_nan" 1>&2
4806 exit 1
4807 ;;
4808 esac
4809
050af144
MF
4810 case ${with_fp_32} in
4811 "" | 32 | xx | 64)
4812 # OK
4813 ;;
4814 *)
4815 echo "Unknown FP mode used in --with-fp-32=$with_fp_32" 1>&2
4816 exit 1
4817 ;;
4818 esac
4819
4820 case ${with_odd_spreg_32} in
4821 yes)
4822 with_odd_spreg_32="odd-spreg"
4823 ;;
4824 no)
4825 with_odd_spreg_32="no-odd-spreg"
4826 ;;
4827 "")
4828 # OK
4829 ;;
4830 *)
4831 echo "Unknown odd-spreg-32 type used in --with-odd-spreg-32=$with_odd_spreg_32" 1>&2
4832 exit 1
4833 ;;
4834 esac
4835
16aa42c0
NN
4836 case ${with_abi} in
4837 "" | 32 | o64 | n32 | 64 | eabi)
83079d89
DJ
4838 # OK
4839 ;;
4840 *)
7816bea0 4841 echo "Unknown ABI used in --with-abi=$with_abi" 1>&2
83079d89
DJ
4842 exit 1
4843 ;;
4844 esac
9f0df97a
DD
4845
4846 case ${with_divide} in
4847 "" | breaks | traps)
4848 # OK
4849 ;;
4850 *)
4851 echo "Unknown division check type use in --with-divide=$with_divide" 1>&2
4852 exit 1
66471b47
DD
4853 ;;
4854 esac
4855
4856 case ${with_llsc} in
4857 yes)
4858 with_llsc=llsc
4859 ;;
4860 no)
4861 with_llsc="no-llsc"
4862 ;;
4863 "")
4864 # OK
4865 ;;
4866 *)
4867 echo "Unknown llsc type used in --with-llsc" 1>&2
4868 exit 1
4869 ;;
9f0df97a 4870 esac
e21d5757
DJ
4871
4872 case ${with_mips_plt} in
4873 yes)
4874 with_mips_plt=plt
4875 ;;
4876 no)
4877 with_mips_plt=no-plt
4878 ;;
4879 "")
4880 ;;
4881 *)
4882 echo "Unknown --with-mips-plt argument: $with_mips_plt" 1>&2
4883 exit 1
4884 ;;
4885 esac
b96c5923
DD
4886
4887 case ${with_synci} in
4888 yes)
4889 with_synci=synci
4890 ;;
965c1798 4891 no)
b96c5923
DD
4892 with_synci=no-synci
4893 ;;
965c1798
SE
4894 "")
4895 ;;
b96c5923
DD
4896 *)
4897 echo "Unknown synci type used in --with-synci" 1>&2
4898 exit 1
4899 ;;
4900 esac
ab6b44cb
MF
4901
4902 case ${with_lxc1_sxc1} in
4903 yes)
4904 with_lxc1_sxc1=lxc1-sxc1
4905 ;;
4906 no)
4907 with_lxc1_sxc1=no-lxc1-sxc1
4908 ;;
4909 "")
4910 ;;
4911 *)
4912 echo "Unknown lxc1-sxc1 type used in --with-lxc1-sxc1" 1>&2
4913 exit 1
4914 ;;
4915 esac
d821744c
MF
4916
4917 case ${with_madd4} in
4918 yes)
4919 with_madd4=madd4
4920 ;;
4921 no)
4922 with_madd4=no-madd4
4923 ;;
4924 "")
4925 ;;
4926 *)
4927 echo "Unknown madd4 type used in --with-madd4" 1>&2
4928 exit 1
4929 ;;
4930 esac
9304f876
CJW
4931 ;;
4932
4933 nds32*-*-*)
e2286268 4934 supported_defaults="arch cpu nds32_lib float fpu_config"
9304f876
CJW
4935
4936 # process --with-arch
4937 case "${with_arch}" in
e2286268
MC
4938 "" | v3 )
4939 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
4940 ;;
4941 v2 | v2j | v3m)
9304f876 4942 # OK
e2286268
MC
4943 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
4944 ;;
4945 v3f)
4946 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=1"
4947 ;;
4948 v3s)
4949 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=2"
4950
9304f876
CJW
4951 ;;
4952 *)
e2286268 4953 echo "Cannot accept --with-arch=$with_arch, available values are: v2 v2j v3 v3m v3f v3s" 1>&2
9304f876
CJW
4954 exit 1
4955 ;;
4956 esac
4957
7f3101c0
KC
4958 case "${with_cpu}" in
4959 "")
4960 with_cpu=n9
4961 ;;
628332f8 4962 n6 | n7 |n8 | e8 | s8 | n9 | n10 | d10 | n12 | n13 | n15)
7f3101c0
KC
4963 # OK
4964 ;;
4965 *)
628332f8 4966 echo "Cannot accept --with-cpu=$with_cpu, available values are: n6 n7 n8 e8 s8 n9 n10 d10 n12 n13 n15" 1>&2
7f3101c0
KC
4967 exit 1
4968 ;;
4969 esac
4970
9304f876
CJW
4971 # process --with-nds32-lib
4972 case "${with_nds32_lib}" in
4973 "")
2a484d14
CJW
4974 case ${target} in
4975 *-*-*uclibc*)
4976 with_nds32_lib=ulibc
4977 ;;
4978 *-*-linux*)
4979 with_nds32_lib=glibc
4980 ;;
4981 *)
4982 with_nds32_lib=newlib
4983 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
4984 ;;
4985 esac
9304f876
CJW
4986 ;;
4987 newlib)
4988 # OK
cf3cd43d 4989 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
9304f876
CJW
4990 ;;
4991 mculib)
4992 # OK
cf3cd43d
CJW
4993 # for the arch=v3f or arch=v3s under mculib toolchain,
4994 # we would like to set -fno-math-errno as default
4995 case "${with_arch}" in
4996 v3f | v3s)
4997 tm_defines="${tm_defines} TARGET_DEFAULT_NO_MATH_ERRNO=1"
4998 ;;
4999 esac
5000 ;;
2a484d14 5001 glibc | uclibc)
cf3cd43d 5002 # OK
9304f876
CJW
5003 ;;
5004 *)
cf3cd43d 5005 echo "Cannot accept --with-nds32-lib=$with_nds32_lib, available values are: newlib mculib glibc uclibc" 1>&2
9304f876
CJW
5006 exit 1
5007 ;;
5008 esac
73f09c99 5009
e2286268
MC
5010 # process --with-float
5011 case "${with_float}" in
5012 "" | soft | hard)
5013 # OK
5014 ;;
5015 *)
5016 echo "Cannot accept --with-float=$with_float, available values are: soft hard" 1>&2
5017 exit 1
5018 ;;
5019 esac
5020
5021 # process --with-config-fpu
5022 case "${with_config_fpu}" in
5023 "" | 0 | 1 | 2 | 3)
5024 # OK
5025 ;;
5026 *)
5027 echo "Cannot accept --with-config-fpu=$with_config_fpu, available values from 0 to 7" 1>&2
5028 exit 1
5029 ;;
5030 esac
5031
5032
5033 ;;
77c50d73
SL
5034 nios2*-*-*)
5035 supported_defaults="arch"
5036 case "$with_arch" in
5037 "" | r1 | r2)
5038 # OK
5039 ;;
5040 *)
5041 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5042 exit 1
5043 ;;
5044 esac
5045 ;;
5046
7816bea0 5047 powerpc*-*-* | rs6000-*-*)
5123acd2 5048 supported_defaults="abi cpu cpu_32 cpu_64 float tune tune_32 tune_64 advance_toolchain"
7816bea0 5049
c5f0fe67 5050 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
7816bea0 5051 eval "val=\$with_$which"
16aa42c0 5052 case ${val} in
1ab1739c 5053 default32 | default64)
c5f0fe67
JM
5054 case $which in
5055 cpu | tune)
5056 ;;
5057 *)
5058 echo "$val only valid for --with-cpu and --with-tune." 1>&2
5059 exit 1
5060 ;;
5061 esac
1ab1739c
JJ
5062 with_which="with_$which"
5063 eval $with_which=
5064 ;;
b0bfee6e
DE
5065 405cr)
5066 tm_defines="${tm_defines} CONFIG_PPC405CR"
5067 eval "with_$which=405"
5068 ;;
5bd93ff6 5069 "" | common | native \
71237df0 5070 | power[3456789] | power10 | power5+ | power6x \
6fa3b207
SB
5071 | powerpc | powerpc64 | powerpc64le \
5072 | rs64 \
4adf8008 5073 | 401 | 403 | 405 | 405fp | 440 | 440fp | 464 | 464fp \
47f67e51
PB
5074 | 476 | 476fp | 505 | 601 | 602 | 603 | 603e | ec603e \
5075 | 604 | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 \
683ed19e
EW
5076 | a2 | e300c[23] | 854[08] | e500mc | e500mc64 | e5500 | e6500 \
5077 | titan | 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5 | cell)
7816bea0
DJ
5078 # OK
5079 ;;
5080 *)
5081 echo "Unknown cpu used in --with-$which=$val." 1>&2
5082 exit 1
5083 ;;
5084 esac
5085 done
b54214fe
UW
5086
5087 case "$with_abi" in
5088 "" | elfv1 | elfv2 )
5089 #OK
5090 ;;
5091 *)
5092 echo "Unknown ABI used in --with-abi=$with_abi"
5093 exit 1
5094 ;;
5095 esac
5123acd2
MM
5096
5097 if test "x$with_advance_toolchain" != x; then
5098 if test -d "/opt/$with_advance_toolchain/." -a \
5099 -d "/opt/$with_advance_toolchain/bin/." -a \
5100 -d "/opt/$with_advance_toolchain/include/."; then
5101
5102 tm_file="$tm_file ./advance-toolchain.h"
5103 (at="/opt/$with_advance_toolchain"
5104 echo "/* Use Advance Toolchain $at */"
5105 echo
5123acd2
MM
5106 echo "#undef LINK_OS_NEW_DTAGS_SPEC"
5107 echo "#define LINK_OS_NEW_DTAGS_SPEC" \
5108 "\"--enable-new-dtags\""
5109 echo
5110 echo "#undef DYNAMIC_LINKER_PREFIX"
5111 echo "#define DYNAMIC_LINKER_PREFIX \"$at\""
5112 echo
5113 echo "#undef MD_EXEC_PREFIX"
5114 echo "#define MD_EXEC_PREFIX \"$at/bin/\""
5115 echo
5116 echo "#undef MD_STARTFILE_PREFIX"
17ce4f48
TMQMF
5117 echo "#define MD_STARTFILE_PREFIX \"$prefix/lib/\""
5118 echo
5119 echo "#undef MD_STARTFILE_PREFIX_1"
5120 echo "#define MD_STARTFILE_PREFIX_1 \"$at/lib/\"") \
5123acd2
MM
5121 > advance-toolchain.h
5122 else
5123 echo "Unknown advance-toolchain $with_advance_toolchain"
5124 exit 1
5125 fi
5126 fi
8c7a27d5
MM
5127
5128 # Set up the default long double format if the user changed it.
5129 if test x$with_long_double_format = xieee; then
5130 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=1"
5131
5132 elif test x$with_long_double_format = xibm; then
5133 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=0"
5134 fi
7816bea0
DJ
5135 ;;
5136
f13e0d4e
UW
5137 s390*-*-*)
5138 supported_defaults="arch mode tune"
5139
5140 for which in arch tune; do
5141 eval "val=\$with_$which"
16aa42c0 5142 case ${val} in
796a35b2 5143 "" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | z15 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12 | arch13 | arch14 )
f13e0d4e
UW
5144 # OK
5145 ;;
5146 *)
5147 echo "Unknown cpu used in --with-$which=$val." 1>&2
5148 exit 1
5149 ;;
5150 esac
5151 done
5152
16aa42c0
NN
5153 case ${with_mode} in
5154 "" | esa | zarch)
f13e0d4e
UW
5155 # OK
5156 ;;
5157 *)
5158 echo "Unknown architecture mode used in --with-mode=$with_mode." 1>&2
5159 exit 1
5160 ;;
5161 esac
5162 ;;
5163
5ba02681 5164 sh[123456ble]*-*-* | sh-*-*)
da28a3b9 5165 supported_defaults="cpu"
25e651ca 5166 case "`echo $with_cpu | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz- | sed s/sh/m/`" in
da28a3b9
JR
5167 "" | m1 | m2 | m2e | m3 | m3e | m4 | m4-single | m4-single-only | m4-nofpu )
5168 # OK
5169 ;;
157371cf
AO
5170 m2a | m2a-single | m2a-single-only | m2a-nofpu)
5171 ;;
312209c6
AO
5172 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al)
5173 ;;
da28a3b9
JR
5174 *)
5175 echo "Unknown CPU used in --with-cpu=$with_cpu, known values:" 1>&2
5176 echo "m1 m2 m2e m3 m3e m4 m4-single m4-single-only m4-nofpu" 1>&2
312209c6 5177 echo "m4a m4a-single m4a-single-only m4a-nofpu m4al" 1>&2
157371cf 5178 echo "m2a m2a-single m2a-single-only m2a-nofpu" 1>&2
da28a3b9
JR
5179 exit 1
5180 ;;
5181 esac
5182 ;;
83079d89 5183 sparc*-*-*)
31177ef2 5184 supported_defaults="cpu cpu_32 cpu_64 float tune tune_32 tune_64"
7816bea0 5185
31177ef2 5186 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
7816bea0 5187 eval "val=\$with_$which"
16aa42c0 5188 case ${val} in
07981468
KE
5189 "" | sparc | sparcv9 | sparc64 \
5190 | v7 | cypress \
d81230b5 5191 | v8 | supersparc | hypersparc | leon | leon3 | leon3v7 \
07981468
KE
5192 | sparclite | f930 | f934 | sparclite86x \
5193 | sparclet | tsc701 \
70847a48 5194 | v9 | ultrasparc | ultrasparc3 | niagara | niagara2 \
bcc3c3f1 5195 | niagara3 | niagara4 | niagara7 | m8)
7816bea0
DJ
5196 # OK
5197 ;;
5198 *)
5199 echo "Unknown cpu used in --with-$which=$val" 1>&2
5200 exit 1
5201 ;;
5202 esac
5203 done
73f09c99 5204
16aa42c0
NN
5205 case ${with_float} in
5206 "" | soft | hard)
83079d89
DJ
5207 # OK
5208 ;;
5209 *)
7816bea0 5210 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
83079d89
DJ
5211 exit 1
5212 ;;
5213 esac
73f09c99 5214 ;;
73f09c99 5215
bcead286
BS
5216 tic6x-*-*)
5217 supported_defaults="arch"
5218
5219 case ${with_arch} in
5220 "" | c62x | c64x | c64x+ | c67x | c67x+ | c674x)
5221 # OK
5222 ;;
5223 *)
5224 echo "Unknown arch used in --with-arch=$with_arch." 1>&2
5225 exit 1
5226 ;;
5227 esac
5228 ;;
5229
83079d89 5230 v850*-*-*)
7816bea0 5231 supported_defaults=cpu
16aa42c0 5232 case ${with_cpu} in
dbdbd982 5233 "" | v850e | v850e1 | v850e2 | v850es | v850e2v3 | v850e3v5)
83079d89
DJ
5234 # OK
5235 ;;
5236 *)
5237 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5238 exit 1
5239 ;;
5240 esac
73f09c99 5241 ;;
175650bc
OH
5242 visium-*-*)
5243 supported_defaults="cpu"
5244 case $with_cpu in
5245 "" | gr5 | gr6)
5246 ;;
5247 *) echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5248 exit 1
5249 ;;
5250 esac
5251 ;;
fe3e7450 5252esac
73f09c99 5253
52e18cdf
OH
5254# Targets for which there is at least one VxWorks port should include
5255# vxworks-dummy.h to allow safe references to various TARGET_VXWORKS kinds
5256# of markers from other files in the port, including the vxworks*.h files to
5257# distinguish VxWorks variants such as VxWorks 7 or 64).
5258
5259case ${target} in
5260arm*-*-* | i[34567]86-*-* | mips*-*-* | powerpc*-*-* | sh*-*-* \
5261| sparc*-*-* | x86_64-*-*)
5262 tm_file="vxworks-dummy.h ${tm_file}"
5263 ;;
5264esac
5265
fe3e7450
AM
5266# Set some miscellaneous flags for particular targets.
5267target_cpu_default2=
5268case ${target} in
24034425 5269 aarch64*-*-*)
a3cd0246 5270 if test x"$target_cpu_cname" != x
24034425 5271 then
24034425
IB
5272 target_cpu_default2=$target_cpu_cname
5273 fi
5274 ;;
5275
83079d89 5276 arm*-*-*)
a4af8a10 5277 if test x$with_cpu = x
32078532 5278 then
a4af8a10
RE
5279 echo "Don't know the target cpu" 1>&2
5280 exit 1
32078532 5281 else
a4af8a10 5282 target_cpu_default2="\\\"$with_cpu\\\""
32078532 5283 fi
83079d89 5284 ;;
0e5a4ad8 5285
cd985f66 5286 hppa*-*-*)
83079d89 5287 if test x$gas = xyes
61ed06c3 5288 then
f4000c0b 5289 target_cpu_default2="MASK_GAS"
83079d89 5290 fi
73f09c99 5291 ;;
73f09c99 5292
cd985f66 5293 fido*-*-* | m68k*-*-*)
900ec02d 5294 target_cpu_default2=$m68k_cpu_ident
47c94d21 5295 tmake_file="m68k/t-opts $tmake_file"
10e96df4
NS
5296 if [ x"$m68k_arch_family" != x ]; then
5297 tmake_file="m68k/t-$m68k_arch_family $tmake_file"
5298 fi
900ec02d
JB
5299 ;;
5300
ff473280 5301 i[34567]86-*-darwin* | x86_64-*-darwin*)
ff473280 5302 ;;
e0cdc09f 5303 i[34567]86-*-linux* | x86_64-*-linux*)
54967b02
L
5304 extra_objs="${extra_objs} gnu-property.o"
5305 tmake_file="$tmake_file i386/t-linux i386/t-gnu-property"
e0cdc09f
MK
5306 ;;
5307 i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu)
5308 tmake_file="$tmake_file i386/t-kfreebsd"
5309 ;;
5310 i[34567]86-*-gnu*)
5311 tmake_file="$tmake_file i386/t-gnu"
ff473280 5312 ;;
3df6ff35
AP
5313 i[34567]86-*-msdosdjgpp*)
5314 tmake_file="${tmake_file} i386/t-djgpp"
5315 ;;
ccd1242e 5316 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
f128db92 5317 ;;
740f2bf3
KT
5318 i[34567]86-*-cygwin* | x86_64-*-cygwin*)
5319 ;;
5320 i[34567]86-*-mingw* | x86_64-*-mingw*)
e997fb9c 5321 ;;
dbed5a9b
JM
5322 i[34567]86-*-dragonfly* | x86_64-*-dragonfly*)
5323 ;;
b6bf4d8a
AT
5324 i[34567]86-*-freebsd*)
5325 ;;
5326 x86_64-*-freebsd*)
5327 tmake_file="${tmake_file} i386/t-freebsd64"
d78552bd 5328 ;;
c252db20 5329 ia64*-*-linux*)
c252db20 5330 ;;
ff473280 5331
83079d89 5332 mips*-*-*)
5811cb27
RS
5333 if test x$gnu_ld = xyes
5334 then
21c425ee 5335 target_cpu_default2="MASK_SPLIT_ADDRESSES"
5811cb27 5336 fi
b01bc573 5337 case ${target} in
83079d89
DJ
5338 mips*el-*-*)
5339 tm_defines="TARGET_ENDIAN_DEFAULT=0 $tm_defines"
5340 ;;
5341 esac
8cfebf86
SE
5342 if test x$with_arch != x; then
5343 default_mips_arch=$with_arch
5344 fi
5345 if test x$with_abi != x; then
5346 default_mips_abi=$with_abi
5347 fi
5348 case ${default_mips_arch} in
4ecfc7e3
YS
5349 mips1) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS1" ;;
5350 mips2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS2" ;;
5351 mips3) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3" ;;
5352 mips4) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS4" ;;
5353 mips32) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32" ;;
5354 mips32r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2" ;;
5355 mips32r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6" ;;
5356 mips64) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64" ;;
5357 mips64r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2" ;;
5358 mips64r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6" ;;
8cfebf86
SE
5359 esac
5360 case ${default_mips_abi} in
5361 32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_32" ;;
5362 o64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_O64" ;;
5363 n32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_N32" ;;
5364 64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_64" ;;
5365 eabi) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_EABI" ;;
5366 esac
bd9c1f8f 5367 tmake_file="mips/t-mips $tmake_file"
74826b0f 5368 ;;
83079d89
DJ
5369
5370 powerpc*-*-* | rs6000-*-*)
7816bea0
DJ
5371 # FIXME: The PowerPC port uses the value set at compile time,
5372 # although it's only cosmetic.
83079d89 5373 if test "x$with_cpu" != x
61ed06c3 5374 then
83079d89 5375 target_cpu_default2="\\\"$with_cpu\\\""
61ed06c3 5376 fi
83349046
SB
5377 out_file="${cpu_type}/${cpu_type}.c"
5378 c_target_objs="${c_target_objs} ${cpu_type}-c.o"
5379 cxx_target_objs="${cxx_target_objs} ${cpu_type}-c.o"
b4c522fa 5380 d_target_objs="${d_target_objs} ${cpu_type}-d.o"
83349046 5381 tmake_file="${cpu_type}/t-${cpu_type} ${tmake_file}"
74826b0f 5382 ;;
73f09c99 5383
a6ab9fc0
R
5384 sh[123456ble]*-*-* | sh-*-*)
5385 c_target_objs="${c_target_objs} sh-c.o"
5386 cxx_target_objs="${cxx_target_objs} sh-c.o"
5387 ;;
5388
83079d89 5389 sparc*-*-*)
7816bea0
DJ
5390 # Some standard aliases.
5391 case x$with_cpu in
5392 xsparc)
5393 with_cpu=v7
5394 ;;
7816bea0
DJ
5395 xsparcv9 | xsparc64)
5396 with_cpu=v9
5397 ;;
5398 esac
5399
38ae58ca
EB
5400 if test x$with_tune = x ; then
5401 case ${target} in
5402 *-leon-*)
5403 with_tune=leon
5404 ;;
5405 *-leon[3-9]*)
5406 with_tune=leon3
5407 ;;
5408 esac
5409 fi
5410
a4d05547 5411 # The SPARC port checks this value at compile-time.
73f09c99
DJ
5412 target_cpu_default2="TARGET_CPU_$with_cpu"
5413 ;;
07981468 5414
83079d89
DJ
5415 v850*-*-*)
5416 case "x$with_cpu" in
5417 x)
5418 ;;
dbdbd982 5419 xv850e | xv850e1 | xv850e2 | xv850e2v3 | xv850e3v5)
83079d89
DJ
5420 target_cpu_default2="TARGET_CPU_$with_cpu"
5421 ;;
1dcad079
NC
5422 xv850es)
5423 target_cpu_default2="TARGET_CPU_v850e1"
5424 ;;
83079d89
DJ
5425 esac
5426 ;;
175650bc
OH
5427 visium-*-*)
5428 target_cpu_default2="TARGET_CPU_$with_cpu"
5429 ;;
fe3e7450 5430esac
61ed06c3 5431
fe3e7450 5432t=
d821744c 5433all_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"
fe3e7450
AM
5434for option in $all_defaults
5435do
e21d5757 5436 eval "val=\$with_"`echo $option | sed s/-/_/g`
fe3e7450
AM
5437 if test -n "$val"; then
5438 case " $supported_defaults " in
5439 *" $option "*)
5440 ;;
5441 *)
5442 echo "This target does not support --with-$option." 2>&1
6e0eea31 5443 echo "Valid --with options are: $supported_defaults" 2>&1
fe3e7450
AM
5444 exit 1
5445 ;;
5446 esac
7816bea0 5447
fe3e7450
AM
5448 if test "x$t" = x
5449 then
5450 t="{ \"$option\", \"$val\" }"
5451 else
5452 t="${t}, { \"$option\", \"$val\" }"
7816bea0 5453 fi
7816bea0 5454 fi
fe3e7450 5455done
7816bea0 5456
fe3e7450
AM
5457if test "x$t" = x
5458then
5459 configure_default_options="{ { NULL, NULL} }"
5460else
5461 configure_default_options="{ ${t} }"
5462fi
5463
5464if test "$target_cpu_default2" != ""
5465then
5466 if test "$target_cpu_default" != ""
61ed06c3 5467 then
fe3e7450
AM
5468 target_cpu_default="(${target_cpu_default}|${target_cpu_default2})"
5469 else
5470 target_cpu_default=$target_cpu_default2
61ed06c3 5471 fi
fe3e7450 5472fi
87b6c18c
IV
5473
5474case ${target} in
5475i[34567]86-*-* | x86_64-*-*)
5476 if test x$enable_as_accelerator = xyes; then
5477 extra_programs="mkoffload\$(exeext)"
5478 fi
5479 ;;
5480esac