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