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 riscv-avlprop.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 riscv-target-attr.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"
574 target_gtfiles="./s390-gen-builtins.h"
576 # Note the 'l'; we need to be able to match e.g. "shle" or "shl".
577 sh[123456789lbe]*-*-* | sh-*-*)
579 extra_options="${extra_options} fused-madd.opt"
580 extra_objs="${extra_objs} sh_treg_combine.o sh-mem.o sh_optimize_sett_clrt.o"
587 extra_headers="c6x_intrinsics.h"
588 extra_options="${extra_options} c6x/c6x-tables.opt"
591 extra_options="${extra_options} fused-madd.opt"
592 extra_objs="xtensa-dynconfig.o"
596 tm_file=${cpu_type}/${cpu_type}.h
597 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-protos.h
599 tm_p_file=${cpu_type}/${cpu_type}-protos.h
603 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-d.h
605 tm_d_file="${tm_d_file} ${cpu_type}/${cpu_type}-d.h"
609 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-rust.h
611 tm_rust_file="${cpu_type}/${cpu_type}-rust.h"
613 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-rust.cc
615 rust_target_objs="${rust_target_objs} ${cpu_type}-rust.o"
619 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-modes.def
621 extra_modes=${cpu_type}/${cpu_type}-modes.def
623 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}.opt
625 extra_options="${extra_options} ${cpu_type}/${cpu_type}.opt"
630 tm_p_file="${tm_p_file} arm/aarch-common-protos.h"
633 if test "x$with_multilib_list" = xilp32; then
634 tm_file="aarch64/biarchilp32.h ${tm_file}"
636 tm_file="aarch64/biarchlp64.h ${tm_file}"
640 tm_file="aarch64/biarchilp32.h ${tm_file}"
643 tm_file="aarch64/biarchlp64.h ${tm_file}"
646 echo "Unknown ABI used in --with-abi=$with_abi"
651 if test "x$with_abi" != x; then
652 echo "This target does not support --with-abi."
661 if test "x$with_multilib_list" = xmx32; then
662 tm_file="i386/biarchx32.h ${tm_file}"
664 tm_file="i386/biarch64.h ${tm_file}"
668 tm_file="i386/biarch64.h ${tm_file}"
671 tm_file="i386/biarchx32.h ${tm_file}"
674 echo "Unknown ABI used in --with-abi=$with_abi"
679 tm_p_file="arm/arm-flags.h ${tm_p_file} arm/aarch-common-protos.h"
683 # On a.out targets, we need to use collect2.
690 # Common C libraries.
691 tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
693 # 32-bit x86 processors supported by --with-arch=. Each processor
694 # MUST be separated by exactly one space.
695 x86_archs="athlon athlon-4 athlon-fx athlon-mp athlon-tbird \
696 athlon-xp k6 k6-2 k6-3 geode c3 c3-2 winchip-c6 winchip2 i386 i486 \
697 i586 i686 pentium pentium-m pentium-mmx pentium2 pentium3 pentium3m \
698 pentium4 pentium4m pentiumpro prescott lakemont samuel-2 nehemiah \
701 # 64-bit x86 processors supported by --with-arch=. Each processor
702 # MUST be separated by exactly one space.
703 x86_64_archs="amdfam10 athlon64 athlon64-sse3 barcelona bdver1 bdver2 \
704 bdver3 bdver4 znver1 znver2 znver3 znver4 btver1 btver2 k8 k8-sse3 opteron \
705 opteron-sse3 nocona core2 corei7 corei7-avx core-avx-i core-avx2 atom \
706 slm nehalem westmere sandybridge ivybridge haswell broadwell bonnell \
707 silvermont knl knm skylake-avx512 cannonlake icelake-client icelake-server \
708 skylake goldmont goldmont-plus tremont cascadelake tigerlake cooperlake \
709 sapphirerapids alderlake rocketlake eden-x2 nano nano-1000 nano-2000 nano-3000 \
710 nano-x2 eden-x4 nano-x4 lujiazui yongfeng x86-64 x86-64-v2 x86-64-v3 x86-64-v4 \
711 sierraforest graniterapids graniterapids-d grandridge arrowlake arrowlake-s \
712 clearwaterforest pantherlake native"
714 # Additional x86 processors supported by --with-cpu=. Each processor
715 # MUST be separated by exactly one space.
716 x86_cpus="generic intel"
718 # Common parts for widely ported systems.
721 tmake_file="t-darwin "
722 tm_file="${tm_file} darwin.h"
723 darwin_os=`echo ${target} | sed 's/.*darwin\([0-9.]*\).*$/\1/'`
724 darwin_maj=`expr "$darwin_os" : '\([0-9]*\).*'`
725 macos_min=`expr "$darwin_os" : '[0-9]*\.\([0-9]*\).*'`
727 if test x"${macos_min}" = x; then
731 # Tools hosted on earlier versions of Darwin constrained all object
732 # alignment to be 2^15 or smaller. From Darwin11 (macOS 10.7) the
733 # alignment of non-common is allowed to be up to 2^28. Note that the
734 #Â larger alignment is permitted when targeting 10.6 from 10.7 so that
735 #Â the constraint only need be applied per host (and only if the host
738 *-*-darwin[4-9]* | *-*-darwin10*)
739 tm_defines="$tm_defines L2_MAX_OFILE_ALIGNMENT=15U"
742 tm_defines="$tm_defines L2_MAX_OFILE_ALIGNMENT=28U"
746 # Darwin 4 to 19 correspond to macOS 10.0 to 10.15
747 *-*-darwin[4-9]* | *-*-darwin1[0-9]*)
748 macos_min=`expr $darwin_maj - 4`
751 # Darwin 20 corresponds to macOS 11, Darwin 21 to macOS 12.
752 macos_maj=`expr $darwin_maj - 9`
757 aarch64) macos_maj=11 ;;
758 x86_64) macos_min=6 ;;
762 *-*-darwin*) tm_defines="$tm_defines DARWIN_USE_KERNEL_VERS" ;;
764 # If configuring a cross-compiler then we will have set some
765 #Â default above, but it is probably not what was intended.
766 echo "Warning: Using ${target} is only suitable for Darwin hosts" 1>&2
767 echo "configure with an explicit target version" 1>&2
772 echo "Error: configuring for an unreleased macOS version ${target}" 1>&2
776 tm_defines="$tm_defines DEF_MIN_OSX_VERSION=\\\"${macos_maj}.${macos_min}\\\""
777 tm_defines="$tm_defines DEF_LD64=\\\"${def_ld64}\\\""
778 tm_file="${tm_file} ${cpu_type}/darwin.h"
779 tm_p_file="${tm_p_file} darwin-protos.h"
780 target_gtfiles="$target_gtfiles \$(srcdir)/config/darwin.cc"
781 extra_options="${extra_options} rpath.opt darwin.opt"
782 c_target_objs="${c_target_objs} darwin-c.o"
783 cxx_target_objs="${cxx_target_objs} darwin-c.o"
784 d_target_objs="${d_target_objs} darwin-d.o"
785 fortran_target_objs="darwin-f.o"
786 rust_target_objs="${rust_target_objs} darwin-rust.o"
787 target_has_targetcm=yes
788 target_has_targetdm=yes
789 target_has_targetrustm=yes
790 extra_objs="${extra_objs} darwin.o"
791 extra_gcc_objs="darwin-driver.o"
792 default_use_cxa_atexit=yes
794 case ${enable_threads} in
795 "" | yes | posix) thread_file='posix' ;;
801 tmake_file="t-slibgcc"
802 case ${enable_threads} in
807 # Let these non-posix thread selections fall through if requested
810 echo 'Unknown thread configuration for DragonFly BSD'
814 extra_options="$extra_options rpath.opt dragonfly.opt"
815 default_use_cxa_atexit=yes
817 d_target_objs="${d_target_objs} dragonfly-d.o"
818 tmake_file="${tmake_file} t-dragonfly"
819 target_has_targetdm=yes
820 rust_target_objs="${rust_target_objs} dragonfly-rust.o"
821 target_has_targetrustm=yes
824 # This is the generic ELF configuration of FreeBSD. Later
825 # machine-specific sections may refine and add to this
828 # Due to tm_file entry ordering issues that vary between cpu
829 # architectures, we only define fbsd_tm_file to allow the
830 # machine-specific section to dictate the final order of all
831 # entries of tm_file with the minor exception that components
832 # of the tm_file set here will always be of the form:
834 # freebsd<version_number>.h [freebsd-<conf_option>.h ...] freebsd-spec.h freebsd.h
836 # The machine-specific section should not tamper with this
837 # ordering but may order all other entries of tm_file as it
838 # pleases around the provided core setting.
841 fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
842 if test "$fbsd_major" = ""; then
843 echo "Specify the major version number of the targeted FreeBSD release"
844 echo "like this: --target=amd64-unknown-freebsd10.1"
847 tm_defines="${tm_defines} FBSD_MAJOR=${fbsd_major}"
848 tmake_file="t-slibgcc"
849 case ${enable_threads} in
851 fbsd_tm_file="${fbsd_tm_file} freebsd-nthr.h"
857 echo 'Unknown thread configuration for FreeBSD'
861 fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h freebsd-stdint.h"
862 extra_options="$extra_options rpath.opt freebsd.opt"
867 default_use_cxa_atexit=yes;;
870 d_target_objs="${d_target_objs} freebsd-d.o"
871 tmake_file="${tmake_file} t-freebsd"
872 target_has_targetdm=yes
873 rust_target_objs="${rust_target_objs} freebsd-rust.o"
874 target_has_targetrustm=yes
877 native_system_header_dir=/include
878 tmake_file="t-fuchsia"
879 rust_target_objs="${rust_target_objs} fuchsia-rust.o"
880 target_has_targetrustm=yes
882 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi)
883 extra_options="$extra_options gnu-user.opt"
886 case ${enable_threads} in
887 "" | yes | posix) thread_file='posix' ;;
889 tmake_file="t-slibgcc"
891 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
894 native_system_header_dir=/include
897 # Linux C libraries selection switch: glibc / uclibc / bionic.
898 # uclibc and bionic aren't usable for GNU/Hurd and neither for GNU/k*BSD.
901 tm_p_file="${tm_p_file} linux-protos.h"
902 tmake_file="${tmake_file} t-linux"
903 extra_objs="${extra_objs} linux.o"
904 extra_options="${extra_options} linux.opt"
909 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC"
911 *-*-*uclibc* | *-*-uclinuxfdpiceabi)
912 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
915 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
918 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
921 # Assume that glibc or uClibc or Bionic are being used and so __cxa_atexit
923 default_use_cxa_atexit=yes
926 # Enable compilation for Android by default for *android* targets.
929 tm_defines="$tm_defines ANDROID_DEFAULT=1"
932 tm_defines="$tm_defines ANDROID_DEFAULT=0"
935 c_target_objs="${c_target_objs} glibc-c.o"
936 cxx_target_objs="${cxx_target_objs} glibc-c.o"
937 tmake_file="${tmake_file} t-glibc"
938 target_has_targetcm=yes
940 *-*-*uclibc* | *-*-uclinuxfdpiceabi)
943 # Linux targets always support .init_array.
944 gcc_cv_initfini_array=yes
949 d_target_objs="${d_target_objs} linux-d.o"
950 target_has_targetdm=yes
951 rust_target_objs="${rust_target_objs} linux-rust.o"
952 target_has_targetrustm=yes
955 d_target_objs="${d_target_objs} kfreebsd-d.o"
956 target_has_targetdm=yes
958 *-*-kopensolaris*-gnu)
959 d_target_objs="${d_target_objs} kopensolaris-d.o"
960 target_has_targetdm=yes
963 d_target_objs="${d_target_objs} gnu-d.o"
964 target_has_targetdm=yes
969 tm_p_file="${tm_p_file} netbsd-protos.h"
970 tmake_file="t-netbsd t-slibgcc"
971 extra_objs="${extra_objs} netbsd.o"
972 d_target_objs="${d_target_objs} netbsd-d.o"
976 case ${enable_threads} in
977 "" | yes | posix) thread_file='posix' ;;
979 nbsd_tm_file="netbsd.h netbsd-stdint.h netbsd-elf.h"
980 default_use_cxa_atexit=yes
981 target_has_targetdm=yes
983 arm*-* | i[34567]86-* | powerpc*-* | sparc*-* | x86_64-*)
984 default_gnu_indirect_function=yes
987 rust_target_objs="${rust_target_objs} netbsd-rust.o"
988 target_has_targetrustm=yes
991 tmake_file="t-openbsd"
992 case ${enable_threads} in
998 *-*-openbsd4.[3-9]|*-*-openbsd[5-9]*)
999 default_use_cxa_atexit=yes
1002 d_target_objs="${d_target_objs} openbsd-d.o"
1003 target_has_targetdm=yes
1004 rust_target_objs="${rust_target_objs} openbsd-rust.o"
1005 target_has_targetrustm=yes
1010 default_use_cxa_atexit=yes
1013 case ${enable_threads} in
1014 "" | yes | rtems) thread_file='rtems' ;;
1015 posix) thread_file='posix' ;;
1018 echo 'Unknown thread configuration for RTEMS'
1022 tmake_file="${tmake_file} t-rtems"
1023 extra_options="${extra_options} rtems.opt"
1024 default_use_cxa_atexit=yes
1028 extra_options="$extra_options gnu-user.opt"
1030 case ${enable_threads} in
1031 "" | yes | posix) thread_file='posix' ;;
1033 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC SINGLE_LIBC"
1039 # i?86-*-solaris2* needs to insert headers between cpu default and
1040 # Solaris 2 specific ones.
1041 sol2_tm_file_head="elfos.h ${cpu_type}/sysv4.h"
1042 sol2_tm_file_tail="${cpu_type}/sol2.h sol2.h"
1043 sol2_tm_file="${sol2_tm_file_head} ${sol2_tm_file_tail}"
1045 *-*-solaris2.1[1-9]*)
1046 # __cxa_atexit was introduced in Solaris 11.4.
1047 default_use_cxa_atexit=yes
1051 if test x$gnu_ld = xyes; then
1052 tm_file="usegld.h ${tm_file}"
1054 if test x$gas = xyes; then
1055 tm_file="usegas.h ${tm_file}"
1057 tm_p_file="${tm_p_file} sol2-protos.h"
1058 tmake_file="${tmake_file} t-sol2 t-slibgcc"
1059 c_target_objs="${c_target_objs} sol2-c.o"
1060 cxx_target_objs="${cxx_target_objs} sol2-c.o sol2-cxx.o"
1061 d_target_objs="${d_target_objs} sol2-d.o"
1062 extra_objs="${extra_objs} sol2.o sol2-stubs.o"
1063 extra_options="${extra_options} sol2.opt"
1064 case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
1065 "":yes:* | yes:yes:* )
1069 target_has_targetdm=yes
1070 rust_target_objs="${rust_target_objs} sol2-rust.o"
1071 target_has_targetrustm=yes
1074 extra_options="${extra_options} vms/vms.opt"
1075 xmake_file=vms/x-vms
1076 tmake_file="vms/t-vms t-slibgcc"
1078 target_gtfiles="$target_gtfiles \$(srcdir)/config/vms/vms.cc"
1079 tm_p_file="${tm_p_file} vms/vms-protos.h"
1080 xm_file="vms/xm-vms.h"
1081 c_target_objs="vms-c.o"
1082 cxx_target_objs="vms-c.o"
1083 fortran_target_objs="vms-f.o"
1084 use_gcc_stdint=provide
1085 tm_file="${tm_file} vms/vms-stdint.h"
1086 if test x$gnu_ld != xyes; then
1087 # Build wrappers for native case.
1088 extra_programs="ld\$(exeext) ar\$(exeext)"
1089 tmake_file="$tmake_file vms/t-vmsnative"
1093 tmake_file=t-vxworks
1096 extra_options="${extra_options} vxworks.opt"
1097 extra_objs="$extra_objs vxworks.o"
1099 c_target_objs="${c_target_objs} vxworks-c.o"
1100 cxx_target_objs="${cxx_target_objs} vxworks-c.o"
1101 extra_headers="${extra_headers} ../vxworks/vxworks-predef.h"
1102 target_has_targetcm="yes"
1104 rust_target_objs="${rust_target_objs} vxworks-rust.o"
1105 target_has_targetrustm=yes
1107 extra_gcc_objs="vxworks-driver.o"
1109 # This private header exposes a consistent interface for checks on
1110 # the VxWorks version our runtime header files need to perform, based on
1111 # what the system headers adverstise:
1113 extra_headers="${extra_headers} ../vxworks/_vxworks-versions.h"
1115 # Starting from VxWorks 7, the system comes with a Dinkumware
1116 # environment which requires the inclusion of "yvals.h" before other
1117 # system headers. We provide wrapped versions of a few headers to
1118 # accomodate such constraints:
1120 extra_headers="${extra_headers} ../vxworks/_yvals.h"
1121 extra_headers="${extra_headers} ../vxworks/_yvals-wrapper.h"
1123 extra_headers="${extra_headers} ../vxworks/math.h ../vxworks/complex.h"
1124 extra_headers="${extra_headers} ../vxworks/inttypes.h ../vxworks/setjmp.h"
1126 # We provide (a tailored version of) stdint.h
1127 tm_file="${tm_file} vxworks-stdint.h"
1128 use_gcc_stdint=provide
1130 case ${enable_threads} in
1132 "" | yes | vxworks) thread_file='vxworks' ;;
1133 *) echo 'Unknown thread configuration for VxWorks'; exit 1 ;;
1136 # A few common macro definitions conveying general characteristics
1137 # of the configuration at hand. Note that by VxWorks 7, we mean the
1138 # the SR6xx major update or beyond in vendor parlance:
1142 tm_defines="$tm_defines TARGET_VXWORKS7=1"
1147 tm_defines="$tm_defines TARGET_VXWORKS64=1"
1151 # Then a few build configuration controls for VxWorks 7, which
1152 # has specificities on top of which we aim to provide more complete
1157 # VxWorks 7 always has init/fini_array support and it is simpler to
1158 # just leverage this, sticking to what the system toolchain does:
1159 gcc_cv_initfini_array=yes
1163 *-*-elf|arc*-*-elf*)
1164 # Assume that newlib is being used and so __cxa_atexit is provided.
1165 default_use_cxa_atexit=yes
1168 case "${with_newlib}-${with_headers}" in
1169 no-no) use_gcc_stdint=provide ;;
1175 # Figure out if we need to enable heap trampolines by default
1178 # Currently, we do this for macOS 11 and above.
1179 tm_defines="$tm_defines HEAP_TRAMPOLINES_INIT=1"
1182 tm_defines="$tm_defines HEAP_TRAMPOLINES_INIT=0"
1187 aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
1188 tm_file="${tm_file} elfos.h newlib-stdint.h"
1189 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-elf-raw.h"
1190 tmake_file="${tmake_file} aarch64/t-aarch64"
1196 tm_file="${tm_file} fuchsia.h"
1199 tm_file="${tm_file} aarch64/rtems.h rtems.h"
1204 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1207 aarch64_multilibs="${with_multilib_list}"
1208 if test "$aarch64_multilibs" = "default"; then
1209 aarch64_multilibs="lp64,ilp32"
1211 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1212 for aarch64_multilib in ${aarch64_multilibs}; do
1213 case ${aarch64_multilib} in
1215 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1218 echo "--with-multilib-list=${aarch64_multilib} not supported."
1222 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1224 aarch64*-*-freebsd*)
1225 tm_file="${tm_file} elfos.h ${fbsd_tm_file}"
1226 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-freebsd.h"
1227 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
1228 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1231 tm_file="${tm_file} elfos.h ${nbsd_tm_file}"
1232 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-netbsd.h"
1233 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-netbsd"
1234 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1237 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h"
1238 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-linux.h"
1239 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-linux"
1240 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1243 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1246 aarch64_multilibs="${with_multilib_list}"
1247 if test "$aarch64_multilibs" = "default"; then
1248 # TODO: turn on ILP32 multilib build after its support is mature.
1249 # aarch64_multilibs="lp64,ilp32"
1250 aarch64_multilibs="lp64"
1252 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1253 for aarch64_multilib in ${aarch64_multilibs}; do
1254 case ${aarch64_multilib} in
1256 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1259 echo "--with-multilib-list=${aarch64_multilib} not supported."
1263 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1265 aarch64*-wrs-vxworks*)
1266 tm_file="${tm_file} elfos.h aarch64/aarch64-elf.h"
1267 tm_file="${tm_file} vx-common.h vxworks.h aarch64/aarch64-vxworks.h"
1268 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-vxworks"
1271 tm_file="elfos.h ${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h glibc-stdint.h"
1272 tmake_file="${tmake_file} alpha/t-linux alpha/t-alpha"
1273 extra_options="${extra_options} alpha/elf.opt"
1276 tm_file="elfos.h ${tm_file} ${nbsd_tm_file} alpha/elf.h alpha/netbsd.h"
1277 tmake_file="${tmake_file} alpha/t-alpha"
1278 extra_options="${extra_options} netbsd.opt netbsd-elf.opt \
1282 tm_defines="${tm_defines} OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_FUNCTION_SIZE OBSD_HAS_DECLARE_OBJECT"
1283 tm_file="elfos.h alpha/alpha.h alpha/elf.h openbsd.h openbsd-stdint.h alpha/openbsd.h openbsd-libpthread.h"
1284 tmake_file="${tmake_file} alpha/t-alpha"
1285 extra_options="${extra_options} openbsd.opt alpha/elf.opt"
1286 # default x-alpha is only appropriate for dec-osf.
1289 tm_file="${tm_file} vms/vms.h alpha/vms.h"
1290 tmake_file="${tmake_file} alpha/t-vms alpha/t-alpha"
1293 tm_file="arc/arc-arch.h elfos.h newlib-stdint.h arc/elf.h ${tm_file}"
1294 tmake_file="arc/t-multilib arc/t-arc"
1295 extra_gcc_objs="driver-arc.o"
1296 if test "x$with_cpu" != x; then
1297 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1299 if test x${with_endian} = x; then
1301 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1302 *) with_endian=little ;;
1305 case ${with_endian} in
1307 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1309 case ${with_endian} in
1310 big*) tm_file="arc/big.h ${tm_file}"
1314 tm_file="arc/arc-arch.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arc/linux.h ${tm_file}"
1315 tmake_file="${tmake_file} arc/t-multilib-linux arc/t-arc"
1316 extra_gcc_objs="driver-arc.o"
1317 if test "x$with_cpu" != x; then
1318 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1320 if test x${with_endian} = x; then
1322 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1323 *) with_endian=little ;;
1326 case ${with_endian} in
1328 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1330 case ${with_endian} in
1331 big*) tm_file="arc/big.h ${tm_file}"
1333 # Force .init_array support. The configure script cannot always
1334 # automatically detect that GAS supports it, yet we require it.
1335 gcc_cv_initfini_array=yes
1338 # We only support VxWorks 7 now on ARM, post SR600. Pre SR600
1339 # VxWorks 7 was transitory and major versions prior to 7 were based
1340 # on long deprecated ABI, not supported at all any more regardless
1342 extra_options="${extra_options} arm/vxworks.opt"
1343 tmake_file="${tmake_file} arm/t-arm arm/t-vxworks arm/t-bpabi"
1344 tm_file="elfos.h arm/elf.h arm/bpabi.h arm/aout.h ${tm_file}"
1345 tm_file="${tm_file} vx-common.h vxworks.h arm/vxworks.h"
1346 target_cpu_cname="generic-armv7-a"
1347 need_64bit_hwint=yes
1349 arm*-*-freebsd*) # ARM FreeBSD EABI
1350 tm_file="elfos.h ${fbsd_tm_file} arm/elf.h"
1353 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1356 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi"
1357 tm_file="${tm_file} arm/bpabi.h arm/freebsd.h arm/aout.h arm/arm.h"
1360 target_cpu_cname="arm1176jzf-s"
1361 if test $fbsd_major -ge 11; then
1362 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1366 target_cpu_cname="generic-armv7-a"
1367 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1370 target_cpu_cname="arm9"
1373 with_tls=${with_tls:-gnu}
1376 target_cpu_cname="strongarm"
1377 tmake_file="${tmake_file} arm/t-arm"
1378 tm_file="elfos.h ${nbsd_tm_file} arm/elf.h"
1379 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1381 arm*eb-*) tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" ;;
1384 arm*-*-netbsdelf-*eabi*)
1385 tm_file="$tm_file arm/bpabi.h arm/netbsd-elf.h arm/netbsd-eabi.h"
1386 tmake_file="$tmake_file arm/t-bpabi arm/t-netbsdeabi"
1389 tm_file="$tm_file arm/netbsd-elf.h"
1390 tmake_file="$tmake_file arm/t-netbsd"
1393 tm_file="${tm_file} arm/aout.h arm/arm.h"
1395 arm*-*-netbsdelf-*eabihf*)
1396 # Hard-float requires at least Arm v5te
1397 target_cpu_cname="arm10e"
1398 tm_defines="${tm_defines} TARGET_DEFAULT_FLOAT_ABI=ARM_FLOAT_ABI_HARD"
1402 armv6*) target_cpu_cname="arm1176jzf-s";;
1403 armv7*) target_cpu_cname="generic-armv7-a";;
1406 arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)
1407 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"
1408 extra_options="${extra_options} linux-android.opt"
1411 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1414 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
1415 tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h arm/aout.h arm/arm.h"
1417 arm*-*-uclinuxfdpiceabi)
1418 tm_file="$tm_file arm/uclinuxfdpiceabi.h"
1421 # Define with_float to "hard" if not already defined and
1422 # target name ends with "hf"
1423 case $target:$with_float in
1428 # Generation of floating-point instructions requires at least ARMv5te.
1429 if [ "$with_float" = "hard" -o "$with_float" = "softfp" ] ; then
1430 target_cpu_cname="arm10e"
1432 target_cpu_cname="arm10tdmi"
1434 # Define multilib configuration for arm-linux-androideabi.
1437 tmake_file="$tmake_file arm/t-linux-androideabi"
1440 # The EABI requires the use of __cxa_atexit.
1441 default_use_cxa_atexit=yes
1442 with_tls=${with_tls:-gnu}
1444 arm*-*-uclinux*eabi*) # ARM ucLinux
1445 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
1446 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi"
1447 tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h arm/aout.h arm/arm.h"
1448 target_cpu_cname="arm7tdmi"
1449 # The EABI requires the use of __cxa_atexit.
1450 default_use_cxa_atexit=yes
1453 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1454 tm_file="${tm_file} newlib-stdint.h phoenix.h"
1455 tm_file="${tm_file} arm/aout.h arm/arm.h"
1456 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi arm/t-phoenix"
1457 target_cpu_cname="arm7tdmi"
1459 arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
1462 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1464 default_use_cxa_atexit=yes
1465 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1466 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf"
1467 target_cpu_cname="arm7tdmi"
1470 tm_file="$tm_file newlib-stdint.h"
1471 tmake_file="${tmake_file} arm/t-bpabi"
1475 tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h"
1476 tmake_file="${tmake_file} arm/t-bpabi arm/t-fuchsia"
1477 target_cpu_cname="generic-armv7-a"
1480 tm_file="${tm_file} arm/rtems.h rtems.h newlib-stdint.h"
1481 tmake_file="${tmake_file} arm/t-bpabi arm/t-rtems"
1484 tm_file="${tm_file} arm/symbian.h"
1485 # We do not include t-bpabi for Symbian OS because the system
1486 # provides its own implementation of the BPABI functions.
1487 tmake_file="${tmake_file} arm/t-symbian"
1488 target_cpu_cname="arm10tdmi"
1491 tm_file="${tm_file} arm/aout.h arm/arm.h"
1494 tm_file="elfos.h avr/elf.h avr/avr-arch.h avr/avr.h avr/specs.h avr/avr-stdint.h"
1495 if test x${with_avrlibc} != xno; then
1496 tm_file="${tm_file} ${cpu_type}/avrlibc.h"
1497 tm_defines="${tm_defines} WITH_AVRLIBC"
1499 # Work out avr_double_comparison which is 2 or 3 and is used in
1500 # target hook FLOAT_LIB_COMPARE_RETURNS_BOOL to determine whether
1501 # DFmode comparisons return 3-state or 2-state results.
1502 case y${with_double_comparison} in
1504 avr_double_comparison=3
1507 avr_double_comparison=2
1510 echo "Error: --with-double-comparison= can only be used with: 'tristate', 'bool', 'libf7'" 1>&2
1514 case "y${with_libf7}" in
1516 # avr_double_comparison as set above.
1519 avr_double_comparison=2
1520 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1522 y | yyes | ymath-symbols)
1523 avr_double_comparison=2
1524 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1525 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1526 tm_defines="${tm_defines} WITH_LIBF7_MATH_SYMBOLS"
1529 avr_double_comparison=2
1530 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1531 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1534 echo "Error: --with-libf7=${with_libf7} but can only be used with: 'libgcc', 'math', 'math-symbols', 'yes', 'no'" 1>&2
1538 tm_defines="${tm_defines} WITH_DOUBLE_COMPARISON=${avr_double_comparison}"
1539 case y${with_double} in
1542 tm_defines="${tm_defines} HAVE_DOUBLE32"
1546 tm_defines="${tm_defines} HAVE_DOUBLE64"
1550 avr_double_multilib=1
1551 tm_defines="${tm_defines} HAVE_DOUBLE32"
1552 tm_defines="${tm_defines} HAVE_DOUBLE64"
1553 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1557 avr_double_multilib=1
1558 tm_defines="${tm_defines} HAVE_DOUBLE32"
1559 tm_defines="${tm_defines} HAVE_DOUBLE64"
1560 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1563 echo "Error: --with-double= can only be used with: '32', '32,64', '64,32', '64'" 1>&2
1567 case y${with_long_double} in
1570 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1574 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1578 avr_long_double_multilib=1
1579 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1580 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1581 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1585 avr_long_double_multilib=1
1586 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1587 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1588 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1591 avr_long_double=${avr_double}
1592 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_IS_DOUBLE"
1593 if test y${avr_double_multilib} = y1; then
1594 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1595 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1597 tm_defines="${tm_defines} HAVE_LONG_DOUBLE${avr_long_double}"
1601 echo "Error: --with-long_double= can only be used with: '32', '32,64', '64,32', '64', 'double'" 1>&2
1605 if test ${avr_long_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 32xy1z; then
1606 if test y${with_long_double} != ydouble; then
1607 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
1611 if test ${avr_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 64x1yz; then
1612 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
1615 if test y${avr_double}${avr_long_double} = y6432; then
1616 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
1619 tm_defines="${tm_defines} WITH_DOUBLE${avr_double}"
1620 tm_defines="${tm_defines} WITH_LONG_DOUBLE${avr_long_double}"
1621 tmake_file="${tmake_file} avr/t-avr avr/t-multilib"
1623 extra_gcc_objs="driver-avr.o avr-devices.o"
1624 extra_objs="avr-devices.o avr-log.o"
1627 tm_file="${tm_file} elfos.h newlib-stdint.h bfin/elf.h"
1628 tmake_file=bfin/t-bfin-elf
1632 tm_file="${tm_file} elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/uclinux.h"
1633 tmake_file=bfin/t-bfin-uclinux
1636 bfin*-linux-uclibc*)
1637 tm_file="${tm_file} elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/linux.h ./linux-sysroot-suffix.h"
1638 tmake_file="${tmake_file} bfin/t-bfin-linux"
1642 tm_file="${tm_file} elfos.h bfin/elf.h bfin/rtems.h rtems.h newlib-stdint.h"
1643 tmake_file="${tmake_file} bfin/t-rtems"
1646 tm_file="${tm_file} elfos.h newlib-stdint.h bfin/elf.h"
1651 tm_file="elfos.h ${tm_file}"
1652 tmake_file="${tmake_file} bpf/t-bpf"
1654 use_gcc_stdint=provide
1655 extra_objs="coreout.o core-builtins.o"
1656 target_gtfiles="$target_gtfiles \$(srcdir)/config/bpf/coreout.cc \$(srcdir)/config/bpf/core-builtins.cc"
1658 cris-*-elf | cris-*-none)
1659 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1660 tmake_file="cris/t-cris cris/t-elfmulti"
1662 extra_options="${extra_options} cris/elf.opt"
1666 if test x${with_endian} != x; then
1667 case ${with_endian} in
1670 echo "with_endian=${with_endian} not supported."
1675 if test x${with_float} != x; then
1676 case ${with_float} in
1677 soft | hard | softfp) ;;
1679 "Unknown floating point type used in --with-float=$with_float"
1684 tm_file="csky/csky.h"
1685 md_file="csky/csky.md"
1686 out_file="csky/csky.cc"
1687 tm_p_file="${tm_p_file} csky/csky-protos.h"
1688 extra_options="${extra_options} csky/csky_tables.opt"
1690 if test x${enable_tpf_debug} = xyes; then
1691 tm_defines="${tm_defines} ENABLE_TPF_DEBUG"
1696 tm_file="elfos.h newlib-stdint.h ${tm_file} csky/csky-elf.h"
1697 tmake_file="csky/t-csky csky/t-csky-elf"
1698 default_use_cxa_atexit=no
1702 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} csky/csky-linux-elf.h"
1703 tmake_file="${tmake_file} csky/t-csky"
1705 if test "x${enable_multilib}" = xyes ; then
1706 tm_defines="$tm_defines CSKY_ENABLE_MULTILIB"
1707 tmake_file="${tmake_file} csky/t-csky-linux"
1712 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
1713 # Force .init_array support. The configure script cannot always
1714 # automatically detect that GAS supports it, yet we require it.
1715 gcc_cv_initfini_array=yes
1717 csky-*-linux-uclibc*)
1718 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
1719 default_use_cxa_atexit=no
1722 echo "Unknown target $target"
1728 echo "Unknown target $target"
1733 epiphany-*-elf | epiphany-*-rtems*)
1734 tm_file="elfos.h ${tm_file}"
1735 tmake_file="${tmake_file} epiphany/t-epiphany"
1738 tm_file="${tm_file} epiphany/rtems.h rtems.h newlib-stdint.h"
1741 tm_file="${tm_file} newlib-stdint.h"
1744 extra_options="${extra_options} fused-madd.opt"
1745 extra_objs="${extra_objs} mode-switch-use.o resolve-sw-modes.o"
1746 tm_defines="${tm_defines} EPIPHANY_STACK_OFFSET=${with_stack_offset:-8}"
1747 extra_headers="epiphany_intrinsics.h"
1750 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1753 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1754 tmake_file=frv/t-frv
1757 tm_file="elfos.h ${tm_file} \
1758 gnu-user.h linux.h glibc-stdint.h frv/linux.h"
1759 tmake_file="${tmake_file} frv/t-frv frv/t-linux"
1764 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1765 tmake_file="${tmake_file} ft32/t-ft32"
1768 tm_file="elfos.h gcn/gcn-hsa.h gcn/gcn.h newlib-stdint.h"
1769 tmake_file="gcn/t-gcn-hsa"
1770 native_system_header_dir=/include
1771 extra_modes=gcn/gcn-modes.def
1772 extra_objs="${extra_objs} gcn-tree.o"
1774 x86_64*-*-linux-gnu )
1775 if test "$ac_cv_search_dlopen" != no; then
1776 extra_programs="${extra_programs} gcn-run\$(exeext)"
1780 if test x$enable_as_accelerator = xyes; then
1781 extra_programs="${extra_programs} mkoffload\$(exeext)"
1782 tm_file="${tm_file} gcn/offload.h"
1784 # Force .init_array support.
1785 gcc_cv_initfini_array=yes
1791 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1792 tmake_file="${tmake_file} moxie/t-moxie"
1797 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h moxie/uclinux.h"
1798 tmake_file="${tmake_file} moxie/t-moxie"
1801 tmake_file="${tmake_file} moxie/t-moxie"
1802 tm_file="moxie/moxie.h elfos.h moxie/rtems.h rtems.h newlib-stdint.h"
1807 tm_file="${tm_file} elfos.h moxie/moxiebox.h newlib-stdint.h"
1808 tmake_file="${tmake_file} moxie/t-moxiebox"
1811 tmake_file="h8300/t-h8300"
1812 tm_file="h8300/h8300.h elfos.h newlib-stdint.h h8300/elf.h"
1815 tmake_file="${tmake_file} h8300/t-h8300 h8300/t-linux"
1816 tm_file="h8300/h8300.h elfos.h gnu-user.h linux.h glibc-stdint.h h8300/linux.h"
1819 target_cpu_default="MASK_PA_11|MASK_PA_20"
1820 tm_file="pa/pa64-start.h ${tm_file} elfos.h gnu-user.h linux.h \
1821 glibc-stdint.h pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h \
1823 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1824 d_target_objs="${d_target_objs} pa-d.o"
1828 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS|MASK_CALLER_COPIES"
1829 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h pa/pa-linux.h \
1830 pa/pa32-regs.h pa/pa32-linux.h"
1831 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1832 d_target_objs="${d_target_objs} pa-d.o"
1835 target_cpu_default="MASK_PA_11"
1836 tm_file="${tm_file} elfos.h openbsd.h openbsd-stdint.h openbsd-libpthread.h \
1837 pa/pa-openbsd.h pa/pa32-regs.h pa/pa32-openbsd.h"
1838 extra_options="${extra_options} openbsd.opt"
1839 tmake_file="pa/t-pa"
1840 d_target_objs="${d_target_objs} pa-d.o"
1845 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS"
1846 tm_file="${tm_file} elfos.h ${nbsd_tm_file} \
1847 pa/pa-netbsd.h pa/pa32-regs.h pa/pa32-netbsd.h"
1848 tmake_file="${tmake_file}"
1849 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
1850 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1853 target_cpu_default="MASK_PA_11|MASK_PA_20"
1854 if test x$gnu_ld = xyes
1856 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
1858 tm_file="pa/pa64-start.h ${tm_file} elfos.h \
1859 pa/pa64-regs.h pa/pa-hpux.h pa/pa-hpux1010.h \
1863 tm_file="${tm_file} pa/pa-hpux1111.h pa/pa-64.h pa/pa64-hpux.h"
1864 extra_options="${extra_options} pa/pa-hpux1111.opt"
1867 tm_file="${tm_file} pa/pa-hpux1131.h pa/pa-64.h pa/pa64-hpux.h"
1868 extra_options="${extra_options} pa/pa-hpux1131.opt"
1871 tm_file="${tm_file} pa/pa-64.h pa/pa64-hpux.h"
1874 extra_options="${extra_options} pa/pa-hpux.opt \
1875 pa/pa-hpux1010.opt pa/pa64-hpux.opt hpux11.opt"
1876 tmake_file="pa/t-pa t-slibgcc"
1877 d_target_objs="${d_target_objs} pa-d.o"
1878 case x${enable_threads} in
1886 use_gcc_stdint=provide
1887 tm_file="${tm_file} hpux-stdint.h"
1891 tm_file="${tm_file} hpux-stdint.h"
1895 i[34567]86-*-darwin1[89]* | i[34567]86-*-darwin2*)
1896 echo "Error: 32bit target is not supported after Darwin17" 1>&2
1898 i[34567]86-*-darwin*)
1900 # Baseline choice for a machine that allows m64 support.
1901 with_cpu=${with_cpu:-core2}
1902 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch t-slibgcc"
1903 tm_file="${cpu_type}/darwin32-biarch.h ${tm_file} "
1905 x86_64-*-darwin1[89]* | x86_64-*-darwin2*)
1907 tm_defines="${tm_defines} TARGET_64BIT_DEFAULT=(OPTION_MASK_ISA_64BIT|OPTION_MASK_ABI_64)"
1908 tm_defines="${tm_defines} TARGET_BI_ARCH=0"
1909 with_cpu=${with_cpu:-core2}
1910 tmake_file="${tmake_file} t-slibgcc"
1913 with_cpu=${with_cpu:-core2}
1914 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
1915 tm_file="${cpu_type}/darwin64-biarch.h ${tm_file} "
1917 i[34567]86-*-elfiamcu)
1918 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/iamcu.h"
1921 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h"
1924 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h"
1927 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"
1930 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/rdos.h"
1933 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"
1934 tmake_file="i386/t-i386elf t-svr4"
1936 i[34567]86-*-dragonfly*)
1937 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h dragonfly.h dragonfly-stdint.h i386/dragonfly.h"
1938 tmake_file="${tmake_file} i386/t-crtstuff"
1940 x86_64-*-dragonfly*)
1941 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h dragonfly.h dragonfly-stdint.h i386/x86-64.h i386/dragonfly.h"
1942 tmake_file="${tmake_file} i386/t-crtstuff"
1944 i[34567]86-*-freebsd*)
1945 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
1948 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"
1950 i[34567]86-*-netbsdelf*)
1951 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${nbsd_tm_file} i386/netbsd-elf.h"
1952 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1955 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${nbsd_tm_file} i386/x86-64.h i386/netbsd64.h"
1956 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1958 i[34567]86-*-openbsd*)
1959 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
1960 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/openbsdelf.h"
1961 extra_options="${extra_options} openbsd.opt"
1966 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
1967 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/x86-64.h i386/openbsdelf.h"
1968 extra_options="${extra_options} openbsd.opt"
1972 i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu)
1973 # Intel 80386's running GNU/*
1974 # with ELF format using glibc 2
1975 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h gnu-user.h glibc-stdint.h"
1977 i[34567]86-*-linux*)
1978 tm_file="${tm_file} linux.h linux-android.h"
1979 extra_options="${extra_options} linux-android.opt"
1980 if test x$enable_targets = xall; then
1981 tm_file="${tm_file} i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h i386/linux-common.h i386/linux64.h"
1982 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
1983 tmake_file="${tmake_file} i386/t-linux64"
1984 x86_multilibs="${with_multilib_list}"
1985 if test "$x86_multilibs" = "default"; then
1986 x86_multilibs="m64,m32"
1988 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
1989 for x86_multilib in ${x86_multilibs}; do
1990 case ${x86_multilib} in
1992 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
1995 echo "--with-multilib-list=${x86_with_multilib} not supported."
1999 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2001 if test x$with_cpu = x; then
2002 if test x$with_cpu_64 = x; then
2006 case " $x86_cpus $x86_archs $x86_64_archs " in
2010 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2011 echo "$x86_cpus $x86_archs $x86_64_archs " 1>&2
2017 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h i386/linux-common.h i386/linux.h"
2020 i[34567]86-*-kfreebsd*-gnu)
2021 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kfreebsd-gnu.h i386/kfreebsd-gnu.h"
2023 i[34567]86-*-kopensolaris*-gnu)
2024 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kopensolaris-gnu.h i386/kopensolaris-gnu.h"
2027 tm_file="$tm_file i386/gnu-user-common.h i386/gnu-user.h gnu.h i386/gnu.h"
2031 x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-gnu*)
2032 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h gnu-user.h glibc-stdint.h \
2033 i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h"
2036 tm_file="${tm_file} linux.h linux-android.h i386/linux-common.h i386/linux64.h"
2037 extra_options="${extra_options} linux-android.opt"
2039 x86_64-*-kfreebsd*-gnu)
2040 tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu64.h"
2043 tm_file="${tm_file} gnu.h i386/gnu64.h"
2046 tmake_file="${tmake_file} i386/t-linux64"
2047 x86_multilibs="${with_multilib_list}"
2048 if test "$x86_multilibs" = "default"; then
2051 x86_multilibs="mx32"
2054 x86_multilibs="m64,m32"
2058 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
2059 for x86_multilib in ${x86_multilibs}; do
2060 case ${x86_multilib} in
2062 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
2065 echo "--with-multilib-list=${x86_with_multilib} not supported."
2069 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2071 i[34567]86-pc-msdosdjgpp*)
2072 xm_file=i386/xm-djgpp.h
2073 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/djgpp.h i386/djgpp-stdint.h"
2074 native_system_header_dir=/dev/env/DJDIR/include
2075 extra_options="${extra_options} i386/djgpp.opt"
2080 i[34567]86-*-lynxos*)
2082 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h i386/lynx.h lynx.h"
2083 tmake_file="${tmake_file} t-lynx"
2084 extra_options="${extra_options} lynx.opt"
2089 i[34567]86-*-nto-qnx*)
2090 tm_file="${tm_file} i386/att.h tm-dwarf2.h elfos.h i386/unix.h i386/nto.h"
2091 extra_options="${extra_options} i386/nto.opt"
2095 i[34567]86-*-rtems*)
2096 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h i386/i386elf.h i386/rtemself.h rtems.h newlib-stdint.h"
2097 tmake_file="${tmake_file} i386/t-rtems"
2099 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
2100 # Set default arch_32 to pentium4, tune_32 to generic like the other
2101 # i386 targets, although config.guess defaults to i386-pc-solaris2*.
2102 with_arch_32=${with_arch_32:-pentium4}
2103 with_tune_32=${with_tune_32:-generic}
2104 tm_file="${tm_file} i386/unix.h i386/att.h ${sol2_tm_file_head} i386/x86-64.h ${sol2_tm_file_tail}"
2105 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2106 tmake_file="$tmake_file i386/t-sol2"
2108 if test x$with_cpu = x; then
2109 if test x$with_cpu_64 = x; then
2113 case " $x86_cpus $x86_archs $x86_64_archs " in
2117 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2118 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2124 i[4567]86-wrs-vxworks*|x86_64-wrs-vxworks7*)
2125 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
2129 tm_file="${tm_file} i386/x86-64.h"
2132 tm_file="${tm_file} vx-common.h"
2135 tm_file="${tm_file} vxworksae.h i386/vxworks.h i386/vxworksae.h"
2136 tmake_file="${tmake_file} i386/t-vxworks i386/t-vxworksae"
2139 tm_file="${tm_file} vxworks.h i386/vxworks.h"
2140 tmake_file="${tmake_file} i386/t-vxworks"
2144 i[34567]86-*-cygwin*)
2145 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h i386/cygwin.h i386/cygwin-stdint.h"
2146 xm_file=i386/xm-cygwin.h
2147 tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
2148 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2149 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
2150 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2151 c_target_objs="${c_target_objs} msformat-c.o"
2152 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2153 d_target_objs="${d_target_objs} cygwin-d.o"
2154 target_has_targetdm="yes"
2155 if test x$enable_threads = xyes; then
2158 default_use_cxa_atexit=yes
2163 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"
2164 xm_file=i386/xm-cygwin.h
2165 tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
2166 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2167 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
2168 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2169 c_target_objs="${c_target_objs} msformat-c.o"
2170 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2171 d_target_objs="${d_target_objs} cygwin-d.o"
2172 target_has_targetdm="yes"
2173 if test x$enable_threads = xyes; then
2176 default_use_cxa_atexit=yes
2178 tm_defines="${tm_defines} TARGET_CYGWIN64=1"
2180 i[34567]86-*-mingw* | x86_64-*-mingw*)
2181 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h"
2182 xm_file=i386/xm-mingw32.h
2183 c_target_objs="${c_target_objs} winnt-c.o"
2184 cxx_target_objs="${cxx_target_objs} winnt-c.o"
2185 d_target_objs="${d_target_objs} winnt-d.o"
2186 target_has_targetcm="yes"
2187 target_has_targetdm="yes"
2188 rust_target_objs="${rust_target_objs} winnt-rust.o"
2189 target_has_targetrustm="yes"
2191 x86_64-*-* | *-w64-*)
2197 if test x$enable_threads = xposix ; then
2198 tm_file="${tm_file} i386/mingw-pthread.h"
2200 if test x$enable_threads = xmcf ; then
2201 tm_file="${tm_file} i386/mingw-mcfgthread.h"
2203 tm_file="${tm_file} i386/mingw32.h"
2204 # This makes the logic if mingw's or the w64 feature set has to be used
2207 user_headers_inc_next_post="${user_headers_inc_next_post} float.h"
2208 user_headers_inc_next_pre="${user_headers_inc_next_pre} stddef.h stdarg.h"
2209 tm_file="${tm_file} i386/mingw-w64.h"
2210 if test x$enable_targets = xall; then
2211 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2212 if test x$with_cpu = x; then
2213 if test x$with_cpu_64 = x; then
2217 case " $x86_cpus $x86_archs $x86_64_archs " in
2221 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2222 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2232 tm_file="${tm_file} i386/mingw-stdint.h"
2233 tmake_file="${tmake_file} t-winnt i386/t-cygming t-slibgcc"
2236 tmake_file="${tmake_file} i386/t-mingw-w64"
2239 tmake_file="${tmake_file} i386/t-mingw-w32"
2242 native_system_header_dir=/mingw/include
2243 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2244 extra_options="${extra_options} i386/cygming.opt i386/mingw.opt"
2247 extra_options="${extra_options} i386/mingw-w64.opt"
2252 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2253 c_target_objs="${c_target_objs} msformat-c.o"
2254 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2257 default_use_cxa_atexit=yes
2259 case ${enable_threads} in
2269 tm_file="${tm_file} i386/crtdll.h"
2271 *mingw32msv* | *mingw*)
2276 tmake_file="${tmake_file} i386/t-x86_64-elf"
2277 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h fuchsia.h"
2280 tm_file="${tm_file} elfos.h newlib-stdint.h ia64/sysv4.h ia64/elf.h"
2281 tmake_file="ia64/t-ia64"
2282 target_cpu_default="0"
2283 if test x$gas = xyes
2285 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2287 if test x$gnu_ld = xyes
2289 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
2293 tm_file="${tm_file} elfos.h ${fbsd_tm_file} ia64/sysv4.h ia64/freebsd.h"
2294 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2295 tmake_file="${tmake_file} ia64/t-ia64"
2298 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h ia64/sysv4.h ia64/linux.h"
2299 tmake_file="${tmake_file} ia64/t-ia64 ia64/t-linux t-libunwind"
2300 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2303 tm_file="${tm_file} elfos.h ia64/sysv4.h ia64/hpux.h"
2304 tmake_file="ia64/t-ia64 ia64/t-hpux t-slibgcc"
2305 target_cpu_default="MASK_GNU_AS"
2306 case x$enable_threads in
2312 c_target_objs="ia64-c.o"
2313 cxx_target_objs="ia64-c.o"
2314 extra_options="${extra_options} ia64/ilp32.opt hpux11.opt"
2316 tm_file="${tm_file} hpux-stdint.h"
2319 tm_file="${tm_file} ia64/hpux-unix2003.h"
2324 tm_file="${tm_file} elfos.h ia64/sysv4.h vms/vms.h ia64/vms.h"
2325 tmake_file="${tmake_file} ia64/t-ia64"
2326 target_cpu_default="0"
2327 if test x$gas = xyes
2329 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2331 extra_options="${extra_options} ia64/vms.opt"
2334 tm_file="elfos.h newlib-stdint.h iq2000/iq2000.h"
2335 out_file=iq2000/iq2000.cc
2336 md_file=iq2000/iq2000.md
2339 tm_file="elfos.h ${tm_file} newlib-stdint.h"
2340 tmake_file="${tmake_file} lm32/t-lm32"
2343 tm_file="elfos.h ${tm_file} lm32/rtems.h rtems.h newlib-stdint.h"
2344 tmake_file="${tmake_file} lm32/t-lm32"
2345 tmake_file="${tmake_file} lm32/t-rtems"
2348 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h lm32/uclinux-elf.h"
2349 tmake_file="${tmake_file} lm32/t-lm32"
2352 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2355 tm_file="elfos.h newlib-stdint.h m32r/little.h ${tm_file}"
2357 m68k-*-elf* | fido-*-elf*)
2360 # Check that $with_cpu makes sense.
2365 echo "Cannot accept --with-cpu=$with_cpu"
2372 default_m68k_cpu=68020
2376 tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h elfos.h newlib-stdint.h m68k/m68kemb.h m68k/m68020-elf.h"
2377 tm_defines="${tm_defines} MOTOROLA=1"
2378 tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-m68kelf"
2379 # Add multilibs for targets other than fido.
2384 tmake_file="$tmake_file m68k/t-mlibs"
2389 default_m68k_cpu=68020
2391 tm_file="${tm_file} elfos.h ${nbsd_tm_file} m68k/netbsd-elf.h"
2392 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2393 tm_defines="${tm_defines} MOTOROLA=1 CHAR_FAST8=1 SHORT_FAST16=1"
2395 m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux
2396 # with uClibc, using the new GNU/Linux-style
2398 default_m68k_cpu=68020
2400 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"
2401 extra_options="${extra_options} m68k/uclinux.opt"
2402 tm_defines="${tm_defines} MOTOROLA=1"
2403 tmake_file="m68k/t-floatlib m68k/t-uclinux m68k/t-mlibs"
2405 m68k-*-linux*) # Motorola m68k's running GNU/Linux
2406 # with ELF format using glibc 2
2407 # aka the GNU/Linux C library 6.
2408 default_m68k_cpu=68020
2410 with_arch=${with_arch:-m68k}
2411 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h m68k/linux.h ./sysroot-suffix.h"
2412 extra_options="${extra_options} m68k/ieee.opt"
2413 tm_defines="${tm_defines} MOTOROLA=1"
2414 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-linux m68k/t-mlibs"
2417 default_m68k_cpu=68020
2419 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-m68kbare m68k/t-crtstuff m68k/t-rtems m68k/t-mlibs"
2420 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"
2421 tm_defines="${tm_defines} MOTOROLA=1"
2424 tm_file="elfos.h newlib-stdint.h ${tm_file} mcore/mcore-elf.h"
2425 tmake_file=mcore/t-mcore
2431 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2434 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2437 tm_file="${tm_file} gnu-user.h linux.h microblaze/linux.h"
2438 tm_file="${tm_file} glibc-stdint.h"
2439 c_target_objs="${c_target_objs} microblaze-c.o"
2440 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2441 tmake_file="${tmake_file} microblaze/t-microblaze"
2442 tmake_file="${tmake_file} microblaze/t-microblaze-linux"
2444 microblaze*-*-rtems*)
2447 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2450 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2453 tm_file="${tm_file}"
2454 tm_file="${tm_file} microblaze/rtems.h rtems.h newlib-stdint.h"
2455 c_target_objs="${c_target_objs} microblaze-c.o"
2456 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2457 tmake_file="${tmake_file} microblaze/t-microblaze"
2458 tmake_file="${tmake_file} microblaze/t-rtems"
2463 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2466 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2469 tm_file="${tm_file} newlib-stdint.h"
2470 c_target_objs="${c_target_objs} microblaze-c.o"
2471 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2472 tmake_file="${tmake_file} microblaze/t-microblaze"
2475 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} riscv/linux.h"
2476 case "x${enable_multilib}" in
2478 xyes) tmake_file="${tmake_file} riscv/t-linux-multilib" ;;
2479 *) echo "Unknown value for enable_multilib"; exit 1
2481 tmake_file="${tmake_file} riscv/t-riscv riscv/t-linux"
2482 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
2486 riscv32be-*|riscv64be-*)
2487 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2490 # Force .init_array support. The configure script cannot always
2491 # automatically detect that GAS supports it, yet we require it.
2492 gcc_cv_initfini_array=yes
2494 riscv*-*-elf* | riscv*-*-rtems*)
2495 tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h"
2498 tm_file="${tm_file} riscv/rtems.h rtems.h"
2499 tmake_file="${tmake_file} riscv/t-rtems"
2502 if test "x${with_multilib_generator}" = xdefault; then
2503 case "x${enable_multilib}" in
2505 xyes) tmake_file="${tmake_file} riscv/t-elf-multilib" ;;
2506 *) echo "Unknown value for enable_multilib"; exit 1
2510 tmake_file="${tmake_file} riscv/t-riscv"
2514 riscv32be-*|riscv64be-*)
2515 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2518 # Force .init_array support. The configure script cannot always
2519 # automatically detect that GAS supports it, yet we require it.
2520 gcc_cv_initfini_array=yes
2523 tm_file="${tm_file} elfos.h ${fbsd_tm_file} riscv/freebsd.h"
2524 tmake_file="${tmake_file} riscv/t-riscv"
2528 riscv32be-*|riscv64be-*)
2529 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2532 # Force .init_array support. The configure script cannot always
2533 # automatically detect that GAS supports it, yet we require it.
2534 gcc_cv_initfini_array=yes
2537 loongarch*-*-linux*)
2538 tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file}"
2539 tm_file="${tm_file} loongarch/gnu-user.h loongarch/linux.h loongarch/loongarch-driver.h"
2540 extra_options="${extra_options} linux-android.opt"
2541 tmake_file="${tmake_file} loongarch/t-multilib loongarch/t-linux"
2545 # Force .init_array support. The configure script cannot always
2546 # automatically detect that GAS supports it, yet we require it.
2547 gcc_cv_initfini_array=yes
2551 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2552 tm_file="${tm_file} loongarch/elf.h loongarch/linux.h loongarch/loongarch-driver.h"
2553 tmake_file="${tmake_file} loongarch/t-multilib loongarch/t-linux"
2557 # For .init_array support. The configure script cannot always
2558 # automatically detect that GAS supports it, yet we require it.
2559 gcc_cv_initfini_array=yes
2562 mips*-*-netbsd*) # NetBSD/mips, either endian.
2563 target_cpu_default="MASK_ABICALLS"
2564 tm_file="elfos.h ${tm_file} mips/elf.h ${nbsd_tm_file} mips/netbsd.h"
2565 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
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-img-linux"
2571 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2572 with_arch_32="mips32r6"
2573 with_arch_64="mips64r6"
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 mips/mti-linux.h"
2579 extra_options="${extra_options} linux-android.opt"
2580 tmake_file="${tmake_file} mips/t-mti-linux"
2581 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2582 with_arch_32="mips32r2"
2583 with_arch_64="mips64r2"
2587 mips*-*-linux*) # Linux MIPS, either endian.
2588 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"
2589 extra_options="${extra_options} linux-android.opt"
2592 default_mips_arch=mips32r6
2595 default_mips_arch=mips32r2
2598 default_mips_arch=mips32
2600 mips64el-st-linux-gnu)
2601 default_mips_abi=n32
2602 tm_file="${tm_file} mips/st.h"
2603 tmake_file="${tmake_file} mips/t-st"
2604 enable_mips_multilibs="yes"
2606 mips64octeon*-*-linux*)
2607 default_mips_abi=n32
2608 tm_defines="${tm_defines} MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\""
2609 target_cpu_default=MASK_SOFT_FLOAT_ABI
2610 enable_mips_multilibs="yes"
2612 mipsisa64r6*-*-linux-gnuabi64)
2614 default_mips_arch=mips64r6
2615 enable_mips_multilibs="yes"
2617 mipsisa64r6*-*-linux*)
2618 default_mips_abi=n32
2619 default_mips_arch=mips64r6
2620 enable_mips_multilibs="yes"
2622 mipsisa64r2*-*-linux-gnuabi64)
2624 default_mips_arch=mips64r2
2625 enable_mips_multilibs="yes"
2627 mipsisa64r2*-*-linux*)
2628 default_mips_abi=n32
2629 default_mips_arch=mips64r2
2630 enable_mips_multilibs="yes"
2632 mips64*-*-linux-gnuabi64 | mipsisa64*-*-linux-gnuabi64)
2634 enable_mips_multilibs="yes"
2636 mips64*-*-linux* | mipsisa64*-*-linux*)
2637 default_mips_abi=n32
2638 enable_mips_multilibs="yes"
2641 if test x$enable_targets = xall; then
2642 enable_mips_multilibs="yes"
2644 if test x$enable_mips_multilibs = xyes; then
2645 tmake_file="${tmake_file} mips/t-linux64"
2649 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2650 tmake_file="mips/t-mti-elf"
2651 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2652 with_arch_32="mips32r2"
2653 with_arch_64="mips64r2"
2656 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2657 tmake_file="mips/t-img-elf"
2658 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2659 with_arch_32="mips32r6"
2660 with_arch_64="mips64r6"
2663 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h"
2664 tmake_file="mips/t-sde"
2665 extra_options="${extra_options} mips/sde.opt"
2666 case "${with_newlib}" in
2668 # newlib / libgloss.
2671 # MIPS toolkit libraries.
2672 tm_file="$tm_file mips/sdemtk.h"
2673 tmake_file="$tmake_file mips/t-sdemtk"
2674 case ${enable_threads} in
2676 thread_file='mipssde'
2683 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2686 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2689 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32 MIPS_ABI_DEFAULT=ABI_32"
2692 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6 MIPS_ABI_DEFAULT=ABI_N32"
2695 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2 MIPS_ABI_DEFAULT=ABI_N32"
2698 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_ABI_DEFAULT=ABI_N32"
2702 mipsisa32-*-elf* | mipsisa32el-*-elf* | \
2703 mipsisa32r2-*-elf* | mipsisa32r2el-*-elf* | \
2704 mipsisa32r6-*-elf* | mipsisa32r6el-*-elf* | \
2705 mipsisa64-*-elf* | mipsisa64el-*-elf* | \
2706 mipsisa64r2-*-elf* | mipsisa64r2el-*-elf* | \
2707 mipsisa64r6-*-elf* | mipsisa64r6el-*-elf*)
2708 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2709 tmake_file="mips/t-isa3264"
2712 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6"
2715 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2"
2718 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32"
2721 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6"
2724 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2"
2727 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64"
2731 mipsisa32*-*-elfoabi*)
2732 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_32"
2733 tm_file="${tm_file} mips/elfoabi.h"
2735 mipsisa64*-*-elfoabi*)
2736 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_O64"
2737 tm_file="${tm_file} mips/elfoabi.h"
2740 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2744 mipsisa64sr71k-*-elf*)
2745 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2746 tmake_file=mips/t-sr71k
2747 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sr71000\\\" MIPS_ABI_DEFAULT=ABI_EABI"
2749 mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*)
2750 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2751 tmake_file="mips/t-elf mips/t-sb1"
2752 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sb1\\\" MIPS_ABI_DEFAULT=ABI_O64"
2754 mips-*-elf* | mipsel-*-elf* | mipsr5900-*-elf* | mipsr5900el-*-elf*)
2755 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2756 tmake_file="mips/t-elf"
2758 mips64r5900-*-elf* | mips64r5900el-*-elf*)
2759 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h"
2760 tmake_file="mips/t-elf"
2761 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_N32"
2763 mips64-*-elf* | mips64el-*-elf*)
2764 tm_file="elfos.h newlib-stdint.h ${tm_file} 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"
2768 mips64vr-*-elf* | mips64vrel-*-elf*)
2769 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/vr.h mips/elf.h"
2770 tmake_file=mips/t-vr
2771 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2773 mips64orion-*-elf* | mips64orionel-*-elf*)
2774 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elforion.h mips/elf.h"
2775 tmake_file="mips/t-elf"
2776 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_O64"
2779 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/rtems.h rtems.h"
2780 tmake_file="${tmake_file} mips/t-elf mips/t-rtems"
2783 tm_file="elfos.h ${tm_file} mips/elf.h vx-common.h vxworks.h mips/vxworks.h"
2784 tmake_file="${tmake_file} mips/t-vxworks"
2786 mipstx39-*-elf* | mipstx39el-*-elf*)
2787 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/r3900.h mips/elf.h"
2788 tmake_file="mips/t-r3900"
2790 mmix-knuth-mmixware)
2791 tm_file="${tm_file} newlib-stdint.h"
2795 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2800 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2801 c_target_objs="msp430-c.o"
2802 cxx_target_objs="msp430-c.o"
2803 tmake_file="${tmake_file} msp430/t-msp430"
2804 extra_objs="${extra_objs} msp430-devices.o"
2805 extra_gcc_objs="driver-msp430.o msp430-devices.o"
2806 # Enable .init_array unless it has been explicitly disabled.
2807 # The MSP430 EABI mandates the use of .init_array, and the Newlib CRT
2808 # code since mid-2019 expects it.
2809 if test x${disable_initfini_array} != xyes; then
2810 gcc_cv_initfini_array=yes
2814 # __cxa_atexit increases code size, and we don't need to support
2815 # dynamic shared objects on MSP430, so regular Newlib atexit is a
2816 # fine replacement as it also supports registration of more than 32
2818 default_use_cxa_atexit=no
2819 # This target does not match the generic *-*-elf case above which
2820 # sets use_gcc_stdint=wrap, so explicitly set it here.
2826 target_cpu_default="0"
2827 tm_defines="${tm_defines}"
2832 target_cpu_default="${target_cpu_default}|MASK_BIG_ENDIAN"
2833 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2838 tm_file="elfos.h newlib-stdint.h ${tm_file} nds32/elf.h nds32/nds32_intrinsic.h"
2839 tmake_file="nds32/t-nds32 nds32/t-elf"
2842 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h nds32/linux.h nds32/nds32_intrinsic.h"
2843 tmake_file="${tmake_file} nds32/t-nds32 nds32/t-linux"
2844 gcc_cv_initfini_array=yes
2848 # Handle --enable-default-relax setting.
2849 if test x${enable_default_relax} = xyes; then
2850 tm_defines="${tm_defines} TARGET_DEFAULT_RELAX=1"
2852 # Handle --with-ext-dsp
2853 if test x${with_ext_dsp} = xyes; then
2854 tm_defines="${tm_defines} TARGET_DEFAULT_EXT_DSP=1"
2858 tm_file="elfos.h ${tm_file}"
2859 tmake_file="${tmake_file} nios2/t-nios2"
2862 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h nios2/linux.h "
2865 tm_file="${tm_file} newlib-stdint.h nios2/elf.h"
2866 extra_options="${extra_options} nios2/elf.opt"
2869 tm_file="${tm_file} newlib-stdint.h nios2/rtems.h rtems.h"
2870 tmake_file="${tmake_file} t-rtems nios2/t-rtems"
2875 tm_file="${tm_file} newlib-stdint.h"
2877 tmake_file="nvptx/t-nvptx"
2878 if test x$enable_as_accelerator = xyes; then
2879 extra_programs="${extra_programs} mkoffload\$(exeext)"
2880 tm_file="${tm_file} nvptx/offload.h"
2884 tm_file="elfos.h ${tm_file}"
2885 tmake_file="${tmake_file} or1k/t-or1k"
2886 # Force .init_array support. The configure script cannot always
2887 # automatically detect that GAS supports it, yet we require it.
2888 gcc_cv_initfini_array=yes
2890 # Handle --with-multilib-list=...
2891 or1k_multilibs="${with_multilib_list}"
2892 if test "$or1k_multilibs" = "default"; then
2893 or1k_multilibs="mcmov,msoft-mul,msoft-div"
2895 or1k_multilibs=`echo $or1k_multilibs | sed -e 's/,/ /g'`
2896 for or1k_multilib in ${or1k_multilibs}; do
2897 case ${or1k_multilib} in
2898 mcmov | msext | msfimm | \
2900 mhard-float | mdouble-float | munordered-float | msoft-float | \
2901 mhard-div | mhard-mul | \
2902 msoft-div | msoft-mul )
2903 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${or1k_multilib}"
2906 echo "--with-multilib-list=${with_multilib_list} not supported."
2910 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2914 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h"
2915 tm_file="${tm_file} or1k/linux.h"
2918 tm_file="${tm_file} newlib-stdint.h or1k/elf.h"
2919 extra_options="${extra_options} or1k/elf.opt"
2922 tm_file="${tm_file} newlib-stdint.h or1k/rtems.h rtems.h"
2923 tmake_file="${tmake_file} or1k/t-rtems"
2928 tm_file="${tm_file} newlib-stdint.h"
2931 # port not yet contributed
2932 #powerpc-*-openbsd*)
2933 # tmake_file="${tmake_file} rs6000/t-fprules"
2937 extra_options="${extra_options} ${cpu_type}/darwin.opt"
2939 *-darwin1[0-9]* | *-darwin9*)
2940 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2941 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2944 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2945 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2948 tm_file="${tm_file} ${cpu_type}/darwin7.h"
2951 # Earlier - ingle arch, with 32b only
2952 # OS X 10.0, the first edition is Darwin4
2955 tmake_file="${tmake_file} t-slibgcc"
2957 powerpc64-*-darwin*)
2958 extra_options="${extra_options} ${cpu_type}/darwin.opt"
2959 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
2960 tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h"
2962 powerpc*-*-freebsd*)
2963 tm_file="${tm_file} elfos.h gnu-user.h ${fbsd_tm_file} rs6000/sysv4.h"
2964 extra_options="${extra_options} rs6000/sysv4.opt"
2965 tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
2968 tm_file="${tm_file} rs6000/sysv4le.h" ;;
2972 tm_file="${tm_file} rs6000/default64.h rs6000/freebsd64.h"
2973 tmake_file="${tmake_file} rs6000/t-freebsd64"
2974 extra_options="${extra_options} rs6000/linux64.opt"
2975 if test $fbsd_major -ge 13; then
2976 tm_defines="${tm_defines} TARGET_FREEBSD32_SECURE_PLT=1"
2980 if test $fbsd_major -ge 13; then
2981 tm_file="rs6000/secureplt.h ${tm_file}"
2983 tm_file="${tm_file} rs6000/freebsd.h"
2988 tm_file="${tm_file} elfos.h gnu-user.h ${nbsd_tm_file} freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h"
2989 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2990 tmake_file="${tmake_file} rs6000/t-netbsd"
2991 extra_options="${extra_options} rs6000/sysv4.opt"
2993 powerpc-*-eabisimaltivec*)
2994 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"
2995 extra_options="${extra_options} rs6000/sysv4.opt"
2996 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
3000 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"
3001 extra_options="${extra_options} rs6000/sysv4.opt"
3002 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3006 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h"
3007 extra_options="${extra_options} rs6000/sysv4.opt"
3008 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3010 powerpc-*-eabialtivec*)
3011 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabialtivec.h"
3012 extra_options="${extra_options} rs6000/sysv4.opt"
3013 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
3017 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h"
3018 extra_options="${extra_options} rs6000/sysv4.opt"
3019 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3023 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"
3024 extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
3025 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-rtems rs6000/t-ppccomm"
3028 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h rs6000/sysv4.h"
3029 extra_options="${extra_options} rs6000/sysv4.opt"
3030 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm"
3031 extra_objs="$extra_objs rs6000-linux.o"
3034 tm_file="${tm_file} rs6000/sysv4le.h" ;;
3036 case ${target}:${with_cpu} in
3037 powerpc64*: | powerpc64*:native) cpu_is_64bit=yes ;;
3039 maybe_biarch=${cpu_is_64bit}
3040 case ${enable_targets} in
3041 *powerpc64*) maybe_biarch=yes ;;
3042 all) maybe_biarch=yes ;;
3044 case ${target}:${enable_targets}:${maybe_biarch} in
3045 powerpc64-* | powerpc-*:*:yes | *:*powerpc64-*:yes | *:all:yes \
3046 | powerpc64le*:*powerpcle* | powerpc64le*:*powerpc-* \
3047 | powerpcle-*:*powerpc64le*:yes)
3048 if test x$cpu_is_64bit = xyes; then
3049 tm_file="${tm_file} rs6000/default64.h"
3051 tm_file="rs6000/biarch64.h ${tm_file} rs6000/linux64.h glibc-stdint.h"
3052 tmake_file="$tmake_file rs6000/t-linux64"
3055 tmake_file="$tmake_file rs6000/t-linux64le"
3056 case ${enable_targets} in
3057 all | *powerpc64-* | *powerpc-*)
3058 tmake_file="$tmake_file rs6000/t-linux64lebe" ;;
3061 case ${enable_targets} in
3062 all | *powerpc64le-* | *powerpcle-*)
3063 tmake_file="$tmake_file rs6000/t-linux64bele" ;;
3066 extra_options="${extra_options} rs6000/linux64.opt"
3069 tm_file="${tm_file} rs6000/default64.h rs6000/linux64.h glibc-stdint.h"
3070 extra_options="${extra_options} rs6000/linux64.opt"
3071 tmake_file="${tmake_file} rs6000/t-linux"
3074 tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
3075 tmake_file="${tmake_file} rs6000/t-ppcos rs6000/t-linux"
3079 powerpc*-*-linux*ppc476*)
3080 tm_file="${tm_file} rs6000/476.h"
3081 extra_options="${extra_options} rs6000/476.opt" ;;
3082 powerpc*-*-linux*altivec*)
3083 tm_file="${tm_file} rs6000/linuxaltivec.h" ;;
3087 enable_secureplt=yes ;;
3089 if test x${enable_secureplt} = xyes; then
3090 tm_file="rs6000/secureplt.h ${tm_file}"
3093 powerpc*-wrs-vxworks7r*)
3095 # Wind River 7 post SR0600 is mostly like Linux so we setup
3096 # our config in a very similar fashion and adjust to a few
3099 # The system compiler is configured with secureplt by default.
3100 tm_file="${tm_file} rs6000/secureplt.h"
3102 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h"
3103 tm_file="${tm_file} rs6000/sysv4.h rs6000/biarch64.h rs6000/default64.h rs6000/linux64.h"
3104 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3106 extra_options="${extra_options} rs6000/sysv4.opt linux.opt rs6000/linux64.opt"
3108 tmake_file="${tmake_file} t-linux rs6000/t-linux64 rs6000/t-fprules rs6000/t-ppccomm"
3109 tmake_file="${tmake_file} rs6000/t-vxworks"
3111 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
3112 extra_objs="$extra_objs linux.o rs6000-linux.o"
3114 powerpc-wrs-vxworks*)
3115 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h rs6000/sysv4.h"
3116 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm rs6000/t-vxworks"
3117 extra_options="${extra_options} rs6000/sysv4.opt vxworks-smp.opt"
3118 extra_headers="${extra_headers} ppc-asm.h"
3121 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksmils.h"
3122 tmake_file="${tmake_file} rs6000/t-vxworksmils"
3125 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksae.h"
3126 tmake_file="${tmake_file} rs6000/t-vxworksae"
3129 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3135 tm_file="${tm_file} elfos.h gnu-user.h rs6000/sysv4.h rs6000/lynx.h lynx.h"
3136 tmake_file="t-lynx rs6000/t-lynx"
3137 extra_options="${extra_options} rs6000/sysv4.opt lynx.opt"
3143 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h"
3144 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3145 extra_options="${extra_options} rs6000/sysv4.opt"
3147 powerpcle-*-eabisim*)
3148 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"
3149 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3150 extra_options="${extra_options} rs6000/sysv4.opt"
3154 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"
3155 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3156 extra_options="${extra_options} rs6000/sysv4.opt"
3160 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3161 tmake_file="${tmake_file} pru/t-pru"
3162 extra_objs="pru-pragma.o pru-passes.o"
3165 rs6000-ibm-aix7.1.* | powerpc-ibm-aix7.1.*)
3166 tmake_file="rs6000/t-aix52 t-slibgcc"
3167 if test x$cpu_is_64bit = xyes; then
3168 tm_file="${tm_file} rs6000/biarch64.h"
3169 tmake_file="rs6000/t-aix64 t-slibgcc"
3171 tm_file="${tm_file} rs6000/aix.h rs6000/aix71.h rs6000/xcoff.h rs6000/aix-stdint.h"
3172 extra_options="${extra_options} rs6000/aix64.opt"
3176 default_use_cxa_atexit=yes
3178 rs6000-ibm-aix7.2.* | powerpc-ibm-aix7.2.*)
3179 tmake_file="rs6000/t-aix52 t-slibgcc"
3180 if test x$cpu_is_64bit = xyes; then
3181 tm_file="${tm_file} rs6000/biarch64.h"
3182 tmake_file="rs6000/t-aix64 t-slibgcc"
3184 tm_file="${tm_file} rs6000/aix.h rs6000/aix72.h rs6000/xcoff.h rs6000/aix-stdint.h"
3185 extra_options="${extra_options} rs6000/aix64.opt"
3189 default_use_cxa_atexit=yes
3191 rs6000-ibm-aix[789].* | powerpc-ibm-aix[789].*)
3192 tmake_file="rs6000/t-aix52 t-slibgcc"
3193 if test x$cpu_is_64bit = xyes; then
3194 tm_file="${tm_file} rs6000/biarch64.h"
3195 tmake_file="rs6000/t-aix64 t-slibgcc"
3197 tm_file="${tm_file} rs6000/aix.h rs6000/aix73.h rs6000/xcoff.h rs6000/aix-stdint.h"
3198 extra_options="${extra_options} rs6000/aix64.opt"
3202 default_use_cxa_atexit=yes
3205 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3206 target_has_targetm_common=no
3207 c_target_objs="rl78-c.o"
3208 cxx_target_objs="rl78-c.o"
3209 tmake_file="${tmake_file} rl78/t-rl78"
3212 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3213 tmake_file="${tmake_file} rx/t-rx"
3214 extra_options="${extra_options} rx/elf.opt"
3217 tm_file="elfos.h linux.h glibc-stdint.h rx/linux.h ../../libgcc/config/rx/rx-abi.h"
3218 tmake_file="${tmake_file} rx/t-linux"
3221 tm_file="s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3222 c_target_objs="${c_target_objs} s390-c.o"
3223 cxx_target_objs="${cxx_target_objs} s390-c.o"
3224 if test x$enable_targets = xall; then
3225 tmake_file="${tmake_file} s390/t-linux64"
3227 tmake_file="${tmake_file} s390/t-s390"
3230 tm_file="s390/s390x.h s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3231 tm_p_file="linux-protos.h 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
3237 tmake_file="${tmake_file} s390/t-linux64 s390/t-s390"
3240 tm_file="s390/s390x.h s390/s390.h elfos.h glibc-stdint.h s390/tpf.h"
3241 tm_p_file=s390/s390-protos.h
3242 c_target_objs="${c_target_objs} s390-c.o"
3243 cxx_target_objs="${cxx_target_objs} s390-c.o"
3244 md_file=s390/s390.md
3245 extra_modes=s390/s390-modes.def
3246 out_file=s390/s390.cc
3248 extra_options="${extra_options} s390/tpf.opt"
3249 tmake_file="${tmake_file} s390/t-s390"
3251 sh-*-elf* | sh[12346l]*-*-elf* | \
3252 sh-*-linux* | sh[2346lbe]*-*-linux* | \
3253 sh-*-netbsdelf* | shl*-*-netbsdelf*)
3254 tmake_file="${tmake_file} sh/t-sh sh/t-elf"
3255 if test x${with_endian} = x; then
3257 sh[1234]*be-*-* | sh[1234]*eb-*-*) with_endian=big ;;
3258 shbe-*-* | sheb-*-*) with_endian=big,little ;;
3259 sh[1234]l* | sh[34]*-*-linux*) with_endian=little ;;
3260 shl* | sh*-*-linux* | \
3261 sh-superh-elf) with_endian=little,big ;;
3262 sh[1234]*-*-*) with_endian=big ;;
3263 *) with_endian=big,little ;;
3266 # TM_ENDIAN_CONFIG is used by t-sh to determine multilibs.
3267 # First word : the default endian.
3268 # Second word: the secondary endian (optional).
3269 case ${with_endian} in
3270 big) TM_ENDIAN_CONFIG=mb ;;
3271 little) TM_ENDIAN_CONFIG=ml ;;
3272 big,little) TM_ENDIAN_CONFIG="mb ml" ;;
3273 little,big) TM_ENDIAN_CONFIG="ml mb" ;;
3274 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
3276 case ${with_endian} in
3277 little*) tm_file="sh/little.h ${tm_file}" ;;
3279 tm_file="${tm_file} elfos.h sh/elf.h"
3281 sh*-*-linux*) tmake_file="${tmake_file} sh/t-linux"
3282 if test x$enable_fdpic = xyes; then
3283 tm_defines="$tm_defines FDPIC_DEFAULT=1"
3285 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h sh/linux.h" ;;
3287 tm_file="${tm_file} ${nbsd_tm_file} sh/netbsd-elf.h"
3288 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3291 sh*-superh-elf) if test x$with_libgloss != xno; then
3293 tm_file="${tm_file} sh/newlib.h"
3295 tm_file="${tm_file} sh/embed-elf.h"
3296 tm_file="${tm_file} sh/superh.h"
3297 extra_options="${extra_options} sh/superh.opt" ;;
3298 *) if test x$with_newlib = xyes \
3299 && test x$with_libgloss = xyes; then
3300 tm_file="${tm_file} sh/newlib.h"
3302 tm_file="${tm_file} sh/embed-elf.h" ;;
3308 tm_file="${tm_file} newlib-stdint.h"
3311 # sed el/eb endian suffixes away to avoid confusion with sh[23]e
3312 case `echo ${target} | sed 's/e[lb]-/-/'` in
3313 sh4a_single_only*) sh_cpu_target=sh4a-single-only ;;
3314 sh4a_single*) sh_cpu_target=sh4a-single ;;
3315 sh4a_nofpu*) sh_cpu_target=sh4a-nofpu ;;
3316 sh4al) sh_cpu_target=sh4al ;;
3317 sh4a*) sh_cpu_target=sh4a ;;
3318 sh4_single_only*) sh_cpu_target=sh4-single-only ;;
3319 sh4_single*) sh_cpu_target=sh4-single ;;
3320 sh4_nofpu*) sh_cpu_target=sh4-nofpu ;;
3321 sh4* | sh-superh-*) sh_cpu_target=sh4 ;;
3322 sh3e*) sh_cpu_target=sh3e ;;
3323 sh*-*-netbsd* | sh3*) sh_cpu_target=sh3 ;;
3324 sh2a_single_only*) sh_cpu_target=sh2a-single-only ;;
3325 sh2a_single*) sh_cpu_target=sh2a-single ;;
3326 sh2a_nofpu*) sh_cpu_target=sh2a-nofpu ;;
3327 sh2a*) sh_cpu_target=sh2a ;;
3328 sh2e*) sh_cpu_target=sh2e ;;
3329 sh2*) sh_cpu_target=sh2 ;;
3330 *) sh_cpu_target=sh1 ;;
3332 # did the user say --without-fp ?
3333 if test x$with_fp = xno; then
3334 case ${sh_cpu_target} in
3336 sh4a* ) sh_cpu_target=sh4a-nofpu ;;
3337 sh4*) sh_cpu_target=sh4-nofpu ;;
3338 sh3*) sh_cpu_target=sh3 ;;
3339 sh2a*) sh_cpu_target=sh2a-nofpu ;;
3340 sh2*) sh_cpu_target=sh2 ;;
3341 *) echo --without-fp not available for $target: ignored
3343 tm_defines="$tm_defines STRICT_NOFPU=1"
3345 sh_cpu_default="`echo $with_cpu|sed s/^m/sh/|tr A-Z_ a-z-`"
3346 case $sh_cpu_default in
3347 sh2a-single-only | sh2a-single | sh2a-nofpu | sh2a | \
3348 sh4a-single-only | sh4a-single | sh4a-nofpu | sh4a | sh4al | \
3349 sh4-single-only | sh4-single | sh4-nofpu | sh4 | sh4-300 | \
3350 sh3e | sh3 | sh2e | sh2 | sh1) ;;
3351 "") sh_cpu_default=${sh_cpu_target} ;;
3352 *) echo "with_cpu=$with_cpu not supported"; exit 1 ;;
3354 sh_multilibs=${with_multilib_list}
3355 if test "$sh_multilibs" = "default" ; then
3357 sh[1234]*) sh_multilibs=${sh_cpu_target} ;;
3358 sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
3359 sh*-*-linux*) sh_multilibs=m1,m2,m2a,m3e,m4 ;;
3360 sh*-*-netbsd*) sh_multilibs=m3,m3e,m4 ;;
3361 *) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single ;;
3363 if test x$with_fp = xno; then
3364 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`"
3367 target_cpu_default=SELECT_`echo ${sh_cpu_default}|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`
3368 tm_defines=${tm_defines}' SH_MULTILIB_CPU_DEFAULT=\"'`echo $sh_cpu_default|sed s/sh/m/`'\"'
3369 tm_defines="$tm_defines SUPPORT_`echo $sh_cpu_default | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3370 sh_multilibs=`echo $sh_multilibs | sed -e 's/,/ /g' -e 's/^[Ss][Hh]/m/' -e 's/ [Ss][Hh]/ m/g' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-`
3371 for sh_multilib in ${sh_multilibs}; do
3372 case ${sh_multilib} in
3373 m1 | m2 | m2e | m3 | m3e | \
3374 m4 | m4-single | m4-single-only | m4-nofpu | m4-300 |\
3375 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al | \
3376 m2a | m2a-single | m2a-single-only | m2a-nofpu)
3377 # TM_MULTILIB_CONFIG is used by t-sh for the non-endian multilib definition
3378 # It is passed to MULTIILIB_OPTIONS verbatim.
3379 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG}/${sh_multilib}"
3380 tm_defines="$tm_defines SUPPORT_`echo $sh_multilib | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3382 \!*) # TM_MULTILIB_EXCEPTIONS_CONFIG is used by t-sh
3383 # It is passed the MULTILIB_EXCEPTIONS verbatim.
3384 TM_MULTILIB_EXCEPTIONS_CONFIG="${TM_MULTILIB_EXCEPTIONS_CONFIG} `echo $sh_multilib | sed 's/^!//'`" ;;
3386 echo "with_multilib_list=${sh_multilib} not supported."
3391 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's:^/::'`
3392 if test x${enable_incomplete_targets} = xyes ; then
3393 tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1"
3395 tm_file="$tm_file ./sysroot-suffix.h"
3396 tmake_file="$tmake_file t-sysroot-suffix"
3399 tmake_file="${tmake_file} sh/t-sh sh/t-rtems"
3400 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h newlib-stdint.h"
3403 tmake_file="$tmake_file sh/t-sh sh/t-vxworks"
3404 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h vx-common.h vxworks.h sh/vxworks.h"
3407 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp-elf.h"
3410 tmake_file="sparc/t-sparc sparc/t-leon"
3413 tmake_file="sparc/t-sparc sparc/t-leon3"
3416 tmake_file="sparc/t-sparc sparc/t-elf"
3421 tm_file="${tm_file} elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
3422 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
3425 tm_file="${tm_file} elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
3426 extra_options="${extra_options} sparc/long-double-switch.opt"
3429 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon"
3432 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon3"
3435 tmake_file="${tmake_file} sparc/t-sparc"
3438 if test x$enable_targets = xall; then
3439 tm_file="sparc/biarch64.h ${tm_file} sparc/linux64.h"
3440 tmake_file="${tmake_file} sparc/t-linux64"
3442 tm_file="${tm_file} sparc/linux.h"
3443 tmake_file="${tmake_file} sparc/t-linux"
3447 tm_file="${tm_file} elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3448 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3449 extra_options="${extra_options} sparc/long-double-switch.opt"
3450 tmake_file="${tmake_file} sparc/t-sparc"
3453 tm_file="sparc/biarch64.h ${tm_file} ${sol2_tm_file} sparc/tso.h"
3455 sparc64-*-* | sparcv9-*-*)
3456 tm_file="sparc/default64.h ${tm_file}"
3459 test x$with_cpu != x || with_cpu=v9
3462 tmake_file="${tmake_file} sparc/t-sparc sparc/t-sol2"
3465 tm_file="${tm_file} elfos.h sparc/sysv4.h vx-common.h vxworks.h sparc/vxworks.h"
3466 tmake_file="${tmake_file} sparc/t-sparc sparc/t-vxworks"
3469 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h"
3470 extra_options="${extra_options}"
3471 tmake_file="${tmake_file} sparc/t-sparc"
3474 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h sparc/rtemself.h rtems.h"
3475 extra_options="${extra_options}"
3476 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
3479 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"
3480 extra_options="${extra_options} sparc/long-double-switch.opt"
3481 tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
3483 sparc64-*-freebsd*|ultrasparc-*-freebsd*)
3484 tm_file="${tm_file} ${fbsd_tm_file} elfos.h sparc/sysv4.h sparc/freebsd.h"
3485 extra_options="${extra_options} sparc/long-double-switch.opt"
3486 case "x$with_cpu" in
3488 x) with_cpu=ultrasparc ;;
3489 *) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
3491 tmake_file="${tmake_file} sparc/t-sparc"
3494 tm_file="sparc/biarch64.h ${tm_file}"
3495 tm_file="${tm_file} elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3496 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3497 extra_options="${extra_options} sparc/long-double-switch.opt"
3498 tmake_file="${tmake_file} sparc/t-sparc sparc/t-netbsd64"
3501 tm_file="sparc/openbsd1-64.h ${tm_file} elfos.h sparc/sysv4.h sparc/sp64-elf.h"
3502 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h sparc/openbsd64.h"
3503 extra_options="${extra_options} openbsd.opt"
3504 extra_options="${extra_options}"
3507 tmake_file="${tmake_file} sparc/t-sparc"
3510 tm_file="elfos.h ${tm_file} c6x/elf-common.h c6x/elf.h"
3511 tm_file="${tm_file} tm-dwarf2.h newlib-stdint.h"
3512 tmake_file="c6x/t-c6x c6x/t-c6x-elf"
3516 tm_file="elfos.h ${tm_file} gnu-user.h linux.h c6x/elf-common.h c6x/uclinux-elf.h"
3517 tm_file="${tm_file} tm-dwarf2.h glibc-stdint.h"
3518 tm_file="${tm_file} ./sysroot-suffix.h"
3519 tmake_file="t-sysroot-suffix t-slibgcc"
3520 tmake_file="${tmake_file} c6x/t-c6x c6x/t-c6x-elf c6x/t-c6x-uclinux"
3524 target_cpu_default="TARGET_CPU_generic"
3525 tm_file="elfos.h v850/v850.h"
3526 tm_file="${tm_file} v850/rtems.h rtems.h newlib-stdint.h"
3527 tmake_file="${tmake_file} v850/t-v850"
3528 tmake_file="${tmake_file} v850/t-rtems"
3530 c_target_objs="v850-c.o"
3531 cxx_target_objs="v850-c.o"
3536 target_cpu_default="TARGET_CPU_v850e3v5"
3539 target_cpu_default="TARGET_CPU_v850e2v3"
3542 target_cpu_default="TARGET_CPU_v850e2"
3544 v850e1-*-* | v850es-*-*)
3545 target_cpu_default="TARGET_CPU_v850e1"
3548 target_cpu_default="TARGET_CPU_v850e"
3551 target_cpu_default="TARGET_CPU_generic"
3554 tm_file="elfos.h newlib-stdint.h v850/v850.h"
3556 c_target_objs="v850-c.o"
3557 cxx_target_objs="v850-c.o"
3561 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h vax/elf.h vax/linux.h"
3562 extra_options="${extra_options} vax/elf.opt"
3565 tm_file="${tm_file} elfos.h ${nbsd_tm_file} vax/elf.h vax/netbsd-elf.h"
3566 extra_options="${extra_options} netbsd.opt netbsd-elf.opt vax/elf.opt"
3567 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
3570 tm_file="elfos.h ${tm_file} visium/elf.h newlib-stdint.h"
3571 tmake_file="visium/t-visium visium/t-crtstuff"
3574 # For historical reasons, the target files omit the 'x'.
3575 tm_file="elfos.h newlib-stdint.h stormy16/stormy16.h"
3576 tm_p_file=stormy16/stormy16-protos.h
3577 md_file=stormy16/stormy16.md
3578 out_file=stormy16/stormy16.cc
3579 extra_options=stormy16/stormy16.opt
3580 tmake_file="stormy16/t-stormy16"
3583 tm_file="${tm_file} elfos.h newlib-stdint.h xtensa/elf.h"
3584 extra_options="${extra_options} xtensa/elf.opt"
3587 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/linux.h"
3588 tmake_file="${tmake_file} xtensa/t-xtensa"
3591 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/uclinux.h"
3592 tmake_file="${tmake_file} xtensa/t-xtensa"
3593 extra_options="${extra_options} xtensa/uclinux.opt"
3596 tm_file="mn10300/mn10300.h elfos.h gnu-user.h linux.h glibc-stdint.h mn10300/linux.h"
3601 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3602 c_target_objs="m32c-pragma.o"
3603 cxx_target_objs="m32c-pragma.o"
3606 echo "*** Configuration ${target} not supported" 1>&2
3612 i[34567]86-*-linux* | x86_64-*-linux*)
3613 tmake_file="${tmake_file} i386/t-pmm_malloc i386/t-i386"
3615 i[34567]86-*-* | x86_64-*-*)
3616 tmake_file="${tmake_file} i386/t-gmm_malloc i386/t-i386"
3618 powerpc*-*-* | rs6000-*-*)
3619 tm_file="${tm_file} ${cpu_type}/option-defaults.h"
3625 tmake_file="${tmake_file} t-musl"
3628 tmake_file="${tmake_file} t-uclibc"
3632 # Assume the existence of indirect function support and allow the use of the
3633 # resolver attribute.
3635 *-*-linux*android*|*-*-linux*uclibc*|*-*-linux*musl*)
3637 *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
3639 *-*-linux* | *-*-gnu*)
3641 aarch64*-* | arm*-* | i[34567]86-* | powerpc*-* | s390*-* | sparc*-* | x86_64-* | loongarch*-*)
3642 default_gnu_indirect_function=yes
3648 if [ "$target_has_targetcm" = "no" ]; then
3649 c_target_objs="$c_target_objs default-c.o"
3650 cxx_target_objs="$cxx_target_objs default-c.o"
3653 if [ "$common_out_file" = "" ]; then
3654 if [ "$target_has_targetm_common" = "yes" ]; then
3655 common_out_file="$cpu_type/$cpu_type-common.cc"
3657 common_out_file="default-common.cc"
3661 if [ "$target_has_targetdm" = "no" ]; then
3662 d_target_objs="$d_target_objs default-d.o"
3665 if [ "$target_has_targetrustm" = "no" ]; then
3666 rust_target_objs="$rust_target_objs default-rust.o"
3669 # Support for --with-cpu and related options (and a few unrelated options,
3673 echo "--with-cpu must be passed a value" 1>&2
3678 # Set arch and cpu from ${target} and ${target_noncanonical}. Set cpu
3679 # to generic if there is no processor scheduler model for the target.
3682 arch_without_sse2=no
3683 arch_without_64bit=no
3686 if test $fbsd_major -ge 6; then
3692 arch_without_sse2=yes
3693 arch_without_64bit=yes
3698 arch_without_sse2=yes
3699 arch_without_64bit=yes
3704 arch_without_sse2=yes
3705 arch_without_64bit=yes
3710 arch_without_sse2=yes
3711 arch_without_64bit=yes
3714 arch_without_sse2=yes
3715 arch_without_64bit=yes
3716 case ${target_noncanonical} in
3729 pentium_mmx-*|winchip_c6-*|winchip2-*|c3-*)
3739 i686-*-* | i786-*-*)
3740 case ${target_noncanonical} in
3781 amdfam10-*|barcelona-*)
3785 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3789 k8-*|opteron-*|athlon64-*|athlon_fx-*)
3793 athlon_xp-*|athlon_mp-*|athlon_4-*)
3796 arch_without_sse2=yes
3797 arch_without_64bit=yes
3799 athlon_tbird-*|athlon-*)
3802 arch_without_sse2=yes
3807 arch_without_sse2=yes
3820 arch_without_sse2=yes
3822 pentium3-*|pentium3m-*)
3825 arch_without_sse2=yes
3827 pentium4-*|pentium4m-*)
3866 arch_without_sse2=yes
3871 arch_without_sse2=yes
3872 arch_without_64bit=yes
3877 case ${target_noncanonical} in
3918 amdfam10-*|barcelona-*)
3922 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3926 k8-*|opteron-*|athlon_64-*)
3966 # If there is no $with_cpu option, try to infer one from ${target}.
3967 # This block sets nothing except for with_cpu.
3968 if test x$with_cpu = x ; then
3970 i[34567]86-*-elfiamcu)
3973 i[34567]86-*-*|x86_64-*-*)
3991 frv-*-*linux* | frv400-*-*linux*)
3998 case "$with_arch" in
4000 with_cpu=${default_cf_cpu}
4003 with_cpu=m${default_m68k_cpu}
4019 with_cpu="`echo ${target} | sed 's/-.*$//'`"
4028 # Avoid overriding --with-cpu-32 and --with-cpu-64 values.
4030 i[34567]86-*-*|x86_64-*-*)
4031 if test x$with_cpu_32 != x || test x$with_cpu_64 != x; then
4032 if test x$with_cpu_32 = x; then
4033 with_cpu_32=$with_cpu
4035 if test x$with_cpu_64 = x; then
4036 with_cpu_64=$with_cpu
4044 # Support for --with-arch and related options (and a few unrelated options,
4046 case ${with_arch} in
4048 echo "--with-arch must be passed a value" 1>&2
4053 # If there is no $with_arch option, try to infer one from ${target}.
4054 # This block sets nothing except for with_arch.
4055 if test x$with_arch = x ; then
4057 i[34567]86-*-darwin*|x86_64-*-darwin*)
4058 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
4059 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
4061 i[34567]86-*-elfiamcu)
4065 # --with-fpmath sets the default ISA to SSE2, which is the same
4066 # ISA supported by Pentium 4.
4067 if test x$with_fpmath = x || test $arch_without_sse2 = no; then
4076 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4087 # Avoid overriding --with-arch-32 and --with-arch-64 values.
4089 i[34567]86-*-darwin*|x86_64-*-darwin*)
4090 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
4091 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
4093 i[34567]86-*-*|x86_64-*-*)
4094 if test x$with_arch_32 != x || test x$with_arch_64 != x; then
4095 if test x$with_arch_32 = x; then
4096 with_arch_32=$with_arch
4098 if test x$with_arch_64 = x; then
4099 if test $arch_without_64bit = yes; then
4100 # Set the default 64bit arch to x86-64 if the default arch
4101 # doesn't support 64bit.
4104 with_arch_64=$with_arch
4108 elif test $arch_without_64bit$need_64bit_isa = yesyes; then
4109 # Set the default 64bit arch to x86-64 if the default arch
4110 # doesn't support 64bit and we need 64bit ISA.
4111 with_arch_32=$with_arch
4119 # Infer a default setting for --with-float.
4120 if test x$with_float = x; then
4122 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4123 # The R5900 doesn't support 64-bit float. 32-bit float doesn't
4124 # comply with IEEE 754.
4130 # Infer a default setting for --with-fpu.
4131 if test x$with_fpu = x; then
4133 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4134 # The R5900 FPU only supports single precision.
4140 # Support --with-fpmath.
4141 if test x$with_fpmath != x; then
4143 i[34567]86-*-* | x86_64-*-*)
4144 case ${with_fpmath} in
4146 tm_file="${tm_file} i386/avxmath.h"
4149 tm_file="${tm_file} i386/ssemath.h"
4152 echo "Invalid --with-fpmath=$with_fpmath" 1>&2
4158 echo "--with-fpmath isn't supported for $target." 1>&2
4164 # Similarly for --with-schedule.
4165 if test x$with_schedule = x; then
4168 # Override default PA8000 scheduling model.
4169 with_schedule=7100LC
4174 # Infer a default setting for --with-llsc.
4175 if test x$with_llsc = x; then
4178 # The kernel emulates LL and SC where necessary.
4181 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4182 # The R5900 doesn't support LL(D) and SC(D).
4188 # Validate and mark as valid any --with options supported
4189 # by this target. In order to use a particular --with option
4190 # you must list it in supported_defaults; validating the value
4191 # is optional. This case statement should set nothing besides
4192 # supported_defaults.
4197 supported_defaults="abi cpu cpu_64 arch arch_64 tune tune_64"
4198 if test x$with_cpu_64 != x && test x$with_cpu = x; then
4199 with_cpu=$with_cpu_64
4201 if test x$with_arch_64 != x && test x$with_arch = x; then
4202 with_arch=$with_arch_64
4204 if test x$with_tune_64 != x && test x$with_tune = x; then
4205 with_tune=$with_tune_64
4207 for which in cpu arch tune; do
4208 eval "val=\$with_$which"
4209 base_val=`echo $val | sed -E -e 's/\+.*//'`
4210 ext_val=`echo $val | sed -E -e 's/[a-z0-9.-]+//'`
4212 if [ $which = arch ]; then
4213 def=aarch64-arches.def
4214 pattern=AARCH64_ARCH
4216 def=aarch64-cores.def
4217 pattern=AARCH64_CORE
4220 # Find the base CPU or ARCH id in aarch64-cores.def or
4221 # aarch64-arches.def
4222 if [ x"$base_val" = x ] \
4223 || grep "^$pattern(\"$base_val\"," \
4224 ${srcdir}/config/aarch64/$def \
4227 # Disallow extensions in --with-tune=cortex-a53+crc.
4228 if [ $which = tune ] && [ x"$ext_val" != x ]; then
4229 echo "Architecture extensions not supported in --with-$which=$val" 1>&2
4233 # Use the pre-processor to strip flatten the options.
4234 # This makes the format less rigid than if we use
4235 # grep and sed directly here.
4236 opt_macro="AARCH64_OPT_EXTENSION(A, B, C, D, E, F)=A, B, C, D, E, F"
4237 options_parsed="`$ac_cv_prog_CPP -D"$opt_macro" -x c \
4238 ${srcdir}/config/aarch64/aarch64-option-extensions.def`"
4240 while [ x"$ext_val" != x ]
4242 ext_val=`echo $ext_val | sed -E -e 's/\+//'`
4243 ext=`echo $ext_val | sed -E -e 's/\+.*//'`
4244 base_ext=`echo $ext | sed -E -e 's/^no//'`
4245 opt_line=`echo -e "$options_parsed" | \
4246 grep "^\"$base_ext\""`
4248 if [ x"$base_ext" = x ] \
4249 || [ x"$opt_line" != x ]; then
4252 echo "Unknown extension used in --with-$which=$val" 1>&2
4255 ext_val=`echo $ext_val | sed -E -e 's/[a-z0-9]+//'`
4260 # Allow --with-$which=native.
4261 if [ "$val" = native ]; then
4264 echo "Unknown $which used in --with-$which=$val" 1>&2
4272 supported_defaults="cpu tune"
4273 for which in cpu tune; do
4274 eval "val=\$with_$which"
4277 | ev4 | ev45 | 21064 | ev5 | 21164 | ev56 | 21164a \
4278 | pca56 | 21164PC | 21164pc | ev6 | 21264 | ev67 \
4282 echo "Unknown CPU used in --with-$which=$val" 1>&2
4290 supported_defaults="cpu fpu"
4293 if [ x"$with_cpu" = x ] \
4294 || grep -q -E "^ARC_CPU[[:blank:]]*\($with_cpu," \
4295 ${srcdir}/config/arc/arc-cpus.def
4300 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4304 # see if --with-fpu matches any of the supported FPUs
4309 fpus | fpus_div | fpus_fma | fpus_all)
4313 fpuda | fpuda_div | fpuda_fma | fpuda_all)
4317 fpud | fpud_div | fpud_fma | fpud_all)
4322 echo "Unknown floating point type used in "\
4323 "--with-fpu=$with_fpu" 1>&2
4328 if [ -n "$flags_ok" ] \
4329 && ! grep -q -E "^ARC_CPU[[:blank:]]*\($new_cpu,[[:blank:]]*$flags_ok," \
4330 ${srcdir}/config/arc/arc-cpus.def
4332 echo "Unknown floating point type used in "\
4333 "--with-fpu=$with_fpu for cpu $new_cpu" 1>&2
4339 # Handle --with-multilib-list.
4340 if test "x${with_multilib_list}" != xdefault; then
4341 TM_MULTILIB_CONFIG="${with_multilib_list}"
4346 supported_defaults="cpu endian float"
4350 supported_defaults="arch cpu float tune fpu abi mode tls"
4351 for which in cpu tune arch; do
4352 # See if it matches a supported value
4353 eval "val=\$with_$which"
4354 if [ x"$val" != x ]; then
4355 cpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4356 -v cmd="chk$which $val" \
4357 ${srcdir}/config/arm/arm-cpus.in`
4358 if [ "$cpu" = "error" ]; then
4359 echo "Unknown target in --with-$which=$val" 1>&2
4363 eval "target_${which}_cname=$new_val"
4364 echo "For $val real value is $new_val"
4369 case "$with_float" in
4371 | soft | hard | softfp)
4375 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4380 # see if --with-fpu matches any of the supported FPUs
4381 if [ x"$with_fpu" != x ] ; then
4383 fpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4384 -v cmd="chkfpu $val" \
4385 ${srcdir}/config/arm/arm-cpus.in`
4386 if [ "$fpu" = "error" ]
4388 echo "Unknown target in --with-fpu=$val" 1>&2
4395 | apcs-gnu | atpcs | aapcs | iwmmxt | aapcs-linux )
4399 echo "Unknown ABI used in --with-abi=$with_abi"
4404 case "$with_mode" in
4410 echo "Unknown mode used in --with-mode=$with_mode"
4421 echo "Unknown TLS method used in --with-tls=$with_tls" 1>&2
4426 if test "x$with_arch" != x && test "x$with_cpu" != x; then
4427 echo "Switch \"--with-arch\" may not be used with switch \"--with-cpu\"" 1>&2
4431 if test "x$with_cpu" != x && test "x$with_tune" != x; then
4432 echo "Switch \"--with-tune\" may not be used with switch \"--with-cpu\"" 1>&2
4436 # Add extra multilibs
4437 if test "x$with_multilib_list" != x; then
4439 arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
4440 if test "x${arm_multilibs}" != xdefault ; then
4441 for arm_multilib in ${arm_multilibs}; do
4442 case ${arm_multilib} in
4444 tmake_profile_file="arm/t-multilib"
4445 tm_mlib_file="arm/arm-mlib.h"
4448 ml=`echo "X$arm_multilib" | sed '1s,^X@,,'`
4449 if test -f "${srcdir}/config/arm/${ml}"; then
4450 tmake_file="${tmake_file} arm/${ml}"
4452 echo "Error: ${ml} does not exist in ${srcdir}/config/arm" >&2
4457 echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2
4464 if test "x${tmake_profile_file}" != x ; then
4465 # arm/t-aprofile and arm/t-rmprofile are only
4466 # designed to work without any with-cpu,
4467 # with-arch, with-mode, with-fpu or with-float
4469 if test "x$with_arch" != x \
4470 || test "x$with_cpu" != x \
4471 || test "x$with_float" != x \
4472 || test "x$with_fpu" != x \
4473 || test "x$with_mode" != x ; then
4474 echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=${with_multilib_list}" 1>&2
4476 elif test "x$ml" != x ; then
4477 echo "Error: You cannot use builtin multilib profiles along with custom ones" 1>&2
4480 # But pass the default value for float-abi
4481 # through to the multilib selector
4483 tmake_file="${tmake_file} ${tmake_profile_file}"
4484 tm_file="$tm_file $tm_mlib_file"
4485 TM_MULTILIB_CONFIG="$with_multilib_list"
4488 target_cpu_cname=${target_cpu_cname:-arm7tdmi}
4489 with_cpu=${with_cpu:-$target_cpu_cname}
4493 supported_defaults=cpu
4498 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4504 fido-*-* | m68k*-*-*)
4505 supported_defaults="arch cpu"
4506 case "$with_arch" in
4508 m68k_arch_family="$with_arch"
4511 echo "Invalid --with-arch=$with_arch" 1>&2
4516 # We always have a $with_cpu setting here.
4518 "m68000" | "m68010" | "m68020" | "m68030" | "m68040" | "m68060")
4519 m68k_cpu_ident=$with_cpu
4522 m68k_cpu_ident=m68020
4523 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_40"
4526 m68k_cpu_ident=m68020
4527 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_60"
4530 # We need the C identifier rather than the string.
4531 m68k_cpu_ident=`awk -v arg="\"$with_cpu\"" \
4532 'BEGIN { FS="[ \t]*[,()][ \t]*" }; \
4533 $1 == "M68K_DEVICE" && $2 == arg { print $3 }' \
4534 ${srcdir}/config/m68k/m68k-devices.def`
4535 if [ x"$m68k_cpu_ident" = x ] ; then
4536 echo "Unknown CPU used in --with-cpu=$with_cpu" 1>&2
4539 with_cpu="mcpu=$with_cpu"
4545 supported_defaults="arch tune"
4547 for which in arch tune; do
4548 eval "val=\$with_$which"
4550 "" | fiji | gfx900 | gfx906 | gfx908 | gfx90a | gfx1030)
4554 echo "Unknown cpu used in --with-$which=$val." 1>&2
4559 [ "x$with_arch" = x ] && with_arch=gfx900
4561 case "x${with_multilib_list}" in
4566 TM_MULTILIB_CONFIG=`echo "gfx900,gfx906,gfx908,gfx90a" | sed "s/${with_arch},\?//;s/,$//"`
4569 TM_MULTILIB_CONFIG="${with_multilib_list}"
4575 supported_defaults="arch schedule"
4577 case "$with_arch" in
4578 "" | 1.0 | 1.1 | 2.0)
4582 echo "Unknown architecture used in --with-arch=$with_arch" 1>&2
4587 case "$with_schedule" in
4588 "" | 700 | 7100 | 7100LC | 7200 | 7300 | 8000)
4592 echo "Unknown processor used in --with-schedule=$with_schedule." 1>&2
4598 i[34567]86-*-* | x86_64-*-*)
4599 supported_defaults="abi arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64"
4600 for which in arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64; do
4601 eval "val=\$with_$which"
4602 case " $x86_archs " in
4610 echo "CPU given in --with-$which=$val doesn't support 64bit mode." 1>&2
4619 if test x${val} != x; then
4620 case " $x86_64_archs " in
4622 # Disallow x86-64-v* for --with-cpu=/--with-tune=
4623 case "x$which$val" in
4624 xcpu*x86-64-v*|xtune*x86-64-v*)
4625 echo "Unknown CPU given in --with-$which=$val." 1>&2
4634 # Allow $x86_cpus --with-cpu=/--with-tune=
4637 case " $x86_cpus " in
4642 echo "Unknown CPU given in --with-$which=$val." 1>&2
4648 echo "Unknown CPU given in --with-$which=$val." 1>&2
4661 supported_defaults="abi arch tune riscv_attribute isa_spec"
4664 riscv-* | riscv32*) xlen=32 ;;
4665 riscv64*) xlen=64 ;;
4666 *) echo "Unsupported RISC-V target ${target}" 1>&2; exit 1 ;;
4669 case "${with_isa_spec}" in
4670 ""|default|20191213|201912)
4671 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20191213"
4672 with_isa_spec=20191213
4675 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_2P2"
4678 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20190608"
4679 with_isa_spec=20190608
4682 echo "--with-isa-spec only accept 2.2, 20191213, 201912, 20190608 or 201906" 1>&2
4686 case "${with_riscv_attribute}" in
4688 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4691 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=0"
4694 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4697 echo "--with-riscv-attribute=${with_riscv_attribute} is not supported. The argument must begin with yes, no or default." 1>&2
4703 # Infer arch from --with-arch, --target, and --with-abi.
4704 case "${with_arch}" in
4705 rv32e* | rv32i* | rv32g* | rv64e* | rv64i* | rv64g*)
4709 # Infer XLEN, but otherwise assume GC.
4710 case "${with_abi}" in
4711 ilp32e) with_arch="rv32e" ;;
4712 ilp32 | ilp32f | ilp32d) with_arch="rv32gc" ;;
4713 lp64 | lp64f | lp64d) with_arch="rv64gc" ;;
4714 lp64e) with_arch="rv64e" ;;
4715 *) with_arch="rv${xlen}gc" ;;
4719 echo "--with-arch=${with_arch} is not supported. The argument must begin with rv32e, rv32i, rv32g, rv64e, rv64i, or rv64g." 1>&2
4723 PYTHON=`which python || which python3 || which python2`
4724 if test "x${PYTHON}" != x; then
4725 with_arch=`${PYTHON} ${srcdir}/config/riscv/arch-canonicalize -misa-spec=${with_isa_spec} ${with_arch}`
4727 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ARCH=${with_arch}"
4729 # Make sure --with-abi is valid. If it was not specified,
4730 # pick a default based on the ISA, preferring soft-float
4731 # unless the D extension is present.
4732 case "${with_abi}" in
4733 ilp32 | ilp32e | ilp32f | ilp32d | lp64 | lp64e | lp64f | lp64d)
4736 case "${with_arch}" in
4737 rv32*d* | rv32g*) with_abi=ilp32d ;;
4738 rv32e*) with_abi=ilp32e ;;
4739 rv32*) with_abi=ilp32 ;;
4740 rv64*d* | rv64g*) with_abi=lp64d ;;
4741 rv64e*) with_abi=lp64e ;;
4742 rv64*) with_abi=lp64 ;;
4746 echo "--with-abi=${with_abi} is not supported" 1>&2
4750 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ABI=${with_abi}"
4752 # Make sure ABI and ISA are compatible.
4753 case "${with_abi},${with_arch}" in
4754 ilp32,rv32* | ilp32e,rv32e* \
4755 | ilp32f,rv32*f* | ilp32f,rv32g* \
4756 | ilp32d,rv32*d* | ilp32d,rv32g* \
4757 | lp64,rv64* | lp64e,rv64e* \
4758 | lp64f,rv64*f* | lp64f,rv64g* \
4759 | lp64d,rv64*d* | lp64d,rv64g*)
4762 echo "--with-abi=${with_abi} is not supported for ISA ${with_arch}" 1>&2
4766 # Handle --with-multilib-generator.
4767 if test "x${with_multilib_generator}" != xdefault; then
4768 if test "x${with_multilib_list}" != xdefault; then
4769 echo "--with-multilib-list= can't used with --with-multilib-generator= at same time" 1>&2
4774 if ${srcdir}/config/riscv/multilib-generator \
4775 -misa-spec=${with_isa_spec} \
4776 `echo ${with_multilib_generator} | sed 's/;/ /g'`\
4777 > t-multilib-config;
4779 tmake_file="${tmake_file} riscv/t-withmultilib-generator"
4781 echo "invalid option for --with-multilib-generator" 1>&2
4786 echo "--with-multilib-generator= is not supported for ${target}, only supported for riscv*-*-elf*" 1>&2
4792 # Handle --with-multilib-list.
4793 if test "x${with_multilib_list}" != xdefault; then
4794 tmake_file="${tmake_file} riscv/t-withmultilib"
4796 case ${with_multilib_list} in
4797 ilp32 | ilp32f | ilp32d \
4798 | lp64 | lp64f | lp64d )
4799 TM_MULTILIB_CONFIG="${with_arch},${with_multilib_list}"
4802 echo "--with-multilib-list=${with_multilib_list} not supported."
4809 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"
4811 case ${with_float} in
4816 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4822 "" | single | double)
4826 echo "Unknown fpu type used in --with-fpu=$with_fpu" 1>&2
4836 echo "Unknown NaN encoding used in --with-nan=$with_nan" 1>&2
4841 case ${with_fp_32} in
4846 echo "Unknown FP mode used in --with-fp-32=$with_fp_32" 1>&2
4851 case ${with_odd_spreg_32} in
4853 with_odd_spreg_32="odd-spreg"
4856 with_odd_spreg_32="no-odd-spreg"
4862 echo "Unknown odd-spreg-32 type used in --with-odd-spreg-32=$with_odd_spreg_32" 1>&2
4868 "" | 32 | o64 | n32 | 64 | eabi)
4872 echo "Unknown ABI used in --with-abi=$with_abi" 1>&2
4877 case ${with_divide} in
4878 "" | breaks | traps)
4882 echo "Unknown division check type use in --with-divide=$with_divide" 1>&2
4887 case ${with_llsc} in
4898 echo "Unknown llsc type used in --with-llsc" 1>&2
4903 case ${with_mips_plt} in
4908 with_mips_plt=no-plt
4913 echo "Unknown --with-mips-plt argument: $with_mips_plt" 1>&2
4918 case ${with_synci} in
4928 echo "Unknown synci type used in --with-synci" 1>&2
4933 case ${with_lxc1_sxc1} in
4935 with_lxc1_sxc1=lxc1-sxc1
4938 with_lxc1_sxc1=no-lxc1-sxc1
4943 echo "Unknown lxc1-sxc1 type used in --with-lxc1-sxc1" 1>&2
4948 case ${with_madd4} in
4958 echo "Unknown madd4 type used in --with-madd4" 1>&2
4963 case ${with_compact_branches} in
4964 "" | never | always | optimal)
4967 echo "Unknown compact-branches policy used in --with-compact-branches" 1>&2
4982 echo "Unknown msa type used in --with-msa" 1>&2
4989 supported_defaults="abi arch tune fpu simd multilib-default strict-align-lib"
4994 arch_pattern arch_default \
4995 fpu_pattern fpu_default \
4996 triplet_os triplet_abi \
4999 # --with-abi is now obsolete, emit a warning if given.
5003 echo "warning: --with-abi= is now obsolete," \
5004 "the default ABI is derived from your target" \
5005 "triplet ${target}" 1>&2
5009 # Infer ABI from the triplet.
5011 loongarch64-*f64) abi_base="lp64d"; abi_ext="base" ;;
5012 loongarch64-*f32) abi_base="lp64f"; abi_ext="base" ;;
5013 loongarch64-*sf) abi_base="lp64s"; abi_ext="base" ;;
5014 loongarch64-*) abi_base="lp64d"; abi_ext="base" ;;
5016 echo "Unsupported target ${target}." 1>&2
5021 # Get the canonical triplet (multiarch specifier).
5022 case ${abi_base},${abi_ext} in
5023 lp64d,base) triplet_abi="";;
5024 lp64f,base) triplet_abi="f32";;
5025 lp64s,base) triplet_abi="sf";;
5029 *-linux-gnu*) triplet_os="linux-gnu";;
5030 *-linux-musl*) triplet_os="linux-musl";;
5031 *-elf*) triplet_os="elf";;
5033 echo "Unsupported target ${target}." 1>&2
5037 la_canonical_triplet="loongarch64-${triplet_os}${triplet_abi}"
5040 # Perform initial sanity checks on --with-* options.
5041 case ${with_arch} in
5042 "" | abi-default | loongarch64 | la[46]64) ;; # OK, append here.
5044 if test x${host} != x${target}; then
5045 echo "--with-arch=native is illegal for cross-compiler." 1>&2
5050 echo "Unknown arch in --with-arch=$with_arch" 1>&2
5057 "" | none | 32 | 64) ;; # OK, append here.
5059 # Convert "0" to "none" for upcoming checks.
5063 echo "Unknown fpu type in --with-fpu=$with_fpu" 1>&2
5068 case ${with_simd} in
5070 lsx | lasx) # OK, append here.
5075 echo "--with-simd=${with_simd} conflicts with --with-fpu=${with_fpu}" 1>&2
5082 echo "Unknown SIMD extension in --with-simd=$with_simd" 1>&2
5087 # Infer ISA-related default options from the ABI: pass 1
5088 case ${abi_base}/${abi_ext} in
5090 # architectures that support lp64* ABI
5091 arch_pattern="native|abi-default|loongarch64|la[46]64"
5092 # default architecture for lp64* ABI
5093 arch_default="abi-default"
5096 echo "Unsupported ABI type ${abi_base}/${abi_ext}." 1>&2
5101 # Infer ISA-related default options from the ABI: pass 2
5102 case ${abi_base}/${abi_ext} in
5111 fpu_pattern="none|32|64"
5115 echo "Unsupported ABI type ${abi_base}/${abi_ext}." 1>&2
5120 ## Set default value for with_arch.
5121 case ${with_arch} in
5123 if test x${arch_default} != x; then
5124 with_arch=${arch_default}
5126 with_arch=${arch_pattern}
5131 if echo "${with_arch}" | grep -E "^${arch_pattern}$" > /dev/null; then
5134 echo "${abi_base}/${abi_ext} ABI cannot be implemented with" \
5135 "--with-arch=${with_arch}." 1>&2
5141 ## Set default value for with_fpu.
5144 if test x${fpu_default} != x; then
5145 with_fpu=${fpu_default}
5147 with_fpu=${fpu_pattern}
5152 if echo "${with_fpu}" | grep -E "^${fpu_pattern}$" > /dev/null; then
5155 echo "${abi_base}/${abi_ext} ABI cannot be implemented with" \
5156 "--with-fpu=${with_fpu}." 1>&2
5163 # Check default with_tune configuration using with_arch.
5164 case ${with_arch} in
5166 tune_pattern="native|abi-default|loongarch64|la[46]64"
5169 # By default, $with_tune == $with_arch
5174 case ${with_tune} in
5177 if echo "${with_tune}" | grep -E "^${tune_pattern}$" > /dev/null; then
5180 echo "Incompatible options: --with-tune=${with_tune}" \
5181 "and --with-arch=${with_arch}." 1>&2
5187 # Build libraries with -mstrict-align if --with-strict-align-lib is given.
5188 case ${with_strict_align_lib} in
5189 yes) strict_align_opt="/mstrict-align" ;;
5192 echo "Unknown option: --with-strict-align-lib=${with_strict_align_lib}" 1>&2
5198 # Handle --with-multilib-default
5199 if echo "${with_multilib_default}" \
5200 | grep -E -e '[[:space:]]' -e '//' -e '/$' -e '^/' > /dev/null 2>&1; then
5201 echo "Invalid argument to --with-multilib-default." 1>&2
5205 if test x${with_multilib_default} = x; then
5206 # Use -march=abi-default by default when building libraries.
5207 with_multilib_default="/march=abi-default"
5209 unset parse_state component
5211 for component in $(echo "${with_multilib_default}" | tr '/' ' '); do
5212 case ${parse_state},${component} in
5213 arch,|arch,abi-default)
5214 # ABI-default: use the ABI's default ARCH configuration for
5215 # multilib library builds, unless otherwise specified
5216 # in --with-multilib-list.
5217 with_multilib_default="/march=abi-default" ;;
5219 # Fixed: use the default gcc configuration for all multilib
5220 # builds by default.
5221 with_multilib_default="" ;;
5222 arch,native|arch,loongarch64|arch,la[46]64) # OK, append here.
5223 with_multilib_default="/march=${component}" ;;
5225 with_multilib_default="/march=abi-default"
5226 with_multilib_default="${with_multilib_default}/${component}" ;;
5228 with_multilib_default="${with_multilib_default}/${component}" ;;
5231 if test x${parse_state} = xarch; then
5235 unset parse_state component
5238 # Handle --with-multilib-list.
5239 if test x"${with_multilib_list}" = x \
5240 || test x"${with_multilib_list}" = xno \
5241 || test x"${with_multilib_list}" = xdefault \
5242 || test x"${enable_multilib}" != xyes; then
5244 with_multilib_list="${abi_base}/${abi_ext}"
5247 # Check if the configured default ABI combination is included in
5248 # ${with_multilib_list}.
5249 loongarch_multilib_list_sane=no
5251 # This one goes to TM_MULTILIB_CONFIG, for use in t-linux.
5252 loongarch_multilib_list_make="${abi_base},"
5254 # This one goes to tm_defines, for use in loongarch-driver.c.
5255 loongarch_multilib_list_c=""
5257 # ${with_multilib_list} should not contain whitespaces,
5258 # consecutive commas or slashes.
5259 if echo "${with_multilib_list}" \
5260 | grep -E -e "[[:space:]]" -e '[,/][,/]' -e '[,/]$' -e '^[,/]' > /dev/null 2>&1; then
5261 echo "Invalid argument to --with-multilib-list." 1>&2
5265 unset component elem_abi_base elem_abi_ext elem_tmp parse_state all_abis
5266 for elem in $(echo "${with_multilib_list}" | tr ',' ' '); do
5267 unset elem_abi_base elem_abi_ext
5268 parse_state="abi-base"
5270 for component in $(echo "${elem}" | tr '/' ' '); do
5271 if test x${parse_state} = x"abi-base"; then
5273 case ${component} in
5274 lp64d | lp64f | lp64s) elem_tmp="ABI_BASE_$(echo ${component} | tr a-z A-Z),";;
5276 echo "Unknown base ABI \"${component}\" in --with-multilib-list." 1>&2
5280 loongarch_multilib_list_c="${loongarch_multilib_list_c}${elem_tmp}"
5281 loongarch_multilib_list_make="${loongarch_multilib_list_make}mabi=${component}"
5282 elem_abi_base="${component}"
5284 parse_state="abi-ext"
5288 if test x${parse_state} = x"abi-ext"; then
5289 # ABI extension type
5290 case ${component} in
5293 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5294 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5300 # The default ABI extension is "base" if unspecified.
5302 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5303 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5307 if test x${parse_state} = x"arch"; then
5309 case ${component} in
5310 native | abi-default | loongarch64 | la[46]64) # OK, append here.
5311 # Append -march spec for each multilib variant.
5312 loongarch_multilib_list_make="${loongarch_multilib_list_make}/march=${component}"
5318 # "/default" is equivalent to --with-multilib-default=fixed
5324 # If ARCH is unspecified for this multilib variant, use ${with_multllib_default}.
5325 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5329 if test x${parse_state} = x"opts"; then
5330 # Other compiler options for building libraries.
5331 # (no static sanity check performed)
5332 case ${component} in
5334 # Append other components as additional build options
5335 # (without the prepending dash).
5336 # Their validity should be examined by the compiler.
5337 loongarch_multilib_list_make="${loongarch_multilib_list_make}/${component}"
5343 case ${parse_state} in
5346 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5347 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5348 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5351 # If ARCH is unspecified for this multilib variant, use ${with_multllib_default}.
5352 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5359 # Use mstrict-align for building libraries if --with-strict-align-lib is given.
5360 loongarch_multilib_list_make="${loongarch_multilib_list_make}${strict_align_opt}"
5362 # Check for repeated configuration of the same multilib variant.
5363 if echo "${elem_abi_base}/${elem_abi_ext}" \
5364 | grep -E "^(${all_abis%|})$" >/dev/null 2>&1; then
5365 echo "Repeated multilib config of \"${elem_abi_base}/${elem_abi_ext}\" in --with-multilib-list."
5368 all_abis="${all_abis}${elem_abi_base}/${elem_abi_ext}|"
5371 # Check if the default ABI configuration of the GCC binary
5372 # is included in the enabled multilib variants.
5373 if test x${elem_abi_base} = x${abi_base} \
5374 && test x${elem_abi_ext} = x${abi_ext}; then
5375 loongarch_multilib_list_sane=yes
5377 loongarch_multilib_list_make="${loongarch_multilib_list_make},"
5379 unset component elem_abi_base elem_abi_ext elem_tmp parse_state all_abis
5382 # Check if the default ABI combination is in the default list.
5383 if test x${loongarch_multilib_list_sane} = xno; then
5384 if test x${abi_ext} = xbase; then
5387 abi_ext="/${abi_ext}"
5390 echo "Default ABI combination (${abi_base}${abi_ext})" \
5391 "not found in --with-multilib-list." 1>&2
5395 # Remove the excessive appending comma.
5396 loongarch_multilib_list_c=${loongarch_multilib_list_c%,}
5397 loongarch_multilib_list_make=${loongarch_multilib_list_make%,}
5401 supported_defaults="arch cpu nds32_lib float fpu_config"
5403 # process --with-arch
5404 case "${with_arch}" in
5406 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5410 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5413 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=1"
5416 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=2"
5420 echo "Cannot accept --with-arch=$with_arch, available values are: v2 v2j v3 v3m v3f v3s" 1>&2
5425 case "${with_cpu}" in
5429 n6 | n7 |n8 | e8 | s8 | n9 | n10 | d10 | n12 | n13 | n15)
5433 echo "Cannot accept --with-cpu=$with_cpu, available values are: n6 n7 n8 e8 s8 n9 n10 d10 n12 n13 n15" 1>&2
5438 # process --with-nds32-lib
5439 case "${with_nds32_lib}" in
5443 with_nds32_lib=ulibc
5446 with_nds32_lib=glibc
5449 with_nds32_lib=newlib
5450 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5456 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5460 # for the arch=v3f or arch=v3s under mculib toolchain,
5461 # we would like to set -fno-math-errno as default
5462 case "${with_arch}" in
5464 tm_defines="${tm_defines} TARGET_DEFAULT_NO_MATH_ERRNO=1"
5472 echo "Cannot accept --with-nds32-lib=$with_nds32_lib, available values are: newlib mculib glibc uclibc" 1>&2
5477 # process --with-float
5478 case "${with_float}" in
5483 echo "Cannot accept --with-float=$with_float, available values are: soft hard" 1>&2
5488 # process --with-config-fpu
5489 case "${with_config_fpu}" in
5494 echo "Cannot accept --with-config-fpu=$with_config_fpu, available values from 0 to 7" 1>&2
5502 supported_defaults="arch"
5503 case "$with_arch" in
5508 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5515 supported_defaults=arch
5516 TM_MULTILIB_CONFIG=$with_arch
5517 #TODO 'sm_[...]' list per 'nvptx-sm.def'.
5522 sm_35 | sm_53 | sm_70 | sm_75 | sm_80 )
5523 # OK, but we'd like 'sm_30', too.
5524 TM_MULTILIB_CONFIG="$TM_MULTILIB_CONFIG sm_30"
5527 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5533 powerpc*-*-* | rs6000-*-*)
5534 supported_defaults="abi cpu cpu_32 cpu_64 float tune tune_32 tune_64 advance_toolchain"
5536 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5537 eval "val=\$with_$which"
5539 default32 | default64)
5544 echo "$val only valid for --with-cpu and --with-tune." 1>&2
5548 with_which="with_$which"
5552 tm_defines="${tm_defines} CONFIG_PPC405CR"
5553 eval "with_$which=405"
5555 "" | common | native \
5556 | power[3456789] | power10 | power5+ | power6x \
5557 | powerpc | powerpc64 | powerpc64le \
5559 | 401 | 403 | 405 | 405fp | 440 | 440fp | 464 | 464fp \
5560 | 476 | 476fp | 505 | 601 | 602 | 603 | 603e | ec603e \
5561 | 604 | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 \
5562 | a2 | e300c[23] | 854[08] | e500mc | e500mc64 | e5500 | e6500 \
5563 | titan | 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5 | cell)
5567 echo "Unknown cpu used in --with-$which=$val." 1>&2
5574 "" | elfv1 | elfv2 )
5578 echo "Unknown ABI used in --with-abi=$with_abi"
5583 if test "x$with_advance_toolchain" != x; then
5584 if test -d "/opt/$with_advance_toolchain/." -a \
5585 -d "/opt/$with_advance_toolchain/bin/." -a \
5586 -d "/opt/$with_advance_toolchain/include/."; then
5588 tm_file="$tm_file ./advance-toolchain.h"
5589 (at="/opt/$with_advance_toolchain"
5590 echo "/* Use Advance Toolchain $at */"
5592 echo "#undef LINK_OS_NEW_DTAGS_SPEC"
5593 echo "#define LINK_OS_NEW_DTAGS_SPEC" \
5594 "\"--enable-new-dtags\""
5596 echo "#undef DYNAMIC_LINKER_PREFIX"
5597 echo "#define DYNAMIC_LINKER_PREFIX \"$at\""
5599 echo "#undef MD_EXEC_PREFIX"
5600 echo "#define MD_EXEC_PREFIX \"$at/bin/\""
5602 echo "#undef MD_STARTFILE_PREFIX"
5603 echo "#define MD_STARTFILE_PREFIX \"$prefix/lib/\""
5605 echo "#undef MD_STARTFILE_PREFIX_1"
5606 echo "#define MD_STARTFILE_PREFIX_1 \"$at/lib/\"") \
5607 > advance-toolchain.h
5609 echo "Unknown advance-toolchain $with_advance_toolchain"
5614 # Set up the default long double format if the user changed it.
5615 if test x$with_long_double_format = xieee; then
5616 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=1"
5618 elif test x$with_long_double_format = xibm; then
5619 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=0"
5624 supported_defaults="arch mode tune"
5626 for which in arch tune; do
5627 eval "val=\$with_$which"
5629 "" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | z15 | z16 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12 | arch13 | arch14 )
5633 echo "Unknown cpu used in --with-$which=$val." 1>&2
5639 case ${with_mode} in
5644 echo "Unknown architecture mode used in --with-mode=$with_mode." 1>&2
5650 sh[123456ble]*-*-* | sh-*-*)
5651 supported_defaults="cpu"
5652 case "`echo $with_cpu | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz- | sed s/sh/m/`" in
5653 "" | m1 | m2 | m2e | m3 | m3e | m4 | m4-single | m4-single-only | m4-nofpu )
5656 m2a | m2a-single | m2a-single-only | m2a-nofpu)
5658 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al)
5661 echo "Unknown CPU used in --with-cpu=$with_cpu, known values:" 1>&2
5662 echo "m1 m2 m2e m3 m3e m4 m4-single m4-single-only m4-nofpu" 1>&2
5663 echo "m4a m4a-single m4a-single-only m4a-nofpu m4al" 1>&2
5664 echo "m2a m2a-single m2a-single-only m2a-nofpu" 1>&2
5670 supported_defaults="cpu cpu_32 cpu_64 float tune tune_32 tune_64"
5672 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5673 eval "val=\$with_$which"
5675 "" | sparc | sparcv9 | sparc64 \
5677 | v8 | supersparc | hypersparc | leon | leon3 | leon3v7 \
5678 | sparclite | f930 | f934 | sparclite86x \
5679 | sparclet | tsc701 \
5680 | v9 | ultrasparc | ultrasparc3 | niagara | niagara2 \
5681 | niagara3 | niagara4 | niagara7 | m8)
5685 echo "Unknown cpu used in --with-$which=$val" 1>&2
5691 case ${with_float} in
5696 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
5703 supported_defaults="arch"
5705 case ${with_arch} in
5706 "" | c62x | c64x | c64x+ | c67x | c67x+ | c674x)
5710 echo "Unknown arch used in --with-arch=$with_arch." 1>&2
5717 supported_defaults=cpu
5719 "" | v850e | v850e1 | v850e2 | v850es | v850e2v3 | v850e3v5)
5723 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5729 supported_defaults="cpu"
5733 *) echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5740 # VxWorks support for shared libraries has to be requested explicitly,
5741 # so we can factor this part here:
5743 case "${target}-${enable_shared}" in
5745 tmake_file="${tmake_file} t-slibgcc"
5749 # Targets for which there is at least one VxWorks port should include
5750 # vxworks-dummy.h to allow safe references to various TARGET_VXWORKS kinds
5751 # of markers from other files in the port, including the vxworks*.h files to
5752 # distinguish VxWorks variants such as VxWorks 7 or 64).
5755 arm*-*-* | i[34567]86-*-* | mips*-*-* | powerpc*-*-* | sh*-*-* \
5756 | sparc*-*-* | x86_64-*-*)
5757 tm_file="vxworks-dummy.h ${tm_file}"
5761 # Set some miscellaneous flags for particular targets.
5762 target_cpu_default2=
5765 if test x"$target_cpu_cname" != x
5767 target_cpu_default2=$target_cpu_cname
5772 if test x$with_cpu = x
5774 echo "Don't know the target cpu" 1>&2
5777 target_cpu_default2="\\\"$with_cpu\\\""
5782 if test x$gas = xyes
5784 target_cpu_default2="MASK_GAS"
5788 fido*-*-* | m68k*-*-*)
5789 target_cpu_default2=$m68k_cpu_ident
5790 tmake_file="m68k/t-opts $tmake_file"
5791 if [ x"$m68k_arch_family" != x ]; then
5792 tmake_file="m68k/t-$m68k_arch_family $tmake_file"
5796 i[34567]86-*-darwin* | x86_64-*-darwin*)
5798 i[34567]86-*-linux* | x86_64-*-linux*)
5799 extra_objs="${extra_objs} gnu-property.o"
5800 tmake_file="$tmake_file i386/t-linux i386/t-gnu-property"
5802 i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu)
5803 tmake_file="$tmake_file i386/t-kfreebsd"
5806 tmake_file="$tmake_file i386/t-gnu"
5808 i[34567]86-*-msdosdjgpp*)
5809 tmake_file="${tmake_file} i386/t-djgpp"
5811 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
5813 i[34567]86-*-cygwin* | x86_64-*-cygwin*)
5815 i[34567]86-*-mingw* | x86_64-*-mingw*)
5817 i[34567]86-*-dragonfly* | x86_64-*-dragonfly*)
5819 i[34567]86-*-freebsd*)
5822 tmake_file="${tmake_file} i386/t-freebsd64"
5828 if test x$gnu_ld = xyes
5830 target_cpu_default2="MASK_SPLIT_ADDRESSES"
5834 tm_defines="TARGET_ENDIAN_DEFAULT=0 $tm_defines"
5837 if test x$with_arch != x; then
5838 default_mips_arch=$with_arch
5840 with_arch=$default_mips_arch
5842 if test x$with_abi != x; then
5843 default_mips_abi=$with_abi
5845 case ${default_mips_arch} in
5846 mips1) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS1" ;;
5847 mips2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS2" ;;
5848 mips3) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3" ;;
5849 mips4) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS4" ;;
5850 mips32) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32" ;;
5851 mips32r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2" ;;
5852 mips32r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6" ;;
5853 mips64) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64" ;;
5854 mips64r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2" ;;
5855 mips64r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6" ;;
5857 case ${default_mips_abi} in
5858 32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_32" ;;
5859 o64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_O64" ;;
5860 n32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_N32" ;;
5861 64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_64" ;;
5862 eabi) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_EABI" ;;
5864 tmake_file="mips/t-mips $tmake_file"
5868 # Export canonical triplet.
5869 tm_defines="${tm_defines} LA_MULTIARCH_TRIPLET=${la_canonical_triplet}"
5871 # Define macro LA_DISABLE_MULTILIB if --disable-multilib
5872 tm_defines="${tm_defines} TM_MULTILIB_LIST=${loongarch_multilib_list_c}"
5873 if test x$enable_multilib = xyes; then
5874 TM_MULTILIB_CONFIG="${loongarch_multilib_list_make}"
5876 tm_defines="${tm_defines} LA_DISABLE_MULTILIB"
5879 # Let --with- flags initialize the enum variables from loongarch.opt.
5880 # See macro definitions from loongarch-opts.h and loongarch-cpu.h.
5883 tm_defines="${tm_defines} DEFAULT_CPU_ARCH=CPU_$(echo ${with_arch} | tr a-z- A-Z_)"
5886 tm_defines="${tm_defines} DEFAULT_ABI_BASE=ABI_BASE_$(echo ${abi_base} | tr a-z- A-Z_)"
5890 base) tm_defines="${tm_defines} DEFAULT_ABI_EXT=ABI_EXT_BASE" ;;
5894 if test x${with_tune} != x; then
5895 tm_defines="${tm_defines} DEFAULT_CPU_TUNE=CPU_$(echo ${with_tune} | tr a-z- A-Z_)"
5900 none) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_NONE" ;;
5901 32) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU32" ;;
5902 64) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU64" ;;
5906 case ${with_simd} in
5907 none) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_NONE" ;;
5908 lsx) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_SIMD_LSX" ;;
5909 lasx) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_SIMD_LASX" ;;
5912 tmake_file="loongarch/t-loongarch $tmake_file"
5915 powerpc*-*-* | rs6000-*-*)
5916 # FIXME: The PowerPC port uses the value set at compile time,
5917 # although it's only cosmetic.
5918 if test "x$with_cpu" != x
5920 target_cpu_default2="\\\"$with_cpu\\\""
5922 out_file="${cpu_type}/${cpu_type}.cc"
5923 c_target_objs="${c_target_objs} ${cpu_type}-c.o"
5924 cxx_target_objs="${cxx_target_objs} ${cpu_type}-c.o"
5925 d_target_objs="${d_target_objs} ${cpu_type}-d.o"
5926 tmake_file="${cpu_type}/t-${cpu_type} ${tmake_file}"
5929 sh[123456ble]*-*-* | sh-*-*)
5930 c_target_objs="${c_target_objs} sh-c.o"
5931 cxx_target_objs="${cxx_target_objs} sh-c.o"
5935 # Some standard aliases.
5940 xsparcv9 | xsparc64)
5945 if test x$with_tune = x ; then
5956 # The SPARC port checks this value at compile-time.
5957 target_cpu_default2="TARGET_CPU_$with_cpu"
5961 case "x$with_cpu" in
5964 xv850e | xv850e1 | xv850e2 | xv850e2v3 | xv850e3v5)
5965 target_cpu_default2="TARGET_CPU_$with_cpu"
5968 target_cpu_default2="TARGET_CPU_v850e1"
5973 target_cpu_default2="TARGET_CPU_$with_cpu"
5976 tmake_file="$tmake_file i386/t-gnu64"
5981 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"
5982 for option in $all_defaults
5984 eval "val=\$with_"`echo $option | sed s/-/_/g`
5985 if test -n "$val"; then
5986 case " $supported_defaults " in
5990 echo "This target does not support --with-$option." 2>&1
5991 echo "Valid --with options are: $supported_defaults" 2>&1
5998 t="{ \"$option\", \"$val\" }"
6000 t="${t}, { \"$option\", \"$val\" }"
6007 configure_default_options="{ { NULL, NULL} }"
6009 configure_default_options="{ ${t} }"
6012 if test "$target_cpu_default2" != ""
6014 if test "$target_cpu_default" != ""
6016 target_cpu_default="(${target_cpu_default}|${target_cpu_default2})"
6018 target_cpu_default=$target_cpu_default2
6023 i[34567]86-*-* | x86_64-*-*)
6024 if test x$enable_as_accelerator = xyes; then
6025 extra_programs="mkoffload\$(exeext)"