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