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