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