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