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