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