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