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