tree-optimization/112450 - avoid AVX512 style masking for BImode masks
[official-gcc.git] / gcc / config.gcc
blobba6d63e33ac66ad1ced3c17e22ceca7d62e4ccfe
1 # SPDX-License-Identifier: GPL-3.0-or-later
2 # GCC target-specific configuration file.
3 # Copyright (C) 1997-2023 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"
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 cortex-a57-fma-steering.o aarch64-speculation.o falkor-tag-collision-avoidance.o aarch-bti-insert.o aarch64-cc-fusion.o"
353         target_gtfiles="\$(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         extra_headers="larchintrin.h lsxintrin.h lasxintrin.h"
486         extra_objs="loongarch-c.o loongarch-builtins.o loongarch-cpu.o loongarch-opts.o loongarch-def.o"
487         extra_gcc_objs="loongarch-driver.o loongarch-cpu.o loongarch-opts.o loongarch-def.o"
488         extra_options="${extra_options} g.opt fused-madd.opt"
489         ;;
490 nds32*)
491         cpu_type=nds32
492         extra_headers="nds32_intrinsic.h nds32_isr.h nds32_init.inc"
493         case ${target} in
494           nds32*-*-linux*)
495             extra_options="${extra_options} nds32/nds32-linux.opt"
496             ;;
497           nds32*-*-elf*)
498             extra_options="${extra_options} nds32/nds32-elf.opt"
499             ;;
500           *)
501             ;;
502         esac
503         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"
504         ;;
505 nios2-*-*)
506         cpu_type=nios2
507         extra_options="${extra_options} g.opt"
508         ;;
509 nvptx-*-*)
510         cpu_type=nvptx
511         c_target_objs="nvptx-c.o"
512         cxx_target_objs="nvptx-c.o"
513         extra_options="${extra_options} nvptx/nvptx-gen.opt"
514         ;;
515 or1k*-*-*)
516         cpu_type=or1k
517         ;;
518 powerpc*-*-*)
519         cpu_type=rs6000
520         extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
521         extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o"
522         extra_objs="${extra_objs} rs6000-builtins.o rs6000-builtin.o"
523         extra_headers="ppc-asm.h altivec.h htmintrin.h htmxlintrin.h"
524         extra_headers="${extra_headers} bmi2intrin.h bmiintrin.h"
525         extra_headers="${extra_headers} xmmintrin.h mm_malloc.h emmintrin.h"
526         extra_headers="${extra_headers} mmintrin.h x86intrin.h"
527         extra_headers="${extra_headers} pmmintrin.h tmmintrin.h smmintrin.h"
528         extra_headers="${extra_headers} nmmintrin.h immintrin.h x86gprintrin.h"
529         extra_headers="${extra_headers} ppu_intrinsics.h spu2vmx.h vec_types.h si2vmx.h"
530         extra_headers="${extra_headers} amo.h"
531         case x$with_cpu in
532             xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[3456789]|xpower10|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|xe6500)
533                 cpu_is_64bit=yes
534                 ;;
535         esac
536         extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
537         target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.cc \$(srcdir)/config/rs6000/rs6000-call.cc"
538         target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-pcrel-opt.cc"
539         target_gtfiles="$target_gtfiles ./rs6000-builtins.h"
540         ;;
541 pru-*-*)
542         cpu_type=pru
543         ;;
544 riscv*)
545         cpu_type=riscv
546         extra_objs="riscv-builtins.o riscv-c.o riscv-sr.o riscv-shorten-memrefs.o riscv-selftests.o riscv-string.o"
547         extra_objs="${extra_objs} riscv-v.o riscv-vsetvl.o riscv-vector-costs.o riscv-avlprop.o"
548         extra_objs="${extra_objs} riscv-vector-builtins.o riscv-vector-builtins-shapes.o riscv-vector-builtins-bases.o"
549         extra_objs="${extra_objs} thead.o"
550         d_target_objs="riscv-d.o"
551         extra_headers="riscv_vector.h"
552         target_gtfiles="$target_gtfiles \$(srcdir)/config/riscv/riscv-vector-builtins.cc"
553         target_gtfiles="$target_gtfiles \$(srcdir)/config/riscv/riscv-vector-builtins.h"
554         ;;
555 rs6000*-*-*)
556         extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
557         extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
558         extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o"
559         target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.cc \$(srcdir)/config/rs6000/rs6000-call.cc"
560         target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-pcrel-opt.cc"
561         ;;
562 sparc*-*-*)
563         cpu_type=sparc
564         c_target_objs="sparc-c.o"
565         cxx_target_objs="sparc-c.o"
566         d_target_objs="sparc-d.o"
567         extra_headers="visintrin.h"
568         ;;
569 s390*-*-*)
570         cpu_type=s390
571         d_target_objs="s390-d.o"
572         extra_options="${extra_options} fused-madd.opt"
573         extra_headers="s390intrin.h htmintrin.h htmxlintrin.h vecintrin.h"
574         ;;
575 # Note the 'l'; we need to be able to match e.g. "shle" or "shl".
576 sh[123456789lbe]*-*-* | sh-*-*)
577         cpu_type=sh
578         extra_options="${extra_options} fused-madd.opt"
579         extra_objs="${extra_objs} sh_treg_combine.o sh-mem.o sh_optimize_sett_clrt.o"
580         ;;
581 v850*-*-*)
582         cpu_type=v850
583         ;;
584 tic6x-*-*)
585         cpu_type=c6x
586         extra_headers="c6x_intrinsics.h"
587         extra_options="${extra_options} c6x/c6x-tables.opt"
588         ;;
589 xtensa*-*-*)
590         extra_options="${extra_options} fused-madd.opt"
591         extra_objs="xtensa-dynconfig.o"
592         ;;
593 esac
595 tm_file=${cpu_type}/${cpu_type}.h
596 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-protos.h
597 then
598         tm_p_file=${cpu_type}/${cpu_type}-protos.h
601 tm_d_file=
602 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-d.h
603 then
604         tm_d_file="${tm_d_file} ${cpu_type}/${cpu_type}-d.h"
607 tm_rust_file=
608 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-rust.h
609 then
610         tm_rust_file="${cpu_type}/${cpu_type}-rust.h"
612 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-rust.cc
613 then
614         rust_target_objs="${rust_target_objs} ${cpu_type}-rust.o"
617 extra_modes=
618 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-modes.def
619 then
620         extra_modes=${cpu_type}/${cpu_type}-modes.def
622 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}.opt
623 then
624         extra_options="${extra_options} ${cpu_type}/${cpu_type}.opt"
627 case ${target} in
628 aarch64*-*-*)
629         tm_p_file="${tm_p_file} arm/aarch-common-protos.h"
630         case ${with_abi} in
631         "")
632                 if test "x$with_multilib_list" = xilp32; then
633                         tm_file="aarch64/biarchilp32.h ${tm_file}"
634                 else
635                         tm_file="aarch64/biarchlp64.h ${tm_file}"
636                 fi
637                 ;;
638         ilp32)
639                 tm_file="aarch64/biarchilp32.h ${tm_file}"
640                 ;;
641         lp64)
642                 tm_file="aarch64/biarchlp64.h ${tm_file}"
643                 ;;
644         *)
645                 echo "Unknown ABI used in --with-abi=$with_abi"
646                 exit 1
647         esac
648         ;;
649 i[34567]86-*-*)
650         if test "x$with_abi" != x; then
651                 echo "This target does not support --with-abi."
652                 exit 1
653         fi
654         ;;
655 x86_64-*-darwin*)
656         ;;
657 x86_64-*-*)
658         case ${with_abi} in
659         "")
660                 if test "x$with_multilib_list" = xmx32; then
661                         tm_file="i386/biarchx32.h ${tm_file}"
662                 else
663                         tm_file="i386/biarch64.h ${tm_file}"
664                 fi
665                 ;;
666         64 | m64)
667                 tm_file="i386/biarch64.h ${tm_file}"
668                 ;;
669         x32 | mx32)
670                 tm_file="i386/biarchx32.h ${tm_file}"
671                 ;;
672         *)
673                 echo "Unknown ABI used in --with-abi=$with_abi"
674                 exit 1
675         esac
676         ;;
677 arm*-*-*)
678         tm_p_file="arm/arm-flags.h ${tm_p_file} arm/aarch-common-protos.h"
679         ;;
680 esac
682 # On a.out targets, we need to use collect2.
683 case ${target} in
684 *-*-*aout*)
685         use_collect2=yes
686         ;;
687 esac
689 # Common C libraries.
690 tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
692 # 32-bit x86 processors supported by --with-arch=.  Each processor
693 # MUST be separated by exactly one space.
694 x86_archs="athlon athlon-4 athlon-fx athlon-mp athlon-tbird \
695 athlon-xp k6 k6-2 k6-3 geode c3 c3-2 winchip-c6 winchip2 i386 i486 \
696 i586 i686 pentium pentium-m pentium-mmx pentium2 pentium3 pentium3m \
697 pentium4 pentium4m pentiumpro prescott lakemont samuel-2 nehemiah \
698 c7 esther"
700 # 64-bit x86 processors supported by --with-arch=.  Each processor
701 # MUST be separated by exactly one space.
702 x86_64_archs="amdfam10 athlon64 athlon64-sse3 barcelona bdver1 bdver2 \
703 bdver3 bdver4 znver1 znver2 znver3 znver4 btver1 btver2 k8 k8-sse3 opteron \
704 opteron-sse3 nocona core2 corei7 corei7-avx core-avx-i core-avx2 atom \
705 slm nehalem westmere sandybridge ivybridge haswell broadwell bonnell \
706 silvermont knl knm skylake-avx512 cannonlake icelake-client icelake-server \
707 skylake goldmont goldmont-plus tremont cascadelake tigerlake cooperlake \
708 sapphirerapids alderlake rocketlake eden-x2 nano nano-1000 nano-2000 nano-3000 \
709 nano-x2 eden-x4 nano-x4 lujiazui yongfeng x86-64 x86-64-v2 x86-64-v3 x86-64-v4 \
710 sierraforest graniterapids graniterapids-d grandridge arrowlake arrowlake-s \
711 clearwaterforest pantherlake native"
713 # Additional x86 processors supported by --with-cpu=.  Each processor
714 # MUST be separated by exactly one space.
715 x86_cpus="generic intel"
717 # Common parts for widely ported systems.
718 case ${target} in
719 *-*-darwin*)
720   tmake_file="t-darwin "
721   tm_file="${tm_file} darwin.h"
722   darwin_os=`echo ${target} | sed 's/.*darwin\([0-9.]*\).*$/\1/'`
723   darwin_maj=`expr "$darwin_os" : '\([0-9]*\).*'`
724   macos_min=`expr "$darwin_os" : '[0-9]*\.\([0-9]*\).*'`
725   macos_maj=10
726   if test x"${macos_min}" = x; then
727     macos_min=0
728   fi
729   def_ld64=85.2
730   # Tools hosted on earlier versions of Darwin constrained all object
731   # alignment to be 2^15 or smaller.  From Darwin11 (macOS 10.7) the
732   # alignment of non-common is allowed to be up to 2^28.  Note that the
733   # larger alignment is permitted when targeting 10.6 from 10.7 so that
734   # the constraint only need be applied per host (and only if the host
735   # is Darwin).
736   case ${host} in
737       *-*-darwin[4-9]* | *-*-darwin10*)
738           tm_defines="$tm_defines L2_MAX_OFILE_ALIGNMENT=15U"
739           ;;
740       *)
741           tm_defines="$tm_defines L2_MAX_OFILE_ALIGNMENT=28U"
742           ;;
743   esac
744   case ${target} in
745       # Darwin 4 to 19 correspond to macOS 10.0 to 10.15
746       *-*-darwin[4-9]* | *-*-darwin1[0-9]*)
747         macos_min=`expr $darwin_maj - 4`
748         ;;
749       *-*-darwin2*)
750         # Darwin 20 corresponds to macOS 11, Darwin 21 to macOS 12.
751         macos_maj=`expr $darwin_maj - 9`
752         def_ld64=609.0
753         ;;
754       *-*-darwin)
755         case ${cpu_type} in
756           aarch64) macos_maj=11 ;;
757           x86_64) macos_min=6 ;;
758           *)  macos_min=5 ;;
759           esac
760           case ${host} in
761             *-*-darwin*) tm_defines="$tm_defines DARWIN_USE_KERNEL_VERS" ;;
762             *)
763               # If configuring a cross-compiler then we will have set some
764               # default above, but it is probably not what was intended.
765               echo "Warning: Using ${target} is only suitable for Darwin hosts" 1>&2
766               echo "configure with an explicit target version" 1>&2
767               ;;
768           esac
769         ;;
770       *)
771         echo "Error: configuring for an unreleased macOS version ${target}" 1>&2
772         exit 1
773         ;;
774   esac
775   tm_defines="$tm_defines DEF_MIN_OSX_VERSION=\\\"${macos_maj}.${macos_min}\\\""
776   tm_defines="$tm_defines DEF_LD64=\\\"${def_ld64}\\\""
777   tm_file="${tm_file} ${cpu_type}/darwin.h"
778   tm_p_file="${tm_p_file} darwin-protos.h"
779   target_gtfiles="$target_gtfiles \$(srcdir)/config/darwin.cc"
780   extra_options="${extra_options} rpath.opt darwin.opt"
781   c_target_objs="${c_target_objs} darwin-c.o"
782   cxx_target_objs="${cxx_target_objs} darwin-c.o"
783   d_target_objs="${d_target_objs} darwin-d.o"
784   fortran_target_objs="darwin-f.o"
785   rust_target_objs="${rust_target_objs} darwin-rust.o"
786   target_has_targetcm=yes
787   target_has_targetdm=yes
788   target_has_targetrustm=yes
789   extra_objs="${extra_objs} darwin.o"
790   extra_gcc_objs="darwin-driver.o"
791   default_use_cxa_atexit=yes
792   use_gcc_stdint=wrap
793   case ${enable_threads} in
794     "" | yes | posix) thread_file='posix' ;;
795   esac
796   ;;
797 *-*-dragonfly*)
798   gas=yes
799   gnu_ld=yes
800   tmake_file="t-slibgcc"
801   case ${enable_threads} in
802     "" | yes | posix)
803       thread_file='posix'
804       ;;
805     no | single)
806       # Let these non-posix thread selections fall through if requested
807       ;;
808     *)
809       echo 'Unknown thread configuration for DragonFly BSD'
810       exit 1
811       ;;
812   esac
813   extra_options="$extra_options rpath.opt dragonfly.opt"
814   default_use_cxa_atexit=yes
815   use_gcc_stdint=wrap
816   d_target_objs="${d_target_objs} dragonfly-d.o"
817   tmake_file="${tmake_file} t-dragonfly"
818   target_has_targetdm=yes
819   rust_target_objs="${rust_target_objs} dragonfly-rust.o"
820   target_has_targetrustm=yes
821   ;;
822 *-*-freebsd*)
823   # This is the generic ELF configuration of FreeBSD.  Later
824   # machine-specific sections may refine and add to this
825   # configuration.
826   #
827   # Due to tm_file entry ordering issues that vary between cpu
828   # architectures, we only define fbsd_tm_file to allow the
829   # machine-specific section to dictate the final order of all
830   # entries of tm_file with the minor exception that components
831   # of the tm_file set here will always be of the form:
832   #
833   # freebsd<version_number>.h [freebsd-<conf_option>.h ...] freebsd-spec.h freebsd.h
834   #
835   # The machine-specific section should not tamper with this
836   # ordering but may order all other entries of tm_file as it
837   # pleases around the provided core setting.
838   gas=yes
839   gnu_ld=yes
840   fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
841   if test "$fbsd_major" = ""; then
842     echo "Specify the major version number of the targeted FreeBSD release"
843     echo "like this: --target=amd64-unknown-freebsd10.1"
844     exit 1
845   fi
846   tm_defines="${tm_defines} FBSD_MAJOR=${fbsd_major}"
847   tmake_file="t-slibgcc"
848   case ${enable_threads} in
849     no)
850       fbsd_tm_file="${fbsd_tm_file} freebsd-nthr.h"
851       ;;
852     "" | yes | posix)
853       thread_file='posix'
854       ;;
855     *)
856       echo 'Unknown thread configuration for FreeBSD'
857       exit 1
858       ;;
859   esac
860   fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h freebsd-stdint.h"
861   extra_options="$extra_options rpath.opt freebsd.opt"
862   case ${target} in
863     *-*-freebsd[345].*)
864       :;;
865     *)
866       default_use_cxa_atexit=yes;;
867   esac
868   use_gcc_stdint=wrap
869   d_target_objs="${d_target_objs} freebsd-d.o"
870   tmake_file="${tmake_file} t-freebsd"
871   target_has_targetdm=yes
872   rust_target_objs="${rust_target_objs} freebsd-rust.o"
873   target_has_targetrustm=yes
874   ;;
875 *-*-fuchsia*)
876   native_system_header_dir=/include
877   tmake_file="t-fuchsia"
878   rust_target_objs="${rust_target_objs} fuchsia-rust.o"
879   target_has_targetrustm=yes
880   ;;
881 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi)
882   extra_options="$extra_options gnu-user.opt"
883   gas=yes
884   gnu_ld=yes
885   case ${enable_threads} in
886     "" | yes | posix) thread_file='posix' ;;
887   esac
888   tmake_file="t-slibgcc"
889   case $target in
890     *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
891       :;;
892     *-*-gnu*)
893       native_system_header_dir=/include
894       ;;
895   esac
896   # Linux C libraries selection switch: glibc / uclibc / bionic.
897   # uclibc and bionic aren't usable for GNU/Hurd and neither for GNU/k*BSD.
898   case $target in
899     *linux*)
900       tm_p_file="${tm_p_file} linux-protos.h"
901       tmake_file="${tmake_file} t-linux"
902       extra_objs="${extra_objs} linux.o"
903       extra_options="${extra_options} linux.opt"
904       ;;
905   esac
906   case $target in
907     *-*-*android*)
908       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC"
909       ;;
910     *-*-*uclibc* | *-*-uclinuxfdpiceabi)
911       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
912       ;;
913     *-*-*musl*)
914       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
915       ;;
916     *)
917       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
918       ;;
919   esac
920   # Assume that glibc or uClibc or Bionic are being used and so __cxa_atexit
921   # is provided.
922   default_use_cxa_atexit=yes
923   use_gcc_tgmath=no
924   use_gcc_stdint=wrap
925   # Enable compilation for Android by default for *android* targets.
926   case $target in
927     *-*-*android*)
928       tm_defines="$tm_defines ANDROID_DEFAULT=1"
929       ;;
930     *)
931       tm_defines="$tm_defines ANDROID_DEFAULT=0"
932       ;;
933   esac
934   c_target_objs="${c_target_objs} glibc-c.o"
935   cxx_target_objs="${cxx_target_objs} glibc-c.o"
936   tmake_file="${tmake_file} t-glibc"
937   target_has_targetcm=yes
938   case $target in
939     *-*-*uclibc* | *-*-uclinuxfdpiceabi)
940       ;;
941     *)
942       # Linux targets always support .init_array.
943       gcc_cv_initfini_array=yes
944       ;;
945   esac
946   case $target in
947     *-*-*linux*)
948       d_target_objs="${d_target_objs} linux-d.o"
949       target_has_targetdm=yes
950       rust_target_objs="${rust_target_objs} linux-rust.o"
951       target_has_targetrustm=yes
952       ;;
953     *-*-kfreebsd*-gnu)
954       d_target_objs="${d_target_objs} kfreebsd-d.o"
955       target_has_targetdm=yes
956       ;;
957     *-*-kopensolaris*-gnu)
958       d_target_objs="${d_target_objs} kopensolaris-d.o"
959       target_has_targetdm=yes
960       ;;
961     *-*-gnu*)
962       d_target_objs="${d_target_objs} gnu-d.o"
963       target_has_targetdm=yes
964       ;;
965   esac
966   ;;
967 *-*-netbsd*)
968   tm_p_file="${tm_p_file} netbsd-protos.h"
969   tmake_file="t-netbsd t-slibgcc"
970   extra_objs="${extra_objs} netbsd.o"
971   d_target_objs="${d_target_objs} netbsd-d.o"
972   gas=yes
973   gnu_ld=yes
974   use_gcc_stdint=wrap
975   case ${enable_threads} in
976     "" | yes | posix) thread_file='posix' ;;
977   esac
978   nbsd_tm_file="netbsd.h netbsd-stdint.h netbsd-elf.h"
979   default_use_cxa_atexit=yes
980   target_has_targetdm=yes
981   case ${target} in
982     arm*-* | i[34567]86-* | powerpc*-* | sparc*-* | x86_64-*)
983       default_gnu_indirect_function=yes
984       ;;
985   esac
986   rust_target_objs="${rust_target_objs} netbsd-rust.o"
987   target_has_targetrustm=yes
988   ;;
989 *-*-openbsd*)
990   tmake_file="t-openbsd"
991   case ${enable_threads} in
992     yes)
993       thread_file='posix'
994       ;;
995   esac
996   case ${target} in
997     *-*-openbsd4.[3-9]|*-*-openbsd[5-9]*)
998       default_use_cxa_atexit=yes
999       ;;
1000   esac
1001   d_target_objs="${d_target_objs} openbsd-d.o"
1002   target_has_targetdm=yes
1003   rust_target_objs="${rust_target_objs} openbsd-rust.o"
1004   target_has_targetrustm=yes
1005   ;;
1006 *-*-phoenix*)
1007   gas=yes
1008   gnu_ld=yes
1009   default_use_cxa_atexit=yes
1010   ;;
1011 *-*-rtems*)
1012   case ${enable_threads} in
1013     "" | yes | rtems) thread_file='rtems' ;;
1014     posix) thread_file='posix' ;;
1015     no) ;;
1016     *)
1017       echo 'Unknown thread configuration for RTEMS'
1018       exit 1
1019       ;;
1020   esac
1021   tmake_file="${tmake_file} t-rtems"
1022   extra_options="${extra_options} rtems.opt"
1023   default_use_cxa_atexit=yes
1024   use_gcc_stdint=wrap
1025   ;;
1026 *-*-uclinux*)
1027   extra_options="$extra_options gnu-user.opt"
1028   use_gcc_stdint=wrap
1029   case ${enable_threads} in
1030     "" | yes | posix) thread_file='posix' ;;
1031   esac
1032   tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC SINGLE_LIBC"
1033   ;;
1034 *-*-rdos*)
1035   use_gcc_stdint=wrap
1036   ;;
1037 *-*-solaris2*)
1038   # i?86-*-solaris2* needs to insert headers between cpu default and
1039   # Solaris 2 specific ones.
1040   sol2_tm_file_head="elfos.h ${cpu_type}/sysv4.h"
1041   sol2_tm_file_tail="${cpu_type}/sol2.h sol2.h"
1042   sol2_tm_file="${sol2_tm_file_head} ${sol2_tm_file_tail}"
1043   case ${target} in
1044     *-*-solaris2.1[1-9]*)
1045       # __cxa_atexit was introduced in Solaris 11.4.
1046       default_use_cxa_atexit=yes
1047       ;;
1048   esac
1049   use_gcc_stdint=wrap
1050   if test x$gnu_ld = xyes; then
1051     tm_file="usegld.h ${tm_file}"
1052   fi
1053   if test x$gas = xyes; then
1054     tm_file="usegas.h ${tm_file}"
1055   fi
1056   tm_p_file="${tm_p_file} sol2-protos.h"
1057   tmake_file="${tmake_file} t-sol2 t-slibgcc"
1058   c_target_objs="${c_target_objs} sol2-c.o"
1059   cxx_target_objs="${cxx_target_objs} sol2-c.o sol2-cxx.o"
1060   d_target_objs="${d_target_objs} sol2-d.o"
1061   extra_objs="${extra_objs} sol2.o sol2-stubs.o"
1062   extra_options="${extra_options} sol2.opt"
1063   case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
1064     "":yes:* | yes:yes:* )
1065       thread_file=posix
1066       ;;
1067   esac
1068   target_has_targetdm=yes
1069   rust_target_objs="${rust_target_objs} sol2-rust.o"
1070   target_has_targetrustm=yes
1071   ;;
1072 *-*-*vms*)
1073   extra_options="${extra_options} vms/vms.opt"
1074   xmake_file=vms/x-vms
1075   tmake_file="vms/t-vms t-slibgcc"
1076   extra_objs="vms.o"
1077   target_gtfiles="$target_gtfiles \$(srcdir)/config/vms/vms.cc"
1078   tm_p_file="${tm_p_file} vms/vms-protos.h"
1079   xm_file="vms/xm-vms.h"
1080   c_target_objs="vms-c.o"
1081   cxx_target_objs="vms-c.o"
1082   fortran_target_objs="vms-f.o"
1083   use_gcc_stdint=provide
1084   tm_file="${tm_file} vms/vms-stdint.h"
1085   if test x$gnu_ld != xyes; then
1086     # Build wrappers for native case.
1087     extra_programs="ld\$(exeext) ar\$(exeext)"
1088     tmake_file="$tmake_file vms/t-vmsnative"
1089   fi
1090   ;;
1091 *-*-vxworks*)
1092   tmake_file=t-vxworks
1093   xm_defines=POSIX
1095   extra_options="${extra_options} vxworks.opt"
1096   extra_objs="$extra_objs vxworks.o"
1098   c_target_objs="${c_target_objs} vxworks-c.o"
1099   cxx_target_objs="${cxx_target_objs} vxworks-c.o"
1100   extra_headers="${extra_headers} ../vxworks/vxworks-predef.h"
1101   target_has_targetcm="yes"
1103   rust_target_objs="${rust_target_objs} vxworks-rust.o"
1104   target_has_targetrustm=yes
1106   extra_gcc_objs="vxworks-driver.o"
1108   # This private header exposes a consistent interface for checks on
1109   # the VxWorks version our runtime header files need to perform, based on
1110   # what the system headers adverstise:
1112   extra_headers="${extra_headers} ../vxworks/_vxworks-versions.h"
1114   # Starting from VxWorks 7, the system comes with a Dinkumware
1115   # environment which requires the inclusion of "yvals.h" before other
1116   # system headers.  We provide wrapped versions of a few headers to
1117   # accomodate such constraints:
1119   extra_headers="${extra_headers} ../vxworks/_yvals.h"
1120   extra_headers="${extra_headers} ../vxworks/_yvals-wrapper.h"
1122   extra_headers="${extra_headers} ../vxworks/math.h ../vxworks/complex.h"
1123   extra_headers="${extra_headers} ../vxworks/inttypes.h ../vxworks/setjmp.h"
1125   # We provide (a tailored version of) stdint.h
1126   tm_file="${tm_file} vxworks-stdint.h"
1127   use_gcc_stdint=provide
1129   case ${enable_threads} in
1130     no) ;;
1131     "" | yes | vxworks) thread_file='vxworks' ;;
1132     *) echo 'Unknown thread configuration for VxWorks'; exit 1 ;;
1133   esac
1135   # A few common macro definitions conveying general characteristics
1136   # of the configuration at hand. Note that by VxWorks 7, we mean the
1137   # the SR6xx major update or beyond in vendor parlance:
1139   case $target in
1140     *-*-vxworks7*)
1141       tm_defines="$tm_defines TARGET_VXWORKS7=1"
1142       ;;
1143   esac
1144   case $target in
1145     *64-*-vxworks*)
1146       tm_defines="$tm_defines TARGET_VXWORKS64=1"
1147       ;;
1148   esac
1150   # Then a few build configuration controls for VxWorks 7, which
1151   # has specificities on top of which we aim to provide more complete
1152   # C++ support:
1154   case $target in
1155     *-*-vxworks7*)
1156       # VxWorks 7 always has init/fini_array support and it is simpler to
1157       # just leverage this, sticking to what the system toolchain does:
1158       gcc_cv_initfini_array=yes
1159       ;;
1160   esac
1161   ;;
1162 *-*-elf|arc*-*-elf*)
1163   # Assume that newlib is being used and so __cxa_atexit is provided.
1164   default_use_cxa_atexit=yes
1165   use_gcc_stdint=wrap
1167   case "${with_newlib}-${with_headers}" in
1168   no-no) use_gcc_stdint=provide ;;
1169   *) ;;
1170   esac
1171   ;;
1172 esac
1174 # Figure out if we need to enable heap trampolines by default
1175 case ${target} in
1176 *-*-darwin2*)
1177   # Currently, we do this for macOS 11 and above.
1178   tm_defines="$tm_defines HEAP_TRAMPOLINES_INIT=1"
1179   ;;
1181   tm_defines="$tm_defines HEAP_TRAMPOLINES_INIT=0"
1182   ;;
1183 esac
1185 case ${target} in
1186 aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
1187         tm_file="${tm_file} elfos.h newlib-stdint.h"
1188         tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-elf-raw.h"
1189         tmake_file="${tmake_file} aarch64/t-aarch64"
1190         case $target in
1191         aarch64-*-elf*)
1192                 use_gcc_stdint=wrap
1193                 ;;
1194         aarch64-*-fuchsia*)
1195                 tm_file="${tm_file} fuchsia.h"
1196                 ;;
1197         aarch64-*-rtems*)
1198                 tm_file="${tm_file} aarch64/rtems.h rtems.h"
1199                 ;;
1200         esac
1201         case $target in
1202         aarch64_be-*)
1203                 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1204                 ;;
1205         esac
1206         aarch64_multilibs="${with_multilib_list}"
1207         if test "$aarch64_multilibs" = "default"; then
1208                 aarch64_multilibs="lp64,ilp32"
1209         fi
1210         aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1211         for aarch64_multilib in ${aarch64_multilibs}; do
1212                 case ${aarch64_multilib} in
1213                 ilp32 | lp64 )
1214                         TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1215                         ;;
1216                 *)
1217                         echo "--with-multilib-list=${aarch64_multilib} not supported."
1218                         exit 1
1219                 esac
1220         done
1221         TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1222         ;;
1223 aarch64*-*-freebsd*)
1224         tm_file="${tm_file} elfos.h ${fbsd_tm_file}"
1225         tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-freebsd.h"
1226         tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
1227         tm_defines="${tm_defines}  TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1228         ;;
1229 aarch64*-*-netbsd*)
1230         tm_file="${tm_file} elfos.h ${nbsd_tm_file}"
1231         tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-netbsd.h"
1232         tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-netbsd"
1233         extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1234         ;;
1235 aarch64*-*-linux*)
1236         tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h"
1237         tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-linux.h"
1238         tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-linux"
1239         tm_defines="${tm_defines}  TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1240         case $target in
1241         aarch64_be-*)
1242                 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1243                 ;;
1244         esac
1245         aarch64_multilibs="${with_multilib_list}"
1246         if test "$aarch64_multilibs" = "default"; then
1247                 # TODO: turn on ILP32 multilib build after its support is mature.
1248                 # aarch64_multilibs="lp64,ilp32"
1249                 aarch64_multilibs="lp64"
1250         fi
1251         aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1252         for aarch64_multilib in ${aarch64_multilibs}; do
1253                 case ${aarch64_multilib} in
1254                 ilp32 | lp64 )
1255                         TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1256                         ;;
1257                 *)
1258                         echo "--with-multilib-list=${aarch64_multilib} not supported."
1259                         exit 1
1260                 esac
1261         done
1262         TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1263         ;;
1264 aarch64*-wrs-vxworks*)
1265         tm_file="${tm_file} elfos.h aarch64/aarch64-elf.h"
1266         tm_file="${tm_file} vx-common.h vxworks.h aarch64/aarch64-vxworks.h"
1267         tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-vxworks"
1268         ;;
1269 alpha*-*-linux*)
1270         tm_file="elfos.h ${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h glibc-stdint.h"
1271         tmake_file="${tmake_file} alpha/t-linux alpha/t-alpha"
1272         extra_options="${extra_options} alpha/elf.opt"
1273         ;;
1274 alpha*-*-netbsd*)
1275         tm_file="elfos.h ${tm_file} ${nbsd_tm_file} alpha/elf.h alpha/netbsd.h"
1276         tmake_file="${tmake_file} alpha/t-alpha"
1277         extra_options="${extra_options} netbsd.opt netbsd-elf.opt \
1278                        alpha/elf.opt"
1279         ;;
1280 alpha*-*-openbsd*)
1281         tm_defines="${tm_defines} OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_FUNCTION_SIZE OBSD_HAS_DECLARE_OBJECT"
1282         tm_file="elfos.h alpha/alpha.h alpha/elf.h openbsd.h openbsd-stdint.h alpha/openbsd.h openbsd-libpthread.h"
1283         tmake_file="${tmake_file} alpha/t-alpha"
1284         extra_options="${extra_options} openbsd.opt alpha/elf.opt"
1285         # default x-alpha is only appropriate for dec-osf.
1286         ;;
1287 alpha*-dec-*vms*)
1288         tm_file="${tm_file} vms/vms.h alpha/vms.h"
1289         tmake_file="${tmake_file} alpha/t-vms alpha/t-alpha"
1290         ;;
1291 arc*-*-elf*)
1292         tm_file="arc/arc-arch.h elfos.h newlib-stdint.h arc/elf.h ${tm_file}"
1293         tmake_file="arc/t-multilib arc/t-arc"
1294         extra_gcc_objs="driver-arc.o"
1295         if test "x$with_cpu" != x; then
1296                 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1297         fi
1298         if test x${with_endian} = x; then
1299                 case ${target} in
1300                 arc*be-*-* | arc*eb-*-*)        with_endian=big ;;
1301                 *)                              with_endian=little ;;
1302                 esac
1303         fi
1304         case ${with_endian} in
1305         big|little)             ;;
1306         *)      echo "with_endian=${with_endian} not supported."; exit 1 ;;
1307         esac
1308         case ${with_endian} in
1309         big*)   tm_file="arc/big.h ${tm_file}"
1310         esac
1311         ;;
1312 arc*-*-linux*)
1313         tm_file="arc/arc-arch.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arc/linux.h ${tm_file}"
1314         tmake_file="${tmake_file} arc/t-multilib-linux arc/t-arc"
1315         extra_gcc_objs="driver-arc.o"
1316         if test "x$with_cpu" != x; then
1317                 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1318         fi
1319         if test x${with_endian} = x; then
1320                 case ${target} in
1321                 arc*be-*-* | arc*eb-*-*)        with_endian=big ;;
1322                 *)                              with_endian=little ;;
1323                 esac
1324         fi
1325         case ${with_endian} in
1326         big|little)             ;;
1327         *)      echo "with_endian=${with_endian} not supported."; exit 1 ;;
1328         esac
1329         case ${with_endian} in
1330         big*)   tm_file="arc/big.h ${tm_file}"
1331         esac
1332         # Force .init_array support.  The configure script cannot always
1333         # automatically detect that GAS supports it, yet we require it.
1334         gcc_cv_initfini_array=yes
1335         ;;
1336 arm-wrs-vxworks7*)
1337         # We only support VxWorks 7 now on ARM, post SR600.  Pre SR600
1338         # VxWorks 7 was transitory and major versions prior to 7 were based
1339         # on long deprecated ABI, not supported at all any more regardless
1340         # of VxWorks.
1341         extra_options="${extra_options} arm/vxworks.opt"
1342         tmake_file="${tmake_file} arm/t-arm arm/t-vxworks arm/t-bpabi"
1343         tm_file="elfos.h arm/elf.h arm/bpabi.h arm/aout.h ${tm_file}"
1344         tm_file="${tm_file} vx-common.h vxworks.h arm/vxworks.h"
1345         target_cpu_cname="generic-armv7-a"
1346         need_64bit_hwint=yes
1347         ;;
1348 arm*-*-freebsd*)                # ARM FreeBSD EABI
1349         tm_file="elfos.h ${fbsd_tm_file} arm/elf.h"
1350         case $target in
1351         arm*b-*-freebsd*)
1352             tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1353             ;;
1354         esac
1355         tmake_file="${tmake_file} arm/t-arm arm/t-bpabi"
1356         tm_file="${tm_file} arm/bpabi.h arm/freebsd.h arm/aout.h arm/arm.h"
1357         case $target in
1358         armv6*-*-freebsd*)
1359             target_cpu_cname="arm1176jzf-s"
1360             if test $fbsd_major -ge 11; then
1361                tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1362             fi
1363             ;;
1364         armv7*-*-freebsd*)
1365             target_cpu_cname="generic-armv7-a"
1366             tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1367             ;;
1368         *)
1369             target_cpu_cname="arm9"
1370             ;;
1371         esac
1372         with_tls=${with_tls:-gnu}
1373         ;;
1374 arm*-*-netbsdelf*)
1375         target_cpu_cname="strongarm"
1376         tmake_file="${tmake_file} arm/t-arm"
1377         tm_file="elfos.h ${nbsd_tm_file} arm/elf.h"
1378         extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1379         case ${target} in
1380         arm*eb-*) tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" ;;
1381         esac
1382         case ${target} in
1383         arm*-*-netbsdelf-*eabi*)
1384             tm_file="$tm_file arm/bpabi.h arm/netbsd-elf.h arm/netbsd-eabi.h"
1385             tmake_file="$tmake_file arm/t-bpabi arm/t-netbsdeabi"
1386             ;;
1387         *)
1388             tm_file="$tm_file arm/netbsd-elf.h"
1389             tmake_file="$tmake_file arm/t-netbsd"
1390             ;;
1391         esac
1392         tm_file="${tm_file} arm/aout.h arm/arm.h"
1393         case ${target} in
1394         arm*-*-netbsdelf-*eabihf*)
1395             # Hard-float requires at least Arm v5te
1396             target_cpu_cname="arm10e"
1397             tm_defines="${tm_defines} TARGET_DEFAULT_FLOAT_ABI=ARM_FLOAT_ABI_HARD"
1398             ;;
1399         esac
1400         case ${target} in
1401         armv6*) target_cpu_cname="arm1176jzf-s";;
1402         armv7*) target_cpu_cname="generic-armv7-a";;
1403         esac
1404         ;;
1405 arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)
1406         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"
1407         extra_options="${extra_options} linux-android.opt"
1408         case $target in
1409         arm*b-*-linux*)
1410             tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1411             ;;
1412         esac
1413         tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
1414         tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h arm/aout.h arm/arm.h"
1415         case $target in
1416         arm*-*-uclinuxfdpiceabi)
1417             tm_file="$tm_file arm/uclinuxfdpiceabi.h"
1418             ;;
1419         esac
1420         # Define with_float to "hard" if not already defined and
1421         # target name ends with "hf"
1422         case $target:$with_float in
1423         arm*-*-*hf:)
1424             with_float=hard
1425             ;;
1426         esac
1427         # Generation of floating-point instructions requires at least ARMv5te.
1428         if [ "$with_float" = "hard" -o "$with_float" = "softfp" ] ; then
1429             target_cpu_cname="arm10e"
1430         else
1431             target_cpu_cname="arm10tdmi"
1432         fi
1433         # Define multilib configuration for arm-linux-androideabi.
1434         case ${target} in
1435         *-androideabi)
1436             tmake_file="$tmake_file arm/t-linux-androideabi"
1437             ;;
1438         esac
1439         # The EABI requires the use of __cxa_atexit.
1440         default_use_cxa_atexit=yes
1441         with_tls=${with_tls:-gnu}
1442         ;;
1443 arm*-*-uclinux*eabi*)           # ARM ucLinux
1444         tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
1445         tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi"
1446         tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h arm/aout.h arm/arm.h"
1447         target_cpu_cname="arm7tdmi"
1448         # The EABI requires the use of __cxa_atexit.
1449         default_use_cxa_atexit=yes
1450         ;;
1451 arm*-*-phoenix*)
1452         tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1453         tm_file="${tm_file} newlib-stdint.h phoenix.h"
1454         tm_file="${tm_file} arm/aout.h arm/arm.h"
1455         tmake_file="${tmake_file} arm/t-arm arm/t-bpabi arm/t-phoenix"
1456         target_cpu_cname="arm7tdmi"
1457         ;;
1458 arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
1459         case ${target} in
1460         arm*eb-*-eabi*)
1461           tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1462         esac
1463         default_use_cxa_atexit=yes
1464         tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1465         tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf"
1466         target_cpu_cname="arm7tdmi"
1467         case ${target} in
1468         arm*-*-eabi*)
1469           tm_file="$tm_file newlib-stdint.h"
1470           tmake_file="${tmake_file} arm/t-bpabi"
1471           use_gcc_stdint=wrap
1472           ;;
1473         arm*-*-fuchsia*)
1474           tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h"
1475           tmake_file="${tmake_file} arm/t-bpabi arm/t-fuchsia"
1476           target_cpu_cname="generic-armv7-a"
1477           ;;
1478         arm*-*-rtems*)
1479           tm_file="${tm_file} arm/rtems.h rtems.h newlib-stdint.h"
1480           tmake_file="${tmake_file} arm/t-bpabi arm/t-rtems"
1481           ;;
1482         arm*-*-symbianelf*)
1483           tm_file="${tm_file} arm/symbian.h"
1484           # We do not include t-bpabi for Symbian OS because the system
1485           # provides its own implementation of the BPABI functions.
1486           tmake_file="${tmake_file} arm/t-symbian"
1487           target_cpu_cname="arm10tdmi"
1488           ;;
1489         esac
1490         tm_file="${tm_file} arm/aout.h arm/arm.h"
1491         ;;
1492 avr-*-*)
1493         tm_file="elfos.h avr/elf.h avr/avr-arch.h avr/avr.h avr/specs.h avr/avr-stdint.h"
1494         if test x${with_avrlibc} != xno; then
1495             tm_file="${tm_file} ${cpu_type}/avrlibc.h"
1496             tm_defines="${tm_defines} WITH_AVRLIBC"
1497         fi
1498         # Work out avr_double_comparison which is 2 or 3 and is used in
1499         # target hook FLOAT_LIB_COMPARE_RETURNS_BOOL to determine whether
1500         # DFmode comparisons return 3-state or 2-state results.
1501         case y${with_double_comparison} in
1502             y | ytristate)
1503                 avr_double_comparison=3
1504                 ;;
1505             ybool | ylibf7)
1506                 avr_double_comparison=2
1507                 ;;
1508             *)
1509                 echo "Error: --with-double-comparison= can only be used with: 'tristate', 'bool', 'libf7'" 1>&2
1510                 exit 1
1511                 ;;
1512         esac
1513         case "y${with_libf7}" in
1514             yno)
1515                 # avr_double_comparison as set above.
1516                 ;;
1517             ylibgcc)
1518                 avr_double_comparison=2
1519                 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1520                 ;;
1521             y | yyes | ymath-symbols)
1522                 avr_double_comparison=2
1523                 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1524                 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1525                 tm_defines="${tm_defines} WITH_LIBF7_MATH_SYMBOLS"
1526                 ;;
1527             ymath)
1528                 avr_double_comparison=2
1529                 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1530                 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1531                 ;;
1532             *)
1533                 echo "Error: --with-libf7=${with_libf7} but can only be used with: 'libgcc', 'math', 'math-symbols', 'yes', 'no'" 1>&2
1534                 exit 1
1535                 ;;
1536         esac
1537         tm_defines="${tm_defines} WITH_DOUBLE_COMPARISON=${avr_double_comparison}"
1538         case y${with_double} in
1539             y32)
1540                 avr_double=32
1541                 tm_defines="${tm_defines} HAVE_DOUBLE32"
1542                 ;;
1543             y64)
1544                 avr_double=64
1545                 tm_defines="${tm_defines} HAVE_DOUBLE64"
1546                 ;;
1547             y64,32)
1548                 avr_double=64
1549                 avr_double_multilib=1
1550                 tm_defines="${tm_defines} HAVE_DOUBLE32"
1551                 tm_defines="${tm_defines} HAVE_DOUBLE64"
1552                 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1553                 ;;
1554             y | y32,64)
1555                 avr_double=32
1556                 avr_double_multilib=1
1557                 tm_defines="${tm_defines} HAVE_DOUBLE32"
1558                 tm_defines="${tm_defines} HAVE_DOUBLE64"
1559                 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1560                 ;;
1561             *)
1562                 echo "Error: --with-double= can only be used with: '32', '32,64', '64,32', '64'" 1>&2
1563                 exit 1
1564                 ;;
1565         esac
1566         case y${with_long_double} in
1567             y32)
1568                 avr_long_double=32
1569                 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1570                 ;;
1571             y64)
1572                 avr_long_double=64
1573                 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1574                 ;;
1575             y | y64,32)
1576                 avr_long_double=64
1577                 avr_long_double_multilib=1
1578                 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1579                 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1580                 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1581                 ;;
1582             y32,64)
1583                 avr_long_double=32
1584                 avr_long_double_multilib=1
1585                 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1586                 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1587                 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1588                 ;;
1589             ydouble)
1590                 avr_long_double=${avr_double}
1591                 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_IS_DOUBLE"
1592                 if test y${avr_double_multilib} = y1; then
1593                     tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1594                     tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1595                 else
1596                     tm_defines="${tm_defines} HAVE_LONG_DOUBLE${avr_long_double}"
1597                 fi
1598                 ;;
1599             *)
1600                 echo "Error: --with-long_double= can only be used with: '32', '32,64', '64,32', '64', 'double'" 1>&2
1601                 exit 1
1602                 ;;
1603         esac
1604         if test ${avr_long_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 32xy1z; then
1605             if test y${with_long_double} != ydouble; then
1606                 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
1607                 exit 1
1608             fi
1609         fi
1610         if test ${avr_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 64x1yz; then
1611             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
1612             exit 1
1613         fi
1614         if test y${avr_double}${avr_long_double} = y6432; then
1615             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
1616             exit 1
1617         fi
1618         tm_defines="${tm_defines} WITH_DOUBLE${avr_double}"
1619         tm_defines="${tm_defines} WITH_LONG_DOUBLE${avr_long_double}"
1620         tmake_file="${tmake_file} avr/t-avr avr/t-multilib"
1621         use_gcc_stdint=wrap
1622         extra_gcc_objs="driver-avr.o avr-devices.o"
1623         extra_objs="avr-devices.o avr-log.o"
1624         ;;
1625 bfin*-elf*)
1626         tm_file="${tm_file} elfos.h newlib-stdint.h bfin/elf.h"
1627         tmake_file=bfin/t-bfin-elf
1628         use_collect2=no
1629         ;;
1630 bfin*-uclinux*)
1631         tm_file="${tm_file} elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/uclinux.h"
1632         tmake_file=bfin/t-bfin-uclinux
1633         use_collect2=no
1634         ;;
1635 bfin*-linux-uclibc*)
1636         tm_file="${tm_file} elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/linux.h ./linux-sysroot-suffix.h"
1637         tmake_file="${tmake_file} bfin/t-bfin-linux"
1638         use_collect2=no
1639         ;;
1640 bfin*-rtems*)
1641         tm_file="${tm_file} elfos.h bfin/elf.h bfin/rtems.h rtems.h newlib-stdint.h"
1642         tmake_file="${tmake_file} bfin/t-rtems"
1643         ;;
1644 bfin*-*)
1645         tm_file="${tm_file} elfos.h newlib-stdint.h bfin/elf.h"
1646         use_collect2=no
1647         use_gcc_stdint=wrap
1648         ;;
1649 bpf-*-*)
1650         tm_file="elfos.h ${tm_file}"
1651         tmake_file="${tmake_file} bpf/t-bpf"
1652         use_collect2=no
1653         extra_headers="bpf-helpers.h"
1654         use_gcc_stdint=provide
1655         extra_objs="coreout.o core-builtins.o"
1656         target_gtfiles="$target_gtfiles \$(srcdir)/config/bpf/coreout.cc \$(srcdir)/config/bpf/core-builtins.cc"
1657         ;;
1658 cris-*-elf | cris-*-none)
1659         tm_file="elfos.h newlib-stdint.h ${tm_file}"
1660         tmake_file="cris/t-cris cris/t-elfmulti"
1661         gas=yes
1662         extra_options="${extra_options} cris/elf.opt"
1663         use_gcc_stdint=wrap
1664         ;;
1665 csky-*-*)
1666         if test x${with_endian} != x; then
1667             case ${with_endian} in
1668                 big|little)             ;;
1669                 *)
1670                     echo "with_endian=${with_endian} not supported."
1671                     exit 1
1672                     ;;
1673             esac
1674         fi
1675         if test x${with_float} != x; then
1676             case ${with_float} in
1677                 soft | hard | softfp) ;;
1678                 *) echo
1679                     "Unknown floating point type used in --with-float=$with_float"
1680                     exit 1
1681                     ;;
1682             esac
1683         fi
1684         tm_file="csky/csky.h"
1685         md_file="csky/csky.md"
1686         out_file="csky/csky.cc"
1687         tm_p_file="${tm_p_file} csky/csky-protos.h"
1688         extra_options="${extra_options} csky/csky_tables.opt"
1690         if test x${enable_tpf_debug} = xyes; then
1691             tm_defines="${tm_defines} ENABLE_TPF_DEBUG"
1692         fi
1694         case ${target} in
1695             csky-*-elf*)
1696                 tm_file="elfos.h newlib-stdint.h ${tm_file} csky/csky-elf.h"
1697                 tmake_file="csky/t-csky csky/t-csky-elf"
1698                 default_use_cxa_atexit=no
1699                 use_gcc_stdint=wrap
1700                 ;;
1701             csky-*-linux*)
1702                 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} csky/csky-linux-elf.h"
1703                 tmake_file="${tmake_file} csky/t-csky"
1705                 if test "x${enable_multilib}" = xyes ; then
1706                     tm_defines="$tm_defines CSKY_ENABLE_MULTILIB"
1707                     tmake_file="${tmake_file} csky/t-csky-linux"
1708                 fi
1710                 case ${target} in
1711                     csky-*-linux-gnu*)
1712                         tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
1713                         # Force .init_array support.  The configure script cannot always
1714                         # automatically detect that GAS supports it, yet we require it.
1715                         gcc_cv_initfini_array=yes
1716                         ;;
1717                     csky-*-linux-uclibc*)
1718                         tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
1719                         default_use_cxa_atexit=no
1720                         ;;
1721                     *)
1722                         echo "Unknown target $target"
1723                         exit 1
1724                         ;;
1725                 esac
1726                 ;;
1727             *)
1728                 echo "Unknown target $target"
1729                 exit 1
1730                 ;;
1731         esac
1732         ;;
1733 epiphany-*-elf | epiphany-*-rtems*)
1734         tm_file="elfos.h ${tm_file}"
1735         tmake_file="${tmake_file} epiphany/t-epiphany"
1736         case ${target} in
1737         epiphany-*-rtems*)
1738           tm_file="${tm_file} epiphany/rtems.h rtems.h newlib-stdint.h"
1739           ;;
1740         *)
1741           tm_file="${tm_file} newlib-stdint.h"
1742           ;;
1743         esac
1744         extra_options="${extra_options} fused-madd.opt"
1745         extra_objs="${extra_objs} mode-switch-use.o resolve-sw-modes.o"
1746         tm_defines="${tm_defines} EPIPHANY_STACK_OFFSET=${with_stack_offset:-8}"
1747         extra_headers="epiphany_intrinsics.h"
1748         ;;
1749 fr30-*-elf)
1750         tm_file="elfos.h newlib-stdint.h ${tm_file}"
1751         ;;
1752 frv-*-elf)
1753         tm_file="elfos.h newlib-stdint.h ${tm_file}"
1754         tmake_file=frv/t-frv
1755         ;;
1756 frv-*-*linux*)
1757         tm_file="elfos.h ${tm_file} \
1758                  gnu-user.h linux.h glibc-stdint.h frv/linux.h"
1759         tmake_file="${tmake_file} frv/t-frv frv/t-linux"
1760         ;;
1761 ft32-*-elf)
1762         gas=yes
1763         gnu_ld=yes
1764         tm_file="elfos.h newlib-stdint.h ${tm_file}"
1765         tmake_file="${tmake_file} ft32/t-ft32"
1766         ;;
1767 amdgcn-*-amdhsa)
1768         tm_file="elfos.h gcn/gcn-hsa.h gcn/gcn.h newlib-stdint.h"
1769         tmake_file="gcn/t-gcn-hsa"
1770         native_system_header_dir=/include
1771         extra_modes=gcn/gcn-modes.def
1772         extra_objs="${extra_objs} gcn-tree.o"
1773         extra_gcc_objs="driver-gcn.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="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2685             ;;
2686           mipsisa32r2*)
2687             tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2688             ;;
2689           mipsisa32*)
2690             tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32 MIPS_ABI_DEFAULT=ABI_32"
2691             ;;
2692           mipsisa64r6*)
2693             tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6 MIPS_ABI_DEFAULT=ABI_N32"
2694             ;;
2695           mipsisa64r2*)
2696             tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2 MIPS_ABI_DEFAULT=ABI_N32"
2697             ;;
2698           mipsisa64*)
2699             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)
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* | 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                         *) with_arch="rv${xlen}gc" ;;
4716                         esac
4717                         ;;
4718                 *)
4719                         echo "--with-arch=${with_arch} is not supported.  The argument must begin with rv32e, rv32i, rv32g, rv64i, or rv64g." 1>&2
4720                         exit 1
4721                         ;;
4722                 esac
4723                 PYTHON=`which python || which python3 || which python2`
4724                 if test "x${PYTHON}" != x; then
4725                         with_arch=`${PYTHON} ${srcdir}/config/riscv/arch-canonicalize -misa-spec=${with_isa_spec} ${with_arch}`
4726                 fi
4727                 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ARCH=${with_arch}"
4729                 # Make sure --with-abi is valid.  If it was not specified,
4730                 # pick a default based on the ISA, preferring soft-float
4731                 # unless the D extension is present.
4732                 case "${with_abi}" in
4733                 ilp32 | ilp32e | ilp32f | ilp32d | lp64 | lp64f | lp64d)
4734                         ;;
4735                 "")
4736                         case "${with_arch}" in
4737                         rv32*d* | rv32g*) with_abi=ilp32d ;;
4738                         rv32e*) with_abi=ilp32e ;;
4739                         rv32*) with_abi=ilp32 ;;
4740                         rv64*d* | rv64g*) with_abi=lp64d ;;
4741                         rv64*) with_abi=lp64 ;;
4742                         esac
4743                         ;;
4744                 *)
4745                         echo "--with-abi=${with_abi} is not supported" 1>&2
4746                         exit 1
4747                         ;;
4748                 esac
4749                 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ABI=${with_abi}"
4751                 # Make sure ABI and ISA are compatible.
4752                 case "${with_abi},${with_arch}" in
4753                 ilp32,rv32* | ilp32e,rv32e* \
4754                 | ilp32f,rv32*f* | ilp32f,rv32g* \
4755                 | ilp32d,rv32*d* | ilp32d,rv32g* \
4756                 | lp64,rv64* \
4757                 | lp64f,rv64*f* | lp64f,rv64g* \
4758                 | lp64d,rv64*d* | lp64d,rv64g*)
4759                         ;;
4760                 *)
4761                         echo "--with-abi=${with_abi} is not supported for ISA ${with_arch}" 1>&2
4762                         exit 1
4763                         ;;
4764                 esac
4765                 # Handle --with-multilib-generator.
4766                 if test "x${with_multilib_generator}" != xdefault; then
4767                         if test "x${with_multilib_list}" != xdefault; then
4768                                 echo "--with-multilib-list= can't used with --with-multilib-generator= at same time" 1>&2
4769                                 exit 1
4770                         fi
4771                         case "${target}" in
4772                         riscv*-*-elf*)
4773                                 if ${srcdir}/config/riscv/multilib-generator \
4774                                         -misa-spec=${with_isa_spec} \
4775                                         `echo ${with_multilib_generator} | sed 's/;/ /g'`\
4776                                         > t-multilib-config;
4777                                 then
4778                                         tmake_file="${tmake_file} riscv/t-withmultilib-generator"
4779                                 else
4780                                         echo "invalid option for --with-multilib-generator" 1>&2
4781                                         exit 1
4782                                 fi
4783                                 ;;
4784                         *)
4785                                 echo "--with-multilib-generator= is not supported for ${target}, only supported for riscv*-*-elf*" 1>&2
4786                                 exit 1
4787                                 ;;
4788                         esac
4789                 fi
4791                 # Handle --with-multilib-list.
4792                 if test "x${with_multilib_list}" != xdefault; then
4793                         tmake_file="${tmake_file} riscv/t-withmultilib"
4795                         case ${with_multilib_list} in
4796                         ilp32 | ilp32f | ilp32d \
4797                         | lp64 | lp64f | lp64d )
4798                                 TM_MULTILIB_CONFIG="${with_arch},${with_multilib_list}"
4799                                 ;;
4800                         *)
4801                                 echo "--with-multilib-list=${with_multilib_list} not supported."
4802                                 exit 1
4803                         esac
4804                 fi
4805                 ;;
4807         mips*-*-*)
4808                 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"
4810                 case ${with_float} in
4811                 "" | soft | hard)
4812                         # OK
4813                         ;;
4814                 *)
4815                         echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4816                         exit 1
4817                         ;;
4818                 esac
4820                 case ${with_fpu} in
4821                 "" | single | double)
4822                         # OK
4823                         ;;
4824                 *)
4825                         echo "Unknown fpu type used in --with-fpu=$with_fpu" 1>&2
4826                         exit 1
4827                         ;;
4828                 esac
4830                 case ${with_nan} in
4831                 "" | 2008 | legacy)
4832                         # OK
4833                         ;;
4834                 *)
4835                         echo "Unknown NaN encoding used in --with-nan=$with_nan" 1>&2
4836                         exit 1
4837                         ;;
4838                 esac
4840                 case ${with_fp_32} in
4841                 "" | 32 | xx | 64)
4842                         # OK
4843                         ;;
4844                 *)
4845                         echo "Unknown FP mode used in --with-fp-32=$with_fp_32" 1>&2
4846                         exit 1
4847                         ;;
4848                 esac
4850                 case ${with_odd_spreg_32} in
4851                 yes)
4852                         with_odd_spreg_32="odd-spreg"
4853                         ;;
4854                 no)
4855                         with_odd_spreg_32="no-odd-spreg"
4856                         ;;
4857                 "")
4858                         # OK
4859                         ;;
4860                 *)
4861                         echo "Unknown odd-spreg-32 type used in --with-odd-spreg-32=$with_odd_spreg_32" 1>&2
4862                         exit 1
4863                         ;;
4864                 esac
4866                 case ${with_abi} in
4867                 "" | 32 | o64 | n32 | 64 | eabi)
4868                         # OK
4869                         ;;
4870                 *)
4871                         echo "Unknown ABI used in --with-abi=$with_abi" 1>&2
4872                         exit 1
4873                         ;;
4874                 esac
4876                 case ${with_divide} in
4877                 "" | breaks | traps)
4878                         # OK
4879                         ;;
4880                 *)
4881                         echo "Unknown division check type use in --with-divide=$with_divide" 1>&2
4882                         exit 1
4883                         ;;
4884                 esac
4886                 case ${with_llsc} in
4887                 yes)
4888                         with_llsc=llsc
4889                         ;;
4890                 no)
4891                         with_llsc="no-llsc"
4892                         ;;
4893                 "")
4894                         # OK
4895                         ;;
4896                 *)
4897                         echo "Unknown llsc type used in --with-llsc" 1>&2
4898                         exit 1
4899                         ;;
4900                 esac
4902                 case ${with_mips_plt} in
4903                 yes)
4904                         with_mips_plt=plt
4905                         ;;
4906                 no)
4907                         with_mips_plt=no-plt
4908                         ;;
4909                 "")
4910                         ;;
4911                 *)
4912                         echo "Unknown --with-mips-plt argument: $with_mips_plt" 1>&2
4913                         exit 1
4914                         ;;
4915                 esac
4917                 case ${with_synci} in
4918                 yes)
4919                         with_synci=synci
4920                         ;;
4921                 no)
4922                         with_synci=no-synci
4923                         ;;
4924                 "")
4925                         ;;
4926                 *)
4927                         echo "Unknown synci type used in --with-synci" 1>&2
4928                         exit 1
4929                         ;;
4930                 esac
4932                 case ${with_lxc1_sxc1} in
4933                 yes)
4934                         with_lxc1_sxc1=lxc1-sxc1
4935                         ;;
4936                 no)
4937                         with_lxc1_sxc1=no-lxc1-sxc1
4938                         ;;
4939                 "")
4940                         ;;
4941                 *)
4942                         echo "Unknown lxc1-sxc1 type used in --with-lxc1-sxc1" 1>&2
4943                         exit 1
4944                         ;;
4945                 esac
4947                 case ${with_madd4} in
4948                 yes)
4949                         with_madd4=madd4
4950                         ;;
4951                 no)
4952                         with_madd4=no-madd4
4953                         ;;
4954                 "")
4955                         ;;
4956                 *)
4957                         echo "Unknown madd4 type used in --with-madd4" 1>&2
4958                         exit 1
4959                         ;;
4960                 esac
4962                 case ${with_compact_branches} in
4963                 "" | never | always | optimal)
4964                         ;;
4965                 *)
4966                         echo "Unknown compact-branches policy used in --with-compact-branches" 1>&2
4967                         exit 1
4968                         ;;
4969                 esac
4971                 case ${with_msa} in
4972                 yes)
4973                         with_msa=msa
4974                         ;;
4975                 no)
4976                         with_msa=no-msa
4977                         ;;
4978                 "")
4979                         ;;
4980                 *)
4981                         echo "Unknown msa type used in --with-msa" 1>&2
4982                         exit 1
4983                         ;;
4984                 esac
4985                 ;;
4987         loongarch*-*)
4988                 supported_defaults="abi arch tune fpu simd multilib-default strict-align-lib"
4990                 # Local variables
4991                 unset \
4992                         abi_base        abi_ext \
4993                         arch_pattern    arch_default \
4994                         fpu_pattern     fpu_default \
4995                         triplet_os      triplet_abi \
4996                         strict_align_opt
4998                 # --with-abi is now obsolete, emit a warning if given.
4999                 case ${with_abi} in
5000                 "") ;;
5001                 *)
5002                         echo "warning: --with-abi= is now obsolete," \
5003                         "the default ABI is derived from your target" \
5004                         "triplet ${target}" 1>&2
5005                         ;;
5006                 esac
5008                 # Infer ABI from the triplet.
5009                 case ${target} in
5010                 loongarch64-*f64) abi_base="lp64d"; abi_ext="base" ;;
5011                 loongarch64-*f32) abi_base="lp64f"; abi_ext="base" ;;
5012                 loongarch64-*sf)  abi_base="lp64s"; abi_ext="base" ;;
5013                 loongarch64-*)    abi_base="lp64d"; abi_ext="base" ;;
5014                 *)
5015                         echo "Unsupported target ${target}." 1>&2
5016                         exit 1
5017                         ;;
5018                 esac
5020                 # Get the canonical triplet (multiarch specifier).
5021                 case ${abi_base},${abi_ext} in
5022                 lp64d,base) triplet_abi="";;
5023                 lp64f,base) triplet_abi="f32";;
5024                 lp64s,base) triplet_abi="sf";;
5025                 esac
5027                 case ${target} in
5028                   *-linux-gnu*) triplet_os="linux-gnu";;
5029                   *-linux-musl*) triplet_os="linux-musl";;
5030                   *-elf*) triplet_os="elf";;
5031                   *)
5032                           echo "Unsupported target ${target}." 1>&2
5033                           exit 1
5034                           ;;
5035                 esac
5036                 la_canonical_triplet="loongarch64-${triplet_os}${triplet_abi}"
5039                 # Perform initial sanity checks on --with-* options.
5040                 case ${with_arch} in
5041                 "" | abi-default | loongarch64 | la464) ;; # OK, append here.
5042                 native)
5043                         if test x${host} != x${target}; then
5044                                 echo "--with-arch=native is illegal for cross-compiler." 1>&2
5045                                 exit 1
5046                         fi
5047                         ;;
5048                 *)
5049                         echo "Unknown arch in --with-arch=$with_arch" 1>&2
5050                         exit 1
5051                         ;;
5052                 esac
5055                 case ${with_fpu} in
5056                 "" | none | 32 | 64) ;; # OK, append here.
5057                 0)
5058                         # Convert "0" to "none" for upcoming checks.
5059                         with_fpu="none"
5060                         ;;
5061                 *)
5062                         echo "Unknown fpu type in --with-fpu=$with_fpu" 1>&2
5063                         exit 1
5064                         ;;
5065                 esac
5067                 case ${with_simd} in
5068                 "" | none) ;;
5069                 lsx | lasx)  # OK, append here.
5070                         case ${with_fpu} in
5071                         64) ;;
5072                         "") with_fpu=64 ;;
5073                         *)
5074                                 echo "--with-simd=${with_simd} conflicts with --with-fpu=${with_fpu}" 1>&2
5075                                 exit 1
5076                                 ;;
5077                         esac
5078                         ;;
5080                 *)
5081                         echo "Unknown SIMD extension in --with-simd=$with_simd" 1>&2
5082                         exit 1
5083                         ;;
5084                 esac
5086                 # Infer ISA-related default options from the ABI: pass 1
5087                 case ${abi_base}/${abi_ext} in
5088                 lp64*/base)
5089                         # architectures that support lp64* ABI
5090                         arch_pattern="native|abi-default|loongarch64|la464"
5091                         # default architecture for lp64* ABI
5092                         arch_default="abi-default"
5093                         ;;
5094                 *)
5095                         echo "Unsupported ABI type ${abi_base}/${abi_ext}." 1>&2
5096                         exit 1
5097                         ;;
5098                 esac
5100                 # Infer ISA-related default options from the ABI: pass 2
5101                 case ${abi_base}/${abi_ext} in
5102                 lp64d/base)
5103                         fpu_pattern="64"
5104                         ;;
5105                 lp64f/base)
5106                         fpu_pattern="32|64"
5107                         fpu_default="32"
5108                         ;;
5109                 lp64s/base)
5110                         fpu_pattern="none|32|64"
5111                         fpu_default="none"
5112                         ;;
5113                 *)
5114                         echo "Unsupported ABI type ${abi_base}/${abi_ext}." 1>&2
5115                         exit 1
5116                         ;;
5117                 esac
5119                 ## Set default value for with_arch.
5120                 case ${with_arch} in
5121                 "")
5122                         if test x${arch_default} != x; then
5123                                 with_arch=${arch_default}
5124                         else
5125                                 with_arch=${arch_pattern}
5126                         fi
5127                         ;;
5129                 *)
5130                         if echo "${with_arch}" | grep -E "^${arch_pattern}$" > /dev/null; then
5131                                 : # OK
5132                         else
5133                                 echo "${abi_base}/${abi_ext} ABI cannot be implemented with" \
5134                                 "--with-arch=${with_arch}." 1>&2
5135                                 exit 1
5136                         fi
5137                         ;;
5138                 esac
5140                 ## Set default value for with_fpu.
5141                 case ${with_fpu} in
5142                 "")
5143                         if test x${fpu_default} != x; then
5144                                 with_fpu=${fpu_default}
5145                         else
5146                                 with_fpu=${fpu_pattern}
5147                         fi
5148                         ;;
5150                 *)
5151                         if echo "${with_fpu}" | grep -E "^${fpu_pattern}$" > /dev/null; then
5152                                 : # OK
5153                         else
5154                                 echo "${abi_base}/${abi_ext} ABI cannot be implemented with" \
5155                                 "--with-fpu=${with_fpu}." 1>&2
5156                                 exit 1
5157                         fi
5158                         ;;
5159                 esac
5162                 # Check default with_tune configuration using with_arch.
5163                 case ${with_arch} in
5164                 loongarch64)
5165                         tune_pattern="native|abi-default|loongarch64|la464"
5166                         ;;
5167                 *)
5168                         # By default, $with_tune == $with_arch
5169                         tune_pattern="*"
5170                         ;;
5171                 esac
5173                 case ${with_tune} in
5174                 "") ;; # OK
5175                 *)
5176                         if echo "${with_tune}" | grep -E "^${tune_pattern}$" > /dev/null; then
5177                                 : # OK
5178                         else
5179                                 echo "Incompatible options: --with-tune=${with_tune}" \
5180                                 "and --with-arch=${with_arch}." 1>&2
5181                                 exit 1
5182                         fi
5183                         ;;
5184                 esac
5186                 # Build libraries with -mstrict-align if --with-strict-align-lib is given.
5187                 case ${with_strict_align_lib} in
5188                 yes) strict_align_opt="/mstrict-align" ;;
5189                 ""|no)  ;;
5190                 *)
5191                         echo "Unknown option: --with-strict-align-lib=${with_strict_align_lib}" 1>&2
5192                         exit 1
5193                         ;;
5194                 esac
5197                 # Handle --with-multilib-default
5198                 if echo "${with_multilib_default}" \
5199                 | grep -E -e '[[:space:]]' -e '//' -e '/$' -e '^/' > /dev/null 2>&1; then
5200                         echo "Invalid argument to --with-multilib-default." 1>&2
5201                         exit 1
5202                 fi
5204                 if test x${with_multilib_default} = x; then
5205                         # Use -march=abi-default by default when building libraries.
5206                         with_multilib_default="/march=abi-default"
5207                 else
5208                         unset parse_state component
5209                         parse_state=arch
5210                         for component in $(echo "${with_multilib_default}" | tr '/' ' '); do
5211                                 case ${parse_state},${component} in
5212                                 arch,|arch,abi-default)
5213                                         # ABI-default: use the ABI's default ARCH configuration for
5214                                         # multilib library builds, unless otherwise specified
5215                                         # in --with-multilib-list.
5216                                         with_multilib_default="/march=abi-default" ;;
5217                                 arch,fixed)
5218                                         # Fixed: use the default gcc configuration for all multilib
5219                                         # builds by default.
5220                                         with_multilib_default="" ;;
5221                                 arch,native|arch,loongarch64|arch,la464) # OK, append here.
5222                                         with_multilib_default="/march=${component}" ;;
5223                                 arch,*)
5224                                         with_multilib_default="/march=abi-default"
5225                                         with_multilib_default="${with_multilib_default}/${component}" ;;
5226                                 opts,*)
5227                                         with_multilib_default="${with_multilib_default}/${component}" ;;
5228                                 esac
5230                                 if test x${parse_state} = xarch; then
5231                                         parse_state=opt;
5232                                 fi
5233                         done
5234                         unset parse_state component
5235                 fi
5237                 # Handle --with-multilib-list.
5238                 if test x"${with_multilib_list}" = x \
5239                    || test x"${with_multilib_list}" = xno \
5240                    || test x"${with_multilib_list}" = xdefault \
5241                    || test x"${enable_multilib}" != xyes; then
5243                         with_multilib_list="${abi_base}/${abi_ext}"
5244                 fi
5246                 # Check if the configured default ABI combination is included in
5247                 # ${with_multilib_list}.
5248                 loongarch_multilib_list_sane=no
5250                 # This one goes to TM_MULTILIB_CONFIG, for use in t-linux.
5251                 loongarch_multilib_list_make="${abi_base},"
5253                 # This one goes to tm_defines, for use in loongarch-driver.c.
5254                 loongarch_multilib_list_c=""
5256                 # ${with_multilib_list} should not contain whitespaces,
5257                 # consecutive commas or slashes.
5258                 if echo "${with_multilib_list}" \
5259                 | grep -E -e "[[:space:]]" -e '[,/][,/]' -e '[,/]$' -e '^[,/]' > /dev/null 2>&1; then
5260                         echo "Invalid argument to --with-multilib-list." 1>&2
5261                         exit 1
5262                 fi
5264                 unset component elem_abi_base elem_abi_ext elem_tmp parse_state all_abis
5265                 for elem in $(echo "${with_multilib_list}" | tr ',' ' '); do
5266                         unset elem_abi_base elem_abi_ext
5267                         parse_state="abi-base"
5269                         for component in $(echo "${elem}" | tr '/' ' '); do
5270                                 if test x${parse_state} = x"abi-base"; then
5271                                         # Base ABI type
5272                                         case ${component} in
5273                                         lp64d | lp64f | lp64s) elem_tmp="ABI_BASE_$(echo ${component} | tr a-z A-Z),";;
5274                                         *)
5275                                                 echo "Unknown base ABI \"${component}\" in --with-multilib-list." 1>&2
5276                                                 exit 1
5277                                                 ;;
5278                                         esac
5279                                         loongarch_multilib_list_c="${loongarch_multilib_list_c}${elem_tmp}"
5280                                         loongarch_multilib_list_make="${loongarch_multilib_list_make}mabi=${component}"
5281                                         elem_abi_base="${component}"
5283                                         parse_state="abi-ext"
5284                                         continue
5285                                 fi
5287                                 if test x${parse_state} = x"abi-ext"; then
5288                                         # ABI extension type
5289                                         case ${component} in
5290                                         base)
5291                                                 elem_abi_ext="base"
5292                                                 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5293                                                 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5294                                                 parse_state="arch"
5295                                                 continue;
5296                                                 ;;
5297                                         esac
5299                                         # The default ABI extension is "base" if unspecified.
5300                                         elem_abi_ext="base"
5301                                         loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5302                                         loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5303                                         parse_state="arch"
5304                                 fi
5306                                 if test x${parse_state} = x"arch"; then
5307                                         # -march option
5308                                         case ${component} in
5309                                         native | abi-default | loongarch64 | la464) # OK, append here.
5310                                                 # Append -march spec for each multilib variant.
5311                                                 loongarch_multilib_list_make="${loongarch_multilib_list_make}/march=${component}"
5312                                                 parse_state="opts"
5313                                                 continue
5314                                                 ;;
5316                                         default)
5317                                                 # "/default" is equivalent to --with-multilib-default=fixed
5318                                                 parse_state="opts"
5319                                                 continue
5320                                                 ;;
5321                                         esac
5323                                         # If ARCH is unspecified for this multilib variant, use ${with_multllib_default}.
5324                                         loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5325                                         parse_state="opts"
5326                                 fi
5328                                 if test x${parse_state} = x"opts"; then
5329                                         # Other compiler options for building libraries.
5330                                         # (no static sanity check performed)
5331                                         case ${component} in
5332                                         *)
5333                                                 # Append other components as additional build options
5334                                                 # (without the prepending dash).
5335                                                 # Their validity should be examined by the compiler.
5336                                                 loongarch_multilib_list_make="${loongarch_multilib_list_make}/${component}"
5337                                                 ;;
5338                                         esac
5339                                 fi
5340                         done
5342                         case ${parse_state} in
5343                             "abi-ext")
5344                                         elem_abi_ext="base"
5345                                         loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5346                                         loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5347                                         loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5348                                         ;;
5349                             "arch")
5350                                         # If ARCH is unspecified for this multilib variant, use ${with_multllib_default}.
5351                                         loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5352                                         ;;
5353                             "opts")
5354                                         :
5355                                         ;;
5356                         esac
5358                         # Use mstrict-align for building libraries if --with-strict-align-lib is given.
5359                         loongarch_multilib_list_make="${loongarch_multilib_list_make}${strict_align_opt}"
5361                         # Check for repeated configuration of the same multilib variant.
5362                         if echo "${elem_abi_base}/${elem_abi_ext}" \
5363                          | grep -E "^(${all_abis%|})$" >/dev/null 2>&1; then
5364                                 echo "Repeated multilib config of \"${elem_abi_base}/${elem_abi_ext}\" in --with-multilib-list."
5365                                 exit 1
5366                         fi
5367                         all_abis="${all_abis}${elem_abi_base}/${elem_abi_ext}|"
5370                         # Check if the default ABI configuration of the GCC binary
5371                         # is included in the enabled multilib variants.
5372                         if test x${elem_abi_base} = x${abi_base} \
5373                         && test x${elem_abi_ext} = x${abi_ext}; then
5374                                 loongarch_multilib_list_sane=yes
5375                         fi
5376                         loongarch_multilib_list_make="${loongarch_multilib_list_make},"
5377                 done
5378                 unset component elem_abi_base elem_abi_ext elem_tmp parse_state all_abis
5381                 # Check if the default ABI combination is in the default list.
5382                 if test x${loongarch_multilib_list_sane} = xno; then
5383                         if test x${abi_ext} = xbase; then
5384                                 abi_ext=""
5385                         else
5386                                 abi_ext="/${abi_ext}"
5387                         fi
5389                         echo "Default ABI combination (${abi_base}${abi_ext})" \
5390                         "not found in --with-multilib-list." 1>&2
5391                         exit 1
5392                 fi
5394                 # Remove the excessive appending comma.
5395                 loongarch_multilib_list_c=${loongarch_multilib_list_c%,}
5396                 loongarch_multilib_list_make=${loongarch_multilib_list_make%,}
5397                 ;;
5399         nds32*-*-*)
5400                 supported_defaults="arch cpu nds32_lib float fpu_config"
5402                 # process --with-arch
5403                 case "${with_arch}" in
5404                 "" | v3 )
5405                         tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5406                         ;;
5407                 v2 | v2j | v3m)
5408                         # OK
5409                         tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5410                         ;;
5411                 v3f)
5412                         tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=1"
5413                         ;;
5414                 v3s)
5415                         tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=2"
5417                         ;;
5418                 *)
5419                         echo "Cannot accept --with-arch=$with_arch, available values are: v2 v2j v3 v3m v3f v3s" 1>&2
5420                         exit 1
5421                         ;;
5422                 esac
5424                 case "${with_cpu}" in
5425                 "")
5426                         with_cpu=n9
5427                         ;;
5428                 n6 | n7 |n8 | e8 | s8 | n9 | n10 | d10 | n12 | n13 | n15)
5429                         # OK
5430                         ;;
5431                 *)
5432                         echo "Cannot accept --with-cpu=$with_cpu, available values are: n6 n7 n8 e8 s8 n9 n10 d10 n12 n13 n15" 1>&2
5433                         exit 1
5434                         ;;
5435                 esac
5437                 # process --with-nds32-lib
5438                 case "${with_nds32_lib}" in
5439                 "")
5440                         case ${target} in
5441                         *-*-*uclibc*)
5442                                 with_nds32_lib=ulibc
5443                                 ;;
5444                         *-*-linux*)
5445                                 with_nds32_lib=glibc
5446                                 ;;
5447                         *)
5448                                 with_nds32_lib=newlib
5449                                 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5450                                 ;;
5451                         esac
5452                         ;;
5453                 newlib)
5454                         # OK
5455                         tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5456                         ;;
5457                 mculib)
5458                         # OK
5459                         # for the arch=v3f or arch=v3s under mculib toolchain,
5460                         # we would like to set -fno-math-errno as default
5461                         case "${with_arch}" in
5462                         v3f | v3s)
5463                                 tm_defines="${tm_defines} TARGET_DEFAULT_NO_MATH_ERRNO=1"
5464                                 ;;
5465                         esac
5466                         ;;
5467                 glibc | uclibc)
5468                         # OK
5469                         ;;
5470                 *)
5471                         echo "Cannot accept --with-nds32-lib=$with_nds32_lib, available values are: newlib mculib glibc uclibc" 1>&2
5472                         exit 1
5473                         ;;
5474                 esac
5476                 # process --with-float
5477                 case "${with_float}" in
5478                 "" | soft | hard)
5479                         # OK
5480                         ;;
5481                 *)
5482                         echo "Cannot accept --with-float=$with_float, available values are: soft hard" 1>&2
5483                         exit 1
5484                         ;;
5485                 esac
5487                 # process --with-config-fpu
5488                 case "${with_config_fpu}" in
5489                 "" | 0 | 1 | 2 | 3)
5490                         # OK
5491                         ;;
5492                 *)
5493                         echo "Cannot accept --with-config-fpu=$with_config_fpu, available values from 0 to 7" 1>&2
5494                         exit 1
5495                         ;;
5496                 esac
5499                 ;;
5500         nios2*-*-*)
5501                 supported_defaults="arch"
5502                         case "$with_arch" in
5503                         "" | r1 | r2)
5504                                 # OK
5505                                 ;;
5506                         *)
5507                                 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5508                                 exit 1
5509                                 ;;
5510                         esac
5511                 ;;
5513         nvptx-*)
5514                 supported_defaults=arch
5515                 TM_MULTILIB_CONFIG=$with_arch
5516                 #TODO 'sm_[...]' list per 'nvptx-sm.def'.
5517                 case $with_arch in
5518                         sm_30 )
5519                                 # OK; default.
5520                                 ;;
5521                         sm_35 | sm_53 | sm_70 | sm_75 | sm_80 )
5522                                 # OK, but we'd like 'sm_30', too.
5523                                 TM_MULTILIB_CONFIG="$TM_MULTILIB_CONFIG sm_30"
5524                                 ;;
5525                         * )
5526                                 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5527                                 exit 1
5528                                 ;;
5529                 esac
5530                 ;;
5532         powerpc*-*-* | rs6000-*-*)
5533                 supported_defaults="abi cpu cpu_32 cpu_64 float tune tune_32 tune_64 advance_toolchain"
5535                 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5536                         eval "val=\$with_$which"
5537                         case ${val} in
5538                         default32 | default64)
5539                                 case $which in
5540                                 cpu | tune)
5541                                         ;;
5542                                 *)
5543                                         echo "$val only valid for --with-cpu and --with-tune." 1>&2
5544                                         exit 1
5545                                         ;;
5546                                 esac
5547                                 with_which="with_$which"
5548                                 eval $with_which=
5549                                 ;;
5550                         405cr)
5551                                 tm_defines="${tm_defines} CONFIG_PPC405CR"
5552                                 eval "with_$which=405"
5553                                 ;;
5554                         "" | common | native \
5555                         | power[3456789] | power10 | power5+ | power6x \
5556                         | powerpc | powerpc64 | powerpc64le \
5557                         | rs64 \
5558                         | 401 | 403 | 405 | 405fp | 440 | 440fp | 464 | 464fp \
5559                         | 476 | 476fp | 505 | 601 | 602 | 603 | 603e | ec603e \
5560                         | 604 | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 \
5561                         | a2 | e300c[23] | 854[08] | e500mc | e500mc64 | e5500 | e6500 \
5562                         | titan | 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5 | cell)
5563                                 # OK
5564                                 ;;
5565                         *)
5566                                 echo "Unknown cpu used in --with-$which=$val." 1>&2
5567                                 exit 1
5568                                 ;;
5569                         esac
5570                 done
5572                 case "$with_abi" in
5573                 "" | elfv1 | elfv2 )
5574                         #OK
5575                         ;;
5576                 *)
5577                         echo "Unknown ABI used in --with-abi=$with_abi"
5578                         exit 1
5579                         ;;
5580                 esac
5582                 if test "x$with_advance_toolchain" != x; then
5583                     if test -d "/opt/$with_advance_toolchain/." -a \
5584                         -d "/opt/$with_advance_toolchain/bin/." -a \
5585                         -d "/opt/$with_advance_toolchain/include/."; then
5587                         tm_file="$tm_file ./advance-toolchain.h"
5588                         (at="/opt/$with_advance_toolchain"
5589                          echo "/* Use Advance Toolchain $at */"
5590                          echo
5591                          echo "#undef  LINK_OS_NEW_DTAGS_SPEC"
5592                          echo "#define LINK_OS_NEW_DTAGS_SPEC" \
5593                               "\"--enable-new-dtags\""
5594                          echo
5595                          echo "#undef  DYNAMIC_LINKER_PREFIX"
5596                          echo "#define DYNAMIC_LINKER_PREFIX \"$at\""
5597                          echo
5598                          echo "#undef  MD_EXEC_PREFIX"
5599                          echo "#define MD_EXEC_PREFIX \"$at/bin/\""
5600                          echo
5601                          echo "#undef  MD_STARTFILE_PREFIX"
5602                          echo "#define MD_STARTFILE_PREFIX \"$prefix/lib/\""
5603                          echo
5604                          echo "#undef  MD_STARTFILE_PREFIX_1"
5605                          echo "#define MD_STARTFILE_PREFIX_1 \"$at/lib/\"") \
5606                             > advance-toolchain.h
5607                     else
5608                         echo "Unknown advance-toolchain $with_advance_toolchain"
5609                         exit 1
5610                     fi
5611                 fi
5613                 # Set up the default long double format if the user changed it.
5614                 if test x$with_long_double_format = xieee; then
5615                     tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=1"
5617                 elif test x$with_long_double_format = xibm; then
5618                     tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=0"
5619                 fi
5620                 ;;
5622         s390*-*-*)
5623                 supported_defaults="arch mode tune"
5625                 for which in arch tune; do
5626                         eval "val=\$with_$which"
5627                         case ${val} in
5628                         "" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | z15 | z16 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12 | arch13 | arch14 )
5629                                 # OK
5630                                 ;;
5631                         *)
5632                                 echo "Unknown cpu used in --with-$which=$val." 1>&2
5633                                 exit 1
5634                                 ;;
5635                         esac
5636                 done
5638                 case ${with_mode} in
5639                 "" | esa | zarch)
5640                         # OK
5641                         ;;
5642                 *)
5643                         echo "Unknown architecture mode used in --with-mode=$with_mode." 1>&2
5644                         exit 1
5645                         ;;
5646                 esac
5647                 ;;
5649         sh[123456ble]*-*-* | sh-*-*)
5650                 supported_defaults="cpu"
5651                 case "`echo $with_cpu | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz- | sed s/sh/m/`" in
5652                 "" | m1 | m2 | m2e | m3 | m3e | m4 | m4-single | m4-single-only | m4-nofpu )
5653                         # OK
5654                         ;;
5655                 m2a | m2a-single | m2a-single-only | m2a-nofpu)
5656                         ;;
5657                 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al)
5658                         ;;
5659                 *)
5660                         echo "Unknown CPU used in --with-cpu=$with_cpu, known values:"  1>&2
5661                         echo "m1 m2 m2e m3 m3e m4 m4-single m4-single-only m4-nofpu" 1>&2
5662                         echo "m4a m4a-single m4a-single-only m4a-nofpu m4al" 1>&2
5663                         echo "m2a m2a-single m2a-single-only m2a-nofpu" 1>&2
5664                         exit 1
5665                         ;;
5666                 esac
5667                 ;;
5668         sparc*-*-*)
5669                 supported_defaults="cpu cpu_32 cpu_64 float tune tune_32 tune_64"
5671                 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5672                         eval "val=\$with_$which"
5673                         case ${val} in
5674                         "" | sparc | sparcv9 | sparc64 \
5675                         | v7 | cypress \
5676                         | v8 | supersparc | hypersparc | leon | leon3 | leon3v7 \
5677                         | sparclite | f930 | f934 | sparclite86x \
5678                         | sparclet | tsc701 \
5679                         | v9 | ultrasparc | ultrasparc3 | niagara | niagara2 \
5680                         | niagara3 | niagara4 | niagara7 | m8)
5681                                 # OK
5682                                 ;;
5683                         *)
5684                                 echo "Unknown cpu used in --with-$which=$val" 1>&2
5685                                 exit 1
5686                                 ;;
5687                         esac
5688                 done
5690                 case ${with_float} in
5691                 "" | soft | hard)
5692                         # OK
5693                         ;;
5694                 *)
5695                         echo "Unknown floating point type used in --with-float=$with_float" 1>&2
5696                         exit 1
5697                         ;;
5698                 esac
5699                 ;;
5701         tic6x-*-*)
5702                 supported_defaults="arch"
5704                 case ${with_arch} in
5705                 "" | c62x | c64x | c64x+ | c67x | c67x+ | c674x)
5706                         # OK
5707                         ;;
5708                 *)
5709                         echo "Unknown arch used in --with-arch=$with_arch." 1>&2
5710                         exit 1
5711                         ;;
5712                 esac
5713                 ;;
5715         v850*-*-*)
5716                 supported_defaults=cpu
5717                 case ${with_cpu} in
5718                 "" | v850e | v850e1 | v850e2 | v850es | v850e2v3 | v850e3v5)
5719                         # OK
5720                         ;;
5721                 *)
5722                         echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5723                         exit 1
5724                         ;;
5725                 esac
5726                 ;;
5727         visium-*-*)
5728                 supported_defaults="cpu"
5729                 case $with_cpu in
5730                   "" | gr5 | gr6)
5731                         ;;
5732                   *)    echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5733                         exit 1
5734                         ;;
5735                 esac
5736                 ;;
5737 esac
5739 # VxWorks support for shared libraries has to be requested explicitly,
5740 # so we can factor this part here:
5742 case "${target}-${enable_shared}" in
5743   *-*-vxworks*-yes)
5744     tmake_file="${tmake_file} t-slibgcc"
5745     ;;
5746 esac
5748 # Targets for which there is at least one VxWorks port should include
5749 # vxworks-dummy.h to allow safe references to various TARGET_VXWORKS kinds
5750 # of markers from other files in the port, including the vxworks*.h files to
5751 # distinguish VxWorks variants such as VxWorks 7 or 64).
5753 case ${target} in
5754 arm*-*-* | i[34567]86-*-* | mips*-*-* | powerpc*-*-* | sh*-*-* \
5755 | sparc*-*-* | x86_64-*-*)
5756         tm_file="vxworks-dummy.h ${tm_file}"
5757         ;;
5758 esac
5760 # Set some miscellaneous flags for particular targets.
5761 target_cpu_default2=
5762 case ${target} in
5763         aarch64*-*-*)
5764                 if test x"$target_cpu_cname" != x
5765                 then
5766                         target_cpu_default2=$target_cpu_cname
5767                 fi
5768                 ;;
5770         arm*-*-*)
5771                 if test x$with_cpu = x
5772                 then
5773                         echo "Don't know the target cpu" 1>&2
5774                         exit 1
5775                 else
5776                         target_cpu_default2="\\\"$with_cpu\\\""
5777                 fi
5778                 ;;
5780         hppa*-*-*)
5781                 if test x$gas = xyes
5782                 then
5783                         target_cpu_default2="MASK_GAS"
5784                 fi
5785                 ;;
5787         fido*-*-* | m68k*-*-*)
5788                 target_cpu_default2=$m68k_cpu_ident
5789                 tmake_file="m68k/t-opts $tmake_file"
5790                 if [ x"$m68k_arch_family" != x ]; then
5791                         tmake_file="m68k/t-$m68k_arch_family $tmake_file"
5792                 fi
5793                 ;;
5795         i[34567]86-*-darwin* | x86_64-*-darwin*)
5796                 ;;
5797         i[34567]86-*-linux* | x86_64-*-linux*)
5798                 extra_objs="${extra_objs} gnu-property.o"
5799                 tmake_file="$tmake_file i386/t-linux i386/t-gnu-property"
5800                 ;;
5801         i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu)
5802                 tmake_file="$tmake_file i386/t-kfreebsd"
5803                 ;;
5804         i[34567]86-*-gnu*)
5805                 tmake_file="$tmake_file i386/t-gnu"
5806                 ;;
5807         i[34567]86-*-msdosdjgpp*)
5808                 tmake_file="${tmake_file} i386/t-djgpp"
5809                 ;;
5810         i[34567]86-*-solaris2* | x86_64-*-solaris2*)
5811                 ;;
5812         i[34567]86-*-cygwin* | x86_64-*-cygwin*)
5813                 ;;
5814         i[34567]86-*-mingw* | x86_64-*-mingw*)
5815                 ;;
5816         i[34567]86-*-dragonfly* | x86_64-*-dragonfly*)
5817                 ;;
5818         i[34567]86-*-freebsd*)
5819                 ;;
5820         x86_64-*-freebsd*)
5821                 tmake_file="${tmake_file} i386/t-freebsd64"
5822                 ;;
5823         ia64*-*-linux*)
5824                 ;;
5826         mips*-*-*)
5827                 if test x$gnu_ld = xyes
5828                 then
5829                         target_cpu_default2="MASK_SPLIT_ADDRESSES"
5830                 fi
5831                 case ${target} in
5832                         mips*el-*-*)
5833                                 tm_defines="TARGET_ENDIAN_DEFAULT=0 $tm_defines"
5834                                 ;;
5835                 esac
5836                 if test x$with_arch != x; then
5837                         default_mips_arch=$with_arch
5838                 else
5839                         with_arch=$default_mips_arch
5840                 fi
5841                 if test x$with_abi != x; then
5842                         default_mips_abi=$with_abi
5843                 fi
5844                 case ${default_mips_arch} in
5845                     mips1)    tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS1" ;;
5846                     mips2)    tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS2" ;;
5847                     mips3)    tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3" ;;
5848                     mips4)    tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS4" ;;
5849                     mips32)   tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32" ;;
5850                     mips32r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2" ;;
5851                     mips32r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6" ;;
5852                     mips64)   tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64" ;;
5853                     mips64r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2" ;;
5854                     mips64r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6" ;;
5855                 esac
5856                 case ${default_mips_abi} in
5857                     32)   tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_32" ;;
5858                     o64)  tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_O64" ;;
5859                     n32)  tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_N32" ;;
5860                     64)   tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_64" ;;
5861                     eabi) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_EABI" ;;
5862                 esac
5863                 tmake_file="mips/t-mips $tmake_file"
5864                 ;;
5866         loongarch*-*-*)
5867                 # Export canonical triplet.
5868                 tm_defines="${tm_defines} LA_MULTIARCH_TRIPLET=${la_canonical_triplet}"
5870                 # Define macro LA_DISABLE_MULTILIB if --disable-multilib
5871                 tm_defines="${tm_defines} TM_MULTILIB_LIST=${loongarch_multilib_list_c}"
5872                 if test x$enable_multilib = xyes; then
5873                         TM_MULTILIB_CONFIG="${loongarch_multilib_list_make}"
5874                 else
5875                         tm_defines="${tm_defines} LA_DISABLE_MULTILIB"
5876                 fi
5878                 # Let --with- flags initialize the enum variables from loongarch.opt.
5879                 # See macro definitions from loongarch-opts.h and loongarch-cpu.h.
5881                 # Architecture
5882                 tm_defines="${tm_defines} DEFAULT_CPU_ARCH=CPU_$(echo ${with_arch} | tr a-z- A-Z_)"
5884                 # Base ABI type
5885                 tm_defines="${tm_defines} DEFAULT_ABI_BASE=ABI_BASE_$(echo ${abi_base} | tr a-z- A-Z_)"
5887                 # ABI Extension
5888                 case ${abi_ext} in
5889                 base)      tm_defines="${tm_defines} DEFAULT_ABI_EXT=ABI_EXT_BASE" ;;
5890                 esac
5892                 # Microarchitecture
5893                 if test x${with_tune} != x; then
5894                   tm_defines="${tm_defines} DEFAULT_CPU_TUNE=CPU_$(echo ${with_tune} | tr a-z- A-Z_)"
5895                 fi
5897                 # FPU adjustment
5898                 case ${with_fpu} in
5899                 none)    tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_NONE" ;;
5900                 32)      tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU32" ;;
5901                 64)      tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU64" ;;
5902                 esac
5904                 # SIMD extensions
5905                 case ${with_simd} in
5906                 none)    tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_NONE" ;;
5907                 lsx)     tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_SIMD_LSX" ;;
5908                 lasx)    tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_SIMD_LASX" ;;
5909                 esac
5911                 tmake_file="loongarch/t-loongarch $tmake_file"
5912                 ;;
5914         powerpc*-*-* | rs6000-*-*)
5915                 # FIXME: The PowerPC port uses the value set at compile time,
5916                 # although it's only cosmetic.
5917                 if test "x$with_cpu" != x
5918                 then
5919                         target_cpu_default2="\\\"$with_cpu\\\""
5920                 fi
5921                 out_file="${cpu_type}/${cpu_type}.cc"
5922                 c_target_objs="${c_target_objs} ${cpu_type}-c.o"
5923                 cxx_target_objs="${cxx_target_objs} ${cpu_type}-c.o"
5924                 d_target_objs="${d_target_objs} ${cpu_type}-d.o"
5925                 tmake_file="${cpu_type}/t-${cpu_type} ${tmake_file}"
5926                 ;;
5928         sh[123456ble]*-*-* | sh-*-*)
5929                 c_target_objs="${c_target_objs} sh-c.o"
5930                 cxx_target_objs="${cxx_target_objs} sh-c.o"
5931                 ;;
5933         sparc*-*-*)
5934                 # Some standard aliases.
5935                 case x$with_cpu in
5936                 xsparc)
5937                         with_cpu=v7
5938                         ;;
5939                 xsparcv9 | xsparc64)
5940                         with_cpu=v9
5941                         ;;
5942                 esac
5944                 if test x$with_tune = x ; then
5945                       case ${target} in
5946                       *-leon-*)
5947                           with_tune=leon
5948                           ;;
5949                       *-leon[3-9]*)
5950                           with_tune=leon3
5951                           ;;
5952                       esac
5953                 fi
5955                 # The SPARC port checks this value at compile-time.
5956                 target_cpu_default2="TARGET_CPU_$with_cpu"
5957                 ;;
5959         v850*-*-*)
5960                 case "x$with_cpu" in
5961                 x)
5962                         ;;
5963                 xv850e | xv850e1 | xv850e2 | xv850e2v3 | xv850e3v5)
5964                         target_cpu_default2="TARGET_CPU_$with_cpu"
5965                         ;;
5966                 xv850es)
5967                         target_cpu_default2="TARGET_CPU_v850e1"
5968                         ;;
5969                 esac
5970                 ;;
5971         visium-*-*)
5972                 target_cpu_default2="TARGET_CPU_$with_cpu"
5973                 ;;
5974 esac
5977 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"
5978 for option in $all_defaults
5980         eval "val=\$with_"`echo $option | sed s/-/_/g`
5981         if test -n "$val"; then
5982                 case " $supported_defaults " in
5983                 *" $option "*)
5984                         ;;
5985                 *)
5986                         echo "This target does not support --with-$option." 2>&1
5987                         echo "Valid --with options are: $supported_defaults" 2>&1
5988                         exit 1
5989                         ;;
5990                 esac
5992                 if test "x$t" = x
5993                 then
5994                         t="{ \"$option\", \"$val\" }"
5995                 else
5996                         t="${t}, { \"$option\", \"$val\" }"
5997                 fi
5998         fi
5999 done
6001 if test "x$t" = x
6002 then
6003         configure_default_options="{ { NULL, NULL} }"
6004 else
6005         configure_default_options="{ ${t} }"
6008 if test "$target_cpu_default2" != ""
6009 then
6010         if test "$target_cpu_default" != ""
6011         then
6012                 target_cpu_default="(${target_cpu_default}|${target_cpu_default2})"
6013         else
6014                 target_cpu_default=$target_cpu_default2
6015         fi
6018 case ${target} in
6019 i[34567]86-*-* | x86_64-*-*)
6020         if test x$enable_as_accelerator = xyes; then
6021                 extra_programs="mkoffload\$(exeext)"
6022         fi
6023         ;;
6024 esac