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