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 znver5 btver1 btver2 k8 k8-sse3 \
707 opteron opteron-sse3 nocona core2 corei7 corei7-avx core-avx-i core-avx2 \
708 atom 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"
1202 tmake_file="${tmake_file} aarch64/t-aarch64-rtems"
1207 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1210 aarch64_multilibs="${with_multilib_list}"
1211 if test "$aarch64_multilibs" = "default"; then
1212 aarch64_multilibs="lp64,ilp32"
1214 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1215 for aarch64_multilib in ${aarch64_multilibs}; do
1216 case ${aarch64_multilib} in
1218 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1221 echo "--with-multilib-list=${aarch64_multilib} not supported."
1225 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1227 aarch64*-*-freebsd*)
1228 tm_file="${tm_file} elfos.h ${fbsd_tm_file}"
1229 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-freebsd.h"
1230 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
1231 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1234 tm_file="${tm_file} elfos.h ${nbsd_tm_file}"
1235 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-netbsd.h"
1236 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-netbsd"
1237 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1240 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h"
1241 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-linux.h"
1242 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-linux"
1243 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1246 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1249 aarch64_multilibs="${with_multilib_list}"
1250 if test "$aarch64_multilibs" = "default"; then
1251 # TODO: turn on ILP32 multilib build after its support is mature.
1252 # aarch64_multilibs="lp64,ilp32"
1253 aarch64_multilibs="lp64"
1255 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1256 for aarch64_multilib in ${aarch64_multilibs}; do
1257 case ${aarch64_multilib} in
1259 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1262 echo "--with-multilib-list=${aarch64_multilib} not supported."
1266 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1269 tm_file="${tm_file} elfos.h gnu-user.h gnu.h glibc-stdint.h"
1270 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-gnu.h"
1271 tmake_file="${tmake_file} aarch64/t-aarch64"
1272 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1274 aarch64*-wrs-vxworks*)
1275 tm_file="${tm_file} elfos.h aarch64/aarch64-elf.h"
1276 tm_file="${tm_file} vx-common.h vxworks.h aarch64/aarch64-vxworks.h"
1277 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-vxworks"
1280 tm_file="elfos.h ${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h glibc-stdint.h"
1281 tmake_file="${tmake_file} alpha/t-linux alpha/t-alpha"
1282 extra_options="${extra_options} alpha/elf.opt"
1285 tm_file="elfos.h ${tm_file} ${nbsd_tm_file} alpha/elf.h alpha/netbsd.h"
1286 tmake_file="${tmake_file} alpha/t-alpha"
1287 extra_options="${extra_options} netbsd.opt netbsd-elf.opt \
1291 tm_defines="${tm_defines} OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_FUNCTION_SIZE OBSD_HAS_DECLARE_OBJECT"
1292 tm_file="elfos.h alpha/alpha.h alpha/elf.h openbsd.h openbsd-stdint.h alpha/openbsd.h openbsd-libpthread.h"
1293 tmake_file="${tmake_file} alpha/t-alpha"
1294 extra_options="${extra_options} openbsd.opt alpha/elf.opt"
1295 # default x-alpha is only appropriate for dec-osf.
1298 tm_file="${tm_file} vms/vms.h alpha/vms.h"
1299 tmake_file="${tmake_file} alpha/t-vms alpha/t-alpha"
1302 tm_file="arc/arc-arch.h elfos.h newlib-stdint.h arc/elf.h ${tm_file}"
1303 tmake_file="arc/t-multilib arc/t-arc"
1304 extra_gcc_objs="driver-arc.o"
1305 if test "x$with_cpu" != x; then
1306 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1308 if test x${with_endian} = x; then
1310 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1311 *) with_endian=little ;;
1314 case ${with_endian} in
1316 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1318 case ${with_endian} in
1319 big*) tm_file="arc/big.h ${tm_file}"
1323 tm_file="arc/arc-arch.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arc/linux.h ${tm_file}"
1324 tmake_file="${tmake_file} arc/t-multilib-linux arc/t-arc"
1325 extra_gcc_objs="driver-arc.o"
1326 if test "x$with_cpu" != x; then
1327 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1329 if test x${with_endian} = x; then
1331 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1332 *) with_endian=little ;;
1335 case ${with_endian} in
1337 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1339 case ${with_endian} in
1340 big*) tm_file="arc/big.h ${tm_file}"
1342 # Force .init_array support. The configure script cannot always
1343 # automatically detect that GAS supports it, yet we require it.
1344 gcc_cv_initfini_array=yes
1347 # We only support VxWorks 7 now on ARM, post SR600. Pre SR600
1348 # VxWorks 7 was transitory and major versions prior to 7 were based
1349 # on long deprecated ABI, not supported at all any more regardless
1351 extra_options="${extra_options} arm/vxworks.opt"
1352 tmake_file="${tmake_file} arm/t-arm arm/t-vxworks arm/t-bpabi"
1353 tm_file="elfos.h arm/elf.h arm/bpabi.h arm/aout.h ${tm_file}"
1354 tm_file="${tm_file} vx-common.h vxworks.h arm/vxworks.h"
1355 target_cpu_cname="generic-armv7-a"
1356 need_64bit_hwint=yes
1358 arm*-*-freebsd*) # ARM FreeBSD EABI
1359 tm_file="elfos.h ${fbsd_tm_file} arm/elf.h"
1362 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1365 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi"
1366 tm_file="${tm_file} arm/bpabi.h arm/freebsd.h arm/aout.h arm/arm.h"
1369 target_cpu_cname="arm1176jzf-s"
1370 if test $fbsd_major -ge 11; then
1371 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1375 target_cpu_cname="generic-armv7-a"
1376 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1379 target_cpu_cname="arm9"
1382 with_tls=${with_tls:-gnu}
1385 target_cpu_cname="strongarm"
1386 tmake_file="${tmake_file} arm/t-arm"
1387 tm_file="elfos.h ${nbsd_tm_file} arm/elf.h"
1388 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1390 arm*eb-*) tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" ;;
1393 arm*-*-netbsdelf-*eabi*)
1394 tm_file="$tm_file arm/bpabi.h arm/netbsd-elf.h arm/netbsd-eabi.h"
1395 tmake_file="$tmake_file arm/t-bpabi arm/t-netbsdeabi"
1398 tm_file="$tm_file arm/netbsd-elf.h"
1399 tmake_file="$tmake_file arm/t-netbsd"
1402 tm_file="${tm_file} arm/aout.h arm/arm.h"
1404 arm*-*-netbsdelf-*eabihf*)
1405 # Hard-float requires at least Arm v5te
1406 target_cpu_cname="arm10e"
1407 tm_defines="${tm_defines} TARGET_DEFAULT_FLOAT_ABI=ARM_FLOAT_ABI_HARD"
1411 armv6*) target_cpu_cname="arm1176jzf-s";;
1412 armv7*) target_cpu_cname="generic-armv7-a";;
1415 arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)
1416 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"
1417 extra_options="${extra_options} linux-android.opt"
1420 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1423 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
1424 tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h arm/aout.h arm/arm.h"
1426 arm*-*-uclinuxfdpiceabi)
1427 tm_file="$tm_file arm/uclinuxfdpiceabi.h"
1430 # Define with_float to "hard" if not already defined and
1431 # target name ends with "hf"
1432 case $target:$with_float in
1437 # Generation of floating-point instructions requires at least ARMv5te.
1438 if [ "$with_float" = "hard" -o "$with_float" = "softfp" ] ; then
1439 target_cpu_cname="arm10e"
1441 target_cpu_cname="arm10tdmi"
1443 # Define multilib configuration for arm-linux-androideabi.
1446 tmake_file="$tmake_file arm/t-linux-androideabi"
1449 # The EABI requires the use of __cxa_atexit.
1450 default_use_cxa_atexit=yes
1451 with_tls=${with_tls:-gnu}
1453 arm*-*-uclinux*eabi*) # ARM ucLinux
1454 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
1455 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi"
1456 tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h arm/aout.h arm/arm.h"
1457 target_cpu_cname="arm7tdmi"
1458 # The EABI requires the use of __cxa_atexit.
1459 default_use_cxa_atexit=yes
1462 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1463 tm_file="${tm_file} newlib-stdint.h phoenix.h"
1464 tm_file="${tm_file} arm/aout.h arm/arm.h"
1465 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi arm/t-phoenix"
1466 target_cpu_cname="arm7tdmi"
1468 arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
1471 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1473 default_use_cxa_atexit=yes
1474 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1475 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf"
1476 target_cpu_cname="arm7tdmi"
1479 tm_file="$tm_file newlib-stdint.h"
1480 tmake_file="${tmake_file} arm/t-bpabi"
1484 tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h"
1485 tmake_file="${tmake_file} arm/t-bpabi arm/t-fuchsia"
1486 target_cpu_cname="generic-armv7-a"
1489 tm_file="${tm_file} arm/rtems.h rtems.h newlib-stdint.h"
1490 tmake_file="${tmake_file} arm/t-bpabi arm/t-rtems"
1493 tm_file="${tm_file} arm/symbian.h"
1494 # We do not include t-bpabi for Symbian OS because the system
1495 # provides its own implementation of the BPABI functions.
1496 tmake_file="${tmake_file} arm/t-symbian"
1497 target_cpu_cname="arm10tdmi"
1500 tm_file="${tm_file} arm/aout.h arm/arm.h"
1503 tm_file="elfos.h avr/elf.h avr/avr-arch.h avr/avr.h avr/specs.h avr/avr-stdint.h"
1504 if test x${with_avrlibc} != xno; then
1505 tm_file="${tm_file} ${cpu_type}/avrlibc.h"
1506 tm_defines="${tm_defines} WITH_AVRLIBC"
1508 # Work out avr_double_comparison which is 2 or 3 and is used in
1509 # target hook FLOAT_LIB_COMPARE_RETURNS_BOOL to determine whether
1510 # DFmode comparisons return 3-state or 2-state results.
1511 case y${with_double_comparison} in
1513 avr_double_comparison=3
1516 avr_double_comparison=2
1519 echo "Error: --with-double-comparison= can only be used with: 'tristate', 'bool', 'libf7'" 1>&2
1523 case "y${with_libf7}" in
1525 # avr_double_comparison as set above.
1528 avr_double_comparison=2
1529 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1531 y | yyes | ymath-symbols)
1532 avr_double_comparison=2
1533 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1534 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1535 tm_defines="${tm_defines} WITH_LIBF7_MATH_SYMBOLS"
1538 avr_double_comparison=2
1539 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1540 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1543 echo "Error: --with-libf7=${with_libf7} but can only be used with: 'libgcc', 'math', 'math-symbols', 'yes', 'no'" 1>&2
1547 tm_defines="${tm_defines} WITH_DOUBLE_COMPARISON=${avr_double_comparison}"
1548 case y${with_double} in
1551 tm_defines="${tm_defines} HAVE_DOUBLE32"
1555 tm_defines="${tm_defines} HAVE_DOUBLE64"
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"
1566 avr_double_multilib=1
1567 tm_defines="${tm_defines} HAVE_DOUBLE32"
1568 tm_defines="${tm_defines} HAVE_DOUBLE64"
1569 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1572 echo "Error: --with-double= can only be used with: '32', '32,64', '64,32', '64'" 1>&2
1576 case y${with_long_double} in
1579 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1583 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
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"
1594 avr_long_double_multilib=1
1595 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1596 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1597 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1600 avr_long_double=${avr_double}
1601 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_IS_DOUBLE"
1602 if test y${avr_double_multilib} = y1; then
1603 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1604 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1606 tm_defines="${tm_defines} HAVE_LONG_DOUBLE${avr_long_double}"
1610 echo "Error: --with-long_double= can only be used with: '32', '32,64', '64,32', '64', 'double'" 1>&2
1614 if test ${avr_long_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 32xy1z; then
1615 if test y${with_long_double} != ydouble; then
1616 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
1620 if test ${avr_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 64x1yz; then
1621 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
1624 if test y${avr_double}${avr_long_double} = y6432; then
1625 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
1628 tm_defines="${tm_defines} WITH_DOUBLE${avr_double}"
1629 tm_defines="${tm_defines} WITH_LONG_DOUBLE${avr_long_double}"
1630 tmake_file="${tmake_file} avr/t-avr avr/t-multilib"
1632 extra_gcc_objs="driver-avr.o avr-devices.o"
1633 extra_objs="avr-devices.o avr-log.o"
1636 tm_file="${tm_file} elfos.h newlib-stdint.h bfin/elf.h"
1637 tmake_file=bfin/t-bfin-elf
1641 tm_file="${tm_file} elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/uclinux.h"
1642 tmake_file=bfin/t-bfin-uclinux
1645 bfin*-linux-uclibc*)
1646 tm_file="${tm_file} elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/linux.h ./linux-sysroot-suffix.h"
1647 tmake_file="${tmake_file} bfin/t-bfin-linux"
1651 tm_file="${tm_file} elfos.h bfin/elf.h bfin/rtems.h rtems.h newlib-stdint.h"
1652 tmake_file="${tmake_file} bfin/t-rtems"
1655 tm_file="${tm_file} elfos.h newlib-stdint.h bfin/elf.h"
1660 tm_file="elfos.h ${tm_file}"
1661 tmake_file="${tmake_file} bpf/t-bpf"
1663 use_gcc_stdint=provide
1664 extra_objs="btfext-out.o core-builtins.o"
1665 target_gtfiles="$target_gtfiles \$(srcdir)/config/bpf/btfext-out.cc \$(srcdir)/config/bpf/core-builtins.cc"
1667 cris-*-elf | cris-*-none)
1668 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1669 tmake_file="cris/t-cris cris/t-elfmulti"
1671 extra_options="${extra_options} cris/elf.opt"
1675 if test x${with_endian} != x; then
1676 case ${with_endian} in
1679 echo "with_endian=${with_endian} not supported."
1684 if test x${with_float} != x; then
1685 case ${with_float} in
1686 soft | hard | softfp) ;;
1688 "Unknown floating point type used in --with-float=$with_float"
1693 tm_file="csky/csky.h"
1694 md_file="csky/csky.md"
1695 out_file="csky/csky.cc"
1696 tm_p_file="${tm_p_file} csky/csky-protos.h"
1697 extra_options="${extra_options} csky/csky_tables.opt"
1699 if test x${enable_tpf_debug} = xyes; then
1700 tm_defines="${tm_defines} ENABLE_TPF_DEBUG"
1705 tm_file="elfos.h newlib-stdint.h ${tm_file} csky/csky-elf.h"
1706 tmake_file="csky/t-csky csky/t-csky-elf"
1707 default_use_cxa_atexit=no
1711 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} csky/csky-linux-elf.h"
1712 tmake_file="${tmake_file} csky/t-csky"
1714 if test "x${enable_multilib}" = xyes ; then
1715 tm_defines="$tm_defines CSKY_ENABLE_MULTILIB"
1716 tmake_file="${tmake_file} csky/t-csky-linux"
1721 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
1722 # Force .init_array support. The configure script cannot always
1723 # automatically detect that GAS supports it, yet we require it.
1724 gcc_cv_initfini_array=yes
1726 csky-*-linux-uclibc*)
1727 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
1728 default_use_cxa_atexit=no
1731 echo "Unknown target $target"
1737 echo "Unknown target $target"
1742 epiphany-*-elf | epiphany-*-rtems*)
1743 tm_file="elfos.h ${tm_file}"
1744 tmake_file="${tmake_file} epiphany/t-epiphany"
1747 tm_file="${tm_file} epiphany/rtems.h rtems.h newlib-stdint.h"
1750 tm_file="${tm_file} newlib-stdint.h"
1753 extra_options="${extra_options} fused-madd.opt"
1754 extra_objs="${extra_objs} mode-switch-use.o resolve-sw-modes.o"
1755 tm_defines="${tm_defines} EPIPHANY_STACK_OFFSET=${with_stack_offset:-8}"
1756 extra_headers="epiphany_intrinsics.h"
1759 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1762 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1763 tmake_file=frv/t-frv
1766 tm_file="elfos.h ${tm_file} \
1767 gnu-user.h linux.h glibc-stdint.h frv/linux.h"
1768 tmake_file="${tmake_file} frv/t-frv frv/t-linux"
1773 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1774 tmake_file="${tmake_file} ft32/t-ft32"
1777 tm_file="elfos.h gcn/gcn-hsa.h gcn/gcn.h newlib-stdint.h"
1778 tmake_file="gcn/t-gcn-hsa"
1779 native_system_header_dir=/include
1780 extra_modes=gcn/gcn-modes.def
1781 extra_objs="${extra_objs} gcn-tree.o"
1783 x86_64*-*-linux-gnu )
1784 if test "$ac_cv_search_dlopen" != no; then
1785 extra_programs="${extra_programs} gcn-run\$(exeext)"
1789 if test x$enable_as_accelerator = xyes; then
1790 extra_programs="${extra_programs} mkoffload\$(exeext)"
1791 tm_file="${tm_file} gcn/offload.h"
1793 # Force .init_array support.
1794 gcc_cv_initfini_array=yes
1800 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1801 tmake_file="${tmake_file} moxie/t-moxie"
1806 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h moxie/uclinux.h"
1807 tmake_file="${tmake_file} moxie/t-moxie"
1810 tmake_file="${tmake_file} moxie/t-moxie"
1811 tm_file="moxie/moxie.h elfos.h moxie/rtems.h rtems.h newlib-stdint.h"
1816 tm_file="${tm_file} elfos.h moxie/moxiebox.h newlib-stdint.h"
1817 tmake_file="${tmake_file} moxie/t-moxiebox"
1820 tmake_file="h8300/t-h8300"
1821 tm_file="h8300/h8300.h elfos.h newlib-stdint.h h8300/elf.h"
1824 tmake_file="${tmake_file} h8300/t-h8300 h8300/t-linux"
1825 tm_file="h8300/h8300.h elfos.h gnu-user.h linux.h glibc-stdint.h h8300/linux.h"
1828 target_cpu_default="MASK_PA_11|MASK_PA_20"
1829 tm_file="pa/pa64-start.h ${tm_file} elfos.h gnu-user.h linux.h \
1830 glibc-stdint.h pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h \
1832 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1833 d_target_objs="${d_target_objs} pa-d.o"
1837 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS|MASK_CALLER_COPIES"
1838 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h pa/pa-linux.h \
1839 pa/pa32-regs.h pa/pa32-linux.h"
1840 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1841 d_target_objs="${d_target_objs} pa-d.o"
1844 target_cpu_default="MASK_PA_11"
1845 tm_file="${tm_file} elfos.h openbsd.h openbsd-stdint.h openbsd-libpthread.h \
1846 pa/pa-openbsd.h pa/pa32-regs.h pa/pa32-openbsd.h"
1847 extra_options="${extra_options} openbsd.opt"
1848 tmake_file="pa/t-pa"
1849 d_target_objs="${d_target_objs} pa-d.o"
1854 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS"
1855 tm_file="${tm_file} elfos.h ${nbsd_tm_file} \
1856 pa/pa-netbsd.h pa/pa32-regs.h pa/pa32-netbsd.h"
1857 tmake_file="${tmake_file}"
1858 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
1859 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1862 target_cpu_default="MASK_PA_11|MASK_PA_20"
1863 if test x$gnu_ld = xyes
1865 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
1867 tm_file="pa/pa64-start.h ${tm_file} elfos.h \
1868 pa/pa64-regs.h pa/pa-hpux.h pa/pa-hpux1010.h \
1872 tm_file="${tm_file} pa/pa-hpux1111.h pa/pa-64.h pa/pa64-hpux.h"
1873 extra_options="${extra_options} pa/pa-hpux1111.opt"
1876 tm_file="${tm_file} pa/pa-hpux1131.h pa/pa-64.h pa/pa64-hpux.h"
1877 extra_options="${extra_options} pa/pa-hpux1131.opt"
1880 tm_file="${tm_file} pa/pa-64.h pa/pa64-hpux.h"
1883 extra_options="${extra_options} pa/pa-hpux.opt \
1884 pa/pa-hpux1010.opt pa/pa64-hpux.opt hpux11.opt"
1885 tmake_file="pa/t-pa t-slibgcc"
1886 d_target_objs="${d_target_objs} pa-d.o"
1887 case x${enable_threads} in
1895 use_gcc_stdint=provide
1896 tm_file="${tm_file} hpux-stdint.h"
1900 tm_file="${tm_file} hpux-stdint.h"
1904 i[34567]86-*-darwin1[89]* | i[34567]86-*-darwin2*)
1905 echo "Error: 32bit target is not supported after Darwin17" 1>&2
1907 i[34567]86-*-darwin*)
1909 # Baseline choice for a machine that allows m64 support.
1910 with_cpu=${with_cpu:-core2}
1911 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch t-slibgcc"
1912 tm_file="${cpu_type}/darwin32-biarch.h ${tm_file} "
1914 x86_64-*-darwin1[89]* | x86_64-*-darwin2*)
1916 tm_defines="${tm_defines} TARGET_64BIT_DEFAULT=(OPTION_MASK_ISA_64BIT|OPTION_MASK_ABI_64)"
1917 tm_defines="${tm_defines} TARGET_BI_ARCH=0"
1918 with_cpu=${with_cpu:-core2}
1919 tmake_file="${tmake_file} t-slibgcc"
1922 with_cpu=${with_cpu:-core2}
1923 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
1924 tm_file="${cpu_type}/darwin64-biarch.h ${tm_file} "
1926 i[34567]86-*-elfiamcu)
1927 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/iamcu.h"
1930 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h"
1933 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h"
1936 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"
1939 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/rdos.h"
1942 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"
1943 tmake_file="i386/t-i386elf t-svr4"
1945 i[34567]86-*-dragonfly*)
1946 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h dragonfly.h dragonfly-stdint.h i386/dragonfly.h"
1947 tmake_file="${tmake_file} i386/t-crtstuff"
1949 x86_64-*-dragonfly*)
1950 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h dragonfly.h dragonfly-stdint.h i386/x86-64.h i386/dragonfly.h"
1951 tmake_file="${tmake_file} i386/t-crtstuff"
1953 i[34567]86-*-freebsd*)
1954 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
1957 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"
1959 i[34567]86-*-netbsdelf*)
1960 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${nbsd_tm_file} i386/netbsd-elf.h"
1961 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1964 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${nbsd_tm_file} i386/x86-64.h i386/netbsd64.h"
1965 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1967 i[34567]86-*-openbsd*)
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/openbsdelf.h"
1970 extra_options="${extra_options} openbsd.opt"
1975 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
1976 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/x86-64.h i386/openbsdelf.h"
1977 extra_options="${extra_options} openbsd.opt"
1981 i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu)
1982 # Intel 80386's running GNU/*
1983 # with ELF format using glibc 2
1984 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h gnu-user.h glibc-stdint.h"
1986 i[34567]86-*-linux*)
1987 tm_file="${tm_file} linux.h linux-android.h"
1988 extra_options="${extra_options} linux-android.opt"
1989 if test x$enable_targets = xall; then
1990 tm_file="${tm_file} i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h i386/linux-common.h i386/linux64.h"
1991 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
1992 tmake_file="${tmake_file} i386/t-linux64"
1993 x86_multilibs="${with_multilib_list}"
1994 if test "$x86_multilibs" = "default"; then
1995 x86_multilibs="m64,m32"
1997 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
1998 for x86_multilib in ${x86_multilibs}; do
1999 case ${x86_multilib} in
2001 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
2004 echo "--with-multilib-list=${x86_with_multilib} not supported."
2008 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2010 if test x$with_cpu = x; then
2011 if test x$with_cpu_64 = x; then
2015 case " $x86_cpus $x86_archs $x86_64_archs " in
2019 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2020 echo "$x86_cpus $x86_archs $x86_64_archs " 1>&2
2026 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h i386/linux-common.h i386/linux.h"
2029 i[34567]86-*-kfreebsd*-gnu)
2030 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kfreebsd-gnu.h i386/kfreebsd-gnu.h"
2032 i[34567]86-*-kopensolaris*-gnu)
2033 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kopensolaris-gnu.h i386/kopensolaris-gnu.h"
2036 tm_file="$tm_file i386/gnu-user-common.h i386/gnu-user.h gnu.h i386/gnu.h"
2040 x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-gnu*)
2041 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h gnu-user.h glibc-stdint.h \
2042 i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h"
2045 tm_file="${tm_file} linux.h linux-android.h i386/linux-common.h i386/linux64.h"
2046 extra_options="${extra_options} linux-android.opt"
2048 x86_64-*-kfreebsd*-gnu)
2049 tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu64.h"
2052 tm_file="${tm_file} gnu.h i386/gnu64.h"
2055 tmake_file="${tmake_file} i386/t-linux64"
2056 x86_multilibs="${with_multilib_list}"
2057 if test "$x86_multilibs" = "default"; then
2060 x86_multilibs="mx32"
2063 x86_multilibs="m64,m32"
2067 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
2068 for x86_multilib in ${x86_multilibs}; do
2069 case ${x86_multilib} in
2071 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
2074 echo "--with-multilib-list=${x86_with_multilib} not supported."
2078 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2080 i[34567]86-pc-msdosdjgpp*)
2081 xm_file=i386/xm-djgpp.h
2082 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/djgpp.h i386/djgpp-stdint.h"
2083 native_system_header_dir=/dev/env/DJDIR/include
2084 extra_options="${extra_options} i386/djgpp.opt"
2089 i[34567]86-*-lynxos*)
2091 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h i386/lynx.h lynx.h"
2092 tmake_file="${tmake_file} t-lynx"
2093 extra_options="${extra_options} lynx.opt"
2098 i[34567]86-*-nto-qnx*)
2099 tm_file="${tm_file} i386/att.h tm-dwarf2.h elfos.h i386/unix.h i386/nto.h"
2100 extra_options="${extra_options} i386/nto.opt"
2104 i[34567]86-*-rtems*)
2105 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h i386/i386elf.h i386/rtemself.h rtems.h newlib-stdint.h"
2106 tmake_file="${tmake_file} i386/t-rtems"
2108 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
2109 # Set default arch_32 to pentium4, tune_32 to generic like the other
2110 # i386 targets, although config.guess defaults to i386-pc-solaris2*.
2111 with_arch_32=${with_arch_32:-pentium4}
2112 with_tune_32=${with_tune_32:-generic}
2113 tm_file="${tm_file} i386/unix.h i386/att.h ${sol2_tm_file_head} i386/x86-64.h ${sol2_tm_file_tail}"
2114 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2115 tmake_file="$tmake_file i386/t-sol2"
2117 if test x$with_cpu = x; then
2118 if test x$with_cpu_64 = x; then
2122 case " $x86_cpus $x86_archs $x86_64_archs " in
2126 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2127 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2133 i[4567]86-wrs-vxworks*|x86_64-wrs-vxworks7*)
2134 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
2138 tm_file="${tm_file} i386/x86-64.h"
2141 tm_file="${tm_file} vx-common.h"
2144 tm_file="${tm_file} vxworksae.h i386/vxworks.h i386/vxworksae.h"
2145 tmake_file="${tmake_file} i386/t-vxworks i386/t-vxworksae"
2148 tm_file="${tm_file} vxworks.h i386/vxworks.h"
2149 tmake_file="${tmake_file} i386/t-vxworks"
2153 i[34567]86-*-cygwin*)
2154 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h i386/cygwin.h i386/cygwin-stdint.h"
2155 xm_file=i386/xm-cygwin.h
2156 tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
2157 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2158 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
2159 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2160 c_target_objs="${c_target_objs} msformat-c.o"
2161 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2162 d_target_objs="${d_target_objs} cygwin-d.o"
2163 target_has_targetdm="yes"
2164 if test x$enable_threads = xyes; then
2167 default_use_cxa_atexit=yes
2172 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"
2173 xm_file=i386/xm-cygwin.h
2174 tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
2175 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2176 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
2177 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2178 c_target_objs="${c_target_objs} msformat-c.o"
2179 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2180 d_target_objs="${d_target_objs} cygwin-d.o"
2181 target_has_targetdm="yes"
2182 if test x$enable_threads = xyes; then
2185 default_use_cxa_atexit=yes
2187 tm_defines="${tm_defines} TARGET_CYGWIN64=1"
2189 i[34567]86-*-mingw* | x86_64-*-mingw*)
2190 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h"
2191 xm_file=i386/xm-mingw32.h
2192 c_target_objs="${c_target_objs} winnt-c.o"
2193 cxx_target_objs="${cxx_target_objs} winnt-c.o"
2194 d_target_objs="${d_target_objs} winnt-d.o"
2195 target_has_targetcm="yes"
2196 target_has_targetdm="yes"
2197 rust_target_objs="${rust_target_objs} winnt-rust.o"
2198 target_has_targetrustm="yes"
2200 x86_64-*-* | *-w64-*)
2206 if test x$enable_threads = xposix ; then
2207 tm_file="${tm_file} i386/mingw-pthread.h"
2209 if test x$enable_threads = xmcf ; then
2210 tm_file="${tm_file} i386/mingw-mcfgthread.h"
2212 tm_file="${tm_file} i386/mingw32.h"
2213 # This makes the logic if mingw's or the w64 feature set has to be used
2216 user_headers_inc_next_post="${user_headers_inc_next_post} float.h"
2217 user_headers_inc_next_pre="${user_headers_inc_next_pre} stddef.h stdarg.h"
2218 tm_file="${tm_file} i386/mingw-w64.h"
2219 if test x$enable_targets = xall; then
2220 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2221 if test x$with_cpu = x; then
2222 if test x$with_cpu_64 = x; then
2226 case " $x86_cpus $x86_archs $x86_64_archs " in
2230 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2231 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2241 tm_file="${tm_file} i386/mingw-stdint.h"
2242 tmake_file="${tmake_file} t-winnt i386/t-cygming t-slibgcc"
2245 tmake_file="${tmake_file} i386/t-mingw-w64"
2248 tmake_file="${tmake_file} i386/t-mingw-w32"
2251 native_system_header_dir=/mingw/include
2252 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2253 extra_options="${extra_options} i386/cygming.opt i386/mingw.opt"
2256 extra_options="${extra_options} i386/mingw-w64.opt"
2261 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2262 c_target_objs="${c_target_objs} msformat-c.o"
2263 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2266 default_use_cxa_atexit=yes
2268 case ${enable_threads} in
2278 tm_file="${tm_file} i386/crtdll.h"
2280 *mingw32msv* | *mingw*)
2285 tmake_file="${tmake_file} i386/t-x86_64-elf"
2286 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h fuchsia.h"
2289 tm_file="${tm_file} elfos.h newlib-stdint.h ia64/sysv4.h ia64/elf.h"
2290 tmake_file="ia64/t-ia64"
2291 target_cpu_default="0"
2292 if test x$gas = xyes
2294 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2296 if test x$gnu_ld = xyes
2298 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
2302 tm_file="${tm_file} elfos.h ${fbsd_tm_file} ia64/sysv4.h ia64/freebsd.h"
2303 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2304 tmake_file="${tmake_file} ia64/t-ia64"
2307 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h ia64/sysv4.h ia64/linux.h"
2308 tmake_file="${tmake_file} ia64/t-ia64 ia64/t-linux t-libunwind"
2309 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2312 tm_file="${tm_file} elfos.h ia64/sysv4.h ia64/hpux.h"
2313 tmake_file="ia64/t-ia64 ia64/t-hpux t-slibgcc"
2314 target_cpu_default="MASK_GNU_AS"
2315 case x$enable_threads in
2321 c_target_objs="ia64-c.o"
2322 cxx_target_objs="ia64-c.o"
2323 extra_options="${extra_options} ia64/ilp32.opt hpux11.opt"
2325 tm_file="${tm_file} hpux-stdint.h"
2328 tm_file="${tm_file} ia64/hpux-unix2003.h"
2333 tm_file="${tm_file} elfos.h ia64/sysv4.h vms/vms.h ia64/vms.h"
2334 tmake_file="${tmake_file} ia64/t-ia64"
2335 target_cpu_default="0"
2336 if test x$gas = xyes
2338 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2340 extra_options="${extra_options} ia64/vms.opt"
2343 tm_file="elfos.h newlib-stdint.h iq2000/iq2000.h"
2344 out_file=iq2000/iq2000.cc
2345 md_file=iq2000/iq2000.md
2348 tm_file="elfos.h ${tm_file} newlib-stdint.h"
2349 tmake_file="${tmake_file} lm32/t-lm32"
2352 tm_file="elfos.h ${tm_file} lm32/rtems.h rtems.h newlib-stdint.h"
2353 tmake_file="${tmake_file} lm32/t-lm32"
2354 tmake_file="${tmake_file} lm32/t-rtems"
2357 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h lm32/uclinux-elf.h"
2358 tmake_file="${tmake_file} lm32/t-lm32"
2361 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2364 tm_file="elfos.h newlib-stdint.h m32r/little.h ${tm_file}"
2366 m68k-*-elf* | fido-*-elf*)
2369 # Check that $with_cpu makes sense.
2374 echo "Cannot accept --with-cpu=$with_cpu"
2381 default_m68k_cpu=68020
2385 tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h elfos.h newlib-stdint.h m68k/m68kemb.h m68k/m68020-elf.h"
2386 tm_defines="${tm_defines} MOTOROLA=1"
2387 tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-m68kelf"
2388 # Add multilibs for targets other than fido.
2393 tmake_file="$tmake_file m68k/t-mlibs"
2398 default_m68k_cpu=68020
2400 tm_file="${tm_file} elfos.h ${nbsd_tm_file} m68k/netbsd-elf.h"
2401 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2402 tm_defines="${tm_defines} MOTOROLA=1 CHAR_FAST8=1 SHORT_FAST16=1"
2404 m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux
2405 # with uClibc, using the new GNU/Linux-style
2407 default_m68k_cpu=68020
2409 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"
2410 extra_options="${extra_options} m68k/uclinux.opt"
2411 tm_defines="${tm_defines} MOTOROLA=1"
2412 tmake_file="m68k/t-floatlib m68k/t-uclinux m68k/t-mlibs"
2414 m68k-*-linux*) # Motorola m68k's running GNU/Linux
2415 # with ELF format using glibc 2
2416 # aka the GNU/Linux C library 6.
2417 default_m68k_cpu=68020
2419 with_arch=${with_arch:-m68k}
2420 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h m68k/linux.h ./sysroot-suffix.h"
2421 extra_options="${extra_options} m68k/ieee.opt"
2422 tm_defines="${tm_defines} MOTOROLA=1"
2423 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-linux m68k/t-mlibs"
2426 default_m68k_cpu=68020
2428 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-m68kbare m68k/t-crtstuff m68k/t-rtems m68k/t-mlibs"
2429 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"
2430 tm_defines="${tm_defines} MOTOROLA=1"
2433 tm_file="elfos.h newlib-stdint.h ${tm_file} mcore/mcore-elf.h"
2434 tmake_file=mcore/t-mcore
2440 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2443 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2446 tm_file="${tm_file} gnu-user.h linux.h microblaze/linux.h"
2447 tm_file="${tm_file} glibc-stdint.h"
2448 c_target_objs="${c_target_objs} microblaze-c.o"
2449 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2450 tmake_file="${tmake_file} microblaze/t-microblaze"
2451 tmake_file="${tmake_file} microblaze/t-microblaze-linux"
2453 microblaze*-*-rtems*)
2456 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2459 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2462 tm_file="${tm_file}"
2463 tm_file="${tm_file} microblaze/rtems.h rtems.h newlib-stdint.h"
2464 c_target_objs="${c_target_objs} microblaze-c.o"
2465 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2466 tmake_file="${tmake_file} microblaze/t-microblaze"
2467 tmake_file="${tmake_file} microblaze/t-rtems"
2472 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2475 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2478 tm_file="${tm_file} newlib-stdint.h"
2479 c_target_objs="${c_target_objs} microblaze-c.o"
2480 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2481 tmake_file="${tmake_file} microblaze/t-microblaze"
2484 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} riscv/linux.h"
2485 case "x${enable_multilib}" in
2487 xyes) tmake_file="${tmake_file} riscv/t-linux-multilib" ;;
2488 *) echo "Unknown value for enable_multilib"; exit 1
2490 tmake_file="${tmake_file} riscv/t-riscv riscv/t-linux"
2491 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
2495 riscv32be-*|riscv64be-*)
2496 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2499 # Force .init_array support. The configure script cannot always
2500 # automatically detect that GAS supports it, yet we require it.
2501 gcc_cv_initfini_array=yes
2502 with_tls=${with_tls:-trad}
2504 riscv*-*-elf* | riscv*-*-rtems*)
2505 tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h"
2508 tm_file="${tm_file} riscv/rtems.h rtems.h"
2509 tmake_file="${tmake_file} riscv/t-rtems"
2512 if test "x${with_multilib_generator}" = xdefault; then
2513 case "x${enable_multilib}" in
2515 xyes) tmake_file="${tmake_file} riscv/t-elf-multilib" ;;
2516 *) echo "Unknown value for enable_multilib"; exit 1
2520 tmake_file="${tmake_file} riscv/t-riscv"
2524 riscv32be-*|riscv64be-*)
2525 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2528 # Force .init_array support. The configure script cannot always
2529 # automatically detect that GAS supports it, yet we require it.
2530 gcc_cv_initfini_array=yes
2533 tm_file="${tm_file} elfos.h ${fbsd_tm_file} riscv/freebsd.h"
2534 tmake_file="${tmake_file} riscv/t-riscv"
2538 riscv32be-*|riscv64be-*)
2539 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2542 # Force .init_array support. The configure script cannot always
2543 # automatically detect that GAS supports it, yet we require it.
2544 gcc_cv_initfini_array=yes
2545 with_tls=${with_tls:-trad}
2548 loongarch*-*-linux*)
2549 tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file}"
2551 *-linux-musl*) tm_file="${tm_file} loongarch/musl.h"
2553 tm_file="${tm_file} loongarch/gnu-user.h loongarch/linux.h loongarch/loongarch-driver.h"
2554 extra_options="${extra_options} linux-android.opt"
2555 tmake_file="${tmake_file} loongarch/t-multilib loongarch/t-linux"
2559 # Force .init_array support. The configure script cannot always
2560 # automatically detect that GAS supports it, yet we require it.
2561 gcc_cv_initfini_array=yes
2565 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2566 tm_file="${tm_file} loongarch/elf.h loongarch/linux.h loongarch/loongarch-driver.h"
2567 tmake_file="${tmake_file} loongarch/t-multilib loongarch/t-linux"
2571 # For .init_array support. The configure script cannot always
2572 # automatically detect that GAS supports it, yet we require it.
2573 gcc_cv_initfini_array=yes
2576 mips*-*-netbsd*) # NetBSD/mips, either endian.
2577 target_cpu_default="MASK_ABICALLS"
2578 tm_file="elfos.h ${tm_file} mips/elf.h ${nbsd_tm_file} mips/netbsd.h"
2579 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2582 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"
2583 extra_options="${extra_options} linux-android.opt"
2584 tmake_file="${tmake_file} mips/t-img-linux"
2585 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2586 with_arch_32="mips32r6"
2587 with_arch_64="mips64r6"
2592 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"
2593 extra_options="${extra_options} linux-android.opt"
2594 tmake_file="${tmake_file} mips/t-mti-linux"
2595 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2596 with_arch_32="mips32r2"
2597 with_arch_64="mips64r2"
2601 mips*-*-linux*) # Linux MIPS, either endian.
2602 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"
2603 extra_options="${extra_options} linux-android.opt"
2606 default_mips_arch=mips32r6
2609 default_mips_arch=mips32r2
2612 default_mips_arch=mips32
2614 mips64el-st-linux-gnu)
2615 default_mips_abi=n32
2616 tm_file="${tm_file} mips/st.h"
2617 tmake_file="${tmake_file} mips/t-st"
2618 enable_mips_multilibs="yes"
2620 mips64octeon*-*-linux*)
2621 default_mips_abi=n32
2622 tm_defines="${tm_defines} MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\""
2623 target_cpu_default=MASK_SOFT_FLOAT_ABI
2624 enable_mips_multilibs="yes"
2626 mipsisa64r6*-*-linux-gnuabi64)
2628 default_mips_arch=mips64r6
2629 enable_mips_multilibs="yes"
2631 mipsisa64r6*-*-linux*)
2632 default_mips_abi=n32
2633 default_mips_arch=mips64r6
2634 enable_mips_multilibs="yes"
2636 mipsisa64r2*-*-linux-gnuabi64)
2638 default_mips_arch=mips64r2
2639 enable_mips_multilibs="yes"
2641 mipsisa64r2*-*-linux*)
2642 default_mips_abi=n32
2643 default_mips_arch=mips64r2
2644 enable_mips_multilibs="yes"
2646 mips64*-*-linux-gnuabi64 | mipsisa64*-*-linux-gnuabi64)
2648 enable_mips_multilibs="yes"
2650 mips64*-*-linux* | mipsisa64*-*-linux*)
2651 default_mips_abi=n32
2652 enable_mips_multilibs="yes"
2655 if test x$enable_targets = xall; then
2656 enable_mips_multilibs="yes"
2658 if test x$enable_mips_multilibs = xyes; then
2659 tmake_file="${tmake_file} mips/t-linux64"
2663 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2664 tmake_file="mips/t-mti-elf"
2665 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2666 with_arch_32="mips32r2"
2667 with_arch_64="mips64r2"
2670 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2671 tmake_file="mips/t-img-elf"
2672 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2673 with_arch_32="mips32r6"
2674 with_arch_64="mips64r6"
2677 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h"
2678 tmake_file="mips/t-sde"
2679 extra_options="${extra_options} mips/sde.opt"
2680 case "${with_newlib}" in
2682 # newlib / libgloss.
2685 # MIPS toolkit libraries.
2686 tm_file="$tm_file mips/sdemtk.h"
2687 tmake_file="$tmake_file mips/t-sdemtk"
2688 case ${enable_threads} in
2690 thread_file='mipssde'
2697 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2700 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2703 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32 MIPS_ABI_DEFAULT=ABI_32"
2706 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6 MIPS_ABI_DEFAULT=ABI_N32"
2709 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2 MIPS_ABI_DEFAULT=ABI_N32"
2712 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_ABI_DEFAULT=ABI_N32"
2716 mipsisa32-*-elf* | mipsisa32el-*-elf* | \
2717 mipsisa32r2-*-elf* | mipsisa32r2el-*-elf* | \
2718 mipsisa32r6-*-elf* | mipsisa32r6el-*-elf* | \
2719 mipsisa64-*-elf* | mipsisa64el-*-elf* | \
2720 mipsisa64r2-*-elf* | mipsisa64r2el-*-elf* | \
2721 mipsisa64r6-*-elf* | mipsisa64r6el-*-elf*)
2722 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2723 tmake_file="mips/t-isa3264"
2726 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6"
2729 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2"
2732 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32"
2735 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6"
2738 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2"
2741 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64"
2745 mipsisa32*-*-elfoabi*)
2746 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_32"
2747 tm_file="${tm_file} mips/elfoabi.h"
2749 mipsisa64*-*-elfoabi*)
2750 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_O64"
2751 tm_file="${tm_file} mips/elfoabi.h"
2754 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2758 mipsisa64sr71k-*-elf*)
2759 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2760 tmake_file=mips/t-sr71k
2761 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sr71000\\\" MIPS_ABI_DEFAULT=ABI_EABI"
2763 mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*)
2764 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2765 tmake_file="mips/t-elf mips/t-sb1"
2766 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sb1\\\" MIPS_ABI_DEFAULT=ABI_O64"
2768 mips-*-elf* | mipsel-*-elf* | mipsr5900-*-elf* | mipsr5900el-*-elf*)
2769 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2770 tmake_file="mips/t-elf"
2772 mips64r5900-*-elf* | mips64r5900el-*-elf*)
2773 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h"
2774 tmake_file="mips/t-elf"
2775 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_N32"
2777 mips64-*-elf* | mips64el-*-elf*)
2778 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2779 tmake_file="mips/t-elf"
2780 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_O64"
2782 mips64vr-*-elf* | mips64vrel-*-elf*)
2783 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/vr.h mips/elf.h"
2784 tmake_file=mips/t-vr
2785 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2787 mips64orion-*-elf* | mips64orionel-*-elf*)
2788 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elforion.h mips/elf.h"
2789 tmake_file="mips/t-elf"
2790 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_O64"
2793 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/rtems.h rtems.h"
2794 tmake_file="${tmake_file} mips/t-elf mips/t-rtems"
2797 tm_file="elfos.h ${tm_file} mips/elf.h vx-common.h vxworks.h mips/vxworks.h"
2798 tmake_file="${tmake_file} mips/t-vxworks"
2800 mipstx39-*-elf* | mipstx39el-*-elf*)
2801 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/r3900.h mips/elf.h"
2802 tmake_file="mips/t-r3900"
2804 mmix-knuth-mmixware)
2805 tm_file="${tm_file} newlib-stdint.h"
2809 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2814 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2815 c_target_objs="msp430-c.o"
2816 cxx_target_objs="msp430-c.o"
2817 tmake_file="${tmake_file} msp430/t-msp430"
2818 extra_objs="${extra_objs} msp430-devices.o"
2819 extra_gcc_objs="driver-msp430.o msp430-devices.o"
2820 # Enable .init_array unless it has been explicitly disabled.
2821 # The MSP430 EABI mandates the use of .init_array, and the Newlib CRT
2822 # code since mid-2019 expects it.
2823 if test x${disable_initfini_array} != xyes; then
2824 gcc_cv_initfini_array=yes
2828 # __cxa_atexit increases code size, and we don't need to support
2829 # dynamic shared objects on MSP430, so regular Newlib atexit is a
2830 # fine replacement as it also supports registration of more than 32
2832 default_use_cxa_atexit=no
2833 # This target does not match the generic *-*-elf case above which
2834 # sets use_gcc_stdint=wrap, so explicitly set it here.
2840 target_cpu_default="0"
2841 tm_defines="${tm_defines}"
2846 target_cpu_default="${target_cpu_default}|MASK_BIG_ENDIAN"
2847 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2852 tm_file="elfos.h newlib-stdint.h ${tm_file} nds32/elf.h nds32/nds32_intrinsic.h"
2853 tmake_file="nds32/t-nds32 nds32/t-elf"
2856 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h nds32/linux.h nds32/nds32_intrinsic.h"
2857 tmake_file="${tmake_file} nds32/t-nds32 nds32/t-linux"
2858 gcc_cv_initfini_array=yes
2862 # Handle --enable-default-relax setting.
2863 if test x${enable_default_relax} = xyes; then
2864 tm_defines="${tm_defines} TARGET_DEFAULT_RELAX=1"
2866 # Handle --with-ext-dsp
2867 if test x${with_ext_dsp} = xyes; then
2868 tm_defines="${tm_defines} TARGET_DEFAULT_EXT_DSP=1"
2872 tm_file="elfos.h ${tm_file}"
2873 tmake_file="${tmake_file} nios2/t-nios2"
2876 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h nios2/linux.h "
2879 tm_file="${tm_file} newlib-stdint.h nios2/elf.h"
2880 extra_options="${extra_options} nios2/elf.opt"
2883 tm_file="${tm_file} newlib-stdint.h nios2/rtems.h rtems.h"
2884 tmake_file="${tmake_file} t-rtems nios2/t-rtems"
2889 tm_file="${tm_file} newlib-stdint.h"
2891 tmake_file="nvptx/t-nvptx"
2892 if test x$enable_as_accelerator = xyes; then
2893 extra_programs="${extra_programs} mkoffload\$(exeext)"
2894 tm_file="${tm_file} nvptx/offload.h"
2898 tm_file="elfos.h ${tm_file}"
2899 tmake_file="${tmake_file} or1k/t-or1k"
2900 # Force .init_array support. The configure script cannot always
2901 # automatically detect that GAS supports it, yet we require it.
2902 gcc_cv_initfini_array=yes
2904 # Handle --with-multilib-list=...
2905 or1k_multilibs="${with_multilib_list}"
2906 if test "$or1k_multilibs" = "default"; then
2907 or1k_multilibs="mcmov,msoft-mul,msoft-div"
2909 or1k_multilibs=`echo $or1k_multilibs | sed -e 's/,/ /g'`
2910 for or1k_multilib in ${or1k_multilibs}; do
2911 case ${or1k_multilib} in
2912 mcmov | msext | msfimm | \
2914 mhard-float | mdouble-float | munordered-float | msoft-float | \
2915 mhard-div | mhard-mul | \
2916 msoft-div | msoft-mul )
2917 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${or1k_multilib}"
2920 echo "--with-multilib-list=${with_multilib_list} not supported."
2924 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2928 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h"
2929 tm_file="${tm_file} or1k/linux.h"
2932 tm_file="${tm_file} newlib-stdint.h or1k/elf.h"
2933 extra_options="${extra_options} or1k/elf.opt"
2936 tm_file="${tm_file} newlib-stdint.h or1k/rtems.h rtems.h"
2937 tmake_file="${tmake_file} or1k/t-rtems"
2942 tm_file="${tm_file} newlib-stdint.h"
2945 # port not yet contributed
2946 #powerpc-*-openbsd*)
2947 # tmake_file="${tmake_file} rs6000/t-fprules"
2951 extra_options="${extra_options} ${cpu_type}/darwin.opt"
2953 *-darwin1[0-9]* | *-darwin9*)
2954 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2955 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2958 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2959 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2962 tm_file="${tm_file} ${cpu_type}/darwin7.h"
2965 # Earlier - ingle arch, with 32b only
2966 # OS X 10.0, the first edition is Darwin4
2969 tmake_file="${tmake_file} t-slibgcc"
2971 powerpc64-*-darwin*)
2972 extra_options="${extra_options} ${cpu_type}/darwin.opt"
2973 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
2974 tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h"
2976 powerpc*-*-freebsd*)
2977 tm_file="${tm_file} elfos.h gnu-user.h ${fbsd_tm_file} rs6000/sysv4.h"
2978 extra_options="${extra_options} rs6000/sysv4.opt"
2979 tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
2982 tm_file="${tm_file} rs6000/sysv4le.h" ;;
2986 tm_file="${tm_file} rs6000/default64.h rs6000/freebsd64.h"
2987 tmake_file="${tmake_file} rs6000/t-freebsd64"
2988 extra_options="${extra_options} rs6000/linux64.opt"
2989 if test $fbsd_major -ge 13; then
2990 tm_defines="${tm_defines} TARGET_FREEBSD32_SECURE_PLT=1"
2994 if test $fbsd_major -ge 13; then
2995 tm_file="rs6000/secureplt.h ${tm_file}"
2997 tm_file="${tm_file} rs6000/freebsd.h"
3002 tm_file="${tm_file} elfos.h gnu-user.h ${nbsd_tm_file} freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h"
3003 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3004 tmake_file="${tmake_file} rs6000/t-netbsd"
3005 extra_options="${extra_options} rs6000/sysv4.opt"
3007 powerpc-*-eabisimaltivec*)
3008 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"
3009 extra_options="${extra_options} rs6000/sysv4.opt"
3010 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
3014 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"
3015 extra_options="${extra_options} rs6000/sysv4.opt"
3016 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3020 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h"
3021 extra_options="${extra_options} rs6000/sysv4.opt"
3022 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3024 powerpc-*-eabialtivec*)
3025 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabialtivec.h"
3026 extra_options="${extra_options} rs6000/sysv4.opt"
3027 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
3031 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h"
3032 extra_options="${extra_options} rs6000/sysv4.opt"
3033 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3037 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"
3038 extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
3039 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-rtems rs6000/t-ppccomm"
3042 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h rs6000/sysv4.h"
3043 extra_options="${extra_options} rs6000/sysv4.opt"
3044 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm"
3045 extra_objs="$extra_objs rs6000-linux.o"
3048 tm_file="${tm_file} rs6000/sysv4le.h" ;;
3050 case ${target}:${with_cpu} in
3051 powerpc64*: | powerpc64*:native) cpu_is_64bit=yes ;;
3053 maybe_biarch=${cpu_is_64bit}
3054 case ${enable_targets} in
3055 *powerpc64*) maybe_biarch=yes ;;
3056 all) maybe_biarch=yes ;;
3058 case ${target}:${enable_targets}:${maybe_biarch} in
3059 powerpc64-* | powerpc-*:*:yes | *:*powerpc64-*:yes | *:all:yes \
3060 | powerpc64le*:*powerpcle* | powerpc64le*:*powerpc-* \
3061 | powerpcle-*:*powerpc64le*:yes)
3062 if test x$cpu_is_64bit = xyes; then
3063 tm_file="${tm_file} rs6000/default64.h"
3065 tm_file="rs6000/biarch64.h ${tm_file} rs6000/linux64.h glibc-stdint.h"
3066 tmake_file="$tmake_file rs6000/t-linux64"
3069 tmake_file="$tmake_file rs6000/t-linux64le"
3070 case ${enable_targets} in
3071 all | *powerpc64-* | *powerpc-*)
3072 tmake_file="$tmake_file rs6000/t-linux64lebe" ;;
3075 case ${enable_targets} in
3076 all | *powerpc64le-* | *powerpcle-*)
3077 tmake_file="$tmake_file rs6000/t-linux64bele" ;;
3080 extra_options="${extra_options} rs6000/linux64.opt"
3083 tm_file="${tm_file} rs6000/default64.h rs6000/linux64.h glibc-stdint.h"
3084 extra_options="${extra_options} rs6000/linux64.opt"
3085 tmake_file="${tmake_file} rs6000/t-linux"
3088 tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
3089 tmake_file="${tmake_file} rs6000/t-ppcos rs6000/t-linux"
3093 powerpc*-*-linux*ppc476*)
3094 tm_file="${tm_file} rs6000/476.h"
3095 extra_options="${extra_options} rs6000/476.opt" ;;
3096 powerpc*-*-linux*altivec*)
3097 tm_file="${tm_file} rs6000/linuxaltivec.h" ;;
3101 enable_secureplt=yes ;;
3103 if test x${enable_secureplt} = xyes; then
3104 tm_file="rs6000/secureplt.h ${tm_file}"
3107 powerpc*-wrs-vxworks7r*)
3109 # Wind River 7 post SR0600 is mostly like Linux so we setup
3110 # our config in a very similar fashion and adjust to a few
3113 # The system compiler is configured with secureplt by default.
3114 tm_file="${tm_file} rs6000/secureplt.h"
3116 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h"
3117 tm_file="${tm_file} rs6000/sysv4.h rs6000/biarch64.h rs6000/default64.h rs6000/linux64.h"
3118 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3120 extra_options="${extra_options} rs6000/sysv4.opt linux.opt rs6000/linux64.opt"
3122 tmake_file="${tmake_file} t-linux rs6000/t-linux64 rs6000/t-fprules rs6000/t-ppccomm"
3123 tmake_file="${tmake_file} rs6000/t-vxworks"
3125 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
3126 extra_objs="$extra_objs linux.o rs6000-linux.o"
3128 powerpc-wrs-vxworks*)
3129 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h rs6000/sysv4.h"
3130 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm rs6000/t-vxworks"
3131 extra_options="${extra_options} rs6000/sysv4.opt vxworks-smp.opt"
3132 extra_headers="${extra_headers} ppc-asm.h"
3135 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksmils.h"
3136 tmake_file="${tmake_file} rs6000/t-vxworksmils"
3139 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksae.h"
3140 tmake_file="${tmake_file} rs6000/t-vxworksae"
3143 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3149 tm_file="${tm_file} elfos.h gnu-user.h rs6000/sysv4.h rs6000/lynx.h lynx.h"
3150 tmake_file="t-lynx rs6000/t-lynx"
3151 extra_options="${extra_options} rs6000/sysv4.opt lynx.opt"
3157 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h"
3158 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3159 extra_options="${extra_options} rs6000/sysv4.opt"
3161 powerpcle-*-eabisim*)
3162 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"
3163 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3164 extra_options="${extra_options} rs6000/sysv4.opt"
3168 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"
3169 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3170 extra_options="${extra_options} rs6000/sysv4.opt"
3174 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3175 tmake_file="${tmake_file} pru/t-pru"
3176 extra_objs="pru-pragma.o pru-passes.o"
3179 rs6000-ibm-aix7.1.* | powerpc-ibm-aix7.1.*)
3180 tmake_file="rs6000/t-aix52 t-slibgcc"
3181 if test x$cpu_is_64bit = xyes; then
3182 tm_file="${tm_file} rs6000/biarch64.h"
3183 tmake_file="rs6000/t-aix64 t-slibgcc"
3185 tm_file="${tm_file} rs6000/aix.h rs6000/aix71.h rs6000/xcoff.h rs6000/aix-stdint.h"
3186 extra_options="${extra_options} rs6000/aix64.opt"
3190 default_use_cxa_atexit=yes
3192 rs6000-ibm-aix7.2.* | powerpc-ibm-aix7.2.*)
3193 tmake_file="rs6000/t-aix52 t-slibgcc"
3194 if test x$cpu_is_64bit = xyes; then
3195 tm_file="${tm_file} rs6000/biarch64.h"
3196 tmake_file="rs6000/t-aix64 t-slibgcc"
3198 tm_file="${tm_file} rs6000/aix.h rs6000/aix72.h rs6000/xcoff.h rs6000/aix-stdint.h"
3199 extra_options="${extra_options} rs6000/aix64.opt"
3203 default_use_cxa_atexit=yes
3205 rs6000-ibm-aix[789].* | powerpc-ibm-aix[789].*)
3206 tmake_file="rs6000/t-aix52 t-slibgcc"
3207 if test x$cpu_is_64bit = xyes; then
3208 tm_file="${tm_file} rs6000/biarch64.h"
3209 tmake_file="rs6000/t-aix64 t-slibgcc"
3211 tm_file="${tm_file} rs6000/aix.h rs6000/aix73.h rs6000/xcoff.h rs6000/aix-stdint.h"
3212 extra_options="${extra_options} rs6000/aix64.opt"
3216 default_use_cxa_atexit=yes
3219 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3220 target_has_targetm_common=no
3221 c_target_objs="rl78-c.o"
3222 cxx_target_objs="rl78-c.o"
3223 tmake_file="${tmake_file} rl78/t-rl78"
3226 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3227 tmake_file="${tmake_file} rx/t-rx"
3228 extra_options="${extra_options} rx/elf.opt"
3231 tm_file="elfos.h linux.h glibc-stdint.h rx/linux.h ../../libgcc/config/rx/rx-abi.h"
3232 tmake_file="${tmake_file} rx/t-linux"
3235 tm_file="s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3236 c_target_objs="${c_target_objs} s390-c.o"
3237 cxx_target_objs="${cxx_target_objs} s390-c.o"
3238 if test x$enable_targets = xall; then
3239 tmake_file="${tmake_file} s390/t-linux64"
3241 tmake_file="${tmake_file} s390/t-s390"
3244 tm_file="s390/s390x.h s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3245 tm_p_file="linux-protos.h s390/s390-protos.h"
3246 c_target_objs="${c_target_objs} s390-c.o"
3247 cxx_target_objs="${cxx_target_objs} s390-c.o"
3248 md_file=s390/s390.md
3249 extra_modes=s390/s390-modes.def
3250 out_file=s390/s390.cc
3251 tmake_file="${tmake_file} s390/t-linux64 s390/t-s390"
3254 tm_file="s390/s390x.h s390/s390.h elfos.h glibc-stdint.h s390/tpf.h"
3255 tm_p_file=s390/s390-protos.h
3256 c_target_objs="${c_target_objs} s390-c.o"
3257 cxx_target_objs="${cxx_target_objs} s390-c.o"
3258 md_file=s390/s390.md
3259 extra_modes=s390/s390-modes.def
3260 out_file=s390/s390.cc
3262 extra_options="${extra_options} s390/tpf.opt"
3263 tmake_file="${tmake_file} s390/t-s390"
3265 sh-*-elf* | sh[12346l]*-*-elf* | \
3266 sh-*-linux* | sh[2346lbe]*-*-linux* | \
3267 sh-*-netbsdelf* | shl*-*-netbsdelf*)
3268 tmake_file="${tmake_file} sh/t-sh sh/t-elf"
3269 if test x${with_endian} = x; then
3271 sh[1234]*be-*-* | sh[1234]*eb-*-*) with_endian=big ;;
3272 shbe-*-* | sheb-*-*) with_endian=big,little ;;
3273 sh[1234]l* | sh[34]*-*-linux*) with_endian=little ;;
3274 shl* | sh*-*-linux* | \
3275 sh-superh-elf) with_endian=little,big ;;
3276 sh[1234]*-*-*) with_endian=big ;;
3277 *) with_endian=big,little ;;
3280 # TM_ENDIAN_CONFIG is used by t-sh to determine multilibs.
3281 # First word : the default endian.
3282 # Second word: the secondary endian (optional).
3283 case ${with_endian} in
3284 big) TM_ENDIAN_CONFIG=mb ;;
3285 little) TM_ENDIAN_CONFIG=ml ;;
3286 big,little) TM_ENDIAN_CONFIG="mb ml" ;;
3287 little,big) TM_ENDIAN_CONFIG="ml mb" ;;
3288 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
3290 case ${with_endian} in
3291 little*) tm_file="sh/little.h ${tm_file}" ;;
3293 tm_file="${tm_file} elfos.h sh/elf.h"
3295 sh*-*-linux*) tmake_file="${tmake_file} sh/t-linux"
3296 if test x$enable_fdpic = xyes; then
3297 tm_defines="$tm_defines FDPIC_DEFAULT=1"
3299 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h sh/linux.h" ;;
3301 tm_file="${tm_file} ${nbsd_tm_file} sh/netbsd-elf.h"
3302 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3305 sh*-superh-elf) if test x$with_libgloss != xno; then
3307 tm_file="${tm_file} sh/newlib.h"
3309 tm_file="${tm_file} sh/embed-elf.h"
3310 tm_file="${tm_file} sh/superh.h"
3311 extra_options="${extra_options} sh/superh.opt" ;;
3312 *) if test x$with_newlib = xyes \
3313 && test x$with_libgloss = xyes; then
3314 tm_file="${tm_file} sh/newlib.h"
3316 tm_file="${tm_file} sh/embed-elf.h" ;;
3322 tm_file="${tm_file} newlib-stdint.h"
3325 # sed el/eb endian suffixes away to avoid confusion with sh[23]e
3326 case `echo ${target} | sed 's/e[lb]-/-/'` in
3327 sh4a_single_only*) sh_cpu_target=sh4a-single-only ;;
3328 sh4a_single*) sh_cpu_target=sh4a-single ;;
3329 sh4a_nofpu*) sh_cpu_target=sh4a-nofpu ;;
3330 sh4al) sh_cpu_target=sh4al ;;
3331 sh4a*) sh_cpu_target=sh4a ;;
3332 sh4_single_only*) sh_cpu_target=sh4-single-only ;;
3333 sh4_single*) sh_cpu_target=sh4-single ;;
3334 sh4_nofpu*) sh_cpu_target=sh4-nofpu ;;
3335 sh4* | sh-superh-*) sh_cpu_target=sh4 ;;
3336 sh3e*) sh_cpu_target=sh3e ;;
3337 sh*-*-netbsd* | sh3*) sh_cpu_target=sh3 ;;
3338 sh2a_single_only*) sh_cpu_target=sh2a-single-only ;;
3339 sh2a_single*) sh_cpu_target=sh2a-single ;;
3340 sh2a_nofpu*) sh_cpu_target=sh2a-nofpu ;;
3341 sh2a*) sh_cpu_target=sh2a ;;
3342 sh2e*) sh_cpu_target=sh2e ;;
3343 sh2*) sh_cpu_target=sh2 ;;
3344 *) sh_cpu_target=sh1 ;;
3346 # did the user say --without-fp ?
3347 if test x$with_fp = xno; then
3348 case ${sh_cpu_target} in
3350 sh4a* ) sh_cpu_target=sh4a-nofpu ;;
3351 sh4*) sh_cpu_target=sh4-nofpu ;;
3352 sh3*) sh_cpu_target=sh3 ;;
3353 sh2a*) sh_cpu_target=sh2a-nofpu ;;
3354 sh2*) sh_cpu_target=sh2 ;;
3355 *) echo --without-fp not available for $target: ignored
3357 tm_defines="$tm_defines STRICT_NOFPU=1"
3359 sh_cpu_default="`echo $with_cpu|sed s/^m/sh/|tr A-Z_ a-z-`"
3360 case $sh_cpu_default in
3361 sh2a-single-only | sh2a-single | sh2a-nofpu | sh2a | \
3362 sh4a-single-only | sh4a-single | sh4a-nofpu | sh4a | sh4al | \
3363 sh4-single-only | sh4-single | sh4-nofpu | sh4 | sh4-300 | \
3364 sh3e | sh3 | sh2e | sh2 | sh1) ;;
3365 "") sh_cpu_default=${sh_cpu_target} ;;
3366 *) echo "with_cpu=$with_cpu not supported"; exit 1 ;;
3368 sh_multilibs=${with_multilib_list}
3369 if test "$sh_multilibs" = "default" ; then
3371 sh[1234]*) sh_multilibs=${sh_cpu_target} ;;
3372 sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
3373 sh*-*-linux*) sh_multilibs=m1,m2,m2a,m3e,m4 ;;
3374 sh*-*-netbsd*) sh_multilibs=m3,m3e,m4 ;;
3375 *) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single ;;
3377 if test x$with_fp = xno; then
3378 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`"
3381 target_cpu_default=SELECT_`echo ${sh_cpu_default}|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`
3382 tm_defines=${tm_defines}' SH_MULTILIB_CPU_DEFAULT=\"'`echo $sh_cpu_default|sed s/sh/m/`'\"'
3383 tm_defines="$tm_defines SUPPORT_`echo $sh_cpu_default | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3384 sh_multilibs=`echo $sh_multilibs | sed -e 's/,/ /g' -e 's/^[Ss][Hh]/m/' -e 's/ [Ss][Hh]/ m/g' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-`
3385 for sh_multilib in ${sh_multilibs}; do
3386 case ${sh_multilib} in
3387 m1 | m2 | m2e | m3 | m3e | \
3388 m4 | m4-single | m4-single-only | m4-nofpu | m4-300 |\
3389 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al | \
3390 m2a | m2a-single | m2a-single-only | m2a-nofpu)
3391 # TM_MULTILIB_CONFIG is used by t-sh for the non-endian multilib definition
3392 # It is passed to MULTIILIB_OPTIONS verbatim.
3393 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG}/${sh_multilib}"
3394 tm_defines="$tm_defines SUPPORT_`echo $sh_multilib | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3396 \!*) # TM_MULTILIB_EXCEPTIONS_CONFIG is used by t-sh
3397 # It is passed the MULTILIB_EXCEPTIONS verbatim.
3398 TM_MULTILIB_EXCEPTIONS_CONFIG="${TM_MULTILIB_EXCEPTIONS_CONFIG} `echo $sh_multilib | sed 's/^!//'`" ;;
3400 echo "with_multilib_list=${sh_multilib} not supported."
3405 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's:^/::'`
3406 if test x${enable_incomplete_targets} = xyes ; then
3407 tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1"
3409 tm_file="$tm_file ./sysroot-suffix.h"
3410 tmake_file="$tmake_file t-sysroot-suffix"
3413 tmake_file="${tmake_file} sh/t-sh sh/t-rtems"
3414 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h newlib-stdint.h"
3417 tmake_file="$tmake_file sh/t-sh sh/t-vxworks"
3418 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h vx-common.h vxworks.h sh/vxworks.h"
3421 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp-elf.h"
3424 tmake_file="sparc/t-sparc sparc/t-leon"
3427 tmake_file="sparc/t-sparc sparc/t-leon3"
3430 tmake_file="sparc/t-sparc sparc/t-elf"
3435 tm_file="${tm_file} elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
3436 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
3439 tm_file="${tm_file} elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
3440 extra_options="${extra_options} sparc/long-double-switch.opt"
3443 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon"
3446 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon3"
3449 tmake_file="${tmake_file} sparc/t-sparc"
3452 if test x$enable_targets = xall; then
3453 tm_file="sparc/biarch64.h ${tm_file} sparc/linux64.h"
3454 tmake_file="${tmake_file} sparc/t-linux64"
3456 tm_file="${tm_file} sparc/linux.h"
3457 tmake_file="${tmake_file} sparc/t-linux"
3461 tm_file="${tm_file} elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3462 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3463 extra_options="${extra_options} sparc/long-double-switch.opt"
3464 tmake_file="${tmake_file} sparc/t-sparc"
3467 tm_file="sparc/biarch64.h ${tm_file} ${sol2_tm_file} sparc/tso.h"
3469 sparc64-*-* | sparcv9-*-*)
3470 tm_file="sparc/default64.h ${tm_file}"
3473 test x$with_cpu != x || with_cpu=v9
3476 tmake_file="${tmake_file} sparc/t-sparc sparc/t-sol2"
3479 tm_file="${tm_file} elfos.h sparc/sysv4.h vx-common.h vxworks.h sparc/vxworks.h"
3480 tmake_file="${tmake_file} sparc/t-sparc sparc/t-vxworks"
3483 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h"
3484 extra_options="${extra_options}"
3485 tmake_file="${tmake_file} sparc/t-sparc"
3488 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h sparc/rtemself.h rtems.h"
3489 extra_options="${extra_options}"
3490 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
3493 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"
3494 extra_options="${extra_options} sparc/long-double-switch.opt"
3495 tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
3497 sparc64-*-freebsd*|ultrasparc-*-freebsd*)
3498 tm_file="${tm_file} ${fbsd_tm_file} elfos.h sparc/sysv4.h sparc/freebsd.h"
3499 extra_options="${extra_options} sparc/long-double-switch.opt"
3500 case "x$with_cpu" in
3502 x) with_cpu=ultrasparc ;;
3503 *) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
3505 tmake_file="${tmake_file} sparc/t-sparc"
3508 tm_file="sparc/biarch64.h ${tm_file}"
3509 tm_file="${tm_file} elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3510 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3511 extra_options="${extra_options} sparc/long-double-switch.opt"
3512 tmake_file="${tmake_file} sparc/t-sparc sparc/t-netbsd64"
3515 tm_file="sparc/openbsd1-64.h ${tm_file} elfos.h sparc/sysv4.h sparc/sp64-elf.h"
3516 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h sparc/openbsd64.h"
3517 extra_options="${extra_options} openbsd.opt"
3518 extra_options="${extra_options}"
3521 tmake_file="${tmake_file} sparc/t-sparc"
3524 tm_file="elfos.h ${tm_file} c6x/elf-common.h c6x/elf.h"
3525 tm_file="${tm_file} tm-dwarf2.h newlib-stdint.h"
3526 tmake_file="c6x/t-c6x c6x/t-c6x-elf"
3530 tm_file="elfos.h ${tm_file} gnu-user.h linux.h c6x/elf-common.h c6x/uclinux-elf.h"
3531 tm_file="${tm_file} tm-dwarf2.h glibc-stdint.h"
3532 tm_file="${tm_file} ./sysroot-suffix.h"
3533 tmake_file="t-sysroot-suffix t-slibgcc"
3534 tmake_file="${tmake_file} c6x/t-c6x c6x/t-c6x-elf c6x/t-c6x-uclinux"
3538 target_cpu_default="TARGET_CPU_generic"
3539 tm_file="elfos.h v850/v850.h"
3540 tm_file="${tm_file} v850/rtems.h rtems.h newlib-stdint.h"
3541 tmake_file="${tmake_file} v850/t-v850"
3542 tmake_file="${tmake_file} v850/t-rtems"
3544 c_target_objs="v850-c.o"
3545 cxx_target_objs="v850-c.o"
3550 target_cpu_default="TARGET_CPU_v850e3v5"
3553 target_cpu_default="TARGET_CPU_v850e2v3"
3556 target_cpu_default="TARGET_CPU_v850e2"
3558 v850e1-*-* | v850es-*-*)
3559 target_cpu_default="TARGET_CPU_v850e1"
3562 target_cpu_default="TARGET_CPU_v850e"
3565 target_cpu_default="TARGET_CPU_generic"
3568 tm_file="elfos.h newlib-stdint.h v850/v850.h"
3570 c_target_objs="v850-c.o"
3571 cxx_target_objs="v850-c.o"
3575 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h vax/elf.h vax/linux.h"
3576 extra_options="${extra_options} vax/elf.opt"
3579 tm_file="${tm_file} elfos.h ${nbsd_tm_file} vax/elf.h vax/netbsd-elf.h"
3580 extra_options="${extra_options} netbsd.opt netbsd-elf.opt vax/elf.opt"
3581 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
3584 tm_file="elfos.h ${tm_file} visium/elf.h newlib-stdint.h"
3585 tmake_file="visium/t-visium visium/t-crtstuff"
3588 # For historical reasons, the target files omit the 'x'.
3589 tm_file="elfos.h newlib-stdint.h stormy16/stormy16.h"
3590 tm_p_file=stormy16/stormy16-protos.h
3591 md_file=stormy16/stormy16.md
3592 out_file=stormy16/stormy16.cc
3593 extra_options=stormy16/stormy16.opt
3594 tmake_file="stormy16/t-stormy16"
3597 tm_file="${tm_file} elfos.h newlib-stdint.h xtensa/elf.h"
3598 extra_options="${extra_options} xtensa/elf.opt"
3601 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/linux.h"
3602 tmake_file="${tmake_file} xtensa/t-xtensa"
3605 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/uclinux.h"
3606 tmake_file="${tmake_file} xtensa/t-xtensa"
3607 extra_options="${extra_options} xtensa/uclinux.opt"
3610 tm_file="mn10300/mn10300.h elfos.h gnu-user.h linux.h glibc-stdint.h mn10300/linux.h"
3615 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3616 c_target_objs="m32c-pragma.o"
3617 cxx_target_objs="m32c-pragma.o"
3620 echo "*** Configuration ${target} not supported" 1>&2
3626 i[34567]86-*-linux* | x86_64-*-linux*)
3627 tmake_file="${tmake_file} i386/t-pmm_malloc i386/t-i386"
3629 i[34567]86-*-* | x86_64-*-*)
3630 tmake_file="${tmake_file} i386/t-gmm_malloc i386/t-i386"
3632 powerpc*-*-* | rs6000-*-*)
3633 tm_file="${tm_file} ${cpu_type}/option-defaults.h"
3639 tmake_file="${tmake_file} t-musl"
3642 tmake_file="${tmake_file} t-uclibc"
3646 # Assume the existence of indirect function support and allow the use of the
3647 # resolver attribute.
3649 *-*-linux*android*|*-*-linux*uclibc*|*-*-linux*musl*)
3651 *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
3653 *-*-linux* | *-*-gnu*)
3655 aarch64*-* | arm*-* | i[34567]86-* | powerpc*-* | s390*-* | sparc*-* | x86_64-* | loongarch*-*)
3656 default_gnu_indirect_function=yes
3662 if [ "$target_has_targetcm" = "no" ]; then
3663 c_target_objs="$c_target_objs default-c.o"
3664 cxx_target_objs="$cxx_target_objs default-c.o"
3667 if [ "$common_out_file" = "" ]; then
3668 if [ "$target_has_targetm_common" = "yes" ]; then
3669 common_out_file="$cpu_type/$cpu_type-common.cc"
3671 common_out_file="default-common.cc"
3675 if [ "$target_has_targetdm" = "no" ]; then
3676 d_target_objs="$d_target_objs default-d.o"
3679 if [ "$target_has_targetrustm" = "no" ]; then
3680 rust_target_objs="$rust_target_objs default-rust.o"
3683 # Support for --with-cpu and related options (and a few unrelated options,
3687 echo "--with-cpu must be passed a value" 1>&2
3692 # Set arch and cpu from ${target} and ${target_noncanonical}. Set cpu
3693 # to generic if there is no processor scheduler model for the target.
3696 arch_without_sse2=no
3697 arch_without_64bit=no
3700 if test $fbsd_major -ge 6; then
3706 arch_without_sse2=yes
3707 arch_without_64bit=yes
3712 arch_without_sse2=yes
3713 arch_without_64bit=yes
3718 arch_without_sse2=yes
3719 arch_without_64bit=yes
3724 arch_without_sse2=yes
3725 arch_without_64bit=yes
3728 arch_without_sse2=yes
3729 arch_without_64bit=yes
3730 case ${target_noncanonical} in
3743 pentium_mmx-*|winchip_c6-*|winchip2-*|c3-*)
3753 i686-*-* | i786-*-*)
3754 case ${target_noncanonical} in
3799 amdfam10-*|barcelona-*)
3803 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3807 k8-*|opteron-*|athlon64-*|athlon_fx-*)
3811 athlon_xp-*|athlon_mp-*|athlon_4-*)
3814 arch_without_sse2=yes
3815 arch_without_64bit=yes
3817 athlon_tbird-*|athlon-*)
3820 arch_without_sse2=yes
3825 arch_without_sse2=yes
3838 arch_without_sse2=yes
3840 pentium3-*|pentium3m-*)
3843 arch_without_sse2=yes
3845 pentium4-*|pentium4m-*)
3884 arch_without_sse2=yes
3889 arch_without_sse2=yes
3890 arch_without_64bit=yes
3895 case ${target_noncanonical} in
3940 amdfam10-*|barcelona-*)
3944 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3948 k8-*|opteron-*|athlon_64-*)
3988 # If there is no $with_cpu option, try to infer one from ${target}.
3989 # This block sets nothing except for with_cpu.
3990 if test x$with_cpu = x ; then
3992 i[34567]86-*-elfiamcu)
3995 i[34567]86-*-*|x86_64-*-*)
4013 frv-*-*linux* | frv400-*-*linux*)
4020 case "$with_arch" in
4022 with_cpu=${default_cf_cpu}
4025 with_cpu=m${default_m68k_cpu}
4041 with_cpu="`echo ${target} | sed 's/-.*$//'`"
4050 # Avoid overriding --with-cpu-32 and --with-cpu-64 values.
4052 i[34567]86-*-*|x86_64-*-*)
4053 if test x$with_cpu_32 != x || test x$with_cpu_64 != x; then
4054 if test x$with_cpu_32 = x; then
4055 with_cpu_32=$with_cpu
4057 if test x$with_cpu_64 = x; then
4058 with_cpu_64=$with_cpu
4066 # Support for --with-arch and related options (and a few unrelated options,
4068 case ${with_arch} in
4070 echo "--with-arch must be passed a value" 1>&2
4075 # If there is no $with_arch option, try to infer one from ${target}.
4076 # This block sets nothing except for with_arch.
4077 if test x$with_arch = x ; then
4079 i[34567]86-*-darwin*|x86_64-*-darwin*)
4080 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
4081 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
4083 i[34567]86-*-elfiamcu)
4087 # --with-fpmath sets the default ISA to SSE2, which is the same
4088 # ISA supported by Pentium 4.
4089 if test x$with_fpmath = x || test $arch_without_sse2 = no; then
4098 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4109 # Avoid overriding --with-arch-32 and --with-arch-64 values.
4111 i[34567]86-*-darwin*|x86_64-*-darwin*)
4112 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
4113 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
4115 i[34567]86-*-*|x86_64-*-*)
4116 if test x$with_arch_32 != x || test x$with_arch_64 != x; then
4117 if test x$with_arch_32 = x; then
4118 with_arch_32=$with_arch
4120 if test x$with_arch_64 = x; then
4121 if test $arch_without_64bit = yes; then
4122 # Set the default 64bit arch to x86-64 if the default arch
4123 # doesn't support 64bit.
4126 with_arch_64=$with_arch
4130 elif test $arch_without_64bit$need_64bit_isa = yesyes; then
4131 # Set the default 64bit arch to x86-64 if the default arch
4132 # doesn't support 64bit and we need 64bit ISA.
4133 with_arch_32=$with_arch
4141 # Infer a default setting for --with-float.
4142 if test x$with_float = x; then
4144 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4145 # The R5900 doesn't support 64-bit float. 32-bit float doesn't
4146 # comply with IEEE 754.
4152 # Infer a default setting for --with-fpu.
4153 if test x$with_fpu = x; then
4155 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4156 # The R5900 FPU only supports single precision.
4162 # Support --with-fpmath.
4163 if test x$with_fpmath != x; then
4165 i[34567]86-*-* | x86_64-*-*)
4166 case ${with_fpmath} in
4168 tm_file="${tm_file} i386/avxmath.h"
4171 tm_file="${tm_file} i386/ssemath.h"
4174 echo "Invalid --with-fpmath=$with_fpmath" 1>&2
4180 echo "--with-fpmath isn't supported for $target." 1>&2
4186 # Similarly for --with-schedule.
4187 if test x$with_schedule = x; then
4190 # Override default PA8000 scheduling model.
4191 with_schedule=7100LC
4196 # Infer a default setting for --with-llsc.
4197 if test x$with_llsc = x; then
4200 # The kernel emulates LL and SC where necessary.
4203 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4204 # The R5900 doesn't support LL(D) and SC(D).
4210 # Validate and mark as valid any --with options supported
4211 # by this target. In order to use a particular --with option
4212 # you must list it in supported_defaults; validating the value
4213 # is optional. This case statement should set nothing besides
4214 # supported_defaults.
4219 supported_defaults="abi cpu cpu_64 arch arch_64 tune tune_64"
4220 if test x$with_cpu_64 != x && test x$with_cpu = x; then
4221 with_cpu=$with_cpu_64
4223 if test x$with_arch_64 != x && test x$with_arch = x; then
4224 with_arch=$with_arch_64
4226 if test x$with_tune_64 != x && test x$with_tune = x; then
4227 with_tune=$with_tune_64
4229 for which in cpu arch tune; do
4230 eval "val=\$with_$which"
4231 base_val=`echo $val | sed -E -e 's/\+.*//'`
4232 ext_val=`echo $val | sed -E -e 's/[a-z0-9.-]+//'`
4234 if [ $which = arch ]; then
4235 def=aarch64-arches.def
4236 pattern=AARCH64_ARCH
4238 def=aarch64-cores.def
4239 pattern=AARCH64_CORE
4242 # Find the base CPU or ARCH id in aarch64-cores.def or
4243 # aarch64-arches.def
4244 if [ x"$base_val" = x ] \
4245 || grep "^$pattern(\"$base_val\"," \
4246 ${srcdir}/config/aarch64/$def \
4249 # Disallow extensions in --with-tune=cortex-a53+crc.
4250 if [ $which = tune ] && [ x"$ext_val" != x ]; then
4251 echo "Architecture extensions not supported in --with-$which=$val" 1>&2
4255 # Use the pre-processor to strip flatten the options.
4256 # This makes the format less rigid than if we use
4257 # grep and sed directly here.
4258 opt_macro="AARCH64_OPT_EXTENSION(A, B, C, D, E, F)=A, B, C, D, E, F"
4259 options_parsed="`$ac_cv_prog_CPP -D"$opt_macro" -x c \
4260 ${srcdir}/config/aarch64/aarch64-option-extensions.def`"
4262 while [ x"$ext_val" != x ]
4264 ext_val=`echo $ext_val | sed -E -e 's/\+//'`
4265 ext=`echo $ext_val | sed -E -e 's/\+.*//'`
4266 base_ext=`echo $ext | sed -E -e 's/^no//'`
4267 opt_line=`echo -e "$options_parsed" | \
4268 grep "^\"$base_ext\""`
4270 if [ x"$base_ext" = x ] \
4271 || [ x"$opt_line" != x ]; then
4274 echo "Unknown extension used in --with-$which=$val" 1>&2
4277 ext_val=`echo $ext_val | sed -E -e 's/[a-z0-9]+//'`
4282 # Allow --with-$which=native.
4283 if [ "$val" = native ]; then
4286 echo "Unknown $which used in --with-$which=$val" 1>&2
4294 supported_defaults="cpu tune"
4295 for which in cpu tune; do
4296 eval "val=\$with_$which"
4299 | ev4 | ev45 | 21064 | ev5 | 21164 | ev56 | 21164a \
4300 | pca56 | 21164PC | 21164pc | ev6 | 21264 | ev67 \
4304 echo "Unknown CPU used in --with-$which=$val" 1>&2
4312 supported_defaults="cpu fpu"
4315 if [ x"$with_cpu" = x ] \
4316 || grep -q -E "^ARC_CPU[[:blank:]]*\($with_cpu," \
4317 ${srcdir}/config/arc/arc-cpus.def
4322 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4326 # see if --with-fpu matches any of the supported FPUs
4331 fpus | fpus_div | fpus_fma | fpus_all)
4335 fpuda | fpuda_div | fpuda_fma | fpuda_all)
4339 fpud | fpud_div | fpud_fma | fpud_all)
4344 echo "Unknown floating point type used in "\
4345 "--with-fpu=$with_fpu" 1>&2
4350 if [ -n "$flags_ok" ] \
4351 && ! grep -q -E "^ARC_CPU[[:blank:]]*\($new_cpu,[[:blank:]]*$flags_ok," \
4352 ${srcdir}/config/arc/arc-cpus.def
4354 echo "Unknown floating point type used in "\
4355 "--with-fpu=$with_fpu for cpu $new_cpu" 1>&2
4361 # Handle --with-multilib-list.
4362 if test "x${with_multilib_list}" != xdefault; then
4363 TM_MULTILIB_CONFIG="${with_multilib_list}"
4368 supported_defaults="cpu endian float"
4372 supported_defaults="arch cpu float tune fpu abi mode tls"
4373 for which in cpu tune arch; do
4374 # See if it matches a supported value
4375 eval "val=\$with_$which"
4376 if [ x"$val" != x ]; then
4377 cpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4378 -v cmd="chk$which $val" \
4379 ${srcdir}/config/arm/arm-cpus.in`
4380 if [ "$cpu" = "error" ]; then
4381 echo "Unknown target in --with-$which=$val" 1>&2
4385 eval "target_${which}_cname=$new_val"
4386 echo "For $val real value is $new_val"
4391 case "$with_float" in
4393 | soft | hard | softfp)
4397 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4402 # see if --with-fpu matches any of the supported FPUs
4403 if [ x"$with_fpu" != x ] ; then
4405 fpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4406 -v cmd="chkfpu $val" \
4407 ${srcdir}/config/arm/arm-cpus.in`
4408 if [ "$fpu" = "error" ]
4410 echo "Unknown target in --with-fpu=$val" 1>&2
4417 | apcs-gnu | atpcs | aapcs | iwmmxt | aapcs-linux )
4421 echo "Unknown ABI used in --with-abi=$with_abi"
4426 case "$with_mode" in
4432 echo "Unknown mode used in --with-mode=$with_mode"
4443 echo "Unknown TLS method used in --with-tls=$with_tls" 1>&2
4448 if test "x$with_arch" != x && test "x$with_cpu" != x; then
4449 echo "Switch \"--with-arch\" may not be used with switch \"--with-cpu\"" 1>&2
4453 if test "x$with_cpu" != x && test "x$with_tune" != x; then
4454 echo "Switch \"--with-tune\" may not be used with switch \"--with-cpu\"" 1>&2
4458 # Add extra multilibs
4459 if test "x$with_multilib_list" != x; then
4461 arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
4462 if test "x${arm_multilibs}" != xdefault ; then
4463 for arm_multilib in ${arm_multilibs}; do
4464 case ${arm_multilib} in
4466 tmake_profile_file="arm/t-multilib"
4467 tm_mlib_file="arm/arm-mlib.h"
4470 ml=`echo "X$arm_multilib" | sed '1s,^X@,,'`
4471 if test -f "${srcdir}/config/arm/${ml}"; then
4472 tmake_file="${tmake_file} arm/${ml}"
4474 echo "Error: ${ml} does not exist in ${srcdir}/config/arm" >&2
4479 echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2
4486 if test "x${tmake_profile_file}" != x ; then
4487 # arm/t-aprofile and arm/t-rmprofile are only
4488 # designed to work without any with-cpu,
4489 # with-arch, with-mode, with-fpu or with-float
4491 if test "x$with_arch" != x \
4492 || test "x$with_cpu" != x \
4493 || test "x$with_float" != x \
4494 || test "x$with_fpu" != x \
4495 || test "x$with_mode" != x ; then
4496 echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=${with_multilib_list}" 1>&2
4498 elif test "x$ml" != x ; then
4499 echo "Error: You cannot use builtin multilib profiles along with custom ones" 1>&2
4502 # But pass the default value for float-abi
4503 # through to the multilib selector
4505 tmake_file="${tmake_file} ${tmake_profile_file}"
4506 tm_file="$tm_file $tm_mlib_file"
4507 TM_MULTILIB_CONFIG="$with_multilib_list"
4510 target_cpu_cname=${target_cpu_cname:-arm7tdmi}
4511 with_cpu=${with_cpu:-$target_cpu_cname}
4515 supported_defaults=cpu
4520 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4526 fido-*-* | m68k*-*-*)
4527 supported_defaults="arch cpu"
4528 case "$with_arch" in
4530 m68k_arch_family="$with_arch"
4533 echo "Invalid --with-arch=$with_arch" 1>&2
4538 # We always have a $with_cpu setting here.
4540 "m68000" | "m68010" | "m68020" | "m68030" | "m68040" | "m68060")
4541 m68k_cpu_ident=$with_cpu
4544 m68k_cpu_ident=m68020
4545 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_40"
4548 m68k_cpu_ident=m68020
4549 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_60"
4552 # We need the C identifier rather than the string.
4553 m68k_cpu_ident=`awk -v arg="\"$with_cpu\"" \
4554 'BEGIN { FS="[ \t]*[,()][ \t]*" }; \
4555 $1 == "M68K_DEVICE" && $2 == arg { print $3 }' \
4556 ${srcdir}/config/m68k/m68k-devices.def`
4557 if [ x"$m68k_cpu_ident" = x ] ; then
4558 echo "Unknown CPU used in --with-cpu=$with_cpu" 1>&2
4561 with_cpu="mcpu=$with_cpu"
4567 supported_defaults="arch tune"
4569 for which in arch tune; do
4570 eval "val=\$with_$which"
4572 "" | fiji | gfx900 | gfx906 | gfx908 | gfx90a | gfx1030 | gfx1036 | gfx1100 | gfx1103)
4576 echo "Unknown cpu used in --with-$which=$val." 1>&2
4581 [ "x$with_arch" = x ] && with_arch=gfx900
4583 case "x${with_multilib_list}" in
4588 TM_MULTILIB_CONFIG=`echo "gfx900,gfx906,gfx908,gfx90a,gfx1030,gfx1036,gfx1100,gfx1103" | sed "s/${with_arch},\?//;s/,$//"`
4591 TM_MULTILIB_CONFIG="${with_multilib_list}"
4597 supported_defaults="arch schedule"
4599 case "$with_arch" in
4600 "" | 1.0 | 1.1 | 2.0)
4604 echo "Unknown architecture used in --with-arch=$with_arch" 1>&2
4609 case "$with_schedule" in
4610 "" | 700 | 7100 | 7100LC | 7200 | 7300 | 8000)
4614 echo "Unknown processor used in --with-schedule=$with_schedule." 1>&2
4620 i[34567]86-*-* | x86_64-*-*)
4621 supported_defaults="abi arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64"
4622 for which in arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64; do
4623 eval "val=\$with_$which"
4624 case " $x86_archs " in
4632 echo "CPU given in --with-$which=$val doesn't support 64bit mode." 1>&2
4641 if test x${val} != x; then
4642 case " $x86_64_archs " in
4644 # Disallow x86-64-v* for --with-cpu=/--with-tune=
4645 case "x$which$val" in
4646 xcpu*x86-64-v*|xtune*x86-64-v*)
4647 echo "Unknown CPU given in --with-$which=$val." 1>&2
4656 # Allow $x86_cpus --with-cpu=/--with-tune=
4659 case " $x86_cpus " in
4664 echo "Unknown CPU given in --with-$which=$val." 1>&2
4670 echo "Unknown CPU given in --with-$which=$val." 1>&2
4683 supported_defaults="abi arch tune riscv_attribute isa_spec tls"
4686 riscv-* | riscv32*) xlen=32 ;;
4687 riscv64*) xlen=64 ;;
4688 *) echo "Unsupported RISC-V target ${target}" 1>&2; exit 1 ;;
4691 case "${with_isa_spec}" in
4692 ""|default|20191213|201912)
4693 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20191213"
4694 with_isa_spec=20191213
4697 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_2P2"
4700 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20190608"
4701 with_isa_spec=20190608
4704 echo "--with-isa-spec only accept 2.2, 20191213, 201912, 20190608 or 201906" 1>&2
4708 case "${with_riscv_attribute}" in
4710 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4713 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=0"
4716 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4719 echo "--with-riscv-attribute=${with_riscv_attribute} is not supported. The argument must begin with yes, no or default." 1>&2
4725 # Infer arch from --with-arch, --target, and --with-abi.
4726 case "${with_arch}" in
4727 rv32e* | rv32i* | rv32g* | rv64e* | rv64i* | rv64g*)
4731 # Infer XLEN, but otherwise assume GC.
4732 case "${with_abi}" in
4733 ilp32e) with_arch="rv32e" ;;
4734 ilp32 | ilp32f | ilp32d) with_arch="rv32gc" ;;
4735 lp64 | lp64f | lp64d) with_arch="rv64gc" ;;
4736 lp64e) with_arch="rv64e" ;;
4737 *) with_arch="rv${xlen}gc" ;;
4741 echo "--with-arch=${with_arch} is not supported. The argument must begin with rv32e, rv32i, rv32g, rv64e, rv64i, or rv64g." 1>&2
4745 PYTHON=`which python || which python3 || which python2`
4746 if test "x${PYTHON}" != x; then
4747 with_arch=`${PYTHON} ${srcdir}/config/riscv/arch-canonicalize -misa-spec=${with_isa_spec} ${with_arch}`
4749 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ARCH=${with_arch}"
4751 # Make sure --with-abi is valid. If it was not specified,
4752 # pick a default based on the ISA, preferring soft-float
4753 # unless the D extension is present.
4754 case "${with_abi}" in
4755 ilp32 | ilp32e | ilp32f | ilp32d | lp64 | lp64e | lp64f | lp64d)
4758 case "${with_arch}" in
4759 rv32*d* | rv32g*) with_abi=ilp32d ;;
4760 rv32e*) with_abi=ilp32e ;;
4761 rv32*) with_abi=ilp32 ;;
4762 rv64*d* | rv64g*) with_abi=lp64d ;;
4763 rv64e*) with_abi=lp64e ;;
4764 rv64*) with_abi=lp64 ;;
4768 echo "--with-abi=${with_abi} is not supported" 1>&2
4772 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ABI=${with_abi}"
4774 # Make sure ABI and ISA are compatible.
4775 case "${with_abi},${with_arch}" in
4776 ilp32,rv32* | ilp32e,rv32e* \
4777 | ilp32f,rv32*f* | ilp32f,rv32g* \
4778 | ilp32d,rv32*d* | ilp32d,rv32g* \
4779 | lp64,rv64* | lp64e,rv64e* \
4780 | lp64f,rv64*f* | lp64f,rv64g* \
4781 | lp64d,rv64*d* | lp64d,rv64g*)
4784 echo "--with-abi=${with_abi} is not supported for ISA ${with_arch}" 1>&2
4788 # Handle --with-multilib-generator.
4789 if test "x${with_multilib_generator}" != xdefault; then
4790 if test "x${with_multilib_list}" != xdefault; then
4791 echo "--with-multilib-list= can't used with --with-multilib-generator= at same time" 1>&2
4796 if ${srcdir}/config/riscv/multilib-generator \
4797 -misa-spec=${with_isa_spec} \
4798 `echo ${with_multilib_generator} | sed 's/;/ /g'`\
4799 > t-multilib-config;
4801 tmake_file="${tmake_file} riscv/t-withmultilib-generator"
4803 echo "invalid option for --with-multilib-generator" 1>&2
4808 echo "--with-multilib-generator= is not supported for ${target}, only supported for riscv*-*-elf*" 1>&2
4813 # Handle --with-tls.
4820 echo "Unknown TLS method used in --with-tls=$with_tls" 1>&2
4825 # Handle --with-multilib-list.
4826 if test "x${with_multilib_list}" != xdefault; then
4827 tmake_file="${tmake_file} riscv/t-withmultilib"
4829 case ${with_multilib_list} in
4830 ilp32 | ilp32f | ilp32d \
4831 | lp64 | lp64f | lp64d )
4832 TM_MULTILIB_CONFIG="${with_arch},${with_multilib_list}"
4835 echo "--with-multilib-list=${with_multilib_list} not supported."
4842 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"
4844 case ${with_float} in
4849 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4855 "" | single | double)
4859 echo "Unknown fpu type used in --with-fpu=$with_fpu" 1>&2
4869 echo "Unknown NaN encoding used in --with-nan=$with_nan" 1>&2
4874 case ${with_fp_32} in
4879 echo "Unknown FP mode used in --with-fp-32=$with_fp_32" 1>&2
4884 case ${with_odd_spreg_32} in
4886 with_odd_spreg_32="odd-spreg"
4889 with_odd_spreg_32="no-odd-spreg"
4895 echo "Unknown odd-spreg-32 type used in --with-odd-spreg-32=$with_odd_spreg_32" 1>&2
4901 "" | 32 | o64 | n32 | 64 | eabi)
4905 echo "Unknown ABI used in --with-abi=$with_abi" 1>&2
4910 case ${with_divide} in
4911 "" | breaks | traps)
4915 echo "Unknown division check type use in --with-divide=$with_divide" 1>&2
4920 case ${with_llsc} in
4931 echo "Unknown llsc type used in --with-llsc" 1>&2
4936 case ${with_mips_plt} in
4941 with_mips_plt=no-plt
4946 echo "Unknown --with-mips-plt argument: $with_mips_plt" 1>&2
4951 case ${with_synci} in
4961 echo "Unknown synci type used in --with-synci" 1>&2
4966 case ${with_lxc1_sxc1} in
4968 with_lxc1_sxc1=lxc1-sxc1
4971 with_lxc1_sxc1=no-lxc1-sxc1
4976 echo "Unknown lxc1-sxc1 type used in --with-lxc1-sxc1" 1>&2
4981 case ${with_madd4} in
4991 echo "Unknown madd4 type used in --with-madd4" 1>&2
4996 case ${with_compact_branches} in
4997 "" | never | always | optimal)
5000 echo "Unknown compact-branches policy used in --with-compact-branches" 1>&2
5015 echo "Unknown msa type used in --with-msa" 1>&2
5022 supported_defaults="abi arch tune fpu simd multilib-default strict-align-lib tls"
5027 arch_pattern arch_default \
5028 fpu_pattern fpu_default \
5029 triplet_os triplet_abi \
5032 # --with-abi is now obsolete, emit a warning if given.
5036 echo "warning: --with-abi= is now obsolete," \
5037 "the default ABI is derived from your target" \
5038 "triplet ${target}" 1>&2
5042 # Infer ABI from the triplet.
5044 loongarch64-*f64) abi_base="lp64d"; abi_ext="base" ;;
5045 loongarch64-*f32) abi_base="lp64f"; abi_ext="base" ;;
5046 loongarch64-*sf) abi_base="lp64s"; abi_ext="base" ;;
5047 loongarch64-*) abi_base="lp64d"; abi_ext="base" ;;
5049 echo "Unsupported target ${target}." 1>&2
5054 # Get the canonical triplet (multiarch specifier).
5055 case ${abi_base},${abi_ext} in
5056 lp64d,base) triplet_abi="";;
5057 lp64f,base) triplet_abi="f32";;
5058 lp64s,base) triplet_abi="sf";;
5062 *-linux-gnu*) triplet_os="linux-gnu";;
5063 *-linux-musl*) triplet_os="linux-musl";;
5064 *-elf*) triplet_os="elf";;
5066 echo "Unsupported target ${target}." 1>&2
5070 la_canonical_triplet="loongarch64-${triplet_os}${triplet_abi}"
5073 # Perform initial sanity checks on --with-* options.
5074 case ${with_arch} in
5075 "" | abi-default | loongarch64 | la[46]64) ;; # OK, append here.
5077 if test x${host} != x${target}; then
5078 echo "--with-arch=native is illegal for cross-compiler." 1>&2
5083 echo "Unknown arch in --with-arch=$with_arch" 1>&2
5090 "" | none | 32 | 64) ;; # OK, append here.
5092 # Convert "0" to "none" for upcoming checks.
5096 echo "Unknown fpu type in --with-fpu=$with_fpu" 1>&2
5101 case ${with_simd} in
5103 lsx | lasx) # OK, append here.
5108 echo "--with-simd=${with_simd} conflicts with --with-fpu=${with_fpu}" 1>&2
5115 echo "Unknown SIMD extension in --with-simd=$with_simd" 1>&2
5120 # Infer ISA-related default options from the ABI: pass 1
5121 case ${abi_base}/${abi_ext} in
5123 # architectures that support lp64* ABI
5124 arch_pattern="native|abi-default|loongarch64|la[46]64"
5125 # default architecture for lp64* ABI
5126 arch_default="abi-default"
5129 echo "Unsupported ABI type ${abi_base}/${abi_ext}." 1>&2
5134 # Infer ISA-related default options from the ABI: pass 2
5135 case ${abi_base}/${abi_ext} in
5144 fpu_pattern="none|32|64"
5148 echo "Unsupported ABI type ${abi_base}/${abi_ext}." 1>&2
5153 ## Set default value for with_arch.
5154 case ${with_arch} in
5156 if test x${arch_default} != x; then
5157 with_arch=${arch_default}
5159 with_arch=${arch_pattern}
5164 if echo "${with_arch}" | grep -E "^${arch_pattern}$" > /dev/null; then
5167 echo "${abi_base}/${abi_ext} ABI cannot be implemented with" \
5168 "--with-arch=${with_arch}." 1>&2
5174 ## Set default value for with_fpu.
5177 if test x${fpu_default} != x; then
5178 with_fpu=${fpu_default}
5180 with_fpu=${fpu_pattern}
5185 if echo "${with_fpu}" | grep -E "^${fpu_pattern}$" > /dev/null; then
5188 echo "${abi_base}/${abi_ext} ABI cannot be implemented with" \
5189 "--with-fpu=${with_fpu}." 1>&2
5196 # Check default with_tune configuration using with_arch.
5197 case ${with_arch} in
5199 tune_pattern="native|abi-default|loongarch64|la[46]64"
5202 # By default, $with_tune == $with_arch
5207 case ${with_tune} in
5210 if echo "${with_tune}" | grep -E "^${tune_pattern}$" > /dev/null; then
5213 echo "Incompatible options: --with-tune=${with_tune}" \
5214 "and --with-arch=${with_arch}." 1>&2
5220 # Build libraries with -mstrict-align if --with-strict-align-lib is given.
5221 case ${with_strict_align_lib} in
5222 yes) strict_align_opt="/mstrict-align" ;;
5225 echo "Unknown option: --with-strict-align-lib=${with_strict_align_lib}" 1>&2
5231 # Handle --with-multilib-default
5232 if echo "${with_multilib_default}" \
5233 | grep -E -e '[[:space:]]' -e '//' -e '/$' -e '^/' > /dev/null 2>&1; then
5234 echo "Invalid argument to --with-multilib-default." 1>&2
5238 if test x${with_multilib_default} = x; then
5239 # Use -march=abi-default by default when building libraries.
5240 with_multilib_default="/march=abi-default"
5242 unset parse_state component
5244 for component in $(echo "${with_multilib_default}" | tr '/' ' '); do
5245 case ${parse_state},${component} in
5246 arch,|arch,abi-default)
5247 # ABI-default: use the ABI's default ARCH configuration for
5248 # multilib library builds, unless otherwise specified
5249 # in --with-multilib-list.
5250 with_multilib_default="/march=abi-default" ;;
5252 # Fixed: use the default gcc configuration for all multilib
5253 # builds by default.
5254 with_multilib_default="" ;;
5255 arch,native|arch,loongarch64|arch,la[46]64) # OK, append here.
5256 with_multilib_default="/march=${component}" ;;
5258 with_multilib_default="/march=abi-default"
5259 with_multilib_default="${with_multilib_default}/${component}" ;;
5261 with_multilib_default="${with_multilib_default}/${component}" ;;
5264 if test x${parse_state} = xarch; then
5268 unset parse_state component
5271 # Handle --with-multilib-list.
5272 if test x"${with_multilib_list}" = x \
5273 || test x"${with_multilib_list}" = xno \
5274 || test x"${with_multilib_list}" = xdefault \
5275 || test x"${enable_multilib}" != xyes; then
5277 with_multilib_list="${abi_base}/${abi_ext}"
5280 # Handle --with-tls.
5287 echo "Unknown TLS method used in --with-tls=$with_tls" 1>&2
5292 # Check if the configured default ABI combination is included in
5293 # ${with_multilib_list}.
5294 loongarch_multilib_list_sane=no
5296 # This one goes to TM_MULTILIB_CONFIG, for use in t-linux.
5297 loongarch_multilib_list_make="${abi_base},"
5299 # This one goes to tm_defines, for use in loongarch-driver.c.
5300 loongarch_multilib_list_c=""
5302 # ${with_multilib_list} should not contain whitespaces,
5303 # consecutive commas or slashes.
5304 if echo "${with_multilib_list}" \
5305 | grep -E -e "[[:space:]]" -e '[,/][,/]' -e '[,/]$' -e '^[,/]' > /dev/null 2>&1; then
5306 echo "Invalid argument to --with-multilib-list." 1>&2
5310 unset component elem_abi_base elem_abi_ext elem_tmp parse_state all_abis
5311 for elem in $(echo "${with_multilib_list}" | tr ',' ' '); do
5312 unset elem_abi_base elem_abi_ext
5313 parse_state="abi-base"
5315 for component in $(echo "${elem}" | tr '/' ' '); do
5316 if test x${parse_state} = x"abi-base"; then
5318 case ${component} in
5319 lp64d | lp64f | lp64s) elem_tmp="ABI_BASE_$(echo ${component} | tr a-z A-Z),";;
5321 echo "Unknown base ABI \"${component}\" in --with-multilib-list." 1>&2
5325 loongarch_multilib_list_c="${loongarch_multilib_list_c}${elem_tmp}"
5326 loongarch_multilib_list_make="${loongarch_multilib_list_make}mabi=${component}"
5327 elem_abi_base="${component}"
5329 parse_state="abi-ext"
5333 if test x${parse_state} = x"abi-ext"; then
5334 # ABI extension type
5335 case ${component} in
5338 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5339 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5345 # The default ABI extension is "base" if unspecified.
5347 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5348 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5352 if test x${parse_state} = x"arch"; then
5354 case ${component} in
5355 native | abi-default | loongarch64 | la[46]64) # OK, append here.
5356 # Append -march spec for each multilib variant.
5357 loongarch_multilib_list_make="${loongarch_multilib_list_make}/march=${component}"
5363 # "/default" is equivalent to --with-multilib-default=fixed
5369 # If ARCH is unspecified for this multilib variant, use ${with_multllib_default}.
5370 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5374 if test x${parse_state} = x"opts"; then
5375 # Other compiler options for building libraries.
5376 # (no static sanity check performed)
5377 case ${component} in
5379 # Append other components as additional build options
5380 # (without the prepending dash).
5381 # Their validity should be examined by the compiler.
5382 loongarch_multilib_list_make="${loongarch_multilib_list_make}/${component}"
5388 case ${parse_state} in
5391 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5392 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5393 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5396 # If ARCH is unspecified for this multilib variant, use ${with_multllib_default}.
5397 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5404 # Use mstrict-align for building libraries if --with-strict-align-lib is given.
5405 loongarch_multilib_list_make="${loongarch_multilib_list_make}${strict_align_opt}"
5407 # Check for repeated configuration of the same multilib variant.
5408 if echo "${elem_abi_base}/${elem_abi_ext}" \
5409 | grep -E "^(${all_abis%|})$" >/dev/null 2>&1; then
5410 echo "Repeated multilib config of \"${elem_abi_base}/${elem_abi_ext}\" in --with-multilib-list."
5413 all_abis="${all_abis}${elem_abi_base}/${elem_abi_ext}|"
5416 # Check if the default ABI configuration of the GCC binary
5417 # is included in the enabled multilib variants.
5418 if test x${elem_abi_base} = x${abi_base} \
5419 && test x${elem_abi_ext} = x${abi_ext}; then
5420 loongarch_multilib_list_sane=yes
5422 loongarch_multilib_list_make="${loongarch_multilib_list_make},"
5424 unset component elem_abi_base elem_abi_ext elem_tmp parse_state all_abis
5427 # Check if the default ABI combination is in the default list.
5428 if test x${loongarch_multilib_list_sane} = xno; then
5429 if test x${abi_ext} = xbase; then
5432 abi_ext="/${abi_ext}"
5435 echo "Default ABI combination (${abi_base}${abi_ext})" \
5436 "not found in --with-multilib-list." 1>&2
5440 # Remove the excessive appending comma.
5441 loongarch_multilib_list_c=${loongarch_multilib_list_c%,}
5442 loongarch_multilib_list_make=${loongarch_multilib_list_make%,}
5446 supported_defaults="arch cpu nds32_lib float fpu_config"
5448 # process --with-arch
5449 case "${with_arch}" in
5451 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5455 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5458 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=1"
5461 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=2"
5465 echo "Cannot accept --with-arch=$with_arch, available values are: v2 v2j v3 v3m v3f v3s" 1>&2
5470 case "${with_cpu}" in
5474 n6 | n7 |n8 | e8 | s8 | n9 | n10 | d10 | n12 | n13 | n15)
5478 echo "Cannot accept --with-cpu=$with_cpu, available values are: n6 n7 n8 e8 s8 n9 n10 d10 n12 n13 n15" 1>&2
5483 # process --with-nds32-lib
5484 case "${with_nds32_lib}" in
5488 with_nds32_lib=ulibc
5491 with_nds32_lib=glibc
5494 with_nds32_lib=newlib
5495 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5501 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5505 # for the arch=v3f or arch=v3s under mculib toolchain,
5506 # we would like to set -fno-math-errno as default
5507 case "${with_arch}" in
5509 tm_defines="${tm_defines} TARGET_DEFAULT_NO_MATH_ERRNO=1"
5517 echo "Cannot accept --with-nds32-lib=$with_nds32_lib, available values are: newlib mculib glibc uclibc" 1>&2
5522 # process --with-float
5523 case "${with_float}" in
5528 echo "Cannot accept --with-float=$with_float, available values are: soft hard" 1>&2
5533 # process --with-config-fpu
5534 case "${with_config_fpu}" in
5539 echo "Cannot accept --with-config-fpu=$with_config_fpu, available values from 0 to 7" 1>&2
5547 supported_defaults="arch"
5548 case "$with_arch" in
5553 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5560 supported_defaults=arch
5561 TM_MULTILIB_CONFIG=$with_arch
5562 #TODO 'sm_[...]' list per 'nvptx-sm.def'.
5567 sm_35 | sm_53 | sm_70 | sm_75 | sm_80 )
5568 # OK, but we'd like 'sm_30', too.
5569 TM_MULTILIB_CONFIG="$TM_MULTILIB_CONFIG sm_30"
5572 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5578 powerpc*-*-* | rs6000-*-*)
5579 supported_defaults="abi cpu cpu_32 cpu_64 float tune tune_32 tune_64 advance_toolchain"
5581 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5582 eval "val=\$with_$which"
5584 default32 | default64)
5589 echo "$val only valid for --with-cpu and --with-tune." 1>&2
5593 with_which="with_$which"
5597 tm_defines="${tm_defines} CONFIG_PPC405CR"
5598 eval "with_$which=405"
5600 "" | common | native \
5601 | power[3456789] | power10 | power5+ | power6x \
5602 | powerpc | powerpc64 | powerpc64le \
5604 | 401 | 403 | 405 | 405fp | 440 | 440fp | 464 | 464fp \
5605 | 476 | 476fp | 505 | 601 | 602 | 603 | 603e | ec603e \
5606 | 604 | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 \
5607 | a2 | e300c[23] | 854[08] | e500mc | e500mc64 | e5500 | e6500 \
5608 | titan | 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5 | cell)
5612 echo "Unknown cpu used in --with-$which=$val." 1>&2
5619 "" | elfv1 | elfv2 )
5623 echo "Unknown ABI used in --with-abi=$with_abi"
5628 if test "x$with_advance_toolchain" != x; then
5629 if test -d "/opt/$with_advance_toolchain/." -a \
5630 -d "/opt/$with_advance_toolchain/bin/." -a \
5631 -d "/opt/$with_advance_toolchain/include/."; then
5633 tm_file="$tm_file ./advance-toolchain.h"
5634 (at="/opt/$with_advance_toolchain"
5635 echo "/* Use Advance Toolchain $at */"
5637 echo "#undef LINK_OS_NEW_DTAGS_SPEC"
5638 echo "#define LINK_OS_NEW_DTAGS_SPEC" \
5639 "\"--enable-new-dtags\""
5641 echo "#undef DYNAMIC_LINKER_PREFIX"
5642 echo "#define DYNAMIC_LINKER_PREFIX \"$at\""
5644 echo "#undef MD_EXEC_PREFIX"
5645 echo "#define MD_EXEC_PREFIX \"$at/bin/\""
5647 echo "#undef MD_STARTFILE_PREFIX"
5648 echo "#define MD_STARTFILE_PREFIX \"$prefix/lib/\""
5650 echo "#undef MD_STARTFILE_PREFIX_1"
5651 echo "#define MD_STARTFILE_PREFIX_1 \"$at/lib/\"") \
5652 > advance-toolchain.h
5654 echo "Unknown advance-toolchain $with_advance_toolchain"
5659 # Set up the default long double format if the user changed it.
5660 if test x$with_long_double_format = xieee; then
5661 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=1"
5663 elif test x$with_long_double_format = xibm; then
5664 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=0"
5669 supported_defaults="arch mode tune"
5671 for which in arch tune; do
5672 eval "val=\$with_$which"
5674 "" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | z15 | z16 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12 | arch13 | arch14 )
5678 echo "Unknown cpu used in --with-$which=$val." 1>&2
5684 case ${with_mode} in
5689 echo "Unknown architecture mode used in --with-mode=$with_mode." 1>&2
5695 sh[123456ble]*-*-* | sh-*-*)
5696 supported_defaults="cpu"
5697 case "`echo $with_cpu | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz- | sed s/sh/m/`" in
5698 "" | m1 | m2 | m2e | m3 | m3e | m4 | m4-single | m4-single-only | m4-nofpu )
5701 m2a | m2a-single | m2a-single-only | m2a-nofpu)
5703 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al)
5706 echo "Unknown CPU used in --with-cpu=$with_cpu, known values:" 1>&2
5707 echo "m1 m2 m2e m3 m3e m4 m4-single m4-single-only m4-nofpu" 1>&2
5708 echo "m4a m4a-single m4a-single-only m4a-nofpu m4al" 1>&2
5709 echo "m2a m2a-single m2a-single-only m2a-nofpu" 1>&2
5715 supported_defaults="cpu cpu_32 cpu_64 float tune tune_32 tune_64"
5717 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5718 eval "val=\$with_$which"
5720 "" | sparc | sparcv9 | sparc64 \
5722 | v8 | supersparc | hypersparc | leon | leon3 | leon3v7 \
5723 | sparclite | f930 | f934 | sparclite86x \
5724 | sparclet | tsc701 \
5725 | v9 | ultrasparc | ultrasparc3 | niagara | niagara2 \
5726 | niagara3 | niagara4 | niagara7 | m8)
5730 echo "Unknown cpu used in --with-$which=$val" 1>&2
5736 case ${with_float} in
5741 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
5748 supported_defaults="arch"
5750 case ${with_arch} in
5751 "" | c62x | c64x | c64x+ | c67x | c67x+ | c674x)
5755 echo "Unknown arch used in --with-arch=$with_arch." 1>&2
5762 supported_defaults=cpu
5764 "" | v850e | v850e1 | v850e2 | v850es | v850e2v3 | v850e3v5)
5768 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5774 supported_defaults="cpu"
5778 *) echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5785 # VxWorks support for shared libraries has to be requested explicitly,
5786 # so we can factor this part here:
5788 case "${target}-${enable_shared}" in
5790 tmake_file="${tmake_file} t-slibgcc"
5794 # Targets for which there is at least one VxWorks port should include
5795 # vxworks-dummy.h to allow safe references to various TARGET_VXWORKS kinds
5796 # of markers from other files in the port, including the vxworks*.h files to
5797 # distinguish VxWorks variants such as VxWorks 7 or 64).
5800 arm*-*-* | i[34567]86-*-* | mips*-*-* | powerpc*-*-* | sh*-*-* \
5801 | sparc*-*-* | x86_64-*-*)
5802 tm_file="vxworks-dummy.h ${tm_file}"
5806 # Set some miscellaneous flags for particular targets.
5807 target_cpu_default2=
5810 if test x"$target_cpu_cname" != x
5812 target_cpu_default2=$target_cpu_cname
5817 if test x$with_cpu = x
5819 echo "Don't know the target cpu" 1>&2
5822 target_cpu_default2="\\\"$with_cpu\\\""
5827 if test x$gas = xyes
5829 target_cpu_default2="MASK_GAS"
5833 fido*-*-* | m68k*-*-*)
5834 target_cpu_default2=$m68k_cpu_ident
5835 tmake_file="m68k/t-opts $tmake_file"
5836 if [ x"$m68k_arch_family" != x ]; then
5837 tmake_file="m68k/t-$m68k_arch_family $tmake_file"
5841 i[34567]86-*-darwin* | x86_64-*-darwin*)
5843 i[34567]86-*-linux* | x86_64-*-linux*)
5844 extra_objs="${extra_objs} gnu-property.o"
5845 tmake_file="$tmake_file i386/t-linux i386/t-gnu-property"
5847 i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu)
5848 tmake_file="$tmake_file i386/t-kfreebsd"
5851 tmake_file="$tmake_file i386/t-gnu"
5853 i[34567]86-*-msdosdjgpp*)
5854 tmake_file="${tmake_file} i386/t-djgpp"
5856 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
5858 i[34567]86-*-cygwin* | x86_64-*-cygwin*)
5860 i[34567]86-*-mingw* | x86_64-*-mingw*)
5862 i[34567]86-*-dragonfly* | x86_64-*-dragonfly*)
5864 i[34567]86-*-freebsd*)
5867 tmake_file="${tmake_file} i386/t-freebsd64"
5873 if test x$gnu_ld = xyes
5875 target_cpu_default2="MASK_SPLIT_ADDRESSES"
5879 tm_defines="TARGET_ENDIAN_DEFAULT=0 $tm_defines"
5882 if test x$with_arch != x; then
5883 default_mips_arch=$with_arch
5885 with_arch=$default_mips_arch
5887 if test x$with_abi != x; then
5888 default_mips_abi=$with_abi
5890 case ${default_mips_arch} in
5891 mips1) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS1" ;;
5892 mips2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS2" ;;
5893 mips3) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3" ;;
5894 mips4) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS4" ;;
5895 mips32) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32" ;;
5896 mips32r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2" ;;
5897 mips32r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6" ;;
5898 mips64) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64" ;;
5899 mips64r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2" ;;
5900 mips64r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6" ;;
5902 case ${default_mips_abi} in
5903 32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_32" ;;
5904 o64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_O64" ;;
5905 n32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_N32" ;;
5906 64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_64" ;;
5907 eabi) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_EABI" ;;
5909 tmake_file="mips/t-mips $tmake_file"
5913 # Export canonical triplet.
5914 tm_defines="${tm_defines} LA_MULTIARCH_TRIPLET=${la_canonical_triplet}"
5916 # Define macro LA_DISABLE_MULTILIB if --disable-multilib
5917 tm_defines="${tm_defines} TM_MULTILIB_LIST=${loongarch_multilib_list_c}"
5918 if test x$enable_multilib = xyes; then
5919 TM_MULTILIB_CONFIG="${loongarch_multilib_list_make}"
5921 tm_defines="${tm_defines} LA_DISABLE_MULTILIB"
5924 # Let --with- flags initialize the enum variables from loongarch.opt.
5925 # See macro definitions from loongarch-opts.h and loongarch-cpu.h.
5928 tm_defines="${tm_defines} DEFAULT_CPU_ARCH=CPU_$(echo ${with_arch} | tr a-z- A-Z_)"
5931 tm_defines="${tm_defines} DEFAULT_ABI_BASE=ABI_BASE_$(echo ${abi_base} | tr a-z- A-Z_)"
5935 base) tm_defines="${tm_defines} DEFAULT_ABI_EXT=ABI_EXT_BASE" ;;
5939 if test x${with_tune} != x; then
5940 tm_defines="${tm_defines} DEFAULT_CPU_TUNE=CPU_$(echo ${with_tune} | tr a-z- A-Z_)"
5945 none) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_NONE" ;;
5946 32) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU32" ;;
5947 64) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU64" ;;
5951 case ${with_simd} in
5952 none) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_NONE" ;;
5953 lsx) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_SIMD_LSX" ;;
5954 lasx) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_SIMD_LASX" ;;
5958 "" | trad) tm_defines="$tm_defines DEFAULT_TLS_TYPE=TLS_TRADITIONAL" ;;
5959 desc) tm_defines="$tm_defines DEFAULT_TLS_TYPE=TLS_DESCRIPTORS" ;;
5962 tmake_file="loongarch/t-loongarch $tmake_file"
5965 powerpc*-*-* | rs6000-*-*)
5966 # FIXME: The PowerPC port uses the value set at compile time,
5967 # although it's only cosmetic.
5968 if test "x$with_cpu" != x
5970 target_cpu_default2="\\\"$with_cpu\\\""
5972 out_file="${cpu_type}/${cpu_type}.cc"
5973 c_target_objs="${c_target_objs} ${cpu_type}-c.o"
5974 cxx_target_objs="${cxx_target_objs} ${cpu_type}-c.o"
5975 d_target_objs="${d_target_objs} ${cpu_type}-d.o"
5976 tmake_file="${cpu_type}/t-${cpu_type} ${tmake_file}"
5979 sh[123456ble]*-*-* | sh-*-*)
5980 c_target_objs="${c_target_objs} sh-c.o"
5981 cxx_target_objs="${cxx_target_objs} sh-c.o"
5985 # Some standard aliases.
5990 xsparcv9 | xsparc64)
5995 if test x$with_tune = x ; then
6006 # The SPARC port checks this value at compile-time.
6007 target_cpu_default2="TARGET_CPU_$with_cpu"
6011 case "x$with_cpu" in
6014 xv850e | xv850e1 | xv850e2 | xv850e2v3 | xv850e3v5)
6015 target_cpu_default2="TARGET_CPU_$with_cpu"
6018 target_cpu_default2="TARGET_CPU_v850e1"
6023 target_cpu_default2="TARGET_CPU_$with_cpu"
6026 tmake_file="$tmake_file i386/t-gnu64"
6031 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"
6032 for option in $all_defaults
6034 eval "val=\$with_"`echo $option | sed s/-/_/g`
6035 if test -n "$val"; then
6036 case " $supported_defaults " in
6040 echo "This target does not support --with-$option." 2>&1
6041 echo "Valid --with options are: $supported_defaults" 2>&1
6048 t="{ \"$option\", \"$val\" }"
6050 t="${t}, { \"$option\", \"$val\" }"
6057 configure_default_options="{ { NULL, NULL} }"
6059 configure_default_options="{ ${t} }"
6062 if test "$target_cpu_default2" != ""
6064 if test "$target_cpu_default" != ""
6066 target_cpu_default="(${target_cpu_default}|${target_cpu_default2})"
6068 target_cpu_default=$target_cpu_default2
6073 i[34567]86-*-* | x86_64-*-*)
6074 if test x$enable_as_accelerator = xyes; then
6075 extra_programs="mkoffload\$(exeext)"