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