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