1 # SPDX-License-Identifier: GPL-3.0-or-later
2 # GCC target-specific configuration file.
3 # Copyright (C) 1997-2024 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]* \
278 if test "x$enable_obsolete" != xyes; then
279 echo "*** Configuration ${target}${target_min} is obsolete." >&2
280 echo "*** Specify --enable-obsolete to build it anyway." >&2
281 echo "*** Support will be REMOVED in the next major release of GCC," >&2
282 echo "*** unless a maintainer comes forward." >&2
287 # Unsupported targets list. Do not put an entry in this list unless
288 # it would otherwise be caught by a more permissive pattern. The list
289 # should be in alphabetical order.
291 # Avoid special cases that are not obsolete
302 | i[34567]86-go32-* \
303 | i[34567]86-*-go32* \
307 | m68k-*-uclinuxoldabi* \
308 | mips64orion*-*-rtems* \
310 | powerpc*-*-linux*paired* \
312 | sparc-hal-solaris2* \
315 | *-*-freebsd[12] | *-*-freebsd[1234].* \
316 | *-*-freebsd*aout* \
324 | *-*-solaris2.[0-9] \
325 | *-*-solaris2.[0-9].* \
330 echo "*** Configuration ${target} not supported" 1>&2
335 # Set default cpu_type, tm_file, tm_p_file and xm_file so it can be
336 # updated in each machine entry. Also set default extra_headers for some
339 cpu_type=`echo ${target} | sed 's/-.*$//'`
344 tmake_file=m32c/t-m32c
345 target_has_targetm_common=no
349 extra_headers="arm_fp16.h arm_neon.h arm_bf16.h arm_acle.h arm_sve.h arm_sme.h arm_neon_sve_bridge.h"
350 c_target_objs="aarch64-c.o"
351 cxx_target_objs="aarch64-c.o"
352 d_target_objs="aarch64-d.o"
353 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 aarch64-sve-builtins-sme.o cortex-a57-fma-steering.o aarch64-speculation.o falkor-tag-collision-avoidance.o aarch-bti-insert.o aarch64-cc-fusion.o aarch64-early-ra.o aarch64-ldp-fusion.o"
354 target_gtfiles="\$(srcdir)/config/aarch64/aarch64-builtins.h \$(srcdir)/config/aarch64/aarch64-builtins.cc \$(srcdir)/config/aarch64/aarch64-sve-builtins.h \$(srcdir)/config/aarch64/aarch64-sve-builtins.cc"
355 target_has_targetm_common=yes
359 extra_options="${extra_options} g.opt"
370 c_target_objs="arc-c.o"
371 cxx_target_objs="arc-c.o"
372 extra_options="${extra_options} arc/arc-tables.opt g.opt"
373 extra_headers="arc-simd.h"
377 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"
378 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"
379 target_type_format_char='%'
380 c_target_objs="arm-c.o"
381 cxx_target_objs="arm-c.o"
382 d_target_objs="arm-d.o"
383 extra_options="${extra_options} arm/arm-tables.opt"
384 target_gtfiles="\$(srcdir)/config/arm/arm-builtins.cc \$(srcdir)/config/arm/arm-mve-builtins.h \$(srcdir)/config/arm/arm-mve-builtins.cc"
388 c_target_objs="avr-c.o"
389 cxx_target_objs="avr-c.o"
398 extra_options="${extra_options} g.opt"
401 target_has_targetm_common=no
403 moxie*) cpu_type=moxie
404 target_has_targetm_common=no
408 extra_headers=math-68881.h
409 extra_options="${extra_options} m68k/m68k-tables.opt"
411 i[34567]86-*-* | x86_64-*-*)
413 c_target_objs="i386-c.o"
414 cxx_target_objs="i386-c.o"
415 d_target_objs="i386-d.o"
416 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"
417 target_gtfiles="\$(srcdir)/config/i386/i386-builtins.cc \$(srcdir)/config/i386/i386-expand.cc \$(srcdir)/config/i386/i386-options.cc"
418 extra_options="${extra_options} fused-madd.opt"
419 extra_headers="cpuid.h mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h
420 pmmintrin.h tmmintrin.h ammintrin.h smmintrin.h
421 nmmintrin.h bmmintrin.h fma4intrin.h wmmintrin.h
422 immintrin.h x86intrin.h avxintrin.h xopintrin.h
423 ia32intrin.h cross-stdarg.h lwpintrin.h popcntintrin.h
424 lzcntintrin.h bmiintrin.h bmi2intrin.h tbmintrin.h
425 avx2intrin.h avx512fintrin.h fmaintrin.h f16cintrin.h
426 rtmintrin.h xtestintrin.h rdseedintrin.h prfchwintrin.h
427 adxintrin.h fxsrintrin.h xsaveintrin.h xsaveoptintrin.h
428 avx512cdintrin.h avx512erintrin.h avx512pfintrin.h
429 shaintrin.h clflushoptintrin.h xsavecintrin.h
430 xsavesintrin.h avx512dqintrin.h avx512bwintrin.h
431 avx512vlintrin.h avx512vlbwintrin.h avx512vldqintrin.h
432 avx512ifmaintrin.h avx512ifmavlintrin.h avx512vbmiintrin.h
433 avx512vbmivlintrin.h avx5124fmapsintrin.h avx5124vnniwintrin.h
434 avx512vpopcntdqintrin.h clwbintrin.h mwaitxintrin.h
435 clzerointrin.h pkuintrin.h sgxintrin.h cetintrin.h
436 gfniintrin.h cet.h avx512vbmi2intrin.h
437 avx512vbmi2vlintrin.h avx512vnniintrin.h
438 avx512vnnivlintrin.h vaesintrin.h vpclmulqdqintrin.h
439 avx512vpopcntdqvlintrin.h avx512bitalgintrin.h
440 avx512bitalgvlintrin.h pconfigintrin.h wbnoinvdintrin.h
441 movdirintrin.h waitpkgintrin.h cldemoteintrin.h
442 avx512bf16vlintrin.h avx512bf16intrin.h enqcmdintrin.h
443 serializeintrin.h avx512vp2intersectintrin.h
444 avx512vp2intersectvlintrin.h tsxldtrkintrin.h
445 amxtileintrin.h amxint8intrin.h amxbf16intrin.h
446 x86gprintrin.h uintrintrin.h hresetintrin.h
447 keylockerintrin.h avxvnniintrin.h mwaitintrin.h
448 avx512fp16intrin.h avx512fp16vlintrin.h avxifmaintrin.h
449 avxvnniint8intrin.h avxneconvertintrin.h
450 cmpccxaddintrin.h amxfp16intrin.h prfchiintrin.h
451 raointintrin.h amxcomplexintrin.h avxvnniint16intrin.h
452 sm3intrin.h sha512intrin.h sm4intrin.h
456 extra_headers=ia64intrin.h
457 extra_options="${extra_options} g.opt fused-madd.opt"
463 extra_options="${extra_options} g.opt"
467 extra_options="${extra_options} g.opt"
470 extra_headers=math-68881.h
471 extra_options="${extra_options} m68k/m68k-tables.opt"
475 extra_options="${extra_options} g.opt"
479 d_target_objs="mips-d.o"
480 extra_headers="loongson.h loongson-mmiintrin.h msa.h"
481 extra_objs="frame-header-opt.o"
482 extra_options="${extra_options} g.opt fused-madd.opt mips/mips-tables.opt"
486 d_target_objs="loongarch-d.o"
487 extra_headers="larchintrin.h lsxintrin.h lasxintrin.h"
488 extra_objs="loongarch-c.o loongarch-builtins.o loongarch-cpu.o loongarch-opts.o loongarch-def.o"
489 extra_gcc_objs="loongarch-driver.o loongarch-cpu.o loongarch-opts.o loongarch-def.o"
490 extra_options="${extra_options} g.opt fused-madd.opt"
494 extra_headers="nds32_intrinsic.h nds32_isr.h nds32_init.inc"
497 extra_options="${extra_options} nds32/nds32-linux.opt"
500 extra_options="${extra_options} nds32/nds32-elf.opt"
505 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"
509 extra_options="${extra_options} g.opt"
513 c_target_objs="nvptx-c.o"
514 cxx_target_objs="nvptx-c.o"
515 extra_options="${extra_options} nvptx/nvptx-gen.opt"
522 extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
523 extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o"
524 extra_objs="${extra_objs} rs6000-builtins.o rs6000-builtin.o"
525 extra_headers="ppc-asm.h altivec.h htmintrin.h htmxlintrin.h"
526 extra_headers="${extra_headers} bmi2intrin.h bmiintrin.h"
527 extra_headers="${extra_headers} xmmintrin.h mm_malloc.h emmintrin.h"
528 extra_headers="${extra_headers} mmintrin.h x86intrin.h"
529 extra_headers="${extra_headers} pmmintrin.h tmmintrin.h smmintrin.h"
530 extra_headers="${extra_headers} nmmintrin.h immintrin.h x86gprintrin.h"
531 extra_headers="${extra_headers} ppu_intrinsics.h spu2vmx.h vec_types.h si2vmx.h"
532 extra_headers="${extra_headers} amo.h"
534 xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[3456789]|xpower10|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|xe6500)
538 extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
539 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.cc \$(srcdir)/config/rs6000/rs6000-call.cc"
540 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-pcrel-opt.cc"
541 target_gtfiles="$target_gtfiles ./rs6000-builtins.h"
548 extra_objs="riscv-builtins.o riscv-c.o riscv-sr.o riscv-shorten-memrefs.o riscv-selftests.o riscv-string.o"
549 extra_objs="${extra_objs} riscv-v.o riscv-vsetvl.o riscv-vector-costs.o riscv-avlprop.o"
550 extra_objs="${extra_objs} riscv-vector-builtins.o riscv-vector-builtins-shapes.o riscv-vector-builtins-bases.o"
551 extra_objs="${extra_objs} thead.o riscv-target-attr.o"
552 d_target_objs="riscv-d.o"
553 extra_headers="riscv_vector.h riscv_crypto.h riscv_bitmanip.h riscv_th_vector.h"
554 target_gtfiles="$target_gtfiles \$(srcdir)/config/riscv/riscv-vector-builtins.cc"
555 target_gtfiles="$target_gtfiles \$(srcdir)/config/riscv/riscv-vector-builtins.h"
558 extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
559 extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
560 extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o"
561 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.cc \$(srcdir)/config/rs6000/rs6000-call.cc"
562 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-pcrel-opt.cc"
566 c_target_objs="sparc-c.o"
567 cxx_target_objs="sparc-c.o"
568 d_target_objs="sparc-d.o"
569 extra_headers="visintrin.h"
573 d_target_objs="s390-d.o"
574 extra_options="${extra_options} fused-madd.opt"
575 extra_headers="s390intrin.h htmintrin.h htmxlintrin.h vecintrin.h"
576 target_gtfiles="./s390-gen-builtins.h"
578 # Note the 'l'; we need to be able to match e.g. "shle" or "shl".
579 sh[123456789lbe]*-*-* | sh-*-*)
581 extra_options="${extra_options} fused-madd.opt"
582 extra_objs="${extra_objs} sh_treg_combine.o sh-mem.o sh_optimize_sett_clrt.o"
589 extra_headers="c6x_intrinsics.h"
590 extra_options="${extra_options} c6x/c6x-tables.opt"
593 extra_options="${extra_options} fused-madd.opt"
594 extra_objs="xtensa-dynconfig.o"
598 tm_file=${cpu_type}/${cpu_type}.h
599 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-protos.h
601 tm_p_file=${cpu_type}/${cpu_type}-protos.h
605 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-d.h
607 tm_d_file="${tm_d_file} ${cpu_type}/${cpu_type}-d.h"
611 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-rust.h
613 tm_rust_file="${cpu_type}/${cpu_type}-rust.h"
615 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-rust.cc
617 rust_target_objs="${rust_target_objs} ${cpu_type}-rust.o"
621 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-modes.def
623 extra_modes=${cpu_type}/${cpu_type}-modes.def
625 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}.opt
627 extra_options="${extra_options} ${cpu_type}/${cpu_type}.opt"
632 tm_p_file="${tm_p_file} arm/aarch-common-protos.h"
635 if test "x$with_multilib_list" = xilp32; then
636 tm_file="aarch64/biarchilp32.h ${tm_file}"
638 tm_file="aarch64/biarchlp64.h ${tm_file}"
642 tm_file="aarch64/biarchilp32.h ${tm_file}"
645 tm_file="aarch64/biarchlp64.h ${tm_file}"
648 echo "Unknown ABI used in --with-abi=$with_abi"
653 if test "x$with_abi" != x; then
654 echo "This target does not support --with-abi."
663 if test "x$with_multilib_list" = xmx32; then
664 tm_file="i386/biarchx32.h ${tm_file}"
666 tm_file="i386/biarch64.h ${tm_file}"
670 tm_file="i386/biarch64.h ${tm_file}"
673 tm_file="i386/biarchx32.h ${tm_file}"
676 echo "Unknown ABI used in --with-abi=$with_abi"
681 tm_p_file="arm/arm-flags.h ${tm_p_file} arm/aarch-common-protos.h"
685 # On a.out targets, we need to use collect2.
692 # Common C libraries.
693 tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
695 # 32-bit x86 processors supported by --with-arch=. Each processor
696 # MUST be separated by exactly one space.
697 x86_archs="athlon athlon-4 athlon-fx athlon-mp athlon-tbird \
698 athlon-xp k6 k6-2 k6-3 geode c3 c3-2 winchip-c6 winchip2 i386 i486 \
699 i586 i686 pentium pentium-m pentium-mmx pentium2 pentium3 pentium3m \
700 pentium4 pentium4m pentiumpro prescott lakemont samuel-2 nehemiah \
703 # 64-bit x86 processors supported by --with-arch=. Each processor
704 # MUST be separated by exactly one space.
705 x86_64_archs="amdfam10 athlon64 athlon64-sse3 barcelona bdver1 bdver2 \
706 bdver3 bdver4 znver1 znver2 znver3 znver4 btver1 btver2 k8 k8-sse3 opteron \
707 opteron-sse3 nocona core2 corei7 corei7-avx core-avx-i core-avx2 atom \
708 slm nehalem westmere sandybridge ivybridge haswell broadwell bonnell \
709 silvermont knl knm skylake-avx512 cannonlake icelake-client icelake-server \
710 skylake goldmont goldmont-plus tremont cascadelake tigerlake cooperlake \
711 sapphirerapids alderlake rocketlake eden-x2 nano nano-1000 nano-2000 nano-3000 \
712 nano-x2 eden-x4 nano-x4 lujiazui yongfeng x86-64 x86-64-v2 x86-64-v3 x86-64-v4 \
713 sierraforest graniterapids graniterapids-d grandridge arrowlake arrowlake-s \
714 clearwaterforest pantherlake native"
716 # Additional x86 processors supported by --with-cpu=. Each processor
717 # MUST be separated by exactly one space.
718 x86_cpus="generic intel"
720 # Common parts for widely ported systems.
723 tmake_file="t-darwin "
724 tm_file="${tm_file} darwin.h"
725 darwin_os=`echo ${target} | sed 's/.*darwin\([0-9.]*\).*$/\1/'`
726 darwin_maj=`expr "$darwin_os" : '\([0-9]*\).*'`
727 macos_min=`expr "$darwin_os" : '[0-9]*\.\([0-9]*\).*'`
729 if test x"${macos_min}" = x; then
733 # Tools hosted on earlier versions of Darwin constrained all object
734 # alignment to be 2^15 or smaller. From Darwin11 (macOS 10.7) the
735 # alignment of non-common is allowed to be up to 2^28. Note that the
736 #Â larger alignment is permitted when targeting 10.6 from 10.7 so that
737 #Â the constraint only need be applied per host (and only if the host
740 *-*-darwin[4-9]* | *-*-darwin10*)
741 tm_defines="$tm_defines L2_MAX_OFILE_ALIGNMENT=15U"
744 tm_defines="$tm_defines L2_MAX_OFILE_ALIGNMENT=28U"
748 # Darwin 4 to 19 correspond to macOS 10.0 to 10.15
749 *-*-darwin[4-9]* | *-*-darwin1[0-9]*)
750 macos_min=`expr $darwin_maj - 4`
753 # Darwin 20 corresponds to macOS 11, Darwin 21 to macOS 12.
754 macos_maj=`expr $darwin_maj - 9`
759 aarch64) macos_maj=11 ;;
760 x86_64) macos_min=6 ;;
764 *-*-darwin*) tm_defines="$tm_defines DARWIN_USE_KERNEL_VERS" ;;
766 # If configuring a cross-compiler then we will have set some
767 #Â default above, but it is probably not what was intended.
768 echo "Warning: Using ${target} is only suitable for Darwin hosts" 1>&2
769 echo "configure with an explicit target version" 1>&2
774 echo "Error: configuring for an unreleased macOS version ${target}" 1>&2
778 tm_defines="$tm_defines DEF_MIN_OSX_VERSION=\\\"${macos_maj}.${macos_min}\\\""
779 tm_defines="$tm_defines DEF_LD64=\\\"${def_ld64}\\\""
780 tm_file="${tm_file} ${cpu_type}/darwin.h"
781 tm_p_file="${tm_p_file} darwin-protos.h"
782 target_gtfiles="$target_gtfiles \$(srcdir)/config/darwin.cc"
783 extra_options="${extra_options} rpath.opt darwin.opt"
784 c_target_objs="${c_target_objs} darwin-c.o"
785 cxx_target_objs="${cxx_target_objs} darwin-c.o"
786 d_target_objs="${d_target_objs} darwin-d.o"
787 fortran_target_objs="darwin-f.o"
788 rust_target_objs="${rust_target_objs} darwin-rust.o"
789 target_has_targetcm=yes
790 target_has_targetdm=yes
791 target_has_targetrustm=yes
792 extra_objs="${extra_objs} darwin.o"
793 extra_gcc_objs="darwin-driver.o"
794 default_use_cxa_atexit=yes
796 case ${enable_threads} in
797 "" | yes | posix) thread_file='posix' ;;
803 tmake_file="t-slibgcc"
804 case ${enable_threads} in
809 # Let these non-posix thread selections fall through if requested
812 echo 'Unknown thread configuration for DragonFly BSD'
816 extra_options="$extra_options rpath.opt dragonfly.opt"
817 default_use_cxa_atexit=yes
819 d_target_objs="${d_target_objs} dragonfly-d.o"
820 tmake_file="${tmake_file} t-dragonfly"
821 target_has_targetdm=yes
822 rust_target_objs="${rust_target_objs} dragonfly-rust.o"
823 target_has_targetrustm=yes
826 # This is the generic ELF configuration of FreeBSD. Later
827 # machine-specific sections may refine and add to this
830 # Due to tm_file entry ordering issues that vary between cpu
831 # architectures, we only define fbsd_tm_file to allow the
832 # machine-specific section to dictate the final order of all
833 # entries of tm_file with the minor exception that components
834 # of the tm_file set here will always be of the form:
836 # freebsd<version_number>.h [freebsd-<conf_option>.h ...] freebsd-spec.h freebsd.h
838 # The machine-specific section should not tamper with this
839 # ordering but may order all other entries of tm_file as it
840 # pleases around the provided core setting.
843 fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
844 if test "$fbsd_major" = ""; then
845 echo "Specify the major version number of the targeted FreeBSD release"
846 echo "like this: --target=amd64-unknown-freebsd10.1"
849 tm_defines="${tm_defines} FBSD_MAJOR=${fbsd_major}"
850 tmake_file="t-slibgcc"
851 case ${enable_threads} in
853 fbsd_tm_file="${fbsd_tm_file} freebsd-nthr.h"
859 echo 'Unknown thread configuration for FreeBSD'
863 fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h freebsd-stdint.h"
864 extra_options="$extra_options rpath.opt freebsd.opt"
869 default_use_cxa_atexit=yes;;
872 d_target_objs="${d_target_objs} freebsd-d.o"
873 tmake_file="${tmake_file} t-freebsd"
874 target_has_targetdm=yes
875 rust_target_objs="${rust_target_objs} freebsd-rust.o"
876 target_has_targetrustm=yes
879 native_system_header_dir=/include
880 tmake_file="t-fuchsia"
881 rust_target_objs="${rust_target_objs} fuchsia-rust.o"
882 target_has_targetrustm=yes
884 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi)
885 extra_options="$extra_options gnu-user.opt"
888 case ${enable_threads} in
889 "" | yes | posix) thread_file='posix' ;;
891 tmake_file="t-slibgcc"
893 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
896 native_system_header_dir=/include
899 # Linux C libraries selection switch: glibc / uclibc / bionic.
900 # uclibc and bionic aren't usable for GNU/Hurd and neither for GNU/k*BSD.
903 tm_p_file="${tm_p_file} linux-protos.h"
904 tmake_file="${tmake_file} t-linux"
905 extra_objs="${extra_objs} linux.o"
906 extra_options="${extra_options} linux.opt"
911 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC"
913 *-*-*uclibc* | *-*-uclinuxfdpiceabi)
914 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
917 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
920 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
923 # Assume that glibc or uClibc or Bionic are being used and so __cxa_atexit
925 default_use_cxa_atexit=yes
928 # Enable compilation for Android by default for *android* targets.
931 tm_defines="$tm_defines ANDROID_DEFAULT=1"
934 tm_defines="$tm_defines ANDROID_DEFAULT=0"
937 c_target_objs="${c_target_objs} glibc-c.o"
938 cxx_target_objs="${cxx_target_objs} glibc-c.o"
939 tmake_file="${tmake_file} t-glibc"
940 target_has_targetcm=yes
942 *-*-*uclibc* | *-*-uclinuxfdpiceabi)
945 # Linux targets always support .init_array.
946 gcc_cv_initfini_array=yes
951 d_target_objs="${d_target_objs} linux-d.o"
952 target_has_targetdm=yes
953 rust_target_objs="${rust_target_objs} linux-rust.o"
954 target_has_targetrustm=yes
957 d_target_objs="${d_target_objs} kfreebsd-d.o"
958 target_has_targetdm=yes
960 *-*-kopensolaris*-gnu)
961 d_target_objs="${d_target_objs} kopensolaris-d.o"
962 target_has_targetdm=yes
965 d_target_objs="${d_target_objs} gnu-d.o"
966 target_has_targetdm=yes
971 tm_p_file="${tm_p_file} netbsd-protos.h"
972 tmake_file="t-netbsd t-slibgcc"
973 extra_objs="${extra_objs} netbsd.o"
974 d_target_objs="${d_target_objs} netbsd-d.o"
978 case ${enable_threads} in
979 "" | yes | posix) thread_file='posix' ;;
981 nbsd_tm_file="netbsd.h netbsd-stdint.h netbsd-elf.h"
982 default_use_cxa_atexit=yes
983 target_has_targetdm=yes
985 arm*-* | i[34567]86-* | powerpc*-* | sparc*-* | x86_64-*)
986 default_gnu_indirect_function=yes
989 rust_target_objs="${rust_target_objs} netbsd-rust.o"
990 target_has_targetrustm=yes
993 tmake_file="t-openbsd"
994 case ${enable_threads} in
1000 *-*-openbsd4.[3-9]|*-*-openbsd[5-9]*)
1001 default_use_cxa_atexit=yes
1004 d_target_objs="${d_target_objs} openbsd-d.o"
1005 target_has_targetdm=yes
1006 rust_target_objs="${rust_target_objs} openbsd-rust.o"
1007 target_has_targetrustm=yes
1012 default_use_cxa_atexit=yes
1015 case ${enable_threads} in
1016 "" | yes | rtems) thread_file='rtems' ;;
1017 posix) thread_file='posix' ;;
1020 echo 'Unknown thread configuration for RTEMS'
1024 tmake_file="${tmake_file} t-rtems"
1025 extra_options="${extra_options} rtems.opt"
1026 default_use_cxa_atexit=yes
1030 extra_options="$extra_options gnu-user.opt"
1032 case ${enable_threads} in
1033 "" | yes | posix) thread_file='posix' ;;
1035 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC SINGLE_LIBC"
1041 # i?86-*-solaris2* needs to insert headers between cpu default and
1042 # Solaris 2 specific ones.
1043 sol2_tm_file_head="elfos.h ${cpu_type}/sysv4.h"
1044 sol2_tm_file_tail="${cpu_type}/sol2.h sol2.h"
1045 sol2_tm_file="${sol2_tm_file_head} ${sol2_tm_file_tail}"
1047 *-*-solaris2.1[1-9]*)
1048 # __cxa_atexit was introduced in Solaris 11.4.
1049 default_use_cxa_atexit=yes
1053 if test x$gnu_ld = xyes; then
1054 tm_file="usegld.h ${tm_file}"
1056 if test x$gas = xyes; then
1057 tm_file="usegas.h ${tm_file}"
1059 tm_p_file="${tm_p_file} sol2-protos.h"
1060 tmake_file="${tmake_file} t-sol2 t-slibgcc"
1061 c_target_objs="${c_target_objs} sol2-c.o"
1062 cxx_target_objs="${cxx_target_objs} sol2-c.o sol2-cxx.o"
1063 d_target_objs="${d_target_objs} sol2-d.o"
1064 extra_objs="${extra_objs} sol2.o sol2-stubs.o"
1065 extra_options="${extra_options} sol2.opt"
1066 case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
1067 "":yes:* | yes:yes:* )
1071 target_has_targetdm=yes
1072 rust_target_objs="${rust_target_objs} sol2-rust.o"
1073 target_has_targetrustm=yes
1076 extra_options="${extra_options} vms/vms.opt"
1077 xmake_file=vms/x-vms
1078 tmake_file="vms/t-vms t-slibgcc"
1080 target_gtfiles="$target_gtfiles \$(srcdir)/config/vms/vms.cc"
1081 tm_p_file="${tm_p_file} vms/vms-protos.h"
1082 xm_file="vms/xm-vms.h"
1083 c_target_objs="vms-c.o"
1084 cxx_target_objs="vms-c.o"
1085 fortran_target_objs="vms-f.o"
1086 use_gcc_stdint=provide
1087 tm_file="${tm_file} vms/vms-stdint.h"
1088 if test x$gnu_ld != xyes; then
1089 # Build wrappers for native case.
1090 extra_programs="ld\$(exeext) ar\$(exeext)"
1091 tmake_file="$tmake_file vms/t-vmsnative"
1095 tmake_file=t-vxworks
1098 extra_options="${extra_options} vxworks.opt"
1099 extra_objs="$extra_objs vxworks.o"
1101 c_target_objs="${c_target_objs} vxworks-c.o"
1102 cxx_target_objs="${cxx_target_objs} vxworks-c.o"
1103 extra_headers="${extra_headers} ../vxworks/vxworks-predef.h"
1104 target_has_targetcm="yes"
1106 rust_target_objs="${rust_target_objs} vxworks-rust.o"
1107 target_has_targetrustm=yes
1109 extra_gcc_objs="vxworks-driver.o"
1111 # This private header exposes a consistent interface for checks on
1112 # the VxWorks version our runtime header files need to perform, based on
1113 # what the system headers adverstise:
1115 extra_headers="${extra_headers} ../vxworks/_vxworks-versions.h"
1117 # Starting from VxWorks 7, the system comes with a Dinkumware
1118 # environment which requires the inclusion of "yvals.h" before other
1119 # system headers. We provide wrapped versions of a few headers to
1120 # accomodate such constraints:
1122 extra_headers="${extra_headers} ../vxworks/_yvals.h"
1123 extra_headers="${extra_headers} ../vxworks/_yvals-wrapper.h"
1125 extra_headers="${extra_headers} ../vxworks/math.h ../vxworks/complex.h"
1126 extra_headers="${extra_headers} ../vxworks/inttypes.h ../vxworks/setjmp.h"
1128 # We provide (a tailored version of) stdint.h
1129 tm_file="${tm_file} vxworks-stdint.h"
1130 use_gcc_stdint=provide
1132 case ${enable_threads} in
1134 "" | yes | vxworks) thread_file='vxworks' ;;
1135 *) echo 'Unknown thread configuration for VxWorks'; exit 1 ;;
1138 # A few common macro definitions conveying general characteristics
1139 # of the configuration at hand. Note that by VxWorks 7, we mean the
1140 # the SR6xx major update or beyond in vendor parlance:
1144 tm_defines="$tm_defines TARGET_VXWORKS7=1"
1149 tm_defines="$tm_defines TARGET_VXWORKS64=1"
1153 # Then a few build configuration controls for VxWorks 7, which
1154 # has specificities on top of which we aim to provide more complete
1159 # VxWorks 7 always has init/fini_array support and it is simpler to
1160 # just leverage this, sticking to what the system toolchain does:
1161 gcc_cv_initfini_array=yes
1165 *-*-elf|arc*-*-elf*)
1166 # Assume that newlib is being used and so __cxa_atexit is provided.
1167 default_use_cxa_atexit=yes
1170 case "${with_newlib}-${with_headers}" in
1171 no-no) use_gcc_stdint=provide ;;
1177 # Figure out if we need to enable heap trampolines by default
1180 # Currently, we do this for macOS 11 and above.
1181 tm_defines="$tm_defines HEAP_TRAMPOLINES_INIT=1"
1184 tm_defines="$tm_defines HEAP_TRAMPOLINES_INIT=0"
1189 aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
1190 tm_file="${tm_file} elfos.h newlib-stdint.h"
1191 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-elf-raw.h"
1192 tmake_file="${tmake_file} aarch64/t-aarch64"
1198 tm_file="${tm_file} fuchsia.h"
1201 tm_file="${tm_file} aarch64/rtems.h rtems.h"
1206 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1209 aarch64_multilibs="${with_multilib_list}"
1210 if test "$aarch64_multilibs" = "default"; then
1211 aarch64_multilibs="lp64,ilp32"
1213 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1214 for aarch64_multilib in ${aarch64_multilibs}; do
1215 case ${aarch64_multilib} in
1217 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1220 echo "--with-multilib-list=${aarch64_multilib} not supported."
1224 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1226 aarch64*-*-freebsd*)
1227 tm_file="${tm_file} elfos.h ${fbsd_tm_file}"
1228 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-freebsd.h"
1229 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
1230 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1233 tm_file="${tm_file} elfos.h ${nbsd_tm_file}"
1234 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-netbsd.h"
1235 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-netbsd"
1236 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1239 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h"
1240 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-linux.h"
1241 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-linux"
1242 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1245 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1248 aarch64_multilibs="${with_multilib_list}"
1249 if test "$aarch64_multilibs" = "default"; then
1250 # TODO: turn on ILP32 multilib build after its support is mature.
1251 # aarch64_multilibs="lp64,ilp32"
1252 aarch64_multilibs="lp64"
1254 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1255 for aarch64_multilib in ${aarch64_multilibs}; do
1256 case ${aarch64_multilib} in
1258 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1261 echo "--with-multilib-list=${aarch64_multilib} not supported."
1265 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1267 aarch64*-wrs-vxworks*)
1268 tm_file="${tm_file} elfos.h aarch64/aarch64-elf.h"
1269 tm_file="${tm_file} vx-common.h vxworks.h aarch64/aarch64-vxworks.h"
1270 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-vxworks"
1273 tm_file="elfos.h ${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h glibc-stdint.h"
1274 tmake_file="${tmake_file} alpha/t-linux alpha/t-alpha"
1275 extra_options="${extra_options} alpha/elf.opt"
1278 tm_file="elfos.h ${tm_file} ${nbsd_tm_file} alpha/elf.h alpha/netbsd.h"
1279 tmake_file="${tmake_file} alpha/t-alpha"
1280 extra_options="${extra_options} netbsd.opt netbsd-elf.opt \
1284 tm_defines="${tm_defines} OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_FUNCTION_SIZE OBSD_HAS_DECLARE_OBJECT"
1285 tm_file="elfos.h alpha/alpha.h alpha/elf.h openbsd.h openbsd-stdint.h alpha/openbsd.h openbsd-libpthread.h"
1286 tmake_file="${tmake_file} alpha/t-alpha"
1287 extra_options="${extra_options} openbsd.opt alpha/elf.opt"
1288 # default x-alpha is only appropriate for dec-osf.
1291 tm_file="${tm_file} vms/vms.h alpha/vms.h"
1292 tmake_file="${tmake_file} alpha/t-vms alpha/t-alpha"
1295 tm_file="arc/arc-arch.h elfos.h newlib-stdint.h arc/elf.h ${tm_file}"
1296 tmake_file="arc/t-multilib arc/t-arc"
1297 extra_gcc_objs="driver-arc.o"
1298 if test "x$with_cpu" != x; then
1299 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1301 if test x${with_endian} = x; then
1303 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1304 *) with_endian=little ;;
1307 case ${with_endian} in
1309 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1311 case ${with_endian} in
1312 big*) tm_file="arc/big.h ${tm_file}"
1316 tm_file="arc/arc-arch.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arc/linux.h ${tm_file}"
1317 tmake_file="${tmake_file} arc/t-multilib-linux arc/t-arc"
1318 extra_gcc_objs="driver-arc.o"
1319 if test "x$with_cpu" != x; then
1320 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1322 if test x${with_endian} = x; then
1324 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1325 *) with_endian=little ;;
1328 case ${with_endian} in
1330 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1332 case ${with_endian} in
1333 big*) tm_file="arc/big.h ${tm_file}"
1335 # Force .init_array support. The configure script cannot always
1336 # automatically detect that GAS supports it, yet we require it.
1337 gcc_cv_initfini_array=yes
1340 # We only support VxWorks 7 now on ARM, post SR600. Pre SR600
1341 # VxWorks 7 was transitory and major versions prior to 7 were based
1342 # on long deprecated ABI, not supported at all any more regardless
1344 extra_options="${extra_options} arm/vxworks.opt"
1345 tmake_file="${tmake_file} arm/t-arm arm/t-vxworks arm/t-bpabi"
1346 tm_file="elfos.h arm/elf.h arm/bpabi.h arm/aout.h ${tm_file}"
1347 tm_file="${tm_file} vx-common.h vxworks.h arm/vxworks.h"
1348 target_cpu_cname="generic-armv7-a"
1349 need_64bit_hwint=yes
1351 arm*-*-freebsd*) # ARM FreeBSD EABI
1352 tm_file="elfos.h ${fbsd_tm_file} arm/elf.h"
1355 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1358 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi"
1359 tm_file="${tm_file} arm/bpabi.h arm/freebsd.h arm/aout.h arm/arm.h"
1362 target_cpu_cname="arm1176jzf-s"
1363 if test $fbsd_major -ge 11; then
1364 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1368 target_cpu_cname="generic-armv7-a"
1369 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1372 target_cpu_cname="arm9"
1375 with_tls=${with_tls:-gnu}
1378 target_cpu_cname="strongarm"
1379 tmake_file="${tmake_file} arm/t-arm"
1380 tm_file="elfos.h ${nbsd_tm_file} arm/elf.h"
1381 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1383 arm*eb-*) tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" ;;
1386 arm*-*-netbsdelf-*eabi*)
1387 tm_file="$tm_file arm/bpabi.h arm/netbsd-elf.h arm/netbsd-eabi.h"
1388 tmake_file="$tmake_file arm/t-bpabi arm/t-netbsdeabi"
1391 tm_file="$tm_file arm/netbsd-elf.h"
1392 tmake_file="$tmake_file arm/t-netbsd"
1395 tm_file="${tm_file} arm/aout.h arm/arm.h"
1397 arm*-*-netbsdelf-*eabihf*)
1398 # Hard-float requires at least Arm v5te
1399 target_cpu_cname="arm10e"
1400 tm_defines="${tm_defines} TARGET_DEFAULT_FLOAT_ABI=ARM_FLOAT_ABI_HARD"
1404 armv6*) target_cpu_cname="arm1176jzf-s";;
1405 armv7*) target_cpu_cname="generic-armv7-a";;
1408 arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)
1409 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"
1410 extra_options="${extra_options} linux-android.opt"
1413 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1416 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
1417 tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h arm/aout.h arm/arm.h"
1419 arm*-*-uclinuxfdpiceabi)
1420 tm_file="$tm_file arm/uclinuxfdpiceabi.h"
1423 # Define with_float to "hard" if not already defined and
1424 # target name ends with "hf"
1425 case $target:$with_float in
1430 # Generation of floating-point instructions requires at least ARMv5te.
1431 if [ "$with_float" = "hard" -o "$with_float" = "softfp" ] ; then
1432 target_cpu_cname="arm10e"
1434 target_cpu_cname="arm10tdmi"
1436 # Define multilib configuration for arm-linux-androideabi.
1439 tmake_file="$tmake_file arm/t-linux-androideabi"
1442 # The EABI requires the use of __cxa_atexit.
1443 default_use_cxa_atexit=yes
1444 with_tls=${with_tls:-gnu}
1446 arm*-*-uclinux*eabi*) # ARM ucLinux
1447 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
1448 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi"
1449 tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h arm/aout.h arm/arm.h"
1450 target_cpu_cname="arm7tdmi"
1451 # The EABI requires the use of __cxa_atexit.
1452 default_use_cxa_atexit=yes
1455 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1456 tm_file="${tm_file} newlib-stdint.h phoenix.h"
1457 tm_file="${tm_file} arm/aout.h arm/arm.h"
1458 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi arm/t-phoenix"
1459 target_cpu_cname="arm7tdmi"
1461 arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
1464 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1466 default_use_cxa_atexit=yes
1467 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1468 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf"
1469 target_cpu_cname="arm7tdmi"
1472 tm_file="$tm_file newlib-stdint.h"
1473 tmake_file="${tmake_file} arm/t-bpabi"
1477 tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h"
1478 tmake_file="${tmake_file} arm/t-bpabi arm/t-fuchsia"
1479 target_cpu_cname="generic-armv7-a"
1482 tm_file="${tm_file} arm/rtems.h rtems.h newlib-stdint.h"
1483 tmake_file="${tmake_file} arm/t-bpabi arm/t-rtems"
1486 tm_file="${tm_file} arm/symbian.h"
1487 # We do not include t-bpabi for Symbian OS because the system
1488 # provides its own implementation of the BPABI functions.
1489 tmake_file="${tmake_file} arm/t-symbian"
1490 target_cpu_cname="arm10tdmi"
1493 tm_file="${tm_file} arm/aout.h arm/arm.h"
1496 tm_file="elfos.h avr/elf.h avr/avr-arch.h avr/avr.h avr/specs.h avr/avr-stdint.h"
1497 if test x${with_avrlibc} != xno; then
1498 tm_file="${tm_file} ${cpu_type}/avrlibc.h"
1499 tm_defines="${tm_defines} WITH_AVRLIBC"
1501 # Work out avr_double_comparison which is 2 or 3 and is used in
1502 # target hook FLOAT_LIB_COMPARE_RETURNS_BOOL to determine whether
1503 # DFmode comparisons return 3-state or 2-state results.
1504 case y${with_double_comparison} in
1506 avr_double_comparison=3
1509 avr_double_comparison=2
1512 echo "Error: --with-double-comparison= can only be used with: 'tristate', 'bool', 'libf7'" 1>&2
1516 case "y${with_libf7}" in
1518 # avr_double_comparison as set above.
1521 avr_double_comparison=2
1522 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1524 y | yyes | ymath-symbols)
1525 avr_double_comparison=2
1526 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1527 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1528 tm_defines="${tm_defines} WITH_LIBF7_MATH_SYMBOLS"
1531 avr_double_comparison=2
1532 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1533 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1536 echo "Error: --with-libf7=${with_libf7} but can only be used with: 'libgcc', 'math', 'math-symbols', 'yes', 'no'" 1>&2
1540 tm_defines="${tm_defines} WITH_DOUBLE_COMPARISON=${avr_double_comparison}"
1541 case y${with_double} in
1544 tm_defines="${tm_defines} HAVE_DOUBLE32"
1548 tm_defines="${tm_defines} HAVE_DOUBLE64"
1552 avr_double_multilib=1
1553 tm_defines="${tm_defines} HAVE_DOUBLE32"
1554 tm_defines="${tm_defines} HAVE_DOUBLE64"
1555 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1559 avr_double_multilib=1
1560 tm_defines="${tm_defines} HAVE_DOUBLE32"
1561 tm_defines="${tm_defines} HAVE_DOUBLE64"
1562 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1565 echo "Error: --with-double= can only be used with: '32', '32,64', '64,32', '64'" 1>&2
1569 case y${with_long_double} in
1572 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1576 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1580 avr_long_double_multilib=1
1581 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1582 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1583 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1587 avr_long_double_multilib=1
1588 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1589 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1590 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1593 avr_long_double=${avr_double}
1594 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_IS_DOUBLE"
1595 if test y${avr_double_multilib} = y1; then
1596 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1597 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1599 tm_defines="${tm_defines} HAVE_LONG_DOUBLE${avr_long_double}"
1603 echo "Error: --with-long_double= can only be used with: '32', '32,64', '64,32', '64', 'double'" 1>&2
1607 if test ${avr_long_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 32xy1z; then
1608 if test y${with_long_double} != ydouble; then
1609 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
1613 if test ${avr_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 64x1yz; then
1614 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
1617 if test y${avr_double}${avr_long_double} = y6432; then
1618 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
1621 tm_defines="${tm_defines} WITH_DOUBLE${avr_double}"
1622 tm_defines="${tm_defines} WITH_LONG_DOUBLE${avr_long_double}"
1623 tmake_file="${tmake_file} avr/t-avr avr/t-multilib"
1625 extra_gcc_objs="driver-avr.o avr-devices.o"
1626 extra_objs="avr-devices.o avr-log.o"
1629 tm_file="${tm_file} elfos.h newlib-stdint.h bfin/elf.h"
1630 tmake_file=bfin/t-bfin-elf
1634 tm_file="${tm_file} elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/uclinux.h"
1635 tmake_file=bfin/t-bfin-uclinux
1638 bfin*-linux-uclibc*)
1639 tm_file="${tm_file} elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/linux.h ./linux-sysroot-suffix.h"
1640 tmake_file="${tmake_file} bfin/t-bfin-linux"
1644 tm_file="${tm_file} elfos.h bfin/elf.h bfin/rtems.h rtems.h newlib-stdint.h"
1645 tmake_file="${tmake_file} bfin/t-rtems"
1648 tm_file="${tm_file} elfos.h newlib-stdint.h bfin/elf.h"
1653 tm_file="elfos.h ${tm_file}"
1654 tmake_file="${tmake_file} bpf/t-bpf"
1656 use_gcc_stdint=provide
1657 extra_objs="btfext-out.o core-builtins.o"
1658 target_gtfiles="$target_gtfiles \$(srcdir)/config/bpf/btfext-out.cc \$(srcdir)/config/bpf/core-builtins.cc"
1660 cris-*-elf | cris-*-none)
1661 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1662 tmake_file="cris/t-cris cris/t-elfmulti"
1664 extra_options="${extra_options} cris/elf.opt"
1668 if test x${with_endian} != x; then
1669 case ${with_endian} in
1672 echo "with_endian=${with_endian} not supported."
1677 if test x${with_float} != x; then
1678 case ${with_float} in
1679 soft | hard | softfp) ;;
1681 "Unknown floating point type used in --with-float=$with_float"
1686 tm_file="csky/csky.h"
1687 md_file="csky/csky.md"
1688 out_file="csky/csky.cc"
1689 tm_p_file="${tm_p_file} csky/csky-protos.h"
1690 extra_options="${extra_options} csky/csky_tables.opt"
1692 if test x${enable_tpf_debug} = xyes; then
1693 tm_defines="${tm_defines} ENABLE_TPF_DEBUG"
1698 tm_file="elfos.h newlib-stdint.h ${tm_file} csky/csky-elf.h"
1699 tmake_file="csky/t-csky csky/t-csky-elf"
1700 default_use_cxa_atexit=no
1704 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} csky/csky-linux-elf.h"
1705 tmake_file="${tmake_file} csky/t-csky"
1707 if test "x${enable_multilib}" = xyes ; then
1708 tm_defines="$tm_defines CSKY_ENABLE_MULTILIB"
1709 tmake_file="${tmake_file} csky/t-csky-linux"
1714 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
1715 # Force .init_array support. The configure script cannot always
1716 # automatically detect that GAS supports it, yet we require it.
1717 gcc_cv_initfini_array=yes
1719 csky-*-linux-uclibc*)
1720 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
1721 default_use_cxa_atexit=no
1724 echo "Unknown target $target"
1730 echo "Unknown target $target"
1735 epiphany-*-elf | epiphany-*-rtems*)
1736 tm_file="elfos.h ${tm_file}"
1737 tmake_file="${tmake_file} epiphany/t-epiphany"
1740 tm_file="${tm_file} epiphany/rtems.h rtems.h newlib-stdint.h"
1743 tm_file="${tm_file} newlib-stdint.h"
1746 extra_options="${extra_options} fused-madd.opt"
1747 extra_objs="${extra_objs} mode-switch-use.o resolve-sw-modes.o"
1748 tm_defines="${tm_defines} EPIPHANY_STACK_OFFSET=${with_stack_offset:-8}"
1749 extra_headers="epiphany_intrinsics.h"
1752 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1755 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1756 tmake_file=frv/t-frv
1759 tm_file="elfos.h ${tm_file} \
1760 gnu-user.h linux.h glibc-stdint.h frv/linux.h"
1761 tmake_file="${tmake_file} frv/t-frv frv/t-linux"
1766 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1767 tmake_file="${tmake_file} ft32/t-ft32"
1770 tm_file="elfos.h gcn/gcn-hsa.h gcn/gcn.h newlib-stdint.h"
1771 tmake_file="gcn/t-gcn-hsa"
1772 native_system_header_dir=/include
1773 extra_modes=gcn/gcn-modes.def
1774 extra_objs="${extra_objs} gcn-tree.o"
1776 x86_64*-*-linux-gnu )
1777 if test "$ac_cv_search_dlopen" != no; then
1778 extra_programs="${extra_programs} gcn-run\$(exeext)"
1782 if test x$enable_as_accelerator = xyes; then
1783 extra_programs="${extra_programs} mkoffload\$(exeext)"
1784 tm_file="${tm_file} gcn/offload.h"
1786 # Force .init_array support.
1787 gcc_cv_initfini_array=yes
1793 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1794 tmake_file="${tmake_file} moxie/t-moxie"
1799 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h moxie/uclinux.h"
1800 tmake_file="${tmake_file} moxie/t-moxie"
1803 tmake_file="${tmake_file} moxie/t-moxie"
1804 tm_file="moxie/moxie.h elfos.h moxie/rtems.h rtems.h newlib-stdint.h"
1809 tm_file="${tm_file} elfos.h moxie/moxiebox.h newlib-stdint.h"
1810 tmake_file="${tmake_file} moxie/t-moxiebox"
1813 tmake_file="h8300/t-h8300"
1814 tm_file="h8300/h8300.h elfos.h newlib-stdint.h h8300/elf.h"
1817 tmake_file="${tmake_file} h8300/t-h8300 h8300/t-linux"
1818 tm_file="h8300/h8300.h elfos.h gnu-user.h linux.h glibc-stdint.h h8300/linux.h"
1821 target_cpu_default="MASK_PA_11|MASK_PA_20"
1822 tm_file="pa/pa64-start.h ${tm_file} elfos.h gnu-user.h linux.h \
1823 glibc-stdint.h pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h \
1825 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1826 d_target_objs="${d_target_objs} pa-d.o"
1830 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS|MASK_CALLER_COPIES"
1831 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h pa/pa-linux.h \
1832 pa/pa32-regs.h pa/pa32-linux.h"
1833 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1834 d_target_objs="${d_target_objs} pa-d.o"
1837 target_cpu_default="MASK_PA_11"
1838 tm_file="${tm_file} elfos.h openbsd.h openbsd-stdint.h openbsd-libpthread.h \
1839 pa/pa-openbsd.h pa/pa32-regs.h pa/pa32-openbsd.h"
1840 extra_options="${extra_options} openbsd.opt"
1841 tmake_file="pa/t-pa"
1842 d_target_objs="${d_target_objs} pa-d.o"
1847 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS"
1848 tm_file="${tm_file} elfos.h ${nbsd_tm_file} \
1849 pa/pa-netbsd.h pa/pa32-regs.h pa/pa32-netbsd.h"
1850 tmake_file="${tmake_file}"
1851 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
1852 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1855 target_cpu_default="MASK_PA_11|MASK_PA_20"
1856 if test x$gnu_ld = xyes
1858 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
1860 tm_file="pa/pa64-start.h ${tm_file} elfos.h \
1861 pa/pa64-regs.h pa/pa-hpux.h pa/pa-hpux1010.h \
1865 tm_file="${tm_file} pa/pa-hpux1111.h pa/pa-64.h pa/pa64-hpux.h"
1866 extra_options="${extra_options} pa/pa-hpux1111.opt"
1869 tm_file="${tm_file} pa/pa-hpux1131.h pa/pa-64.h pa/pa64-hpux.h"
1870 extra_options="${extra_options} pa/pa-hpux1131.opt"
1873 tm_file="${tm_file} pa/pa-64.h pa/pa64-hpux.h"
1876 extra_options="${extra_options} pa/pa-hpux.opt \
1877 pa/pa-hpux1010.opt pa/pa64-hpux.opt hpux11.opt"
1878 tmake_file="pa/t-pa t-slibgcc"
1879 d_target_objs="${d_target_objs} pa-d.o"
1880 case x${enable_threads} in
1888 use_gcc_stdint=provide
1889 tm_file="${tm_file} hpux-stdint.h"
1893 tm_file="${tm_file} hpux-stdint.h"
1897 i[34567]86-*-darwin1[89]* | i[34567]86-*-darwin2*)
1898 echo "Error: 32bit target is not supported after Darwin17" 1>&2
1900 i[34567]86-*-darwin*)
1902 # Baseline choice for a machine that allows m64 support.
1903 with_cpu=${with_cpu:-core2}
1904 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch t-slibgcc"
1905 tm_file="${cpu_type}/darwin32-biarch.h ${tm_file} "
1907 x86_64-*-darwin1[89]* | x86_64-*-darwin2*)
1909 tm_defines="${tm_defines} TARGET_64BIT_DEFAULT=(OPTION_MASK_ISA_64BIT|OPTION_MASK_ABI_64)"
1910 tm_defines="${tm_defines} TARGET_BI_ARCH=0"
1911 with_cpu=${with_cpu:-core2}
1912 tmake_file="${tmake_file} t-slibgcc"
1915 with_cpu=${with_cpu:-core2}
1916 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
1917 tm_file="${cpu_type}/darwin64-biarch.h ${tm_file} "
1919 i[34567]86-*-elfiamcu)
1920 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/iamcu.h"
1923 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h"
1926 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h"
1929 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"
1932 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/rdos.h"
1935 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"
1936 tmake_file="i386/t-i386elf t-svr4"
1938 i[34567]86-*-dragonfly*)
1939 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h dragonfly.h dragonfly-stdint.h i386/dragonfly.h"
1940 tmake_file="${tmake_file} i386/t-crtstuff"
1942 x86_64-*-dragonfly*)
1943 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h dragonfly.h dragonfly-stdint.h i386/x86-64.h i386/dragonfly.h"
1944 tmake_file="${tmake_file} i386/t-crtstuff"
1946 i[34567]86-*-freebsd*)
1947 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
1950 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"
1952 i[34567]86-*-netbsdelf*)
1953 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${nbsd_tm_file} i386/netbsd-elf.h"
1954 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1957 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${nbsd_tm_file} i386/x86-64.h i386/netbsd64.h"
1958 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1960 i[34567]86-*-openbsd*)
1961 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
1962 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/openbsdelf.h"
1963 extra_options="${extra_options} openbsd.opt"
1968 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
1969 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/x86-64.h i386/openbsdelf.h"
1970 extra_options="${extra_options} openbsd.opt"
1974 i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu)
1975 # Intel 80386's running GNU/*
1976 # with ELF format using glibc 2
1977 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h gnu-user.h glibc-stdint.h"
1979 i[34567]86-*-linux*)
1980 tm_file="${tm_file} linux.h linux-android.h"
1981 extra_options="${extra_options} linux-android.opt"
1982 if test x$enable_targets = xall; then
1983 tm_file="${tm_file} i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h i386/linux-common.h i386/linux64.h"
1984 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
1985 tmake_file="${tmake_file} i386/t-linux64"
1986 x86_multilibs="${with_multilib_list}"
1987 if test "$x86_multilibs" = "default"; then
1988 x86_multilibs="m64,m32"
1990 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
1991 for x86_multilib in ${x86_multilibs}; do
1992 case ${x86_multilib} in
1994 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
1997 echo "--with-multilib-list=${x86_with_multilib} not supported."
2001 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2003 if test x$with_cpu = x; then
2004 if test x$with_cpu_64 = x; then
2008 case " $x86_cpus $x86_archs $x86_64_archs " in
2012 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2013 echo "$x86_cpus $x86_archs $x86_64_archs " 1>&2
2019 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h i386/linux-common.h i386/linux.h"
2022 i[34567]86-*-kfreebsd*-gnu)
2023 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kfreebsd-gnu.h i386/kfreebsd-gnu.h"
2025 i[34567]86-*-kopensolaris*-gnu)
2026 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kopensolaris-gnu.h i386/kopensolaris-gnu.h"
2029 tm_file="$tm_file i386/gnu-user-common.h i386/gnu-user.h gnu.h i386/gnu.h"
2033 x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-gnu*)
2034 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h gnu-user.h glibc-stdint.h \
2035 i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h"
2038 tm_file="${tm_file} linux.h linux-android.h i386/linux-common.h i386/linux64.h"
2039 extra_options="${extra_options} linux-android.opt"
2041 x86_64-*-kfreebsd*-gnu)
2042 tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu64.h"
2045 tm_file="${tm_file} gnu.h i386/gnu64.h"
2048 tmake_file="${tmake_file} i386/t-linux64"
2049 x86_multilibs="${with_multilib_list}"
2050 if test "$x86_multilibs" = "default"; then
2053 x86_multilibs="mx32"
2056 x86_multilibs="m64,m32"
2060 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
2061 for x86_multilib in ${x86_multilibs}; do
2062 case ${x86_multilib} in
2064 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
2067 echo "--with-multilib-list=${x86_with_multilib} not supported."
2071 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2073 i[34567]86-pc-msdosdjgpp*)
2074 xm_file=i386/xm-djgpp.h
2075 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/djgpp.h i386/djgpp-stdint.h"
2076 native_system_header_dir=/dev/env/DJDIR/include
2077 extra_options="${extra_options} i386/djgpp.opt"
2082 i[34567]86-*-lynxos*)
2084 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h i386/lynx.h lynx.h"
2085 tmake_file="${tmake_file} t-lynx"
2086 extra_options="${extra_options} lynx.opt"
2091 i[34567]86-*-nto-qnx*)
2092 tm_file="${tm_file} i386/att.h tm-dwarf2.h elfos.h i386/unix.h i386/nto.h"
2093 extra_options="${extra_options} i386/nto.opt"
2097 i[34567]86-*-rtems*)
2098 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h i386/i386elf.h i386/rtemself.h rtems.h newlib-stdint.h"
2099 tmake_file="${tmake_file} i386/t-rtems"
2101 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
2102 # Set default arch_32 to pentium4, tune_32 to generic like the other
2103 # i386 targets, although config.guess defaults to i386-pc-solaris2*.
2104 with_arch_32=${with_arch_32:-pentium4}
2105 with_tune_32=${with_tune_32:-generic}
2106 tm_file="${tm_file} i386/unix.h i386/att.h ${sol2_tm_file_head} i386/x86-64.h ${sol2_tm_file_tail}"
2107 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2108 tmake_file="$tmake_file i386/t-sol2"
2110 if test x$with_cpu = x; then
2111 if test x$with_cpu_64 = x; then
2115 case " $x86_cpus $x86_archs $x86_64_archs " in
2119 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2120 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2126 i[4567]86-wrs-vxworks*|x86_64-wrs-vxworks7*)
2127 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
2131 tm_file="${tm_file} i386/x86-64.h"
2134 tm_file="${tm_file} vx-common.h"
2137 tm_file="${tm_file} vxworksae.h i386/vxworks.h i386/vxworksae.h"
2138 tmake_file="${tmake_file} i386/t-vxworks i386/t-vxworksae"
2141 tm_file="${tm_file} vxworks.h i386/vxworks.h"
2142 tmake_file="${tmake_file} i386/t-vxworks"
2146 i[34567]86-*-cygwin*)
2147 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h i386/cygwin.h i386/cygwin-stdint.h"
2148 xm_file=i386/xm-cygwin.h
2149 tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
2150 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2151 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
2152 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2153 c_target_objs="${c_target_objs} msformat-c.o"
2154 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2155 d_target_objs="${d_target_objs} cygwin-d.o"
2156 target_has_targetdm="yes"
2157 if test x$enable_threads = xyes; then
2160 default_use_cxa_atexit=yes
2165 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"
2166 xm_file=i386/xm-cygwin.h
2167 tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
2168 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2169 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
2170 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2171 c_target_objs="${c_target_objs} msformat-c.o"
2172 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2173 d_target_objs="${d_target_objs} cygwin-d.o"
2174 target_has_targetdm="yes"
2175 if test x$enable_threads = xyes; then
2178 default_use_cxa_atexit=yes
2180 tm_defines="${tm_defines} TARGET_CYGWIN64=1"
2182 i[34567]86-*-mingw* | x86_64-*-mingw*)
2183 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h"
2184 xm_file=i386/xm-mingw32.h
2185 c_target_objs="${c_target_objs} winnt-c.o"
2186 cxx_target_objs="${cxx_target_objs} winnt-c.o"
2187 d_target_objs="${d_target_objs} winnt-d.o"
2188 target_has_targetcm="yes"
2189 target_has_targetdm="yes"
2190 rust_target_objs="${rust_target_objs} winnt-rust.o"
2191 target_has_targetrustm="yes"
2193 x86_64-*-* | *-w64-*)
2199 if test x$enable_threads = xposix ; then
2200 tm_file="${tm_file} i386/mingw-pthread.h"
2202 if test x$enable_threads = xmcf ; then
2203 tm_file="${tm_file} i386/mingw-mcfgthread.h"
2205 tm_file="${tm_file} i386/mingw32.h"
2206 # This makes the logic if mingw's or the w64 feature set has to be used
2209 user_headers_inc_next_post="${user_headers_inc_next_post} float.h"
2210 user_headers_inc_next_pre="${user_headers_inc_next_pre} stddef.h stdarg.h"
2211 tm_file="${tm_file} i386/mingw-w64.h"
2212 if test x$enable_targets = xall; then
2213 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2214 if test x$with_cpu = x; then
2215 if test x$with_cpu_64 = x; then
2219 case " $x86_cpus $x86_archs $x86_64_archs " in
2223 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2224 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2234 tm_file="${tm_file} i386/mingw-stdint.h"
2235 tmake_file="${tmake_file} t-winnt i386/t-cygming t-slibgcc"
2238 tmake_file="${tmake_file} i386/t-mingw-w64"
2241 tmake_file="${tmake_file} i386/t-mingw-w32"
2244 native_system_header_dir=/mingw/include
2245 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2246 extra_options="${extra_options} i386/cygming.opt i386/mingw.opt"
2249 extra_options="${extra_options} i386/mingw-w64.opt"
2254 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2255 c_target_objs="${c_target_objs} msformat-c.o"
2256 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2259 default_use_cxa_atexit=yes
2261 case ${enable_threads} in
2271 tm_file="${tm_file} i386/crtdll.h"
2273 *mingw32msv* | *mingw*)
2278 tmake_file="${tmake_file} i386/t-x86_64-elf"
2279 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h fuchsia.h"
2282 tm_file="${tm_file} elfos.h newlib-stdint.h ia64/sysv4.h ia64/elf.h"
2283 tmake_file="ia64/t-ia64"
2284 target_cpu_default="0"
2285 if test x$gas = xyes
2287 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2289 if test x$gnu_ld = xyes
2291 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
2295 tm_file="${tm_file} elfos.h ${fbsd_tm_file} ia64/sysv4.h ia64/freebsd.h"
2296 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2297 tmake_file="${tmake_file} ia64/t-ia64"
2300 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h ia64/sysv4.h ia64/linux.h"
2301 tmake_file="${tmake_file} ia64/t-ia64 ia64/t-linux t-libunwind"
2302 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2305 tm_file="${tm_file} elfos.h ia64/sysv4.h ia64/hpux.h"
2306 tmake_file="ia64/t-ia64 ia64/t-hpux t-slibgcc"
2307 target_cpu_default="MASK_GNU_AS"
2308 case x$enable_threads in
2314 c_target_objs="ia64-c.o"
2315 cxx_target_objs="ia64-c.o"
2316 extra_options="${extra_options} ia64/ilp32.opt hpux11.opt"
2318 tm_file="${tm_file} hpux-stdint.h"
2321 tm_file="${tm_file} ia64/hpux-unix2003.h"
2326 tm_file="${tm_file} elfos.h ia64/sysv4.h vms/vms.h ia64/vms.h"
2327 tmake_file="${tmake_file} ia64/t-ia64"
2328 target_cpu_default="0"
2329 if test x$gas = xyes
2331 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2333 extra_options="${extra_options} ia64/vms.opt"
2336 tm_file="elfos.h newlib-stdint.h iq2000/iq2000.h"
2337 out_file=iq2000/iq2000.cc
2338 md_file=iq2000/iq2000.md
2341 tm_file="elfos.h ${tm_file} newlib-stdint.h"
2342 tmake_file="${tmake_file} lm32/t-lm32"
2345 tm_file="elfos.h ${tm_file} lm32/rtems.h rtems.h newlib-stdint.h"
2346 tmake_file="${tmake_file} lm32/t-lm32"
2347 tmake_file="${tmake_file} lm32/t-rtems"
2350 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h lm32/uclinux-elf.h"
2351 tmake_file="${tmake_file} lm32/t-lm32"
2354 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2357 tm_file="elfos.h newlib-stdint.h m32r/little.h ${tm_file}"
2359 m68k-*-elf* | fido-*-elf*)
2362 # Check that $with_cpu makes sense.
2367 echo "Cannot accept --with-cpu=$with_cpu"
2374 default_m68k_cpu=68020
2378 tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h elfos.h newlib-stdint.h m68k/m68kemb.h m68k/m68020-elf.h"
2379 tm_defines="${tm_defines} MOTOROLA=1"
2380 tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-m68kelf"
2381 # Add multilibs for targets other than fido.
2386 tmake_file="$tmake_file m68k/t-mlibs"
2391 default_m68k_cpu=68020
2393 tm_file="${tm_file} elfos.h ${nbsd_tm_file} m68k/netbsd-elf.h"
2394 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2395 tm_defines="${tm_defines} MOTOROLA=1 CHAR_FAST8=1 SHORT_FAST16=1"
2397 m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux
2398 # with uClibc, using the new GNU/Linux-style
2400 default_m68k_cpu=68020
2402 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"
2403 extra_options="${extra_options} m68k/uclinux.opt"
2404 tm_defines="${tm_defines} MOTOROLA=1"
2405 tmake_file="m68k/t-floatlib m68k/t-uclinux m68k/t-mlibs"
2407 m68k-*-linux*) # Motorola m68k's running GNU/Linux
2408 # with ELF format using glibc 2
2409 # aka the GNU/Linux C library 6.
2410 default_m68k_cpu=68020
2412 with_arch=${with_arch:-m68k}
2413 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h m68k/linux.h ./sysroot-suffix.h"
2414 extra_options="${extra_options} m68k/ieee.opt"
2415 tm_defines="${tm_defines} MOTOROLA=1"
2416 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-linux m68k/t-mlibs"
2419 default_m68k_cpu=68020
2421 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-m68kbare m68k/t-crtstuff m68k/t-rtems m68k/t-mlibs"
2422 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"
2423 tm_defines="${tm_defines} MOTOROLA=1"
2426 tm_file="elfos.h newlib-stdint.h ${tm_file} mcore/mcore-elf.h"
2427 tmake_file=mcore/t-mcore
2433 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2436 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2439 tm_file="${tm_file} gnu-user.h linux.h microblaze/linux.h"
2440 tm_file="${tm_file} glibc-stdint.h"
2441 c_target_objs="${c_target_objs} microblaze-c.o"
2442 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2443 tmake_file="${tmake_file} microblaze/t-microblaze"
2444 tmake_file="${tmake_file} microblaze/t-microblaze-linux"
2446 microblaze*-*-rtems*)
2449 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2452 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2455 tm_file="${tm_file}"
2456 tm_file="${tm_file} microblaze/rtems.h rtems.h newlib-stdint.h"
2457 c_target_objs="${c_target_objs} microblaze-c.o"
2458 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2459 tmake_file="${tmake_file} microblaze/t-microblaze"
2460 tmake_file="${tmake_file} microblaze/t-rtems"
2465 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2468 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2471 tm_file="${tm_file} newlib-stdint.h"
2472 c_target_objs="${c_target_objs} microblaze-c.o"
2473 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2474 tmake_file="${tmake_file} microblaze/t-microblaze"
2477 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} riscv/linux.h"
2478 case "x${enable_multilib}" in
2480 xyes) tmake_file="${tmake_file} riscv/t-linux-multilib" ;;
2481 *) echo "Unknown value for enable_multilib"; exit 1
2483 tmake_file="${tmake_file} riscv/t-riscv riscv/t-linux"
2484 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
2488 riscv32be-*|riscv64be-*)
2489 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2492 # Force .init_array support. The configure script cannot always
2493 # automatically detect that GAS supports it, yet we require it.
2494 gcc_cv_initfini_array=yes
2496 riscv*-*-elf* | riscv*-*-rtems*)
2497 tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h"
2500 tm_file="${tm_file} riscv/rtems.h rtems.h"
2501 tmake_file="${tmake_file} riscv/t-rtems"
2504 if test "x${with_multilib_generator}" = xdefault; then
2505 case "x${enable_multilib}" in
2507 xyes) tmake_file="${tmake_file} riscv/t-elf-multilib" ;;
2508 *) echo "Unknown value for enable_multilib"; exit 1
2512 tmake_file="${tmake_file} riscv/t-riscv"
2516 riscv32be-*|riscv64be-*)
2517 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2520 # Force .init_array support. The configure script cannot always
2521 # automatically detect that GAS supports it, yet we require it.
2522 gcc_cv_initfini_array=yes
2525 tm_file="${tm_file} elfos.h ${fbsd_tm_file} riscv/freebsd.h"
2526 tmake_file="${tmake_file} riscv/t-riscv"
2530 riscv32be-*|riscv64be-*)
2531 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2534 # Force .init_array support. The configure script cannot always
2535 # automatically detect that GAS supports it, yet we require it.
2536 gcc_cv_initfini_array=yes
2539 loongarch*-*-linux*)
2540 tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file}"
2542 *-linux-musl*) tm_file="${tm_file} loongarch/musl.h"
2544 tm_file="${tm_file} loongarch/gnu-user.h loongarch/linux.h loongarch/loongarch-driver.h"
2545 extra_options="${extra_options} linux-android.opt"
2546 tmake_file="${tmake_file} loongarch/t-multilib loongarch/t-linux"
2550 # Force .init_array support. The configure script cannot always
2551 # automatically detect that GAS supports it, yet we require it.
2552 gcc_cv_initfini_array=yes
2556 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2557 tm_file="${tm_file} loongarch/elf.h loongarch/linux.h loongarch/loongarch-driver.h"
2558 tmake_file="${tmake_file} loongarch/t-multilib loongarch/t-linux"
2562 # For .init_array support. The configure script cannot always
2563 # automatically detect that GAS supports it, yet we require it.
2564 gcc_cv_initfini_array=yes
2567 mips*-*-netbsd*) # NetBSD/mips, either endian.
2568 target_cpu_default="MASK_ABICALLS"
2569 tm_file="elfos.h ${tm_file} mips/elf.h ${nbsd_tm_file} mips/netbsd.h"
2570 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2573 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"
2574 extra_options="${extra_options} linux-android.opt"
2575 tmake_file="${tmake_file} mips/t-img-linux"
2576 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2577 with_arch_32="mips32r6"
2578 with_arch_64="mips64r6"
2583 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"
2584 extra_options="${extra_options} linux-android.opt"
2585 tmake_file="${tmake_file} mips/t-mti-linux"
2586 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2587 with_arch_32="mips32r2"
2588 with_arch_64="mips64r2"
2592 mips*-*-linux*) # Linux MIPS, either endian.
2593 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"
2594 extra_options="${extra_options} linux-android.opt"
2597 default_mips_arch=mips32r6
2600 default_mips_arch=mips32r2
2603 default_mips_arch=mips32
2605 mips64el-st-linux-gnu)
2606 default_mips_abi=n32
2607 tm_file="${tm_file} mips/st.h"
2608 tmake_file="${tmake_file} mips/t-st"
2609 enable_mips_multilibs="yes"
2611 mips64octeon*-*-linux*)
2612 default_mips_abi=n32
2613 tm_defines="${tm_defines} MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\""
2614 target_cpu_default=MASK_SOFT_FLOAT_ABI
2615 enable_mips_multilibs="yes"
2617 mipsisa64r6*-*-linux-gnuabi64)
2619 default_mips_arch=mips64r6
2620 enable_mips_multilibs="yes"
2622 mipsisa64r6*-*-linux*)
2623 default_mips_abi=n32
2624 default_mips_arch=mips64r6
2625 enable_mips_multilibs="yes"
2627 mipsisa64r2*-*-linux-gnuabi64)
2629 default_mips_arch=mips64r2
2630 enable_mips_multilibs="yes"
2632 mipsisa64r2*-*-linux*)
2633 default_mips_abi=n32
2634 default_mips_arch=mips64r2
2635 enable_mips_multilibs="yes"
2637 mips64*-*-linux-gnuabi64 | mipsisa64*-*-linux-gnuabi64)
2639 enable_mips_multilibs="yes"
2641 mips64*-*-linux* | mipsisa64*-*-linux*)
2642 default_mips_abi=n32
2643 enable_mips_multilibs="yes"
2646 if test x$enable_targets = xall; then
2647 enable_mips_multilibs="yes"
2649 if test x$enable_mips_multilibs = xyes; then
2650 tmake_file="${tmake_file} mips/t-linux64"
2654 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2655 tmake_file="mips/t-mti-elf"
2656 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2657 with_arch_32="mips32r2"
2658 with_arch_64="mips64r2"
2661 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2662 tmake_file="mips/t-img-elf"
2663 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2664 with_arch_32="mips32r6"
2665 with_arch_64="mips64r6"
2668 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h"
2669 tmake_file="mips/t-sde"
2670 extra_options="${extra_options} mips/sde.opt"
2671 case "${with_newlib}" in
2673 # newlib / libgloss.
2676 # MIPS toolkit libraries.
2677 tm_file="$tm_file mips/sdemtk.h"
2678 tmake_file="$tmake_file mips/t-sdemtk"
2679 case ${enable_threads} in
2681 thread_file='mipssde'
2688 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2691 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2694 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32 MIPS_ABI_DEFAULT=ABI_32"
2697 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6 MIPS_ABI_DEFAULT=ABI_N32"
2700 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2 MIPS_ABI_DEFAULT=ABI_N32"
2703 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_ABI_DEFAULT=ABI_N32"
2707 mipsisa32-*-elf* | mipsisa32el-*-elf* | \
2708 mipsisa32r2-*-elf* | mipsisa32r2el-*-elf* | \
2709 mipsisa32r6-*-elf* | mipsisa32r6el-*-elf* | \
2710 mipsisa64-*-elf* | mipsisa64el-*-elf* | \
2711 mipsisa64r2-*-elf* | mipsisa64r2el-*-elf* | \
2712 mipsisa64r6-*-elf* | mipsisa64r6el-*-elf*)
2713 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2714 tmake_file="mips/t-isa3264"
2717 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6"
2720 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2"
2723 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32"
2726 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6"
2729 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2"
2732 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64"
2736 mipsisa32*-*-elfoabi*)
2737 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_32"
2738 tm_file="${tm_file} mips/elfoabi.h"
2740 mipsisa64*-*-elfoabi*)
2741 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_O64"
2742 tm_file="${tm_file} mips/elfoabi.h"
2745 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2749 mipsisa64sr71k-*-elf*)
2750 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2751 tmake_file=mips/t-sr71k
2752 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sr71000\\\" MIPS_ABI_DEFAULT=ABI_EABI"
2754 mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*)
2755 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2756 tmake_file="mips/t-elf mips/t-sb1"
2757 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sb1\\\" MIPS_ABI_DEFAULT=ABI_O64"
2759 mips-*-elf* | mipsel-*-elf* | mipsr5900-*-elf* | mipsr5900el-*-elf*)
2760 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2761 tmake_file="mips/t-elf"
2763 mips64r5900-*-elf* | mips64r5900el-*-elf*)
2764 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h"
2765 tmake_file="mips/t-elf"
2766 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_N32"
2768 mips64-*-elf* | mips64el-*-elf*)
2769 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2770 tmake_file="mips/t-elf"
2771 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_O64"
2773 mips64vr-*-elf* | mips64vrel-*-elf*)
2774 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/vr.h mips/elf.h"
2775 tmake_file=mips/t-vr
2776 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2778 mips64orion-*-elf* | mips64orionel-*-elf*)
2779 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elforion.h mips/elf.h"
2780 tmake_file="mips/t-elf"
2781 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_O64"
2784 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/rtems.h rtems.h"
2785 tmake_file="${tmake_file} mips/t-elf mips/t-rtems"
2788 tm_file="elfos.h ${tm_file} mips/elf.h vx-common.h vxworks.h mips/vxworks.h"
2789 tmake_file="${tmake_file} mips/t-vxworks"
2791 mipstx39-*-elf* | mipstx39el-*-elf*)
2792 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/r3900.h mips/elf.h"
2793 tmake_file="mips/t-r3900"
2795 mmix-knuth-mmixware)
2796 tm_file="${tm_file} newlib-stdint.h"
2800 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2805 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2806 c_target_objs="msp430-c.o"
2807 cxx_target_objs="msp430-c.o"
2808 tmake_file="${tmake_file} msp430/t-msp430"
2809 extra_objs="${extra_objs} msp430-devices.o"
2810 extra_gcc_objs="driver-msp430.o msp430-devices.o"
2811 # Enable .init_array unless it has been explicitly disabled.
2812 # The MSP430 EABI mandates the use of .init_array, and the Newlib CRT
2813 # code since mid-2019 expects it.
2814 if test x${disable_initfini_array} != xyes; then
2815 gcc_cv_initfini_array=yes
2819 # __cxa_atexit increases code size, and we don't need to support
2820 # dynamic shared objects on MSP430, so regular Newlib atexit is a
2821 # fine replacement as it also supports registration of more than 32
2823 default_use_cxa_atexit=no
2824 # This target does not match the generic *-*-elf case above which
2825 # sets use_gcc_stdint=wrap, so explicitly set it here.
2831 target_cpu_default="0"
2832 tm_defines="${tm_defines}"
2837 target_cpu_default="${target_cpu_default}|MASK_BIG_ENDIAN"
2838 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2843 tm_file="elfos.h newlib-stdint.h ${tm_file} nds32/elf.h nds32/nds32_intrinsic.h"
2844 tmake_file="nds32/t-nds32 nds32/t-elf"
2847 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h nds32/linux.h nds32/nds32_intrinsic.h"
2848 tmake_file="${tmake_file} nds32/t-nds32 nds32/t-linux"
2849 gcc_cv_initfini_array=yes
2853 # Handle --enable-default-relax setting.
2854 if test x${enable_default_relax} = xyes; then
2855 tm_defines="${tm_defines} TARGET_DEFAULT_RELAX=1"
2857 # Handle --with-ext-dsp
2858 if test x${with_ext_dsp} = xyes; then
2859 tm_defines="${tm_defines} TARGET_DEFAULT_EXT_DSP=1"
2863 tm_file="elfos.h ${tm_file}"
2864 tmake_file="${tmake_file} nios2/t-nios2"
2867 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h nios2/linux.h "
2870 tm_file="${tm_file} newlib-stdint.h nios2/elf.h"
2871 extra_options="${extra_options} nios2/elf.opt"
2874 tm_file="${tm_file} newlib-stdint.h nios2/rtems.h rtems.h"
2875 tmake_file="${tmake_file} t-rtems nios2/t-rtems"
2880 tm_file="${tm_file} newlib-stdint.h"
2882 tmake_file="nvptx/t-nvptx"
2883 if test x$enable_as_accelerator = xyes; then
2884 extra_programs="${extra_programs} mkoffload\$(exeext)"
2885 tm_file="${tm_file} nvptx/offload.h"
2889 tm_file="elfos.h ${tm_file}"
2890 tmake_file="${tmake_file} or1k/t-or1k"
2891 # Force .init_array support. The configure script cannot always
2892 # automatically detect that GAS supports it, yet we require it.
2893 gcc_cv_initfini_array=yes
2895 # Handle --with-multilib-list=...
2896 or1k_multilibs="${with_multilib_list}"
2897 if test "$or1k_multilibs" = "default"; then
2898 or1k_multilibs="mcmov,msoft-mul,msoft-div"
2900 or1k_multilibs=`echo $or1k_multilibs | sed -e 's/,/ /g'`
2901 for or1k_multilib in ${or1k_multilibs}; do
2902 case ${or1k_multilib} in
2903 mcmov | msext | msfimm | \
2905 mhard-float | mdouble-float | munordered-float | msoft-float | \
2906 mhard-div | mhard-mul | \
2907 msoft-div | msoft-mul )
2908 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${or1k_multilib}"
2911 echo "--with-multilib-list=${with_multilib_list} not supported."
2915 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2919 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h"
2920 tm_file="${tm_file} or1k/linux.h"
2923 tm_file="${tm_file} newlib-stdint.h or1k/elf.h"
2924 extra_options="${extra_options} or1k/elf.opt"
2927 tm_file="${tm_file} newlib-stdint.h or1k/rtems.h rtems.h"
2928 tmake_file="${tmake_file} or1k/t-rtems"
2933 tm_file="${tm_file} newlib-stdint.h"
2936 # port not yet contributed
2937 #powerpc-*-openbsd*)
2938 # tmake_file="${tmake_file} rs6000/t-fprules"
2942 extra_options="${extra_options} ${cpu_type}/darwin.opt"
2944 *-darwin1[0-9]* | *-darwin9*)
2945 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2946 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2949 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2950 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2953 tm_file="${tm_file} ${cpu_type}/darwin7.h"
2956 # Earlier - ingle arch, with 32b only
2957 # OS X 10.0, the first edition is Darwin4
2960 tmake_file="${tmake_file} t-slibgcc"
2962 powerpc64-*-darwin*)
2963 extra_options="${extra_options} ${cpu_type}/darwin.opt"
2964 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
2965 tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h"
2967 powerpc*-*-freebsd*)
2968 tm_file="${tm_file} elfos.h gnu-user.h ${fbsd_tm_file} rs6000/sysv4.h"
2969 extra_options="${extra_options} rs6000/sysv4.opt"
2970 tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
2973 tm_file="${tm_file} rs6000/sysv4le.h" ;;
2977 tm_file="${tm_file} rs6000/default64.h rs6000/freebsd64.h"
2978 tmake_file="${tmake_file} rs6000/t-freebsd64"
2979 extra_options="${extra_options} rs6000/linux64.opt"
2980 if test $fbsd_major -ge 13; then
2981 tm_defines="${tm_defines} TARGET_FREEBSD32_SECURE_PLT=1"
2985 if test $fbsd_major -ge 13; then
2986 tm_file="rs6000/secureplt.h ${tm_file}"
2988 tm_file="${tm_file} rs6000/freebsd.h"
2993 tm_file="${tm_file} elfos.h gnu-user.h ${nbsd_tm_file} freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h"
2994 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2995 tmake_file="${tmake_file} rs6000/t-netbsd"
2996 extra_options="${extra_options} rs6000/sysv4.opt"
2998 powerpc-*-eabisimaltivec*)
2999 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"
3000 extra_options="${extra_options} rs6000/sysv4.opt"
3001 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
3005 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"
3006 extra_options="${extra_options} rs6000/sysv4.opt"
3007 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3011 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h"
3012 extra_options="${extra_options} rs6000/sysv4.opt"
3013 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3015 powerpc-*-eabialtivec*)
3016 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabialtivec.h"
3017 extra_options="${extra_options} rs6000/sysv4.opt"
3018 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
3022 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h"
3023 extra_options="${extra_options} rs6000/sysv4.opt"
3024 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3028 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"
3029 extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
3030 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-rtems rs6000/t-ppccomm"
3033 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h rs6000/sysv4.h"
3034 extra_options="${extra_options} rs6000/sysv4.opt"
3035 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm"
3036 extra_objs="$extra_objs rs6000-linux.o"
3039 tm_file="${tm_file} rs6000/sysv4le.h" ;;
3041 case ${target}:${with_cpu} in
3042 powerpc64*: | powerpc64*:native) cpu_is_64bit=yes ;;
3044 maybe_biarch=${cpu_is_64bit}
3045 case ${enable_targets} in
3046 *powerpc64*) maybe_biarch=yes ;;
3047 all) maybe_biarch=yes ;;
3049 case ${target}:${enable_targets}:${maybe_biarch} in
3050 powerpc64-* | powerpc-*:*:yes | *:*powerpc64-*:yes | *:all:yes \
3051 | powerpc64le*:*powerpcle* | powerpc64le*:*powerpc-* \
3052 | powerpcle-*:*powerpc64le*:yes)
3053 if test x$cpu_is_64bit = xyes; then
3054 tm_file="${tm_file} rs6000/default64.h"
3056 tm_file="rs6000/biarch64.h ${tm_file} rs6000/linux64.h glibc-stdint.h"
3057 tmake_file="$tmake_file rs6000/t-linux64"
3060 tmake_file="$tmake_file rs6000/t-linux64le"
3061 case ${enable_targets} in
3062 all | *powerpc64-* | *powerpc-*)
3063 tmake_file="$tmake_file rs6000/t-linux64lebe" ;;
3066 case ${enable_targets} in
3067 all | *powerpc64le-* | *powerpcle-*)
3068 tmake_file="$tmake_file rs6000/t-linux64bele" ;;
3071 extra_options="${extra_options} rs6000/linux64.opt"
3074 tm_file="${tm_file} rs6000/default64.h rs6000/linux64.h glibc-stdint.h"
3075 extra_options="${extra_options} rs6000/linux64.opt"
3076 tmake_file="${tmake_file} rs6000/t-linux"
3079 tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
3080 tmake_file="${tmake_file} rs6000/t-ppcos rs6000/t-linux"
3084 powerpc*-*-linux*ppc476*)
3085 tm_file="${tm_file} rs6000/476.h"
3086 extra_options="${extra_options} rs6000/476.opt" ;;
3087 powerpc*-*-linux*altivec*)
3088 tm_file="${tm_file} rs6000/linuxaltivec.h" ;;
3092 enable_secureplt=yes ;;
3094 if test x${enable_secureplt} = xyes; then
3095 tm_file="rs6000/secureplt.h ${tm_file}"
3098 powerpc*-wrs-vxworks7r*)
3100 # Wind River 7 post SR0600 is mostly like Linux so we setup
3101 # our config in a very similar fashion and adjust to a few
3104 # The system compiler is configured with secureplt by default.
3105 tm_file="${tm_file} rs6000/secureplt.h"
3107 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h"
3108 tm_file="${tm_file} rs6000/sysv4.h rs6000/biarch64.h rs6000/default64.h rs6000/linux64.h"
3109 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3111 extra_options="${extra_options} rs6000/sysv4.opt linux.opt rs6000/linux64.opt"
3113 tmake_file="${tmake_file} t-linux rs6000/t-linux64 rs6000/t-fprules rs6000/t-ppccomm"
3114 tmake_file="${tmake_file} rs6000/t-vxworks"
3116 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
3117 extra_objs="$extra_objs linux.o rs6000-linux.o"
3119 powerpc-wrs-vxworks*)
3120 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h rs6000/sysv4.h"
3121 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm rs6000/t-vxworks"
3122 extra_options="${extra_options} rs6000/sysv4.opt vxworks-smp.opt"
3123 extra_headers="${extra_headers} ppc-asm.h"
3126 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksmils.h"
3127 tmake_file="${tmake_file} rs6000/t-vxworksmils"
3130 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksae.h"
3131 tmake_file="${tmake_file} rs6000/t-vxworksae"
3134 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3140 tm_file="${tm_file} elfos.h gnu-user.h rs6000/sysv4.h rs6000/lynx.h lynx.h"
3141 tmake_file="t-lynx rs6000/t-lynx"
3142 extra_options="${extra_options} rs6000/sysv4.opt lynx.opt"
3148 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h"
3149 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3150 extra_options="${extra_options} rs6000/sysv4.opt"
3152 powerpcle-*-eabisim*)
3153 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"
3154 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3155 extra_options="${extra_options} rs6000/sysv4.opt"
3159 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"
3160 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3161 extra_options="${extra_options} rs6000/sysv4.opt"
3165 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3166 tmake_file="${tmake_file} pru/t-pru"
3167 extra_objs="pru-pragma.o pru-passes.o"
3170 rs6000-ibm-aix7.1.* | powerpc-ibm-aix7.1.*)
3171 tmake_file="rs6000/t-aix52 t-slibgcc"
3172 if test x$cpu_is_64bit = xyes; then
3173 tm_file="${tm_file} rs6000/biarch64.h"
3174 tmake_file="rs6000/t-aix64 t-slibgcc"
3176 tm_file="${tm_file} rs6000/aix.h rs6000/aix71.h rs6000/xcoff.h rs6000/aix-stdint.h"
3177 extra_options="${extra_options} rs6000/aix64.opt"
3181 default_use_cxa_atexit=yes
3183 rs6000-ibm-aix7.2.* | powerpc-ibm-aix7.2.*)
3184 tmake_file="rs6000/t-aix52 t-slibgcc"
3185 if test x$cpu_is_64bit = xyes; then
3186 tm_file="${tm_file} rs6000/biarch64.h"
3187 tmake_file="rs6000/t-aix64 t-slibgcc"
3189 tm_file="${tm_file} rs6000/aix.h rs6000/aix72.h rs6000/xcoff.h rs6000/aix-stdint.h"
3190 extra_options="${extra_options} rs6000/aix64.opt"
3194 default_use_cxa_atexit=yes
3196 rs6000-ibm-aix[789].* | powerpc-ibm-aix[789].*)
3197 tmake_file="rs6000/t-aix52 t-slibgcc"
3198 if test x$cpu_is_64bit = xyes; then
3199 tm_file="${tm_file} rs6000/biarch64.h"
3200 tmake_file="rs6000/t-aix64 t-slibgcc"
3202 tm_file="${tm_file} rs6000/aix.h rs6000/aix73.h rs6000/xcoff.h rs6000/aix-stdint.h"
3203 extra_options="${extra_options} rs6000/aix64.opt"
3207 default_use_cxa_atexit=yes
3210 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3211 target_has_targetm_common=no
3212 c_target_objs="rl78-c.o"
3213 cxx_target_objs="rl78-c.o"
3214 tmake_file="${tmake_file} rl78/t-rl78"
3217 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3218 tmake_file="${tmake_file} rx/t-rx"
3219 extra_options="${extra_options} rx/elf.opt"
3222 tm_file="elfos.h linux.h glibc-stdint.h rx/linux.h ../../libgcc/config/rx/rx-abi.h"
3223 tmake_file="${tmake_file} rx/t-linux"
3226 tm_file="s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3227 c_target_objs="${c_target_objs} s390-c.o"
3228 cxx_target_objs="${cxx_target_objs} s390-c.o"
3229 if test x$enable_targets = xall; then
3230 tmake_file="${tmake_file} s390/t-linux64"
3232 tmake_file="${tmake_file} s390/t-s390"
3235 tm_file="s390/s390x.h s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3236 tm_p_file="linux-protos.h s390/s390-protos.h"
3237 c_target_objs="${c_target_objs} s390-c.o"
3238 cxx_target_objs="${cxx_target_objs} s390-c.o"
3239 md_file=s390/s390.md
3240 extra_modes=s390/s390-modes.def
3241 out_file=s390/s390.cc
3242 tmake_file="${tmake_file} s390/t-linux64 s390/t-s390"
3245 tm_file="s390/s390x.h s390/s390.h elfos.h glibc-stdint.h s390/tpf.h"
3246 tm_p_file=s390/s390-protos.h
3247 c_target_objs="${c_target_objs} s390-c.o"
3248 cxx_target_objs="${cxx_target_objs} s390-c.o"
3249 md_file=s390/s390.md
3250 extra_modes=s390/s390-modes.def
3251 out_file=s390/s390.cc
3253 extra_options="${extra_options} s390/tpf.opt"
3254 tmake_file="${tmake_file} s390/t-s390"
3256 sh-*-elf* | sh[12346l]*-*-elf* | \
3257 sh-*-linux* | sh[2346lbe]*-*-linux* | \
3258 sh-*-netbsdelf* | shl*-*-netbsdelf*)
3259 tmake_file="${tmake_file} sh/t-sh sh/t-elf"
3260 if test x${with_endian} = x; then
3262 sh[1234]*be-*-* | sh[1234]*eb-*-*) with_endian=big ;;
3263 shbe-*-* | sheb-*-*) with_endian=big,little ;;
3264 sh[1234]l* | sh[34]*-*-linux*) with_endian=little ;;
3265 shl* | sh*-*-linux* | \
3266 sh-superh-elf) with_endian=little,big ;;
3267 sh[1234]*-*-*) with_endian=big ;;
3268 *) with_endian=big,little ;;
3271 # TM_ENDIAN_CONFIG is used by t-sh to determine multilibs.
3272 # First word : the default endian.
3273 # Second word: the secondary endian (optional).
3274 case ${with_endian} in
3275 big) TM_ENDIAN_CONFIG=mb ;;
3276 little) TM_ENDIAN_CONFIG=ml ;;
3277 big,little) TM_ENDIAN_CONFIG="mb ml" ;;
3278 little,big) TM_ENDIAN_CONFIG="ml mb" ;;
3279 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
3281 case ${with_endian} in
3282 little*) tm_file="sh/little.h ${tm_file}" ;;
3284 tm_file="${tm_file} elfos.h sh/elf.h"
3286 sh*-*-linux*) tmake_file="${tmake_file} sh/t-linux"
3287 if test x$enable_fdpic = xyes; then
3288 tm_defines="$tm_defines FDPIC_DEFAULT=1"
3290 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h sh/linux.h" ;;
3292 tm_file="${tm_file} ${nbsd_tm_file} sh/netbsd-elf.h"
3293 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3296 sh*-superh-elf) if test x$with_libgloss != xno; then
3298 tm_file="${tm_file} sh/newlib.h"
3300 tm_file="${tm_file} sh/embed-elf.h"
3301 tm_file="${tm_file} sh/superh.h"
3302 extra_options="${extra_options} sh/superh.opt" ;;
3303 *) if test x$with_newlib = xyes \
3304 && test x$with_libgloss = xyes; then
3305 tm_file="${tm_file} sh/newlib.h"
3307 tm_file="${tm_file} sh/embed-elf.h" ;;
3313 tm_file="${tm_file} newlib-stdint.h"
3316 # sed el/eb endian suffixes away to avoid confusion with sh[23]e
3317 case `echo ${target} | sed 's/e[lb]-/-/'` in
3318 sh4a_single_only*) sh_cpu_target=sh4a-single-only ;;
3319 sh4a_single*) sh_cpu_target=sh4a-single ;;
3320 sh4a_nofpu*) sh_cpu_target=sh4a-nofpu ;;
3321 sh4al) sh_cpu_target=sh4al ;;
3322 sh4a*) sh_cpu_target=sh4a ;;
3323 sh4_single_only*) sh_cpu_target=sh4-single-only ;;
3324 sh4_single*) sh_cpu_target=sh4-single ;;
3325 sh4_nofpu*) sh_cpu_target=sh4-nofpu ;;
3326 sh4* | sh-superh-*) sh_cpu_target=sh4 ;;
3327 sh3e*) sh_cpu_target=sh3e ;;
3328 sh*-*-netbsd* | sh3*) sh_cpu_target=sh3 ;;
3329 sh2a_single_only*) sh_cpu_target=sh2a-single-only ;;
3330 sh2a_single*) sh_cpu_target=sh2a-single ;;
3331 sh2a_nofpu*) sh_cpu_target=sh2a-nofpu ;;
3332 sh2a*) sh_cpu_target=sh2a ;;
3333 sh2e*) sh_cpu_target=sh2e ;;
3334 sh2*) sh_cpu_target=sh2 ;;
3335 *) sh_cpu_target=sh1 ;;
3337 # did the user say --without-fp ?
3338 if test x$with_fp = xno; then
3339 case ${sh_cpu_target} in
3341 sh4a* ) sh_cpu_target=sh4a-nofpu ;;
3342 sh4*) sh_cpu_target=sh4-nofpu ;;
3343 sh3*) sh_cpu_target=sh3 ;;
3344 sh2a*) sh_cpu_target=sh2a-nofpu ;;
3345 sh2*) sh_cpu_target=sh2 ;;
3346 *) echo --without-fp not available for $target: ignored
3348 tm_defines="$tm_defines STRICT_NOFPU=1"
3350 sh_cpu_default="`echo $with_cpu|sed s/^m/sh/|tr A-Z_ a-z-`"
3351 case $sh_cpu_default in
3352 sh2a-single-only | sh2a-single | sh2a-nofpu | sh2a | \
3353 sh4a-single-only | sh4a-single | sh4a-nofpu | sh4a | sh4al | \
3354 sh4-single-only | sh4-single | sh4-nofpu | sh4 | sh4-300 | \
3355 sh3e | sh3 | sh2e | sh2 | sh1) ;;
3356 "") sh_cpu_default=${sh_cpu_target} ;;
3357 *) echo "with_cpu=$with_cpu not supported"; exit 1 ;;
3359 sh_multilibs=${with_multilib_list}
3360 if test "$sh_multilibs" = "default" ; then
3362 sh[1234]*) sh_multilibs=${sh_cpu_target} ;;
3363 sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
3364 sh*-*-linux*) sh_multilibs=m1,m2,m2a,m3e,m4 ;;
3365 sh*-*-netbsd*) sh_multilibs=m3,m3e,m4 ;;
3366 *) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single ;;
3368 if test x$with_fp = xno; then
3369 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`"
3372 target_cpu_default=SELECT_`echo ${sh_cpu_default}|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`
3373 tm_defines=${tm_defines}' SH_MULTILIB_CPU_DEFAULT=\"'`echo $sh_cpu_default|sed s/sh/m/`'\"'
3374 tm_defines="$tm_defines SUPPORT_`echo $sh_cpu_default | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3375 sh_multilibs=`echo $sh_multilibs | sed -e 's/,/ /g' -e 's/^[Ss][Hh]/m/' -e 's/ [Ss][Hh]/ m/g' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-`
3376 for sh_multilib in ${sh_multilibs}; do
3377 case ${sh_multilib} in
3378 m1 | m2 | m2e | m3 | m3e | \
3379 m4 | m4-single | m4-single-only | m4-nofpu | m4-300 |\
3380 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al | \
3381 m2a | m2a-single | m2a-single-only | m2a-nofpu)
3382 # TM_MULTILIB_CONFIG is used by t-sh for the non-endian multilib definition
3383 # It is passed to MULTIILIB_OPTIONS verbatim.
3384 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG}/${sh_multilib}"
3385 tm_defines="$tm_defines SUPPORT_`echo $sh_multilib | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3387 \!*) # TM_MULTILIB_EXCEPTIONS_CONFIG is used by t-sh
3388 # It is passed the MULTILIB_EXCEPTIONS verbatim.
3389 TM_MULTILIB_EXCEPTIONS_CONFIG="${TM_MULTILIB_EXCEPTIONS_CONFIG} `echo $sh_multilib | sed 's/^!//'`" ;;
3391 echo "with_multilib_list=${sh_multilib} not supported."
3396 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's:^/::'`
3397 if test x${enable_incomplete_targets} = xyes ; then
3398 tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1"
3400 tm_file="$tm_file ./sysroot-suffix.h"
3401 tmake_file="$tmake_file t-sysroot-suffix"
3404 tmake_file="${tmake_file} sh/t-sh sh/t-rtems"
3405 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h newlib-stdint.h"
3408 tmake_file="$tmake_file sh/t-sh sh/t-vxworks"
3409 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h vx-common.h vxworks.h sh/vxworks.h"
3412 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp-elf.h"
3415 tmake_file="sparc/t-sparc sparc/t-leon"
3418 tmake_file="sparc/t-sparc sparc/t-leon3"
3421 tmake_file="sparc/t-sparc sparc/t-elf"
3426 tm_file="${tm_file} elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
3427 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
3430 tm_file="${tm_file} elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
3431 extra_options="${extra_options} sparc/long-double-switch.opt"
3434 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon"
3437 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon3"
3440 tmake_file="${tmake_file} sparc/t-sparc"
3443 if test x$enable_targets = xall; then
3444 tm_file="sparc/biarch64.h ${tm_file} sparc/linux64.h"
3445 tmake_file="${tmake_file} sparc/t-linux64"
3447 tm_file="${tm_file} sparc/linux.h"
3448 tmake_file="${tmake_file} sparc/t-linux"
3452 tm_file="${tm_file} elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3453 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3454 extra_options="${extra_options} sparc/long-double-switch.opt"
3455 tmake_file="${tmake_file} sparc/t-sparc"
3458 tm_file="sparc/biarch64.h ${tm_file} ${sol2_tm_file} sparc/tso.h"
3460 sparc64-*-* | sparcv9-*-*)
3461 tm_file="sparc/default64.h ${tm_file}"
3464 test x$with_cpu != x || with_cpu=v9
3467 tmake_file="${tmake_file} sparc/t-sparc sparc/t-sol2"
3470 tm_file="${tm_file} elfos.h sparc/sysv4.h vx-common.h vxworks.h sparc/vxworks.h"
3471 tmake_file="${tmake_file} sparc/t-sparc sparc/t-vxworks"
3474 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h"
3475 extra_options="${extra_options}"
3476 tmake_file="${tmake_file} sparc/t-sparc"
3479 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h sparc/rtemself.h rtems.h"
3480 extra_options="${extra_options}"
3481 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
3484 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"
3485 extra_options="${extra_options} sparc/long-double-switch.opt"
3486 tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
3488 sparc64-*-freebsd*|ultrasparc-*-freebsd*)
3489 tm_file="${tm_file} ${fbsd_tm_file} elfos.h sparc/sysv4.h sparc/freebsd.h"
3490 extra_options="${extra_options} sparc/long-double-switch.opt"
3491 case "x$with_cpu" in
3493 x) with_cpu=ultrasparc ;;
3494 *) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
3496 tmake_file="${tmake_file} sparc/t-sparc"
3499 tm_file="sparc/biarch64.h ${tm_file}"
3500 tm_file="${tm_file} elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3501 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3502 extra_options="${extra_options} sparc/long-double-switch.opt"
3503 tmake_file="${tmake_file} sparc/t-sparc sparc/t-netbsd64"
3506 tm_file="sparc/openbsd1-64.h ${tm_file} elfos.h sparc/sysv4.h sparc/sp64-elf.h"
3507 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h sparc/openbsd64.h"
3508 extra_options="${extra_options} openbsd.opt"
3509 extra_options="${extra_options}"
3512 tmake_file="${tmake_file} sparc/t-sparc"
3515 tm_file="elfos.h ${tm_file} c6x/elf-common.h c6x/elf.h"
3516 tm_file="${tm_file} tm-dwarf2.h newlib-stdint.h"
3517 tmake_file="c6x/t-c6x c6x/t-c6x-elf"
3521 tm_file="elfos.h ${tm_file} gnu-user.h linux.h c6x/elf-common.h c6x/uclinux-elf.h"
3522 tm_file="${tm_file} tm-dwarf2.h glibc-stdint.h"
3523 tm_file="${tm_file} ./sysroot-suffix.h"
3524 tmake_file="t-sysroot-suffix t-slibgcc"
3525 tmake_file="${tmake_file} c6x/t-c6x c6x/t-c6x-elf c6x/t-c6x-uclinux"
3529 target_cpu_default="TARGET_CPU_generic"
3530 tm_file="elfos.h v850/v850.h"
3531 tm_file="${tm_file} v850/rtems.h rtems.h newlib-stdint.h"
3532 tmake_file="${tmake_file} v850/t-v850"
3533 tmake_file="${tmake_file} v850/t-rtems"
3535 c_target_objs="v850-c.o"
3536 cxx_target_objs="v850-c.o"
3541 target_cpu_default="TARGET_CPU_v850e3v5"
3544 target_cpu_default="TARGET_CPU_v850e2v3"
3547 target_cpu_default="TARGET_CPU_v850e2"
3549 v850e1-*-* | v850es-*-*)
3550 target_cpu_default="TARGET_CPU_v850e1"
3553 target_cpu_default="TARGET_CPU_v850e"
3556 target_cpu_default="TARGET_CPU_generic"
3559 tm_file="elfos.h newlib-stdint.h v850/v850.h"
3561 c_target_objs="v850-c.o"
3562 cxx_target_objs="v850-c.o"
3566 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h vax/elf.h vax/linux.h"
3567 extra_options="${extra_options} vax/elf.opt"
3570 tm_file="${tm_file} elfos.h ${nbsd_tm_file} vax/elf.h vax/netbsd-elf.h"
3571 extra_options="${extra_options} netbsd.opt netbsd-elf.opt vax/elf.opt"
3572 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
3575 tm_file="elfos.h ${tm_file} visium/elf.h newlib-stdint.h"
3576 tmake_file="visium/t-visium visium/t-crtstuff"
3579 # For historical reasons, the target files omit the 'x'.
3580 tm_file="elfos.h newlib-stdint.h stormy16/stormy16.h"
3581 tm_p_file=stormy16/stormy16-protos.h
3582 md_file=stormy16/stormy16.md
3583 out_file=stormy16/stormy16.cc
3584 extra_options=stormy16/stormy16.opt
3585 tmake_file="stormy16/t-stormy16"
3588 tm_file="${tm_file} elfos.h newlib-stdint.h xtensa/elf.h"
3589 extra_options="${extra_options} xtensa/elf.opt"
3592 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/linux.h"
3593 tmake_file="${tmake_file} xtensa/t-xtensa"
3596 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/uclinux.h"
3597 tmake_file="${tmake_file} xtensa/t-xtensa"
3598 extra_options="${extra_options} xtensa/uclinux.opt"
3601 tm_file="mn10300/mn10300.h elfos.h gnu-user.h linux.h glibc-stdint.h mn10300/linux.h"
3606 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3607 c_target_objs="m32c-pragma.o"
3608 cxx_target_objs="m32c-pragma.o"
3611 echo "*** Configuration ${target} not supported" 1>&2
3617 i[34567]86-*-linux* | x86_64-*-linux*)
3618 tmake_file="${tmake_file} i386/t-pmm_malloc i386/t-i386"
3620 i[34567]86-*-* | x86_64-*-*)
3621 tmake_file="${tmake_file} i386/t-gmm_malloc i386/t-i386"
3623 powerpc*-*-* | rs6000-*-*)
3624 tm_file="${tm_file} ${cpu_type}/option-defaults.h"
3630 tmake_file="${tmake_file} t-musl"
3633 tmake_file="${tmake_file} t-uclibc"
3637 # Assume the existence of indirect function support and allow the use of the
3638 # resolver attribute.
3640 *-*-linux*android*|*-*-linux*uclibc*|*-*-linux*musl*)
3642 *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
3644 *-*-linux* | *-*-gnu*)
3646 aarch64*-* | arm*-* | i[34567]86-* | powerpc*-* | s390*-* | sparc*-* | x86_64-* | loongarch*-*)
3647 default_gnu_indirect_function=yes
3653 if [ "$target_has_targetcm" = "no" ]; then
3654 c_target_objs="$c_target_objs default-c.o"
3655 cxx_target_objs="$cxx_target_objs default-c.o"
3658 if [ "$common_out_file" = "" ]; then
3659 if [ "$target_has_targetm_common" = "yes" ]; then
3660 common_out_file="$cpu_type/$cpu_type-common.cc"
3662 common_out_file="default-common.cc"
3666 if [ "$target_has_targetdm" = "no" ]; then
3667 d_target_objs="$d_target_objs default-d.o"
3670 if [ "$target_has_targetrustm" = "no" ]; then
3671 rust_target_objs="$rust_target_objs default-rust.o"
3674 # Support for --with-cpu and related options (and a few unrelated options,
3678 echo "--with-cpu must be passed a value" 1>&2
3683 # Set arch and cpu from ${target} and ${target_noncanonical}. Set cpu
3684 # to generic if there is no processor scheduler model for the target.
3687 arch_without_sse2=no
3688 arch_without_64bit=no
3691 if test $fbsd_major -ge 6; then
3697 arch_without_sse2=yes
3698 arch_without_64bit=yes
3703 arch_without_sse2=yes
3704 arch_without_64bit=yes
3709 arch_without_sse2=yes
3710 arch_without_64bit=yes
3715 arch_without_sse2=yes
3716 arch_without_64bit=yes
3719 arch_without_sse2=yes
3720 arch_without_64bit=yes
3721 case ${target_noncanonical} in
3734 pentium_mmx-*|winchip_c6-*|winchip2-*|c3-*)
3744 i686-*-* | i786-*-*)
3745 case ${target_noncanonical} in
3786 amdfam10-*|barcelona-*)
3790 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3794 k8-*|opteron-*|athlon64-*|athlon_fx-*)
3798 athlon_xp-*|athlon_mp-*|athlon_4-*)
3801 arch_without_sse2=yes
3802 arch_without_64bit=yes
3804 athlon_tbird-*|athlon-*)
3807 arch_without_sse2=yes
3812 arch_without_sse2=yes
3825 arch_without_sse2=yes
3827 pentium3-*|pentium3m-*)
3830 arch_without_sse2=yes
3832 pentium4-*|pentium4m-*)
3871 arch_without_sse2=yes
3876 arch_without_sse2=yes
3877 arch_without_64bit=yes
3882 case ${target_noncanonical} in
3923 amdfam10-*|barcelona-*)
3927 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3931 k8-*|opteron-*|athlon_64-*)
3971 # If there is no $with_cpu option, try to infer one from ${target}.
3972 # This block sets nothing except for with_cpu.
3973 if test x$with_cpu = x ; then
3975 i[34567]86-*-elfiamcu)
3978 i[34567]86-*-*|x86_64-*-*)
3996 frv-*-*linux* | frv400-*-*linux*)
4003 case "$with_arch" in
4005 with_cpu=${default_cf_cpu}
4008 with_cpu=m${default_m68k_cpu}
4024 with_cpu="`echo ${target} | sed 's/-.*$//'`"
4033 # Avoid overriding --with-cpu-32 and --with-cpu-64 values.
4035 i[34567]86-*-*|x86_64-*-*)
4036 if test x$with_cpu_32 != x || test x$with_cpu_64 != x; then
4037 if test x$with_cpu_32 = x; then
4038 with_cpu_32=$with_cpu
4040 if test x$with_cpu_64 = x; then
4041 with_cpu_64=$with_cpu
4049 # Support for --with-arch and related options (and a few unrelated options,
4051 case ${with_arch} in
4053 echo "--with-arch must be passed a value" 1>&2
4058 # If there is no $with_arch option, try to infer one from ${target}.
4059 # This block sets nothing except for with_arch.
4060 if test x$with_arch = x ; then
4062 i[34567]86-*-darwin*|x86_64-*-darwin*)
4063 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
4064 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
4066 i[34567]86-*-elfiamcu)
4070 # --with-fpmath sets the default ISA to SSE2, which is the same
4071 # ISA supported by Pentium 4.
4072 if test x$with_fpmath = x || test $arch_without_sse2 = no; then
4081 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4092 # Avoid overriding --with-arch-32 and --with-arch-64 values.
4094 i[34567]86-*-darwin*|x86_64-*-darwin*)
4095 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
4096 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
4098 i[34567]86-*-*|x86_64-*-*)
4099 if test x$with_arch_32 != x || test x$with_arch_64 != x; then
4100 if test x$with_arch_32 = x; then
4101 with_arch_32=$with_arch
4103 if test x$with_arch_64 = x; then
4104 if test $arch_without_64bit = yes; then
4105 # Set the default 64bit arch to x86-64 if the default arch
4106 # doesn't support 64bit.
4109 with_arch_64=$with_arch
4113 elif test $arch_without_64bit$need_64bit_isa = yesyes; then
4114 # Set the default 64bit arch to x86-64 if the default arch
4115 # doesn't support 64bit and we need 64bit ISA.
4116 with_arch_32=$with_arch
4124 # Infer a default setting for --with-float.
4125 if test x$with_float = x; then
4127 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4128 # The R5900 doesn't support 64-bit float. 32-bit float doesn't
4129 # comply with IEEE 754.
4135 # Infer a default setting for --with-fpu.
4136 if test x$with_fpu = x; then
4138 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4139 # The R5900 FPU only supports single precision.
4145 # Support --with-fpmath.
4146 if test x$with_fpmath != x; then
4148 i[34567]86-*-* | x86_64-*-*)
4149 case ${with_fpmath} in
4151 tm_file="${tm_file} i386/avxmath.h"
4154 tm_file="${tm_file} i386/ssemath.h"
4157 echo "Invalid --with-fpmath=$with_fpmath" 1>&2
4163 echo "--with-fpmath isn't supported for $target." 1>&2
4169 # Similarly for --with-schedule.
4170 if test x$with_schedule = x; then
4173 # Override default PA8000 scheduling model.
4174 with_schedule=7100LC
4179 # Infer a default setting for --with-llsc.
4180 if test x$with_llsc = x; then
4183 # The kernel emulates LL and SC where necessary.
4186 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4187 # The R5900 doesn't support LL(D) and SC(D).
4193 # Validate and mark as valid any --with options supported
4194 # by this target. In order to use a particular --with option
4195 # you must list it in supported_defaults; validating the value
4196 # is optional. This case statement should set nothing besides
4197 # supported_defaults.
4202 supported_defaults="abi cpu cpu_64 arch arch_64 tune tune_64"
4203 if test x$with_cpu_64 != x && test x$with_cpu = x; then
4204 with_cpu=$with_cpu_64
4206 if test x$with_arch_64 != x && test x$with_arch = x; then
4207 with_arch=$with_arch_64
4209 if test x$with_tune_64 != x && test x$with_tune = x; then
4210 with_tune=$with_tune_64
4212 for which in cpu arch tune; do
4213 eval "val=\$with_$which"
4214 base_val=`echo $val | sed -E -e 's/\+.*//'`
4215 ext_val=`echo $val | sed -E -e 's/[a-z0-9.-]+//'`
4217 if [ $which = arch ]; then
4218 def=aarch64-arches.def
4219 pattern=AARCH64_ARCH
4221 def=aarch64-cores.def
4222 pattern=AARCH64_CORE
4225 # Find the base CPU or ARCH id in aarch64-cores.def or
4226 # aarch64-arches.def
4227 if [ x"$base_val" = x ] \
4228 || grep "^$pattern(\"$base_val\"," \
4229 ${srcdir}/config/aarch64/$def \
4232 # Disallow extensions in --with-tune=cortex-a53+crc.
4233 if [ $which = tune ] && [ x"$ext_val" != x ]; then
4234 echo "Architecture extensions not supported in --with-$which=$val" 1>&2
4238 # Use the pre-processor to strip flatten the options.
4239 # This makes the format less rigid than if we use
4240 # grep and sed directly here.
4241 opt_macro="AARCH64_OPT_EXTENSION(A, B, C, D, E, F)=A, B, C, D, E, F"
4242 options_parsed="`$ac_cv_prog_CPP -D"$opt_macro" -x c \
4243 ${srcdir}/config/aarch64/aarch64-option-extensions.def`"
4245 while [ x"$ext_val" != x ]
4247 ext_val=`echo $ext_val | sed -E -e 's/\+//'`
4248 ext=`echo $ext_val | sed -E -e 's/\+.*//'`
4249 base_ext=`echo $ext | sed -E -e 's/^no//'`
4250 opt_line=`echo -e "$options_parsed" | \
4251 grep "^\"$base_ext\""`
4253 if [ x"$base_ext" = x ] \
4254 || [ x"$opt_line" != x ]; then
4257 echo "Unknown extension used in --with-$which=$val" 1>&2
4260 ext_val=`echo $ext_val | sed -E -e 's/[a-z0-9]+//'`
4265 # Allow --with-$which=native.
4266 if [ "$val" = native ]; then
4269 echo "Unknown $which used in --with-$which=$val" 1>&2
4277 supported_defaults="cpu tune"
4278 for which in cpu tune; do
4279 eval "val=\$with_$which"
4282 | ev4 | ev45 | 21064 | ev5 | 21164 | ev56 | 21164a \
4283 | pca56 | 21164PC | 21164pc | ev6 | 21264 | ev67 \
4287 echo "Unknown CPU used in --with-$which=$val" 1>&2
4295 supported_defaults="cpu fpu"
4298 if [ x"$with_cpu" = x ] \
4299 || grep -q -E "^ARC_CPU[[:blank:]]*\($with_cpu," \
4300 ${srcdir}/config/arc/arc-cpus.def
4305 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4309 # see if --with-fpu matches any of the supported FPUs
4314 fpus | fpus_div | fpus_fma | fpus_all)
4318 fpuda | fpuda_div | fpuda_fma | fpuda_all)
4322 fpud | fpud_div | fpud_fma | fpud_all)
4327 echo "Unknown floating point type used in "\
4328 "--with-fpu=$with_fpu" 1>&2
4333 if [ -n "$flags_ok" ] \
4334 && ! grep -q -E "^ARC_CPU[[:blank:]]*\($new_cpu,[[:blank:]]*$flags_ok," \
4335 ${srcdir}/config/arc/arc-cpus.def
4337 echo "Unknown floating point type used in "\
4338 "--with-fpu=$with_fpu for cpu $new_cpu" 1>&2
4344 # Handle --with-multilib-list.
4345 if test "x${with_multilib_list}" != xdefault; then
4346 TM_MULTILIB_CONFIG="${with_multilib_list}"
4351 supported_defaults="cpu endian float"
4355 supported_defaults="arch cpu float tune fpu abi mode tls"
4356 for which in cpu tune arch; do
4357 # See if it matches a supported value
4358 eval "val=\$with_$which"
4359 if [ x"$val" != x ]; then
4360 cpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4361 -v cmd="chk$which $val" \
4362 ${srcdir}/config/arm/arm-cpus.in`
4363 if [ "$cpu" = "error" ]; then
4364 echo "Unknown target in --with-$which=$val" 1>&2
4368 eval "target_${which}_cname=$new_val"
4369 echo "For $val real value is $new_val"
4374 case "$with_float" in
4376 | soft | hard | softfp)
4380 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4385 # see if --with-fpu matches any of the supported FPUs
4386 if [ x"$with_fpu" != x ] ; then
4388 fpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4389 -v cmd="chkfpu $val" \
4390 ${srcdir}/config/arm/arm-cpus.in`
4391 if [ "$fpu" = "error" ]
4393 echo "Unknown target in --with-fpu=$val" 1>&2
4400 | apcs-gnu | atpcs | aapcs | iwmmxt | aapcs-linux )
4404 echo "Unknown ABI used in --with-abi=$with_abi"
4409 case "$with_mode" in
4415 echo "Unknown mode used in --with-mode=$with_mode"
4426 echo "Unknown TLS method used in --with-tls=$with_tls" 1>&2
4431 if test "x$with_arch" != x && test "x$with_cpu" != x; then
4432 echo "Switch \"--with-arch\" may not be used with switch \"--with-cpu\"" 1>&2
4436 if test "x$with_cpu" != x && test "x$with_tune" != x; then
4437 echo "Switch \"--with-tune\" may not be used with switch \"--with-cpu\"" 1>&2
4441 # Add extra multilibs
4442 if test "x$with_multilib_list" != x; then
4444 arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
4445 if test "x${arm_multilibs}" != xdefault ; then
4446 for arm_multilib in ${arm_multilibs}; do
4447 case ${arm_multilib} in
4449 tmake_profile_file="arm/t-multilib"
4450 tm_mlib_file="arm/arm-mlib.h"
4453 ml=`echo "X$arm_multilib" | sed '1s,^X@,,'`
4454 if test -f "${srcdir}/config/arm/${ml}"; then
4455 tmake_file="${tmake_file} arm/${ml}"
4457 echo "Error: ${ml} does not exist in ${srcdir}/config/arm" >&2
4462 echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2
4469 if test "x${tmake_profile_file}" != x ; then
4470 # arm/t-aprofile and arm/t-rmprofile are only
4471 # designed to work without any with-cpu,
4472 # with-arch, with-mode, with-fpu or with-float
4474 if test "x$with_arch" != x \
4475 || test "x$with_cpu" != x \
4476 || test "x$with_float" != x \
4477 || test "x$with_fpu" != x \
4478 || test "x$with_mode" != x ; then
4479 echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=${with_multilib_list}" 1>&2
4481 elif test "x$ml" != x ; then
4482 echo "Error: You cannot use builtin multilib profiles along with custom ones" 1>&2
4485 # But pass the default value for float-abi
4486 # through to the multilib selector
4488 tmake_file="${tmake_file} ${tmake_profile_file}"
4489 tm_file="$tm_file $tm_mlib_file"
4490 TM_MULTILIB_CONFIG="$with_multilib_list"
4493 target_cpu_cname=${target_cpu_cname:-arm7tdmi}
4494 with_cpu=${with_cpu:-$target_cpu_cname}
4498 supported_defaults=cpu
4503 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4509 fido-*-* | m68k*-*-*)
4510 supported_defaults="arch cpu"
4511 case "$with_arch" in
4513 m68k_arch_family="$with_arch"
4516 echo "Invalid --with-arch=$with_arch" 1>&2
4521 # We always have a $with_cpu setting here.
4523 "m68000" | "m68010" | "m68020" | "m68030" | "m68040" | "m68060")
4524 m68k_cpu_ident=$with_cpu
4527 m68k_cpu_ident=m68020
4528 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_40"
4531 m68k_cpu_ident=m68020
4532 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_60"
4535 # We need the C identifier rather than the string.
4536 m68k_cpu_ident=`awk -v arg="\"$with_cpu\"" \
4537 'BEGIN { FS="[ \t]*[,()][ \t]*" }; \
4538 $1 == "M68K_DEVICE" && $2 == arg { print $3 }' \
4539 ${srcdir}/config/m68k/m68k-devices.def`
4540 if [ x"$m68k_cpu_ident" = x ] ; then
4541 echo "Unknown CPU used in --with-cpu=$with_cpu" 1>&2
4544 with_cpu="mcpu=$with_cpu"
4550 supported_defaults="arch tune"
4552 for which in arch tune; do
4553 eval "val=\$with_$which"
4555 "" | fiji | gfx900 | gfx906 | gfx908 | gfx90a | gfx1030 | gfx1100)
4559 echo "Unknown cpu used in --with-$which=$val." 1>&2
4564 [ "x$with_arch" = x ] && with_arch=gfx900
4566 case "x${with_multilib_list}" in
4571 TM_MULTILIB_CONFIG=`echo "gfx900,gfx906,gfx908,gfx90a,gfx1030,gfx1100" | sed "s/${with_arch},\?//;s/,$//"`
4574 TM_MULTILIB_CONFIG="${with_multilib_list}"
4580 supported_defaults="arch schedule"
4582 case "$with_arch" in
4583 "" | 1.0 | 1.1 | 2.0)
4587 echo "Unknown architecture used in --with-arch=$with_arch" 1>&2
4592 case "$with_schedule" in
4593 "" | 700 | 7100 | 7100LC | 7200 | 7300 | 8000)
4597 echo "Unknown processor used in --with-schedule=$with_schedule." 1>&2
4603 i[34567]86-*-* | x86_64-*-*)
4604 supported_defaults="abi arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64"
4605 for which in arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64; do
4606 eval "val=\$with_$which"
4607 case " $x86_archs " in
4615 echo "CPU given in --with-$which=$val doesn't support 64bit mode." 1>&2
4624 if test x${val} != x; then
4625 case " $x86_64_archs " in
4627 # Disallow x86-64-v* for --with-cpu=/--with-tune=
4628 case "x$which$val" in
4629 xcpu*x86-64-v*|xtune*x86-64-v*)
4630 echo "Unknown CPU given in --with-$which=$val." 1>&2
4639 # Allow $x86_cpus --with-cpu=/--with-tune=
4642 case " $x86_cpus " in
4647 echo "Unknown CPU given in --with-$which=$val." 1>&2
4653 echo "Unknown CPU given in --with-$which=$val." 1>&2
4666 supported_defaults="abi arch tune riscv_attribute isa_spec"
4669 riscv-* | riscv32*) xlen=32 ;;
4670 riscv64*) xlen=64 ;;
4671 *) echo "Unsupported RISC-V target ${target}" 1>&2; exit 1 ;;
4674 case "${with_isa_spec}" in
4675 ""|default|20191213|201912)
4676 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20191213"
4677 with_isa_spec=20191213
4680 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_2P2"
4683 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20190608"
4684 with_isa_spec=20190608
4687 echo "--with-isa-spec only accept 2.2, 20191213, 201912, 20190608 or 201906" 1>&2
4691 case "${with_riscv_attribute}" in
4693 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4696 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=0"
4699 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4702 echo "--with-riscv-attribute=${with_riscv_attribute} is not supported. The argument must begin with yes, no or default." 1>&2
4708 # Infer arch from --with-arch, --target, and --with-abi.
4709 case "${with_arch}" in
4710 rv32e* | rv32i* | rv32g* | rv64e* | rv64i* | rv64g*)
4714 # Infer XLEN, but otherwise assume GC.
4715 case "${with_abi}" in
4716 ilp32e) with_arch="rv32e" ;;
4717 ilp32 | ilp32f | ilp32d) with_arch="rv32gc" ;;
4718 lp64 | lp64f | lp64d) with_arch="rv64gc" ;;
4719 lp64e) with_arch="rv64e" ;;
4720 *) with_arch="rv${xlen}gc" ;;
4724 echo "--with-arch=${with_arch} is not supported. The argument must begin with rv32e, rv32i, rv32g, rv64e, rv64i, or rv64g." 1>&2
4728 PYTHON=`which python || which python3 || which python2`
4729 if test "x${PYTHON}" != x; then
4730 with_arch=`${PYTHON} ${srcdir}/config/riscv/arch-canonicalize -misa-spec=${with_isa_spec} ${with_arch}`
4732 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ARCH=${with_arch}"
4734 # Make sure --with-abi is valid. If it was not specified,
4735 # pick a default based on the ISA, preferring soft-float
4736 # unless the D extension is present.
4737 case "${with_abi}" in
4738 ilp32 | ilp32e | ilp32f | ilp32d | lp64 | lp64e | lp64f | lp64d)
4741 case "${with_arch}" in
4742 rv32*d* | rv32g*) with_abi=ilp32d ;;
4743 rv32e*) with_abi=ilp32e ;;
4744 rv32*) with_abi=ilp32 ;;
4745 rv64*d* | rv64g*) with_abi=lp64d ;;
4746 rv64e*) with_abi=lp64e ;;
4747 rv64*) with_abi=lp64 ;;
4751 echo "--with-abi=${with_abi} is not supported" 1>&2
4755 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ABI=${with_abi}"
4757 # Make sure ABI and ISA are compatible.
4758 case "${with_abi},${with_arch}" in
4759 ilp32,rv32* | ilp32e,rv32e* \
4760 | ilp32f,rv32*f* | ilp32f,rv32g* \
4761 | ilp32d,rv32*d* | ilp32d,rv32g* \
4762 | lp64,rv64* | lp64e,rv64e* \
4763 | lp64f,rv64*f* | lp64f,rv64g* \
4764 | lp64d,rv64*d* | lp64d,rv64g*)
4767 echo "--with-abi=${with_abi} is not supported for ISA ${with_arch}" 1>&2
4771 # Handle --with-multilib-generator.
4772 if test "x${with_multilib_generator}" != xdefault; then
4773 if test "x${with_multilib_list}" != xdefault; then
4774 echo "--with-multilib-list= can't used with --with-multilib-generator= at same time" 1>&2
4779 if ${srcdir}/config/riscv/multilib-generator \
4780 -misa-spec=${with_isa_spec} \
4781 `echo ${with_multilib_generator} | sed 's/;/ /g'`\
4782 > t-multilib-config;
4784 tmake_file="${tmake_file} riscv/t-withmultilib-generator"
4786 echo "invalid option for --with-multilib-generator" 1>&2
4791 echo "--with-multilib-generator= is not supported for ${target}, only supported for riscv*-*-elf*" 1>&2
4797 # Handle --with-multilib-list.
4798 if test "x${with_multilib_list}" != xdefault; then
4799 tmake_file="${tmake_file} riscv/t-withmultilib"
4801 case ${with_multilib_list} in
4802 ilp32 | ilp32f | ilp32d \
4803 | lp64 | lp64f | lp64d )
4804 TM_MULTILIB_CONFIG="${with_arch},${with_multilib_list}"
4807 echo "--with-multilib-list=${with_multilib_list} not supported."
4814 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"
4816 case ${with_float} in
4821 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4827 "" | single | double)
4831 echo "Unknown fpu type used in --with-fpu=$with_fpu" 1>&2
4841 echo "Unknown NaN encoding used in --with-nan=$with_nan" 1>&2
4846 case ${with_fp_32} in
4851 echo "Unknown FP mode used in --with-fp-32=$with_fp_32" 1>&2
4856 case ${with_odd_spreg_32} in
4858 with_odd_spreg_32="odd-spreg"
4861 with_odd_spreg_32="no-odd-spreg"
4867 echo "Unknown odd-spreg-32 type used in --with-odd-spreg-32=$with_odd_spreg_32" 1>&2
4873 "" | 32 | o64 | n32 | 64 | eabi)
4877 echo "Unknown ABI used in --with-abi=$with_abi" 1>&2
4882 case ${with_divide} in
4883 "" | breaks | traps)
4887 echo "Unknown division check type use in --with-divide=$with_divide" 1>&2
4892 case ${with_llsc} in
4903 echo "Unknown llsc type used in --with-llsc" 1>&2
4908 case ${with_mips_plt} in
4913 with_mips_plt=no-plt
4918 echo "Unknown --with-mips-plt argument: $with_mips_plt" 1>&2
4923 case ${with_synci} in
4933 echo "Unknown synci type used in --with-synci" 1>&2
4938 case ${with_lxc1_sxc1} in
4940 with_lxc1_sxc1=lxc1-sxc1
4943 with_lxc1_sxc1=no-lxc1-sxc1
4948 echo "Unknown lxc1-sxc1 type used in --with-lxc1-sxc1" 1>&2
4953 case ${with_madd4} in
4963 echo "Unknown madd4 type used in --with-madd4" 1>&2
4968 case ${with_compact_branches} in
4969 "" | never | always | optimal)
4972 echo "Unknown compact-branches policy used in --with-compact-branches" 1>&2
4987 echo "Unknown msa type used in --with-msa" 1>&2
4994 supported_defaults="abi arch tune fpu simd multilib-default strict-align-lib"
4999 arch_pattern arch_default \
5000 fpu_pattern fpu_default \
5001 triplet_os triplet_abi \
5004 # --with-abi is now obsolete, emit a warning if given.
5008 echo "warning: --with-abi= is now obsolete," \
5009 "the default ABI is derived from your target" \
5010 "triplet ${target}" 1>&2
5014 # Infer ABI from the triplet.
5016 loongarch64-*f64) abi_base="lp64d"; abi_ext="base" ;;
5017 loongarch64-*f32) abi_base="lp64f"; abi_ext="base" ;;
5018 loongarch64-*sf) abi_base="lp64s"; abi_ext="base" ;;
5019 loongarch64-*) abi_base="lp64d"; abi_ext="base" ;;
5021 echo "Unsupported target ${target}." 1>&2
5026 # Get the canonical triplet (multiarch specifier).
5027 case ${abi_base},${abi_ext} in
5028 lp64d,base) triplet_abi="";;
5029 lp64f,base) triplet_abi="f32";;
5030 lp64s,base) triplet_abi="sf";;
5034 *-linux-gnu*) triplet_os="linux-gnu";;
5035 *-linux-musl*) triplet_os="linux-musl";;
5036 *-elf*) triplet_os="elf";;
5038 echo "Unsupported target ${target}." 1>&2
5042 la_canonical_triplet="loongarch64-${triplet_os}${triplet_abi}"
5045 # Perform initial sanity checks on --with-* options.
5046 case ${with_arch} in
5047 "" | abi-default | loongarch64 | la[46]64) ;; # OK, append here.
5049 if test x${host} != x${target}; then
5050 echo "--with-arch=native is illegal for cross-compiler." 1>&2
5055 echo "Unknown arch in --with-arch=$with_arch" 1>&2
5062 "" | none | 32 | 64) ;; # OK, append here.
5064 # Convert "0" to "none" for upcoming checks.
5068 echo "Unknown fpu type in --with-fpu=$with_fpu" 1>&2
5073 case ${with_simd} in
5075 lsx | lasx) # OK, append here.
5080 echo "--with-simd=${with_simd} conflicts with --with-fpu=${with_fpu}" 1>&2
5087 echo "Unknown SIMD extension in --with-simd=$with_simd" 1>&2
5092 # Infer ISA-related default options from the ABI: pass 1
5093 case ${abi_base}/${abi_ext} in
5095 # architectures that support lp64* ABI
5096 arch_pattern="native|abi-default|loongarch64|la[46]64"
5097 # default architecture for lp64* ABI
5098 arch_default="abi-default"
5101 echo "Unsupported ABI type ${abi_base}/${abi_ext}." 1>&2
5106 # Infer ISA-related default options from the ABI: pass 2
5107 case ${abi_base}/${abi_ext} in
5116 fpu_pattern="none|32|64"
5120 echo "Unsupported ABI type ${abi_base}/${abi_ext}." 1>&2
5125 ## Set default value for with_arch.
5126 case ${with_arch} in
5128 if test x${arch_default} != x; then
5129 with_arch=${arch_default}
5131 with_arch=${arch_pattern}
5136 if echo "${with_arch}" | grep -E "^${arch_pattern}$" > /dev/null; then
5139 echo "${abi_base}/${abi_ext} ABI cannot be implemented with" \
5140 "--with-arch=${with_arch}." 1>&2
5146 ## Set default value for with_fpu.
5149 if test x${fpu_default} != x; then
5150 with_fpu=${fpu_default}
5152 with_fpu=${fpu_pattern}
5157 if echo "${with_fpu}" | grep -E "^${fpu_pattern}$" > /dev/null; then
5160 echo "${abi_base}/${abi_ext} ABI cannot be implemented with" \
5161 "--with-fpu=${with_fpu}." 1>&2
5168 # Check default with_tune configuration using with_arch.
5169 case ${with_arch} in
5171 tune_pattern="native|abi-default|loongarch64|la[46]64"
5174 # By default, $with_tune == $with_arch
5179 case ${with_tune} in
5182 if echo "${with_tune}" | grep -E "^${tune_pattern}$" > /dev/null; then
5185 echo "Incompatible options: --with-tune=${with_tune}" \
5186 "and --with-arch=${with_arch}." 1>&2
5192 # Build libraries with -mstrict-align if --with-strict-align-lib is given.
5193 case ${with_strict_align_lib} in
5194 yes) strict_align_opt="/mstrict-align" ;;
5197 echo "Unknown option: --with-strict-align-lib=${with_strict_align_lib}" 1>&2
5203 # Handle --with-multilib-default
5204 if echo "${with_multilib_default}" \
5205 | grep -E -e '[[:space:]]' -e '//' -e '/$' -e '^/' > /dev/null 2>&1; then
5206 echo "Invalid argument to --with-multilib-default." 1>&2
5210 if test x${with_multilib_default} = x; then
5211 # Use -march=abi-default by default when building libraries.
5212 with_multilib_default="/march=abi-default"
5214 unset parse_state component
5216 for component in $(echo "${with_multilib_default}" | tr '/' ' '); do
5217 case ${parse_state},${component} in
5218 arch,|arch,abi-default)
5219 # ABI-default: use the ABI's default ARCH configuration for
5220 # multilib library builds, unless otherwise specified
5221 # in --with-multilib-list.
5222 with_multilib_default="/march=abi-default" ;;
5224 # Fixed: use the default gcc configuration for all multilib
5225 # builds by default.
5226 with_multilib_default="" ;;
5227 arch,native|arch,loongarch64|arch,la[46]64) # OK, append here.
5228 with_multilib_default="/march=${component}" ;;
5230 with_multilib_default="/march=abi-default"
5231 with_multilib_default="${with_multilib_default}/${component}" ;;
5233 with_multilib_default="${with_multilib_default}/${component}" ;;
5236 if test x${parse_state} = xarch; then
5240 unset parse_state component
5243 # Handle --with-multilib-list.
5244 if test x"${with_multilib_list}" = x \
5245 || test x"${with_multilib_list}" = xno \
5246 || test x"${with_multilib_list}" = xdefault \
5247 || test x"${enable_multilib}" != xyes; then
5249 with_multilib_list="${abi_base}/${abi_ext}"
5252 # Check if the configured default ABI combination is included in
5253 # ${with_multilib_list}.
5254 loongarch_multilib_list_sane=no
5256 # This one goes to TM_MULTILIB_CONFIG, for use in t-linux.
5257 loongarch_multilib_list_make="${abi_base},"
5259 # This one goes to tm_defines, for use in loongarch-driver.c.
5260 loongarch_multilib_list_c=""
5262 # ${with_multilib_list} should not contain whitespaces,
5263 # consecutive commas or slashes.
5264 if echo "${with_multilib_list}" \
5265 | grep -E -e "[[:space:]]" -e '[,/][,/]' -e '[,/]$' -e '^[,/]' > /dev/null 2>&1; then
5266 echo "Invalid argument to --with-multilib-list." 1>&2
5270 unset component elem_abi_base elem_abi_ext elem_tmp parse_state all_abis
5271 for elem in $(echo "${with_multilib_list}" | tr ',' ' '); do
5272 unset elem_abi_base elem_abi_ext
5273 parse_state="abi-base"
5275 for component in $(echo "${elem}" | tr '/' ' '); do
5276 if test x${parse_state} = x"abi-base"; then
5278 case ${component} in
5279 lp64d | lp64f | lp64s) elem_tmp="ABI_BASE_$(echo ${component} | tr a-z A-Z),";;
5281 echo "Unknown base ABI \"${component}\" in --with-multilib-list." 1>&2
5285 loongarch_multilib_list_c="${loongarch_multilib_list_c}${elem_tmp}"
5286 loongarch_multilib_list_make="${loongarch_multilib_list_make}mabi=${component}"
5287 elem_abi_base="${component}"
5289 parse_state="abi-ext"
5293 if test x${parse_state} = x"abi-ext"; then
5294 # ABI extension type
5295 case ${component} in
5298 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5299 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5305 # The default ABI extension is "base" if unspecified.
5307 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5308 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5312 if test x${parse_state} = x"arch"; then
5314 case ${component} in
5315 native | abi-default | loongarch64 | la[46]64) # OK, append here.
5316 # Append -march spec for each multilib variant.
5317 loongarch_multilib_list_make="${loongarch_multilib_list_make}/march=${component}"
5323 # "/default" is equivalent to --with-multilib-default=fixed
5329 # If ARCH is unspecified for this multilib variant, use ${with_multllib_default}.
5330 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5334 if test x${parse_state} = x"opts"; then
5335 # Other compiler options for building libraries.
5336 # (no static sanity check performed)
5337 case ${component} in
5339 # Append other components as additional build options
5340 # (without the prepending dash).
5341 # Their validity should be examined by the compiler.
5342 loongarch_multilib_list_make="${loongarch_multilib_list_make}/${component}"
5348 case ${parse_state} in
5351 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5352 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5353 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5356 # If ARCH is unspecified for this multilib variant, use ${with_multllib_default}.
5357 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5364 # Use mstrict-align for building libraries if --with-strict-align-lib is given.
5365 loongarch_multilib_list_make="${loongarch_multilib_list_make}${strict_align_opt}"
5367 # Check for repeated configuration of the same multilib variant.
5368 if echo "${elem_abi_base}/${elem_abi_ext}" \
5369 | grep -E "^(${all_abis%|})$" >/dev/null 2>&1; then
5370 echo "Repeated multilib config of \"${elem_abi_base}/${elem_abi_ext}\" in --with-multilib-list."
5373 all_abis="${all_abis}${elem_abi_base}/${elem_abi_ext}|"
5376 # Check if the default ABI configuration of the GCC binary
5377 # is included in the enabled multilib variants.
5378 if test x${elem_abi_base} = x${abi_base} \
5379 && test x${elem_abi_ext} = x${abi_ext}; then
5380 loongarch_multilib_list_sane=yes
5382 loongarch_multilib_list_make="${loongarch_multilib_list_make},"
5384 unset component elem_abi_base elem_abi_ext elem_tmp parse_state all_abis
5387 # Check if the default ABI combination is in the default list.
5388 if test x${loongarch_multilib_list_sane} = xno; then
5389 if test x${abi_ext} = xbase; then
5392 abi_ext="/${abi_ext}"
5395 echo "Default ABI combination (${abi_base}${abi_ext})" \
5396 "not found in --with-multilib-list." 1>&2
5400 # Remove the excessive appending comma.
5401 loongarch_multilib_list_c=${loongarch_multilib_list_c%,}
5402 loongarch_multilib_list_make=${loongarch_multilib_list_make%,}
5406 supported_defaults="arch cpu nds32_lib float fpu_config"
5408 # process --with-arch
5409 case "${with_arch}" in
5411 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5415 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5418 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=1"
5421 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=2"
5425 echo "Cannot accept --with-arch=$with_arch, available values are: v2 v2j v3 v3m v3f v3s" 1>&2
5430 case "${with_cpu}" in
5434 n6 | n7 |n8 | e8 | s8 | n9 | n10 | d10 | n12 | n13 | n15)
5438 echo "Cannot accept --with-cpu=$with_cpu, available values are: n6 n7 n8 e8 s8 n9 n10 d10 n12 n13 n15" 1>&2
5443 # process --with-nds32-lib
5444 case "${with_nds32_lib}" in
5448 with_nds32_lib=ulibc
5451 with_nds32_lib=glibc
5454 with_nds32_lib=newlib
5455 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5461 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5465 # for the arch=v3f or arch=v3s under mculib toolchain,
5466 # we would like to set -fno-math-errno as default
5467 case "${with_arch}" in
5469 tm_defines="${tm_defines} TARGET_DEFAULT_NO_MATH_ERRNO=1"
5477 echo "Cannot accept --with-nds32-lib=$with_nds32_lib, available values are: newlib mculib glibc uclibc" 1>&2
5482 # process --with-float
5483 case "${with_float}" in
5488 echo "Cannot accept --with-float=$with_float, available values are: soft hard" 1>&2
5493 # process --with-config-fpu
5494 case "${with_config_fpu}" in
5499 echo "Cannot accept --with-config-fpu=$with_config_fpu, available values from 0 to 7" 1>&2
5507 supported_defaults="arch"
5508 case "$with_arch" in
5513 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5520 supported_defaults=arch
5521 TM_MULTILIB_CONFIG=$with_arch
5522 #TODO 'sm_[...]' list per 'nvptx-sm.def'.
5527 sm_35 | sm_53 | sm_70 | sm_75 | sm_80 )
5528 # OK, but we'd like 'sm_30', too.
5529 TM_MULTILIB_CONFIG="$TM_MULTILIB_CONFIG sm_30"
5532 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5538 powerpc*-*-* | rs6000-*-*)
5539 supported_defaults="abi cpu cpu_32 cpu_64 float tune tune_32 tune_64 advance_toolchain"
5541 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5542 eval "val=\$with_$which"
5544 default32 | default64)
5549 echo "$val only valid for --with-cpu and --with-tune." 1>&2
5553 with_which="with_$which"
5557 tm_defines="${tm_defines} CONFIG_PPC405CR"
5558 eval "with_$which=405"
5560 "" | common | native \
5561 | power[3456789] | power10 | power5+ | power6x \
5562 | powerpc | powerpc64 | powerpc64le \
5564 | 401 | 403 | 405 | 405fp | 440 | 440fp | 464 | 464fp \
5565 | 476 | 476fp | 505 | 601 | 602 | 603 | 603e | ec603e \
5566 | 604 | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 \
5567 | a2 | e300c[23] | 854[08] | e500mc | e500mc64 | e5500 | e6500 \
5568 | titan | 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5 | cell)
5572 echo "Unknown cpu used in --with-$which=$val." 1>&2
5579 "" | elfv1 | elfv2 )
5583 echo "Unknown ABI used in --with-abi=$with_abi"
5588 if test "x$with_advance_toolchain" != x; then
5589 if test -d "/opt/$with_advance_toolchain/." -a \
5590 -d "/opt/$with_advance_toolchain/bin/." -a \
5591 -d "/opt/$with_advance_toolchain/include/."; then
5593 tm_file="$tm_file ./advance-toolchain.h"
5594 (at="/opt/$with_advance_toolchain"
5595 echo "/* Use Advance Toolchain $at */"
5597 echo "#undef LINK_OS_NEW_DTAGS_SPEC"
5598 echo "#define LINK_OS_NEW_DTAGS_SPEC" \
5599 "\"--enable-new-dtags\""
5601 echo "#undef DYNAMIC_LINKER_PREFIX"
5602 echo "#define DYNAMIC_LINKER_PREFIX \"$at\""
5604 echo "#undef MD_EXEC_PREFIX"
5605 echo "#define MD_EXEC_PREFIX \"$at/bin/\""
5607 echo "#undef MD_STARTFILE_PREFIX"
5608 echo "#define MD_STARTFILE_PREFIX \"$prefix/lib/\""
5610 echo "#undef MD_STARTFILE_PREFIX_1"
5611 echo "#define MD_STARTFILE_PREFIX_1 \"$at/lib/\"") \
5612 > advance-toolchain.h
5614 echo "Unknown advance-toolchain $with_advance_toolchain"
5619 # Set up the default long double format if the user changed it.
5620 if test x$with_long_double_format = xieee; then
5621 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=1"
5623 elif test x$with_long_double_format = xibm; then
5624 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=0"
5629 supported_defaults="arch mode tune"
5631 for which in arch tune; do
5632 eval "val=\$with_$which"
5634 "" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | z15 | z16 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12 | arch13 | arch14 )
5638 echo "Unknown cpu used in --with-$which=$val." 1>&2
5644 case ${with_mode} in
5649 echo "Unknown architecture mode used in --with-mode=$with_mode." 1>&2
5655 sh[123456ble]*-*-* | sh-*-*)
5656 supported_defaults="cpu"
5657 case "`echo $with_cpu | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz- | sed s/sh/m/`" in
5658 "" | m1 | m2 | m2e | m3 | m3e | m4 | m4-single | m4-single-only | m4-nofpu )
5661 m2a | m2a-single | m2a-single-only | m2a-nofpu)
5663 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al)
5666 echo "Unknown CPU used in --with-cpu=$with_cpu, known values:" 1>&2
5667 echo "m1 m2 m2e m3 m3e m4 m4-single m4-single-only m4-nofpu" 1>&2
5668 echo "m4a m4a-single m4a-single-only m4a-nofpu m4al" 1>&2
5669 echo "m2a m2a-single m2a-single-only m2a-nofpu" 1>&2
5675 supported_defaults="cpu cpu_32 cpu_64 float tune tune_32 tune_64"
5677 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5678 eval "val=\$with_$which"
5680 "" | sparc | sparcv9 | sparc64 \
5682 | v8 | supersparc | hypersparc | leon | leon3 | leon3v7 \
5683 | sparclite | f930 | f934 | sparclite86x \
5684 | sparclet | tsc701 \
5685 | v9 | ultrasparc | ultrasparc3 | niagara | niagara2 \
5686 | niagara3 | niagara4 | niagara7 | m8)
5690 echo "Unknown cpu used in --with-$which=$val" 1>&2
5696 case ${with_float} in
5701 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
5708 supported_defaults="arch"
5710 case ${with_arch} in
5711 "" | c62x | c64x | c64x+ | c67x | c67x+ | c674x)
5715 echo "Unknown arch used in --with-arch=$with_arch." 1>&2
5722 supported_defaults=cpu
5724 "" | v850e | v850e1 | v850e2 | v850es | v850e2v3 | v850e3v5)
5728 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5734 supported_defaults="cpu"
5738 *) echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5745 # VxWorks support for shared libraries has to be requested explicitly,
5746 # so we can factor this part here:
5748 case "${target}-${enable_shared}" in
5750 tmake_file="${tmake_file} t-slibgcc"
5754 # Targets for which there is at least one VxWorks port should include
5755 # vxworks-dummy.h to allow safe references to various TARGET_VXWORKS kinds
5756 # of markers from other files in the port, including the vxworks*.h files to
5757 # distinguish VxWorks variants such as VxWorks 7 or 64).
5760 arm*-*-* | i[34567]86-*-* | mips*-*-* | powerpc*-*-* | sh*-*-* \
5761 | sparc*-*-* | x86_64-*-*)
5762 tm_file="vxworks-dummy.h ${tm_file}"
5766 # Set some miscellaneous flags for particular targets.
5767 target_cpu_default2=
5770 if test x"$target_cpu_cname" != x
5772 target_cpu_default2=$target_cpu_cname
5777 if test x$with_cpu = x
5779 echo "Don't know the target cpu" 1>&2
5782 target_cpu_default2="\\\"$with_cpu\\\""
5787 if test x$gas = xyes
5789 target_cpu_default2="MASK_GAS"
5793 fido*-*-* | m68k*-*-*)
5794 target_cpu_default2=$m68k_cpu_ident
5795 tmake_file="m68k/t-opts $tmake_file"
5796 if [ x"$m68k_arch_family" != x ]; then
5797 tmake_file="m68k/t-$m68k_arch_family $tmake_file"
5801 i[34567]86-*-darwin* | x86_64-*-darwin*)
5803 i[34567]86-*-linux* | x86_64-*-linux*)
5804 extra_objs="${extra_objs} gnu-property.o"
5805 tmake_file="$tmake_file i386/t-linux i386/t-gnu-property"
5807 i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu)
5808 tmake_file="$tmake_file i386/t-kfreebsd"
5811 tmake_file="$tmake_file i386/t-gnu"
5813 i[34567]86-*-msdosdjgpp*)
5814 tmake_file="${tmake_file} i386/t-djgpp"
5816 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
5818 i[34567]86-*-cygwin* | x86_64-*-cygwin*)
5820 i[34567]86-*-mingw* | x86_64-*-mingw*)
5822 i[34567]86-*-dragonfly* | x86_64-*-dragonfly*)
5824 i[34567]86-*-freebsd*)
5827 tmake_file="${tmake_file} i386/t-freebsd64"
5833 if test x$gnu_ld = xyes
5835 target_cpu_default2="MASK_SPLIT_ADDRESSES"
5839 tm_defines="TARGET_ENDIAN_DEFAULT=0 $tm_defines"
5842 if test x$with_arch != x; then
5843 default_mips_arch=$with_arch
5845 with_arch=$default_mips_arch
5847 if test x$with_abi != x; then
5848 default_mips_abi=$with_abi
5850 case ${default_mips_arch} in
5851 mips1) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS1" ;;
5852 mips2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS2" ;;
5853 mips3) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3" ;;
5854 mips4) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS4" ;;
5855 mips32) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32" ;;
5856 mips32r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2" ;;
5857 mips32r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6" ;;
5858 mips64) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64" ;;
5859 mips64r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2" ;;
5860 mips64r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6" ;;
5862 case ${default_mips_abi} in
5863 32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_32" ;;
5864 o64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_O64" ;;
5865 n32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_N32" ;;
5866 64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_64" ;;
5867 eabi) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_EABI" ;;
5869 tmake_file="mips/t-mips $tmake_file"
5873 # Export canonical triplet.
5874 tm_defines="${tm_defines} LA_MULTIARCH_TRIPLET=${la_canonical_triplet}"
5876 # Define macro LA_DISABLE_MULTILIB if --disable-multilib
5877 tm_defines="${tm_defines} TM_MULTILIB_LIST=${loongarch_multilib_list_c}"
5878 if test x$enable_multilib = xyes; then
5879 TM_MULTILIB_CONFIG="${loongarch_multilib_list_make}"
5881 tm_defines="${tm_defines} LA_DISABLE_MULTILIB"
5884 # Let --with- flags initialize the enum variables from loongarch.opt.
5885 # See macro definitions from loongarch-opts.h and loongarch-cpu.h.
5888 tm_defines="${tm_defines} DEFAULT_CPU_ARCH=CPU_$(echo ${with_arch} | tr a-z- A-Z_)"
5891 tm_defines="${tm_defines} DEFAULT_ABI_BASE=ABI_BASE_$(echo ${abi_base} | tr a-z- A-Z_)"
5895 base) tm_defines="${tm_defines} DEFAULT_ABI_EXT=ABI_EXT_BASE" ;;
5899 if test x${with_tune} != x; then
5900 tm_defines="${tm_defines} DEFAULT_CPU_TUNE=CPU_$(echo ${with_tune} | tr a-z- A-Z_)"
5905 none) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_NONE" ;;
5906 32) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU32" ;;
5907 64) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU64" ;;
5911 case ${with_simd} in
5912 none) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_NONE" ;;
5913 lsx) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_SIMD_LSX" ;;
5914 lasx) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_SIMD_LASX" ;;
5917 tmake_file="loongarch/t-loongarch $tmake_file"
5920 powerpc*-*-* | rs6000-*-*)
5921 # FIXME: The PowerPC port uses the value set at compile time,
5922 # although it's only cosmetic.
5923 if test "x$with_cpu" != x
5925 target_cpu_default2="\\\"$with_cpu\\\""
5927 out_file="${cpu_type}/${cpu_type}.cc"
5928 c_target_objs="${c_target_objs} ${cpu_type}-c.o"
5929 cxx_target_objs="${cxx_target_objs} ${cpu_type}-c.o"
5930 d_target_objs="${d_target_objs} ${cpu_type}-d.o"
5931 tmake_file="${cpu_type}/t-${cpu_type} ${tmake_file}"
5934 sh[123456ble]*-*-* | sh-*-*)
5935 c_target_objs="${c_target_objs} sh-c.o"
5936 cxx_target_objs="${cxx_target_objs} sh-c.o"
5940 # Some standard aliases.
5945 xsparcv9 | xsparc64)
5950 if test x$with_tune = x ; then
5961 # The SPARC port checks this value at compile-time.
5962 target_cpu_default2="TARGET_CPU_$with_cpu"
5966 case "x$with_cpu" in
5969 xv850e | xv850e1 | xv850e2 | xv850e2v3 | xv850e3v5)
5970 target_cpu_default2="TARGET_CPU_$with_cpu"
5973 target_cpu_default2="TARGET_CPU_v850e1"
5978 target_cpu_default2="TARGET_CPU_$with_cpu"
5981 tmake_file="$tmake_file i386/t-gnu64"
5986 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"
5987 for option in $all_defaults
5989 eval "val=\$with_"`echo $option | sed s/-/_/g`
5990 if test -n "$val"; then
5991 case " $supported_defaults " in
5995 echo "This target does not support --with-$option." 2>&1
5996 echo "Valid --with options are: $supported_defaults" 2>&1
6003 t="{ \"$option\", \"$val\" }"
6005 t="${t}, { \"$option\", \"$val\" }"
6012 configure_default_options="{ { NULL, NULL} }"
6014 configure_default_options="{ ${t} }"
6017 if test "$target_cpu_default2" != ""
6019 if test "$target_cpu_default" != ""
6021 target_cpu_default="(${target_cpu_default}|${target_cpu_default2})"
6023 target_cpu_default=$target_cpu_default2
6028 i[34567]86-*-* | x86_64-*-*)
6029 if test x$enable_as_accelerator = xyes; then
6030 extra_programs="mkoffload\$(exeext)"