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