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