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