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