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