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.
275 ia64*-*-hpux* | ia64*-*-*vms* | ia64*-*-elf* \
278 if test "x$enable_obsolete" != xyes; then
279 echo "*** Configuration ${target} 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.
290 case ${target}${target_min} in
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].* \
327 | *-*-solaris2.11.[0-3]* \
331 echo "*** Configuration ${target}${target_min} not supported" 1>&2
336 # Set default cpu_type, tm_file, tm_p_file and xm_file so it can be
337 # updated in each machine entry. Also set default extra_headers for some
340 cpu_type=`echo ${target} | sed 's/-.*$//'`
345 tmake_file=m32c/t-m32c
346 target_has_targetm_common=no
350 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 arm_private_fp8.h"
351 c_target_objs="aarch64-c.o"
352 cxx_target_objs="aarch64-c.o"
353 d_target_objs="aarch64-d.o"
354 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"
355 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"
356 target_has_targetm_common=yes
360 extra_options="${extra_options} g.opt"
371 c_target_objs="arc-c.o"
372 cxx_target_objs="arc-c.o"
373 extra_options="${extra_options} arc/arc-tables.opt g.opt"
374 extra_headers="arc-simd.h"
378 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"
379 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"
380 target_type_format_char='%'
381 c_target_objs="arm-c.o"
382 cxx_target_objs="arm-c.o"
383 d_target_objs="arm-d.o"
384 extra_options="${extra_options} arm/arm-tables.opt"
385 target_gtfiles="\$(srcdir)/config/arm/arm-builtins.cc \$(srcdir)/config/arm/arm-mve-builtins.h \$(srcdir)/config/arm/arm-mve-builtins.cc"
389 c_target_objs="avr-c.o"
390 cxx_target_objs="avr-c.o"
397 c_target_objs="bpf-c.o"
398 cxx_target_objs="bpf-c.o"
401 extra_options="${extra_options} g.opt"
404 target_has_targetm_common=no
406 moxie*) cpu_type=moxie
407 target_has_targetm_common=no
411 extra_headers=math-68881.h
412 extra_options="${extra_options} m68k/m68k-tables.opt"
414 i[34567]86-*-* | x86_64-*-*)
416 c_target_objs="i386-c.o"
417 cxx_target_objs="i386-c.o"
418 d_target_objs="i386-d.o"
419 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"
420 target_gtfiles="\$(srcdir)/config/i386/i386-builtins.cc \$(srcdir)/config/i386/i386-expand.cc \$(srcdir)/config/i386/i386-options.cc"
421 extra_options="${extra_options} fused-madd.opt"
422 extra_headers="cpuid.h mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h
423 pmmintrin.h tmmintrin.h ammintrin.h smmintrin.h
424 nmmintrin.h bmmintrin.h fma4intrin.h wmmintrin.h
425 immintrin.h x86intrin.h avxintrin.h xopintrin.h
426 ia32intrin.h cross-stdarg.h lwpintrin.h popcntintrin.h
427 lzcntintrin.h bmiintrin.h bmi2intrin.h tbmintrin.h
428 avx2intrin.h avx512fintrin.h fmaintrin.h f16cintrin.h
429 rtmintrin.h xtestintrin.h rdseedintrin.h prfchwintrin.h
430 adxintrin.h fxsrintrin.h xsaveintrin.h xsaveoptintrin.h
431 avx512cdintrin.h shaintrin.h clflushoptintrin.h
432 xsavecintrin.h xsavesintrin.h avx512dqintrin.h
433 avx512bwintrin.h avx512vlintrin.h avx512vlbwintrin.h
434 avx512vldqintrin.h avx512ifmaintrin.h avx512ifmavlintrin.h
435 avx512vbmiintrin.h avx512vbmivlintrin.h
436 avx512vpopcntdqintrin.h clwbintrin.h mwaitxintrin.h
437 clzerointrin.h pkuintrin.h sgxintrin.h cetintrin.h
438 gfniintrin.h cet.h avx512vbmi2intrin.h
439 avx512vbmi2vlintrin.h avx512vnniintrin.h
440 avx512vnnivlintrin.h vaesintrin.h vpclmulqdqintrin.h
441 avx512vpopcntdqvlintrin.h avx512bitalgintrin.h
442 avx512bitalgvlintrin.h pconfigintrin.h wbnoinvdintrin.h
443 movdirintrin.h waitpkgintrin.h cldemoteintrin.h
444 avx512bf16vlintrin.h avx512bf16intrin.h enqcmdintrin.h
445 serializeintrin.h avx512vp2intersectintrin.h
446 avx512vp2intersectvlintrin.h tsxldtrkintrin.h
447 amxtileintrin.h amxint8intrin.h amxbf16intrin.h
448 x86gprintrin.h uintrintrin.h hresetintrin.h
449 keylockerintrin.h avxvnniintrin.h mwaitintrin.h
450 avx512fp16intrin.h avx512fp16vlintrin.h avxifmaintrin.h
451 avxvnniint8intrin.h avxneconvertintrin.h
452 cmpccxaddintrin.h amxfp16intrin.h prfchiintrin.h
453 raointintrin.h amxcomplexintrin.h avxvnniint16intrin.h
454 sm3intrin.h sha512intrin.h sm4intrin.h
455 usermsrintrin.h avx10_2roundingintrin.h
456 avx10_2mediaintrin.h avx10_2-512mediaintrin.h
457 avx10_2convertintrin.h avx10_2-512convertintrin.h
458 avx10_2bf16intrin.h avx10_2-512bf16intrin.h
459 avx10_2satcvtintrin.h avx10_2-512satcvtintrin.h
460 avx10_2minmaxintrin.h avx10_2-512minmaxintrin.h
464 extra_headers=ia64intrin.h
465 extra_options="${extra_options} g.opt fused-madd.opt"
471 extra_options="${extra_options} g.opt"
475 extra_options="${extra_options} g.opt"
478 extra_headers=math-68881.h
479 extra_options="${extra_options} m68k/m68k-tables.opt"
483 extra_options="${extra_options} g.opt"
487 d_target_objs="mips-d.o"
488 extra_headers="loongson.h loongson-mmiintrin.h msa.h"
489 extra_objs="frame-header-opt.o"
490 extra_options="${extra_options} g.opt fused-madd.opt mips/mips-tables.opt"
494 d_target_objs="loongarch-d.o"
495 extra_headers="larchintrin.h lsxintrin.h lasxintrin.h"
496 extra_objs="loongarch-c.o loongarch-builtins.o loongarch-cpu.o loongarch-opts.o loongarch-def.o loongarch-evolution.o"
497 extra_gcc_objs="loongarch-driver.o loongarch-cpu.o loongarch-opts.o loongarch-def.o"
498 extra_options="${extra_options} g.opt fused-madd.opt"
502 extra_headers="nds32_intrinsic.h nds32_isr.h nds32_init.inc"
505 extra_options="${extra_options} nds32/nds32-linux.opt"
508 extra_options="${extra_options} nds32/nds32-elf.opt"
513 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"
517 extra_options="${extra_options} g.opt"
521 c_target_objs="nvptx-c.o"
522 cxx_target_objs="nvptx-c.o"
523 extra_options="${extra_options} nvptx/nvptx-gen.opt"
530 extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
531 extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o"
532 extra_objs="${extra_objs} rs6000-builtins.o rs6000-builtin.o"
533 extra_headers="ppc-asm.h altivec.h htmintrin.h htmxlintrin.h"
534 extra_headers="${extra_headers} bmi2intrin.h bmiintrin.h"
535 extra_headers="${extra_headers} xmmintrin.h mm_malloc.h emmintrin.h"
536 extra_headers="${extra_headers} mmintrin.h x86intrin.h"
537 extra_headers="${extra_headers} pmmintrin.h tmmintrin.h smmintrin.h"
538 extra_headers="${extra_headers} nmmintrin.h immintrin.h x86gprintrin.h"
539 extra_headers="${extra_headers} ppu_intrinsics.h spu2vmx.h vec_types.h si2vmx.h"
540 extra_headers="${extra_headers} amo.h"
542 xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[3456789]|xpower1[01]|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|xe6500)
546 extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
547 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.cc \$(srcdir)/config/rs6000/rs6000-call.cc"
548 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-pcrel-opt.cc"
549 target_gtfiles="$target_gtfiles ./rs6000-builtins.h"
556 extra_objs="riscv-builtins.o riscv-c.o riscv-sr.o riscv-shorten-memrefs.o riscv-selftests.o riscv-string.o"
557 extra_objs="${extra_objs} riscv-v.o riscv-vsetvl.o riscv-vector-costs.o riscv-avlprop.o"
558 extra_objs="${extra_objs} riscv-vector-builtins.o riscv-vector-builtins-shapes.o riscv-vector-builtins-bases.o"
559 extra_objs="${extra_objs} thead.o riscv-target-attr.o"
560 d_target_objs="riscv-d.o"
561 extra_headers="riscv_vector.h riscv_crypto.h riscv_bitmanip.h riscv_th_vector.h"
562 target_gtfiles="$target_gtfiles \$(srcdir)/config/riscv/riscv-vector-builtins.cc"
563 target_gtfiles="$target_gtfiles \$(srcdir)/config/riscv/riscv-vector-builtins.h"
566 extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
567 extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
568 extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o"
569 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.cc \$(srcdir)/config/rs6000/rs6000-call.cc"
570 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-pcrel-opt.cc"
574 c_target_objs="sparc-c.o"
575 cxx_target_objs="sparc-c.o"
576 d_target_objs="sparc-d.o"
577 extra_headers="visintrin.h"
581 d_target_objs="s390-d.o"
582 extra_options="${extra_options} fused-madd.opt"
583 extra_headers="s390intrin.h htmintrin.h htmxlintrin.h vecintrin.h"
584 target_gtfiles="./s390-gen-builtins.h"
586 # Note the 'l'; we need to be able to match e.g. "shle" or "shl".
587 sh[123456789lbe]*-*-* | sh-*-*)
589 extra_options="${extra_options} fused-madd.opt"
590 extra_objs="${extra_objs} sh_treg_combine.o sh-mem.o sh_optimize_sett_clrt.o"
597 extra_headers="c6x_intrinsics.h"
598 extra_options="${extra_options} c6x/c6x-tables.opt"
601 extra_options="${extra_options} fused-madd.opt"
602 extra_objs="xtensa-dynconfig.o"
606 tm_file=${cpu_type}/${cpu_type}.h
607 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-protos.h
609 tm_p_file=${cpu_type}/${cpu_type}-protos.h
613 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-d.h
615 tm_d_file="${tm_d_file} ${cpu_type}/${cpu_type}-d.h"
619 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-rust.h
621 tm_rust_file="${cpu_type}/${cpu_type}-rust.h"
623 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-rust.cc
625 rust_target_objs="${rust_target_objs} ${cpu_type}-rust.o"
629 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-modes.def
631 extra_modes=${cpu_type}/${cpu_type}-modes.def
633 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}.opt
635 extra_options="${extra_options} ${cpu_type}/${cpu_type}.opt"
640 tm_p_file="${tm_p_file} arm/aarch-common-protos.h"
643 if test "x$with_multilib_list" = xilp32; then
644 tm_file="aarch64/biarchilp32.h ${tm_file}"
646 tm_file="aarch64/biarchlp64.h ${tm_file}"
650 tm_file="aarch64/biarchilp32.h ${tm_file}"
653 tm_file="aarch64/biarchlp64.h ${tm_file}"
656 echo "Unknown ABI used in --with-abi=$with_abi"
661 if test "x$with_abi" != x; then
662 echo "This target does not support --with-abi."
671 if test "x$with_multilib_list" = xmx32; then
672 tm_file="i386/biarchx32.h ${tm_file}"
674 tm_file="i386/biarch64.h ${tm_file}"
678 tm_file="i386/biarch64.h ${tm_file}"
681 tm_file="i386/biarchx32.h ${tm_file}"
684 echo "Unknown ABI used in --with-abi=$with_abi"
689 tm_p_file="arm/arm-flags.h ${tm_p_file} arm/aarch-common-protos.h"
693 # On a.out targets, we need to use collect2.
700 # Common C libraries.
701 tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
703 # 32-bit x86 processors supported by --with-arch=. Each processor
704 # MUST be separated by exactly one space.
705 x86_archs="athlon athlon-4 athlon-fx athlon-mp athlon-tbird \
706 athlon-xp k6 k6-2 k6-3 geode c3 c3-2 winchip-c6 winchip2 i386 i486 \
707 i586 i686 pentium pentium-m pentium-mmx pentium2 pentium3 pentium3m \
708 pentium4 pentium4m pentiumpro prescott lakemont samuel-2 nehemiah \
711 # 64-bit x86 processors supported by --with-arch=. Each processor
712 # MUST be separated by exactly one space.
713 x86_64_archs="amdfam10 athlon64 athlon64-sse3 barcelona bdver1 bdver2 \
714 bdver3 bdver4 znver1 znver2 znver3 znver4 znver5 btver1 btver2 k8 k8-sse3 \
715 opteron opteron-sse3 nocona core2 corei7 corei7-avx core-avx-i core-avx2 \
716 atom slm nehalem westmere sandybridge ivybridge haswell broadwell bonnell \
717 silvermont skylake-avx512 cannonlake icelake-client icelake-server \
718 skylake goldmont goldmont-plus tremont cascadelake tigerlake cooperlake \
719 sapphirerapids alderlake rocketlake eden-x2 nano nano-1000 nano-2000 nano-3000 \
720 nano-x2 eden-x4 nano-x4 lujiazui yongfeng shijidadao x86-64 x86-64-v2 \
721 x86-64-v3 x86-64-v4 sierraforest graniterapids graniterapids-d grandridge \
722 arrowlake arrowlake-s clearwaterforest pantherlake native"
724 # Additional x86 processors supported by --with-cpu=. Each processor
725 # MUST be separated by exactly one space.
726 x86_cpus="generic intel"
728 # Common parts for widely ported systems.
731 tmake_file="t-darwin "
732 tm_file="${tm_file} darwin.h"
733 darwin_os=`echo ${target} | sed 's/.*darwin\([0-9.]*\).*$/\1/'`
734 darwin_maj=`expr "$darwin_os" : '\([0-9]*\).*'`
735 macos_min=`expr "$darwin_os" : '[0-9]*\.\([0-9]*\).*'`
737 if test x"${macos_min}" = x; then
741 # Tools hosted on earlier versions of Darwin constrained all object
742 # alignment to be 2^15 or smaller. From Darwin11 (macOS 10.7) the
743 # alignment of non-common is allowed to be up to 2^28. Note that the
744 #Â larger alignment is permitted when targeting 10.6 from 10.7 so that
745 #Â the constraint only need be applied per host (and only if the host
748 *-*-darwin[4-9]* | *-*-darwin10*)
749 tm_defines="$tm_defines L2_MAX_OFILE_ALIGNMENT=15U"
752 tm_defines="$tm_defines L2_MAX_OFILE_ALIGNMENT=28U"
756 # Darwin 4 to 19 correspond to macOS 10.0 to 10.15
757 *-*-darwin[4-9]* | *-*-darwin1[0-9]*)
758 macos_min=`expr $darwin_maj - 4`
761 # Darwin 20 corresponds to macOS 11, Darwin 21 to macOS 12.
762 macos_maj=`expr $darwin_maj - 9`
767 aarch64) macos_maj=11 ;;
768 x86_64) macos_min=6 ;;
772 *-*-darwin*) tm_defines="$tm_defines DARWIN_USE_KERNEL_VERS" ;;
774 # If configuring a cross-compiler then we will have set some
775 #Â default above, but it is probably not what was intended.
776 echo "Warning: Using ${target} is only suitable for Darwin hosts" 1>&2
777 echo "configure with an explicit target version" 1>&2
782 echo "Error: configuring for an unreleased macOS version ${target}" 1>&2
786 tm_defines="$tm_defines DEF_MIN_OSX_VERSION=\\\"${macos_maj}.${macos_min}\\\""
787 tm_defines="$tm_defines DEF_LD64=\\\"${def_ld64}\\\""
788 tm_file="${tm_file} ${cpu_type}/darwin.h"
789 tm_p_file="${tm_p_file} darwin-protos.h"
790 target_gtfiles="$target_gtfiles \$(srcdir)/config/darwin.cc"
791 extra_options="${extra_options} rpath.opt darwin.opt"
792 c_target_objs="${c_target_objs} darwin-c.o"
793 cxx_target_objs="${cxx_target_objs} darwin-c.o"
794 d_target_objs="${d_target_objs} darwin-d.o"
795 fortran_target_objs="darwin-f.o"
796 rust_target_objs="${rust_target_objs} darwin-rust.o"
797 target_has_targetcm=yes
798 target_has_targetdm=yes
799 target_has_targetrustm=yes
800 extra_objs="${extra_objs} darwin.o"
801 extra_gcc_objs="darwin-driver.o"
802 default_use_cxa_atexit=yes
804 case ${enable_threads} in
805 "" | yes | posix) thread_file='posix' ;;
811 tmake_file="t-slibgcc"
812 case ${enable_threads} in
817 # Let these non-posix thread selections fall through if requested
820 echo 'Unknown thread configuration for DragonFly BSD'
824 extra_options="$extra_options rpath.opt dragonfly.opt"
825 default_use_cxa_atexit=yes
827 d_target_objs="${d_target_objs} dragonfly-d.o"
828 tmake_file="${tmake_file} t-dragonfly"
829 target_has_targetdm=yes
830 rust_target_objs="${rust_target_objs} dragonfly-rust.o"
831 target_has_targetrustm=yes
834 # This is the generic ELF configuration of FreeBSD. Later
835 # machine-specific sections may refine and add to this
838 # Due to tm_file entry ordering issues that vary between cpu
839 # architectures, we only define fbsd_tm_file to allow the
840 # machine-specific section to dictate the final order of all
841 # entries of tm_file with the minor exception that components
842 # of the tm_file set here will always be of the form:
844 # freebsd<version_number>.h [freebsd-<conf_option>.h ...] freebsd-spec.h freebsd.h
846 # The machine-specific section should not tamper with this
847 # ordering but may order all other entries of tm_file as it
848 # pleases around the provided core setting.
851 fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
852 if test "$fbsd_major" = ""; then
853 echo "Specify the major version number of the targeted FreeBSD release"
854 echo "like this: --target=amd64-unknown-freebsd10.1"
857 tm_defines="${tm_defines} FBSD_MAJOR=${fbsd_major}"
858 tmake_file="t-slibgcc"
859 case ${enable_threads} in
861 fbsd_tm_file="${fbsd_tm_file} freebsd-nthr.h"
867 echo 'Unknown thread configuration for FreeBSD'
871 fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h freebsd-stdint.h"
872 extra_options="$extra_options rpath.opt freebsd.opt"
877 default_use_cxa_atexit=yes;;
880 d_target_objs="${d_target_objs} freebsd-d.o"
881 tmake_file="${tmake_file} t-freebsd"
882 target_has_targetdm=yes
883 rust_target_objs="${rust_target_objs} freebsd-rust.o"
884 target_has_targetrustm=yes
887 native_system_header_dir=/include
888 tmake_file="t-fuchsia"
889 rust_target_objs="${rust_target_objs} fuchsia-rust.o"
890 target_has_targetrustm=yes
892 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi)
893 extra_options="$extra_options gnu-user.opt"
896 case ${enable_threads} in
897 "" | yes | posix) thread_file='posix' ;;
899 tmake_file="t-slibgcc"
901 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
904 native_system_header_dir=/include
907 # Linux C libraries selection switch: glibc / uclibc / bionic.
908 # uclibc and bionic aren't usable for GNU/Hurd and neither for GNU/k*BSD.
911 tm_p_file="${tm_p_file} linux-protos.h"
912 tmake_file="${tmake_file} t-linux"
913 extra_objs="${extra_objs} linux.o"
914 extra_options="${extra_options} linux.opt"
919 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC"
921 *-*-*uclibc* | *-*-uclinuxfdpiceabi)
922 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
925 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
928 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
931 # Assume that glibc or uClibc or Bionic are being used and so __cxa_atexit
933 default_use_cxa_atexit=yes
936 # Enable compilation for Android by default for *android* targets.
939 tm_defines="$tm_defines ANDROID_DEFAULT=1"
942 tm_defines="$tm_defines ANDROID_DEFAULT=0"
945 c_target_objs="${c_target_objs} glibc-c.o"
946 cxx_target_objs="${cxx_target_objs} glibc-c.o"
947 tmake_file="${tmake_file} t-glibc"
948 target_has_targetcm=yes
950 *-*-*uclibc* | *-*-uclinuxfdpiceabi)
953 # Linux targets always support .init_array.
954 gcc_cv_initfini_array=yes
959 d_target_objs="${d_target_objs} linux-d.o"
960 target_has_targetdm=yes
961 rust_target_objs="${rust_target_objs} linux-rust.o"
962 target_has_targetrustm=yes
965 d_target_objs="${d_target_objs} kfreebsd-d.o"
966 target_has_targetdm=yes
968 *-*-kopensolaris*-gnu)
969 d_target_objs="${d_target_objs} kopensolaris-d.o"
970 target_has_targetdm=yes
973 d_target_objs="${d_target_objs} gnu-d.o"
974 target_has_targetdm=yes
979 tm_p_file="${tm_p_file} netbsd-protos.h"
980 tmake_file="t-netbsd t-slibgcc"
981 extra_objs="${extra_objs} netbsd.o"
982 d_target_objs="${d_target_objs} netbsd-d.o"
986 case ${enable_threads} in
987 "" | yes | posix) thread_file='posix' ;;
989 nbsd_tm_file="netbsd.h netbsd-stdint.h netbsd-elf.h"
990 default_use_cxa_atexit=yes
991 target_has_targetdm=yes
993 arm*-* | i[34567]86-* | powerpc*-* | sparc*-* | x86_64-*)
994 default_gnu_indirect_function=yes
997 rust_target_objs="${rust_target_objs} netbsd-rust.o"
998 target_has_targetrustm=yes
1001 tmake_file="t-openbsd"
1002 case ${enable_threads} in
1008 *-*-openbsd4.[3-9]|*-*-openbsd[5-9]*)
1009 default_use_cxa_atexit=yes
1012 d_target_objs="${d_target_objs} openbsd-d.o"
1013 target_has_targetdm=yes
1014 rust_target_objs="${rust_target_objs} openbsd-rust.o"
1015 target_has_targetrustm=yes
1020 default_use_cxa_atexit=yes
1023 case ${enable_threads} in
1024 "" | yes | rtems) thread_file='rtems' ;;
1025 posix) thread_file='posix' ;;
1028 echo 'Unknown thread configuration for RTEMS'
1032 tmake_file="${tmake_file} t-rtems"
1033 extra_options="${extra_options} rtems.opt"
1034 default_use_cxa_atexit=yes
1038 extra_options="$extra_options gnu-user.opt"
1040 case ${enable_threads} in
1041 "" | yes | posix) thread_file='posix' ;;
1043 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC SINGLE_LIBC"
1049 # i?86-*-solaris2* needs to insert headers between cpu default and
1050 # Solaris 2 specific ones.
1051 sol2_tm_file_head="elfos.h ${cpu_type}/sysv4.h"
1052 sol2_tm_file_tail="${cpu_type}/sol2.h sol2.h"
1053 sol2_tm_file="${sol2_tm_file_head} ${sol2_tm_file_tail}"
1054 # __cxa_atexit was introduced in Solaris 11.4.
1055 default_use_cxa_atexit=yes
1057 if test x$gnu_ld = xyes; then
1058 tm_file="usegld.h ${tm_file}"
1060 if test x$gas = xyes; then
1061 tm_file="usegas.h ${tm_file}"
1063 tm_p_file="${tm_p_file} sol2-protos.h"
1064 tmake_file="${tmake_file} t-sol2 t-slibgcc"
1065 c_target_objs="${c_target_objs} sol2-c.o"
1066 cxx_target_objs="${cxx_target_objs} sol2-c.o sol2-cxx.o"
1067 d_target_objs="${d_target_objs} sol2-d.o"
1068 extra_objs="${extra_objs} sol2.o sol2-stubs.o"
1069 extra_options="${extra_options} sol2.opt"
1070 case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
1071 "":yes:* | yes:yes:* )
1075 target_has_targetdm=yes
1076 rust_target_objs="${rust_target_objs} sol2-rust.o"
1077 target_has_targetrustm=yes
1080 extra_options="${extra_options} vms/vms.opt"
1081 xmake_file=vms/x-vms
1082 tmake_file="vms/t-vms t-slibgcc"
1084 target_gtfiles="$target_gtfiles \$(srcdir)/config/vms/vms.cc"
1085 tm_p_file="${tm_p_file} vms/vms-protos.h"
1086 xm_file="vms/xm-vms.h"
1087 c_target_objs="vms-c.o"
1088 cxx_target_objs="vms-c.o"
1089 fortran_target_objs="vms-f.o"
1090 use_gcc_stdint=provide
1091 tm_file="${tm_file} vms/vms-stdint.h"
1092 if test x$gnu_ld != xyes; then
1093 # Build wrappers for native case.
1094 extra_programs="ld\$(exeext) ar\$(exeext)"
1095 tmake_file="$tmake_file vms/t-vmsnative"
1099 tmake_file=t-vxworks
1102 extra_options="${extra_options} vxworks.opt"
1103 extra_objs="$extra_objs vxworks.o"
1105 c_target_objs="${c_target_objs} vxworks-c.o"
1106 cxx_target_objs="${cxx_target_objs} vxworks-c.o"
1107 extra_headers="${extra_headers} ../vxworks/vxworks-predef.h"
1108 target_has_targetcm="yes"
1110 rust_target_objs="${rust_target_objs} vxworks-rust.o"
1111 target_has_targetrustm=yes
1113 extra_gcc_objs="vxworks-driver.o"
1115 # This private header exposes a consistent interface for checks on
1116 # the VxWorks version our runtime header files need to perform, based on
1117 # what the system headers adverstise:
1119 extra_headers="${extra_headers} ../vxworks/_vxworks-versions.h"
1121 # Starting from VxWorks 7, the system comes with a Dinkumware
1122 # environment which requires the inclusion of "yvals.h" before other
1123 # system headers. We provide wrapped versions of a few headers to
1124 # accomodate such constraints:
1126 extra_headers="${extra_headers} ../vxworks/_yvals.h"
1127 extra_headers="${extra_headers} ../vxworks/_yvals-wrapper.h"
1129 extra_headers="${extra_headers} ../vxworks/math.h ../vxworks/complex.h"
1130 extra_headers="${extra_headers} ../vxworks/inttypes.h ../vxworks/setjmp.h"
1132 # We provide (a tailored version of) stdint.h
1133 tm_file="${tm_file} vxworks-stdint.h"
1134 use_gcc_stdint=provide
1136 case ${enable_threads} in
1138 "" | yes | vxworks) thread_file='vxworks' ;;
1139 *) echo 'Unknown thread configuration for VxWorks'; exit 1 ;;
1142 # A few common macro definitions conveying general characteristics
1143 # of the configuration at hand. Note that by VxWorks 7, we mean the
1144 # the SR6xx major update or beyond in vendor parlance:
1148 tm_defines="$tm_defines TARGET_VXWORKS7=1"
1153 tm_defines="$tm_defines TARGET_VXWORKS64=1"
1157 # Then a few build configuration controls for VxWorks 7, which
1158 # has specificities on top of which we aim to provide more complete
1163 # VxWorks 7 always has init/fini_array support and it is simpler to
1164 # just leverage this, sticking to what the system toolchain does:
1165 gcc_cv_initfini_array=yes
1169 *-*-elf|arc*-*-elf*)
1170 # Assume that newlib is being used and so __cxa_atexit is provided.
1171 default_use_cxa_atexit=yes
1174 case "${with_newlib}-${with_headers}" in
1175 no-no) use_gcc_stdint=provide ;;
1181 # Figure out if we need to enable heap trampolines by default
1184 # Currently, we do this for macOS 11 and above.
1185 tm_defines="$tm_defines HEAP_TRAMPOLINES_INIT=1"
1188 tm_defines="$tm_defines HEAP_TRAMPOLINES_INIT=0"
1193 aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
1194 tm_file="${tm_file} elfos.h newlib-stdint.h"
1195 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-elf-raw.h"
1196 tmake_file="${tmake_file} aarch64/t-aarch64"
1202 tm_file="${tm_file} fuchsia.h"
1205 tm_file="${tm_file} aarch64/rtems.h rtems.h"
1206 tmake_file="${tmake_file} aarch64/t-aarch64-rtems"
1211 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1214 aarch64_multilibs="${with_multilib_list}"
1215 if test "$aarch64_multilibs" = "default"; then
1216 aarch64_multilibs="lp64,ilp32"
1218 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1219 for aarch64_multilib in ${aarch64_multilibs}; do
1220 case ${aarch64_multilib} in
1222 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1225 echo "--with-multilib-list=${aarch64_multilib} not supported."
1229 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1231 aarch64*-*-freebsd*)
1232 tm_file="${tm_file} elfos.h ${fbsd_tm_file}"
1233 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-freebsd.h"
1234 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
1235 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1238 tm_file="${tm_file} elfos.h ${nbsd_tm_file}"
1239 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-netbsd.h"
1240 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-netbsd"
1241 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1244 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h"
1245 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-linux.h"
1246 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-linux"
1247 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1250 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1253 aarch64_multilibs="${with_multilib_list}"
1254 if test "$aarch64_multilibs" = "default"; then
1255 # TODO: turn on ILP32 multilib build after its support is mature.
1256 # aarch64_multilibs="lp64,ilp32"
1257 aarch64_multilibs="lp64"
1259 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1260 for aarch64_multilib in ${aarch64_multilibs}; do
1261 case ${aarch64_multilib} in
1263 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1266 echo "--with-multilib-list=${aarch64_multilib} not supported."
1270 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1273 tm_file="${tm_file} elfos.h gnu-user.h gnu.h glibc-stdint.h"
1274 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-gnu.h"
1275 tmake_file="${tmake_file} aarch64/t-aarch64"
1276 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1279 tm_file="${tm_file} aarch64/aarch64-abi-ms.h"
1280 tm_file="${tm_file} aarch64/aarch64-coff.h"
1281 tm_file="${tm_file} aarch64/cygming.h"
1282 tm_file="${tm_file} mingw/mingw32.h"
1283 tm_file="${tm_file} mingw/mingw-stdint.h"
1284 tm_file="${tm_file} mingw/winnt.h"
1285 tm_file="${tm_file} mingw/winnt-dll.h"
1286 tmake_file="${tmake_file} aarch64/t-aarch64"
1287 target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt.cc"
1288 target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt-dll.cc"
1289 extra_options="${extra_options} mingw/cygming.opt mingw/mingw.opt"
1290 extra_objs="${extra_objs} winnt.o winnt-dll.o"
1291 c_target_objs="${c_target_objs} msformat-c.o"
1292 d_target_objs="${d_target_objs} winnt-d.o"
1293 tmake_file="${tmake_file} mingw/t-cygming"
1294 case ${enable_threads} in
1302 default_use_cxa_atexit=yes
1303 user_headers_inc_next_post="${user_headers_inc_next_post} float.h"
1304 tm_defines="${tm_defines} TARGET_AARCH64_MS_ABI=1"
1306 aarch64*-wrs-vxworks*)
1307 tm_file="${tm_file} elfos.h aarch64/aarch64-elf.h"
1308 tm_file="${tm_file} vx-common.h vxworks.h aarch64/aarch64-vxworks.h"
1309 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-vxworks"
1312 tm_file="elfos.h ${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h glibc-stdint.h"
1313 tmake_file="${tmake_file} alpha/t-linux alpha/t-alpha"
1314 extra_options="${extra_options} alpha/elf.opt"
1317 tm_file="elfos.h ${tm_file} ${nbsd_tm_file} alpha/elf.h alpha/netbsd.h"
1318 tmake_file="${tmake_file} alpha/t-alpha"
1319 extra_options="${extra_options} netbsd.opt netbsd-elf.opt \
1323 tm_defines="${tm_defines} OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_FUNCTION_SIZE OBSD_HAS_DECLARE_OBJECT"
1324 tm_file="elfos.h alpha/alpha.h alpha/elf.h openbsd.h openbsd-stdint.h alpha/openbsd.h openbsd-libpthread.h"
1325 tmake_file="${tmake_file} alpha/t-alpha"
1326 extra_options="${extra_options} openbsd.opt alpha/elf.opt"
1327 # default x-alpha is only appropriate for dec-osf.
1330 tm_file="${tm_file} vms/vms.h alpha/vms.h"
1331 tmake_file="${tmake_file} alpha/t-vms alpha/t-alpha"
1334 tm_file="arc/arc-arch.h elfos.h newlib-stdint.h arc/elf.h ${tm_file}"
1335 tmake_file="arc/t-multilib arc/t-arc"
1336 extra_gcc_objs="driver-arc.o"
1337 if test "x$with_cpu" != x; then
1338 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1340 if test x${with_endian} = x; then
1342 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1343 *) with_endian=little ;;
1346 case ${with_endian} in
1348 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1350 case ${with_endian} in
1351 big*) tm_file="arc/big.h ${tm_file}"
1355 tm_file="arc/arc-arch.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arc/linux.h ${tm_file}"
1356 tmake_file="${tmake_file} arc/t-multilib-linux arc/t-arc"
1357 extra_gcc_objs="driver-arc.o"
1358 if test "x$with_cpu" != x; then
1359 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1361 if test x${with_endian} = x; then
1363 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1364 *) with_endian=little ;;
1367 case ${with_endian} in
1369 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1371 case ${with_endian} in
1372 big*) tm_file="arc/big.h ${tm_file}"
1374 # Force .init_array support. The configure script cannot always
1375 # automatically detect that GAS supports it, yet we require it.
1376 gcc_cv_initfini_array=yes
1379 # We only support VxWorks 7 now on ARM, post SR600. Pre SR600
1380 # VxWorks 7 was transitory and major versions prior to 7 were based
1381 # on long deprecated ABI, not supported at all any more regardless
1383 extra_options="${extra_options} arm/vxworks.opt"
1384 tmake_file="${tmake_file} arm/t-arm arm/t-vxworks arm/t-bpabi"
1385 tm_file="elfos.h arm/elf.h arm/bpabi.h arm/aout.h ${tm_file}"
1386 tm_file="${tm_file} vx-common.h vxworks.h arm/vxworks.h"
1387 target_cpu_cname="generic-armv7-a"
1388 need_64bit_hwint=yes
1390 arm*-*-freebsd*) # ARM FreeBSD EABI
1391 tm_file="elfos.h ${fbsd_tm_file} arm/elf.h"
1394 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1397 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi"
1398 tm_file="${tm_file} arm/bpabi.h arm/freebsd.h arm/aout.h arm/arm.h"
1401 target_cpu_cname="arm1176jzf-s"
1402 if test $fbsd_major -ge 11; then
1403 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1407 target_cpu_cname="generic-armv7-a"
1408 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1411 target_cpu_cname="arm9"
1414 with_tls=${with_tls:-gnu}
1417 target_cpu_cname="strongarm"
1418 tmake_file="${tmake_file} arm/t-arm"
1419 tm_file="elfos.h ${nbsd_tm_file} arm/elf.h"
1420 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1422 arm*eb-*) tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" ;;
1425 arm*-*-netbsdelf-*eabi*)
1426 tm_file="$tm_file arm/bpabi.h arm/netbsd-elf.h arm/netbsd-eabi.h"
1427 tmake_file="$tmake_file arm/t-bpabi arm/t-netbsdeabi"
1430 tm_file="$tm_file arm/netbsd-elf.h"
1431 tmake_file="$tmake_file arm/t-netbsd"
1434 tm_file="${tm_file} arm/aout.h arm/arm.h"
1436 arm*-*-netbsdelf-*eabihf*)
1437 # Hard-float requires at least Arm v5te
1438 target_cpu_cname="arm10e"
1439 tm_defines="${tm_defines} TARGET_DEFAULT_FLOAT_ABI=ARM_FLOAT_ABI_HARD"
1443 armv6*) target_cpu_cname="arm1176jzf-s";;
1444 armv7*) target_cpu_cname="generic-armv7-a";;
1447 arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)
1448 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"
1449 extra_options="${extra_options} linux-android.opt"
1452 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1455 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
1456 tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h arm/aout.h arm/arm.h"
1458 arm*-*-uclinuxfdpiceabi)
1459 tm_file="$tm_file arm/uclinuxfdpiceabi.h"
1462 # Define with_float to "hard" if not already defined and
1463 # target name ends with "hf"
1464 case $target:$with_float in
1469 # Generation of floating-point instructions requires at least ARMv5te.
1470 if [ "$with_float" = "hard" -o "$with_float" = "softfp" ] ; then
1471 target_cpu_cname="arm10e"
1473 target_cpu_cname="arm10tdmi"
1475 # Define multilib configuration for arm-linux-androideabi.
1478 tmake_file="$tmake_file arm/t-linux-androideabi"
1481 # The EABI requires the use of __cxa_atexit.
1482 default_use_cxa_atexit=yes
1483 with_tls=${with_tls:-gnu}
1485 arm*-*-uclinux*eabi*) # ARM ucLinux
1486 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
1487 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi"
1488 tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h arm/aout.h arm/arm.h"
1489 target_cpu_cname="arm7tdmi"
1490 # The EABI requires the use of __cxa_atexit.
1491 default_use_cxa_atexit=yes
1494 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1495 tm_file="${tm_file} newlib-stdint.h phoenix.h"
1496 tm_file="${tm_file} arm/aout.h arm/arm.h"
1497 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi arm/t-phoenix"
1498 target_cpu_cname="arm7tdmi"
1500 arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
1503 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1505 default_use_cxa_atexit=yes
1506 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1507 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf"
1508 target_cpu_cname="arm7tdmi"
1511 tm_file="$tm_file newlib-stdint.h"
1512 tmake_file="${tmake_file} arm/t-bpabi"
1516 tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h"
1517 tmake_file="${tmake_file} arm/t-bpabi arm/t-fuchsia"
1518 target_cpu_cname="generic-armv7-a"
1521 tm_file="${tm_file} arm/rtems.h rtems.h newlib-stdint.h"
1522 tmake_file="${tmake_file} arm/t-bpabi arm/t-rtems"
1525 tm_file="${tm_file} arm/symbian.h"
1526 # We do not include t-bpabi for Symbian OS because the system
1527 # provides its own implementation of the BPABI functions.
1528 tmake_file="${tmake_file} arm/t-symbian"
1529 target_cpu_cname="arm10tdmi"
1532 tm_file="${tm_file} arm/aout.h arm/arm.h"
1535 tm_file="elfos.h avr/elf.h avr/avr-arch.h avr/avr.h avr/specs.h avr/avr-stdint.h"
1536 if test x${with_avrlibc} != xno; then
1537 tm_file="${tm_file} ${cpu_type}/avrlibc.h"
1538 tm_defines="${tm_defines} WITH_AVRLIBC"
1540 # Work out avr_double_comparison which is 2 or 3 and is used in
1541 # target hook FLOAT_LIB_COMPARE_RETURNS_BOOL to determine whether
1542 # DFmode comparisons return 3-state or 2-state results.
1543 case y${with_double_comparison} in
1545 avr_double_comparison=3
1548 avr_double_comparison=2
1551 echo "Error: --with-double-comparison= can only be used with: 'tristate', 'bool', 'libf7'" 1>&2
1555 case "y${with_libf7}" in
1557 # avr_double_comparison as set above.
1560 avr_double_comparison=2
1561 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1563 y | yyes | ymath-symbols)
1564 avr_double_comparison=2
1565 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1566 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1567 tm_defines="${tm_defines} WITH_LIBF7_MATH_SYMBOLS"
1570 avr_double_comparison=2
1571 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1572 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1575 echo "Error: --with-libf7=${with_libf7} but can only be used with: 'libgcc', 'math', 'math-symbols', 'yes', 'no'" 1>&2
1579 tm_defines="${tm_defines} WITH_DOUBLE_COMPARISON=${avr_double_comparison}"
1580 case y${with_double} in
1583 tm_defines="${tm_defines} HAVE_DOUBLE32"
1587 tm_defines="${tm_defines} HAVE_DOUBLE64"
1591 avr_double_multilib=1
1592 tm_defines="${tm_defines} HAVE_DOUBLE32"
1593 tm_defines="${tm_defines} HAVE_DOUBLE64"
1594 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1598 avr_double_multilib=1
1599 tm_defines="${tm_defines} HAVE_DOUBLE32"
1600 tm_defines="${tm_defines} HAVE_DOUBLE64"
1601 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1604 echo "Error: --with-double= can only be used with: '32', '32,64', '64,32', '64'" 1>&2
1608 case y${with_long_double} in
1611 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1615 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1619 avr_long_double_multilib=1
1620 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1621 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1622 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1626 avr_long_double_multilib=1
1627 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1628 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1629 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1632 avr_long_double=${avr_double}
1633 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_IS_DOUBLE"
1634 if test y${avr_double_multilib} = y1; then
1635 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1636 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1638 tm_defines="${tm_defines} HAVE_LONG_DOUBLE${avr_long_double}"
1642 echo "Error: --with-long_double= can only be used with: '32', '32,64', '64,32', '64', 'double'" 1>&2
1646 if test ${avr_long_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 32xy1z; then
1647 if test y${with_long_double} != ydouble; then
1648 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
1652 if test ${avr_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 64x1yz; then
1653 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
1656 if test y${avr_double}${avr_long_double} = y6432; then
1657 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
1660 tm_defines="${tm_defines} WITH_DOUBLE${avr_double}"
1661 tm_defines="${tm_defines} WITH_LONG_DOUBLE${avr_long_double}"
1662 tmake_file="${tmake_file} avr/t-avr avr/t-multilib"
1664 extra_gcc_objs="driver-avr.o avr-devices.o"
1665 extra_objs="avr-devices.o avr-log.o avr-passes.o"
1668 tm_file="${tm_file} elfos.h newlib-stdint.h bfin/elf.h"
1669 tmake_file=bfin/t-bfin-elf
1673 tm_file="${tm_file} elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/uclinux.h"
1674 tmake_file=bfin/t-bfin-uclinux
1677 bfin*-linux-uclibc*)
1678 tm_file="${tm_file} elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/linux.h ./linux-sysroot-suffix.h"
1679 tmake_file="${tmake_file} bfin/t-bfin-linux"
1683 tm_file="${tm_file} elfos.h bfin/elf.h bfin/rtems.h rtems.h newlib-stdint.h"
1684 tmake_file="${tmake_file} bfin/t-rtems"
1687 tm_file="${tm_file} elfos.h newlib-stdint.h bfin/elf.h"
1692 tm_file="elfos.h ${tm_file}"
1693 tmake_file="${tmake_file} bpf/t-bpf"
1695 use_gcc_stdint=provide
1696 extra_objs="btfext-out.o core-builtins.o"
1697 target_gtfiles="$target_gtfiles \$(srcdir)/config/bpf/btfext-out.cc \$(srcdir)/config/bpf/core-builtins.cc"
1699 cris-*-elf | cris-*-none)
1700 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1701 tmake_file="cris/t-cris cris/t-elfmulti"
1703 extra_options="${extra_options} cris/elf.opt"
1707 if test x${with_endian} != x; then
1708 case ${with_endian} in
1711 echo "with_endian=${with_endian} not supported."
1716 if test x${with_float} != x; then
1717 case ${with_float} in
1718 soft | hard | softfp) ;;
1720 "Unknown floating point type used in --with-float=$with_float"
1725 tm_file="csky/csky.h"
1726 md_file="csky/csky.md"
1727 out_file="csky/csky.cc"
1728 tm_p_file="${tm_p_file} csky/csky-protos.h"
1729 extra_options="${extra_options} csky/csky_tables.opt"
1731 if test x${enable_tpf_debug} = xyes; then
1732 tm_defines="${tm_defines} ENABLE_TPF_DEBUG"
1737 tm_file="elfos.h newlib-stdint.h ${tm_file} csky/csky-elf.h"
1738 tmake_file="csky/t-csky csky/t-csky-elf"
1739 default_use_cxa_atexit=no
1743 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} csky/csky-linux-elf.h"
1744 tmake_file="${tmake_file} csky/t-csky"
1746 if test "x${enable_multilib}" = xyes ; then
1747 tm_defines="$tm_defines CSKY_ENABLE_MULTILIB"
1748 tmake_file="${tmake_file} csky/t-csky-linux"
1753 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
1754 # Force .init_array support. The configure script cannot always
1755 # automatically detect that GAS supports it, yet we require it.
1756 gcc_cv_initfini_array=yes
1758 csky-*-linux-uclibc*)
1759 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
1760 default_use_cxa_atexit=no
1763 echo "Unknown target $target"
1769 echo "Unknown target $target"
1774 epiphany-*-elf | epiphany-*-rtems*)
1775 tm_file="elfos.h ${tm_file}"
1776 tmake_file="${tmake_file} epiphany/t-epiphany"
1779 tm_file="${tm_file} epiphany/rtems.h rtems.h newlib-stdint.h"
1782 tm_file="${tm_file} newlib-stdint.h"
1785 extra_options="${extra_options} fused-madd.opt"
1786 extra_objs="${extra_objs} mode-switch-use.o resolve-sw-modes.o"
1787 tm_defines="${tm_defines} EPIPHANY_STACK_OFFSET=${with_stack_offset:-8}"
1788 extra_headers="epiphany_intrinsics.h"
1791 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1794 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1795 tmake_file=frv/t-frv
1798 tm_file="elfos.h ${tm_file} \
1799 gnu-user.h linux.h glibc-stdint.h frv/linux.h"
1800 tmake_file="${tmake_file} frv/t-frv frv/t-linux"
1805 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1806 tmake_file="${tmake_file} ft32/t-ft32"
1809 tm_file="elfos.h gcn/gcn-hsa.h gcn/gcn.h newlib-stdint.h"
1810 tmake_file="gcn/t-gcn-hsa"
1811 native_system_header_dir=/include
1812 extra_modes=gcn/gcn-modes.def
1813 extra_objs="${extra_objs} gcn-tree.o"
1815 x86_64*-*-linux-gnu )
1816 if test "$ac_cv_search_dlopen" != no; then
1817 extra_programs="${extra_programs} gcn-run\$(exeext)"
1821 if test x$enable_as_accelerator = xyes; then
1822 extra_programs="${extra_programs} mkoffload\$(exeext)"
1823 tm_file="${tm_file} gcn/offload.h"
1825 # Force .init_array support.
1826 gcc_cv_initfini_array=yes
1832 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1833 tmake_file="${tmake_file} moxie/t-moxie"
1838 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h moxie/uclinux.h"
1839 tmake_file="${tmake_file} moxie/t-moxie"
1842 tmake_file="${tmake_file} moxie/t-moxie"
1843 tm_file="moxie/moxie.h elfos.h moxie/rtems.h rtems.h newlib-stdint.h"
1848 tm_file="${tm_file} elfos.h moxie/moxiebox.h newlib-stdint.h"
1849 tmake_file="${tmake_file} moxie/t-moxiebox"
1852 tmake_file="h8300/t-h8300"
1853 tm_file="h8300/h8300.h elfos.h newlib-stdint.h h8300/elf.h"
1856 tmake_file="${tmake_file} h8300/t-h8300 h8300/t-linux"
1857 tm_file="h8300/h8300.h elfos.h gnu-user.h linux.h glibc-stdint.h h8300/linux.h"
1860 target_cpu_default="MASK_PA_11|MASK_PA_20"
1861 tm_file="pa/pa64-start.h ${tm_file} elfos.h gnu-user.h linux.h \
1862 glibc-stdint.h pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h \
1864 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1865 d_target_objs="${d_target_objs} pa-d.o"
1869 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS|MASK_CALLER_COPIES"
1870 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h pa/pa-linux.h \
1871 pa/pa32-regs.h pa/pa32-linux.h"
1872 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1873 d_target_objs="${d_target_objs} pa-d.o"
1876 target_cpu_default="MASK_PA_11"
1877 tm_file="${tm_file} elfos.h openbsd.h openbsd-stdint.h openbsd-libpthread.h \
1878 pa/pa-openbsd.h pa/pa32-regs.h pa/pa32-openbsd.h"
1879 extra_options="${extra_options} openbsd.opt"
1880 tmake_file="pa/t-pa"
1881 d_target_objs="${d_target_objs} pa-d.o"
1886 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS"
1887 tm_file="${tm_file} elfos.h ${nbsd_tm_file} \
1888 pa/pa-netbsd.h pa/pa32-regs.h pa/pa32-netbsd.h"
1889 tmake_file="${tmake_file}"
1890 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
1891 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1894 target_cpu_default="MASK_PA_11|MASK_PA_20"
1895 if test x$gnu_ld = xyes
1897 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
1899 tm_file="pa/pa64-start.h ${tm_file} elfos.h \
1900 pa/pa64-regs.h pa/pa-hpux.h pa/pa-hpux1010.h \
1904 tm_file="${tm_file} pa/pa-hpux1111.h pa/pa-64.h pa/pa64-hpux.h"
1905 extra_options="${extra_options} pa/pa-hpux1111.opt"
1908 tm_file="${tm_file} pa/pa-hpux1131.h pa/pa-64.h pa/pa64-hpux.h"
1909 extra_options="${extra_options} pa/pa-hpux1131.opt"
1912 tm_file="${tm_file} pa/pa-64.h pa/pa64-hpux.h"
1915 extra_options="${extra_options} pa/pa-hpux.opt \
1916 pa/pa-hpux1010.opt pa/pa64-hpux.opt hpux11.opt"
1917 tmake_file="pa/t-pa t-slibgcc"
1918 d_target_objs="${d_target_objs} pa-d.o"
1919 case x${enable_threads} in
1927 use_gcc_stdint=provide
1928 tm_file="${tm_file} hpux-stdint.h"
1932 tm_file="${tm_file} hpux-stdint.h"
1936 i[34567]86-*-darwin1[89]* | i[34567]86-*-darwin2*)
1937 echo "Error: 32bit target is not supported after Darwin17" 1>&2
1939 i[34567]86-*-darwin*)
1941 # Baseline choice for a machine that allows m64 support.
1942 with_cpu=${with_cpu:-core2}
1943 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch t-slibgcc"
1944 tm_file="${cpu_type}/darwin32-biarch.h ${tm_file} "
1946 x86_64-*-darwin1[89]* | x86_64-*-darwin2*)
1948 tm_defines="${tm_defines} TARGET_64BIT_DEFAULT=(OPTION_MASK_ISA_64BIT|OPTION_MASK_ABI_64)"
1949 tm_defines="${tm_defines} TARGET_BI_ARCH=0"
1950 with_cpu=${with_cpu:-core2}
1951 tmake_file="${tmake_file} t-slibgcc"
1954 with_cpu=${with_cpu:-core2}
1955 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
1956 tm_file="${cpu_type}/darwin64-biarch.h ${tm_file} "
1958 i[34567]86-*-elfiamcu)
1959 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/iamcu.h"
1962 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h"
1965 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h"
1968 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"
1971 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/rdos.h"
1974 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"
1975 tmake_file="i386/t-i386elf t-svr4"
1977 i[34567]86-*-dragonfly*)
1978 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h dragonfly.h dragonfly-stdint.h i386/dragonfly.h"
1979 tmake_file="${tmake_file} i386/t-crtstuff"
1981 x86_64-*-dragonfly*)
1982 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h dragonfly.h dragonfly-stdint.h i386/x86-64.h i386/dragonfly.h"
1983 tmake_file="${tmake_file} i386/t-crtstuff"
1985 i[34567]86-*-freebsd*)
1986 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
1989 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"
1991 i[34567]86-*-netbsdelf*)
1992 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${nbsd_tm_file} i386/netbsd-elf.h"
1993 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1996 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${nbsd_tm_file} i386/x86-64.h i386/netbsd64.h"
1997 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1999 i[34567]86-*-openbsd*)
2000 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
2001 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/openbsdelf.h"
2002 extra_options="${extra_options} openbsd.opt"
2007 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
2008 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/x86-64.h i386/openbsdelf.h"
2009 extra_options="${extra_options} openbsd.opt"
2013 i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu)
2014 # Intel 80386's running GNU/*
2015 # with ELF format using glibc 2
2016 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h gnu-user.h glibc-stdint.h"
2018 i[34567]86-*-linux*)
2019 tm_file="${tm_file} linux.h linux-android.h"
2020 extra_options="${extra_options} linux-android.opt"
2021 if test x$enable_targets = xall; then
2022 tm_file="${tm_file} i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h i386/linux-common.h i386/linux64.h"
2023 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2024 tmake_file="${tmake_file} i386/t-linux64"
2025 x86_multilibs="${with_multilib_list}"
2026 if test "$x86_multilibs" = "default"; then
2027 x86_multilibs="m64,m32"
2029 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
2030 for x86_multilib in ${x86_multilibs}; do
2031 case ${x86_multilib} in
2033 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
2036 echo "--with-multilib-list=${x86_with_multilib} not supported."
2040 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2042 if test x$with_cpu = x; then
2043 if test x$with_cpu_64 = x; then
2047 case " $x86_cpus $x86_archs $x86_64_archs " in
2051 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2052 echo "$x86_cpus $x86_archs $x86_64_archs " 1>&2
2058 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h i386/linux-common.h i386/linux.h"
2061 i[34567]86-*-kfreebsd*-gnu)
2062 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kfreebsd-gnu.h i386/kfreebsd-gnu.h"
2064 i[34567]86-*-kopensolaris*-gnu)
2065 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kopensolaris-gnu.h i386/kopensolaris-gnu.h"
2068 tm_file="$tm_file i386/gnu-user-common.h i386/gnu-user.h gnu.h i386/gnu.h"
2072 x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-gnu*)
2073 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h gnu-user.h glibc-stdint.h \
2074 i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h"
2077 tm_file="${tm_file} linux.h linux-android.h i386/linux-common.h i386/linux64.h"
2078 extra_options="${extra_options} linux-android.opt"
2080 x86_64-*-kfreebsd*-gnu)
2081 tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu64.h"
2084 tm_file="${tm_file} gnu.h i386/gnu64.h"
2087 tmake_file="${tmake_file} i386/t-linux64"
2088 x86_multilibs="${with_multilib_list}"
2089 if test "$x86_multilibs" = "default"; then
2092 x86_multilibs="mx32"
2095 x86_multilibs="m64,m32"
2099 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
2100 for x86_multilib in ${x86_multilibs}; do
2101 case ${x86_multilib} in
2103 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
2106 echo "--with-multilib-list=${x86_with_multilib} not supported."
2110 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2112 i[34567]86-pc-msdosdjgpp*)
2113 xm_file=i386/xm-djgpp.h
2114 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/djgpp.h i386/djgpp-stdint.h"
2115 native_system_header_dir=/dev/env/DJDIR/include
2116 extra_options="${extra_options} i386/djgpp.opt"
2121 i[34567]86-*-lynxos*)
2123 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h i386/lynx.h lynx.h"
2124 tmake_file="${tmake_file} t-lynx"
2125 extra_options="${extra_options} lynx.opt"
2130 i[34567]86-*-nto-qnx*)
2131 tm_file="${tm_file} i386/att.h tm-dwarf2.h elfos.h i386/unix.h i386/nto.h"
2132 extra_options="${extra_options} i386/nto.opt"
2136 i[34567]86-*-rtems*)
2137 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h i386/i386elf.h i386/rtemself.h rtems.h newlib-stdint.h"
2138 tmake_file="${tmake_file} i386/t-rtems"
2140 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
2141 # Set default arch_32 to pentium4, tune_32 to generic like the other
2142 # i386 targets, although config.guess defaults to i386-pc-solaris2*.
2143 with_arch_32=${with_arch_32:-pentium4}
2144 with_tune_32=${with_tune_32:-generic}
2145 tm_file="${tm_file} i386/unix.h i386/att.h ${sol2_tm_file_head} i386/x86-64.h ${sol2_tm_file_tail}"
2146 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2147 tmake_file="$tmake_file i386/t-sol2"
2149 if test x$with_cpu = x; then
2150 if test x$with_cpu_64 = x; then
2154 case " $x86_cpus $x86_archs $x86_64_archs " in
2158 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2159 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2165 i[4567]86-wrs-vxworks*|x86_64-wrs-vxworks7*)
2166 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
2170 tm_file="${tm_file} i386/x86-64.h"
2173 tm_file="${tm_file} vx-common.h"
2176 tm_file="${tm_file} vxworksae.h i386/vxworks.h i386/vxworksae.h"
2177 tmake_file="${tmake_file} i386/t-vxworks i386/t-vxworksae"
2180 tm_file="${tm_file} vxworks.h i386/vxworks.h"
2181 tmake_file="${tmake_file} i386/t-vxworks"
2185 i[34567]86-*-cygwin*)
2186 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h i386/cygwin.h i386/cygwin-stdint.h"
2187 tm_file="${tm_file} mingw/winnt.h"
2188 tm_file="${tm_file} mingw/winnt-dll.h"
2189 xm_file=i386/xm-cygwin.h
2190 tmake_file="${tmake_file} mingw/t-cygming t-slibgcc"
2191 target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt.cc"
2192 target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt-dll.cc"
2193 extra_options="${extra_options} mingw/cygming.opt i386/cygwin.opt"
2194 extra_objs="${extra_objs} winnt.o winnt-stubs.o winnt-dll.o"
2195 c_target_objs="${c_target_objs} msformat-c.o"
2196 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2197 d_target_objs="${d_target_objs} cygwin-d.o"
2198 target_has_targetdm="yes"
2199 if test x$enable_threads = xyes; then
2202 default_use_cxa_atexit=yes
2207 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"
2208 tm_file="${tm_file} mingw/winnt.h"
2209 tm_file="${tm_file} mingw/winnt-dll.h"
2210 xm_file=i386/xm-cygwin.h
2211 tmake_file="${tmake_file} mingw/t-cygming t-slibgcc"
2212 target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt.cc"
2213 target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt-dll.cc"
2214 extra_options="${extra_options} mingw/cygming.opt i386/cygwin.opt"
2215 extra_objs="${extra_objs} winnt.o winnt-stubs.o winnt-dll.o"
2216 c_target_objs="${c_target_objs} msformat-c.o"
2217 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2218 d_target_objs="${d_target_objs} cygwin-d.o"
2219 target_has_targetdm="yes"
2220 if test x$enable_threads = xyes; then
2223 default_use_cxa_atexit=yes
2225 tm_defines="${tm_defines} TARGET_CYGWIN64=1"
2227 i[34567]86-*-mingw* | x86_64-*-mingw*)
2228 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h"
2229 xm_file=i386/xm-mingw32.h
2230 c_target_objs="${c_target_objs} winnt-c.o"
2231 cxx_target_objs="${cxx_target_objs} winnt-c.o"
2232 d_target_objs="${d_target_objs} winnt-d.o"
2233 target_has_targetcm="yes"
2234 target_has_targetdm="yes"
2235 rust_target_objs="${rust_target_objs} winnt-rust.o"
2236 target_has_targetrustm="yes"
2238 x86_64-*-* | *-w64-*)
2244 if test x$enable_threads = xposix ; then
2245 tm_file="${tm_file} i386/mingw-pthread.h"
2247 if test x$enable_threads = xmcf ; then
2248 tm_file="${tm_file} i386/mingw-mcfgthread.h"
2250 tm_file="${tm_file} mingw/mingw32.h"
2251 # This makes the logic if mingw's or the w64 feature set has to be used
2254 user_headers_inc_next_post="${user_headers_inc_next_post} float.h"
2255 user_headers_inc_next_pre="${user_headers_inc_next_pre} stddef.h stdarg.h"
2256 tm_file="${tm_file} i386/mingw-w64.h"
2257 if test x$enable_targets = xall; then
2258 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2259 if test x$with_cpu = x; then
2260 if test x$with_cpu_64 = x; then
2264 case " $x86_cpus $x86_archs $x86_64_archs " in
2268 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2269 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2279 tm_file="${tm_file} mingw/mingw-stdint.h"
2280 tm_file="${tm_file} mingw/winnt.h"
2281 tm_file="${tm_file} mingw/winnt-dll.h"
2282 tmake_file="${tmake_file} t-winnt mingw/t-cygming t-slibgcc"
2285 tmake_file="${tmake_file} i386/t-mingw-w64"
2288 tmake_file="${tmake_file} i386/t-mingw-w32"
2291 native_system_header_dir=/mingw/include
2292 target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt.cc"
2293 target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt-dll.cc"
2294 extra_options="${extra_options} mingw/cygming.opt mingw/mingw.opt"
2297 extra_options="${extra_options} i386/mingw-w64.opt"
2302 extra_objs="${extra_objs} winnt.o winnt-stubs.o winnt-dll.o"
2303 c_target_objs="${c_target_objs} msformat-c.o"
2304 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2307 default_use_cxa_atexit=yes
2309 case ${enable_threads} in
2319 tm_file="${tm_file} i386/crtdll.h"
2321 *mingw32msv* | *mingw*)
2326 tmake_file="${tmake_file} i386/t-x86_64-elf"
2327 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h fuchsia.h"
2330 tm_file="${tm_file} elfos.h newlib-stdint.h ia64/sysv4.h ia64/elf.h"
2331 tmake_file="ia64/t-ia64"
2332 target_cpu_default="0"
2333 if test x$gas = xyes
2335 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2337 if test x$gnu_ld = xyes
2339 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
2343 tm_file="${tm_file} elfos.h ${fbsd_tm_file} ia64/sysv4.h ia64/freebsd.h"
2344 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2345 tmake_file="${tmake_file} ia64/t-ia64"
2348 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h ia64/sysv4.h ia64/linux.h"
2349 tmake_file="${tmake_file} ia64/t-ia64 ia64/t-linux t-libunwind"
2350 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2353 tm_file="${tm_file} elfos.h ia64/sysv4.h ia64/hpux.h"
2354 tmake_file="ia64/t-ia64 ia64/t-hpux t-slibgcc"
2355 target_cpu_default="MASK_GNU_AS"
2356 case x$enable_threads in
2362 c_target_objs="ia64-c.o"
2363 cxx_target_objs="ia64-c.o"
2364 extra_options="${extra_options} ia64/ilp32.opt hpux11.opt"
2366 tm_file="${tm_file} hpux-stdint.h"
2369 tm_file="${tm_file} ia64/hpux-unix2003.h"
2374 tm_file="${tm_file} elfos.h ia64/sysv4.h vms/vms.h ia64/vms.h"
2375 tmake_file="${tmake_file} ia64/t-ia64"
2376 target_cpu_default="0"
2377 if test x$gas = xyes
2379 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2381 extra_options="${extra_options} ia64/vms.opt"
2384 tm_file="elfos.h newlib-stdint.h iq2000/iq2000.h"
2385 out_file=iq2000/iq2000.cc
2386 md_file=iq2000/iq2000.md
2389 tm_file="elfos.h ${tm_file} newlib-stdint.h"
2390 tmake_file="${tmake_file} lm32/t-lm32"
2393 tm_file="elfos.h ${tm_file} lm32/rtems.h rtems.h newlib-stdint.h"
2394 tmake_file="${tmake_file} lm32/t-lm32"
2395 tmake_file="${tmake_file} lm32/t-rtems"
2398 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h lm32/uclinux-elf.h"
2399 tmake_file="${tmake_file} lm32/t-lm32"
2402 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2405 tm_file="elfos.h newlib-stdint.h m32r/little.h ${tm_file}"
2407 m68k-*-elf* | fido-*-elf*)
2410 # Check that $with_cpu makes sense.
2415 echo "Cannot accept --with-cpu=$with_cpu"
2422 default_m68k_cpu=68020
2426 tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h elfos.h newlib-stdint.h m68k/m68kemb.h m68k/m68020-elf.h"
2427 tm_defines="${tm_defines} MOTOROLA=1"
2428 tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-m68kelf"
2429 # Add multilibs for targets other than fido.
2434 tmake_file="$tmake_file m68k/t-mlibs"
2439 default_m68k_cpu=68020
2441 tm_file="${tm_file} elfos.h ${nbsd_tm_file} m68k/netbsd-elf.h"
2442 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2443 tm_defines="${tm_defines} MOTOROLA=1 CHAR_FAST8=1 SHORT_FAST16=1"
2445 m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux
2446 # with uClibc, using the new GNU/Linux-style
2448 default_m68k_cpu=68020
2450 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"
2451 extra_options="${extra_options} m68k/uclinux.opt"
2452 tm_defines="${tm_defines} MOTOROLA=1"
2453 tmake_file="m68k/t-floatlib m68k/t-uclinux m68k/t-mlibs"
2455 m68k-*-linux*) # Motorola m68k's running GNU/Linux
2456 # with ELF format using glibc 2
2457 # aka the GNU/Linux C library 6.
2458 default_m68k_cpu=68020
2460 with_arch=${with_arch:-m68k}
2461 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h m68k/linux.h ./sysroot-suffix.h"
2462 extra_options="${extra_options} m68k/ieee.opt"
2463 tm_defines="${tm_defines} MOTOROLA=1"
2464 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-linux m68k/t-mlibs"
2467 default_m68k_cpu=68020
2469 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-m68kbare m68k/t-crtstuff m68k/t-rtems m68k/t-mlibs"
2470 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"
2471 tm_defines="${tm_defines} MOTOROLA=1"
2474 tm_file="elfos.h newlib-stdint.h ${tm_file} mcore/mcore-elf.h"
2475 tmake_file=mcore/t-mcore
2481 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2484 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2487 tm_file="${tm_file} gnu-user.h linux.h microblaze/linux.h"
2488 tm_file="${tm_file} glibc-stdint.h"
2489 c_target_objs="${c_target_objs} microblaze-c.o"
2490 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2491 tmake_file="${tmake_file} microblaze/t-microblaze"
2492 tmake_file="${tmake_file} microblaze/t-microblaze-linux"
2494 microblaze*-*-rtems*)
2497 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2500 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2503 tm_file="${tm_file}"
2504 tm_file="${tm_file} microblaze/rtems.h rtems.h newlib-stdint.h"
2505 c_target_objs="${c_target_objs} microblaze-c.o"
2506 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2507 tmake_file="${tmake_file} microblaze/t-microblaze"
2508 tmake_file="${tmake_file} microblaze/t-rtems"
2513 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2516 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2519 tm_file="${tm_file} newlib-stdint.h"
2520 c_target_objs="${c_target_objs} microblaze-c.o"
2521 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2522 tmake_file="${tmake_file} microblaze/t-microblaze"
2525 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} riscv/linux.h"
2526 case "x${enable_multilib}" in
2528 xyes) tmake_file="${tmake_file} riscv/t-linux-multilib" ;;
2529 *) echo "Unknown value for enable_multilib"; exit 1
2531 tmake_file="${tmake_file} riscv/t-riscv riscv/t-linux"
2532 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
2536 riscv32be-*|riscv64be-*)
2537 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2540 # Force .init_array support. The configure script cannot always
2541 # automatically detect that GAS supports it, yet we require it.
2542 gcc_cv_initfini_array=yes
2543 with_tls=${with_tls:-trad}
2545 riscv*-*-elf* | riscv*-*-rtems*)
2546 tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h"
2549 tm_file="${tm_file} riscv/rtems.h rtems.h"
2550 tmake_file="${tmake_file} riscv/t-rtems"
2553 if test "x${with_multilib_generator}" = xdefault; then
2554 case "x${enable_multilib}" in
2556 xyes) tmake_file="${tmake_file} riscv/t-elf-multilib" ;;
2557 *) echo "Unknown value for enable_multilib"; exit 1
2561 tmake_file="${tmake_file} riscv/t-riscv"
2565 riscv32be-*|riscv64be-*)
2566 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2569 # Force .init_array support. The configure script cannot always
2570 # automatically detect that GAS supports it, yet we require it.
2571 gcc_cv_initfini_array=yes
2574 tm_file="${tm_file} elfos.h ${fbsd_tm_file} riscv/freebsd.h"
2575 tmake_file="${tmake_file} riscv/t-riscv"
2579 riscv32be-*|riscv64be-*)
2580 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2583 # Force .init_array support. The configure script cannot always
2584 # automatically detect that GAS supports it, yet we require it.
2585 gcc_cv_initfini_array=yes
2586 with_tls=${with_tls:-trad}
2589 loongarch*-*-linux*)
2590 tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file}"
2592 *-linux-musl*) tm_file="${tm_file} loongarch/musl.h"
2594 tm_file="${tm_file} loongarch/gnu-user.h loongarch/linux.h loongarch/loongarch-driver.h"
2595 extra_options="${extra_options} linux-android.opt"
2596 tmake_file="${tmake_file} loongarch/t-multilib loongarch/t-linux"
2600 # Force .init_array support. The configure script cannot always
2601 # automatically detect that GAS supports it, yet we require it.
2602 gcc_cv_initfini_array=yes
2606 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2607 tm_file="${tm_file} loongarch/elf.h loongarch/linux.h loongarch/loongarch-driver.h"
2608 tmake_file="${tmake_file} loongarch/t-multilib loongarch/t-linux"
2612 # For .init_array support. The configure script cannot always
2613 # automatically detect that GAS supports it, yet we require it.
2614 gcc_cv_initfini_array=yes
2617 mips*-*-netbsd*) # NetBSD/mips, either endian.
2618 target_cpu_default="MASK_ABICALLS"
2619 tm_file="elfos.h ${tm_file} mips/elf.h ${nbsd_tm_file} mips/netbsd.h"
2620 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2623 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"
2624 extra_options="${extra_options} linux-android.opt"
2625 tmake_file="${tmake_file} mips/t-img-linux"
2626 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2627 with_arch_32="mips32r6"
2628 with_arch_64="mips64r6"
2633 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"
2634 extra_options="${extra_options} linux-android.opt"
2635 tmake_file="${tmake_file} mips/t-mti-linux"
2636 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2637 with_arch_32="mips32r2"
2638 with_arch_64="mips64r2"
2642 mips*-*-linux*) # Linux MIPS, either endian.
2643 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"
2644 extra_options="${extra_options} linux-android.opt"
2647 default_mips_arch=mips32r6
2650 default_mips_arch=mips32r2
2653 default_mips_arch=mips32
2655 mips64el-st-linux-gnu)
2656 default_mips_abi=n32
2657 tm_file="${tm_file} mips/st.h"
2658 tmake_file="${tmake_file} mips/t-st"
2659 enable_mips_multilibs="yes"
2661 mips64octeon*-*-linux*)
2662 default_mips_abi=n32
2663 tm_defines="${tm_defines} MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\""
2664 target_cpu_default=MASK_SOFT_FLOAT_ABI
2665 enable_mips_multilibs="yes"
2667 mipsisa64r6*-*-linux-gnuabi64)
2669 default_mips_arch=mips64r6
2670 enable_mips_multilibs="yes"
2672 mipsisa64r6*-*-linux*)
2673 default_mips_abi=n32
2674 default_mips_arch=mips64r6
2675 enable_mips_multilibs="yes"
2677 mipsisa64r2*-*-linux-gnuabi64)
2679 default_mips_arch=mips64r2
2680 enable_mips_multilibs="yes"
2682 mipsisa64r2*-*-linux*)
2683 default_mips_abi=n32
2684 default_mips_arch=mips64r2
2685 enable_mips_multilibs="yes"
2687 mips64*-*-linux-gnuabi64 | mipsisa64*-*-linux-gnuabi64)
2689 enable_mips_multilibs="yes"
2691 mips64*-*-linux* | mipsisa64*-*-linux*)
2692 default_mips_abi=n32
2693 enable_mips_multilibs="yes"
2696 if test x$enable_targets = xall; then
2697 enable_mips_multilibs="yes"
2699 if test x$enable_mips_multilibs = xyes; then
2700 tmake_file="${tmake_file} mips/t-linux64"
2704 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2705 tmake_file="mips/t-mti-elf"
2706 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2707 with_arch_32="mips32r2"
2708 with_arch_64="mips64r2"
2711 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2712 tmake_file="mips/t-img-elf"
2713 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2714 with_arch_32="mips32r6"
2715 with_arch_64="mips64r6"
2718 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h"
2719 tmake_file="mips/t-sde"
2720 extra_options="${extra_options} mips/sde.opt"
2721 case "${with_newlib}" in
2723 # newlib / libgloss.
2726 # MIPS toolkit libraries.
2727 tm_file="$tm_file mips/sdemtk.h"
2728 tmake_file="$tmake_file mips/t-sdemtk"
2729 case ${enable_threads} in
2731 thread_file='mipssde'
2738 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2741 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2744 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32 MIPS_ABI_DEFAULT=ABI_32"
2747 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6 MIPS_ABI_DEFAULT=ABI_N32"
2750 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2 MIPS_ABI_DEFAULT=ABI_N32"
2753 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_ABI_DEFAULT=ABI_N32"
2757 mipsisa32-*-elf* | mipsisa32el-*-elf* | \
2758 mipsisa32r2-*-elf* | mipsisa32r2el-*-elf* | \
2759 mipsisa32r6-*-elf* | mipsisa32r6el-*-elf* | \
2760 mipsisa64-*-elf* | mipsisa64el-*-elf* | \
2761 mipsisa64r2-*-elf* | mipsisa64r2el-*-elf* | \
2762 mipsisa64r6-*-elf* | mipsisa64r6el-*-elf*)
2763 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2764 tmake_file="mips/t-isa3264"
2767 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6"
2770 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2"
2773 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32"
2776 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6"
2779 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2"
2782 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64"
2786 mipsisa32*-*-elfoabi*)
2787 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_32"
2788 tm_file="${tm_file} mips/elfoabi.h"
2790 mipsisa64*-*-elfoabi*)
2791 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_O64"
2792 tm_file="${tm_file} mips/elfoabi.h"
2795 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2799 mipsisa64sr71k-*-elf*)
2800 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2801 tmake_file=mips/t-sr71k
2802 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sr71000\\\" MIPS_ABI_DEFAULT=ABI_EABI"
2804 mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*)
2805 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2806 tmake_file="mips/t-elf mips/t-sb1"
2807 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sb1\\\" MIPS_ABI_DEFAULT=ABI_O64"
2809 mips-*-elf* | mipsel-*-elf* | mipsr5900-*-elf* | mipsr5900el-*-elf*)
2810 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2811 tmake_file="mips/t-elf"
2813 mips64r5900-*-elf* | mips64r5900el-*-elf*)
2814 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h"
2815 tmake_file="mips/t-elf"
2816 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_N32"
2818 mips64-*-elf* | mips64el-*-elf*)
2819 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2820 tmake_file="mips/t-elf"
2821 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_O64"
2823 mips64vr-*-elf* | mips64vrel-*-elf*)
2824 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/vr.h mips/elf.h"
2825 tmake_file=mips/t-vr
2826 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2828 mips64orion-*-elf* | mips64orionel-*-elf*)
2829 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elforion.h mips/elf.h"
2830 tmake_file="mips/t-elf"
2831 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_O64"
2834 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/rtems.h rtems.h"
2835 tmake_file="${tmake_file} mips/t-elf mips/t-rtems"
2838 tm_file="elfos.h ${tm_file} mips/elf.h vx-common.h vxworks.h mips/vxworks.h"
2839 tmake_file="${tmake_file} mips/t-vxworks"
2841 mipstx39-*-elf* | mipstx39el-*-elf*)
2842 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/r3900.h mips/elf.h"
2843 tmake_file="mips/t-r3900"
2845 mmix-knuth-mmixware)
2846 tm_file="${tm_file} newlib-stdint.h"
2850 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2855 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2856 c_target_objs="msp430-c.o"
2857 cxx_target_objs="msp430-c.o"
2858 tmake_file="${tmake_file} msp430/t-msp430"
2859 extra_objs="${extra_objs} msp430-devices.o"
2860 extra_gcc_objs="driver-msp430.o msp430-devices.o"
2861 # Enable .init_array unless it has been explicitly disabled.
2862 # The MSP430 EABI mandates the use of .init_array, and the Newlib CRT
2863 # code since mid-2019 expects it.
2864 if test x${disable_initfini_array} != xyes; then
2865 gcc_cv_initfini_array=yes
2869 # __cxa_atexit increases code size, and we don't need to support
2870 # dynamic shared objects on MSP430, so regular Newlib atexit is a
2871 # fine replacement as it also supports registration of more than 32
2873 default_use_cxa_atexit=no
2874 # This target does not match the generic *-*-elf case above which
2875 # sets use_gcc_stdint=wrap, so explicitly set it here.
2881 target_cpu_default="0"
2882 tm_defines="${tm_defines}"
2887 target_cpu_default="${target_cpu_default}|MASK_BIG_ENDIAN"
2888 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2893 tm_file="elfos.h newlib-stdint.h ${tm_file} nds32/elf.h nds32/nds32_intrinsic.h"
2894 tmake_file="nds32/t-nds32 nds32/t-elf"
2897 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h nds32/linux.h nds32/nds32_intrinsic.h"
2898 tmake_file="${tmake_file} nds32/t-nds32 nds32/t-linux"
2899 gcc_cv_initfini_array=yes
2903 # Handle --enable-default-relax setting.
2904 if test x${enable_default_relax} = xyes; then
2905 tm_defines="${tm_defines} TARGET_DEFAULT_RELAX=1"
2907 # Handle --with-ext-dsp
2908 if test x${with_ext_dsp} = xyes; then
2909 tm_defines="${tm_defines} TARGET_DEFAULT_EXT_DSP=1"
2913 tm_file="elfos.h ${tm_file}"
2914 tmake_file="${tmake_file} nios2/t-nios2"
2917 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h nios2/linux.h "
2920 tm_file="${tm_file} newlib-stdint.h nios2/elf.h"
2921 extra_options="${extra_options} nios2/elf.opt"
2924 tm_file="${tm_file} newlib-stdint.h nios2/rtems.h rtems.h"
2925 tmake_file="${tmake_file} t-rtems nios2/t-rtems"
2930 tm_file="${tm_file} newlib-stdint.h"
2932 tmake_file="nvptx/t-nvptx"
2933 if test x$enable_as_accelerator = xyes; then
2934 extra_programs="${extra_programs} mkoffload\$(exeext)"
2935 tm_file="${tm_file} nvptx/offload.h"
2939 tm_file="elfos.h ${tm_file}"
2940 tmake_file="${tmake_file} or1k/t-or1k"
2941 # Force .init_array support. The configure script cannot always
2942 # automatically detect that GAS supports it, yet we require it.
2943 gcc_cv_initfini_array=yes
2945 # Handle --with-multilib-list=...
2946 or1k_multilibs="${with_multilib_list}"
2947 if test "$or1k_multilibs" = "default"; then
2948 or1k_multilibs="mcmov,msoft-mul,msoft-div"
2950 or1k_multilibs=`echo $or1k_multilibs | sed -e 's/,/ /g'`
2951 for or1k_multilib in ${or1k_multilibs}; do
2952 case ${or1k_multilib} in
2953 mcmov | msext | msfimm | \
2955 mhard-float | mdouble-float | munordered-float | msoft-float | \
2956 mhard-div | mhard-mul | \
2957 msoft-div | msoft-mul )
2958 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${or1k_multilib}"
2961 echo "--with-multilib-list=${with_multilib_list} not supported."
2965 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2969 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h"
2970 tm_file="${tm_file} or1k/linux.h"
2973 tm_file="${tm_file} newlib-stdint.h or1k/elf.h"
2974 extra_options="${extra_options} or1k/elf.opt"
2977 tm_file="${tm_file} newlib-stdint.h or1k/rtems.h rtems.h"
2978 tmake_file="${tmake_file} or1k/t-rtems"
2983 tm_file="${tm_file} newlib-stdint.h"
2986 # port not yet contributed
2987 #powerpc-*-openbsd*)
2988 # tmake_file="${tmake_file} rs6000/t-fprules"
2992 extra_options="${extra_options} ${cpu_type}/darwin.opt"
2994 *-darwin1[0-9]* | *-darwin9*)
2995 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2996 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2999 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
3000 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
3003 tm_file="${tm_file} ${cpu_type}/darwin7.h"
3006 # Earlier - ingle arch, with 32b only
3007 # OS X 10.0, the first edition is Darwin4
3010 tmake_file="${tmake_file} t-slibgcc"
3012 powerpc64-*-darwin*)
3013 extra_options="${extra_options} ${cpu_type}/darwin.opt"
3014 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
3015 tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h"
3017 powerpc*-*-freebsd*)
3018 tm_file="${tm_file} elfos.h gnu-user.h ${fbsd_tm_file} rs6000/sysv4.h"
3019 extra_options="${extra_options} rs6000/sysv4.opt"
3020 tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
3023 tm_file="${tm_file} rs6000/sysv4le.h" ;;
3027 tm_file="${tm_file} rs6000/default64.h rs6000/freebsd64.h"
3028 tmake_file="${tmake_file} rs6000/t-freebsd64"
3029 extra_options="${extra_options} rs6000/linux64.opt"
3030 if test $fbsd_major -ge 13; then
3031 tm_defines="${tm_defines} TARGET_FREEBSD32_SECURE_PLT=1"
3035 if test $fbsd_major -ge 13; then
3036 tm_file="rs6000/secureplt.h ${tm_file}"
3038 tm_file="${tm_file} rs6000/freebsd.h"
3043 tm_file="${tm_file} elfos.h gnu-user.h ${nbsd_tm_file} freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h"
3044 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3045 tmake_file="${tmake_file} rs6000/t-netbsd"
3046 extra_options="${extra_options} rs6000/sysv4.opt"
3048 powerpc-*-eabisimaltivec*)
3049 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"
3050 extra_options="${extra_options} rs6000/sysv4.opt"
3051 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
3055 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"
3056 extra_options="${extra_options} rs6000/sysv4.opt"
3057 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3061 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h"
3062 extra_options="${extra_options} rs6000/sysv4.opt"
3063 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3065 powerpc-*-eabialtivec*)
3066 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabialtivec.h"
3067 extra_options="${extra_options} rs6000/sysv4.opt"
3068 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
3072 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h"
3073 extra_options="${extra_options} rs6000/sysv4.opt"
3074 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3078 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"
3079 extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
3080 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-rtems rs6000/t-ppccomm"
3083 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h rs6000/sysv4.h"
3084 extra_options="${extra_options} rs6000/sysv4.opt"
3085 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm"
3086 extra_objs="$extra_objs rs6000-linux.o"
3089 tm_file="${tm_file} rs6000/sysv4le.h" ;;
3091 case ${target}:${with_cpu} in
3092 powerpc64*: | powerpc64*:native) cpu_is_64bit=yes ;;
3094 maybe_biarch=${cpu_is_64bit}
3095 case ${enable_targets} in
3096 *powerpc64*) maybe_biarch=yes ;;
3097 all) maybe_biarch=yes ;;
3099 case ${target}:${enable_targets}:${maybe_biarch} in
3100 powerpc64-* | powerpc-*:*:yes | *:*powerpc64-*:yes | *:all:yes \
3101 | powerpc64le*:*powerpcle* | powerpc64le*:*powerpc-* \
3102 | powerpcle-*:*powerpc64le*:yes)
3103 if test x$cpu_is_64bit = xyes; then
3104 tm_file="${tm_file} rs6000/default64.h"
3106 tm_file="rs6000/biarch64.h ${tm_file} rs6000/linux64.h glibc-stdint.h"
3107 tmake_file="$tmake_file rs6000/t-linux64"
3110 tmake_file="$tmake_file rs6000/t-linux64le"
3111 case ${enable_targets} in
3112 all | *powerpc64-* | *powerpc-*)
3113 tmake_file="$tmake_file rs6000/t-linux64lebe" ;;
3116 case ${enable_targets} in
3117 all | *powerpc64le-* | *powerpcle-*)
3118 tmake_file="$tmake_file rs6000/t-linux64bele" ;;
3121 extra_options="${extra_options} rs6000/linux64.opt"
3124 tm_file="${tm_file} rs6000/default64.h rs6000/linux64.h glibc-stdint.h"
3125 extra_options="${extra_options} rs6000/linux64.opt"
3126 tmake_file="${tmake_file} rs6000/t-linux"
3129 tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
3130 tmake_file="${tmake_file} rs6000/t-ppcos rs6000/t-linux"
3134 powerpc*-*-linux*ppc476*)
3135 tm_file="${tm_file} rs6000/476.h"
3136 extra_options="${extra_options} rs6000/476.opt" ;;
3137 powerpc*-*-linux*altivec*)
3138 tm_file="${tm_file} rs6000/linuxaltivec.h" ;;
3142 enable_secureplt=yes ;;
3144 if test x${enable_secureplt} = xyes; then
3145 tm_file="rs6000/secureplt.h ${tm_file}"
3148 powerpc*-wrs-vxworks7r*)
3150 # Wind River 7 post SR0600 is mostly like Linux so we setup
3151 # our config in a very similar fashion and adjust to a few
3154 # The system compiler is configured with secureplt by default.
3155 tm_file="${tm_file} rs6000/secureplt.h"
3157 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h"
3158 tm_file="${tm_file} rs6000/sysv4.h rs6000/biarch64.h rs6000/default64.h rs6000/linux64.h"
3159 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3161 extra_options="${extra_options} rs6000/sysv4.opt linux.opt rs6000/linux64.opt"
3163 tmake_file="${tmake_file} t-linux rs6000/t-linux64 rs6000/t-fprules rs6000/t-ppccomm"
3164 tmake_file="${tmake_file} rs6000/t-vxworks"
3166 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
3167 extra_objs="$extra_objs linux.o rs6000-linux.o"
3169 powerpc-wrs-vxworks*)
3170 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h rs6000/sysv4.h"
3171 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm rs6000/t-vxworks"
3172 extra_options="${extra_options} rs6000/sysv4.opt vxworks-smp.opt"
3173 extra_headers="${extra_headers} ppc-asm.h"
3176 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksmils.h"
3177 tmake_file="${tmake_file} rs6000/t-vxworksmils"
3180 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksae.h"
3181 tmake_file="${tmake_file} rs6000/t-vxworksae"
3184 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3190 tm_file="${tm_file} elfos.h gnu-user.h rs6000/sysv4.h rs6000/lynx.h lynx.h"
3191 tmake_file="t-lynx rs6000/t-lynx"
3192 extra_options="${extra_options} rs6000/sysv4.opt lynx.opt"
3198 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h"
3199 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3200 extra_options="${extra_options} rs6000/sysv4.opt"
3202 powerpcle-*-eabisim*)
3203 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"
3204 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3205 extra_options="${extra_options} rs6000/sysv4.opt"
3209 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"
3210 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3211 extra_options="${extra_options} rs6000/sysv4.opt"
3215 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3216 tmake_file="${tmake_file} pru/t-pru"
3217 extra_objs="pru-pragma.o pru-passes.o"
3220 rs6000-ibm-aix7.1.* | powerpc-ibm-aix7.1.*)
3221 tmake_file="rs6000/t-aix52 t-slibgcc"
3222 if test x$cpu_is_64bit = xyes; then
3223 tm_file="${tm_file} rs6000/biarch64.h"
3224 tmake_file="rs6000/t-aix64 t-slibgcc"
3226 tm_file="${tm_file} rs6000/aix.h rs6000/aix71.h rs6000/xcoff.h rs6000/aix-stdint.h"
3227 extra_options="${extra_options} rs6000/aix64.opt"
3231 default_use_cxa_atexit=yes
3233 rs6000-ibm-aix7.2.* | powerpc-ibm-aix7.2.*)
3234 tmake_file="rs6000/t-aix52 t-slibgcc"
3235 if test x$cpu_is_64bit = xyes; then
3236 tm_file="${tm_file} rs6000/biarch64.h"
3237 tmake_file="rs6000/t-aix64 t-slibgcc"
3239 tm_file="${tm_file} rs6000/aix.h rs6000/aix72.h rs6000/xcoff.h rs6000/aix-stdint.h"
3240 extra_options="${extra_options} rs6000/aix64.opt"
3244 default_use_cxa_atexit=yes
3246 rs6000-ibm-aix[789].* | powerpc-ibm-aix[789].*)
3247 tmake_file="rs6000/t-aix52 t-slibgcc"
3248 if test x$cpu_is_64bit = xyes; then
3249 tm_file="${tm_file} rs6000/biarch64.h"
3250 tmake_file="rs6000/t-aix64 t-slibgcc"
3252 tm_file="${tm_file} rs6000/aix.h rs6000/aix73.h rs6000/xcoff.h rs6000/aix-stdint.h"
3253 extra_options="${extra_options} rs6000/aix64.opt"
3257 default_use_cxa_atexit=yes
3260 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3261 target_has_targetm_common=no
3262 c_target_objs="rl78-c.o"
3263 cxx_target_objs="rl78-c.o"
3264 tmake_file="${tmake_file} rl78/t-rl78"
3267 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3268 tmake_file="${tmake_file} rx/t-rx"
3269 extra_options="${extra_options} rx/elf.opt"
3272 tm_file="elfos.h linux.h glibc-stdint.h rx/linux.h ../../libgcc/config/rx/rx-abi.h"
3273 tmake_file="${tmake_file} rx/t-linux"
3276 tm_file="s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3277 c_target_objs="${c_target_objs} s390-c.o"
3278 cxx_target_objs="${cxx_target_objs} s390-c.o"
3279 if test x$enable_targets = xall; then
3280 tmake_file="${tmake_file} s390/t-linux64"
3282 tmake_file="${tmake_file} s390/t-s390"
3285 tm_file="s390/s390x.h s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3286 tm_p_file="linux-protos.h s390/s390-protos.h"
3287 c_target_objs="${c_target_objs} s390-c.o"
3288 cxx_target_objs="${cxx_target_objs} s390-c.o"
3289 md_file=s390/s390.md
3290 extra_modes=s390/s390-modes.def
3291 out_file=s390/s390.cc
3292 tmake_file="${tmake_file} s390/t-linux64 s390/t-s390"
3295 tm_file="s390/s390x.h s390/s390.h elfos.h glibc-stdint.h s390/tpf.h"
3296 tm_p_file=s390/s390-protos.h
3297 c_target_objs="${c_target_objs} s390-c.o"
3298 cxx_target_objs="${cxx_target_objs} s390-c.o"
3299 md_file=s390/s390.md
3300 extra_modes=s390/s390-modes.def
3301 out_file=s390/s390.cc
3303 extra_options="${extra_options} s390/tpf.opt"
3304 tmake_file="${tmake_file} s390/t-s390"
3306 sh-*-elf* | sh[12346l]*-*-elf* | \
3307 sh-*-linux* | sh[2346lbe]*-*-linux* | \
3308 sh-*-netbsdelf* | shl*-*-netbsdelf*)
3309 tmake_file="${tmake_file} sh/t-sh sh/t-elf"
3310 if test x${with_endian} = x; then
3312 sh[1234]*be-*-* | sh[1234]*eb-*-*) with_endian=big ;;
3313 shbe-*-* | sheb-*-*) with_endian=big,little ;;
3314 sh[1234]l* | sh[34]*-*-linux*) with_endian=little ;;
3315 shl* | sh*-*-linux* | \
3316 sh-superh-elf) with_endian=little,big ;;
3317 sh[1234]*-*-*) with_endian=big ;;
3318 *) with_endian=big,little ;;
3321 # TM_ENDIAN_CONFIG is used by t-sh to determine multilibs.
3322 # First word : the default endian.
3323 # Second word: the secondary endian (optional).
3324 case ${with_endian} in
3325 big) TM_ENDIAN_CONFIG=mb ;;
3326 little) TM_ENDIAN_CONFIG=ml ;;
3327 big,little) TM_ENDIAN_CONFIG="mb ml" ;;
3328 little,big) TM_ENDIAN_CONFIG="ml mb" ;;
3329 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
3331 case ${with_endian} in
3332 little*) tm_file="sh/little.h ${tm_file}" ;;
3334 tm_file="${tm_file} elfos.h sh/elf.h"
3336 sh*-*-linux*) tmake_file="${tmake_file} sh/t-linux"
3337 if test x$enable_fdpic = xyes; then
3338 tm_defines="$tm_defines FDPIC_DEFAULT=1"
3340 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h sh/linux.h" ;;
3342 tm_file="${tm_file} ${nbsd_tm_file} sh/netbsd-elf.h"
3343 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3346 sh*-superh-elf) if test x$with_libgloss != xno; then
3348 tm_file="${tm_file} sh/newlib.h"
3350 tm_file="${tm_file} sh/embed-elf.h"
3351 tm_file="${tm_file} sh/superh.h"
3352 extra_options="${extra_options} sh/superh.opt" ;;
3353 *) if test x$with_newlib = xyes \
3354 && test x$with_libgloss = xyes; then
3355 tm_file="${tm_file} sh/newlib.h"
3357 tm_file="${tm_file} sh/embed-elf.h" ;;
3363 tm_file="${tm_file} newlib-stdint.h"
3366 # sed el/eb endian suffixes away to avoid confusion with sh[23]e
3367 case `echo ${target} | sed 's/e[lb]-/-/'` in
3368 sh4a_single_only*) sh_cpu_target=sh4a-single-only ;;
3369 sh4a_single*) sh_cpu_target=sh4a-single ;;
3370 sh4a_nofpu*) sh_cpu_target=sh4a-nofpu ;;
3371 sh4al) sh_cpu_target=sh4al ;;
3372 sh4a*) sh_cpu_target=sh4a ;;
3373 sh4_single_only*) sh_cpu_target=sh4-single-only ;;
3374 sh4_single*) sh_cpu_target=sh4-single ;;
3375 sh4_nofpu*) sh_cpu_target=sh4-nofpu ;;
3376 sh4* | sh-superh-*) sh_cpu_target=sh4 ;;
3377 sh3e*) sh_cpu_target=sh3e ;;
3378 sh*-*-netbsd* | sh3*) sh_cpu_target=sh3 ;;
3379 sh2a_single_only*) sh_cpu_target=sh2a-single-only ;;
3380 sh2a_single*) sh_cpu_target=sh2a-single ;;
3381 sh2a_nofpu*) sh_cpu_target=sh2a-nofpu ;;
3382 sh2a*) sh_cpu_target=sh2a ;;
3383 sh2e*) sh_cpu_target=sh2e ;;
3384 sh2*) sh_cpu_target=sh2 ;;
3385 *) sh_cpu_target=sh1 ;;
3387 # did the user say --without-fp ?
3388 if test x$with_fp = xno; then
3389 case ${sh_cpu_target} in
3391 sh4a* ) sh_cpu_target=sh4a-nofpu ;;
3392 sh4*) sh_cpu_target=sh4-nofpu ;;
3393 sh3*) sh_cpu_target=sh3 ;;
3394 sh2a*) sh_cpu_target=sh2a-nofpu ;;
3395 sh2*) sh_cpu_target=sh2 ;;
3396 *) echo --without-fp not available for $target: ignored
3398 tm_defines="$tm_defines STRICT_NOFPU=1"
3400 sh_cpu_default="`echo $with_cpu|sed s/^m/sh/|tr A-Z_ a-z-`"
3401 case $sh_cpu_default in
3402 sh2a-single-only | sh2a-single | sh2a-nofpu | sh2a | \
3403 sh4a-single-only | sh4a-single | sh4a-nofpu | sh4a | sh4al | \
3404 sh4-single-only | sh4-single | sh4-nofpu | sh4 | sh4-300 | \
3405 sh3e | sh3 | sh2e | sh2 | sh1) ;;
3406 "") sh_cpu_default=${sh_cpu_target} ;;
3407 *) echo "with_cpu=$with_cpu not supported"; exit 1 ;;
3409 sh_multilibs=${with_multilib_list}
3410 if test "$sh_multilibs" = "default" ; then
3412 sh[1234]*) sh_multilibs=${sh_cpu_target} ;;
3413 sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
3414 sh*-*-linux*) sh_multilibs=m1,m2,m2a,m3e,m4 ;;
3415 sh*-*-netbsd*) sh_multilibs=m3,m3e,m4 ;;
3416 *) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single ;;
3418 if test x$with_fp = xno; then
3419 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`"
3422 target_cpu_default=SELECT_`echo ${sh_cpu_default}|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`
3423 tm_defines=${tm_defines}' SH_MULTILIB_CPU_DEFAULT=\"'`echo $sh_cpu_default|sed s/sh/m/`'\"'
3424 tm_defines="$tm_defines SUPPORT_`echo $sh_cpu_default | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3425 sh_multilibs=`echo $sh_multilibs | sed -e 's/,/ /g' -e 's/^[Ss][Hh]/m/' -e 's/ [Ss][Hh]/ m/g' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-`
3426 for sh_multilib in ${sh_multilibs}; do
3427 case ${sh_multilib} in
3428 m1 | m2 | m2e | m3 | m3e | \
3429 m4 | m4-single | m4-single-only | m4-nofpu | m4-300 |\
3430 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al | \
3431 m2a | m2a-single | m2a-single-only | m2a-nofpu)
3432 # TM_MULTILIB_CONFIG is used by t-sh for the non-endian multilib definition
3433 # It is passed to MULTIILIB_OPTIONS verbatim.
3434 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG}/${sh_multilib}"
3435 tm_defines="$tm_defines SUPPORT_`echo $sh_multilib | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3437 \!*) # TM_MULTILIB_EXCEPTIONS_CONFIG is used by t-sh
3438 # It is passed the MULTILIB_EXCEPTIONS verbatim.
3439 TM_MULTILIB_EXCEPTIONS_CONFIG="${TM_MULTILIB_EXCEPTIONS_CONFIG} `echo $sh_multilib | sed 's/^!//'`" ;;
3441 echo "with_multilib_list=${sh_multilib} not supported."
3446 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's:^/::'`
3447 if test x${enable_incomplete_targets} = xyes ; then
3448 tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1"
3450 tm_file="$tm_file ./sysroot-suffix.h"
3451 tmake_file="$tmake_file t-sysroot-suffix"
3454 tmake_file="${tmake_file} sh/t-sh sh/t-rtems"
3455 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h newlib-stdint.h"
3458 tmake_file="$tmake_file sh/t-sh sh/t-vxworks"
3459 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h vx-common.h vxworks.h sh/vxworks.h"
3462 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp-elf.h"
3465 tmake_file="sparc/t-sparc sparc/t-leon"
3468 tmake_file="sparc/t-sparc sparc/t-leon3"
3471 tmake_file="sparc/t-sparc sparc/t-elf"
3476 tm_file="${tm_file} elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
3477 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
3480 tm_file="${tm_file} elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
3481 extra_options="${extra_options} sparc/long-double-switch.opt"
3484 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon"
3487 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon3"
3490 tmake_file="${tmake_file} sparc/t-sparc"
3493 if test x$enable_targets = xall; then
3494 tm_file="sparc/biarch64.h ${tm_file} sparc/linux64.h"
3495 tmake_file="${tmake_file} sparc/t-linux64"
3497 tm_file="${tm_file} sparc/linux.h"
3498 tmake_file="${tmake_file} sparc/t-linux"
3502 tm_file="${tm_file} elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3503 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3504 extra_options="${extra_options} sparc/long-double-switch.opt"
3505 tmake_file="${tmake_file} sparc/t-sparc"
3508 tm_file="sparc/biarch64.h ${tm_file} ${sol2_tm_file} sparc/tso.h"
3510 sparc64-*-* | sparcv9-*-*)
3511 tm_file="sparc/default64.h ${tm_file}"
3514 test x$with_cpu != x || with_cpu=v9
3517 tmake_file="${tmake_file} sparc/t-sparc sparc/t-sol2"
3520 tm_file="${tm_file} elfos.h sparc/sysv4.h vx-common.h vxworks.h sparc/vxworks.h"
3521 tmake_file="${tmake_file} sparc/t-sparc sparc/t-vxworks"
3524 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h"
3525 extra_options="${extra_options}"
3526 tmake_file="${tmake_file} sparc/t-sparc"
3529 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h sparc/rtemself.h rtems.h"
3530 extra_options="${extra_options}"
3531 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
3534 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"
3535 extra_options="${extra_options} sparc/long-double-switch.opt"
3536 tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
3538 sparc64-*-freebsd*|ultrasparc-*-freebsd*)
3539 tm_file="${tm_file} ${fbsd_tm_file} elfos.h sparc/sysv4.h sparc/freebsd.h"
3540 extra_options="${extra_options} sparc/long-double-switch.opt"
3541 case "x$with_cpu" in
3543 x) with_cpu=ultrasparc ;;
3544 *) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
3546 tmake_file="${tmake_file} sparc/t-sparc"
3549 tm_file="sparc/biarch64.h ${tm_file}"
3550 tm_file="${tm_file} elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3551 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3552 extra_options="${extra_options} sparc/long-double-switch.opt"
3553 tmake_file="${tmake_file} sparc/t-sparc sparc/t-netbsd64"
3556 tm_file="sparc/openbsd1-64.h ${tm_file} elfos.h sparc/sysv4.h sparc/sp64-elf.h"
3557 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h sparc/openbsd64.h"
3558 extra_options="${extra_options} openbsd.opt"
3559 extra_options="${extra_options}"
3562 tmake_file="${tmake_file} sparc/t-sparc"
3565 tm_file="elfos.h ${tm_file} c6x/elf-common.h c6x/elf.h"
3566 tm_file="${tm_file} tm-dwarf2.h newlib-stdint.h"
3567 tmake_file="c6x/t-c6x c6x/t-c6x-elf"
3571 tm_file="elfos.h ${tm_file} gnu-user.h linux.h c6x/elf-common.h c6x/uclinux-elf.h"
3572 tm_file="${tm_file} tm-dwarf2.h glibc-stdint.h"
3573 tm_file="${tm_file} ./sysroot-suffix.h"
3574 tmake_file="t-sysroot-suffix t-slibgcc"
3575 tmake_file="${tmake_file} c6x/t-c6x c6x/t-c6x-elf c6x/t-c6x-uclinux"
3579 target_cpu_default="TARGET_CPU_generic"
3580 tm_file="elfos.h v850/v850.h"
3581 tm_file="${tm_file} v850/rtems.h rtems.h newlib-stdint.h"
3582 tmake_file="${tmake_file} v850/t-v850"
3583 tmake_file="${tmake_file} v850/t-rtems"
3585 c_target_objs="v850-c.o"
3586 cxx_target_objs="v850-c.o"
3591 target_cpu_default="TARGET_CPU_v850e3v5"
3594 target_cpu_default="TARGET_CPU_v850e2v3"
3597 target_cpu_default="TARGET_CPU_v850e2"
3599 v850e1-*-* | v850es-*-*)
3600 target_cpu_default="TARGET_CPU_v850e1"
3603 target_cpu_default="TARGET_CPU_v850e"
3606 target_cpu_default="TARGET_CPU_generic"
3609 tm_file="elfos.h newlib-stdint.h v850/v850.h"
3611 c_target_objs="v850-c.o"
3612 cxx_target_objs="v850-c.o"
3616 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h vax/elf.h vax/linux.h"
3617 extra_options="${extra_options} vax/elf.opt"
3620 tm_file="${tm_file} elfos.h ${nbsd_tm_file} vax/elf.h vax/netbsd-elf.h"
3621 extra_options="${extra_options} netbsd.opt netbsd-elf.opt vax/elf.opt"
3622 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
3625 tm_file="elfos.h ${tm_file} visium/elf.h newlib-stdint.h"
3626 tmake_file="visium/t-visium visium/t-crtstuff"
3629 # For historical reasons, the target files omit the 'x'.
3630 tm_file="elfos.h newlib-stdint.h stormy16/stormy16.h"
3631 tm_p_file=stormy16/stormy16-protos.h
3632 md_file=stormy16/stormy16.md
3633 out_file=stormy16/stormy16.cc
3634 extra_options=stormy16/stormy16.opt
3635 tmake_file="stormy16/t-stormy16"
3638 tm_file="${tm_file} elfos.h newlib-stdint.h xtensa/elf.h"
3639 extra_options="${extra_options} xtensa/elf.opt"
3642 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/linux.h"
3643 tmake_file="${tmake_file} xtensa/t-xtensa"
3646 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/uclinux.h"
3647 tmake_file="${tmake_file} xtensa/t-xtensa"
3648 extra_options="${extra_options} xtensa/uclinux.opt"
3651 tm_file="mn10300/mn10300.h elfos.h gnu-user.h linux.h glibc-stdint.h mn10300/linux.h"
3656 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3657 c_target_objs="m32c-pragma.o"
3658 cxx_target_objs="m32c-pragma.o"
3661 echo "*** Configuration ${target} not supported" 1>&2
3667 i[34567]86-*-linux* | x86_64-*-linux*)
3668 tmake_file="${tmake_file} i386/t-pmm_malloc i386/t-i386"
3670 i[34567]86-*-* | x86_64-*-*)
3671 tmake_file="${tmake_file} i386/t-gmm_malloc i386/t-i386"
3673 powerpc*-*-* | rs6000-*-*)
3674 tm_file="${tm_file} ${cpu_type}/option-defaults.h"
3680 tmake_file="${tmake_file} t-musl"
3683 tmake_file="${tmake_file} t-uclibc"
3687 # Assume the existence of indirect function support and allow the use of the
3688 # resolver attribute.
3690 *-*-linux*android*|*-*-linux*uclibc*|*-*-linux*musl*)
3692 *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
3694 *-*-linux* | *-*-gnu*)
3696 aarch64*-* | arm*-* | i[34567]86-* | powerpc*-* | s390*-* | sparc*-* | x86_64-* | loongarch*-*)
3697 default_gnu_indirect_function=yes
3703 if [ "$target_has_targetcm" = "no" ]; then
3704 c_target_objs="$c_target_objs default-c.o"
3705 cxx_target_objs="$cxx_target_objs default-c.o"
3708 if [ "$common_out_file" = "" ]; then
3709 if [ "$target_has_targetm_common" = "yes" ]; then
3710 common_out_file="$cpu_type/$cpu_type-common.cc"
3712 common_out_file="default-common.cc"
3716 if [ "$target_has_targetdm" = "no" ]; then
3717 d_target_objs="$d_target_objs default-d.o"
3720 if [ "$target_has_targetrustm" = "no" ]; then
3721 rust_target_objs="$rust_target_objs default-rust.o"
3724 # Support for --with-cpu and related options (and a few unrelated options,
3728 echo "--with-cpu must be passed a value" 1>&2
3733 # Set arch and cpu from ${target} and ${target_noncanonical}. Set cpu
3734 # to generic if there is no processor scheduler model for the target.
3737 arch_without_sse2=no
3738 arch_without_64bit=no
3741 if test $fbsd_major -ge 6; then
3747 arch_without_sse2=yes
3748 arch_without_64bit=yes
3753 arch_without_sse2=yes
3754 arch_without_64bit=yes
3759 arch_without_sse2=yes
3760 arch_without_64bit=yes
3765 arch_without_sse2=yes
3766 arch_without_64bit=yes
3769 arch_without_sse2=yes
3770 arch_without_64bit=yes
3771 case ${target_noncanonical} in
3784 pentium_mmx-*|winchip_c6-*|winchip2-*|c3-*)
3794 i686-*-* | i786-*-*)
3795 case ${target_noncanonical} in
3840 amdfam10-*|barcelona-*)
3844 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3848 k8-*|opteron-*|athlon64-*|athlon_fx-*)
3852 athlon_xp-*|athlon_mp-*|athlon_4-*)
3855 arch_without_sse2=yes
3856 arch_without_64bit=yes
3858 athlon_tbird-*|athlon-*)
3861 arch_without_sse2=yes
3866 arch_without_sse2=yes
3883 arch_without_sse2=yes
3885 pentium3-*|pentium3m-*)
3888 arch_without_sse2=yes
3890 pentium4-*|pentium4m-*)
3929 arch_without_sse2=yes
3934 arch_without_sse2=yes
3935 arch_without_64bit=yes
3940 case ${target_noncanonical} in
3985 amdfam10-*|barcelona-*)
3989 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3993 k8-*|opteron-*|athlon_64-*)
4037 # If there is no $with_cpu option, try to infer one from ${target}.
4038 # This block sets nothing except for with_cpu.
4039 if test x$with_cpu = x ; then
4041 i[34567]86-*-elfiamcu)
4044 i[34567]86-*-*|x86_64-*-*)
4062 frv-*-*linux* | frv400-*-*linux*)
4069 case "$with_arch" in
4071 with_cpu=${default_cf_cpu}
4074 with_cpu=m${default_m68k_cpu}
4090 with_cpu="`echo ${target} | sed 's/-.*$//'`"
4099 # Avoid overriding --with-cpu-32 and --with-cpu-64 values.
4101 i[34567]86-*-*|x86_64-*-*)
4102 if test x$with_cpu_32 != x || test x$with_cpu_64 != x; then
4103 if test x$with_cpu_32 = x; then
4104 with_cpu_32=$with_cpu
4106 if test x$with_cpu_64 = x; then
4107 with_cpu_64=$with_cpu
4115 # Support for --with-arch and related options (and a few unrelated options,
4117 case ${with_arch} in
4119 echo "--with-arch must be passed a value" 1>&2
4124 # If there is no $with_arch option, try to infer one from ${target}.
4125 # This block sets nothing except for with_arch.
4126 if test x$with_arch = x ; then
4128 i[34567]86-*-darwin*|x86_64-*-darwin*)
4129 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
4130 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
4132 i[34567]86-*-elfiamcu)
4136 # --with-fpmath sets the default ISA to SSE2, which is the same
4137 # ISA supported by Pentium 4.
4138 if test x$with_fpmath = x || test $arch_without_sse2 = no; then
4147 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4158 # Avoid overriding --with-arch-32 and --with-arch-64 values.
4160 i[34567]86-*-darwin*|x86_64-*-darwin*)
4161 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
4162 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
4164 i[34567]86-*-*|x86_64-*-*)
4165 if test x$with_arch_32 != x || test x$with_arch_64 != x; then
4166 if test x$with_arch_32 = x; then
4167 with_arch_32=$with_arch
4169 if test x$with_arch_64 = x; then
4170 if test $arch_without_64bit = yes; then
4171 # Set the default 64bit arch to x86-64 if the default arch
4172 # doesn't support 64bit.
4175 with_arch_64=$with_arch
4179 elif test $arch_without_64bit$need_64bit_isa = yesyes; then
4180 # Set the default 64bit arch to x86-64 if the default arch
4181 # doesn't support 64bit and we need 64bit ISA.
4182 with_arch_32=$with_arch
4190 # Infer a default setting for --with-float.
4191 if test x$with_float = x; then
4193 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4194 # The R5900 doesn't support 64-bit float. 32-bit float doesn't
4195 # comply with IEEE 754.
4201 # Infer a default setting for --with-fpu.
4202 if test x$with_fpu = x; then
4204 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4205 # The R5900 FPU only supports single precision.
4211 # Support --with-fpmath.
4212 if test x$with_fpmath != x; then
4214 i[34567]86-*-* | x86_64-*-*)
4215 case ${with_fpmath} in
4217 tm_file="${tm_file} i386/avxmath.h"
4220 tm_file="${tm_file} i386/ssemath.h"
4223 echo "Invalid --with-fpmath=$with_fpmath" 1>&2
4229 echo "--with-fpmath isn't supported for $target." 1>&2
4235 # Similarly for --with-schedule.
4236 if test x$with_schedule = x; then
4239 # Override default PA8000 scheduling model.
4240 with_schedule=7100LC
4245 # Infer a default setting for --with-llsc.
4246 if test x$with_llsc = x; then
4249 # The kernel emulates LL and SC where necessary.
4252 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4253 # The R5900 doesn't support LL(D) and SC(D).
4259 # Validate and mark as valid any --with options supported
4260 # by this target. In order to use a particular --with option
4261 # you must list it in supported_defaults; validating the value
4262 # is optional. This case statement should set nothing besides
4263 # supported_defaults.
4268 supported_defaults="abi cpu cpu_64 arch arch_64 tune tune_64"
4269 if test x$with_cpu_64 != x && test x$with_cpu = x; then
4270 with_cpu=$with_cpu_64
4272 if test x$with_arch_64 != x && test x$with_arch = x; then
4273 with_arch=$with_arch_64
4275 if test x$with_tune_64 != x && test x$with_tune = x; then
4276 with_tune=$with_tune_64
4278 for which in cpu arch tune; do
4279 eval "val=\$with_$which"
4280 base_val=`echo $val | sed -E -e 's/\+.*//'`
4281 ext_val=`echo $val | sed -E -e 's/[a-z0-9.-]+//'`
4283 if [ $which = arch ]; then
4284 def=aarch64-arches.def
4285 pattern=AARCH64_ARCH
4287 def=aarch64-cores.def
4288 pattern=AARCH64_CORE
4291 # Find the base CPU or ARCH id in aarch64-cores.def or
4292 # aarch64-arches.def
4293 if [ x"$base_val" = x ] \
4294 || grep "^$pattern(\"$base_val\"," \
4295 ${srcdir}/config/aarch64/$def \
4298 # Disallow extensions in --with-tune=cortex-a53+crc.
4299 if [ $which = tune ] && [ x"$ext_val" != x ]; then
4300 echo "Architecture extensions not supported in --with-$which=$val" 1>&2
4304 # Use the pre-processor to strip flatten the options.
4305 # This makes the format less rigid than if we use
4306 # grep and sed directly here.
4307 opt_macro="AARCH64_OPT_EXTENSION(A, B, C, D, E, F)=A, B, C, D, E, F"
4308 options_parsed="`$ac_cv_prog_CPP -D"$opt_macro" -x c \
4309 ${srcdir}/config/aarch64/aarch64-option-extensions.def`"
4311 while [ x"$ext_val" != x ]
4313 ext_val=`echo $ext_val | sed -E -e 's/\+//'`
4314 ext=`echo $ext_val | sed -E -e 's/\+.*//'`
4315 base_ext=`echo $ext | sed -E -e 's/^no//'`
4316 opt_line=`echo -e "$options_parsed" | \
4317 grep "^\"$base_ext\""`
4319 if [ x"$base_ext" = x ] \
4320 || [ x"$opt_line" != x ]; then
4323 echo "Unknown extension used in --with-$which=$val" 1>&2
4326 ext_val=`echo $ext_val | sed -E -e 's/[a-z0-9]+//'`
4331 # Allow --with-$which=native.
4332 if [ "$val" = native ]; then
4335 echo "Unknown $which used in --with-$which=$val" 1>&2
4343 supported_defaults="cpu tune"
4344 for which in cpu tune; do
4345 eval "val=\$with_$which"
4348 | ev4 | ev45 | 21064 | ev5 | 21164 | ev56 | 21164a \
4349 | pca56 | 21164PC | 21164pc | ev6 | 21264 | ev67 \
4353 echo "Unknown CPU used in --with-$which=$val" 1>&2
4361 supported_defaults="cpu fpu"
4364 if [ x"$with_cpu" = x ] \
4365 || grep -q -E "^ARC_CPU[[:blank:]]*\($with_cpu," \
4366 ${srcdir}/config/arc/arc-cpus.def
4371 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4375 # see if --with-fpu matches any of the supported FPUs
4380 fpus | fpus_div | fpus_fma | fpus_all)
4384 fpuda | fpuda_div | fpuda_fma | fpuda_all)
4388 fpud | fpud_div | fpud_fma | fpud_all)
4393 echo "Unknown floating point type used in "\
4394 "--with-fpu=$with_fpu" 1>&2
4399 if [ -n "$flags_ok" ] \
4400 && ! grep -q -E "^ARC_CPU[[:blank:]]*\($new_cpu,[[:blank:]]*$flags_ok," \
4401 ${srcdir}/config/arc/arc-cpus.def
4403 echo "Unknown floating point type used in "\
4404 "--with-fpu=$with_fpu for cpu $new_cpu" 1>&2
4410 # Handle --with-multilib-list.
4411 if test "x${with_multilib_list}" != xdefault; then
4412 TM_MULTILIB_CONFIG="${with_multilib_list}"
4417 supported_defaults="cpu endian float"
4421 supported_defaults="arch cpu float tune fpu abi mode tls"
4422 for which in cpu tune arch; do
4423 # See if it matches a supported value
4424 eval "val=\$with_$which"
4425 if [ x"$val" != x ]; then
4426 cpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4427 -v cmd="chk$which $val" \
4428 ${srcdir}/config/arm/arm-cpus.in`
4429 if [ "$cpu" = "error" ]; then
4430 echo "Unknown target in --with-$which=$val" 1>&2
4434 eval "target_${which}_cname=$new_val"
4435 echo "For $val real value is $new_val"
4440 case "$with_float" in
4442 | soft | hard | softfp)
4446 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4451 # see if --with-fpu matches any of the supported FPUs
4452 if [ x"$with_fpu" != x ] ; then
4454 fpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4455 -v cmd="chkfpu $val" \
4456 ${srcdir}/config/arm/arm-cpus.in`
4457 if [ "$fpu" = "error" ]
4459 echo "Unknown target in --with-fpu=$val" 1>&2
4466 | apcs-gnu | atpcs | aapcs | iwmmxt | aapcs-linux )
4470 echo "Unknown ABI used in --with-abi=$with_abi"
4475 case "$with_mode" in
4481 echo "Unknown mode used in --with-mode=$with_mode"
4492 echo "Unknown TLS method used in --with-tls=$with_tls" 1>&2
4497 if test "x$with_arch" != x && test "x$with_cpu" != x; then
4498 echo "Switch \"--with-arch\" may not be used with switch \"--with-cpu\"" 1>&2
4502 if test "x$with_cpu" != x && test "x$with_tune" != x; then
4503 echo "Switch \"--with-tune\" may not be used with switch \"--with-cpu\"" 1>&2
4507 # Add extra multilibs
4508 if test "x$with_multilib_list" != x; then
4510 arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
4511 if test "x${arm_multilibs}" != xdefault ; then
4512 for arm_multilib in ${arm_multilibs}; do
4513 case ${arm_multilib} in
4515 tmake_profile_file="arm/t-multilib"
4516 tm_mlib_file="arm/arm-mlib.h"
4519 ml=`echo "X$arm_multilib" | sed '1s,^X@,,'`
4520 if test -f "${srcdir}/config/arm/${ml}"; then
4521 tmake_file="${tmake_file} arm/${ml}"
4523 echo "Error: ${ml} does not exist in ${srcdir}/config/arm" >&2
4528 echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2
4535 if test "x${tmake_profile_file}" != x ; then
4536 # arm/t-aprofile and arm/t-rmprofile are only
4537 # designed to work without any with-cpu,
4538 # with-arch, with-mode, with-fpu or with-float
4540 if test "x$with_arch" != x \
4541 || test "x$with_cpu" != x \
4542 || test "x$with_float" != x \
4543 || test "x$with_fpu" != x \
4544 || test "x$with_mode" != x ; then
4545 echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=${with_multilib_list}" 1>&2
4547 elif test "x$ml" != x ; then
4548 echo "Error: You cannot use builtin multilib profiles along with custom ones" 1>&2
4551 # But pass the default value for float-abi
4552 # through to the multilib selector
4554 tmake_file="${tmake_file} ${tmake_profile_file}"
4555 tm_file="$tm_file $tm_mlib_file"
4556 TM_MULTILIB_CONFIG="$with_multilib_list"
4559 target_cpu_cname=${target_cpu_cname:-arm7tdmi}
4560 with_cpu=${with_cpu:-$target_cpu_cname}
4564 supported_defaults=cpu
4569 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4575 fido-*-* | m68k*-*-*)
4576 supported_defaults="arch cpu"
4577 case "$with_arch" in
4579 m68k_arch_family="$with_arch"
4582 echo "Invalid --with-arch=$with_arch" 1>&2
4587 # We always have a $with_cpu setting here.
4589 "m68000" | "m68010" | "m68020" | "m68030" | "m68040" | "m68060")
4590 m68k_cpu_ident=$with_cpu
4593 m68k_cpu_ident=m68020
4594 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_40"
4597 m68k_cpu_ident=m68020
4598 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_60"
4601 # We need the C identifier rather than the string.
4602 m68k_cpu_ident=`awk -v arg="\"$with_cpu\"" \
4603 'BEGIN { FS="[ \t]*[,()][ \t]*" }; \
4604 $1 == "M68K_DEVICE" && $2 == arg { print $3 }' \
4605 ${srcdir}/config/m68k/m68k-devices.def`
4606 if [ x"$m68k_cpu_ident" = x ] ; then
4607 echo "Unknown CPU used in --with-cpu=$with_cpu" 1>&2
4610 with_cpu="mcpu=$with_cpu"
4616 supported_defaults="arch tune"
4618 for which in arch tune; do
4619 eval "val=\$with_$which"
4621 "" | gfx900 | gfx906 | gfx908 | gfx90a | gfx90c | gfx1030 | gfx1036 | gfx1100 | gfx1103)
4625 echo "Unknown cpu used in --with-$which=$val." 1>&2
4630 [ "x$with_arch" = x ] && with_arch=gfx900
4632 case "x${with_multilib_list}" in
4637 TM_MULTILIB_CONFIG=`echo "gfx900,gfx906,gfx908,gfx90a,gfx90c,gfx1030,gfx1036,gfx1100,gfx1103" | sed "s/${with_arch},\?//;s/,$//"`
4640 TM_MULTILIB_CONFIG="${with_multilib_list}"
4646 supported_defaults="arch schedule"
4648 case "$with_arch" in
4649 "" | 1.0 | 1.1 | 2.0)
4653 echo "Unknown architecture used in --with-arch=$with_arch" 1>&2
4658 case "$with_schedule" in
4659 "" | 700 | 7100 | 7100LC | 7200 | 7300 | 8000)
4663 echo "Unknown processor used in --with-schedule=$with_schedule." 1>&2
4669 i[34567]86-*-* | x86_64-*-*)
4670 supported_defaults="abi arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64"
4671 for which in arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64; do
4672 eval "val=\$with_$which"
4673 case " $x86_archs " in
4681 echo "CPU given in --with-$which=$val doesn't support 64bit mode." 1>&2
4690 if test x${val} != x; then
4691 case " $x86_64_archs " in
4693 # Disallow x86-64-v* for --with-cpu=/--with-tune=
4694 case "x$which$val" in
4695 xcpu*x86-64-v*|xtune*x86-64-v*)
4696 echo "Unknown CPU given in --with-$which=$val." 1>&2
4705 # Allow $x86_cpus --with-cpu=/--with-tune=
4708 case " $x86_cpus " in
4713 echo "Unknown CPU given in --with-$which=$val." 1>&2
4719 echo "Unknown CPU given in --with-$which=$val." 1>&2
4732 supported_defaults="abi arch tune riscv_attribute isa_spec tls"
4735 riscv-* | riscv32*) xlen=32 ;;
4736 riscv64*) xlen=64 ;;
4737 *) echo "Unsupported RISC-V target ${target}" 1>&2; exit 1 ;;
4740 case "${with_isa_spec}" in
4741 ""|default|20191213|201912)
4742 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20191213"
4743 with_isa_spec=20191213
4746 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_2P2"
4749 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20190608"
4750 with_isa_spec=20190608
4753 echo "--with-isa-spec only accept 2.2, 20191213, 201912, 20190608 or 201906" 1>&2
4757 case "${with_riscv_attribute}" in
4759 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4762 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=0"
4765 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4768 echo "--with-riscv-attribute=${with_riscv_attribute} is not supported. The argument must begin with yes, no or default." 1>&2
4774 # Infer arch from --with-arch, --target, and --with-abi.
4775 case "${with_arch}" in
4776 rv32e* | rv32i* | rv32g* | rv64e* | rv64i* | rv64g*)
4780 # Infer XLEN, but otherwise assume GC.
4781 case "${with_abi}" in
4782 ilp32e) with_arch="rv32e" ;;
4783 ilp32 | ilp32f | ilp32d) with_arch="rv32gc" ;;
4784 lp64 | lp64f | lp64d) with_arch="rv64gc" ;;
4785 lp64e) with_arch="rv64e" ;;
4786 *) with_arch="rv${xlen}gc" ;;
4790 echo "--with-arch=${with_arch} is not supported. The argument must begin with rv32e, rv32i, rv32g, rv64e, rv64i, or rv64g." 1>&2
4794 PYTHON=`which python || which python3 || which python2`
4795 if test "x${PYTHON}" != x; then
4796 with_arch=`${PYTHON} ${srcdir}/config/riscv/arch-canonicalize -misa-spec=${with_isa_spec} ${with_arch}`
4798 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ARCH=${with_arch}"
4800 # Make sure --with-abi is valid. If it was not specified,
4801 # pick a default based on the ISA, preferring soft-float
4802 # unless the D extension is present.
4803 case "${with_abi}" in
4804 ilp32 | ilp32e | ilp32f | ilp32d | lp64 | lp64e | lp64f | lp64d)
4807 case "${with_arch}" in
4808 rv32*d* | rv32g*) with_abi=ilp32d ;;
4809 rv32e*) with_abi=ilp32e ;;
4810 rv32*) with_abi=ilp32 ;;
4811 rv64*d* | rv64g*) with_abi=lp64d ;;
4812 rv64e*) with_abi=lp64e ;;
4813 rv64*) with_abi=lp64 ;;
4817 echo "--with-abi=${with_abi} is not supported" 1>&2
4821 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ABI=${with_abi}"
4823 # Make sure ABI and ISA are compatible.
4824 case "${with_abi},${with_arch}" in
4825 ilp32,rv32* | ilp32e,rv32e* \
4826 | ilp32f,rv32*f* | ilp32f,rv32g* \
4827 | ilp32d,rv32*d* | ilp32d,rv32g* \
4828 | lp64,rv64* | lp64e,rv64e* \
4829 | lp64f,rv64*f* | lp64f,rv64g* \
4830 | lp64d,rv64*d* | lp64d,rv64g*)
4833 echo "--with-abi=${with_abi} is not supported for ISA ${with_arch}" 1>&2
4837 # Handle --with-multilib-generator.
4838 if test "x${with_multilib_generator}" != xdefault; then
4839 if test "x${with_multilib_list}" != xdefault; then
4840 echo "--with-multilib-list= can't used with --with-multilib-generator= at same time" 1>&2
4845 if ${srcdir}/config/riscv/multilib-generator \
4846 -misa-spec=${with_isa_spec} \
4847 `echo ${with_multilib_generator} | sed 's/;/ /g'`\
4848 > t-multilib-config;
4850 tmake_file="${tmake_file} riscv/t-withmultilib-generator"
4852 echo "invalid option for --with-multilib-generator" 1>&2
4857 echo "--with-multilib-generator= is not supported for ${target}, only supported for riscv*-*-elf*" 1>&2
4862 # Handle --with-tls.
4869 echo "Unknown TLS method used in --with-tls=$with_tls" 1>&2
4874 # Handle --with-multilib-list.
4875 if test "x${with_multilib_list}" != xdefault; then
4876 tmake_file="${tmake_file} riscv/t-withmultilib"
4878 case ${with_multilib_list} in
4879 ilp32 | ilp32f | ilp32d \
4880 | lp64 | lp64f | lp64d )
4881 TM_MULTILIB_CONFIG="${with_arch},${with_multilib_list}"
4884 echo "--with-multilib-list=${with_multilib_list} not supported."
4891 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"
4893 case ${with_float} in
4898 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4904 "" | single | double)
4908 echo "Unknown fpu type used in --with-fpu=$with_fpu" 1>&2
4918 echo "Unknown NaN encoding used in --with-nan=$with_nan" 1>&2
4923 case ${with_fp_32} in
4928 echo "Unknown FP mode used in --with-fp-32=$with_fp_32" 1>&2
4933 case ${with_odd_spreg_32} in
4935 with_odd_spreg_32="odd-spreg"
4938 with_odd_spreg_32="no-odd-spreg"
4944 echo "Unknown odd-spreg-32 type used in --with-odd-spreg-32=$with_odd_spreg_32" 1>&2
4950 "" | 32 | o64 | n32 | 64 | eabi)
4954 echo "Unknown ABI used in --with-abi=$with_abi" 1>&2
4959 case ${with_divide} in
4960 "" | breaks | traps)
4964 echo "Unknown division check type use in --with-divide=$with_divide" 1>&2
4969 case ${with_llsc} in
4980 echo "Unknown llsc type used in --with-llsc" 1>&2
4985 case ${with_mips_plt} in
4990 with_mips_plt=no-plt
4995 echo "Unknown --with-mips-plt argument: $with_mips_plt" 1>&2
5000 case ${with_synci} in
5010 echo "Unknown synci type used in --with-synci" 1>&2
5015 case ${with_lxc1_sxc1} in
5017 with_lxc1_sxc1=lxc1-sxc1
5020 with_lxc1_sxc1=no-lxc1-sxc1
5025 echo "Unknown lxc1-sxc1 type used in --with-lxc1-sxc1" 1>&2
5030 case ${with_madd4} in
5040 echo "Unknown madd4 type used in --with-madd4" 1>&2
5045 case ${with_compact_branches} in
5046 "" | never | always | optimal)
5049 echo "Unknown compact-branches policy used in --with-compact-branches" 1>&2
5064 echo "Unknown msa type used in --with-msa" 1>&2
5071 supported_defaults="abi arch tune fpu simd multilib-default strict-align-lib tls"
5076 arch_pattern arch_default \
5077 fpu_pattern fpu_default \
5078 triplet_os triplet_abi \
5081 # --with-abi is now obsolete, emit a warning if given.
5085 echo "warning: --with-abi= is now obsolete," \
5086 "the default ABI is derived from your target" \
5087 "triplet ${target}" 1>&2
5091 # Infer ABI from the triplet.
5093 loongarch64-*f64) abi_base="lp64d"; abi_ext="base" ;;
5094 loongarch64-*f32) abi_base="lp64f"; abi_ext="base" ;;
5095 loongarch64-*sf) abi_base="lp64s"; abi_ext="base" ;;
5096 loongarch64-*) abi_base="lp64d"; abi_ext="base" ;;
5098 echo "Unsupported target ${target}." 1>&2
5103 # Get the canonical triplet (multiarch specifier).
5104 case ${abi_base},${abi_ext} in
5105 lp64d,base) triplet_abi="";;
5106 lp64f,base) triplet_abi="f32";;
5107 lp64s,base) triplet_abi="sf";;
5111 *-linux-gnu*) triplet_os="linux-gnu";;
5112 *-linux-musl*) triplet_os="linux-musl";;
5113 *-elf*) triplet_os="elf";;
5115 echo "Unsupported target ${target}." 1>&2
5119 la_canonical_triplet="loongarch64-${triplet_os}${triplet_abi}"
5122 # Perform initial sanity checks on --with-* options.
5123 case ${with_arch} in
5124 "" | la64v1.[01] | abi-default | loongarch64 | la[46]64) ;; # OK, append here.
5126 if test x${host} != x${target}; then
5127 echo "--with-arch=native is illegal for cross-compiler." 1>&2
5132 echo "Unknown arch in --with-arch=$with_arch" 1>&2
5139 "" | none | 32 | 64) ;; # OK, append here.
5141 # Convert "0" to "none" for upcoming checks.
5145 echo "Unknown fpu type in --with-fpu=$with_fpu" 1>&2
5150 case ${with_simd} in
5152 lsx | lasx) # OK, append here.
5157 echo "--with-simd=${with_simd} conflicts with --with-fpu=${with_fpu}" 1>&2
5164 echo "Unknown SIMD extension in --with-simd=$with_simd" 1>&2
5169 # Infer ISA-related default options from the ABI: pass 1
5170 case ${abi_base}/${abi_ext} in
5172 # architectures that support lp64* ABI
5173 arch_pattern="native|abi-default|la64v1.[01]|loongarch64|la[46]64"
5175 # default architecture for lp64d ABI
5176 arch_default="la64v1.0"
5179 # architectures that support lp64* ABI
5180 arch_pattern="native|abi-default|la64v1.[01]|loongarch64|la[46]64"
5182 # default architecture for lp64[fs] ABI
5183 arch_default="abi-default"
5186 echo "Unsupported ABI type ${abi_base}/${abi_ext}." 1>&2
5191 # Infer ISA-related default options from the ABI: pass 2
5192 case ${abi_base}/${abi_ext} in
5201 fpu_pattern="none|32|64"
5205 echo "Unsupported ABI type ${abi_base}/${abi_ext}." 1>&2
5210 ## Set default value for with_arch.
5211 case ${with_arch} in
5213 if test x${arch_default} != x; then
5214 with_arch=${arch_default}
5216 with_arch=${arch_pattern}
5221 if echo "${with_arch}" | grep -E "^${arch_pattern}$" > /dev/null; then
5224 echo "${abi_base}/${abi_ext} ABI cannot be implemented with" \
5225 "--with-arch=${with_arch}." 1>&2
5231 ## Set default value for with_fpu.
5234 if test x${fpu_default} != x; then
5235 with_fpu=${fpu_default}
5237 with_fpu=${fpu_pattern}
5242 if echo "${with_fpu}" | grep -E "^${fpu_pattern}$" > /dev/null; then
5245 echo "${abi_base}/${abi_ext} ABI cannot be implemented with" \
5246 "--with-fpu=${with_fpu}." 1>&2
5253 # Check default with_tune configuration using with_arch.
5254 tune_pattern="native|generic|loongarch64|la[46]64"
5256 case ${with_tune} in
5259 if echo "${with_tune}" | grep -E "^${tune_pattern}$" > /dev/null; then
5262 echo "Incompatible options: --with-tune=${with_tune}" \
5263 "and --with-arch=${with_arch}." 1>&2
5269 # Build libraries with -mstrict-align if --with-strict-align-lib is given.
5270 case ${with_strict_align_lib} in
5271 yes) strict_align_opt="/mstrict-align" ;;
5274 echo "Unknown option: --with-strict-align-lib=${with_strict_align_lib}" 1>&2
5280 # Handle --with-multilib-default
5281 if echo "${with_multilib_default}" \
5282 | grep -E -e '[[:space:]]' -e '//' -e '/$' -e '^/' > /dev/null 2>&1; then
5283 echo "Invalid argument to --with-multilib-default." 1>&2
5287 if test x${with_multilib_default} = x; then
5288 # Use -march=abi-default by default when building libraries.
5289 with_multilib_default="/march=abi-default"
5291 unset parse_state component
5293 for component in $(echo "${with_multilib_default}" | tr '/' ' '); do
5294 case ${parse_state},${component} in
5295 arch,|arch,abi-default)
5296 # ABI-default: use the ABI's default ARCH configuration for
5297 # multilib library builds, unless otherwise specified
5298 # in --with-multilib-list.
5299 with_multilib_default="/march=abi-default" ;;
5301 # Fixed: use the default gcc configuration for all multilib
5302 # builds by default.
5303 with_multilib_default="" ;;
5304 arch,native|arch,la64v1.[01]|arch,loongarch64|arch,la[46]64) # OK, append here.
5305 with_multilib_default="/march=${component}" ;;
5307 with_multilib_default="/march=abi-default"
5308 with_multilib_default="${with_multilib_default}/${component}" ;;
5310 with_multilib_default="${with_multilib_default}/${component}" ;;
5313 if test x${parse_state} = xarch; then
5317 unset parse_state component
5320 # Handle --with-multilib-list.
5321 if test x"${with_multilib_list}" = x \
5322 || test x"${with_multilib_list}" = xno \
5323 || test x"${with_multilib_list}" = xdefault \
5324 || test x"${enable_multilib}" != xyes; then
5326 with_multilib_list="${abi_base}/${abi_ext}"
5329 # Handle --with-tls.
5336 echo "Unknown TLS method used in --with-tls=$with_tls" 1>&2
5341 # Check if the configured default ABI combination is included in
5342 # ${with_multilib_list}.
5343 loongarch_multilib_list_sane=no
5345 # This one goes to TM_MULTILIB_CONFIG, for use in t-linux.
5346 loongarch_multilib_list_make="${abi_base},"
5348 # This one goes to tm_defines, for use in loongarch-driver.c.
5349 loongarch_multilib_list_c=""
5351 # ${with_multilib_list} should not contain whitespaces,
5352 # consecutive commas or slashes.
5353 if echo "${with_multilib_list}" \
5354 | grep -E -e "[[:space:]]" -e '[,/][,/]' -e '[,/]$' -e '^[,/]' > /dev/null 2>&1; then
5355 echo "Invalid argument to --with-multilib-list." 1>&2
5359 unset component elem_abi_base elem_abi_ext elem_tmp parse_state all_abis
5360 for elem in $(echo "${with_multilib_list}" | tr ',' ' '); do
5361 unset elem_abi_base elem_abi_ext
5362 parse_state="abi-base"
5364 for component in $(echo "${elem}" | tr '/' ' '); do
5365 if test x${parse_state} = x"abi-base"; then
5367 case ${component} in
5368 lp64d | lp64f | lp64s) elem_tmp="ABI_BASE_$(echo ${component} | tr a-z A-Z),";;
5370 echo "Unknown base ABI \"${component}\" in --with-multilib-list." 1>&2
5374 loongarch_multilib_list_c="${loongarch_multilib_list_c}${elem_tmp}"
5375 loongarch_multilib_list_make="${loongarch_multilib_list_make}mabi=${component}"
5376 elem_abi_base="${component}"
5378 parse_state="abi-ext"
5382 if test x${parse_state} = x"abi-ext"; then
5383 # ABI extension type
5384 case ${component} in
5387 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5388 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5394 # The default ABI extension is "base" if unspecified.
5396 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5397 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5401 if test x${parse_state} = x"arch"; then
5403 case ${component} in
5404 native | abi-default | la64v1.[01] | loongarch64 | la[46]64) # OK, append here.
5405 # Append -march spec for each multilib variant.
5406 loongarch_multilib_list_make="${loongarch_multilib_list_make}/march=${component}"
5412 # "/default" is equivalent to --with-multilib-default=fixed
5418 # If ARCH is unspecified for this multilib variant, use ${with_multllib_default}.
5419 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5423 if test x${parse_state} = x"opts"; then
5424 # Other compiler options for building libraries.
5425 # (no static sanity check performed)
5426 case ${component} in
5428 # Append other components as additional build options
5429 # (without the prepending dash).
5430 # Their validity should be examined by the compiler.
5431 loongarch_multilib_list_make="${loongarch_multilib_list_make}/${component}"
5437 case ${parse_state} in
5440 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5441 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5442 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5445 # If ARCH is unspecified for this multilib variant, use ${with_multllib_default}.
5446 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5453 # Use mstrict-align for building libraries if --with-strict-align-lib is given.
5454 loongarch_multilib_list_make="${loongarch_multilib_list_make}${strict_align_opt}"
5456 # Check for repeated configuration of the same multilib variant.
5457 if echo "${elem_abi_base}/${elem_abi_ext}" \
5458 | grep -E "^(${all_abis%|})$" >/dev/null 2>&1; then
5459 echo "Repeated multilib config of \"${elem_abi_base}/${elem_abi_ext}\" in --with-multilib-list."
5462 all_abis="${all_abis}${elem_abi_base}/${elem_abi_ext}|"
5465 # Check if the default ABI configuration of the GCC binary
5466 # is included in the enabled multilib variants.
5467 if test x${elem_abi_base} = x${abi_base} \
5468 && test x${elem_abi_ext} = x${abi_ext}; then
5469 loongarch_multilib_list_sane=yes
5471 loongarch_multilib_list_make="${loongarch_multilib_list_make},"
5473 unset component elem_abi_base elem_abi_ext elem_tmp parse_state all_abis
5476 # Check if the default ABI combination is in the default list.
5477 if test x${loongarch_multilib_list_sane} = xno; then
5478 if test x${abi_ext} = xbase; then
5481 abi_ext="/${abi_ext}"
5484 echo "Default ABI combination (${abi_base}${abi_ext})" \
5485 "not found in --with-multilib-list." 1>&2
5489 # Remove the excessive appending comma.
5490 loongarch_multilib_list_c=${loongarch_multilib_list_c%,}
5491 loongarch_multilib_list_make=${loongarch_multilib_list_make%,}
5495 supported_defaults="arch cpu nds32_lib float fpu_config"
5497 # process --with-arch
5498 case "${with_arch}" in
5500 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5504 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5507 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=1"
5510 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=2"
5514 echo "Cannot accept --with-arch=$with_arch, available values are: v2 v2j v3 v3m v3f v3s" 1>&2
5519 case "${with_cpu}" in
5523 n6 | n7 |n8 | e8 | s8 | n9 | n10 | d10 | n12 | n13 | n15)
5527 echo "Cannot accept --with-cpu=$with_cpu, available values are: n6 n7 n8 e8 s8 n9 n10 d10 n12 n13 n15" 1>&2
5532 # process --with-nds32-lib
5533 case "${with_nds32_lib}" in
5537 with_nds32_lib=ulibc
5540 with_nds32_lib=glibc
5543 with_nds32_lib=newlib
5544 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5550 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5554 # for the arch=v3f or arch=v3s under mculib toolchain,
5555 # we would like to set -fno-math-errno as default
5556 case "${with_arch}" in
5558 tm_defines="${tm_defines} TARGET_DEFAULT_NO_MATH_ERRNO=1"
5566 echo "Cannot accept --with-nds32-lib=$with_nds32_lib, available values are: newlib mculib glibc uclibc" 1>&2
5571 # process --with-float
5572 case "${with_float}" in
5577 echo "Cannot accept --with-float=$with_float, available values are: soft hard" 1>&2
5582 # process --with-config-fpu
5583 case "${with_config_fpu}" in
5588 echo "Cannot accept --with-config-fpu=$with_config_fpu, available values from 0 to 7" 1>&2
5596 supported_defaults="arch"
5597 case "$with_arch" in
5602 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5609 supported_defaults=arch
5610 TM_MULTILIB_CONFIG=$with_arch
5611 #TODO 'sm_[...]' list per 'nvptx-sm.def'.
5616 sm_35 | sm_53 | sm_70 | sm_75 | sm_80 )
5617 # OK, but we'd like 'sm_30', too.
5618 TM_MULTILIB_CONFIG="$TM_MULTILIB_CONFIG sm_30"
5621 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5627 powerpc*-*-* | rs6000-*-*)
5628 supported_defaults="abi cpu cpu_32 cpu_64 float tune tune_32 tune_64 advance_toolchain"
5630 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5631 eval "val=\$with_$which"
5633 default32 | default64)
5638 echo "$val only valid for --with-cpu and --with-tune." 1>&2
5642 with_which="with_$which"
5646 tm_defines="${tm_defines} CONFIG_PPC405CR"
5647 eval "with_$which=405"
5649 "" | common | native \
5650 | power[3456789] | power1[01] | power5+ | power6x \
5651 | powerpc | powerpc64 | powerpc64le \
5653 | 401 | 403 | 405 | 405fp | 440 | 440fp | 464 | 464fp \
5654 | 476 | 476fp | 505 | 601 | 602 | 603 | 603e | ec603e \
5655 | 604 | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 \
5656 | a2 | e300c[23] | 854[08] | e500mc | e500mc64 | e5500 | e6500 \
5657 | titan | 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5 | cell)
5661 echo "Unknown cpu used in --with-$which=$val." 1>&2
5668 "" | elfv1 | elfv2 )
5672 echo "Unknown ABI used in --with-abi=$with_abi"
5677 if test "x$with_advance_toolchain" != x; then
5678 if test -d "/opt/$with_advance_toolchain/." -a \
5679 -d "/opt/$with_advance_toolchain/bin/." -a \
5680 -d "/opt/$with_advance_toolchain/include/."; then
5682 tm_file="$tm_file ./advance-toolchain.h"
5683 (at="/opt/$with_advance_toolchain"
5684 echo "/* Use Advance Toolchain $at */"
5686 echo "#undef LINK_OS_NEW_DTAGS_SPEC"
5687 echo "#define LINK_OS_NEW_DTAGS_SPEC" \
5688 "\"--enable-new-dtags\""
5690 echo "#undef DYNAMIC_LINKER_PREFIX"
5691 echo "#define DYNAMIC_LINKER_PREFIX \"$at\""
5693 echo "#undef MD_EXEC_PREFIX"
5694 echo "#define MD_EXEC_PREFIX \"$at/bin/\""
5696 echo "#undef MD_STARTFILE_PREFIX"
5697 echo "#define MD_STARTFILE_PREFIX \"$prefix/lib/\""
5699 echo "#undef MD_STARTFILE_PREFIX_1"
5700 echo "#define MD_STARTFILE_PREFIX_1 \"$at/lib/\"") \
5701 > advance-toolchain.h
5703 echo "Unknown advance-toolchain $with_advance_toolchain"
5708 # Set up the default long double format if the user changed it.
5709 if test x$with_long_double_format = xieee; then
5710 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=1"
5712 elif test x$with_long_double_format = xibm; then
5713 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=0"
5718 supported_defaults="arch mode tune"
5720 for which in arch tune; do
5721 eval "val=\$with_$which"
5723 "" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | z15 | z16 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12 | arch13 | arch14 )
5727 echo "Unknown cpu used in --with-$which=$val." 1>&2
5733 case ${with_mode} in
5738 echo "Unknown architecture mode used in --with-mode=$with_mode." 1>&2
5744 sh[123456ble]*-*-* | sh-*-*)
5745 supported_defaults="cpu"
5746 case "`echo $with_cpu | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz- | sed s/sh/m/`" in
5747 "" | m1 | m2 | m2e | m3 | m3e | m4 | m4-single | m4-single-only | m4-nofpu )
5750 m2a | m2a-single | m2a-single-only | m2a-nofpu)
5752 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al)
5755 echo "Unknown CPU used in --with-cpu=$with_cpu, known values:" 1>&2
5756 echo "m1 m2 m2e m3 m3e m4 m4-single m4-single-only m4-nofpu" 1>&2
5757 echo "m4a m4a-single m4a-single-only m4a-nofpu m4al" 1>&2
5758 echo "m2a m2a-single m2a-single-only m2a-nofpu" 1>&2
5764 supported_defaults="cpu cpu_32 cpu_64 float tune tune_32 tune_64"
5766 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5767 eval "val=\$with_$which"
5769 "" | sparc | sparcv9 | sparc64 \
5771 | v8 | supersparc | hypersparc | leon | leon3 | leon3v7 \
5772 | sparclite | f930 | f934 | sparclite86x \
5773 | sparclet | tsc701 \
5774 | v9 | ultrasparc | ultrasparc3 | niagara | niagara2 \
5775 | niagara3 | niagara4 | niagara7 | m8)
5779 echo "Unknown cpu used in --with-$which=$val" 1>&2
5785 case ${with_float} in
5790 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
5797 supported_defaults="arch"
5799 case ${with_arch} in
5800 "" | c62x | c64x | c64x+ | c67x | c67x+ | c674x)
5804 echo "Unknown arch used in --with-arch=$with_arch." 1>&2
5811 supported_defaults=cpu
5813 "" | v850e | v850e1 | v850e2 | v850es | v850e2v3 | v850e3v5)
5817 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5823 supported_defaults="cpu"
5827 *) echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5834 # VxWorks support for shared libraries has to be requested explicitly,
5835 # so we can factor this part here:
5837 case "${target}-${enable_shared}" in
5839 tmake_file="${tmake_file} t-slibgcc"
5843 # Targets for which there is at least one VxWorks port should include
5844 # vxworks-dummy.h to allow safe references to various TARGET_VXWORKS kinds
5845 # of markers from other files in the port, including the vxworks*.h files to
5846 # distinguish VxWorks variants such as VxWorks 7 or 64).
5849 arm*-*-* | i[34567]86-*-* | mips*-*-* | powerpc*-*-* | sh*-*-* \
5850 | sparc*-*-* | x86_64-*-*)
5851 tm_file="vxworks-dummy.h ${tm_file}"
5855 # Set some miscellaneous flags for particular targets.
5856 target_cpu_default2=
5859 if test x"$target_cpu_cname" != x
5861 target_cpu_default2=$target_cpu_cname
5866 if test x$with_cpu = x
5868 echo "Don't know the target cpu" 1>&2
5871 target_cpu_default2="\\\"$with_cpu\\\""
5876 if test x$gas = xyes
5878 target_cpu_default2="MASK_GAS"
5882 fido*-*-* | m68k*-*-*)
5883 target_cpu_default2=$m68k_cpu_ident
5884 tmake_file="m68k/t-opts $tmake_file"
5885 if [ x"$m68k_arch_family" != x ]; then
5886 tmake_file="m68k/t-$m68k_arch_family $tmake_file"
5890 i[34567]86-*-darwin* | x86_64-*-darwin*)
5892 i[34567]86-*-linux* | x86_64-*-linux*)
5893 extra_objs="${extra_objs} gnu-property.o"
5894 tmake_file="$tmake_file i386/t-linux i386/t-gnu-property"
5896 i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu)
5897 tmake_file="$tmake_file i386/t-kfreebsd"
5900 tmake_file="$tmake_file i386/t-gnu"
5902 i[34567]86-*-msdosdjgpp*)
5903 tmake_file="${tmake_file} i386/t-djgpp"
5905 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
5907 i[34567]86-*-cygwin* | x86_64-*-cygwin*)
5909 i[34567]86-*-mingw* | x86_64-*-mingw*)
5911 i[34567]86-*-dragonfly* | x86_64-*-dragonfly*)
5913 i[34567]86-*-freebsd*)
5916 tmake_file="${tmake_file} i386/t-freebsd64"
5922 if test x$gnu_ld = xyes
5924 target_cpu_default2="MASK_SPLIT_ADDRESSES"
5928 tm_defines="TARGET_ENDIAN_DEFAULT=0 $tm_defines"
5931 if test x$with_arch != x; then
5932 default_mips_arch=$with_arch
5934 with_arch=$default_mips_arch
5936 if test x$with_abi != x; then
5937 default_mips_abi=$with_abi
5939 case ${default_mips_arch} in
5940 mips1) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS1" ;;
5941 mips2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS2" ;;
5942 mips3) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3" ;;
5943 mips4) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS4" ;;
5944 mips32) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32" ;;
5945 mips32r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2" ;;
5946 mips32r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6" ;;
5947 mips64) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64" ;;
5948 mips64r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2" ;;
5949 mips64r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6" ;;
5951 case ${default_mips_abi} in
5952 32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_32" ;;
5953 o64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_O64" ;;
5954 n32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_N32" ;;
5955 64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_64" ;;
5956 eabi) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_EABI" ;;
5958 tmake_file="mips/t-mips $tmake_file"
5962 # Export canonical triplet.
5963 tm_defines="${tm_defines} LA_MULTIARCH_TRIPLET=${la_canonical_triplet}"
5965 # Define macro LA_DISABLE_MULTILIB if --disable-multilib
5966 tm_defines="${tm_defines} TM_MULTILIB_LIST=${loongarch_multilib_list_c}"
5967 if test x$enable_multilib = xyes; then
5968 TM_MULTILIB_CONFIG="${loongarch_multilib_list_make}"
5970 tm_defines="${tm_defines} LA_DISABLE_MULTILIB"
5973 # Let --with- flags initialize the enum variables from loongarch.opt.
5974 # See macro definitions from loongarch-opts.h and loongarch-cpu.h.
5977 tm_defines="${tm_defines} DEFAULT_CPU_ARCH=ARCH_$(echo ${with_arch} | tr a-z.- A-Z__)"
5980 tm_defines="${tm_defines} DEFAULT_ABI_BASE=ABI_BASE_$(echo ${abi_base} | tr a-z- A-Z_)"
5984 base) tm_defines="${tm_defines} DEFAULT_ABI_EXT=ABI_EXT_BASE" ;;
5988 if test x${with_tune} != x; then
5989 tm_defines="${tm_defines} DEFAULT_CPU_TUNE=TUNE_$(echo ${with_tune} | tr a-z.- A-Z__)"
5994 none) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_NONE" ;;
5995 32) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU32" ;;
5996 64) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU64" ;;
6000 case ${with_simd} in
6001 none) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_NONE" ;;
6002 lsx) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_SIMD_LSX" ;;
6003 lasx) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_SIMD_LASX" ;;
6007 "" | trad) tm_defines="$tm_defines DEFAULT_TLS_TYPE=TLS_TRADITIONAL" ;;
6008 desc) tm_defines="$tm_defines DEFAULT_TLS_TYPE=TLS_DESCRIPTORS" ;;
6011 tmake_file="loongarch/t-loongarch $tmake_file"
6014 powerpc*-*-* | rs6000-*-*)
6015 # FIXME: The PowerPC port uses the value set at compile time,
6016 # although it's only cosmetic.
6017 if test "x$with_cpu" != x
6019 target_cpu_default2="\\\"$with_cpu\\\""
6021 out_file="${cpu_type}/${cpu_type}.cc"
6022 c_target_objs="${c_target_objs} ${cpu_type}-c.o"
6023 cxx_target_objs="${cxx_target_objs} ${cpu_type}-c.o"
6024 d_target_objs="${d_target_objs} ${cpu_type}-d.o"
6025 tmake_file="${cpu_type}/t-${cpu_type} ${tmake_file}"
6028 sh[123456ble]*-*-* | sh-*-*)
6029 c_target_objs="${c_target_objs} sh-c.o"
6030 cxx_target_objs="${cxx_target_objs} sh-c.o"
6034 # Some standard aliases.
6039 xsparcv9 | xsparc64)
6044 if test x$with_tune = x ; then
6055 # The SPARC port checks this value at compile-time.
6056 target_cpu_default2="TARGET_CPU_$with_cpu"
6060 case "x$with_cpu" in
6063 xv850e | xv850e1 | xv850e2 | xv850e2v3 | xv850e3v5)
6064 target_cpu_default2="TARGET_CPU_$with_cpu"
6067 target_cpu_default2="TARGET_CPU_v850e1"
6072 target_cpu_default2="TARGET_CPU_$with_cpu"
6075 tmake_file="$tmake_file i386/t-gnu64"
6080 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"
6081 for option in $all_defaults
6083 eval "val=\$with_"`echo $option | sed s/-/_/g`
6084 if test -n "$val"; then
6085 case " $supported_defaults " in
6089 echo "This target does not support --with-$option." 2>&1
6090 echo "Valid --with options are: $supported_defaults" 2>&1
6097 t="{ \"$option\", \"$val\" }"
6099 t="${t}, { \"$option\", \"$val\" }"
6106 configure_default_options="{ { NULL, NULL} }"
6108 configure_default_options="{ ${t} }"
6111 if test "$target_cpu_default2" != ""
6113 if test "$target_cpu_default" != ""
6115 target_cpu_default="(${target_cpu_default}|${target_cpu_default2})"
6117 target_cpu_default=$target_cpu_default2
6122 i[34567]86-*-* | x86_64-*-*)
6123 if test x$enable_as_accelerator = xyes; then
6124 extra_programs="mkoffload\$(exeext)"