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