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