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