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
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
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
61 # gnu_ld_flag Either yes or no depending on whether GNU ld was
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
90 # tm_d_file A list of headers with definitions of target hook
91 # macros for the D compiler.
93 # tm_rust_file list of headers with definitions of target hook
94 # macros for the Rust compiler.
96 # out_file The name of the machine description C support
97 # file, if different from "$cpu_type/$cpu_type.c".
99 # common_out_file The name of the source file for code shared between
100 # the compiler proper and the driver.
102 # md_file The name of the machine-description file, if
103 # different from "$cpu_type/$cpu_type.md".
105 # tmake_file A list of machine-description-specific
106 # makefile-fragments, if different from
107 # "$cpu_type/t-$cpu_type".
109 # extra_modes The name of the file containing a list of extra
110 # machine modes, if necessary and different from
111 # "$cpu_type/$cpu_type-modes.def".
113 # extra_objs List of extra objects that should be linked into
114 # the compiler proper (cc1, cc1obj, cc1plus)
115 # depending on target.
117 # extra_gcc_objs List of extra objects that should be linked into
118 # the compiler driver (gcc) depending on target.
120 # extra_headers List of used header files from the directory
121 # config/${cpu_type}.
123 # user_headers_inc_next_pre
124 # List of header file names of internal gcc header
125 # files, which should be prefixed by an include_next.
126 # user_headers_inc_next_post
127 # List of header file names of internal gcc header
128 # files, which should be postfixed by an include_next.
129 # use_gcc_tgmath If set, add tgmath.h to the list of used header
132 # use_gcc_stdint If "wrap", install a version of stdint.h that
133 # wraps the system's copy for hosted compilations;
134 # if "provide", provide a version of systems without
135 # such a system header; otherwise "none", do not
136 # provide such a header at all.
138 # extra_programs List of extra executables compiled for this target
139 # machine, used when linking.
141 # extra_options List of target-dependent .opt files.
143 # c_target_objs List of extra target-dependent objects that be
144 # linked into the C compiler only.
146 # cxx_target_objs List of extra target-dependent objects that be
147 # linked into the C++ compiler only.
149 # d_target_objs List of extra target-dependent objects that be
150 # linked into the D compiler only.
152 # fortran_target_objs List of extra target-dependent objects that be
153 # linked into the fortran compiler only.
155 # rust_target_objs List of extra target-dependent objects that be
156 # linked into the Rust compiler only.
158 # target_gtfiles List of extra source files with type information.
160 # xm_defines List of macros to define when compiling for the
163 # xm_file List of files to include when compiling for the
166 # use_collect2 Set to yes or no, depending on whether collect2
169 # target_cpu_default Set to override the default target model.
171 # gdb_needs_out_file_path
172 # Set to yes if gdb needs a dir command with
173 # `dirname $out_file`.
175 # thread_file Set to control which thread package to use.
177 # gas Set to yes or no depending on whether the target
178 # system normally uses GNU as.
180 # configure_default_options
181 # Set to an initializer for configure_default_options
182 # in configargs.h, based on --with-cpu et cetera.
184 # native_system_header_dir
185 # Where system header files are found for this
186 # target. This defaults to /usr/include. If
187 # the --with-sysroot configure option or the
188 # --sysroot command line option is used this
189 # will be relative to the sysroot.
190 # target_type_format_char
191 # The default character to be used for formatting
193 # .type symbol_name, ${t_t_f_c}<property>
196 # The following variables are used in each case-construct to build up the
197 # outgoing variables:
199 # gnu_ld Set to yes or no depending on whether the target
200 # system normally uses GNU ld.
202 # target_has_targetcm Set to yes or no depending on whether the target
203 # has its own definition of targetcm.
205 # target_has_targetm_common Set to yes or no depending on whether the
206 # target has its own definition of targetm_common.
208 # target_has_targetdm Set to yes or no depending on whether the target
209 # has its own definition of targetdm.
211 # target_has_targetrustm Set to yes or no depending on whether the target
212 # has its own definition of targetrustm.
218 user_headers_inc_next_pre=
219 user_headers_inc_next_post=
231 target_has_targetcm=no
232 target_has_targetm_common=yes
233 target_has_targetdm=no
234 target_has_targetrustm=no
237 # Set this to force installation and use of collect2.
239 # Set this to override the default target model.
241 # Set this if gdb needs a dir command with `dirname $out_file`
242 gdb_needs_out_file_path=
243 # Set this to control which thread package will be used.
245 # Reinitialize these from the flag values every loop pass, since some
246 # configure entries modify them.
248 gnu_ld="$gnu_ld_flag"
249 default_use_cxa_atexit=no
250 default_gnu_indirect_function=no
253 native_system_header_dir=/usr/include
254 target_type_format_char='@'
256 # Don't carry these over build->host->target. Please.
260 # Determine Solaris minor version
261 case ${target}:`uname -v` in
262 # Only do this on Solaris. Illumos uses illumos-* instead.
263 *-*-solaris2.11*:11.*)
264 # Restrict to native configurations.
265 if test x$host = x$target; then
266 uname_version="`uname -v`"
267 # Prepend dot as needed below.
268 target_min=".`expr "$uname_version" : '11\.\([0-9]*\)'`"
273 # Obsolete configurations.
274 case ${target}${target_min} in
275 *-*-solaris2.11.[0-3]* \
277 if test "x$enable_obsolete" != xyes; then
278 echo "*** Configuration ${target}${target_min} is obsolete." >&2
279 echo "*** Specify --enable-obsolete to build it anyway." >&2
280 echo "*** Support will be REMOVED in the next major release of GCC," >&2
281 echo "*** unless a maintainer comes forward." >&2
286 # Unsupported targets list. Do not put an entry in this list unless
287 # it would otherwise be caught by a more permissive pattern. The list
288 # should be in alphabetical order.
290 # Avoid special cases that are not obsolete
301 | i[34567]86-go32-* \
302 | i[34567]86-*-go32* \
306 | m68k-*-uclinuxoldabi* \
307 | mips64orion*-*-rtems* \
309 | powerpc*-*-linux*paired* \
311 | sparc-hal-solaris2* \
314 | *-*-freebsd[12] | *-*-freebsd[1234].* \
315 | *-*-freebsd*aout* \
323 | *-*-solaris2.[0-9] \
324 | *-*-solaris2.[0-9].* \
329 echo "*** Configuration ${target} not supported" 1>&2
334 # Set default cpu_type, tm_file, tm_p_file and xm_file so it can be
335 # updated in each machine entry. Also set default extra_headers for some
338 cpu_type=`echo ${target} | sed 's/-.*$//'`
343 tmake_file=m32c/t-m32c
344 target_has_targetm_common=no
348 extra_headers="arm_fp16.h arm_neon.h arm_bf16.h arm_acle.h arm_sve.h"
349 c_target_objs="aarch64-c.o"
350 cxx_target_objs="aarch64-c.o"
351 d_target_objs="aarch64-d.o"
352 extra_objs="aarch64-builtins.o aarch-common.o aarch64-sve-builtins.o aarch64-sve-builtins-shapes.o aarch64-sve-builtins-base.o aarch64-sve-builtins-sve2.o cortex-a57-fma-steering.o aarch64-speculation.o falkor-tag-collision-avoidance.o aarch-bti-insert.o aarch64-cc-fusion.o"
353 target_gtfiles="\$(srcdir)/config/aarch64/aarch64-builtins.cc \$(srcdir)/config/aarch64/aarch64-sve-builtins.h \$(srcdir)/config/aarch64/aarch64-sve-builtins.cc"
354 target_has_targetm_common=yes
358 extra_options="${extra_options} g.opt"
369 c_target_objs="arc-c.o"
370 cxx_target_objs="arc-c.o"
371 extra_options="${extra_options} arc/arc-tables.opt g.opt"
372 extra_headers="arc-simd.h"
376 extra_objs="arm-builtins.o arm-mve-builtins.o arm-mve-builtins-shapes.o arm-mve-builtins-base.o aarch-common.o aarch-bti-insert.o"
377 extra_headers="mmintrin.h arm_neon.h arm_acle.h arm_fp16.h arm_cmse.h arm_bf16.h arm_mve_types.h arm_mve.h arm_cde.h"
378 target_type_format_char='%'
379 c_target_objs="arm-c.o"
380 cxx_target_objs="arm-c.o"
381 d_target_objs="arm-d.o"
382 extra_options="${extra_options} arm/arm-tables.opt"
383 target_gtfiles="\$(srcdir)/config/arm/arm-builtins.cc \$(srcdir)/config/arm/arm-mve-builtins.h \$(srcdir)/config/arm/arm-mve-builtins.cc"
387 c_target_objs="avr-c.o"
388 cxx_target_objs="avr-c.o"
397 extra_options="${extra_options} g.opt"
400 target_has_targetm_common=no
402 moxie*) cpu_type=moxie
403 target_has_targetm_common=no
407 extra_headers=math-68881.h
408 extra_options="${extra_options} m68k/m68k-tables.opt"
410 i[34567]86-*-* | x86_64-*-*)
412 c_target_objs="i386-c.o"
413 cxx_target_objs="i386-c.o"
414 d_target_objs="i386-d.o"
415 extra_objs="x86-tune-sched.o x86-tune-sched-bd.o x86-tune-sched-atom.o x86-tune-sched-core.o i386-options.o i386-builtins.o i386-expand.o i386-features.o"
416 target_gtfiles="\$(srcdir)/config/i386/i386-builtins.cc \$(srcdir)/config/i386/i386-expand.cc \$(srcdir)/config/i386/i386-options.cc"
417 extra_options="${extra_options} fused-madd.opt"
418 extra_headers="cpuid.h mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h
419 pmmintrin.h tmmintrin.h ammintrin.h smmintrin.h
420 nmmintrin.h bmmintrin.h fma4intrin.h wmmintrin.h
421 immintrin.h x86intrin.h avxintrin.h xopintrin.h
422 ia32intrin.h cross-stdarg.h lwpintrin.h popcntintrin.h
423 lzcntintrin.h bmiintrin.h bmi2intrin.h tbmintrin.h
424 avx2intrin.h avx512fintrin.h fmaintrin.h f16cintrin.h
425 rtmintrin.h xtestintrin.h rdseedintrin.h prfchwintrin.h
426 adxintrin.h fxsrintrin.h xsaveintrin.h xsaveoptintrin.h
427 avx512cdintrin.h avx512erintrin.h avx512pfintrin.h
428 shaintrin.h clflushoptintrin.h xsavecintrin.h
429 xsavesintrin.h avx512dqintrin.h avx512bwintrin.h
430 avx512vlintrin.h avx512vlbwintrin.h avx512vldqintrin.h
431 avx512ifmaintrin.h avx512ifmavlintrin.h avx512vbmiintrin.h
432 avx512vbmivlintrin.h avx5124fmapsintrin.h avx5124vnniwintrin.h
433 avx512vpopcntdqintrin.h clwbintrin.h mwaitxintrin.h
434 clzerointrin.h pkuintrin.h sgxintrin.h cetintrin.h
435 gfniintrin.h cet.h avx512vbmi2intrin.h
436 avx512vbmi2vlintrin.h avx512vnniintrin.h
437 avx512vnnivlintrin.h vaesintrin.h vpclmulqdqintrin.h
438 avx512vpopcntdqvlintrin.h avx512bitalgintrin.h
439 avx512bitalgvlintrin.h pconfigintrin.h wbnoinvdintrin.h
440 movdirintrin.h waitpkgintrin.h cldemoteintrin.h
441 avx512bf16vlintrin.h avx512bf16intrin.h enqcmdintrin.h
442 serializeintrin.h avx512vp2intersectintrin.h
443 avx512vp2intersectvlintrin.h tsxldtrkintrin.h
444 amxtileintrin.h amxint8intrin.h amxbf16intrin.h
445 x86gprintrin.h uintrintrin.h hresetintrin.h
446 keylockerintrin.h avxvnniintrin.h mwaitintrin.h
447 avx512fp16intrin.h avx512fp16vlintrin.h avxifmaintrin.h
448 avxvnniint8intrin.h avxneconvertintrin.h
449 cmpccxaddintrin.h amxfp16intrin.h prfchiintrin.h
450 raointintrin.h amxcomplexintrin.h avxvnniint16intrin.h
451 sm3intrin.h sha512intrin.h sm4intrin.h
455 extra_headers=ia64intrin.h
456 extra_options="${extra_options} g.opt fused-madd.opt"
462 extra_options="${extra_options} g.opt"
466 extra_options="${extra_options} g.opt"
469 extra_headers=math-68881.h
470 extra_options="${extra_options} m68k/m68k-tables.opt"
474 extra_options="${extra_options} g.opt"
478 d_target_objs="mips-d.o"
479 extra_headers="loongson.h loongson-mmiintrin.h msa.h"
480 extra_objs="frame-header-opt.o"
481 extra_options="${extra_options} g.opt fused-madd.opt mips/mips-tables.opt"
485 extra_headers="larchintrin.h lsxintrin.h lasxintrin.h"
486 extra_objs="loongarch-c.o loongarch-builtins.o loongarch-cpu.o loongarch-opts.o loongarch-def.o"
487 extra_gcc_objs="loongarch-driver.o loongarch-cpu.o loongarch-opts.o loongarch-def.o"
488 extra_options="${extra_options} g.opt fused-madd.opt"
492 extra_headers="nds32_intrinsic.h nds32_isr.h nds32_init.inc"
495 extra_options="${extra_options} nds32/nds32-linux.opt"
498 extra_options="${extra_options} nds32/nds32-elf.opt"
503 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"
507 extra_options="${extra_options} g.opt"
511 c_target_objs="nvptx-c.o"
512 cxx_target_objs="nvptx-c.o"
513 extra_options="${extra_options} nvptx/nvptx-gen.opt"
520 extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
521 extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o"
522 extra_objs="${extra_objs} rs6000-builtins.o rs6000-builtin.o"
523 extra_headers="ppc-asm.h altivec.h htmintrin.h htmxlintrin.h"
524 extra_headers="${extra_headers} bmi2intrin.h bmiintrin.h"
525 extra_headers="${extra_headers} xmmintrin.h mm_malloc.h emmintrin.h"
526 extra_headers="${extra_headers} mmintrin.h x86intrin.h"
527 extra_headers="${extra_headers} pmmintrin.h tmmintrin.h smmintrin.h"
528 extra_headers="${extra_headers} nmmintrin.h immintrin.h x86gprintrin.h"
529 extra_headers="${extra_headers} ppu_intrinsics.h spu2vmx.h vec_types.h si2vmx.h"
530 extra_headers="${extra_headers} amo.h"
532 xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[3456789]|xpower10|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|xe6500)
536 extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
537 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.cc \$(srcdir)/config/rs6000/rs6000-call.cc"
538 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-pcrel-opt.cc"
539 target_gtfiles="$target_gtfiles ./rs6000-builtins.h"
546 extra_objs="riscv-builtins.o riscv-c.o riscv-sr.o riscv-shorten-memrefs.o riscv-selftests.o riscv-string.o"
547 extra_objs="${extra_objs} riscv-v.o riscv-vsetvl.o riscv-vector-costs.o"
548 extra_objs="${extra_objs} riscv-vector-builtins.o riscv-vector-builtins-shapes.o riscv-vector-builtins-bases.o"
549 extra_objs="${extra_objs} thead.o"
550 d_target_objs="riscv-d.o"
551 extra_headers="riscv_vector.h"
552 target_gtfiles="$target_gtfiles \$(srcdir)/config/riscv/riscv-vector-builtins.cc"
553 target_gtfiles="$target_gtfiles \$(srcdir)/config/riscv/riscv-vector-builtins.h"
556 extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
557 extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
558 extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o"
559 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.cc \$(srcdir)/config/rs6000/rs6000-call.cc"
560 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-pcrel-opt.cc"
564 c_target_objs="sparc-c.o"
565 cxx_target_objs="sparc-c.o"
566 d_target_objs="sparc-d.o"
567 extra_headers="visintrin.h"
571 d_target_objs="s390-d.o"
572 extra_options="${extra_options} fused-madd.opt"
573 extra_headers="s390intrin.h htmintrin.h htmxlintrin.h vecintrin.h"
575 # Note the 'l'; we need to be able to match e.g. "shle" or "shl".
576 sh[123456789lbe]*-*-* | sh-*-*)
578 extra_options="${extra_options} fused-madd.opt"
579 extra_objs="${extra_objs} sh_treg_combine.o sh-mem.o sh_optimize_sett_clrt.o"
586 extra_headers="c6x_intrinsics.h"
587 extra_options="${extra_options} c6x/c6x-tables.opt"
590 extra_options="${extra_options} fused-madd.opt"
591 extra_objs="xtensa-dynconfig.o"
595 tm_file=${cpu_type}/${cpu_type}.h
596 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-protos.h
598 tm_p_file=${cpu_type}/${cpu_type}-protos.h
602 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-d.h
604 tm_d_file="${tm_d_file} ${cpu_type}/${cpu_type}-d.h"
608 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-rust.h
610 tm_rust_file="${cpu_type}/${cpu_type}-rust.h"
612 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-rust.cc
614 rust_target_objs="${rust_target_objs} ${cpu_type}-rust.o"
618 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-modes.def
620 extra_modes=${cpu_type}/${cpu_type}-modes.def
622 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}.opt
624 extra_options="${extra_options} ${cpu_type}/${cpu_type}.opt"
629 tm_p_file="${tm_p_file} arm/aarch-common-protos.h"
632 if test "x$with_multilib_list" = xilp32; then
633 tm_file="aarch64/biarchilp32.h ${tm_file}"
635 tm_file="aarch64/biarchlp64.h ${tm_file}"
639 tm_file="aarch64/biarchilp32.h ${tm_file}"
642 tm_file="aarch64/biarchlp64.h ${tm_file}"
645 echo "Unknown ABI used in --with-abi=$with_abi"
650 if test "x$with_abi" != x; then
651 echo "This target does not support --with-abi."
660 if test "x$with_multilib_list" = xmx32; then
661 tm_file="i386/biarchx32.h ${tm_file}"
663 tm_file="i386/biarch64.h ${tm_file}"
667 tm_file="i386/biarch64.h ${tm_file}"
670 tm_file="i386/biarchx32.h ${tm_file}"
673 echo "Unknown ABI used in --with-abi=$with_abi"
678 tm_p_file="arm/arm-flags.h ${tm_p_file} arm/aarch-common-protos.h"
682 # On a.out targets, we need to use collect2.
689 # Common C libraries.
690 tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
692 # 32-bit x86 processors supported by --with-arch=. Each processor
693 # MUST be separated by exactly one space.
694 x86_archs="athlon athlon-4 athlon-fx athlon-mp athlon-tbird \
695 athlon-xp k6 k6-2 k6-3 geode c3 c3-2 winchip-c6 winchip2 i386 i486 \
696 i586 i686 pentium pentium-m pentium-mmx pentium2 pentium3 pentium3m \
697 pentium4 pentium4m pentiumpro prescott lakemont samuel-2 nehemiah \
700 # 64-bit x86 processors supported by --with-arch=. Each processor
701 # MUST be separated by exactly one space.
702 x86_64_archs="amdfam10 athlon64 athlon64-sse3 barcelona bdver1 bdver2 \
703 bdver3 bdver4 znver1 znver2 znver3 znver4 btver1 btver2 k8 k8-sse3 opteron \
704 opteron-sse3 nocona core2 corei7 corei7-avx core-avx-i core-avx2 atom \
705 slm nehalem westmere sandybridge ivybridge haswell broadwell bonnell \
706 silvermont knl knm skylake-avx512 cannonlake icelake-client icelake-server \
707 skylake goldmont goldmont-plus tremont cascadelake tigerlake cooperlake \
708 sapphirerapids alderlake rocketlake eden-x2 nano nano-1000 nano-2000 nano-3000 \
709 nano-x2 eden-x4 nano-x4 lujiazui x86-64 x86-64-v2 x86-64-v3 x86-64-v4 \
710 sierraforest graniterapids graniterapids-d grandridge arrowlake arrowlake-s \
711 clearwaterforest pantherlake native"
713 # Additional x86 processors supported by --with-cpu=. Each processor
714 # MUST be separated by exactly one space.
715 x86_cpus="generic intel"
717 # Common parts for widely ported systems.
720 tmake_file="t-darwin "
721 tm_file="${tm_file} darwin.h"
722 darwin_os=`echo ${target} | sed 's/.*darwin\([0-9.]*\).*$/\1/'`
723 darwin_maj=`expr "$darwin_os" : '\([0-9]*\).*'`
724 macos_min=`expr "$darwin_os" : '[0-9]*\.\([0-9]*\).*'`
726 if test x"${macos_min}" = x; then
730 # Tools hosted on earlier versions of Darwin constrained all object
731 # alignment to be 2^15 or smaller. From Darwin11 (macOS 10.7) the
732 # alignment of non-common is allowed to be up to 2^28. Note that the
733 #Â larger alignment is permitted when targeting 10.6 from 10.7 so that
734 #Â the constraint only need be applied per host (and only if the host
737 *-*-darwin[4-9]* | *-*-darwin10*)
738 tm_defines="$tm_defines L2_MAX_OFILE_ALIGNMENT=15U"
741 tm_defines="$tm_defines L2_MAX_OFILE_ALIGNMENT=28U"
745 # Darwin 4 to 19 correspond to macOS 10.0 to 10.15
746 *-*-darwin[4-9]* | *-*-darwin1[0-9]*)
747 macos_min=`expr $darwin_maj - 4`
750 # Darwin 20 corresponds to macOS 11, Darwin 21 to macOS 12.
751 macos_maj=`expr $darwin_maj - 9`
756 aarch64) macos_maj=11 ;;
757 x86_64) macos_min=6 ;;
761 *-*-darwin*) tm_defines="$tm_defines DARWIN_USE_KERNEL_VERS" ;;
763 # If configuring a cross-compiler then we will have set some
764 #Â default above, but it is probably not what was intended.
765 echo "Warning: Using ${target} is only suitable for Darwin hosts" 1>&2
766 echo "configure with an explicit target version" 1>&2
771 echo "Error: configuring for an unreleased macOS version ${target}" 1>&2
775 tm_defines="$tm_defines DEF_MIN_OSX_VERSION=\\\"${macos_maj}.${macos_min}\\\""
776 tm_defines="$tm_defines DEF_LD64=\\\"${def_ld64}\\\""
777 tm_file="${tm_file} ${cpu_type}/darwin.h"
778 tm_p_file="${tm_p_file} darwin-protos.h"
779 target_gtfiles="$target_gtfiles \$(srcdir)/config/darwin.cc"
780 extra_options="${extra_options} rpath.opt darwin.opt"
781 c_target_objs="${c_target_objs} darwin-c.o"
782 cxx_target_objs="${cxx_target_objs} darwin-c.o"
783 d_target_objs="${d_target_objs} darwin-d.o"
784 fortran_target_objs="darwin-f.o"
785 rust_target_objs="${rust_target_objs} darwin-rust.o"
786 target_has_targetcm=yes
787 target_has_targetdm=yes
788 target_has_targetrustm=yes
789 extra_objs="${extra_objs} darwin.o"
790 extra_gcc_objs="darwin-driver.o"
791 default_use_cxa_atexit=yes
793 case ${enable_threads} in
794 "" | yes | posix) thread_file='posix' ;;
800 tmake_file="t-slibgcc"
801 case ${enable_threads} in
806 # Let these non-posix thread selections fall through if requested
809 echo 'Unknown thread configuration for DragonFly BSD'
813 extra_options="$extra_options rpath.opt dragonfly.opt"
814 default_use_cxa_atexit=yes
816 d_target_objs="${d_target_objs} dragonfly-d.o"
817 tmake_file="${tmake_file} t-dragonfly"
818 target_has_targetdm=yes
819 rust_target_objs="${rust_target_objs} dragonfly-rust.o"
820 target_has_targetrustm=yes
823 # This is the generic ELF configuration of FreeBSD. Later
824 # machine-specific sections may refine and add to this
827 # Due to tm_file entry ordering issues that vary between cpu
828 # architectures, we only define fbsd_tm_file to allow the
829 # machine-specific section to dictate the final order of all
830 # entries of tm_file with the minor exception that components
831 # of the tm_file set here will always be of the form:
833 # freebsd<version_number>.h [freebsd-<conf_option>.h ...] freebsd-spec.h freebsd.h
835 # The machine-specific section should not tamper with this
836 # ordering but may order all other entries of tm_file as it
837 # pleases around the provided core setting.
840 fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
841 if test "$fbsd_major" = ""; then
842 echo "Specify the major version number of the targeted FreeBSD release"
843 echo "like this: --target=amd64-unknown-freebsd10.1"
846 tm_defines="${tm_defines} FBSD_MAJOR=${fbsd_major}"
847 tmake_file="t-slibgcc"
848 case ${enable_threads} in
850 fbsd_tm_file="${fbsd_tm_file} freebsd-nthr.h"
856 echo 'Unknown thread configuration for FreeBSD'
860 fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h freebsd-stdint.h"
861 extra_options="$extra_options rpath.opt freebsd.opt"
866 default_use_cxa_atexit=yes;;
869 d_target_objs="${d_target_objs} freebsd-d.o"
870 tmake_file="${tmake_file} t-freebsd"
871 target_has_targetdm=yes
872 rust_target_objs="${rust_target_objs} freebsd-rust.o"
873 target_has_targetrustm=yes
876 native_system_header_dir=/include
877 tmake_file="t-fuchsia"
878 rust_target_objs="${rust_target_objs} fuchsia-rust.o"
879 target_has_targetrustm=yes
881 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi)
882 extra_options="$extra_options gnu-user.opt"
885 case ${enable_threads} in
886 "" | yes | posix) thread_file='posix' ;;
888 tmake_file="t-slibgcc"
890 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
893 native_system_header_dir=/include
896 # Linux C libraries selection switch: glibc / uclibc / bionic.
897 # uclibc and bionic aren't usable for GNU/Hurd and neither for GNU/k*BSD.
900 tm_p_file="${tm_p_file} linux-protos.h"
901 tmake_file="${tmake_file} t-linux"
902 extra_objs="${extra_objs} linux.o"
903 extra_options="${extra_options} linux.opt"
908 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC"
910 *-*-*uclibc* | *-*-uclinuxfdpiceabi)
911 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
914 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
917 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
920 # Assume that glibc or uClibc or Bionic are being used and so __cxa_atexit
922 default_use_cxa_atexit=yes
925 # Enable compilation for Android by default for *android* targets.
928 tm_defines="$tm_defines ANDROID_DEFAULT=1"
931 tm_defines="$tm_defines ANDROID_DEFAULT=0"
934 c_target_objs="${c_target_objs} glibc-c.o"
935 cxx_target_objs="${cxx_target_objs} glibc-c.o"
936 tmake_file="${tmake_file} t-glibc"
937 target_has_targetcm=yes
939 *-*-*uclibc* | *-*-uclinuxfdpiceabi)
942 # Linux targets always support .init_array.
943 gcc_cv_initfini_array=yes
948 d_target_objs="${d_target_objs} linux-d.o"
949 target_has_targetdm=yes
950 rust_target_objs="${rust_target_objs} linux-rust.o"
951 target_has_targetrustm=yes
954 d_target_objs="${d_target_objs} kfreebsd-d.o"
955 target_has_targetdm=yes
957 *-*-kopensolaris*-gnu)
958 d_target_objs="${d_target_objs} kopensolaris-d.o"
959 target_has_targetdm=yes
962 d_target_objs="${d_target_objs} gnu-d.o"
963 target_has_targetdm=yes
968 tm_p_file="${tm_p_file} netbsd-protos.h"
969 tmake_file="t-netbsd t-slibgcc"
970 extra_objs="${extra_objs} netbsd.o"
971 d_target_objs="${d_target_objs} netbsd-d.o"
975 case ${enable_threads} in
976 "" | yes | posix) thread_file='posix' ;;
978 nbsd_tm_file="netbsd.h netbsd-stdint.h netbsd-elf.h"
979 default_use_cxa_atexit=yes
980 target_has_targetdm=yes
982 arm*-* | i[34567]86-* | powerpc*-* | sparc*-* | x86_64-*)
983 default_gnu_indirect_function=yes
986 rust_target_objs="${rust_target_objs} netbsd-rust.o"
987 target_has_targetrustm=yes
990 tmake_file="t-openbsd"
991 case ${enable_threads} in
997 *-*-openbsd4.[3-9]|*-*-openbsd[5-9]*)
998 default_use_cxa_atexit=yes
1001 d_target_objs="${d_target_objs} openbsd-d.o"
1002 target_has_targetdm=yes
1003 rust_target_objs="${rust_target_objs} openbsd-rust.o"
1004 target_has_targetrustm=yes
1009 default_use_cxa_atexit=yes
1012 case ${enable_threads} in
1013 "" | yes | rtems) thread_file='rtems' ;;
1014 posix) thread_file='posix' ;;
1017 echo 'Unknown thread configuration for RTEMS'
1021 tmake_file="${tmake_file} t-rtems"
1022 extra_options="${extra_options} rtems.opt"
1023 default_use_cxa_atexit=yes
1027 extra_options="$extra_options gnu-user.opt"
1029 case ${enable_threads} in
1030 "" | yes | posix) thread_file='posix' ;;
1032 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC SINGLE_LIBC"
1038 # i?86-*-solaris2* needs to insert headers between cpu default and
1039 # Solaris 2 specific ones.
1040 sol2_tm_file_head="elfos.h ${cpu_type}/sysv4.h"
1041 sol2_tm_file_tail="${cpu_type}/sol2.h sol2.h"
1042 sol2_tm_file="${sol2_tm_file_head} ${sol2_tm_file_tail}"
1044 *-*-solaris2.1[1-9]*)
1045 # __cxa_atexit was introduced in Solaris 11.4.
1046 default_use_cxa_atexit=yes
1050 if test x$gnu_ld = xyes; then
1051 tm_file="usegld.h ${tm_file}"
1053 if test x$gas = xyes; then
1054 tm_file="usegas.h ${tm_file}"
1056 tm_p_file="${tm_p_file} sol2-protos.h"
1057 tmake_file="${tmake_file} t-sol2 t-slibgcc"
1058 c_target_objs="${c_target_objs} sol2-c.o"
1059 cxx_target_objs="${cxx_target_objs} sol2-c.o sol2-cxx.o"
1060 d_target_objs="${d_target_objs} sol2-d.o"
1061 extra_objs="${extra_objs} sol2.o sol2-stubs.o"
1062 extra_options="${extra_options} sol2.opt"
1063 case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
1064 "":yes:* | yes:yes:* )
1068 target_has_targetdm=yes
1069 rust_target_objs="${rust_target_objs} sol2-rust.o"
1070 target_has_targetrustm=yes
1073 extra_options="${extra_options} vms/vms.opt"
1074 xmake_file=vms/x-vms
1075 tmake_file="vms/t-vms t-slibgcc"
1077 target_gtfiles="$target_gtfiles \$(srcdir)/config/vms/vms.cc"
1078 tm_p_file="${tm_p_file} vms/vms-protos.h"
1079 xm_file="vms/xm-vms.h"
1080 c_target_objs="vms-c.o"
1081 cxx_target_objs="vms-c.o"
1082 fortran_target_objs="vms-f.o"
1083 use_gcc_stdint=provide
1084 tm_file="${tm_file} vms/vms-stdint.h"
1085 if test x$gnu_ld != xyes; then
1086 # Build wrappers for native case.
1087 extra_programs="ld\$(exeext) ar\$(exeext)"
1088 tmake_file="$tmake_file vms/t-vmsnative"
1092 tmake_file=t-vxworks
1095 extra_options="${extra_options} vxworks.opt"
1096 extra_objs="$extra_objs vxworks.o"
1098 c_target_objs="${c_target_objs} vxworks-c.o"
1099 cxx_target_objs="${cxx_target_objs} vxworks-c.o"
1100 extra_headers="${extra_headers} ../vxworks/vxworks-predef.h"
1101 target_has_targetcm="yes"
1103 rust_target_objs="${rust_target_objs} vxworks-rust.o"
1104 target_has_targetrustm=yes
1106 extra_gcc_objs="vxworks-driver.o"
1108 # This private header exposes a consistent interface for checks on
1109 # the VxWorks version our runtime header files need to perform, based on
1110 # what the system headers adverstise:
1112 extra_headers="${extra_headers} ../vxworks/_vxworks-versions.h"
1114 # Starting from VxWorks 7, the system comes with a Dinkumware
1115 # environment which requires the inclusion of "yvals.h" before other
1116 # system headers. We provide wrapped versions of a few headers to
1117 # accomodate such constraints:
1119 extra_headers="${extra_headers} ../vxworks/_yvals.h"
1120 extra_headers="${extra_headers} ../vxworks/_yvals-wrapper.h"
1122 extra_headers="${extra_headers} ../vxworks/math.h ../vxworks/complex.h"
1123 extra_headers="${extra_headers} ../vxworks/inttypes.h ../vxworks/setjmp.h"
1125 # We provide (a tailored version of) stdint.h
1126 tm_file="${tm_file} vxworks-stdint.h"
1127 use_gcc_stdint=provide
1129 case ${enable_threads} in
1131 "" | yes | vxworks) thread_file='vxworks' ;;
1132 *) echo 'Unknown thread configuration for VxWorks'; exit 1 ;;
1135 # A few common macro definitions conveying general characteristics
1136 # of the configuration at hand. Note that by VxWorks 7, we mean the
1137 # the SR6xx major update or beyond in vendor parlance:
1141 tm_defines="$tm_defines TARGET_VXWORKS7=1"
1146 tm_defines="$tm_defines TARGET_VXWORKS64=1"
1150 # Then a few build configuration controls for VxWorks 7, which
1151 # has specificities on top of which we aim to provide more complete
1156 # VxWorks 7 always has init/fini_array support and it is simpler to
1157 # just leverage this, sticking to what the system toolchain does:
1158 gcc_cv_initfini_array=yes
1162 *-*-elf|arc*-*-elf*)
1163 # Assume that newlib is being used and so __cxa_atexit is provided.
1164 default_use_cxa_atexit=yes
1167 case "${with_newlib}-${with_headers}" in
1168 no-no) use_gcc_stdint=provide ;;
1175 aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
1176 tm_file="${tm_file} elfos.h newlib-stdint.h"
1177 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-elf-raw.h"
1178 tmake_file="${tmake_file} aarch64/t-aarch64"
1184 tm_file="${tm_file} fuchsia.h"
1187 tm_file="${tm_file} aarch64/rtems.h rtems.h"
1192 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1195 aarch64_multilibs="${with_multilib_list}"
1196 if test "$aarch64_multilibs" = "default"; then
1197 aarch64_multilibs="lp64,ilp32"
1199 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1200 for aarch64_multilib in ${aarch64_multilibs}; do
1201 case ${aarch64_multilib} in
1203 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1206 echo "--with-multilib-list=${aarch64_multilib} not supported."
1210 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1212 aarch64*-*-freebsd*)
1213 tm_file="${tm_file} elfos.h ${fbsd_tm_file}"
1214 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-freebsd.h"
1215 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
1216 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1219 tm_file="${tm_file} elfos.h ${nbsd_tm_file}"
1220 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-netbsd.h"
1221 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-netbsd"
1222 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1225 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h"
1226 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-linux.h"
1227 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-linux"
1228 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1231 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1234 aarch64_multilibs="${with_multilib_list}"
1235 if test "$aarch64_multilibs" = "default"; then
1236 # TODO: turn on ILP32 multilib build after its support is mature.
1237 # aarch64_multilibs="lp64,ilp32"
1238 aarch64_multilibs="lp64"
1240 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1241 for aarch64_multilib in ${aarch64_multilibs}; do
1242 case ${aarch64_multilib} in
1244 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1247 echo "--with-multilib-list=${aarch64_multilib} not supported."
1251 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1253 aarch64*-wrs-vxworks*)
1254 tm_file="${tm_file} elfos.h aarch64/aarch64-elf.h"
1255 tm_file="${tm_file} vx-common.h vxworks.h aarch64/aarch64-vxworks.h"
1256 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-vxworks"
1259 tm_file="elfos.h ${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h glibc-stdint.h"
1260 tmake_file="${tmake_file} alpha/t-linux alpha/t-alpha"
1261 extra_options="${extra_options} alpha/elf.opt"
1264 tm_file="elfos.h ${tm_file} ${nbsd_tm_file} alpha/elf.h alpha/netbsd.h"
1265 tmake_file="${tmake_file} alpha/t-alpha"
1266 extra_options="${extra_options} netbsd.opt netbsd-elf.opt \
1270 tm_defines="${tm_defines} OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_FUNCTION_SIZE OBSD_HAS_DECLARE_OBJECT"
1271 tm_file="elfos.h alpha/alpha.h alpha/elf.h openbsd.h openbsd-stdint.h alpha/openbsd.h openbsd-libpthread.h"
1272 tmake_file="${tmake_file} alpha/t-alpha"
1273 extra_options="${extra_options} openbsd.opt alpha/elf.opt"
1274 # default x-alpha is only appropriate for dec-osf.
1277 tm_file="${tm_file} vms/vms.h alpha/vms.h"
1278 tmake_file="${tmake_file} alpha/t-vms alpha/t-alpha"
1281 tm_file="arc/arc-arch.h elfos.h newlib-stdint.h arc/elf.h ${tm_file}"
1282 tmake_file="arc/t-multilib arc/t-arc"
1283 extra_gcc_objs="driver-arc.o"
1284 if test "x$with_cpu" != x; then
1285 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1287 if test x${with_endian} = x; then
1289 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1290 *) with_endian=little ;;
1293 case ${with_endian} in
1295 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1297 case ${with_endian} in
1298 big*) tm_file="arc/big.h ${tm_file}"
1302 tm_file="arc/arc-arch.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arc/linux.h ${tm_file}"
1303 tmake_file="${tmake_file} arc/t-multilib-linux arc/t-arc"
1304 extra_gcc_objs="driver-arc.o"
1305 if test "x$with_cpu" != x; then
1306 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1308 if test x${with_endian} = x; then
1310 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1311 *) with_endian=little ;;
1314 case ${with_endian} in
1316 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1318 case ${with_endian} in
1319 big*) tm_file="arc/big.h ${tm_file}"
1321 # Force .init_array support. The configure script cannot always
1322 # automatically detect that GAS supports it, yet we require it.
1323 gcc_cv_initfini_array=yes
1326 # We only support VxWorks 7 now on ARM, post SR600. Pre SR600
1327 # VxWorks 7 was transitory and major versions prior to 7 were based
1328 # on long deprecated ABI, not supported at all any more regardless
1330 extra_options="${extra_options} arm/vxworks.opt"
1331 tmake_file="${tmake_file} arm/t-arm arm/t-vxworks arm/t-bpabi"
1332 tm_file="elfos.h arm/elf.h arm/bpabi.h arm/aout.h ${tm_file}"
1333 tm_file="${tm_file} vx-common.h vxworks.h arm/vxworks.h"
1334 target_cpu_cname="generic-armv7-a"
1335 need_64bit_hwint=yes
1337 arm*-*-freebsd*) # ARM FreeBSD EABI
1338 tm_file="elfos.h ${fbsd_tm_file} arm/elf.h"
1341 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1344 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi"
1345 tm_file="${tm_file} arm/bpabi.h arm/freebsd.h arm/aout.h arm/arm.h"
1348 target_cpu_cname="arm1176jzf-s"
1349 if test $fbsd_major -ge 11; then
1350 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1354 target_cpu_cname="generic-armv7-a"
1355 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1358 target_cpu_cname="arm9"
1361 with_tls=${with_tls:-gnu}
1364 target_cpu_cname="strongarm"
1365 tmake_file="${tmake_file} arm/t-arm"
1366 tm_file="elfos.h ${nbsd_tm_file} arm/elf.h"
1367 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1369 arm*eb-*) tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" ;;
1372 arm*-*-netbsdelf-*eabi*)
1373 tm_file="$tm_file arm/bpabi.h arm/netbsd-elf.h arm/netbsd-eabi.h"
1374 tmake_file="$tmake_file arm/t-bpabi arm/t-netbsdeabi"
1377 tm_file="$tm_file arm/netbsd-elf.h"
1378 tmake_file="$tmake_file arm/t-netbsd"
1381 tm_file="${tm_file} arm/aout.h arm/arm.h"
1383 arm*-*-netbsdelf-*eabihf*)
1384 # Hard-float requires at least Arm v5te
1385 target_cpu_cname="arm10e"
1386 tm_defines="${tm_defines} TARGET_DEFAULT_FLOAT_ABI=ARM_FLOAT_ABI_HARD"
1390 armv6*) target_cpu_cname="arm1176jzf-s";;
1391 armv7*) target_cpu_cname="generic-armv7-a";;
1394 arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)
1395 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"
1396 extra_options="${extra_options} linux-android.opt"
1399 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1402 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
1403 tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h arm/aout.h arm/arm.h"
1405 arm*-*-uclinuxfdpiceabi)
1406 tm_file="$tm_file arm/uclinuxfdpiceabi.h"
1409 # Define with_float to "hard" if not already defined and
1410 # target name ends with "hf"
1411 case $target:$with_float in
1416 # Generation of floating-point instructions requires at least ARMv5te.
1417 if [ "$with_float" = "hard" -o "$with_float" = "softfp" ] ; then
1418 target_cpu_cname="arm10e"
1420 target_cpu_cname="arm10tdmi"
1422 # Define multilib configuration for arm-linux-androideabi.
1425 tmake_file="$tmake_file arm/t-linux-androideabi"
1428 # The EABI requires the use of __cxa_atexit.
1429 default_use_cxa_atexit=yes
1430 with_tls=${with_tls:-gnu}
1432 arm*-*-uclinux*eabi*) # ARM ucLinux
1433 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
1434 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi"
1435 tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h arm/aout.h arm/arm.h"
1436 target_cpu_cname="arm7tdmi"
1437 # The EABI requires the use of __cxa_atexit.
1438 default_use_cxa_atexit=yes
1441 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1442 tm_file="${tm_file} newlib-stdint.h phoenix.h"
1443 tm_file="${tm_file} arm/aout.h arm/arm.h"
1444 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi arm/t-phoenix"
1445 target_cpu_cname="arm7tdmi"
1447 arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
1450 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1452 default_use_cxa_atexit=yes
1453 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1454 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf"
1455 target_cpu_cname="arm7tdmi"
1458 tm_file="$tm_file newlib-stdint.h"
1459 tmake_file="${tmake_file} arm/t-bpabi"
1463 tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h"
1464 tmake_file="${tmake_file} arm/t-bpabi arm/t-fuchsia"
1465 target_cpu_cname="generic-armv7-a"
1468 tm_file="${tm_file} arm/rtems.h rtems.h newlib-stdint.h"
1469 tmake_file="${tmake_file} arm/t-bpabi arm/t-rtems"
1472 tm_file="${tm_file} arm/symbian.h"
1473 # We do not include t-bpabi for Symbian OS because the system
1474 # provides its own implementation of the BPABI functions.
1475 tmake_file="${tmake_file} arm/t-symbian"
1476 target_cpu_cname="arm10tdmi"
1479 tm_file="${tm_file} arm/aout.h arm/arm.h"
1482 tm_file="elfos.h avr/elf.h avr/avr-arch.h avr/avr.h avr/specs.h avr/avr-stdint.h"
1483 if test x${with_avrlibc} != xno; then
1484 tm_file="${tm_file} ${cpu_type}/avrlibc.h"
1485 tm_defines="${tm_defines} WITH_AVRLIBC"
1487 # Work out avr_double_comparison which is 2 or 3 and is used in
1488 # target hook FLOAT_LIB_COMPARE_RETURNS_BOOL to determine whether
1489 # DFmode comparisons return 3-state or 2-state results.
1490 case y${with_double_comparison} in
1492 avr_double_comparison=3
1495 avr_double_comparison=2
1498 echo "Error: --with-double-comparison= can only be used with: 'tristate', 'bool', 'libf7'" 1>&2
1502 case "y${with_libf7}" in
1504 # avr_double_comparison as set above.
1507 avr_double_comparison=2
1508 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1510 y | yyes | ymath-symbols)
1511 avr_double_comparison=2
1512 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1513 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1514 tm_defines="${tm_defines} WITH_LIBF7_MATH_SYMBOLS"
1517 avr_double_comparison=2
1518 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1519 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1522 echo "Error: --with-libf7=${with_libf7} but can only be used with: 'libgcc', 'math', 'math-symbols', 'yes', 'no'" 1>&2
1526 tm_defines="${tm_defines} WITH_DOUBLE_COMPARISON=${avr_double_comparison}"
1527 case y${with_double} in
1530 tm_defines="${tm_defines} HAVE_DOUBLE32"
1534 tm_defines="${tm_defines} HAVE_DOUBLE64"
1538 avr_double_multilib=1
1539 tm_defines="${tm_defines} HAVE_DOUBLE32"
1540 tm_defines="${tm_defines} HAVE_DOUBLE64"
1541 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1545 avr_double_multilib=1
1546 tm_defines="${tm_defines} HAVE_DOUBLE32"
1547 tm_defines="${tm_defines} HAVE_DOUBLE64"
1548 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1551 echo "Error: --with-double= can only be used with: '32', '32,64', '64,32', '64'" 1>&2
1555 case y${with_long_double} in
1558 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1562 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1566 avr_long_double_multilib=1
1567 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1568 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1569 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1573 avr_long_double_multilib=1
1574 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1575 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1576 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1579 avr_long_double=${avr_double}
1580 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_IS_DOUBLE"
1581 if test y${avr_double_multilib} = y1; then
1582 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1583 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1585 tm_defines="${tm_defines} HAVE_LONG_DOUBLE${avr_long_double}"
1589 echo "Error: --with-long_double= can only be used with: '32', '32,64', '64,32', '64', 'double'" 1>&2
1593 if test ${avr_long_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 32xy1z; then
1594 if test y${with_long_double} != ydouble; then
1595 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
1599 if test ${avr_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 64x1yz; then
1600 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
1603 if test y${avr_double}${avr_long_double} = y6432; then
1604 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
1607 tm_defines="${tm_defines} WITH_DOUBLE${avr_double}"
1608 tm_defines="${tm_defines} WITH_LONG_DOUBLE${avr_long_double}"
1609 tmake_file="${tmake_file} avr/t-avr avr/t-multilib"
1611 extra_gcc_objs="driver-avr.o avr-devices.o"
1612 extra_objs="avr-devices.o avr-log.o"
1615 tm_file="${tm_file} elfos.h newlib-stdint.h bfin/elf.h"
1616 tmake_file=bfin/t-bfin-elf
1620 tm_file="${tm_file} elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/uclinux.h"
1621 tmake_file=bfin/t-bfin-uclinux
1624 bfin*-linux-uclibc*)
1625 tm_file="${tm_file} elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/linux.h ./linux-sysroot-suffix.h"
1626 tmake_file="${tmake_file} bfin/t-bfin-linux"
1630 tm_file="${tm_file} elfos.h bfin/elf.h bfin/rtems.h rtems.h newlib-stdint.h"
1631 tmake_file="${tmake_file} bfin/t-rtems"
1634 tm_file="${tm_file} elfos.h newlib-stdint.h bfin/elf.h"
1639 tm_file="elfos.h ${tm_file}"
1640 tmake_file="${tmake_file} bpf/t-bpf"
1642 extra_headers="bpf-helpers.h"
1643 use_gcc_stdint=provide
1644 extra_objs="coreout.o core-builtins.o"
1645 target_gtfiles="$target_gtfiles \$(srcdir)/config/bpf/coreout.cc \$(srcdir)/config/bpf/core-builtins.cc"
1647 cris-*-elf | cris-*-none)
1648 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1649 tmake_file="cris/t-cris cris/t-elfmulti"
1651 extra_options="${extra_options} cris/elf.opt"
1655 if test x${with_endian} != x; then
1656 case ${with_endian} in
1659 echo "with_endian=${with_endian} not supported."
1664 if test x${with_float} != x; then
1665 case ${with_float} in
1666 soft | hard | softfp) ;;
1668 "Unknown floating point type used in --with-float=$with_float"
1673 tm_file="csky/csky.h"
1674 md_file="csky/csky.md"
1675 out_file="csky/csky.cc"
1676 tm_p_file="${tm_p_file} csky/csky-protos.h"
1677 extra_options="${extra_options} csky/csky_tables.opt"
1679 if test x${enable_tpf_debug} = xyes; then
1680 tm_defines="${tm_defines} ENABLE_TPF_DEBUG"
1685 tm_file="elfos.h newlib-stdint.h ${tm_file} csky/csky-elf.h"
1686 tmake_file="csky/t-csky csky/t-csky-elf"
1687 default_use_cxa_atexit=no
1691 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} csky/csky-linux-elf.h"
1692 tmake_file="${tmake_file} csky/t-csky"
1694 if test "x${enable_multilib}" = xyes ; then
1695 tm_defines="$tm_defines CSKY_ENABLE_MULTILIB"
1696 tmake_file="${tmake_file} csky/t-csky-linux"
1701 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
1702 # Force .init_array support. The configure script cannot always
1703 # automatically detect that GAS supports it, yet we require it.
1704 gcc_cv_initfini_array=yes
1706 csky-*-linux-uclibc*)
1707 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
1708 default_use_cxa_atexit=no
1711 echo "Unknown target $target"
1717 echo "Unknown target $target"
1722 epiphany-*-elf | epiphany-*-rtems*)
1723 tm_file="elfos.h ${tm_file}"
1724 tmake_file="${tmake_file} epiphany/t-epiphany"
1727 tm_file="${tm_file} epiphany/rtems.h rtems.h newlib-stdint.h"
1730 tm_file="${tm_file} newlib-stdint.h"
1733 extra_options="${extra_options} fused-madd.opt"
1734 extra_objs="${extra_objs} mode-switch-use.o resolve-sw-modes.o"
1735 tm_defines="${tm_defines} EPIPHANY_STACK_OFFSET=${with_stack_offset:-8}"
1736 extra_headers="epiphany_intrinsics.h"
1739 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1742 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1743 tmake_file=frv/t-frv
1746 tm_file="elfos.h ${tm_file} \
1747 gnu-user.h linux.h glibc-stdint.h frv/linux.h"
1748 tmake_file="${tmake_file} frv/t-frv frv/t-linux"
1753 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1754 tmake_file="${tmake_file} ft32/t-ft32"
1757 tm_file="elfos.h gcn/gcn-hsa.h gcn/gcn.h newlib-stdint.h"
1758 tmake_file="gcn/t-gcn-hsa"
1759 native_system_header_dir=/include
1760 extra_modes=gcn/gcn-modes.def
1761 extra_objs="${extra_objs} gcn-tree.o"
1762 extra_gcc_objs="driver-gcn.o"
1764 x86_64*-*-linux-gnu )
1765 if test "$ac_cv_search_dlopen" != no; then
1766 extra_programs="${extra_programs} gcn-run\$(exeext)"
1770 if test x$enable_as_accelerator = xyes; then
1771 extra_programs="${extra_programs} mkoffload\$(exeext)"
1772 tm_file="${tm_file} gcn/offload.h"
1774 # Force .init_array support.
1775 gcc_cv_initfini_array=yes
1781 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1782 tmake_file="${tmake_file} moxie/t-moxie"
1787 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h moxie/uclinux.h"
1788 tmake_file="${tmake_file} moxie/t-moxie"
1791 tmake_file="${tmake_file} moxie/t-moxie"
1792 tm_file="moxie/moxie.h elfos.h moxie/rtems.h rtems.h newlib-stdint.h"
1797 tm_file="${tm_file} elfos.h moxie/moxiebox.h newlib-stdint.h"
1798 tmake_file="${tmake_file} moxie/t-moxiebox"
1801 tmake_file="h8300/t-h8300"
1802 tm_file="h8300/h8300.h elfos.h newlib-stdint.h h8300/elf.h"
1805 tmake_file="${tmake_file} h8300/t-h8300 h8300/t-linux"
1806 tm_file="h8300/h8300.h elfos.h gnu-user.h linux.h glibc-stdint.h h8300/linux.h"
1809 target_cpu_default="MASK_PA_11|MASK_PA_20"
1810 tm_file="pa/pa64-start.h ${tm_file} elfos.h gnu-user.h linux.h \
1811 glibc-stdint.h pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h \
1813 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1814 d_target_objs="${d_target_objs} pa-d.o"
1818 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS|MASK_CALLER_COPIES"
1819 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h pa/pa-linux.h \
1820 pa/pa32-regs.h pa/pa32-linux.h"
1821 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1822 d_target_objs="${d_target_objs} pa-d.o"
1825 target_cpu_default="MASK_PA_11"
1826 tm_file="${tm_file} elfos.h openbsd.h openbsd-stdint.h openbsd-libpthread.h \
1827 pa/pa-openbsd.h pa/pa32-regs.h pa/pa32-openbsd.h"
1828 extra_options="${extra_options} openbsd.opt"
1829 tmake_file="pa/t-pa"
1830 d_target_objs="${d_target_objs} pa-d.o"
1835 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS"
1836 tm_file="${tm_file} elfos.h ${nbsd_tm_file} \
1837 pa/pa-netbsd.h pa/pa32-regs.h pa/pa32-netbsd.h"
1838 tmake_file="${tmake_file}"
1839 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
1840 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1843 target_cpu_default="MASK_PA_11|MASK_PA_20"
1844 if test x$gnu_ld = xyes
1846 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
1848 tm_file="pa/pa64-start.h ${tm_file} elfos.h \
1849 pa/pa64-regs.h pa/pa-hpux.h pa/pa-hpux1010.h \
1853 tm_file="${tm_file} pa/pa-hpux1111.h pa/pa-64.h pa/pa64-hpux.h"
1854 extra_options="${extra_options} pa/pa-hpux1111.opt"
1857 tm_file="${tm_file} pa/pa-hpux1131.h pa/pa-64.h pa/pa64-hpux.h"
1858 extra_options="${extra_options} pa/pa-hpux1131.opt"
1861 tm_file="${tm_file} pa/pa-64.h pa/pa64-hpux.h"
1864 extra_options="${extra_options} pa/pa-hpux.opt \
1865 pa/pa-hpux1010.opt pa/pa64-hpux.opt hpux11.opt"
1866 tmake_file="pa/t-pa t-slibgcc"
1867 d_target_objs="${d_target_objs} pa-d.o"
1868 case x${enable_threads} in
1876 use_gcc_stdint=provide
1877 tm_file="${tm_file} hpux-stdint.h"
1881 tm_file="${tm_file} hpux-stdint.h"
1885 i[34567]86-*-darwin1[89]* | i[34567]86-*-darwin2*)
1886 echo "Error: 32bit target is not supported after Darwin17" 1>&2
1888 i[34567]86-*-darwin*)
1890 # Baseline choice for a machine that allows m64 support.
1891 with_cpu=${with_cpu:-core2}
1892 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch t-slibgcc"
1893 tm_file="${cpu_type}/darwin32-biarch.h ${tm_file} "
1895 x86_64-*-darwin1[89]* | x86_64-*-darwin2*)
1897 tm_defines="${tm_defines} TARGET_64BIT_DEFAULT=(OPTION_MASK_ISA_64BIT|OPTION_MASK_ABI_64)"
1898 tm_defines="${tm_defines} TARGET_BI_ARCH=0"
1899 with_cpu=${with_cpu:-core2}
1900 tmake_file="${tmake_file} t-slibgcc"
1903 with_cpu=${with_cpu:-core2}
1904 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
1905 tm_file="${cpu_type}/darwin64-biarch.h ${tm_file} "
1907 i[34567]86-*-elfiamcu)
1908 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/iamcu.h"
1911 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h"
1914 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h"
1917 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"
1920 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/rdos.h"
1923 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"
1924 tmake_file="i386/t-i386elf t-svr4"
1926 i[34567]86-*-dragonfly*)
1927 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h dragonfly.h dragonfly-stdint.h i386/dragonfly.h"
1928 tmake_file="${tmake_file} i386/t-crtstuff"
1930 x86_64-*-dragonfly*)
1931 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h dragonfly.h dragonfly-stdint.h i386/x86-64.h i386/dragonfly.h"
1932 tmake_file="${tmake_file} i386/t-crtstuff"
1934 i[34567]86-*-freebsd*)
1935 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
1938 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"
1940 i[34567]86-*-netbsdelf*)
1941 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${nbsd_tm_file} i386/netbsd-elf.h"
1942 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1945 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${nbsd_tm_file} i386/x86-64.h i386/netbsd64.h"
1946 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1948 i[34567]86-*-openbsd*)
1949 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
1950 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/openbsdelf.h"
1951 extra_options="${extra_options} openbsd.opt"
1956 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
1957 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/x86-64.h i386/openbsdelf.h"
1958 extra_options="${extra_options} openbsd.opt"
1962 i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu)
1963 # Intel 80386's running GNU/*
1964 # with ELF format using glibc 2
1965 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h gnu-user.h glibc-stdint.h"
1967 i[34567]86-*-linux*)
1968 tm_file="${tm_file} linux.h linux-android.h"
1969 extra_options="${extra_options} linux-android.opt"
1970 if test x$enable_targets = xall; then
1971 tm_file="${tm_file} i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h i386/linux-common.h i386/linux64.h"
1972 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
1973 tmake_file="${tmake_file} i386/t-linux64"
1974 x86_multilibs="${with_multilib_list}"
1975 if test "$x86_multilibs" = "default"; then
1976 x86_multilibs="m64,m32"
1978 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
1979 for x86_multilib in ${x86_multilibs}; do
1980 case ${x86_multilib} in
1982 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
1985 echo "--with-multilib-list=${x86_with_multilib} not supported."
1989 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1991 if test x$with_cpu = x; then
1992 if test x$with_cpu_64 = x; then
1996 case " $x86_cpus $x86_archs $x86_64_archs " in
2000 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2001 echo "$x86_cpus $x86_archs $x86_64_archs " 1>&2
2007 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h i386/linux-common.h i386/linux.h"
2010 i[34567]86-*-kfreebsd*-gnu)
2011 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kfreebsd-gnu.h i386/kfreebsd-gnu.h"
2013 i[34567]86-*-kopensolaris*-gnu)
2014 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kopensolaris-gnu.h i386/kopensolaris-gnu.h"
2017 tm_file="$tm_file i386/gnu-user-common.h i386/gnu-user.h gnu.h i386/gnu.h"
2021 x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-gnu*)
2022 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h gnu-user.h glibc-stdint.h \
2023 i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h"
2026 tm_file="${tm_file} linux.h linux-android.h i386/linux-common.h i386/linux64.h"
2027 extra_options="${extra_options} linux-android.opt"
2029 x86_64-*-kfreebsd*-gnu)
2030 tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu64.h"
2033 tm_file="${tm_file} gnu.h i386/gnu64.h"
2036 tmake_file="${tmake_file} i386/t-linux64"
2037 x86_multilibs="${with_multilib_list}"
2038 if test "$x86_multilibs" = "default"; then
2041 x86_multilibs="mx32"
2044 x86_multilibs="m64,m32"
2048 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
2049 for x86_multilib in ${x86_multilibs}; do
2050 case ${x86_multilib} in
2052 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
2055 echo "--with-multilib-list=${x86_with_multilib} not supported."
2059 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2061 i[34567]86-pc-msdosdjgpp*)
2062 xm_file=i386/xm-djgpp.h
2063 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/djgpp.h i386/djgpp-stdint.h"
2064 native_system_header_dir=/dev/env/DJDIR/include
2065 extra_options="${extra_options} i386/djgpp.opt"
2070 i[34567]86-*-lynxos*)
2072 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h i386/lynx.h lynx.h"
2073 tmake_file="${tmake_file} t-lynx"
2074 extra_options="${extra_options} lynx.opt"
2079 i[34567]86-*-nto-qnx*)
2080 tm_file="${tm_file} i386/att.h tm-dwarf2.h elfos.h i386/unix.h i386/nto.h"
2081 extra_options="${extra_options} i386/nto.opt"
2085 i[34567]86-*-rtems*)
2086 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h i386/i386elf.h i386/rtemself.h rtems.h newlib-stdint.h"
2087 tmake_file="${tmake_file} i386/t-rtems"
2089 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
2090 # Set default arch_32 to pentium4, tune_32 to generic like the other
2091 # i386 targets, although config.guess defaults to i386-pc-solaris2*.
2092 with_arch_32=${with_arch_32:-pentium4}
2093 with_tune_32=${with_tune_32:-generic}
2094 tm_file="${tm_file} i386/unix.h i386/att.h ${sol2_tm_file_head} i386/x86-64.h ${sol2_tm_file_tail}"
2095 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2096 tmake_file="$tmake_file i386/t-sol2"
2098 if test x$with_cpu = x; then
2099 if test x$with_cpu_64 = x; then
2103 case " $x86_cpus $x86_archs $x86_64_archs " in
2107 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2108 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2114 i[4567]86-wrs-vxworks*|x86_64-wrs-vxworks7*)
2115 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
2119 tm_file="${tm_file} i386/x86-64.h"
2122 tm_file="${tm_file} vx-common.h"
2125 tm_file="${tm_file} vxworksae.h i386/vxworks.h i386/vxworksae.h"
2126 tmake_file="${tmake_file} i386/t-vxworks i386/t-vxworksae"
2129 tm_file="${tm_file} vxworks.h i386/vxworks.h"
2130 tmake_file="${tmake_file} i386/t-vxworks"
2134 i[34567]86-*-cygwin*)
2135 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h i386/cygwin.h i386/cygwin-stdint.h"
2136 xm_file=i386/xm-cygwin.h
2137 tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
2138 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2139 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
2140 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2141 c_target_objs="${c_target_objs} msformat-c.o"
2142 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2143 d_target_objs="${d_target_objs} cygwin-d.o"
2144 target_has_targetdm="yes"
2145 if test x$enable_threads = xyes; then
2148 default_use_cxa_atexit=yes
2153 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"
2154 xm_file=i386/xm-cygwin.h
2155 tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
2156 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2157 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
2158 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2159 c_target_objs="${c_target_objs} msformat-c.o"
2160 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2161 d_target_objs="${d_target_objs} cygwin-d.o"
2162 target_has_targetdm="yes"
2163 if test x$enable_threads = xyes; then
2166 default_use_cxa_atexit=yes
2168 tm_defines="${tm_defines} TARGET_CYGWIN64=1"
2170 i[34567]86-*-mingw* | x86_64-*-mingw*)
2171 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h"
2172 xm_file=i386/xm-mingw32.h
2173 c_target_objs="${c_target_objs} winnt-c.o"
2174 cxx_target_objs="${cxx_target_objs} winnt-c.o"
2175 d_target_objs="${d_target_objs} winnt-d.o"
2176 target_has_targetcm="yes"
2177 target_has_targetdm="yes"
2178 rust_target_objs="${rust_target_objs} winnt-rust.o"
2179 target_has_targetrustm="yes"
2181 x86_64-*-* | *-w64-*)
2187 if test x$enable_threads = xposix ; then
2188 tm_file="${tm_file} i386/mingw-pthread.h"
2190 if test x$enable_threads = xmcf ; then
2191 tm_file="${tm_file} i386/mingw-mcfgthread.h"
2193 tm_file="${tm_file} i386/mingw32.h"
2194 # This makes the logic if mingw's or the w64 feature set has to be used
2197 user_headers_inc_next_post="${user_headers_inc_next_post} float.h"
2198 user_headers_inc_next_pre="${user_headers_inc_next_pre} stddef.h stdarg.h"
2199 tm_file="${tm_file} i386/mingw-w64.h"
2200 if test x$enable_targets = xall; then
2201 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2202 if test x$with_cpu = x; then
2203 if test x$with_cpu_64 = x; then
2207 case " $x86_cpus $x86_archs $x86_64_archs " in
2211 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2212 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2222 tm_file="${tm_file} i386/mingw-stdint.h"
2223 tmake_file="${tmake_file} t-winnt i386/t-cygming t-slibgcc"
2226 tmake_file="${tmake_file} i386/t-mingw-w64"
2229 tmake_file="${tmake_file} i386/t-mingw-w32"
2232 native_system_header_dir=/mingw/include
2233 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2234 extra_options="${extra_options} i386/cygming.opt i386/mingw.opt"
2237 extra_options="${extra_options} i386/mingw-w64.opt"
2242 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2243 c_target_objs="${c_target_objs} msformat-c.o"
2244 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2247 default_use_cxa_atexit=yes
2249 case ${enable_threads} in
2259 tm_file="${tm_file} i386/crtdll.h"
2261 *mingw32msv* | *mingw*)
2266 tmake_file="${tmake_file} i386/t-x86_64-elf"
2267 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h fuchsia.h"
2270 tm_file="${tm_file} elfos.h newlib-stdint.h ia64/sysv4.h ia64/elf.h"
2271 tmake_file="ia64/t-ia64"
2272 target_cpu_default="0"
2273 if test x$gas = xyes
2275 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2277 if test x$gnu_ld = xyes
2279 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
2283 tm_file="${tm_file} elfos.h ${fbsd_tm_file} ia64/sysv4.h ia64/freebsd.h"
2284 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2285 tmake_file="${tmake_file} ia64/t-ia64"
2288 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h ia64/sysv4.h ia64/linux.h"
2289 tmake_file="${tmake_file} ia64/t-ia64 ia64/t-linux t-libunwind"
2290 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2293 tm_file="${tm_file} elfos.h ia64/sysv4.h ia64/hpux.h"
2294 tmake_file="ia64/t-ia64 ia64/t-hpux t-slibgcc"
2295 target_cpu_default="MASK_GNU_AS"
2296 case x$enable_threads in
2302 c_target_objs="ia64-c.o"
2303 cxx_target_objs="ia64-c.o"
2304 extra_options="${extra_options} ia64/ilp32.opt hpux11.opt"
2306 tm_file="${tm_file} hpux-stdint.h"
2309 tm_file="${tm_file} ia64/hpux-unix2003.h"
2314 tm_file="${tm_file} elfos.h ia64/sysv4.h vms/vms.h ia64/vms.h"
2315 tmake_file="${tmake_file} ia64/t-ia64"
2316 target_cpu_default="0"
2317 if test x$gas = xyes
2319 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2321 extra_options="${extra_options} ia64/vms.opt"
2324 tm_file="elfos.h newlib-stdint.h iq2000/iq2000.h"
2325 out_file=iq2000/iq2000.cc
2326 md_file=iq2000/iq2000.md
2329 tm_file="elfos.h ${tm_file} newlib-stdint.h"
2330 tmake_file="${tmake_file} lm32/t-lm32"
2333 tm_file="elfos.h ${tm_file} lm32/rtems.h rtems.h newlib-stdint.h"
2334 tmake_file="${tmake_file} lm32/t-lm32"
2335 tmake_file="${tmake_file} lm32/t-rtems"
2338 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h lm32/uclinux-elf.h"
2339 tmake_file="${tmake_file} lm32/t-lm32"
2342 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2345 tm_file="elfos.h newlib-stdint.h m32r/little.h ${tm_file}"
2347 m68k-*-elf* | fido-*-elf*)
2350 # Check that $with_cpu makes sense.
2355 echo "Cannot accept --with-cpu=$with_cpu"
2362 default_m68k_cpu=68020
2366 tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h elfos.h newlib-stdint.h m68k/m68kemb.h m68k/m68020-elf.h"
2367 tm_defines="${tm_defines} MOTOROLA=1"
2368 tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-m68kelf"
2369 # Add multilibs for targets other than fido.
2374 tmake_file="$tmake_file m68k/t-mlibs"
2379 default_m68k_cpu=68020
2381 tm_file="${tm_file} elfos.h ${nbsd_tm_file} m68k/netbsd-elf.h"
2382 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2383 tm_defines="${tm_defines} MOTOROLA=1 CHAR_FAST8=1 SHORT_FAST16=1"
2385 m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux
2386 # with uClibc, using the new GNU/Linux-style
2388 default_m68k_cpu=68020
2390 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"
2391 extra_options="${extra_options} m68k/uclinux.opt"
2392 tm_defines="${tm_defines} MOTOROLA=1"
2393 tmake_file="m68k/t-floatlib m68k/t-uclinux m68k/t-mlibs"
2395 m68k-*-linux*) # Motorola m68k's running GNU/Linux
2396 # with ELF format using glibc 2
2397 # aka the GNU/Linux C library 6.
2398 default_m68k_cpu=68020
2400 with_arch=${with_arch:-m68k}
2401 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h m68k/linux.h ./sysroot-suffix.h"
2402 extra_options="${extra_options} m68k/ieee.opt"
2403 tm_defines="${tm_defines} MOTOROLA=1"
2404 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-linux m68k/t-mlibs"
2407 default_m68k_cpu=68020
2409 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-m68kbare m68k/t-crtstuff m68k/t-rtems m68k/t-mlibs"
2410 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"
2411 tm_defines="${tm_defines} MOTOROLA=1"
2414 tm_file="elfos.h newlib-stdint.h ${tm_file} mcore/mcore-elf.h"
2415 tmake_file=mcore/t-mcore
2421 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2424 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2427 tm_file="${tm_file} gnu-user.h linux.h microblaze/linux.h"
2428 tm_file="${tm_file} glibc-stdint.h"
2429 c_target_objs="${c_target_objs} microblaze-c.o"
2430 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2431 tmake_file="${tmake_file} microblaze/t-microblaze"
2432 tmake_file="${tmake_file} microblaze/t-microblaze-linux"
2434 microblaze*-*-rtems*)
2437 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2440 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2443 tm_file="${tm_file}"
2444 tm_file="${tm_file} microblaze/rtems.h rtems.h newlib-stdint.h"
2445 c_target_objs="${c_target_objs} microblaze-c.o"
2446 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2447 tmake_file="${tmake_file} microblaze/t-microblaze"
2448 tmake_file="${tmake_file} microblaze/t-rtems"
2453 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2456 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2459 tm_file="${tm_file} newlib-stdint.h"
2460 c_target_objs="${c_target_objs} microblaze-c.o"
2461 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2462 tmake_file="${tmake_file} microblaze/t-microblaze"
2465 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} riscv/linux.h"
2466 case "x${enable_multilib}" in
2468 xyes) tmake_file="${tmake_file} riscv/t-linux-multilib" ;;
2469 *) echo "Unknown value for enable_multilib"; exit 1
2471 tmake_file="${tmake_file} riscv/t-riscv riscv/t-linux"
2472 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
2476 riscv32be-*|riscv64be-*)
2477 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2480 # Force .init_array support. The configure script cannot always
2481 # automatically detect that GAS supports it, yet we require it.
2482 gcc_cv_initfini_array=yes
2484 riscv*-*-elf* | riscv*-*-rtems*)
2485 tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h"
2488 tm_file="${tm_file} riscv/rtems.h rtems.h"
2489 tmake_file="${tmake_file} riscv/t-rtems"
2492 if test "x${with_multilib_generator}" = xdefault; then
2493 case "x${enable_multilib}" in
2495 xyes) tmake_file="${tmake_file} riscv/t-elf-multilib" ;;
2496 *) echo "Unknown value for enable_multilib"; exit 1
2500 tmake_file="${tmake_file} riscv/t-riscv"
2504 riscv32be-*|riscv64be-*)
2505 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2508 # Force .init_array support. The configure script cannot always
2509 # automatically detect that GAS supports it, yet we require it.
2510 gcc_cv_initfini_array=yes
2513 tm_file="${tm_file} elfos.h ${fbsd_tm_file} riscv/freebsd.h"
2514 tmake_file="${tmake_file} riscv/t-riscv"
2518 riscv32be-*|riscv64be-*)
2519 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2522 # Force .init_array support. The configure script cannot always
2523 # automatically detect that GAS supports it, yet we require it.
2524 gcc_cv_initfini_array=yes
2527 loongarch*-*-linux*)
2528 tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file}"
2529 tm_file="${tm_file} loongarch/gnu-user.h loongarch/linux.h loongarch/loongarch-driver.h"
2530 extra_options="${extra_options} linux-android.opt"
2531 tmake_file="${tmake_file} loongarch/t-multilib loongarch/t-linux"
2535 # Force .init_array support. The configure script cannot always
2536 # automatically detect that GAS supports it, yet we require it.
2537 gcc_cv_initfini_array=yes
2541 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2542 tm_file="${tm_file} loongarch/elf.h loongarch/linux.h loongarch/loongarch-driver.h"
2543 tmake_file="${tmake_file} loongarch/t-multilib loongarch/t-linux"
2547 # For .init_array support. The configure script cannot always
2548 # automatically detect that GAS supports it, yet we require it.
2549 gcc_cv_initfini_array=yes
2552 mips*-*-netbsd*) # NetBSD/mips, either endian.
2553 target_cpu_default="MASK_ABICALLS"
2554 tm_file="elfos.h ${tm_file} mips/elf.h ${nbsd_tm_file} mips/netbsd.h"
2555 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2558 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"
2559 extra_options="${extra_options} linux-android.opt"
2560 tmake_file="${tmake_file} mips/t-img-linux"
2561 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2562 with_arch_32="mips32r6"
2563 with_arch_64="mips64r6"
2568 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"
2569 extra_options="${extra_options} linux-android.opt"
2570 tmake_file="${tmake_file} mips/t-mti-linux"
2571 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2572 with_arch_32="mips32r2"
2573 with_arch_64="mips64r2"
2577 mips*-*-linux*) # Linux MIPS, either endian.
2578 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"
2579 extra_options="${extra_options} linux-android.opt"
2582 default_mips_arch=mips32r6
2585 default_mips_arch=mips32r2
2588 default_mips_arch=mips32
2590 mips64el-st-linux-gnu)
2591 default_mips_abi=n32
2592 tm_file="${tm_file} mips/st.h"
2593 tmake_file="${tmake_file} mips/t-st"
2594 enable_mips_multilibs="yes"
2596 mips64octeon*-*-linux*)
2597 default_mips_abi=n32
2598 tm_defines="${tm_defines} MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\""
2599 target_cpu_default=MASK_SOFT_FLOAT_ABI
2600 enable_mips_multilibs="yes"
2602 mipsisa64r6*-*-linux-gnuabi64)
2604 default_mips_arch=mips64r6
2605 enable_mips_multilibs="yes"
2607 mipsisa64r6*-*-linux*)
2608 default_mips_abi=n32
2609 default_mips_arch=mips64r6
2610 enable_mips_multilibs="yes"
2612 mipsisa64r2*-*-linux-gnuabi64)
2614 default_mips_arch=mips64r2
2615 enable_mips_multilibs="yes"
2617 mipsisa64r2*-*-linux*)
2618 default_mips_abi=n32
2619 default_mips_arch=mips64r2
2620 enable_mips_multilibs="yes"
2622 mips64*-*-linux-gnuabi64 | mipsisa64*-*-linux-gnuabi64)
2624 enable_mips_multilibs="yes"
2626 mips64*-*-linux* | mipsisa64*-*-linux*)
2627 default_mips_abi=n32
2628 enable_mips_multilibs="yes"
2631 if test x$enable_targets = xall; then
2632 enable_mips_multilibs="yes"
2634 if test x$enable_mips_multilibs = xyes; then
2635 tmake_file="${tmake_file} mips/t-linux64"
2639 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2640 tmake_file="mips/t-mti-elf"
2641 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2642 with_arch_32="mips32r2"
2643 with_arch_64="mips64r2"
2646 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2647 tmake_file="mips/t-img-elf"
2648 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2649 with_arch_32="mips32r6"
2650 with_arch_64="mips64r6"
2653 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h"
2654 tmake_file="mips/t-sde"
2655 extra_options="${extra_options} mips/sde.opt"
2656 case "${with_newlib}" in
2658 # newlib / libgloss.
2661 # MIPS toolkit libraries.
2662 tm_file="$tm_file mips/sdemtk.h"
2663 tmake_file="$tmake_file mips/t-sdemtk"
2664 case ${enable_threads} in
2666 thread_file='mipssde'
2673 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2676 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2679 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32 MIPS_ABI_DEFAULT=ABI_32"
2682 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6 MIPS_ABI_DEFAULT=ABI_N32"
2685 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2 MIPS_ABI_DEFAULT=ABI_N32"
2688 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_ABI_DEFAULT=ABI_N32"
2692 mipsisa32-*-elf* | mipsisa32el-*-elf* | \
2693 mipsisa32r2-*-elf* | mipsisa32r2el-*-elf* | \
2694 mipsisa32r6-*-elf* | mipsisa32r6el-*-elf* | \
2695 mipsisa64-*-elf* | mipsisa64el-*-elf* | \
2696 mipsisa64r2-*-elf* | mipsisa64r2el-*-elf* | \
2697 mipsisa64r6-*-elf* | mipsisa64r6el-*-elf*)
2698 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2699 tmake_file="mips/t-isa3264"
2702 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6"
2705 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2"
2708 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32"
2711 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6"
2714 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2"
2717 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64"
2721 mipsisa32*-*-elfoabi*)
2722 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_32"
2723 tm_file="${tm_file} mips/elfoabi.h"
2725 mipsisa64*-*-elfoabi*)
2726 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_O64"
2727 tm_file="${tm_file} mips/elfoabi.h"
2730 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2734 mipsisa64sr71k-*-elf*)
2735 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2736 tmake_file=mips/t-sr71k
2737 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sr71000\\\" MIPS_ABI_DEFAULT=ABI_EABI"
2739 mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*)
2740 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2741 tmake_file="mips/t-elf mips/t-sb1"
2742 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sb1\\\" MIPS_ABI_DEFAULT=ABI_O64"
2744 mips-*-elf* | mipsel-*-elf* | mipsr5900-*-elf* | mipsr5900el-*-elf*)
2745 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2746 tmake_file="mips/t-elf"
2748 mips64r5900-*-elf* | mips64r5900el-*-elf*)
2749 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h"
2750 tmake_file="mips/t-elf"
2751 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_N32"
2753 mips64-*-elf* | mips64el-*-elf*)
2754 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2755 tmake_file="mips/t-elf"
2756 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_O64"
2758 mips64vr-*-elf* | mips64vrel-*-elf*)
2759 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/vr.h mips/elf.h"
2760 tmake_file=mips/t-vr
2761 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2763 mips64orion-*-elf* | mips64orionel-*-elf*)
2764 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elforion.h mips/elf.h"
2765 tmake_file="mips/t-elf"
2766 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_O64"
2769 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/rtems.h rtems.h"
2770 tmake_file="${tmake_file} mips/t-elf mips/t-rtems"
2773 tm_file="elfos.h ${tm_file} mips/elf.h vx-common.h vxworks.h mips/vxworks.h"
2774 tmake_file="${tmake_file} mips/t-vxworks"
2776 mipstx39-*-elf* | mipstx39el-*-elf*)
2777 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/r3900.h mips/elf.h"
2778 tmake_file="mips/t-r3900"
2780 mmix-knuth-mmixware)
2781 tm_file="${tm_file} newlib-stdint.h"
2785 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2790 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2791 c_target_objs="msp430-c.o"
2792 cxx_target_objs="msp430-c.o"
2793 tmake_file="${tmake_file} msp430/t-msp430"
2794 extra_objs="${extra_objs} msp430-devices.o"
2795 extra_gcc_objs="driver-msp430.o msp430-devices.o"
2796 # Enable .init_array unless it has been explicitly disabled.
2797 # The MSP430 EABI mandates the use of .init_array, and the Newlib CRT
2798 # code since mid-2019 expects it.
2799 if test x${disable_initfini_array} != xyes; then
2800 gcc_cv_initfini_array=yes
2804 # __cxa_atexit increases code size, and we don't need to support
2805 # dynamic shared objects on MSP430, so regular Newlib atexit is a
2806 # fine replacement as it also supports registration of more than 32
2808 default_use_cxa_atexit=no
2809 # This target does not match the generic *-*-elf case above which
2810 # sets use_gcc_stdint=wrap, so explicitly set it here.
2816 target_cpu_default="0"
2817 tm_defines="${tm_defines}"
2822 target_cpu_default="${target_cpu_default}|MASK_BIG_ENDIAN"
2823 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2828 tm_file="elfos.h newlib-stdint.h ${tm_file} nds32/elf.h nds32/nds32_intrinsic.h"
2829 tmake_file="nds32/t-nds32 nds32/t-elf"
2832 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h nds32/linux.h nds32/nds32_intrinsic.h"
2833 tmake_file="${tmake_file} nds32/t-nds32 nds32/t-linux"
2834 gcc_cv_initfini_array=yes
2838 # Handle --enable-default-relax setting.
2839 if test x${enable_default_relax} = xyes; then
2840 tm_defines="${tm_defines} TARGET_DEFAULT_RELAX=1"
2842 # Handle --with-ext-dsp
2843 if test x${with_ext_dsp} = xyes; then
2844 tm_defines="${tm_defines} TARGET_DEFAULT_EXT_DSP=1"
2848 tm_file="elfos.h ${tm_file}"
2849 tmake_file="${tmake_file} nios2/t-nios2"
2852 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h nios2/linux.h "
2855 tm_file="${tm_file} newlib-stdint.h nios2/elf.h"
2856 extra_options="${extra_options} nios2/elf.opt"
2859 tm_file="${tm_file} newlib-stdint.h nios2/rtems.h rtems.h"
2860 tmake_file="${tmake_file} t-rtems nios2/t-rtems"
2865 tm_file="${tm_file} newlib-stdint.h"
2867 tmake_file="nvptx/t-nvptx"
2868 if test x$enable_as_accelerator = xyes; then
2869 extra_programs="${extra_programs} mkoffload\$(exeext)"
2870 tm_file="${tm_file} nvptx/offload.h"
2874 tm_file="elfos.h ${tm_file}"
2875 tmake_file="${tmake_file} or1k/t-or1k"
2876 # Force .init_array support. The configure script cannot always
2877 # automatically detect that GAS supports it, yet we require it.
2878 gcc_cv_initfini_array=yes
2880 # Handle --with-multilib-list=...
2881 or1k_multilibs="${with_multilib_list}"
2882 if test "$or1k_multilibs" = "default"; then
2883 or1k_multilibs="mcmov,msoft-mul,msoft-div"
2885 or1k_multilibs=`echo $or1k_multilibs | sed -e 's/,/ /g'`
2886 for or1k_multilib in ${or1k_multilibs}; do
2887 case ${or1k_multilib} in
2888 mcmov | msext | msfimm | \
2890 mhard-float | mdouble-float | munordered-float | msoft-float | \
2891 mhard-div | mhard-mul | \
2892 msoft-div | msoft-mul )
2893 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${or1k_multilib}"
2896 echo "--with-multilib-list=${with_multilib_list} not supported."
2900 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2904 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h"
2905 tm_file="${tm_file} or1k/linux.h"
2908 tm_file="${tm_file} newlib-stdint.h or1k/elf.h"
2909 extra_options="${extra_options} or1k/elf.opt"
2912 tm_file="${tm_file} newlib-stdint.h or1k/rtems.h rtems.h"
2913 tmake_file="${tmake_file} or1k/t-rtems"
2918 tm_file="${tm_file} newlib-stdint.h"
2921 # port not yet contributed
2922 #powerpc-*-openbsd*)
2923 # tmake_file="${tmake_file} rs6000/t-fprules"
2927 extra_options="${extra_options} ${cpu_type}/darwin.opt"
2929 *-darwin1[0-9]* | *-darwin9*)
2930 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2931 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2934 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2935 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2938 tm_file="${tm_file} ${cpu_type}/darwin7.h"
2941 # Earlier - ingle arch, with 32b only
2942 # OS X 10.0, the first edition is Darwin4
2945 tmake_file="${tmake_file} t-slibgcc"
2947 powerpc64-*-darwin*)
2948 extra_options="${extra_options} ${cpu_type}/darwin.opt"
2949 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
2950 tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h"
2952 powerpc*-*-freebsd*)
2953 tm_file="${tm_file} elfos.h gnu-user.h ${fbsd_tm_file} rs6000/sysv4.h"
2954 extra_options="${extra_options} rs6000/sysv4.opt"
2955 tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
2958 tm_file="${tm_file} rs6000/sysv4le.h" ;;
2962 tm_file="${tm_file} rs6000/default64.h rs6000/freebsd64.h"
2963 tmake_file="${tmake_file} rs6000/t-freebsd64"
2964 extra_options="${extra_options} rs6000/linux64.opt"
2965 if test $fbsd_major -ge 13; then
2966 tm_defines="${tm_defines} TARGET_FREEBSD32_SECURE_PLT=1"
2970 if test $fbsd_major -ge 13; then
2971 tm_file="rs6000/secureplt.h ${tm_file}"
2973 tm_file="${tm_file} rs6000/freebsd.h"
2978 tm_file="${tm_file} elfos.h gnu-user.h ${nbsd_tm_file} freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h"
2979 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2980 tmake_file="${tmake_file} rs6000/t-netbsd"
2981 extra_options="${extra_options} rs6000/sysv4.opt"
2983 powerpc-*-eabisimaltivec*)
2984 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"
2985 extra_options="${extra_options} rs6000/sysv4.opt"
2986 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
2990 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"
2991 extra_options="${extra_options} rs6000/sysv4.opt"
2992 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
2996 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h"
2997 extra_options="${extra_options} rs6000/sysv4.opt"
2998 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3000 powerpc-*-eabialtivec*)
3001 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabialtivec.h"
3002 extra_options="${extra_options} rs6000/sysv4.opt"
3003 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
3007 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h"
3008 extra_options="${extra_options} rs6000/sysv4.opt"
3009 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3013 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"
3014 extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
3015 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-rtems rs6000/t-ppccomm"
3018 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h rs6000/sysv4.h"
3019 extra_options="${extra_options} rs6000/sysv4.opt"
3020 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm"
3021 extra_objs="$extra_objs rs6000-linux.o"
3024 tm_file="${tm_file} rs6000/sysv4le.h" ;;
3026 case ${target}:${with_cpu} in
3027 powerpc64*: | powerpc64*:native) cpu_is_64bit=yes ;;
3029 maybe_biarch=${cpu_is_64bit}
3030 case ${enable_targets} in
3031 *powerpc64*) maybe_biarch=yes ;;
3032 all) maybe_biarch=yes ;;
3034 case ${target}:${enable_targets}:${maybe_biarch} in
3035 powerpc64-* | powerpc-*:*:yes | *:*powerpc64-*:yes | *:all:yes \
3036 | powerpc64le*:*powerpcle* | powerpc64le*:*powerpc-* \
3037 | powerpcle-*:*powerpc64le*:yes)
3038 if test x$cpu_is_64bit = xyes; then
3039 tm_file="${tm_file} rs6000/default64.h"
3041 tm_file="rs6000/biarch64.h ${tm_file} rs6000/linux64.h glibc-stdint.h"
3042 tmake_file="$tmake_file rs6000/t-linux64"
3045 tmake_file="$tmake_file rs6000/t-linux64le"
3046 case ${enable_targets} in
3047 all | *powerpc64-* | *powerpc-*)
3048 tmake_file="$tmake_file rs6000/t-linux64lebe" ;;
3051 case ${enable_targets} in
3052 all | *powerpc64le-* | *powerpcle-*)
3053 tmake_file="$tmake_file rs6000/t-linux64bele" ;;
3056 extra_options="${extra_options} rs6000/linux64.opt"
3059 tm_file="${tm_file} rs6000/default64.h rs6000/linux64.h glibc-stdint.h"
3060 extra_options="${extra_options} rs6000/linux64.opt"
3061 tmake_file="${tmake_file} rs6000/t-linux"
3064 tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
3065 tmake_file="${tmake_file} rs6000/t-ppcos rs6000/t-linux"
3069 powerpc*-*-linux*ppc476*)
3070 tm_file="${tm_file} rs6000/476.h"
3071 extra_options="${extra_options} rs6000/476.opt" ;;
3072 powerpc*-*-linux*altivec*)
3073 tm_file="${tm_file} rs6000/linuxaltivec.h" ;;
3077 enable_secureplt=yes ;;
3079 if test x${enable_secureplt} = xyes; then
3080 tm_file="rs6000/secureplt.h ${tm_file}"
3083 powerpc*-wrs-vxworks7r*)
3085 # Wind River 7 post SR0600 is mostly like Linux so we setup
3086 # our config in a very similar fashion and adjust to a few
3089 # The system compiler is configured with secureplt by default.
3090 tm_file="${tm_file} rs6000/secureplt.h"
3092 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h"
3093 tm_file="${tm_file} rs6000/sysv4.h rs6000/biarch64.h rs6000/default64.h rs6000/linux64.h"
3094 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3096 extra_options="${extra_options} rs6000/sysv4.opt linux.opt rs6000/linux64.opt"
3098 tmake_file="${tmake_file} t-linux rs6000/t-linux64 rs6000/t-fprules rs6000/t-ppccomm"
3099 tmake_file="${tmake_file} rs6000/t-vxworks"
3101 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
3102 extra_objs="$extra_objs linux.o rs6000-linux.o"
3104 powerpc-wrs-vxworks*)
3105 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h rs6000/sysv4.h"
3106 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm rs6000/t-vxworks"
3107 extra_options="${extra_options} rs6000/sysv4.opt vxworks-smp.opt"
3108 extra_headers="${extra_headers} ppc-asm.h"
3111 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksmils.h"
3112 tmake_file="${tmake_file} rs6000/t-vxworksmils"
3115 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksae.h"
3116 tmake_file="${tmake_file} rs6000/t-vxworksae"
3119 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3125 tm_file="${tm_file} elfos.h gnu-user.h rs6000/sysv4.h rs6000/lynx.h lynx.h"
3126 tmake_file="t-lynx rs6000/t-lynx"
3127 extra_options="${extra_options} rs6000/sysv4.opt lynx.opt"
3133 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h"
3134 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3135 extra_options="${extra_options} rs6000/sysv4.opt"
3137 powerpcle-*-eabisim*)
3138 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"
3139 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3140 extra_options="${extra_options} rs6000/sysv4.opt"
3144 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"
3145 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3146 extra_options="${extra_options} rs6000/sysv4.opt"
3150 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3151 tmake_file="${tmake_file} pru/t-pru"
3152 extra_objs="pru-pragma.o pru-passes.o"
3155 rs6000-ibm-aix7.1.* | powerpc-ibm-aix7.1.*)
3156 tmake_file="rs6000/t-aix52 t-slibgcc"
3157 if test x$cpu_is_64bit = xyes; then
3158 tm_file="${tm_file} rs6000/biarch64.h"
3159 tmake_file="rs6000/t-aix64 t-slibgcc"
3161 tm_file="${tm_file} rs6000/aix.h rs6000/aix71.h rs6000/xcoff.h rs6000/aix-stdint.h"
3162 extra_options="${extra_options} rs6000/aix64.opt"
3166 default_use_cxa_atexit=yes
3168 rs6000-ibm-aix7.2.* | powerpc-ibm-aix7.2.*)
3169 tmake_file="rs6000/t-aix52 t-slibgcc"
3170 if test x$cpu_is_64bit = xyes; then
3171 tm_file="${tm_file} rs6000/biarch64.h"
3172 tmake_file="rs6000/t-aix64 t-slibgcc"
3174 tm_file="${tm_file} rs6000/aix.h rs6000/aix72.h rs6000/xcoff.h rs6000/aix-stdint.h"
3175 extra_options="${extra_options} rs6000/aix64.opt"
3179 default_use_cxa_atexit=yes
3181 rs6000-ibm-aix[789].* | powerpc-ibm-aix[789].*)
3182 tmake_file="rs6000/t-aix52 t-slibgcc"
3183 if test x$cpu_is_64bit = xyes; then
3184 tm_file="${tm_file} rs6000/biarch64.h"
3185 tmake_file="rs6000/t-aix64 t-slibgcc"
3187 tm_file="${tm_file} rs6000/aix.h rs6000/aix73.h rs6000/xcoff.h rs6000/aix-stdint.h"
3188 extra_options="${extra_options} rs6000/aix64.opt"
3192 default_use_cxa_atexit=yes
3195 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3196 target_has_targetm_common=no
3197 c_target_objs="rl78-c.o"
3198 cxx_target_objs="rl78-c.o"
3199 tmake_file="${tmake_file} rl78/t-rl78"
3202 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3203 tmake_file="${tmake_file} rx/t-rx"
3204 extra_options="${extra_options} rx/elf.opt"
3207 tm_file="elfos.h linux.h glibc-stdint.h rx/linux.h ../../libgcc/config/rx/rx-abi.h"
3208 tmake_file="${tmake_file} rx/t-linux"
3211 tm_file="s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3212 c_target_objs="${c_target_objs} s390-c.o"
3213 cxx_target_objs="${cxx_target_objs} s390-c.o"
3214 if test x$enable_targets = xall; then
3215 tmake_file="${tmake_file} s390/t-linux64"
3217 tmake_file="${tmake_file} s390/t-s390"
3220 tm_file="s390/s390x.h s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3221 tm_p_file="linux-protos.h s390/s390-protos.h"
3222 c_target_objs="${c_target_objs} s390-c.o"
3223 cxx_target_objs="${cxx_target_objs} s390-c.o"
3224 md_file=s390/s390.md
3225 extra_modes=s390/s390-modes.def
3226 out_file=s390/s390.cc
3227 tmake_file="${tmake_file} s390/t-linux64 s390/t-s390"
3230 tm_file="s390/s390x.h s390/s390.h elfos.h glibc-stdint.h s390/tpf.h"
3231 tm_p_file=s390/s390-protos.h
3232 c_target_objs="${c_target_objs} s390-c.o"
3233 cxx_target_objs="${cxx_target_objs} s390-c.o"
3234 md_file=s390/s390.md
3235 extra_modes=s390/s390-modes.def
3236 out_file=s390/s390.cc
3238 extra_options="${extra_options} s390/tpf.opt"
3239 tmake_file="${tmake_file} s390/t-s390"
3241 sh-*-elf* | sh[12346l]*-*-elf* | \
3242 sh-*-linux* | sh[2346lbe]*-*-linux* | \
3243 sh-*-netbsdelf* | shl*-*-netbsdelf*)
3244 tmake_file="${tmake_file} sh/t-sh sh/t-elf"
3245 if test x${with_endian} = x; then
3247 sh[1234]*be-*-* | sh[1234]*eb-*-*) with_endian=big ;;
3248 shbe-*-* | sheb-*-*) with_endian=big,little ;;
3249 sh[1234]l* | sh[34]*-*-linux*) with_endian=little ;;
3250 shl* | sh*-*-linux* | \
3251 sh-superh-elf) with_endian=little,big ;;
3252 sh[1234]*-*-*) with_endian=big ;;
3253 *) with_endian=big,little ;;
3256 # TM_ENDIAN_CONFIG is used by t-sh to determine multilibs.
3257 # First word : the default endian.
3258 # Second word: the secondary endian (optional).
3259 case ${with_endian} in
3260 big) TM_ENDIAN_CONFIG=mb ;;
3261 little) TM_ENDIAN_CONFIG=ml ;;
3262 big,little) TM_ENDIAN_CONFIG="mb ml" ;;
3263 little,big) TM_ENDIAN_CONFIG="ml mb" ;;
3264 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
3266 case ${with_endian} in
3267 little*) tm_file="sh/little.h ${tm_file}" ;;
3269 tm_file="${tm_file} elfos.h sh/elf.h"
3271 sh*-*-linux*) tmake_file="${tmake_file} sh/t-linux"
3272 if test x$enable_fdpic = xyes; then
3273 tm_defines="$tm_defines FDPIC_DEFAULT=1"
3275 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h sh/linux.h" ;;
3277 tm_file="${tm_file} ${nbsd_tm_file} sh/netbsd-elf.h"
3278 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3281 sh*-superh-elf) if test x$with_libgloss != xno; then
3283 tm_file="${tm_file} sh/newlib.h"
3285 tm_file="${tm_file} sh/embed-elf.h"
3286 tm_file="${tm_file} sh/superh.h"
3287 extra_options="${extra_options} sh/superh.opt" ;;
3288 *) if test x$with_newlib = xyes \
3289 && test x$with_libgloss = xyes; then
3290 tm_file="${tm_file} sh/newlib.h"
3292 tm_file="${tm_file} sh/embed-elf.h" ;;
3298 tm_file="${tm_file} newlib-stdint.h"
3301 # sed el/eb endian suffixes away to avoid confusion with sh[23]e
3302 case `echo ${target} | sed 's/e[lb]-/-/'` in
3303 sh4a_single_only*) sh_cpu_target=sh4a-single-only ;;
3304 sh4a_single*) sh_cpu_target=sh4a-single ;;
3305 sh4a_nofpu*) sh_cpu_target=sh4a-nofpu ;;
3306 sh4al) sh_cpu_target=sh4al ;;
3307 sh4a*) sh_cpu_target=sh4a ;;
3308 sh4_single_only*) sh_cpu_target=sh4-single-only ;;
3309 sh4_single*) sh_cpu_target=sh4-single ;;
3310 sh4_nofpu*) sh_cpu_target=sh4-nofpu ;;
3311 sh4* | sh-superh-*) sh_cpu_target=sh4 ;;
3312 sh3e*) sh_cpu_target=sh3e ;;
3313 sh*-*-netbsd* | sh3*) sh_cpu_target=sh3 ;;
3314 sh2a_single_only*) sh_cpu_target=sh2a-single-only ;;
3315 sh2a_single*) sh_cpu_target=sh2a-single ;;
3316 sh2a_nofpu*) sh_cpu_target=sh2a-nofpu ;;
3317 sh2a*) sh_cpu_target=sh2a ;;
3318 sh2e*) sh_cpu_target=sh2e ;;
3319 sh2*) sh_cpu_target=sh2 ;;
3320 *) sh_cpu_target=sh1 ;;
3322 # did the user say --without-fp ?
3323 if test x$with_fp = xno; then
3324 case ${sh_cpu_target} in
3326 sh4a* ) sh_cpu_target=sh4a-nofpu ;;
3327 sh4*) sh_cpu_target=sh4-nofpu ;;
3328 sh3*) sh_cpu_target=sh3 ;;
3329 sh2a*) sh_cpu_target=sh2a-nofpu ;;
3330 sh2*) sh_cpu_target=sh2 ;;
3331 *) echo --without-fp not available for $target: ignored
3333 tm_defines="$tm_defines STRICT_NOFPU=1"
3335 sh_cpu_default="`echo $with_cpu|sed s/^m/sh/|tr A-Z_ a-z-`"
3336 case $sh_cpu_default in
3337 sh2a-single-only | sh2a-single | sh2a-nofpu | sh2a | \
3338 sh4a-single-only | sh4a-single | sh4a-nofpu | sh4a | sh4al | \
3339 sh4-single-only | sh4-single | sh4-nofpu | sh4 | sh4-300 | \
3340 sh3e | sh3 | sh2e | sh2 | sh1) ;;
3341 "") sh_cpu_default=${sh_cpu_target} ;;
3342 *) echo "with_cpu=$with_cpu not supported"; exit 1 ;;
3344 sh_multilibs=${with_multilib_list}
3345 if test "$sh_multilibs" = "default" ; then
3347 sh[1234]*) sh_multilibs=${sh_cpu_target} ;;
3348 sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
3349 sh*-*-linux*) sh_multilibs=m1,m2,m2a,m3e,m4 ;;
3350 sh*-*-netbsd*) sh_multilibs=m3,m3e,m4 ;;
3351 *) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single ;;
3353 if test x$with_fp = xno; then
3354 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`"
3357 target_cpu_default=SELECT_`echo ${sh_cpu_default}|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`
3358 tm_defines=${tm_defines}' SH_MULTILIB_CPU_DEFAULT=\"'`echo $sh_cpu_default|sed s/sh/m/`'\"'
3359 tm_defines="$tm_defines SUPPORT_`echo $sh_cpu_default | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3360 sh_multilibs=`echo $sh_multilibs | sed -e 's/,/ /g' -e 's/^[Ss][Hh]/m/' -e 's/ [Ss][Hh]/ m/g' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-`
3361 for sh_multilib in ${sh_multilibs}; do
3362 case ${sh_multilib} in
3363 m1 | m2 | m2e | m3 | m3e | \
3364 m4 | m4-single | m4-single-only | m4-nofpu | m4-300 |\
3365 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al | \
3366 m2a | m2a-single | m2a-single-only | m2a-nofpu)
3367 # TM_MULTILIB_CONFIG is used by t-sh for the non-endian multilib definition
3368 # It is passed to MULTIILIB_OPTIONS verbatim.
3369 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG}/${sh_multilib}"
3370 tm_defines="$tm_defines SUPPORT_`echo $sh_multilib | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3372 \!*) # TM_MULTILIB_EXCEPTIONS_CONFIG is used by t-sh
3373 # It is passed the MULTILIB_EXCEPTIONS verbatim.
3374 TM_MULTILIB_EXCEPTIONS_CONFIG="${TM_MULTILIB_EXCEPTIONS_CONFIG} `echo $sh_multilib | sed 's/^!//'`" ;;
3376 echo "with_multilib_list=${sh_multilib} not supported."
3381 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's:^/::'`
3382 if test x${enable_incomplete_targets} = xyes ; then
3383 tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1"
3385 tm_file="$tm_file ./sysroot-suffix.h"
3386 tmake_file="$tmake_file t-sysroot-suffix"
3389 tmake_file="${tmake_file} sh/t-sh sh/t-rtems"
3390 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h newlib-stdint.h"
3393 tmake_file="$tmake_file sh/t-sh sh/t-vxworks"
3394 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h vx-common.h vxworks.h sh/vxworks.h"
3397 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp-elf.h"
3400 tmake_file="sparc/t-sparc sparc/t-leon"
3403 tmake_file="sparc/t-sparc sparc/t-leon3"
3406 tmake_file="sparc/t-sparc sparc/t-elf"
3411 tm_file="${tm_file} elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
3412 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
3415 tm_file="${tm_file} elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
3416 extra_options="${extra_options} sparc/long-double-switch.opt"
3419 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon"
3422 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon3"
3425 tmake_file="${tmake_file} sparc/t-sparc"
3428 if test x$enable_targets = xall; then
3429 tm_file="sparc/biarch64.h ${tm_file} sparc/linux64.h"
3430 tmake_file="${tmake_file} sparc/t-linux64"
3432 tm_file="${tm_file} sparc/linux.h"
3433 tmake_file="${tmake_file} sparc/t-linux"
3437 tm_file="${tm_file} elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3438 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3439 extra_options="${extra_options} sparc/long-double-switch.opt"
3440 tmake_file="${tmake_file} sparc/t-sparc"
3443 tm_file="sparc/biarch64.h ${tm_file} ${sol2_tm_file} sparc/tso.h"
3445 sparc64-*-* | sparcv9-*-*)
3446 tm_file="sparc/default64.h ${tm_file}"
3449 test x$with_cpu != x || with_cpu=v9
3452 tmake_file="${tmake_file} sparc/t-sparc sparc/t-sol2"
3455 tm_file="${tm_file} elfos.h sparc/sysv4.h vx-common.h vxworks.h sparc/vxworks.h"
3456 tmake_file="${tmake_file} sparc/t-sparc sparc/t-vxworks"
3459 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h"
3460 extra_options="${extra_options}"
3461 tmake_file="${tmake_file} sparc/t-sparc"
3464 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h sparc/rtemself.h rtems.h"
3465 extra_options="${extra_options}"
3466 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
3469 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"
3470 extra_options="${extra_options} sparc/long-double-switch.opt"
3471 tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
3473 sparc64-*-freebsd*|ultrasparc-*-freebsd*)
3474 tm_file="${tm_file} ${fbsd_tm_file} elfos.h sparc/sysv4.h sparc/freebsd.h"
3475 extra_options="${extra_options} sparc/long-double-switch.opt"
3476 case "x$with_cpu" in
3478 x) with_cpu=ultrasparc ;;
3479 *) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
3481 tmake_file="${tmake_file} sparc/t-sparc"
3484 tm_file="sparc/biarch64.h ${tm_file}"
3485 tm_file="${tm_file} elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3486 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3487 extra_options="${extra_options} sparc/long-double-switch.opt"
3488 tmake_file="${tmake_file} sparc/t-sparc sparc/t-netbsd64"
3491 tm_file="sparc/openbsd1-64.h ${tm_file} elfos.h sparc/sysv4.h sparc/sp64-elf.h"
3492 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h sparc/openbsd64.h"
3493 extra_options="${extra_options} openbsd.opt"
3494 extra_options="${extra_options}"
3497 tmake_file="${tmake_file} sparc/t-sparc"
3500 tm_file="elfos.h ${tm_file} c6x/elf-common.h c6x/elf.h"
3501 tm_file="${tm_file} tm-dwarf2.h newlib-stdint.h"
3502 tmake_file="c6x/t-c6x c6x/t-c6x-elf"
3506 tm_file="elfos.h ${tm_file} gnu-user.h linux.h c6x/elf-common.h c6x/uclinux-elf.h"
3507 tm_file="${tm_file} tm-dwarf2.h glibc-stdint.h"
3508 tm_file="${tm_file} ./sysroot-suffix.h"
3509 tmake_file="t-sysroot-suffix t-slibgcc"
3510 tmake_file="${tmake_file} c6x/t-c6x c6x/t-c6x-elf c6x/t-c6x-uclinux"
3514 target_cpu_default="TARGET_CPU_generic"
3515 tm_file="elfos.h v850/v850.h"
3516 tm_file="${tm_file} v850/rtems.h rtems.h newlib-stdint.h"
3517 tmake_file="${tmake_file} v850/t-v850"
3518 tmake_file="${tmake_file} v850/t-rtems"
3520 c_target_objs="v850-c.o"
3521 cxx_target_objs="v850-c.o"
3526 target_cpu_default="TARGET_CPU_v850e3v5"
3529 target_cpu_default="TARGET_CPU_v850e2v3"
3532 target_cpu_default="TARGET_CPU_v850e2"
3534 v850e1-*-* | v850es-*-*)
3535 target_cpu_default="TARGET_CPU_v850e1"
3538 target_cpu_default="TARGET_CPU_v850e"
3541 target_cpu_default="TARGET_CPU_generic"
3544 tm_file="elfos.h newlib-stdint.h v850/v850.h"
3546 c_target_objs="v850-c.o"
3547 cxx_target_objs="v850-c.o"
3551 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h vax/elf.h vax/linux.h"
3552 extra_options="${extra_options} vax/elf.opt"
3555 tm_file="${tm_file} elfos.h ${nbsd_tm_file} vax/elf.h vax/netbsd-elf.h"
3556 extra_options="${extra_options} netbsd.opt netbsd-elf.opt vax/elf.opt"
3557 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
3560 tm_file="elfos.h ${tm_file} visium/elf.h newlib-stdint.h"
3561 tmake_file="visium/t-visium visium/t-crtstuff"
3564 # For historical reasons, the target files omit the 'x'.
3565 tm_file="elfos.h newlib-stdint.h stormy16/stormy16.h"
3566 tm_p_file=stormy16/stormy16-protos.h
3567 md_file=stormy16/stormy16.md
3568 out_file=stormy16/stormy16.cc
3569 extra_options=stormy16/stormy16.opt
3570 tmake_file="stormy16/t-stormy16"
3573 tm_file="${tm_file} elfos.h newlib-stdint.h xtensa/elf.h"
3574 extra_options="${extra_options} xtensa/elf.opt"
3577 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/linux.h"
3578 tmake_file="${tmake_file} xtensa/t-xtensa"
3581 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/uclinux.h"
3582 tmake_file="${tmake_file} xtensa/t-xtensa"
3583 extra_options="${extra_options} xtensa/uclinux.opt"
3586 tm_file="mn10300/mn10300.h elfos.h gnu-user.h linux.h glibc-stdint.h mn10300/linux.h"
3591 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3592 c_target_objs="m32c-pragma.o"
3593 cxx_target_objs="m32c-pragma.o"
3596 echo "*** Configuration ${target} not supported" 1>&2
3602 i[34567]86-*-linux* | x86_64-*-linux*)
3603 tmake_file="${tmake_file} i386/t-pmm_malloc i386/t-i386"
3605 i[34567]86-*-* | x86_64-*-*)
3606 tmake_file="${tmake_file} i386/t-gmm_malloc i386/t-i386"
3608 powerpc*-*-* | rs6000-*-*)
3609 tm_file="${tm_file} ${cpu_type}/option-defaults.h"
3615 tmake_file="${tmake_file} t-musl"
3618 tmake_file="${tmake_file} t-uclibc"
3622 # Assume the existence of indirect function support and allow the use of the
3623 # resolver attribute.
3625 *-*-linux*android*|*-*-linux*uclibc*|*-*-linux*musl*)
3627 *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
3629 *-*-linux* | *-*-gnu*)
3631 aarch64*-* | arm*-* | i[34567]86-* | powerpc*-* | s390*-* | sparc*-* | x86_64-* | loongarch*-*)
3632 default_gnu_indirect_function=yes
3638 if [ "$target_has_targetcm" = "no" ]; then
3639 c_target_objs="$c_target_objs default-c.o"
3640 cxx_target_objs="$cxx_target_objs default-c.o"
3643 if [ "$common_out_file" = "" ]; then
3644 if [ "$target_has_targetm_common" = "yes" ]; then
3645 common_out_file="$cpu_type/$cpu_type-common.cc"
3647 common_out_file="default-common.cc"
3651 if [ "$target_has_targetdm" = "no" ]; then
3652 d_target_objs="$d_target_objs default-d.o"
3655 if [ "$target_has_targetrustm" = "no" ]; then
3656 rust_target_objs="$rust_target_objs default-rust.o"
3659 # Support for --with-cpu and related options (and a few unrelated options,
3663 echo "--with-cpu must be passed a value" 1>&2
3668 # Set arch and cpu from ${target} and ${target_noncanonical}. Set cpu
3669 # to generic if there is no processor scheduler model for the target.
3672 arch_without_sse2=no
3673 arch_without_64bit=no
3676 if test $fbsd_major -ge 6; then
3682 arch_without_sse2=yes
3683 arch_without_64bit=yes
3688 arch_without_sse2=yes
3689 arch_without_64bit=yes
3694 arch_without_sse2=yes
3695 arch_without_64bit=yes
3700 arch_without_sse2=yes
3701 arch_without_64bit=yes
3704 arch_without_sse2=yes
3705 arch_without_64bit=yes
3706 case ${target_noncanonical} in
3719 pentium_mmx-*|winchip_c6-*|winchip2-*|c3-*)
3729 i686-*-* | i786-*-*)
3730 case ${target_noncanonical} in
3771 amdfam10-*|barcelona-*)
3775 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3779 k8-*|opteron-*|athlon64-*|athlon_fx-*)
3783 athlon_xp-*|athlon_mp-*|athlon_4-*)
3786 arch_without_sse2=yes
3787 arch_without_64bit=yes
3789 athlon_tbird-*|athlon-*)
3792 arch_without_sse2=yes
3797 arch_without_sse2=yes
3806 arch_without_sse2=yes
3808 pentium3-*|pentium3m-*)
3811 arch_without_sse2=yes
3813 pentium4-*|pentium4m-*)
3852 arch_without_sse2=yes
3857 arch_without_sse2=yes
3858 arch_without_64bit=yes
3863 case ${target_noncanonical} in
3904 amdfam10-*|barcelona-*)
3908 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3912 k8-*|opteron-*|athlon_64-*)
3948 # If there is no $with_cpu option, try to infer one from ${target}.
3949 # This block sets nothing except for with_cpu.
3950 if test x$with_cpu = x ; then
3952 i[34567]86-*-elfiamcu)
3955 i[34567]86-*-*|x86_64-*-*)
3973 frv-*-*linux* | frv400-*-*linux*)
3980 case "$with_arch" in
3982 with_cpu=${default_cf_cpu}
3985 with_cpu=m${default_m68k_cpu}
4001 with_cpu="`echo ${target} | sed 's/-.*$//'`"
4010 # Avoid overriding --with-cpu-32 and --with-cpu-64 values.
4012 i[34567]86-*-*|x86_64-*-*)
4013 if test x$with_cpu_32 != x || test x$with_cpu_64 != x; then
4014 if test x$with_cpu_32 = x; then
4015 with_cpu_32=$with_cpu
4017 if test x$with_cpu_64 = x; then
4018 with_cpu_64=$with_cpu
4026 # Support for --with-arch and related options (and a few unrelated options,
4028 case ${with_arch} in
4030 echo "--with-arch must be passed a value" 1>&2
4035 # If there is no $with_arch option, try to infer one from ${target}.
4036 # This block sets nothing except for with_arch.
4037 if test x$with_arch = x ; then
4039 i[34567]86-*-darwin*|x86_64-*-darwin*)
4040 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
4041 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
4043 i[34567]86-*-elfiamcu)
4047 # --with-fpmath sets the default ISA to SSE2, which is the same
4048 # ISA supported by Pentium 4.
4049 if test x$with_fpmath = x || test $arch_without_sse2 = no; then
4058 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4069 # Avoid overriding --with-arch-32 and --with-arch-64 values.
4071 i[34567]86-*-darwin*|x86_64-*-darwin*)
4072 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
4073 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
4075 i[34567]86-*-*|x86_64-*-*)
4076 if test x$with_arch_32 != x || test x$with_arch_64 != x; then
4077 if test x$with_arch_32 = x; then
4078 with_arch_32=$with_arch
4080 if test x$with_arch_64 = x; then
4081 if test $arch_without_64bit = yes; then
4082 # Set the default 64bit arch to x86-64 if the default arch
4083 # doesn't support 64bit.
4086 with_arch_64=$with_arch
4090 elif test $arch_without_64bit$need_64bit_isa = yesyes; then
4091 # Set the default 64bit arch to x86-64 if the default arch
4092 # doesn't support 64bit and we need 64bit ISA.
4093 with_arch_32=$with_arch
4101 # Infer a default setting for --with-float.
4102 if test x$with_float = x; then
4104 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4105 # The R5900 doesn't support 64-bit float. 32-bit float doesn't
4106 # comply with IEEE 754.
4112 # Infer a default setting for --with-fpu.
4113 if test x$with_fpu = x; then
4115 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4116 # The R5900 FPU only supports single precision.
4122 # Support --with-fpmath.
4123 if test x$with_fpmath != x; then
4125 i[34567]86-*-* | x86_64-*-*)
4126 case ${with_fpmath} in
4128 tm_file="${tm_file} i386/avxmath.h"
4131 tm_file="${tm_file} i386/ssemath.h"
4134 echo "Invalid --with-fpmath=$with_fpmath" 1>&2
4140 echo "--with-fpmath isn't supported for $target." 1>&2
4146 # Similarly for --with-schedule.
4147 if test x$with_schedule = x; then
4150 # Override default PA8000 scheduling model.
4151 with_schedule=7100LC
4156 # Infer a default setting for --with-llsc.
4157 if test x$with_llsc = x; then
4160 # The kernel emulates LL and SC where necessary.
4163 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4164 # The R5900 doesn't support LL(D) and SC(D).
4170 # Validate and mark as valid any --with options supported
4171 # by this target. In order to use a particular --with option
4172 # you must list it in supported_defaults; validating the value
4173 # is optional. This case statement should set nothing besides
4174 # supported_defaults.
4179 supported_defaults="abi cpu cpu_64 arch arch_64 tune tune_64"
4180 if test x$with_cpu_64 != x && test x$with_cpu = x; then
4181 with_cpu=$with_cpu_64
4183 if test x$with_arch_64 != x && test x$with_arch = x; then
4184 with_arch=$with_arch_64
4186 if test x$with_tune_64 != x && test x$with_tune = x; then
4187 with_tune=$with_tune_64
4189 for which in cpu arch tune; do
4190 eval "val=\$with_$which"
4191 base_val=`echo $val | sed -e 's/\+.*//'`
4192 ext_val=`echo $val | sed -e 's/[a-z0-9.-]\+//'`
4194 if [ $which = arch ]; then
4195 def=aarch64-arches.def
4196 pattern=AARCH64_ARCH
4198 def=aarch64-cores.def
4199 pattern=AARCH64_CORE
4202 # Find the base CPU or ARCH id in aarch64-cores.def or
4203 # aarch64-arches.def
4204 if [ x"$base_val" = x ] \
4205 || grep "^$pattern(\"$base_val\"," \
4206 ${srcdir}/config/aarch64/$def \
4209 # Disallow extensions in --with-tune=cortex-a53+crc.
4210 if [ $which = tune ] && [ x"$ext_val" != x ]; then
4211 echo "Architecture extensions not supported in --with-$which=$val" 1>&2
4215 # Use the pre-processor to strip flatten the options.
4216 # This makes the format less rigid than if we use
4217 # grep and sed directly here.
4218 opt_macro="AARCH64_OPT_EXTENSION(A, B, C, D, E, F)=A, B, C, D, E, F"
4219 options_parsed="`$ac_cv_prog_CPP -D"$opt_macro" -x c \
4220 ${srcdir}/config/aarch64/aarch64-option-extensions.def`"
4222 while [ x"$ext_val" != x ]
4224 ext_val=`echo $ext_val | sed -e 's/\+//'`
4225 ext=`echo $ext_val | sed -e 's/\+.*//'`
4226 base_ext=`echo $ext | sed -e 's/^no//'`
4227 opt_line=`echo -e "$options_parsed" | \
4228 grep "^\"$base_ext\""`
4230 if [ x"$base_ext" = x ] \
4231 || [ x"$opt_line" != x ]; then
4234 echo "Unknown extension used in --with-$which=$val" 1>&2
4237 ext_val=`echo $ext_val | sed -e 's/[a-z0-9]\+//'`
4242 # Allow --with-$which=native.
4243 if [ "$val" = native ]; then
4246 echo "Unknown $which used in --with-$which=$val" 1>&2
4254 supported_defaults="cpu tune"
4255 for which in cpu tune; do
4256 eval "val=\$with_$which"
4259 | ev4 | ev45 | 21064 | ev5 | 21164 | ev56 | 21164a \
4260 | pca56 | 21164PC | 21164pc | ev6 | 21264 | ev67 \
4264 echo "Unknown CPU used in --with-$which=$val" 1>&2
4272 supported_defaults="cpu fpu"
4275 if [ x"$with_cpu" = x ] \
4276 || grep -q -E "^ARC_CPU[[:blank:]]*\($with_cpu," \
4277 ${srcdir}/config/arc/arc-cpus.def
4282 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4286 # see if --with-fpu matches any of the supported FPUs
4291 fpus | fpus_div | fpus_fma | fpus_all)
4295 fpuda | fpuda_div | fpuda_fma | fpuda_all)
4299 fpud | fpud_div | fpud_fma | fpud_all)
4304 echo "Unknown floating point type used in "\
4305 "--with-fpu=$with_fpu" 1>&2
4310 if [ -n "$flags_ok" ] \
4311 && ! grep -q -E "^ARC_CPU[[:blank:]]*\($new_cpu,[[:blank:]]*$flags_ok," \
4312 ${srcdir}/config/arc/arc-cpus.def
4314 echo "Unknown floating point type used in "\
4315 "--with-fpu=$with_fpu for cpu $new_cpu" 1>&2
4321 # Handle --with-multilib-list.
4322 if test "x${with_multilib_list}" != xdefault; then
4323 TM_MULTILIB_CONFIG="${with_multilib_list}"
4328 supported_defaults="cpu endian float"
4332 supported_defaults="arch cpu float tune fpu abi mode tls"
4333 for which in cpu tune arch; do
4334 # See if it matches a supported value
4335 eval "val=\$with_$which"
4336 if [ x"$val" != x ]; then
4337 cpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4338 -v cmd="chk$which $val" \
4339 ${srcdir}/config/arm/arm-cpus.in`
4340 if [ "$cpu" = "error" ]; then
4341 echo "Unknown target in --with-$which=$val" 1>&2
4345 eval "target_${which}_cname=$new_val"
4346 echo "For $val real value is $new_val"
4351 case "$with_float" in
4353 | soft | hard | softfp)
4357 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4362 # see if --with-fpu matches any of the supported FPUs
4363 if [ x"$with_fpu" != x ] ; then
4365 fpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4366 -v cmd="chkfpu $val" \
4367 ${srcdir}/config/arm/arm-cpus.in`
4368 if [ "$fpu" = "error" ]
4370 echo "Unknown target in --with-fpu=$val" 1>&2
4377 | apcs-gnu | atpcs | aapcs | iwmmxt | aapcs-linux )
4381 echo "Unknown ABI used in --with-abi=$with_abi"
4386 case "$with_mode" in
4392 echo "Unknown mode used in --with-mode=$with_mode"
4403 echo "Unknown TLS method used in --with-tls=$with_tls" 1>&2
4408 if test "x$with_arch" != x && test "x$with_cpu" != x; then
4409 echo "Switch \"--with-arch\" may not be used with switch \"--with-cpu\"" 1>&2
4413 if test "x$with_cpu" != x && test "x$with_tune" != x; then
4414 echo "Switch \"--with-tune\" may not be used with switch \"--with-cpu\"" 1>&2
4418 # Add extra multilibs
4419 if test "x$with_multilib_list" != x; then
4421 arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
4422 if test "x${arm_multilibs}" != xdefault ; then
4423 for arm_multilib in ${arm_multilibs}; do
4424 case ${arm_multilib} in
4426 tmake_profile_file="arm/t-multilib"
4427 tm_mlib_file="arm/arm-mlib.h"
4430 ml=`echo "X$arm_multilib" | sed '1s,^X@,,'`
4431 if test -f "${srcdir}/config/arm/${ml}"; then
4432 tmake_file="${tmake_file} arm/${ml}"
4434 echo "Error: ${ml} does not exist in ${srcdir}/config/arm" >&2
4439 echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2
4446 if test "x${tmake_profile_file}" != x ; then
4447 # arm/t-aprofile and arm/t-rmprofile are only
4448 # designed to work without any with-cpu,
4449 # with-arch, with-mode, with-fpu or with-float
4451 if test "x$with_arch" != x \
4452 || test "x$with_cpu" != x \
4453 || test "x$with_float" != x \
4454 || test "x$with_fpu" != x \
4455 || test "x$with_mode" != x ; then
4456 echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=${with_multilib_list}" 1>&2
4458 elif test "x$ml" != x ; then
4459 echo "Error: You cannot use builtin multilib profiles along with custom ones" 1>&2
4462 # But pass the default value for float-abi
4463 # through to the multilib selector
4465 tmake_file="${tmake_file} ${tmake_profile_file}"
4466 tm_file="$tm_file $tm_mlib_file"
4467 TM_MULTILIB_CONFIG="$with_multilib_list"
4470 target_cpu_cname=${target_cpu_cname:-arm7tdmi}
4471 with_cpu=${with_cpu:-$target_cpu_cname}
4475 supported_defaults=cpu
4480 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4486 fido-*-* | m68k*-*-*)
4487 supported_defaults="arch cpu"
4488 case "$with_arch" in
4490 m68k_arch_family="$with_arch"
4493 echo "Invalid --with-arch=$with_arch" 1>&2
4498 # We always have a $with_cpu setting here.
4500 "m68000" | "m68010" | "m68020" | "m68030" | "m68040" | "m68060")
4501 m68k_cpu_ident=$with_cpu
4504 m68k_cpu_ident=m68020
4505 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_40"
4508 m68k_cpu_ident=m68020
4509 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_60"
4512 # We need the C identifier rather than the string.
4513 m68k_cpu_ident=`awk -v arg="\"$with_cpu\"" \
4514 'BEGIN { FS="[ \t]*[,()][ \t]*" }; \
4515 $1 == "M68K_DEVICE" && $2 == arg { print $3 }' \
4516 ${srcdir}/config/m68k/m68k-devices.def`
4517 if [ x"$m68k_cpu_ident" = x ] ; then
4518 echo "Unknown CPU used in --with-cpu=$with_cpu" 1>&2
4521 with_cpu="mcpu=$with_cpu"
4527 supported_defaults="arch tune"
4529 for which in arch tune; do
4530 eval "val=\$with_$which"
4532 "" | fiji | gfx900 | gfx906 | gfx908 | gfx90a)
4536 echo "Unknown cpu used in --with-$which=$val." 1>&2
4541 [ "x$with_arch" = x ] && with_arch=fiji
4545 supported_defaults="arch schedule"
4547 case "$with_arch" in
4548 "" | 1.0 | 1.1 | 2.0)
4552 echo "Unknown architecture used in --with-arch=$with_arch" 1>&2
4557 case "$with_schedule" in
4558 "" | 700 | 7100 | 7100LC | 7200 | 7300 | 8000)
4562 echo "Unknown processor used in --with-schedule=$with_schedule." 1>&2
4568 i[34567]86-*-* | x86_64-*-*)
4569 supported_defaults="abi arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64"
4570 for which in arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64; do
4571 eval "val=\$with_$which"
4572 case " $x86_archs " in
4580 echo "CPU given in --with-$which=$val doesn't support 64bit mode." 1>&2
4589 if test x${val} != x; then
4590 case " $x86_64_archs " in
4592 # Disallow x86-64-v* for --with-cpu=/--with-tune=
4593 case "x$which$val" in
4594 xcpu*x86-64-v*|xtune*x86-64-v*)
4595 echo "Unknown CPU given in --with-$which=$val." 1>&2
4604 # Allow $x86_cpus --with-cpu=/--with-tune=
4607 case " $x86_cpus " in
4612 echo "Unknown CPU given in --with-$which=$val." 1>&2
4618 echo "Unknown CPU given in --with-$which=$val." 1>&2
4631 supported_defaults="abi arch tune riscv_attribute isa_spec"
4634 riscv-* | riscv32*) xlen=32 ;;
4635 riscv64*) xlen=64 ;;
4636 *) echo "Unsupported RISC-V target ${target}" 1>&2; exit 1 ;;
4639 case "${with_isa_spec}" in
4640 ""|default|20191213|201912)
4641 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20191213"
4642 with_isa_spec=20191213
4645 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_2P2"
4648 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20190608"
4649 with_isa_spec=20190608
4652 echo "--with-isa-spec only accept 2.2, 20191213, 201912, 20190608 or 201906" 1>&2
4656 case "${with_riscv_attribute}" in
4658 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4661 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=0"
4664 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4667 echo "--with-riscv-attribute=${with_riscv_attribute} is not supported. The argument must begin with yes, no or default." 1>&2
4673 # Infer arch from --with-arch, --target, and --with-abi.
4674 case "${with_arch}" in
4675 rv32e* | rv32i* | rv32g* | rv64i* | rv64g*)
4679 # Infer XLEN, but otherwise assume GC.
4680 case "${with_abi}" in
4681 ilp32e) with_arch="rv32e" ;;
4682 ilp32 | ilp32f | ilp32d) with_arch="rv32gc" ;;
4683 lp64 | lp64f | lp64d) with_arch="rv64gc" ;;
4684 *) with_arch="rv${xlen}gc" ;;
4688 echo "--with-arch=${with_arch} is not supported. The argument must begin with rv32e, rv32i, rv32g, rv64i, or rv64g." 1>&2
4692 PYTHON=`which python || which python3 || which python2`
4693 if test "x${PYTHON}" != x; then
4694 with_arch=`${PYTHON} ${srcdir}/config/riscv/arch-canonicalize -misa-spec=${with_isa_spec} ${with_arch}`
4696 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ARCH=${with_arch}"
4698 # Make sure --with-abi is valid. If it was not specified,
4699 # pick a default based on the ISA, preferring soft-float
4700 # unless the D extension is present.
4701 case "${with_abi}" in
4702 ilp32 | ilp32e | ilp32f | ilp32d | lp64 | lp64f | lp64d)
4705 case "${with_arch}" in
4706 rv32*d* | rv32g*) with_abi=ilp32d ;;
4707 rv32e*) with_abi=ilp32e ;;
4708 rv32*) with_abi=ilp32 ;;
4709 rv64*d* | rv64g*) with_abi=lp64d ;;
4710 rv64*) with_abi=lp64 ;;
4714 echo "--with-abi=${with_abi} is not supported" 1>&2
4718 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ABI=${with_abi}"
4720 # Make sure ABI and ISA are compatible.
4721 case "${with_abi},${with_arch}" in
4722 ilp32,rv32* | ilp32e,rv32e* \
4723 | ilp32f,rv32*f* | ilp32f,rv32g* \
4724 | ilp32d,rv32*d* | ilp32d,rv32g* \
4726 | lp64f,rv64*f* | lp64f,rv64g* \
4727 | lp64d,rv64*d* | lp64d,rv64g*)
4730 echo "--with-abi=${with_abi} is not supported for ISA ${with_arch}" 1>&2
4734 # Handle --with-multilib-generator.
4735 if test "x${with_multilib_generator}" != xdefault; then
4736 if test "x${with_multilib_list}" != xdefault; then
4737 echo "--with-multilib-list= can't used with --with-multilib-generator= at same time" 1>&2
4742 if ${srcdir}/config/riscv/multilib-generator \
4743 -misa-spec=${with_isa_spec} \
4744 `echo ${with_multilib_generator} | sed 's/;/ /g'`\
4745 > t-multilib-config;
4747 tmake_file="${tmake_file} riscv/t-withmultilib-generator"
4749 echo "invalid option for --with-multilib-generator" 1>&2
4754 echo "--with-multilib-generator= is not supported for ${target}, only supported for riscv*-*-elf*" 1>&2
4760 # Handle --with-multilib-list.
4761 if test "x${with_multilib_list}" != xdefault; then
4762 tmake_file="${tmake_file} riscv/t-withmultilib"
4764 case ${with_multilib_list} in
4765 ilp32 | ilp32f | ilp32d \
4766 | lp64 | lp64f | lp64d )
4767 TM_MULTILIB_CONFIG="${with_arch},${with_multilib_list}"
4770 echo "--with-multilib-list=${with_multilib_list} not supported."
4777 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"
4779 case ${with_float} in
4784 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4790 "" | single | double)
4794 echo "Unknown fpu type used in --with-fpu=$with_fpu" 1>&2
4804 echo "Unknown NaN encoding used in --with-nan=$with_nan" 1>&2
4809 case ${with_fp_32} in
4814 echo "Unknown FP mode used in --with-fp-32=$with_fp_32" 1>&2
4819 case ${with_odd_spreg_32} in
4821 with_odd_spreg_32="odd-spreg"
4824 with_odd_spreg_32="no-odd-spreg"
4830 echo "Unknown odd-spreg-32 type used in --with-odd-spreg-32=$with_odd_spreg_32" 1>&2
4836 "" | 32 | o64 | n32 | 64 | eabi)
4840 echo "Unknown ABI used in --with-abi=$with_abi" 1>&2
4845 case ${with_divide} in
4846 "" | breaks | traps)
4850 echo "Unknown division check type use in --with-divide=$with_divide" 1>&2
4855 case ${with_llsc} in
4866 echo "Unknown llsc type used in --with-llsc" 1>&2
4871 case ${with_mips_plt} in
4876 with_mips_plt=no-plt
4881 echo "Unknown --with-mips-plt argument: $with_mips_plt" 1>&2
4886 case ${with_synci} in
4896 echo "Unknown synci type used in --with-synci" 1>&2
4901 case ${with_lxc1_sxc1} in
4903 with_lxc1_sxc1=lxc1-sxc1
4906 with_lxc1_sxc1=no-lxc1-sxc1
4911 echo "Unknown lxc1-sxc1 type used in --with-lxc1-sxc1" 1>&2
4916 case ${with_madd4} in
4926 echo "Unknown madd4 type used in --with-madd4" 1>&2
4931 case ${with_compact_branches} in
4932 "" | never | always | optimal)
4935 echo "Unknown compact-branches policy used in --with-compact-branches" 1>&2
4950 echo "Unknown msa type used in --with-msa" 1>&2
4957 supported_defaults="abi arch tune fpu simd multilib-default strict-align-lib"
4962 arch_pattern arch_default \
4963 fpu_pattern fpu_default \
4964 triplet_os triplet_abi \
4967 # --with-abi is now obsolete, emit a warning if given.
4971 echo "warning: --with-abi= is now obsolete," \
4972 "the default ABI is derived from your target" \
4973 "triplet ${target}" 1>&2
4977 # Infer ABI from the triplet.
4979 loongarch64-*f64) abi_base="lp64d"; abi_ext="base" ;;
4980 loongarch64-*f32) abi_base="lp64f"; abi_ext="base" ;;
4981 loongarch64-*sf) abi_base="lp64s"; abi_ext="base" ;;
4982 loongarch64-*) abi_base="lp64d"; abi_ext="base" ;;
4984 echo "Unsupported target ${target}." 1>&2
4989 # Get the canonical triplet (multiarch specifier).
4990 case ${abi_base},${abi_ext} in
4991 lp64d,base) triplet_abi="";;
4992 lp64f,base) triplet_abi="f32";;
4993 lp64s,base) triplet_abi="sf";;
4997 *-linux-gnu*) triplet_os="linux-gnu";;
4998 *-linux-musl*) triplet_os="linux-musl";;
4999 *-elf*) triplet_os="elf";;
5001 echo "Unsupported target ${target}." 1>&2
5005 la_canonical_triplet="loongarch64-${triplet_os}${triplet_abi}"
5008 # Perform initial sanity checks on --with-* options.
5009 case ${with_arch} in
5010 "" | abi-default | loongarch64 | la464) ;; # OK, append here.
5012 if test x${host} != x${target}; then
5013 echo "--with-arch=native is illegal for cross-compiler." 1>&2
5018 echo "Unknown arch in --with-arch=$with_arch" 1>&2
5025 "" | none | 32 | 64) ;; # OK, append here.
5027 # Convert "0" to "none" for upcoming checks.
5031 echo "Unknown fpu type in --with-fpu=$with_fpu" 1>&2
5036 case ${with_simd} in
5038 lsx | lasx) # OK, append here.
5043 echo "--with-simd=${with_simd} conflicts with --with-fpu=${with_fpu}" 1>&2
5050 echo "Unknown SIMD extension in --with-simd=$with_simd" 1>&2
5055 # Infer ISA-related default options from the ABI: pass 1
5056 case ${abi_base}/${abi_ext} in
5058 # architectures that support lp64* ABI
5059 arch_pattern="native|abi-default|loongarch64|la464"
5060 # default architecture for lp64* ABI
5061 arch_default="abi-default"
5064 echo "Unsupported ABI type ${abi_base}/${abi_ext}." 1>&2
5069 # Infer ISA-related default options from the ABI: pass 2
5070 case ${abi_base}/${abi_ext} in
5079 fpu_pattern="none|32|64"
5083 echo "Unsupported ABI type ${abi_base}/${abi_ext}." 1>&2
5088 ## Set default value for with_arch.
5089 case ${with_arch} in
5091 if test x${arch_default} != x; then
5092 with_arch=${arch_default}
5094 with_arch=${arch_pattern}
5099 if echo "${with_arch}" | grep -E "^${arch_pattern}$" > /dev/null; then
5102 echo "${abi_base}/${abi_ext} ABI cannot be implemented with" \
5103 "--with-arch=${with_arch}." 1>&2
5109 ## Set default value for with_fpu.
5112 if test x${fpu_default} != x; then
5113 with_fpu=${fpu_default}
5115 with_fpu=${fpu_pattern}
5120 if echo "${with_fpu}" | grep -E "^${fpu_pattern}$" > /dev/null; then
5123 echo "${abi_base}/${abi_ext} ABI cannot be implemented with" \
5124 "--with-fpu=${with_fpu}." 1>&2
5131 # Check default with_tune configuration using with_arch.
5132 case ${with_arch} in
5134 tune_pattern="native|abi-default|loongarch64|la464"
5137 # By default, $with_tune == $with_arch
5142 case ${with_tune} in
5145 if echo "${with_tune}" | grep -E "^${tune_pattern}$" > /dev/null; then
5148 echo "Incompatible options: --with-tune=${with_tune}" \
5149 "and --with-arch=${with_arch}." 1>&2
5155 # Build libraries with -mstrict-align if --with-strict-align-lib is given.
5156 case ${with_strict_align_lib} in
5157 yes) strict_align_opt="/mstrict-align" ;;
5160 echo "Unknown option: --with-strict-align-lib=${with_strict_align_lib}" 1>&2
5166 # Handle --with-multilib-default
5167 if echo "${with_multilib_default}" \
5168 | grep -E -e '[[:space:]]' -e '//' -e '/$' -e '^/' > /dev/null 2>&1; then
5169 echo "Invalid argument to --with-multilib-default." 1>&2
5173 if test x${with_multilib_default} = x; then
5174 # Use -march=abi-default by default when building libraries.
5175 with_multilib_default="/march=abi-default"
5177 unset parse_state component
5179 for component in $(echo "${with_multilib_default}" | tr '/' ' '); do
5180 case ${parse_state},${component} in
5181 arch,|arch,abi-default)
5182 # ABI-default: use the ABI's default ARCH configuration for
5183 # multilib library builds, unless otherwise specified
5184 # in --with-multilib-list.
5185 with_multilib_default="/march=abi-default" ;;
5187 # Fixed: use the default gcc configuration for all multilib
5188 # builds by default.
5189 with_multilib_default="" ;;
5190 arch,native|arch,loongarch64|arch,la464) # OK, append here.
5191 with_multilib_default="/march=${component}" ;;
5193 with_multilib_default="/march=abi-default"
5194 with_multilib_default="${with_multilib_default}/${component}" ;;
5196 with_multilib_default="${with_multilib_default}/${component}" ;;
5199 if test x${parse_state} = xarch; then
5203 unset parse_state component
5206 # Handle --with-multilib-list.
5207 if test x"${with_multilib_list}" = x \
5208 || test x"${with_multilib_list}" = xno \
5209 || test x"${with_multilib_list}" = xdefault \
5210 || test x"${enable_multilib}" != xyes; then
5212 with_multilib_list="${abi_base}/${abi_ext}"
5215 # Check if the configured default ABI combination is included in
5216 # ${with_multilib_list}.
5217 loongarch_multilib_list_sane=no
5219 # This one goes to TM_MULTILIB_CONFIG, for use in t-linux.
5220 loongarch_multilib_list_make="${abi_base},"
5222 # This one goes to tm_defines, for use in loongarch-driver.c.
5223 loongarch_multilib_list_c=""
5225 # ${with_multilib_list} should not contain whitespaces,
5226 # consecutive commas or slashes.
5227 if echo "${with_multilib_list}" \
5228 | grep -E -e "[[:space:]]" -e '[,/][,/]' -e '[,/]$' -e '^[,/]' > /dev/null 2>&1; then
5229 echo "Invalid argument to --with-multilib-list." 1>&2
5233 unset component elem_abi_base elem_abi_ext elem_tmp parse_state all_abis
5234 for elem in $(echo "${with_multilib_list}" | tr ',' ' '); do
5235 unset elem_abi_base elem_abi_ext
5236 parse_state="abi-base"
5238 for component in $(echo "${elem}" | tr '/' ' '); do
5239 if test x${parse_state} = x"abi-base"; then
5241 case ${component} in
5242 lp64d | lp64f | lp64s) elem_tmp="ABI_BASE_$(echo ${component} | tr a-z A-Z),";;
5244 echo "Unknown base ABI \"${component}\" in --with-multilib-list." 1>&2
5248 loongarch_multilib_list_c="${loongarch_multilib_list_c}${elem_tmp}"
5249 loongarch_multilib_list_make="${loongarch_multilib_list_make}mabi=${component}"
5250 elem_abi_base="${component}"
5252 parse_state="abi-ext"
5256 if test x${parse_state} = x"abi-ext"; then
5257 # ABI extension type
5258 case ${component} in
5261 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5262 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5268 # The default ABI extension is "base" if unspecified.
5270 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5271 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5275 if test x${parse_state} = x"arch"; then
5277 case ${component} in
5278 native | abi-default | loongarch64 | la464) # OK, append here.
5279 # Append -march spec for each multilib variant.
5280 loongarch_multilib_list_make="${loongarch_multilib_list_make}/march=${component}"
5286 # "/default" is equivalent to --with-multilib-default=fixed
5292 # If ARCH is unspecified for this multilib variant, use ${with_multllib_default}.
5293 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5297 if test x${parse_state} = x"opts"; then
5298 # Other compiler options for building libraries.
5299 # (no static sanity check performed)
5300 case ${component} in
5302 # Append other components as additional build options
5303 # (without the prepending dash).
5304 # Their validity should be examined by the compiler.
5305 loongarch_multilib_list_make="${loongarch_multilib_list_make}/${component}"
5311 case ${parse_state} in
5314 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5315 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5316 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5319 # If ARCH is unspecified for this multilib variant, use ${with_multllib_default}.
5320 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5327 # Use mstrict-align for building libraries if --with-strict-align-lib is given.
5328 loongarch_multilib_list_make="${loongarch_multilib_list_make}${strict_align_opt}"
5330 # Check for repeated configuration of the same multilib variant.
5331 if echo "${elem_abi_base}/${elem_abi_ext}" \
5332 | grep -E "^(${all_abis%|})$" >/dev/null 2>&1; then
5333 echo "Repeated multilib config of \"${elem_abi_base}/${elem_abi_ext}\" in --with-multilib-list."
5336 all_abis="${all_abis}${elem_abi_base}/${elem_abi_ext}|"
5339 # Check if the default ABI configuration of the GCC binary
5340 # is included in the enabled multilib variants.
5341 if test x${elem_abi_base} = x${abi_base} \
5342 && test x${elem_abi_ext} = x${abi_ext}; then
5343 loongarch_multilib_list_sane=yes
5345 loongarch_multilib_list_make="${loongarch_multilib_list_make},"
5347 unset component elem_abi_base elem_abi_ext elem_tmp parse_state all_abis
5350 # Check if the default ABI combination is in the default list.
5351 if test x${loongarch_multilib_list_sane} = xno; then
5352 if test x${abi_ext} = xbase; then
5355 abi_ext="/${abi_ext}"
5358 echo "Default ABI combination (${abi_base}${abi_ext})" \
5359 "not found in --with-multilib-list." 1>&2
5363 # Remove the excessive appending comma.
5364 loongarch_multilib_list_c=${loongarch_multilib_list_c%,}
5365 loongarch_multilib_list_make=${loongarch_multilib_list_make%,}
5369 supported_defaults="arch cpu nds32_lib float fpu_config"
5371 # process --with-arch
5372 case "${with_arch}" in
5374 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5378 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5381 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=1"
5384 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=2"
5388 echo "Cannot accept --with-arch=$with_arch, available values are: v2 v2j v3 v3m v3f v3s" 1>&2
5393 case "${with_cpu}" in
5397 n6 | n7 |n8 | e8 | s8 | n9 | n10 | d10 | n12 | n13 | n15)
5401 echo "Cannot accept --with-cpu=$with_cpu, available values are: n6 n7 n8 e8 s8 n9 n10 d10 n12 n13 n15" 1>&2
5406 # process --with-nds32-lib
5407 case "${with_nds32_lib}" in
5411 with_nds32_lib=ulibc
5414 with_nds32_lib=glibc
5417 with_nds32_lib=newlib
5418 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5424 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5428 # for the arch=v3f or arch=v3s under mculib toolchain,
5429 # we would like to set -fno-math-errno as default
5430 case "${with_arch}" in
5432 tm_defines="${tm_defines} TARGET_DEFAULT_NO_MATH_ERRNO=1"
5440 echo "Cannot accept --with-nds32-lib=$with_nds32_lib, available values are: newlib mculib glibc uclibc" 1>&2
5445 # process --with-float
5446 case "${with_float}" in
5451 echo "Cannot accept --with-float=$with_float, available values are: soft hard" 1>&2
5456 # process --with-config-fpu
5457 case "${with_config_fpu}" in
5462 echo "Cannot accept --with-config-fpu=$with_config_fpu, available values from 0 to 7" 1>&2
5470 supported_defaults="arch"
5471 case "$with_arch" in
5476 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5483 supported_defaults=arch
5484 TM_MULTILIB_CONFIG=$with_arch
5485 #TODO 'sm_[...]' list per 'nvptx-sm.def'.
5490 sm_35 | sm_53 | sm_70 | sm_75 | sm_80 )
5491 # OK, but we'd like 'sm_30', too.
5492 TM_MULTILIB_CONFIG="$TM_MULTILIB_CONFIG sm_30"
5495 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5501 powerpc*-*-* | rs6000-*-*)
5502 supported_defaults="abi cpu cpu_32 cpu_64 float tune tune_32 tune_64 advance_toolchain"
5504 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5505 eval "val=\$with_$which"
5507 default32 | default64)
5512 echo "$val only valid for --with-cpu and --with-tune." 1>&2
5516 with_which="with_$which"
5520 tm_defines="${tm_defines} CONFIG_PPC405CR"
5521 eval "with_$which=405"
5523 "" | common | native \
5524 | power[3456789] | power10 | power5+ | power6x \
5525 | powerpc | powerpc64 | powerpc64le \
5527 | 401 | 403 | 405 | 405fp | 440 | 440fp | 464 | 464fp \
5528 | 476 | 476fp | 505 | 601 | 602 | 603 | 603e | ec603e \
5529 | 604 | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 \
5530 | a2 | e300c[23] | 854[08] | e500mc | e500mc64 | e5500 | e6500 \
5531 | titan | 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5 | cell)
5535 echo "Unknown cpu used in --with-$which=$val." 1>&2
5542 "" | elfv1 | elfv2 )
5546 echo "Unknown ABI used in --with-abi=$with_abi"
5551 if test "x$with_advance_toolchain" != x; then
5552 if test -d "/opt/$with_advance_toolchain/." -a \
5553 -d "/opt/$with_advance_toolchain/bin/." -a \
5554 -d "/opt/$with_advance_toolchain/include/."; then
5556 tm_file="$tm_file ./advance-toolchain.h"
5557 (at="/opt/$with_advance_toolchain"
5558 echo "/* Use Advance Toolchain $at */"
5560 echo "#undef LINK_OS_NEW_DTAGS_SPEC"
5561 echo "#define LINK_OS_NEW_DTAGS_SPEC" \
5562 "\"--enable-new-dtags\""
5564 echo "#undef DYNAMIC_LINKER_PREFIX"
5565 echo "#define DYNAMIC_LINKER_PREFIX \"$at\""
5567 echo "#undef MD_EXEC_PREFIX"
5568 echo "#define MD_EXEC_PREFIX \"$at/bin/\""
5570 echo "#undef MD_STARTFILE_PREFIX"
5571 echo "#define MD_STARTFILE_PREFIX \"$prefix/lib/\""
5573 echo "#undef MD_STARTFILE_PREFIX_1"
5574 echo "#define MD_STARTFILE_PREFIX_1 \"$at/lib/\"") \
5575 > advance-toolchain.h
5577 echo "Unknown advance-toolchain $with_advance_toolchain"
5582 # Set up the default long double format if the user changed it.
5583 if test x$with_long_double_format = xieee; then
5584 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=1"
5586 elif test x$with_long_double_format = xibm; then
5587 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=0"
5592 supported_defaults="arch mode tune"
5594 for which in arch tune; do
5595 eval "val=\$with_$which"
5597 "" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | z15 | z16 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12 | arch13 | arch14 )
5601 echo "Unknown cpu used in --with-$which=$val." 1>&2
5607 case ${with_mode} in
5612 echo "Unknown architecture mode used in --with-mode=$with_mode." 1>&2
5618 sh[123456ble]*-*-* | sh-*-*)
5619 supported_defaults="cpu"
5620 case "`echo $with_cpu | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz- | sed s/sh/m/`" in
5621 "" | m1 | m2 | m2e | m3 | m3e | m4 | m4-single | m4-single-only | m4-nofpu )
5624 m2a | m2a-single | m2a-single-only | m2a-nofpu)
5626 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al)
5629 echo "Unknown CPU used in --with-cpu=$with_cpu, known values:" 1>&2
5630 echo "m1 m2 m2e m3 m3e m4 m4-single m4-single-only m4-nofpu" 1>&2
5631 echo "m4a m4a-single m4a-single-only m4a-nofpu m4al" 1>&2
5632 echo "m2a m2a-single m2a-single-only m2a-nofpu" 1>&2
5638 supported_defaults="cpu cpu_32 cpu_64 float tune tune_32 tune_64"
5640 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5641 eval "val=\$with_$which"
5643 "" | sparc | sparcv9 | sparc64 \
5645 | v8 | supersparc | hypersparc | leon | leon3 | leon3v7 \
5646 | sparclite | f930 | f934 | sparclite86x \
5647 | sparclet | tsc701 \
5648 | v9 | ultrasparc | ultrasparc3 | niagara | niagara2 \
5649 | niagara3 | niagara4 | niagara7 | m8)
5653 echo "Unknown cpu used in --with-$which=$val" 1>&2
5659 case ${with_float} in
5664 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
5671 supported_defaults="arch"
5673 case ${with_arch} in
5674 "" | c62x | c64x | c64x+ | c67x | c67x+ | c674x)
5678 echo "Unknown arch used in --with-arch=$with_arch." 1>&2
5685 supported_defaults=cpu
5687 "" | v850e | v850e1 | v850e2 | v850es | v850e2v3 | v850e3v5)
5691 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5697 supported_defaults="cpu"
5701 *) echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5708 # VxWorks support for shared libraries has to be requested explicitly,
5709 # so we can factor this part here:
5711 case "${target}-${enable_shared}" in
5713 tmake_file="${tmake_file} t-slibgcc"
5717 # Targets for which there is at least one VxWorks port should include
5718 # vxworks-dummy.h to allow safe references to various TARGET_VXWORKS kinds
5719 # of markers from other files in the port, including the vxworks*.h files to
5720 # distinguish VxWorks variants such as VxWorks 7 or 64).
5723 arm*-*-* | i[34567]86-*-* | mips*-*-* | powerpc*-*-* | sh*-*-* \
5724 | sparc*-*-* | x86_64-*-*)
5725 tm_file="vxworks-dummy.h ${tm_file}"
5729 # Set some miscellaneous flags for particular targets.
5730 target_cpu_default2=
5733 if test x"$target_cpu_cname" != x
5735 target_cpu_default2=$target_cpu_cname
5740 if test x$with_cpu = x
5742 echo "Don't know the target cpu" 1>&2
5745 target_cpu_default2="\\\"$with_cpu\\\""
5750 if test x$gas = xyes
5752 target_cpu_default2="MASK_GAS"
5756 fido*-*-* | m68k*-*-*)
5757 target_cpu_default2=$m68k_cpu_ident
5758 tmake_file="m68k/t-opts $tmake_file"
5759 if [ x"$m68k_arch_family" != x ]; then
5760 tmake_file="m68k/t-$m68k_arch_family $tmake_file"
5764 i[34567]86-*-darwin* | x86_64-*-darwin*)
5766 i[34567]86-*-linux* | x86_64-*-linux*)
5767 extra_objs="${extra_objs} gnu-property.o"
5768 tmake_file="$tmake_file i386/t-linux i386/t-gnu-property"
5770 i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu)
5771 tmake_file="$tmake_file i386/t-kfreebsd"
5774 tmake_file="$tmake_file i386/t-gnu"
5776 i[34567]86-*-msdosdjgpp*)
5777 tmake_file="${tmake_file} i386/t-djgpp"
5779 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
5781 i[34567]86-*-cygwin* | x86_64-*-cygwin*)
5783 i[34567]86-*-mingw* | x86_64-*-mingw*)
5785 i[34567]86-*-dragonfly* | x86_64-*-dragonfly*)
5787 i[34567]86-*-freebsd*)
5790 tmake_file="${tmake_file} i386/t-freebsd64"
5796 if test x$gnu_ld = xyes
5798 target_cpu_default2="MASK_SPLIT_ADDRESSES"
5802 tm_defines="TARGET_ENDIAN_DEFAULT=0 $tm_defines"
5805 if test x$with_arch != x; then
5806 default_mips_arch=$with_arch
5808 with_arch=$default_mips_arch
5810 if test x$with_abi != x; then
5811 default_mips_abi=$with_abi
5813 case ${default_mips_arch} in
5814 mips1) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS1" ;;
5815 mips2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS2" ;;
5816 mips3) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3" ;;
5817 mips4) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS4" ;;
5818 mips32) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32" ;;
5819 mips32r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2" ;;
5820 mips32r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6" ;;
5821 mips64) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64" ;;
5822 mips64r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2" ;;
5823 mips64r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6" ;;
5825 case ${default_mips_abi} in
5826 32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_32" ;;
5827 o64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_O64" ;;
5828 n32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_N32" ;;
5829 64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_64" ;;
5830 eabi) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_EABI" ;;
5832 tmake_file="mips/t-mips $tmake_file"
5836 # Export canonical triplet.
5837 tm_defines="${tm_defines} LA_MULTIARCH_TRIPLET=${la_canonical_triplet}"
5839 # Define macro LA_DISABLE_MULTILIB if --disable-multilib
5840 tm_defines="${tm_defines} TM_MULTILIB_LIST=${loongarch_multilib_list_c}"
5841 if test x$enable_multilib = xyes; then
5842 TM_MULTILIB_CONFIG="${loongarch_multilib_list_make}"
5844 tm_defines="${tm_defines} LA_DISABLE_MULTILIB"
5847 # Let --with- flags initialize the enum variables from loongarch.opt.
5848 # See macro definitions from loongarch-opts.h and loongarch-cpu.h.
5851 tm_defines="${tm_defines} DEFAULT_CPU_ARCH=CPU_$(echo ${with_arch} | tr a-z- A-Z_)"
5854 tm_defines="${tm_defines} DEFAULT_ABI_BASE=ABI_BASE_$(echo ${abi_base} | tr a-z- A-Z_)"
5858 base) tm_defines="${tm_defines} DEFAULT_ABI_EXT=ABI_EXT_BASE" ;;
5862 if test x${with_tune} != x; then
5863 tm_defines="${tm_defines} DEFAULT_CPU_TUNE=CPU_$(echo ${with_tune} | tr a-z- A-Z_)"
5868 none) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_NONE" ;;
5869 32) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU32" ;;
5870 64) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU64" ;;
5874 case ${with_simd} in
5875 none) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_NONE" ;;
5876 lsx) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_SIMD_LSX" ;;
5877 lasx) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_SIMD_LASX" ;;
5880 tmake_file="loongarch/t-loongarch $tmake_file"
5883 powerpc*-*-* | rs6000-*-*)
5884 # FIXME: The PowerPC port uses the value set at compile time,
5885 # although it's only cosmetic.
5886 if test "x$with_cpu" != x
5888 target_cpu_default2="\\\"$with_cpu\\\""
5890 out_file="${cpu_type}/${cpu_type}.cc"
5891 c_target_objs="${c_target_objs} ${cpu_type}-c.o"
5892 cxx_target_objs="${cxx_target_objs} ${cpu_type}-c.o"
5893 d_target_objs="${d_target_objs} ${cpu_type}-d.o"
5894 tmake_file="${cpu_type}/t-${cpu_type} ${tmake_file}"
5897 sh[123456ble]*-*-* | sh-*-*)
5898 c_target_objs="${c_target_objs} sh-c.o"
5899 cxx_target_objs="${cxx_target_objs} sh-c.o"
5903 # Some standard aliases.
5908 xsparcv9 | xsparc64)
5913 if test x$with_tune = x ; then
5924 # The SPARC port checks this value at compile-time.
5925 target_cpu_default2="TARGET_CPU_$with_cpu"
5929 case "x$with_cpu" in
5932 xv850e | xv850e1 | xv850e2 | xv850e2v3 | xv850e3v5)
5933 target_cpu_default2="TARGET_CPU_$with_cpu"
5936 target_cpu_default2="TARGET_CPU_v850e1"
5941 target_cpu_default2="TARGET_CPU_$with_cpu"
5946 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"
5947 for option in $all_defaults
5949 eval "val=\$with_"`echo $option | sed s/-/_/g`
5950 if test -n "$val"; then
5951 case " $supported_defaults " in
5955 echo "This target does not support --with-$option." 2>&1
5956 echo "Valid --with options are: $supported_defaults" 2>&1
5963 t="{ \"$option\", \"$val\" }"
5965 t="${t}, { \"$option\", \"$val\" }"
5972 configure_default_options="{ { NULL, NULL} }"
5974 configure_default_options="{ ${t} }"
5977 if test "$target_cpu_default2" != ""
5979 if test "$target_cpu_default" != ""
5981 target_cpu_default="(${target_cpu_default}|${target_cpu_default2})"
5983 target_cpu_default=$target_cpu_default2
5988 i[34567]86-*-* | x86_64-*-*)
5989 if test x$enable_as_accelerator = xyes; then
5990 extra_programs="mkoffload\$(exeext)"