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