1 # SPDX-License-Identifier: GPL-3.0-or-later
2 # GCC target-specific configuration file.
3 # Copyright (C) 1997-2023 Free Software Foundation, Inc.
5 #This file is part of GCC.
7 #GCC is free software; you can redistribute it and/or modify it under
8 #the terms of the GNU General Public License as published by the Free
9 #Software Foundation; either version 3, or (at your option) any later
12 #GCC is distributed in the hope that it will be useful, but WITHOUT
13 #ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 #FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
17 #You should have received a copy of the GNU General Public License
18 #along with GCC; see the file COPYING3. If not see
19 #<http://www.gnu.org/licenses/>.
21 # This is the GCC target-specific configuration file
22 # where a configuration type is mapped to different system-specific
23 # definitions and files. This is invoked by the autoconf-generated
24 # configure script. Putting it in a separate shell file lets us skip
25 # running autoconf when modifying target-specific information.
27 # When you change the cases in the OS or target switches, consider
28 # updating ../libgcc/config.host also.
30 # This file switches on the shell variable ${target}, and also uses the
31 # following shell variables:
33 # with_* Various variables as set by configure.
35 # enable_threads Either the name, yes or no depending on whether
36 # threads support was requested.
38 # default_use_cxa_atexit
39 # The default value for the $enable___cxa_atexit
40 # variable. enable___cxa_atexit needs to be set to
41 # "yes" for the correct operation of C++ destructors
42 # but it relies upon the presence of a non-standard C
43 # library function called __cxa_atexit.
44 # Since not all C libraries provide __cxa_atexit the
45 # default value of $default_use_cxa_atexit is set to
46 # "no" except for targets which are known to be OK.
48 # default_gnu_indirect_function
49 # The default value for the $enable_gnu_indirect_function
50 # variable. enable_gnu_indirect_function relies
51 # upon the presence of a non-standard gnu ifunc support
52 # in the assembler, linker and dynamic linker.
53 # Since not all libraries provide the dynamic linking
54 # support, the default value of
55 # $default_gnu_indirect_function is set to
56 # "no" except for targets which are known to be OK.
58 # gas_flag Either yes or no depending on whether GNU as was
61 # gnu_ld_flag Either yes or no depending on whether GNU ld was
64 # This file sets the following shell variables for use by the
65 # autoconf-generated configure script:
67 # cpu_type The name of the cpu, if different from the first
68 # chunk of the canonical target name.
70 # tm_defines List of target macros to define for all compilations.
72 # tm_file A list of target macro files, if different from
73 # "$cpu_type/$cpu_type.h". Usually it's constructed
74 # per target in a way like this:
75 # tm_file="${tm_file} elfos.h ${cpu_type.h}/elf.h"
76 # Note that the preferred order is:
77 # - specific target header "${cpu_type}/${cpu_type.h}"
78 # - generic headers like elfos.h, etc.
79 # - specializing target headers like ${cpu_type.h}/elf.h
80 # This helps to keep OS specific stuff out of the CPU
81 # defining header ${cpu_type}/${cpu_type.h}.
83 # It is possible to include automatically-generated
84 # build-directory files by prefixing them with "./".
85 # All other files should relative to $srcdir/config.
87 # tm_p_file Location of file with declarations for functions
90 # tm_d_file A list of headers with definitions of target hook
91 # macros for the D compiler.
93 # tm_rust_file list of headers with definitions of target hook
94 # macros for the Rust compiler.
96 # out_file The name of the machine description C support
97 # file, if different from "$cpu_type/$cpu_type.c".
99 # common_out_file The name of the source file for code shared between
100 # the compiler proper and the driver.
102 # md_file The name of the machine-description file, if
103 # different from "$cpu_type/$cpu_type.md".
105 # tmake_file A list of machine-description-specific
106 # makefile-fragments, if different from
107 # "$cpu_type/t-$cpu_type".
109 # extra_modes The name of the file containing a list of extra
110 # machine modes, if necessary and different from
111 # "$cpu_type/$cpu_type-modes.def".
113 # extra_objs List of extra objects that should be linked into
114 # the compiler proper (cc1, cc1obj, cc1plus)
115 # depending on target.
117 # extra_gcc_objs List of extra objects that should be linked into
118 # the compiler driver (gcc) depending on target.
120 # extra_headers List of used header files from the directory
121 # config/${cpu_type}.
123 # user_headers_inc_next_pre
124 # List of header file names of internal gcc header
125 # files, which should be prefixed by an include_next.
126 # user_headers_inc_next_post
127 # List of header file names of internal gcc header
128 # files, which should be postfixed by an include_next.
129 # use_gcc_tgmath If set, add tgmath.h to the list of used header
132 # use_gcc_stdint If "wrap", install a version of stdint.h that
133 # wraps the system's copy for hosted compilations;
134 # if "provide", provide a version of systems without
135 # such a system header; otherwise "none", do not
136 # provide such a header at all.
138 # extra_programs List of extra executables compiled for this target
139 # machine, used when linking.
141 # extra_options List of target-dependent .opt files.
143 # c_target_objs List of extra target-dependent objects that be
144 # linked into the C compiler only.
146 # cxx_target_objs List of extra target-dependent objects that be
147 # linked into the C++ compiler only.
149 # d_target_objs List of extra target-dependent objects that be
150 # linked into the D compiler only.
152 # fortran_target_objs List of extra target-dependent objects that be
153 # linked into the fortran compiler only.
155 # rust_target_objs List of extra target-dependent objects that be
156 # linked into the Rust compiler only.
158 # target_gtfiles List of extra source files with type information.
160 # xm_defines List of macros to define when compiling for the
163 # xm_file List of files to include when compiling for the
166 # use_collect2 Set to yes or no, depending on whether collect2
169 # target_cpu_default Set to override the default target model.
171 # gdb_needs_out_file_path
172 # Set to yes if gdb needs a dir command with
173 # `dirname $out_file`.
175 # thread_file Set to control which thread package to use.
177 # gas Set to yes or no depending on whether the target
178 # system normally uses GNU as.
180 # configure_default_options
181 # Set to an initializer for configure_default_options
182 # in configargs.h, based on --with-cpu et cetera.
184 # native_system_header_dir
185 # Where system header files are found for this
186 # target. This defaults to /usr/include. If
187 # the --with-sysroot configure option or the
188 # --sysroot command line option is used this
189 # will be relative to the sysroot.
190 # target_type_format_char
191 # The default character to be used for formatting
193 # .type symbol_name, ${t_t_f_c}<property>
196 # The following variables are used in each case-construct to build up the
197 # outgoing variables:
199 # gnu_ld Set to yes or no depending on whether the target
200 # system normally uses GNU ld.
202 # target_has_targetcm Set to yes or no depending on whether the target
203 # has its own definition of targetcm.
205 # target_has_targetm_common Set to yes or no depending on whether the
206 # target has its own definition of targetm_common.
208 # target_has_targetdm Set to yes or no depending on whether the target
209 # has its own definition of targetdm.
211 # target_has_targetrustm Set to yes or no depending on whether the target
212 # has its own definition of targetrustm.
218 user_headers_inc_next_pre=
219 user_headers_inc_next_post=
231 target_has_targetcm=no
232 target_has_targetm_common=yes
233 target_has_targetdm=no
234 target_has_targetrustm=no
237 # Set this to force installation and use of collect2.
239 # Set this to override the default target model.
241 # Set this if gdb needs a dir command with `dirname $out_file`
242 gdb_needs_out_file_path=
243 # Set this to control which thread package will be used.
245 # Reinitialize these from the flag values every loop pass, since some
246 # configure entries modify them.
248 gnu_ld="$gnu_ld_flag"
249 default_use_cxa_atexit=no
250 default_gnu_indirect_function=no
253 native_system_header_dir=/usr/include
254 target_type_format_char='@'
256 # Don't carry these over build->host->target. Please.
260 # Determine Solaris minor version
261 case ${target}:`uname -v` in
262 # Only do this on Solaris. Illumos uses illumos-* instead.
263 *-*-solaris2.11*:11.*)
264 # Restrict to native configurations.
265 if test x$host = x$target; then
266 uname_version="`uname -v`"
267 # Prepend dot as needed below.
268 target_min=".`expr "$uname_version" : '11\.\([0-9]*\)'`"
273 # Obsolete configurations.
274 case ${target}${target_min} in
275 *-*-solaris2.11.[0-3]* \
277 if test "x$enable_obsolete" != xyes; then
278 echo "*** Configuration ${target}${target_min} is obsolete." >&2
279 echo "*** Specify --enable-obsolete to build it anyway." >&2
280 echo "*** Support will be REMOVED in the next major release of GCC," >&2
281 echo "*** unless a maintainer comes forward." >&2
286 # Unsupported targets list. Do not put an entry in this list unless
287 # it would otherwise be caught by a more permissive pattern. The list
288 # should be in alphabetical order.
290 # Avoid special cases that are not obsolete
301 | i[34567]86-go32-* \
302 | i[34567]86-*-go32* \
306 | m68k-*-uclinuxoldabi* \
307 | mips64orion*-*-rtems* \
309 | powerpc*-*-linux*paired* \
311 | sparc-hal-solaris2* \
314 | *-*-freebsd[12] | *-*-freebsd[1234].* \
315 | *-*-freebsd*aout* \
323 | *-*-solaris2.[0-9] \
324 | *-*-solaris2.[0-9].* \
329 echo "*** Configuration ${target} not supported" 1>&2
334 # Set default cpu_type, tm_file, tm_p_file and xm_file so it can be
335 # updated in each machine entry. Also set default extra_headers for some
338 cpu_type=`echo ${target} | sed 's/-.*$//'`
343 tmake_file=m32c/t-m32c
344 target_has_targetm_common=no
348 extra_headers="arm_fp16.h arm_neon.h arm_bf16.h arm_acle.h arm_sve.h"
349 c_target_objs="aarch64-c.o"
350 cxx_target_objs="aarch64-c.o"
351 d_target_objs="aarch64-d.o"
352 extra_objs="aarch64-builtins.o aarch-common.o aarch64-sve-builtins.o aarch64-sve-builtins-shapes.o aarch64-sve-builtins-base.o aarch64-sve-builtins-sve2.o cortex-a57-fma-steering.o aarch64-speculation.o falkor-tag-collision-avoidance.o aarch-bti-insert.o aarch64-cc-fusion.o"
353 target_gtfiles="\$(srcdir)/config/aarch64/aarch64-builtins.cc \$(srcdir)/config/aarch64/aarch64-sve-builtins.h \$(srcdir)/config/aarch64/aarch64-sve-builtins.cc"
354 target_has_targetm_common=yes
358 extra_options="${extra_options} g.opt"
369 c_target_objs="arc-c.o"
370 cxx_target_objs="arc-c.o"
371 extra_options="${extra_options} arc/arc-tables.opt g.opt"
372 extra_headers="arc-simd.h"
376 extra_objs="arm-builtins.o arm-mve-builtins.o arm-mve-builtins-shapes.o arm-mve-builtins-base.o aarch-common.o aarch-bti-insert.o"
377 extra_headers="mmintrin.h arm_neon.h arm_acle.h arm_fp16.h arm_cmse.h arm_bf16.h arm_mve_types.h arm_mve.h arm_cde.h"
378 target_type_format_char='%'
379 c_target_objs="arm-c.o"
380 cxx_target_objs="arm-c.o"
381 d_target_objs="arm-d.o"
382 extra_options="${extra_options} arm/arm-tables.opt"
383 target_gtfiles="\$(srcdir)/config/arm/arm-builtins.cc \$(srcdir)/config/arm/arm-mve-builtins.h \$(srcdir)/config/arm/arm-mve-builtins.cc"
387 c_target_objs="avr-c.o"
388 cxx_target_objs="avr-c.o"
397 extra_options="${extra_options} g.opt"
400 target_has_targetm_common=no
402 moxie*) cpu_type=moxie
403 target_has_targetm_common=no
407 extra_headers=math-68881.h
408 extra_options="${extra_options} m68k/m68k-tables.opt"
410 i[34567]86-*-* | x86_64-*-*)
412 c_target_objs="i386-c.o"
413 cxx_target_objs="i386-c.o"
414 d_target_objs="i386-d.o"
415 extra_objs="x86-tune-sched.o x86-tune-sched-bd.o x86-tune-sched-atom.o x86-tune-sched-core.o i386-options.o i386-builtins.o i386-expand.o i386-features.o"
416 target_gtfiles="\$(srcdir)/config/i386/i386-builtins.cc \$(srcdir)/config/i386/i386-expand.cc \$(srcdir)/config/i386/i386-options.cc"
417 extra_options="${extra_options} fused-madd.opt"
418 extra_headers="cpuid.h mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h
419 pmmintrin.h tmmintrin.h ammintrin.h smmintrin.h
420 nmmintrin.h bmmintrin.h fma4intrin.h wmmintrin.h
421 immintrin.h x86intrin.h avxintrin.h xopintrin.h
422 ia32intrin.h cross-stdarg.h lwpintrin.h popcntintrin.h
423 lzcntintrin.h bmiintrin.h bmi2intrin.h tbmintrin.h
424 avx2intrin.h avx512fintrin.h fmaintrin.h f16cintrin.h
425 rtmintrin.h xtestintrin.h rdseedintrin.h prfchwintrin.h
426 adxintrin.h fxsrintrin.h xsaveintrin.h xsaveoptintrin.h
427 avx512cdintrin.h avx512erintrin.h avx512pfintrin.h
428 shaintrin.h clflushoptintrin.h xsavecintrin.h
429 xsavesintrin.h avx512dqintrin.h avx512bwintrin.h
430 avx512vlintrin.h avx512vlbwintrin.h avx512vldqintrin.h
431 avx512ifmaintrin.h avx512ifmavlintrin.h avx512vbmiintrin.h
432 avx512vbmivlintrin.h avx5124fmapsintrin.h avx5124vnniwintrin.h
433 avx512vpopcntdqintrin.h clwbintrin.h mwaitxintrin.h
434 clzerointrin.h pkuintrin.h sgxintrin.h cetintrin.h
435 gfniintrin.h cet.h avx512vbmi2intrin.h
436 avx512vbmi2vlintrin.h avx512vnniintrin.h
437 avx512vnnivlintrin.h vaesintrin.h vpclmulqdqintrin.h
438 avx512vpopcntdqvlintrin.h avx512bitalgintrin.h
439 pconfigintrin.h wbnoinvdintrin.h movdirintrin.h
440 waitpkgintrin.h cldemoteintrin.h avx512bf16vlintrin.h
441 avx512bf16intrin.h enqcmdintrin.h serializeintrin.h
442 avx512vp2intersectintrin.h avx512vp2intersectvlintrin.h
443 tsxldtrkintrin.h amxtileintrin.h amxint8intrin.h
444 amxbf16intrin.h x86gprintrin.h uintrintrin.h
445 hresetintrin.h keylockerintrin.h avxvnniintrin.h
446 mwaitintrin.h avx512fp16intrin.h avx512fp16vlintrin.h
447 avxifmaintrin.h avxvnniint8intrin.h avxneconvertintrin.h
448 cmpccxaddintrin.h amxfp16intrin.h prfchiintrin.h
449 raointintrin.h amxcomplexintrin.h avxvnniint16intrin.h
450 sm3intrin.h sha512intrin.h sm4intrin.h"
453 extra_headers=ia64intrin.h
454 extra_options="${extra_options} g.opt fused-madd.opt"
460 extra_options="${extra_options} g.opt"
464 extra_options="${extra_options} g.opt"
467 extra_headers=math-68881.h
468 extra_options="${extra_options} m68k/m68k-tables.opt"
472 extra_options="${extra_options} g.opt"
476 d_target_objs="mips-d.o"
477 extra_headers="loongson.h loongson-mmiintrin.h msa.h"
478 extra_objs="frame-header-opt.o"
479 extra_options="${extra_options} g.opt fused-madd.opt mips/mips-tables.opt"
483 extra_headers="larchintrin.h lsxintrin.h lasxintrin.h"
484 extra_objs="loongarch-c.o loongarch-builtins.o loongarch-cpu.o loongarch-opts.o loongarch-def.o"
485 extra_gcc_objs="loongarch-driver.o loongarch-cpu.o loongarch-opts.o loongarch-def.o"
486 extra_options="${extra_options} g.opt fused-madd.opt"
490 extra_headers="nds32_intrinsic.h nds32_isr.h nds32_init.inc"
493 extra_options="${extra_options} nds32/nds32-linux.opt"
496 extra_options="${extra_options} nds32/nds32-elf.opt"
501 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"
505 extra_options="${extra_options} g.opt"
509 c_target_objs="nvptx-c.o"
510 cxx_target_objs="nvptx-c.o"
511 extra_options="${extra_options} nvptx/nvptx-gen.opt"
518 extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
519 extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o"
520 extra_objs="${extra_objs} rs6000-builtins.o rs6000-builtin.o"
521 extra_headers="ppc-asm.h altivec.h htmintrin.h htmxlintrin.h"
522 extra_headers="${extra_headers} bmi2intrin.h bmiintrin.h"
523 extra_headers="${extra_headers} xmmintrin.h mm_malloc.h emmintrin.h"
524 extra_headers="${extra_headers} mmintrin.h x86intrin.h"
525 extra_headers="${extra_headers} pmmintrin.h tmmintrin.h smmintrin.h"
526 extra_headers="${extra_headers} nmmintrin.h immintrin.h x86gprintrin.h"
527 extra_headers="${extra_headers} ppu_intrinsics.h spu2vmx.h vec_types.h si2vmx.h"
528 extra_headers="${extra_headers} amo.h"
530 xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[3456789]|xpower10|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|xe6500)
534 extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
535 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.cc \$(srcdir)/config/rs6000/rs6000-call.cc"
536 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-pcrel-opt.cc"
537 target_gtfiles="$target_gtfiles ./rs6000-builtins.h"
544 extra_objs="riscv-builtins.o riscv-c.o riscv-sr.o riscv-shorten-memrefs.o riscv-selftests.o riscv-string.o"
545 extra_objs="${extra_objs} riscv-v.o riscv-vsetvl.o riscv-vector-costs.o"
546 extra_objs="${extra_objs} riscv-vector-builtins.o riscv-vector-builtins-shapes.o riscv-vector-builtins-bases.o"
547 extra_objs="${extra_objs} thead.o"
548 d_target_objs="riscv-d.o"
549 extra_headers="riscv_vector.h"
550 target_gtfiles="$target_gtfiles \$(srcdir)/config/riscv/riscv-vector-builtins.cc"
551 target_gtfiles="$target_gtfiles \$(srcdir)/config/riscv/riscv-vector-builtins.h"
554 extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
555 extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
556 extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o"
557 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.cc \$(srcdir)/config/rs6000/rs6000-call.cc"
558 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-pcrel-opt.cc"
562 c_target_objs="sparc-c.o"
563 cxx_target_objs="sparc-c.o"
564 d_target_objs="sparc-d.o"
565 extra_headers="visintrin.h"
569 d_target_objs="s390-d.o"
570 extra_options="${extra_options} fused-madd.opt"
571 extra_headers="s390intrin.h htmintrin.h htmxlintrin.h vecintrin.h"
573 # Note the 'l'; we need to be able to match e.g. "shle" or "shl".
574 sh[123456789lbe]*-*-* | sh-*-*)
576 extra_options="${extra_options} fused-madd.opt"
577 extra_objs="${extra_objs} sh_treg_combine.o sh-mem.o sh_optimize_sett_clrt.o"
584 extra_headers="c6x_intrinsics.h"
585 extra_options="${extra_options} c6x/c6x-tables.opt"
588 extra_options="${extra_options} fused-madd.opt"
589 extra_objs="xtensa-dynconfig.o"
593 tm_file=${cpu_type}/${cpu_type}.h
594 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-protos.h
596 tm_p_file=${cpu_type}/${cpu_type}-protos.h
600 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-d.h
602 tm_d_file="${tm_d_file} ${cpu_type}/${cpu_type}-d.h"
606 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-rust.h
608 tm_rust_file="${cpu_type}/${cpu_type}-rust.h"
610 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-rust.cc
612 rust_target_objs="${rust_target_objs} ${cpu_type}-rust.o"
616 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-modes.def
618 extra_modes=${cpu_type}/${cpu_type}-modes.def
620 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}.opt
622 extra_options="${extra_options} ${cpu_type}/${cpu_type}.opt"
627 tm_p_file="${tm_p_file} arm/aarch-common-protos.h"
630 if test "x$with_multilib_list" = xilp32; then
631 tm_file="aarch64/biarchilp32.h ${tm_file}"
633 tm_file="aarch64/biarchlp64.h ${tm_file}"
637 tm_file="aarch64/biarchilp32.h ${tm_file}"
640 tm_file="aarch64/biarchlp64.h ${tm_file}"
643 echo "Unknown ABI used in --with-abi=$with_abi"
648 if test "x$with_abi" != x; then
649 echo "This target does not support --with-abi."
658 if test "x$with_multilib_list" = xmx32; then
659 tm_file="i386/biarchx32.h ${tm_file}"
661 tm_file="i386/biarch64.h ${tm_file}"
665 tm_file="i386/biarch64.h ${tm_file}"
668 tm_file="i386/biarchx32.h ${tm_file}"
671 echo "Unknown ABI used in --with-abi=$with_abi"
676 tm_p_file="arm/arm-flags.h ${tm_p_file} arm/aarch-common-protos.h"
680 # On a.out targets, we need to use collect2.
687 # Common C libraries.
688 tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
690 # 32-bit x86 processors supported by --with-arch=. Each processor
691 # MUST be separated by exactly one space.
692 x86_archs="athlon athlon-4 athlon-fx athlon-mp athlon-tbird \
693 athlon-xp k6 k6-2 k6-3 geode c3 c3-2 winchip-c6 winchip2 i386 i486 \
694 i586 i686 pentium pentium-m pentium-mmx pentium2 pentium3 pentium3m \
695 pentium4 pentium4m pentiumpro prescott lakemont samuel-2 nehemiah \
698 # 64-bit x86 processors supported by --with-arch=. Each processor
699 # MUST be separated by exactly one space.
700 x86_64_archs="amdfam10 athlon64 athlon64-sse3 barcelona bdver1 bdver2 \
701 bdver3 bdver4 znver1 znver2 znver3 znver4 btver1 btver2 k8 k8-sse3 opteron \
702 opteron-sse3 nocona core2 corei7 corei7-avx core-avx-i core-avx2 atom \
703 slm nehalem westmere sandybridge ivybridge haswell broadwell bonnell \
704 silvermont knl knm skylake-avx512 cannonlake icelake-client icelake-server \
705 skylake goldmont goldmont-plus tremont cascadelake tigerlake cooperlake \
706 sapphirerapids alderlake rocketlake eden-x2 nano nano-1000 nano-2000 nano-3000 \
707 nano-x2 eden-x4 nano-x4 lujiazui x86-64 x86-64-v2 x86-64-v3 x86-64-v4 \
708 sierraforest graniterapids graniterapids-d grandridge arrowlake arrowlake-s \
711 # Additional x86 processors supported by --with-cpu=. Each processor
712 # MUST be separated by exactly one space.
713 x86_cpus="generic intel"
715 # Common parts for widely ported systems.
718 tmake_file="t-darwin "
719 tm_file="${tm_file} darwin.h"
720 darwin_os=`echo ${target} | sed 's/.*darwin\([0-9.]*\).*$/\1/'`
721 darwin_maj=`expr "$darwin_os" : '\([0-9]*\).*'`
722 macos_min=`expr "$darwin_os" : '[0-9]*\.\([0-9]*\).*'`
724 if test x"${macos_min}" = x; then
728 # Tools hosted on earlier versions of Darwin constrained all object
729 # alignment to be 2^15 or smaller. From Darwin11 (macOS 10.7) the
730 # alignment of non-common is allowed to be up to 2^28. Note that the
731 #Â larger alignment is permitted when targeting 10.6 from 10.7 so that
732 #Â the constraint only need be applied per host (and only if the host
735 *-*-darwin[4-9]* | *-*-darwin10*)
736 tm_defines="$tm_defines L2_MAX_OFILE_ALIGNMENT=15U"
739 tm_defines="$tm_defines L2_MAX_OFILE_ALIGNMENT=28U"
743 # Darwin 4 to 19 correspond to macOS 10.0 to 10.15
744 *-*-darwin[4-9]* | *-*-darwin1[0-9]*)
745 macos_min=`expr $darwin_maj - 4`
748 # Darwin 20 corresponds to macOS 11, Darwin 21 to macOS 12.
749 macos_maj=`expr $darwin_maj - 9`
754 aarch64) macos_maj=11 ;;
755 x86_64) macos_min=6 ;;
759 *-*-darwin*) tm_defines="$tm_defines DARWIN_USE_KERNEL_VERS" ;;
761 # If configuring a cross-compiler then we will have set some
762 #Â default above, but it is probably not what was intended.
763 echo "Warning: Using ${target} is only suitable for Darwin hosts" 1>&2
764 echo "configure with an explicit target version" 1>&2
769 echo "Error: configuring for an unreleased macOS version ${target}" 1>&2
773 tm_defines="$tm_defines DEF_MIN_OSX_VERSION=\\\"${macos_maj}.${macos_min}\\\""
774 tm_defines="$tm_defines DEF_LD64=\\\"${def_ld64}\\\""
775 tm_file="${tm_file} ${cpu_type}/darwin.h"
776 tm_p_file="${tm_p_file} darwin-protos.h"
777 target_gtfiles="$target_gtfiles \$(srcdir)/config/darwin.cc"
778 extra_options="${extra_options} rpath.opt darwin.opt"
779 c_target_objs="${c_target_objs} darwin-c.o"
780 cxx_target_objs="${cxx_target_objs} darwin-c.o"
781 d_target_objs="${d_target_objs} darwin-d.o"
782 fortran_target_objs="darwin-f.o"
783 rust_target_objs="${rust_target_objs} darwin-rust.o"
784 target_has_targetcm=yes
785 target_has_targetdm=yes
786 target_has_targetrustm=yes
787 extra_objs="${extra_objs} darwin.o"
788 extra_gcc_objs="darwin-driver.o"
789 default_use_cxa_atexit=yes
791 case ${enable_threads} in
792 "" | yes | posix) thread_file='posix' ;;
798 tmake_file="t-slibgcc"
799 case ${enable_threads} in
804 # Let these non-posix thread selections fall through if requested
807 echo 'Unknown thread configuration for DragonFly BSD'
811 extra_options="$extra_options rpath.opt dragonfly.opt"
812 default_use_cxa_atexit=yes
814 d_target_objs="${d_target_objs} dragonfly-d.o"
815 tmake_file="${tmake_file} t-dragonfly"
816 target_has_targetdm=yes
817 rust_target_objs="${rust_target_objs} dragonfly-rust.o"
818 target_has_targetrustm=yes
821 # This is the generic ELF configuration of FreeBSD. Later
822 # machine-specific sections may refine and add to this
825 # Due to tm_file entry ordering issues that vary between cpu
826 # architectures, we only define fbsd_tm_file to allow the
827 # machine-specific section to dictate the final order of all
828 # entries of tm_file with the minor exception that components
829 # of the tm_file set here will always be of the form:
831 # freebsd<version_number>.h [freebsd-<conf_option>.h ...] freebsd-spec.h freebsd.h
833 # The machine-specific section should not tamper with this
834 # ordering but may order all other entries of tm_file as it
835 # pleases around the provided core setting.
838 fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
839 if test "$fbsd_major" = ""; then
840 echo "Specify the major version number of the targeted FreeBSD release"
841 echo "like this: --target=amd64-unknown-freebsd10.1"
844 tm_defines="${tm_defines} FBSD_MAJOR=${fbsd_major}"
845 tmake_file="t-slibgcc"
846 case ${enable_threads} in
848 fbsd_tm_file="${fbsd_tm_file} freebsd-nthr.h"
854 echo 'Unknown thread configuration for FreeBSD'
858 fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h freebsd-stdint.h"
859 extra_options="$extra_options rpath.opt freebsd.opt"
864 default_use_cxa_atexit=yes;;
867 d_target_objs="${d_target_objs} freebsd-d.o"
868 tmake_file="${tmake_file} t-freebsd"
869 target_has_targetdm=yes
870 rust_target_objs="${rust_target_objs} freebsd-rust.o"
871 target_has_targetrustm=yes
874 native_system_header_dir=/include
876 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi)
877 extra_options="$extra_options gnu-user.opt"
880 case ${enable_threads} in
881 "" | yes | posix) thread_file='posix' ;;
883 tmake_file="t-slibgcc"
885 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
888 native_system_header_dir=/include
891 # Linux C libraries selection switch: glibc / uclibc / bionic.
892 # uclibc and bionic aren't usable for GNU/Hurd and neither for GNU/k*BSD.
895 tm_p_file="${tm_p_file} linux-protos.h"
896 tmake_file="${tmake_file} t-linux"
897 extra_objs="${extra_objs} linux.o"
898 extra_options="${extra_options} linux.opt"
903 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC"
905 *-*-*uclibc* | *-*-uclinuxfdpiceabi)
906 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
909 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
912 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
915 # Assume that glibc or uClibc or Bionic are being used and so __cxa_atexit
917 default_use_cxa_atexit=yes
920 # Enable compilation for Android by default for *android* targets.
923 tm_defines="$tm_defines ANDROID_DEFAULT=1"
926 tm_defines="$tm_defines ANDROID_DEFAULT=0"
929 c_target_objs="${c_target_objs} glibc-c.o"
930 cxx_target_objs="${cxx_target_objs} glibc-c.o"
931 tmake_file="${tmake_file} t-glibc"
932 target_has_targetcm=yes
934 *-*-*uclibc* | *-*-uclinuxfdpiceabi)
937 # Linux targets always support .init_array.
938 gcc_cv_initfini_array=yes
943 d_target_objs="${d_target_objs} linux-d.o"
944 target_has_targetdm=yes
947 d_target_objs="${d_target_objs} kfreebsd-d.o"
948 target_has_targetdm=yes
950 *-*-kopensolaris*-gnu)
951 d_target_objs="${d_target_objs} kopensolaris-d.o"
952 target_has_targetdm=yes
955 d_target_objs="${d_target_objs} gnu-d.o"
956 target_has_targetdm=yes
961 tm_p_file="${tm_p_file} netbsd-protos.h"
962 tmake_file="t-netbsd t-slibgcc"
963 extra_objs="${extra_objs} netbsd.o"
964 d_target_objs="${d_target_objs} netbsd-d.o"
968 case ${enable_threads} in
969 "" | yes | posix) thread_file='posix' ;;
971 nbsd_tm_file="netbsd.h netbsd-stdint.h netbsd-elf.h"
972 default_use_cxa_atexit=yes
973 target_has_targetdm=yes
975 arm*-* | i[34567]86-* | powerpc*-* | sparc*-* | x86_64-*)
976 default_gnu_indirect_function=yes
979 rust_target_objs="${rust_target_objs} netbsd-rust.o"
980 target_has_targetrustm=yes
983 tmake_file="t-openbsd"
984 case ${enable_threads} in
990 *-*-openbsd4.[3-9]|*-*-openbsd[5-9]*)
991 default_use_cxa_atexit=yes
994 d_target_objs="${d_target_objs} openbsd-d.o"
995 target_has_targetdm=yes
996 rust_target_objs="${rust_target_objs} openbsd-rust.o"
997 target_has_targetrustm=yes
1002 default_use_cxa_atexit=yes
1005 case ${enable_threads} in
1006 "" | yes | rtems) thread_file='rtems' ;;
1007 posix) thread_file='posix' ;;
1010 echo 'Unknown thread configuration for RTEMS'
1014 tmake_file="${tmake_file} t-rtems"
1015 extra_options="${extra_options} rtems.opt"
1016 default_use_cxa_atexit=yes
1020 extra_options="$extra_options gnu-user.opt"
1022 case ${enable_threads} in
1023 "" | yes | posix) thread_file='posix' ;;
1025 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC SINGLE_LIBC"
1031 # i?86-*-solaris2* needs to insert headers between cpu default and
1032 # Solaris 2 specific ones.
1033 sol2_tm_file_head="elfos.h ${cpu_type}/sysv4.h"
1034 sol2_tm_file_tail="${cpu_type}/sol2.h sol2.h"
1035 sol2_tm_file="${sol2_tm_file_head} ${sol2_tm_file_tail}"
1037 *-*-solaris2.1[1-9]*)
1038 # __cxa_atexit was introduced in Solaris 11.4.
1039 default_use_cxa_atexit=yes
1043 if test x$gnu_ld = xyes; then
1044 tm_file="usegld.h ${tm_file}"
1046 if test x$gas = xyes; then
1047 tm_file="usegas.h ${tm_file}"
1049 tm_p_file="${tm_p_file} sol2-protos.h"
1050 tmake_file="${tmake_file} t-sol2 t-slibgcc"
1051 c_target_objs="${c_target_objs} sol2-c.o"
1052 cxx_target_objs="${cxx_target_objs} sol2-c.o sol2-cxx.o"
1053 d_target_objs="${d_target_objs} sol2-d.o"
1054 extra_objs="${extra_objs} sol2.o sol2-stubs.o"
1055 extra_options="${extra_options} sol2.opt"
1056 case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
1057 "":yes:* | yes:yes:* )
1061 target_has_targetdm=yes
1062 rust_target_objs="${rust_target_objs} sol2-rust.o"
1063 target_has_targetrustm=yes
1066 extra_options="${extra_options} vms/vms.opt"
1067 xmake_file=vms/x-vms
1068 tmake_file="vms/t-vms t-slibgcc"
1070 target_gtfiles="$target_gtfiles \$(srcdir)/config/vms/vms.cc"
1071 tm_p_file="${tm_p_file} vms/vms-protos.h"
1072 xm_file="vms/xm-vms.h"
1073 c_target_objs="vms-c.o"
1074 cxx_target_objs="vms-c.o"
1075 fortran_target_objs="vms-f.o"
1076 use_gcc_stdint=provide
1077 tm_file="${tm_file} vms/vms-stdint.h"
1078 if test x$gnu_ld != xyes; then
1079 # Build wrappers for native case.
1080 extra_programs="ld\$(exeext) ar\$(exeext)"
1081 tmake_file="$tmake_file vms/t-vmsnative"
1085 tmake_file=t-vxworks
1088 extra_options="${extra_options} vxworks.opt"
1089 extra_objs="$extra_objs vxworks.o"
1091 c_target_objs="${c_target_objs} vxworks-c.o"
1092 cxx_target_objs="${cxx_target_objs} vxworks-c.o"
1093 extra_headers="${extra_headers} ../vxworks/vxworks-predef.h"
1094 target_has_targetcm="yes"
1096 rust_target_objs="${rust_target_objs} vxworks-rust.o"
1097 target_has_targetrustm=yes
1099 extra_gcc_objs="vxworks-driver.o"
1101 # This private header exposes a consistent interface for checks on
1102 # the VxWorks version our runtime header files need to perform, based on
1103 # what the system headers adverstise:
1105 extra_headers="${extra_headers} ../vxworks/_vxworks-versions.h"
1107 # Starting from VxWorks 7, the system comes with a Dinkumware
1108 # environment which requires the inclusion of "yvals.h" before other
1109 # system headers. We provide wrapped versions of a few headers to
1110 # accomodate such constraints:
1112 extra_headers="${extra_headers} ../vxworks/_yvals.h"
1113 extra_headers="${extra_headers} ../vxworks/_yvals-wrapper.h"
1115 extra_headers="${extra_headers} ../vxworks/math.h ../vxworks/complex.h"
1116 extra_headers="${extra_headers} ../vxworks/inttypes.h ../vxworks/setjmp.h"
1118 # We provide (a tailored version of) stdint.h
1119 tm_file="${tm_file} vxworks-stdint.h"
1120 use_gcc_stdint=provide
1122 case ${enable_threads} in
1124 "" | yes | vxworks) thread_file='vxworks' ;;
1125 *) echo 'Unknown thread configuration for VxWorks'; exit 1 ;;
1128 # A few common macro definitions conveying general characteristics
1129 # of the configuration at hand. Note that by VxWorks 7, we mean the
1130 # the SR6xx major update or beyond in vendor parlance:
1134 tm_defines="$tm_defines TARGET_VXWORKS7=1"
1139 tm_defines="$tm_defines TARGET_VXWORKS64=1"
1143 # Then a few build configuration controls for VxWorks 7, which
1144 # has specificities on top of which we aim to provide more complete
1149 # VxWorks 7 always has init/fini_array support and it is simpler to
1150 # just leverage this, sticking to what the system toolchain does:
1151 gcc_cv_initfini_array=yes
1155 *-*-elf|arc*-*-elf*)
1156 # Assume that newlib is being used and so __cxa_atexit is provided.
1157 default_use_cxa_atexit=yes
1160 case "${with_newlib}-${with_headers}" in
1161 no-no) use_gcc_stdint=provide ;;
1168 aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
1169 tm_file="${tm_file} elfos.h newlib-stdint.h"
1170 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-elf-raw.h"
1171 tmake_file="${tmake_file} aarch64/t-aarch64"
1177 tm_file="${tm_file} fuchsia.h"
1180 tm_file="${tm_file} aarch64/rtems.h rtems.h"
1185 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1188 aarch64_multilibs="${with_multilib_list}"
1189 if test "$aarch64_multilibs" = "default"; then
1190 aarch64_multilibs="lp64,ilp32"
1192 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1193 for aarch64_multilib in ${aarch64_multilibs}; do
1194 case ${aarch64_multilib} in
1196 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1199 echo "--with-multilib-list=${aarch64_multilib} not supported."
1203 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1205 aarch64*-*-freebsd*)
1206 tm_file="${tm_file} elfos.h ${fbsd_tm_file}"
1207 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-freebsd.h"
1208 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
1209 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1212 tm_file="${tm_file} elfos.h ${nbsd_tm_file}"
1213 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-netbsd.h"
1214 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-netbsd"
1215 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1218 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h"
1219 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-linux.h"
1220 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-linux"
1221 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1224 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1227 aarch64_multilibs="${with_multilib_list}"
1228 if test "$aarch64_multilibs" = "default"; then
1229 # TODO: turn on ILP32 multilib build after its support is mature.
1230 # aarch64_multilibs="lp64,ilp32"
1231 aarch64_multilibs="lp64"
1233 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1234 for aarch64_multilib in ${aarch64_multilibs}; do
1235 case ${aarch64_multilib} in
1237 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1240 echo "--with-multilib-list=${aarch64_multilib} not supported."
1244 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1246 aarch64*-wrs-vxworks*)
1247 tm_file="${tm_file} elfos.h aarch64/aarch64-elf.h"
1248 tm_file="${tm_file} vx-common.h vxworks.h aarch64/aarch64-vxworks.h"
1249 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-vxworks"
1252 tm_file="elfos.h ${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h glibc-stdint.h"
1253 tmake_file="${tmake_file} alpha/t-linux alpha/t-alpha"
1254 extra_options="${extra_options} alpha/elf.opt"
1257 tm_file="elfos.h ${tm_file} ${nbsd_tm_file} alpha/elf.h alpha/netbsd.h"
1258 tmake_file="${tmake_file} alpha/t-alpha"
1259 extra_options="${extra_options} netbsd.opt netbsd-elf.opt \
1263 tm_defines="${tm_defines} OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_FUNCTION_SIZE OBSD_HAS_DECLARE_OBJECT"
1264 tm_file="elfos.h alpha/alpha.h alpha/elf.h openbsd.h openbsd-stdint.h alpha/openbsd.h openbsd-libpthread.h"
1265 tmake_file="${tmake_file} alpha/t-alpha"
1266 extra_options="${extra_options} openbsd.opt alpha/elf.opt"
1267 # default x-alpha is only appropriate for dec-osf.
1270 tm_file="${tm_file} vms/vms.h alpha/vms.h"
1271 tmake_file="${tmake_file} alpha/t-vms alpha/t-alpha"
1274 tm_file="arc/arc-arch.h elfos.h newlib-stdint.h arc/elf.h ${tm_file}"
1275 tmake_file="arc/t-multilib arc/t-arc"
1276 extra_gcc_objs="driver-arc.o"
1277 if test "x$with_cpu" != x; then
1278 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1280 if test x${with_endian} = x; then
1282 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1283 *) with_endian=little ;;
1286 case ${with_endian} in
1288 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1290 case ${with_endian} in
1291 big*) tm_file="arc/big.h ${tm_file}"
1295 tm_file="arc/arc-arch.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arc/linux.h ${tm_file}"
1296 tmake_file="${tmake_file} arc/t-multilib-linux arc/t-arc"
1297 extra_gcc_objs="driver-arc.o"
1298 if test "x$with_cpu" != x; then
1299 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1301 if test x${with_endian} = x; then
1303 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1304 *) with_endian=little ;;
1307 case ${with_endian} in
1309 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1311 case ${with_endian} in
1312 big*) tm_file="arc/big.h ${tm_file}"
1314 # Force .init_array support. The configure script cannot always
1315 # automatically detect that GAS supports it, yet we require it.
1316 gcc_cv_initfini_array=yes
1319 # We only support VxWorks 7 now on ARM, post SR600. Pre SR600
1320 # VxWorks 7 was transitory and major versions prior to 7 were based
1321 # on long deprecated ABI, not supported at all any more regardless
1323 extra_options="${extra_options} arm/vxworks.opt"
1324 tmake_file="${tmake_file} arm/t-arm arm/t-vxworks arm/t-bpabi"
1325 tm_file="elfos.h arm/elf.h arm/bpabi.h arm/aout.h ${tm_file}"
1326 tm_file="${tm_file} vx-common.h vxworks.h arm/vxworks.h"
1327 target_cpu_cname="generic-armv7-a"
1328 need_64bit_hwint=yes
1330 arm*-*-freebsd*) # ARM FreeBSD EABI
1331 tm_file="elfos.h ${fbsd_tm_file} arm/elf.h"
1334 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1337 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi"
1338 tm_file="${tm_file} arm/bpabi.h arm/freebsd.h arm/aout.h arm/arm.h"
1341 target_cpu_cname="arm1176jzf-s"
1342 if test $fbsd_major -ge 11; then
1343 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1347 target_cpu_cname="generic-armv7-a"
1348 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1351 target_cpu_cname="arm9"
1354 with_tls=${with_tls:-gnu}
1357 target_cpu_cname="strongarm"
1358 tmake_file="${tmake_file} arm/t-arm"
1359 tm_file="elfos.h ${nbsd_tm_file} arm/elf.h"
1360 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1362 arm*eb-*) tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" ;;
1365 arm*-*-netbsdelf-*eabi*)
1366 tm_file="$tm_file arm/bpabi.h arm/netbsd-elf.h arm/netbsd-eabi.h"
1367 tmake_file="$tmake_file arm/t-bpabi arm/t-netbsdeabi"
1370 tm_file="$tm_file arm/netbsd-elf.h"
1371 tmake_file="$tmake_file arm/t-netbsd"
1374 tm_file="${tm_file} arm/aout.h arm/arm.h"
1376 arm*-*-netbsdelf-*eabihf*)
1377 # Hard-float requires at least Arm v5te
1378 target_cpu_cname="arm10e"
1379 tm_defines="${tm_defines} TARGET_DEFAULT_FLOAT_ABI=ARM_FLOAT_ABI_HARD"
1383 armv6*) target_cpu_cname="arm1176jzf-s";;
1384 armv7*) target_cpu_cname="generic-armv7-a";;
1387 arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)
1388 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"
1389 extra_options="${extra_options} linux-android.opt"
1392 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1395 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
1396 tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h arm/aout.h arm/arm.h"
1398 arm*-*-uclinuxfdpiceabi)
1399 tm_file="$tm_file arm/uclinuxfdpiceabi.h"
1402 # Define with_float to "hard" if not already defined and
1403 # target name ends with "hf"
1404 case $target:$with_float in
1409 # Generation of floating-point instructions requires at least ARMv5te.
1410 if [ "$with_float" = "hard" -o "$with_float" = "softfp" ] ; then
1411 target_cpu_cname="arm10e"
1413 target_cpu_cname="arm10tdmi"
1415 # Define multilib configuration for arm-linux-androideabi.
1418 tmake_file="$tmake_file arm/t-linux-androideabi"
1421 # The EABI requires the use of __cxa_atexit.
1422 default_use_cxa_atexit=yes
1423 with_tls=${with_tls:-gnu}
1425 arm*-*-uclinux*eabi*) # ARM ucLinux
1426 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
1427 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi"
1428 tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h arm/aout.h arm/arm.h"
1429 target_cpu_cname="arm7tdmi"
1430 # The EABI requires the use of __cxa_atexit.
1431 default_use_cxa_atexit=yes
1434 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1435 tm_file="${tm_file} newlib-stdint.h phoenix.h"
1436 tm_file="${tm_file} arm/aout.h arm/arm.h"
1437 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi arm/t-phoenix"
1438 target_cpu_cname="arm7tdmi"
1440 arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
1443 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1445 default_use_cxa_atexit=yes
1446 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1447 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf"
1448 target_cpu_cname="arm7tdmi"
1451 tm_file="$tm_file newlib-stdint.h"
1452 tmake_file="${tmake_file} arm/t-bpabi"
1456 tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h"
1457 tmake_file="${tmake_file} arm/t-bpabi arm/t-fuchsia"
1458 target_cpu_cname="generic-armv7-a"
1461 tm_file="${tm_file} arm/rtems.h rtems.h newlib-stdint.h"
1462 tmake_file="${tmake_file} arm/t-bpabi arm/t-rtems"
1465 tm_file="${tm_file} arm/symbian.h"
1466 # We do not include t-bpabi for Symbian OS because the system
1467 # provides its own implementation of the BPABI functions.
1468 tmake_file="${tmake_file} arm/t-symbian"
1469 target_cpu_cname="arm10tdmi"
1472 tm_file="${tm_file} arm/aout.h arm/arm.h"
1475 tm_file="elfos.h avr/elf.h avr/avr-arch.h avr/avr.h avr/specs.h avr/avr-stdint.h"
1476 if test x${with_avrlibc} != xno; then
1477 tm_file="${tm_file} ${cpu_type}/avrlibc.h"
1478 tm_defines="${tm_defines} WITH_AVRLIBC"
1480 # Work out avr_double_comparison which is 2 or 3 and is used in
1481 # target hook FLOAT_LIB_COMPARE_RETURNS_BOOL to determine whether
1482 # DFmode comparisons return 3-state or 2-state results.
1483 case y${with_double_comparison} in
1485 avr_double_comparison=3
1488 avr_double_comparison=2
1491 echo "Error: --with-double-comparison= can only be used with: 'tristate', 'bool', 'libf7'" 1>&2
1495 case "y${with_libf7}" in
1497 # avr_double_comparison as set above.
1500 avr_double_comparison=2
1501 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1503 y | yyes | ymath-symbols)
1504 avr_double_comparison=2
1505 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1506 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1507 tm_defines="${tm_defines} WITH_LIBF7_MATH_SYMBOLS"
1510 avr_double_comparison=2
1511 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1512 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1515 echo "Error: --with-libf7=${with_libf7} but can only be used with: 'libgcc', 'math', 'math-symbols', 'yes', 'no'" 1>&2
1519 tm_defines="${tm_defines} WITH_DOUBLE_COMPARISON=${avr_double_comparison}"
1520 case y${with_double} in
1523 tm_defines="${tm_defines} HAVE_DOUBLE32"
1527 tm_defines="${tm_defines} HAVE_DOUBLE64"
1531 avr_double_multilib=1
1532 tm_defines="${tm_defines} HAVE_DOUBLE32"
1533 tm_defines="${tm_defines} HAVE_DOUBLE64"
1534 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1538 avr_double_multilib=1
1539 tm_defines="${tm_defines} HAVE_DOUBLE32"
1540 tm_defines="${tm_defines} HAVE_DOUBLE64"
1541 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1544 echo "Error: --with-double= can only be used with: '32', '32,64', '64,32', '64'" 1>&2
1548 case y${with_long_double} in
1551 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1555 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1559 avr_long_double_multilib=1
1560 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1561 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1562 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1566 avr_long_double_multilib=1
1567 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1568 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1569 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1572 avr_long_double=${avr_double}
1573 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_IS_DOUBLE"
1574 if test y${avr_double_multilib} = y1; then
1575 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1576 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1578 tm_defines="${tm_defines} HAVE_LONG_DOUBLE${avr_long_double}"
1582 echo "Error: --with-long_double= can only be used with: '32', '32,64', '64,32', '64', 'double'" 1>&2
1586 if test ${avr_long_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 32xy1z; then
1587 if test y${with_long_double} != ydouble; then
1588 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
1592 if test ${avr_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 64x1yz; then
1593 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
1596 if test y${avr_double}${avr_long_double} = y6432; then
1597 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
1600 tm_defines="${tm_defines} WITH_DOUBLE${avr_double}"
1601 tm_defines="${tm_defines} WITH_LONG_DOUBLE${avr_long_double}"
1602 tmake_file="${tmake_file} avr/t-avr avr/t-multilib"
1604 extra_gcc_objs="driver-avr.o avr-devices.o"
1605 extra_objs="avr-devices.o avr-log.o"
1608 tm_file="${tm_file} elfos.h newlib-stdint.h bfin/elf.h"
1609 tmake_file=bfin/t-bfin-elf
1613 tm_file="${tm_file} elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/uclinux.h"
1614 tmake_file=bfin/t-bfin-uclinux
1617 bfin*-linux-uclibc*)
1618 tm_file="${tm_file} elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/linux.h ./linux-sysroot-suffix.h"
1619 tmake_file="${tmake_file} bfin/t-bfin-linux"
1623 tm_file="${tm_file} elfos.h bfin/elf.h bfin/rtems.h rtems.h newlib-stdint.h"
1624 tmake_file="${tmake_file} bfin/t-rtems"
1627 tm_file="${tm_file} elfos.h newlib-stdint.h bfin/elf.h"
1632 tm_file="elfos.h ${tm_file}"
1633 tmake_file="${tmake_file} bpf/t-bpf"
1635 extra_headers="bpf-helpers.h"
1636 use_gcc_stdint=provide
1637 extra_objs="coreout.o core-builtins.o"
1638 target_gtfiles="$target_gtfiles \$(srcdir)/config/bpf/coreout.cc \$(srcdir)/config/bpf/core-builtins.cc"
1640 cris-*-elf | cris-*-none)
1641 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1642 tmake_file="cris/t-cris cris/t-elfmulti"
1644 extra_options="${extra_options} cris/elf.opt"
1648 if test x${with_endian} != x; then
1649 case ${with_endian} in
1652 echo "with_endian=${with_endian} not supported."
1657 if test x${with_float} != x; then
1658 case ${with_float} in
1659 soft | hard | softfp) ;;
1661 "Unknown floating point type used in --with-float=$with_float"
1666 tm_file="csky/csky.h"
1667 md_file="csky/csky.md"
1668 out_file="csky/csky.cc"
1669 tm_p_file="${tm_p_file} csky/csky-protos.h"
1670 extra_options="${extra_options} csky/csky_tables.opt"
1672 if test x${enable_tpf_debug} = xyes; then
1673 tm_defines="${tm_defines} ENABLE_TPF_DEBUG"
1678 tm_file="elfos.h newlib-stdint.h ${tm_file} csky/csky-elf.h"
1679 tmake_file="csky/t-csky csky/t-csky-elf"
1680 default_use_cxa_atexit=no
1684 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} csky/csky-linux-elf.h"
1685 tmake_file="${tmake_file} csky/t-csky"
1687 if test "x${enable_multilib}" = xyes ; then
1688 tm_defines="$tm_defines CSKY_ENABLE_MULTILIB"
1689 tmake_file="${tmake_file} csky/t-csky-linux"
1694 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
1695 # Force .init_array support. The configure script cannot always
1696 # automatically detect that GAS supports it, yet we require it.
1697 gcc_cv_initfini_array=yes
1699 csky-*-linux-uclibc*)
1700 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
1701 default_use_cxa_atexit=no
1704 echo "Unknown target $target"
1710 echo "Unknown target $target"
1715 epiphany-*-elf | epiphany-*-rtems*)
1716 tm_file="elfos.h ${tm_file}"
1717 tmake_file="${tmake_file} epiphany/t-epiphany"
1720 tm_file="${tm_file} epiphany/rtems.h rtems.h newlib-stdint.h"
1723 tm_file="${tm_file} newlib-stdint.h"
1726 extra_options="${extra_options} fused-madd.opt"
1727 extra_objs="${extra_objs} mode-switch-use.o resolve-sw-modes.o"
1728 tm_defines="${tm_defines} EPIPHANY_STACK_OFFSET=${with_stack_offset:-8}"
1729 extra_headers="epiphany_intrinsics.h"
1732 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1735 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1736 tmake_file=frv/t-frv
1739 tm_file="elfos.h ${tm_file} \
1740 gnu-user.h linux.h glibc-stdint.h frv/linux.h"
1741 tmake_file="${tmake_file} frv/t-frv frv/t-linux"
1746 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1747 tmake_file="${tmake_file} ft32/t-ft32"
1750 tm_file="elfos.h gcn/gcn-hsa.h gcn/gcn.h newlib-stdint.h"
1751 tmake_file="gcn/t-gcn-hsa"
1752 native_system_header_dir=/include
1753 extra_modes=gcn/gcn-modes.def
1754 extra_objs="${extra_objs} gcn-tree.o"
1755 extra_gcc_objs="driver-gcn.o"
1757 x86_64*-*-linux-gnu )
1758 if test "$ac_cv_search_dlopen" != no; then
1759 extra_programs="${extra_programs} gcn-run\$(exeext)"
1763 if test x$enable_as_accelerator = xyes; then
1764 extra_programs="${extra_programs} mkoffload\$(exeext)"
1765 tm_file="${tm_file} gcn/offload.h"
1767 # Force .init_array support.
1768 gcc_cv_initfini_array=yes
1774 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1775 tmake_file="${tmake_file} moxie/t-moxie"
1780 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h moxie/uclinux.h"
1781 tmake_file="${tmake_file} moxie/t-moxie"
1784 tmake_file="${tmake_file} moxie/t-moxie"
1785 tm_file="moxie/moxie.h elfos.h moxie/rtems.h rtems.h newlib-stdint.h"
1790 tm_file="${tm_file} elfos.h moxie/moxiebox.h newlib-stdint.h"
1791 tmake_file="${tmake_file} moxie/t-moxiebox"
1794 tmake_file="h8300/t-h8300"
1795 tm_file="h8300/h8300.h elfos.h newlib-stdint.h h8300/elf.h"
1798 tmake_file="${tmake_file} h8300/t-h8300 h8300/t-linux"
1799 tm_file="h8300/h8300.h elfos.h gnu-user.h linux.h glibc-stdint.h h8300/linux.h"
1802 target_cpu_default="MASK_PA_11|MASK_PA_20"
1803 tm_file="pa/pa64-start.h ${tm_file} elfos.h gnu-user.h linux.h \
1804 glibc-stdint.h pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h \
1806 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1807 d_target_objs="${d_target_objs} pa-d.o"
1811 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS|MASK_CALLER_COPIES"
1812 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h pa/pa-linux.h \
1813 pa/pa32-regs.h pa/pa32-linux.h"
1814 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1815 d_target_objs="${d_target_objs} pa-d.o"
1818 target_cpu_default="MASK_PA_11"
1819 tm_file="${tm_file} elfos.h openbsd.h openbsd-stdint.h openbsd-libpthread.h \
1820 pa/pa-openbsd.h pa/pa32-regs.h pa/pa32-openbsd.h"
1821 extra_options="${extra_options} openbsd.opt"
1822 tmake_file="pa/t-pa"
1823 d_target_objs="${d_target_objs} pa-d.o"
1828 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS"
1829 tm_file="${tm_file} elfos.h ${nbsd_tm_file} \
1830 pa/pa-netbsd.h pa/pa32-regs.h pa/pa32-netbsd.h"
1831 tmake_file="${tmake_file}"
1832 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
1833 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1836 target_cpu_default="MASK_PA_11|MASK_PA_20"
1837 if test x$gnu_ld = xyes
1839 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
1841 tm_file="pa/pa64-start.h ${tm_file} elfos.h \
1842 pa/pa64-regs.h pa/pa-hpux.h pa/pa-hpux1010.h \
1846 tm_file="${tm_file} pa/pa-hpux1111.h pa/pa-64.h pa/pa64-hpux.h"
1847 extra_options="${extra_options} pa/pa-hpux1111.opt"
1850 tm_file="${tm_file} pa/pa-hpux1131.h pa/pa-64.h pa/pa64-hpux.h"
1851 extra_options="${extra_options} pa/pa-hpux1131.opt"
1854 tm_file="${tm_file} pa/pa-64.h pa/pa64-hpux.h"
1857 extra_options="${extra_options} pa/pa-hpux.opt \
1858 pa/pa-hpux1010.opt pa/pa64-hpux.opt hpux11.opt"
1859 tmake_file="pa/t-pa t-slibgcc"
1860 d_target_objs="${d_target_objs} pa-d.o"
1861 case x${enable_threads} in
1869 use_gcc_stdint=provide
1870 tm_file="${tm_file} hpux-stdint.h"
1874 tm_file="${tm_file} hpux-stdint.h"
1878 i[34567]86-*-darwin1[89]* | i[34567]86-*-darwin2*)
1879 echo "Error: 32bit target is not supported after Darwin17" 1>&2
1881 i[34567]86-*-darwin*)
1883 # Baseline choice for a machine that allows m64 support.
1884 with_cpu=${with_cpu:-core2}
1885 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch t-slibgcc"
1886 tm_file="${cpu_type}/darwin32-biarch.h ${tm_file} "
1888 x86_64-*-darwin1[89]* | x86_64-*-darwin2*)
1890 tm_defines="${tm_defines} TARGET_64BIT_DEFAULT=(OPTION_MASK_ISA_64BIT|OPTION_MASK_ABI_64)"
1891 tm_defines="${tm_defines} TARGET_BI_ARCH=0"
1892 with_cpu=${with_cpu:-core2}
1893 tmake_file="${tmake_file} t-slibgcc"
1896 with_cpu=${with_cpu:-core2}
1897 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
1898 tm_file="${cpu_type}/darwin64-biarch.h ${tm_file} "
1900 i[34567]86-*-elfiamcu)
1901 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/iamcu.h"
1904 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h"
1907 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h"
1910 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"
1913 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/rdos.h"
1916 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"
1917 tmake_file="i386/t-i386elf t-svr4"
1919 i[34567]86-*-dragonfly*)
1920 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h dragonfly.h dragonfly-stdint.h i386/dragonfly.h"
1921 tmake_file="${tmake_file} i386/t-crtstuff"
1923 x86_64-*-dragonfly*)
1924 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h dragonfly.h dragonfly-stdint.h i386/x86-64.h i386/dragonfly.h"
1925 tmake_file="${tmake_file} i386/t-crtstuff"
1927 i[34567]86-*-freebsd*)
1928 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
1931 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"
1933 i[34567]86-*-netbsdelf*)
1934 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${nbsd_tm_file} i386/netbsd-elf.h"
1935 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1938 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${nbsd_tm_file} i386/x86-64.h i386/netbsd64.h"
1939 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1941 i[34567]86-*-openbsd*)
1942 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
1943 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/openbsdelf.h"
1944 extra_options="${extra_options} openbsd.opt"
1949 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
1950 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/x86-64.h i386/openbsdelf.h"
1951 extra_options="${extra_options} openbsd.opt"
1955 i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu)
1956 # Intel 80386's running GNU/*
1957 # with ELF format using glibc 2
1958 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h gnu-user.h glibc-stdint.h"
1960 i[34567]86-*-linux*)
1961 tm_file="${tm_file} linux.h linux-android.h"
1962 extra_options="${extra_options} linux-android.opt"
1963 if test x$enable_targets = xall; then
1964 tm_file="${tm_file} i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h i386/linux-common.h i386/linux64.h"
1965 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
1966 tmake_file="${tmake_file} i386/t-linux64"
1967 x86_multilibs="${with_multilib_list}"
1968 if test "$x86_multilibs" = "default"; then
1969 x86_multilibs="m64,m32"
1971 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
1972 for x86_multilib in ${x86_multilibs}; do
1973 case ${x86_multilib} in
1975 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
1978 echo "--with-multilib-list=${x86_with_multilib} not supported."
1982 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1984 if test x$with_cpu = x; then
1985 if test x$with_cpu_64 = x; then
1989 case " $x86_cpus $x86_archs $x86_64_archs " in
1993 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
1994 echo "$x86_cpus $x86_archs $x86_64_archs " 1>&2
2000 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h i386/linux-common.h i386/linux.h"
2003 i[34567]86-*-kfreebsd*-gnu)
2004 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kfreebsd-gnu.h i386/kfreebsd-gnu.h"
2006 i[34567]86-*-kopensolaris*-gnu)
2007 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kopensolaris-gnu.h i386/kopensolaris-gnu.h"
2010 tm_file="$tm_file i386/gnu-user-common.h i386/gnu-user.h gnu.h i386/gnu.h"
2014 x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-gnu*)
2015 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h gnu-user.h glibc-stdint.h \
2016 i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h"
2019 tm_file="${tm_file} linux.h linux-android.h i386/linux-common.h i386/linux64.h"
2020 extra_options="${extra_options} linux-android.opt"
2022 x86_64-*-kfreebsd*-gnu)
2023 tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu64.h"
2026 tm_file="${tm_file} gnu.h i386/gnu64.h"
2029 tmake_file="${tmake_file} i386/t-linux64"
2030 x86_multilibs="${with_multilib_list}"
2031 if test "$x86_multilibs" = "default"; then
2034 x86_multilibs="mx32"
2037 x86_multilibs="m64,m32"
2041 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
2042 for x86_multilib in ${x86_multilibs}; do
2043 case ${x86_multilib} in
2045 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
2048 echo "--with-multilib-list=${x86_with_multilib} not supported."
2052 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2054 i[34567]86-pc-msdosdjgpp*)
2055 xm_file=i386/xm-djgpp.h
2056 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/djgpp.h i386/djgpp-stdint.h"
2057 native_system_header_dir=/dev/env/DJDIR/include
2058 extra_options="${extra_options} i386/djgpp.opt"
2063 i[34567]86-*-lynxos*)
2065 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h i386/lynx.h lynx.h"
2066 tmake_file="${tmake_file} t-lynx"
2067 extra_options="${extra_options} lynx.opt"
2072 i[34567]86-*-nto-qnx*)
2073 tm_file="${tm_file} i386/att.h tm-dwarf2.h elfos.h i386/unix.h i386/nto.h"
2074 extra_options="${extra_options} i386/nto.opt"
2078 i[34567]86-*-rtems*)
2079 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h i386/i386elf.h i386/rtemself.h rtems.h newlib-stdint.h"
2080 tmake_file="${tmake_file} i386/t-rtems"
2082 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
2083 # Set default arch_32 to pentium4, tune_32 to generic like the other
2084 # i386 targets, although config.guess defaults to i386-pc-solaris2*.
2085 with_arch_32=${with_arch_32:-pentium4}
2086 with_tune_32=${with_tune_32:-generic}
2087 tm_file="${tm_file} i386/unix.h i386/att.h ${sol2_tm_file_head} i386/x86-64.h ${sol2_tm_file_tail}"
2088 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2089 tmake_file="$tmake_file i386/t-sol2"
2091 if test x$with_cpu = x; then
2092 if test x$with_cpu_64 = x; then
2096 case " $x86_cpus $x86_archs $x86_64_archs " in
2100 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2101 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2107 i[4567]86-wrs-vxworks*|x86_64-wrs-vxworks7*)
2108 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
2112 tm_file="${tm_file} i386/x86-64.h"
2115 tm_file="${tm_file} vx-common.h"
2118 tm_file="${tm_file} vxworksae.h i386/vxworks.h i386/vxworksae.h"
2119 tmake_file="${tmake_file} i386/t-vxworks i386/t-vxworksae"
2122 tm_file="${tm_file} vxworks.h i386/vxworks.h"
2123 tmake_file="${tmake_file} i386/t-vxworks"
2127 i[34567]86-*-cygwin*)
2128 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h i386/cygwin.h i386/cygwin-stdint.h"
2129 xm_file=i386/xm-cygwin.h
2130 tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
2131 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2132 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
2133 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2134 c_target_objs="${c_target_objs} msformat-c.o"
2135 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2136 d_target_objs="${d_target_objs} cygwin-d.o"
2137 target_has_targetdm="yes"
2138 if test x$enable_threads = xyes; then
2141 default_use_cxa_atexit=yes
2146 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"
2147 xm_file=i386/xm-cygwin.h
2148 tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
2149 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2150 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
2151 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2152 c_target_objs="${c_target_objs} msformat-c.o"
2153 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2154 d_target_objs="${d_target_objs} cygwin-d.o"
2155 target_has_targetdm="yes"
2156 if test x$enable_threads = xyes; then
2159 default_use_cxa_atexit=yes
2161 tm_defines="${tm_defines} TARGET_CYGWIN64=1"
2163 i[34567]86-*-mingw* | x86_64-*-mingw*)
2164 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h"
2165 xm_file=i386/xm-mingw32.h
2166 c_target_objs="${c_target_objs} winnt-c.o"
2167 cxx_target_objs="${cxx_target_objs} winnt-c.o"
2168 d_target_objs="${d_target_objs} winnt-d.o"
2169 target_has_targetcm="yes"
2170 target_has_targetdm="yes"
2172 x86_64-*-* | *-w64-*)
2178 if test x$enable_threads = xposix ; then
2179 tm_file="${tm_file} i386/mingw-pthread.h"
2181 if test x$enable_threads = xmcf ; then
2182 tm_file="${tm_file} i386/mingw-mcfgthread.h"
2184 tm_file="${tm_file} i386/mingw32.h"
2185 # This makes the logic if mingw's or the w64 feature set has to be used
2188 user_headers_inc_next_post="${user_headers_inc_next_post} float.h"
2189 user_headers_inc_next_pre="${user_headers_inc_next_pre} stddef.h stdarg.h"
2190 tm_file="${tm_file} i386/mingw-w64.h"
2191 if test x$enable_targets = xall; then
2192 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2193 if test x$with_cpu = x; then
2194 if test x$with_cpu_64 = x; then
2198 case " $x86_cpus $x86_archs $x86_64_archs " in
2202 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2203 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2213 tm_file="${tm_file} i386/mingw-stdint.h"
2214 tmake_file="${tmake_file} t-winnt i386/t-cygming t-slibgcc"
2217 tmake_file="${tmake_file} i386/t-mingw-w64"
2220 tmake_file="${tmake_file} i386/t-mingw-w32"
2223 native_system_header_dir=/mingw/include
2224 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2225 extra_options="${extra_options} i386/cygming.opt i386/mingw.opt"
2228 extra_options="${extra_options} i386/mingw-w64.opt"
2233 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2234 c_target_objs="${c_target_objs} msformat-c.o"
2235 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2238 default_use_cxa_atexit=yes
2240 case ${enable_threads} in
2250 tm_file="${tm_file} i386/crtdll.h"
2252 *mingw32msv* | *mingw*)
2257 tmake_file="${tmake_file} i386/t-x86_64-elf"
2258 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h fuchsia.h"
2261 tm_file="${tm_file} elfos.h newlib-stdint.h ia64/sysv4.h ia64/elf.h"
2262 tmake_file="ia64/t-ia64"
2263 target_cpu_default="0"
2264 if test x$gas = xyes
2266 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2268 if test x$gnu_ld = xyes
2270 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
2274 tm_file="${tm_file} elfos.h ${fbsd_tm_file} ia64/sysv4.h ia64/freebsd.h"
2275 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2276 tmake_file="${tmake_file} ia64/t-ia64"
2279 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h ia64/sysv4.h ia64/linux.h"
2280 tmake_file="${tmake_file} ia64/t-ia64 ia64/t-linux t-libunwind"
2281 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2284 tm_file="${tm_file} elfos.h ia64/sysv4.h ia64/hpux.h"
2285 tmake_file="ia64/t-ia64 ia64/t-hpux t-slibgcc"
2286 target_cpu_default="MASK_GNU_AS"
2287 case x$enable_threads in
2293 c_target_objs="ia64-c.o"
2294 cxx_target_objs="ia64-c.o"
2295 extra_options="${extra_options} ia64/ilp32.opt hpux11.opt"
2297 tm_file="${tm_file} hpux-stdint.h"
2300 tm_file="${tm_file} ia64/hpux-unix2003.h"
2305 tm_file="${tm_file} elfos.h ia64/sysv4.h vms/vms.h ia64/vms.h"
2306 tmake_file="${tmake_file} ia64/t-ia64"
2307 target_cpu_default="0"
2308 if test x$gas = xyes
2310 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2312 extra_options="${extra_options} ia64/vms.opt"
2315 tm_file="elfos.h newlib-stdint.h iq2000/iq2000.h"
2316 out_file=iq2000/iq2000.cc
2317 md_file=iq2000/iq2000.md
2320 tm_file="elfos.h ${tm_file} newlib-stdint.h"
2321 tmake_file="${tmake_file} lm32/t-lm32"
2324 tm_file="elfos.h ${tm_file} lm32/rtems.h rtems.h newlib-stdint.h"
2325 tmake_file="${tmake_file} lm32/t-lm32"
2326 tmake_file="${tmake_file} lm32/t-rtems"
2329 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h lm32/uclinux-elf.h"
2330 tmake_file="${tmake_file} lm32/t-lm32"
2333 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2336 tm_file="elfos.h newlib-stdint.h m32r/little.h ${tm_file}"
2338 m68k-*-elf* | fido-*-elf*)
2341 # Check that $with_cpu makes sense.
2346 echo "Cannot accept --with-cpu=$with_cpu"
2353 default_m68k_cpu=68020
2357 tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h elfos.h newlib-stdint.h m68k/m68kemb.h m68k/m68020-elf.h"
2358 tm_defines="${tm_defines} MOTOROLA=1"
2359 tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-m68kelf"
2360 # Add multilibs for targets other than fido.
2365 tmake_file="$tmake_file m68k/t-mlibs"
2370 default_m68k_cpu=68020
2372 tm_file="${tm_file} elfos.h ${nbsd_tm_file} m68k/netbsd-elf.h"
2373 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2374 tm_defines="${tm_defines} MOTOROLA=1 CHAR_FAST8=1 SHORT_FAST16=1"
2376 m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux
2377 # with uClibc, using the new GNU/Linux-style
2379 default_m68k_cpu=68020
2381 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"
2382 extra_options="${extra_options} m68k/uclinux.opt"
2383 tm_defines="${tm_defines} MOTOROLA=1"
2384 tmake_file="m68k/t-floatlib m68k/t-uclinux m68k/t-mlibs"
2386 m68k-*-linux*) # Motorola m68k's running GNU/Linux
2387 # with ELF format using glibc 2
2388 # aka the GNU/Linux C library 6.
2389 default_m68k_cpu=68020
2391 with_arch=${with_arch:-m68k}
2392 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h m68k/linux.h ./sysroot-suffix.h"
2393 extra_options="${extra_options} m68k/ieee.opt"
2394 tm_defines="${tm_defines} MOTOROLA=1"
2395 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-linux m68k/t-mlibs"
2398 default_m68k_cpu=68020
2400 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-m68kbare m68k/t-crtstuff m68k/t-rtems m68k/t-mlibs"
2401 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"
2402 tm_defines="${tm_defines} MOTOROLA=1"
2405 tm_file="elfos.h newlib-stdint.h ${tm_file} mcore/mcore-elf.h"
2406 tmake_file=mcore/t-mcore
2412 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2415 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2418 tm_file="${tm_file} gnu-user.h linux.h microblaze/linux.h"
2419 tm_file="${tm_file} glibc-stdint.h"
2420 c_target_objs="${c_target_objs} microblaze-c.o"
2421 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2422 tmake_file="${tmake_file} microblaze/t-microblaze"
2423 tmake_file="${tmake_file} microblaze/t-microblaze-linux"
2425 microblaze*-*-rtems*)
2428 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2431 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2434 tm_file="${tm_file}"
2435 tm_file="${tm_file} microblaze/rtems.h rtems.h newlib-stdint.h"
2436 c_target_objs="${c_target_objs} microblaze-c.o"
2437 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2438 tmake_file="${tmake_file} microblaze/t-microblaze"
2439 tmake_file="${tmake_file} microblaze/t-rtems"
2444 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2447 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2450 tm_file="${tm_file} newlib-stdint.h"
2451 c_target_objs="${c_target_objs} microblaze-c.o"
2452 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2453 tmake_file="${tmake_file} microblaze/t-microblaze"
2456 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} riscv/linux.h"
2457 case "x${enable_multilib}" in
2459 xyes) tmake_file="${tmake_file} riscv/t-linux-multilib" ;;
2460 *) echo "Unknown value for enable_multilib"; exit 1
2462 tmake_file="${tmake_file} riscv/t-riscv riscv/t-linux"
2463 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
2467 riscv32be-*|riscv64be-*)
2468 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2471 # Force .init_array support. The configure script cannot always
2472 # automatically detect that GAS supports it, yet we require it.
2473 gcc_cv_initfini_array=yes
2475 riscv*-*-elf* | riscv*-*-rtems*)
2476 tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h"
2479 tm_file="${tm_file} riscv/rtems.h rtems.h"
2480 tmake_file="${tmake_file} riscv/t-rtems"
2483 if test "x${with_multilib_generator}" = xdefault; then
2484 case "x${enable_multilib}" in
2486 xyes) tmake_file="${tmake_file} riscv/t-elf-multilib" ;;
2487 *) echo "Unknown value for enable_multilib"; exit 1
2491 tmake_file="${tmake_file} riscv/t-riscv"
2495 riscv32be-*|riscv64be-*)
2496 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2499 # Force .init_array support. The configure script cannot always
2500 # automatically detect that GAS supports it, yet we require it.
2501 gcc_cv_initfini_array=yes
2504 tm_file="${tm_file} elfos.h ${fbsd_tm_file} riscv/freebsd.h"
2505 tmake_file="${tmake_file} riscv/t-riscv"
2509 riscv32be-*|riscv64be-*)
2510 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2513 # Force .init_array support. The configure script cannot always
2514 # automatically detect that GAS supports it, yet we require it.
2515 gcc_cv_initfini_array=yes
2518 loongarch*-*-linux*)
2519 tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file}"
2520 tm_file="${tm_file} loongarch/gnu-user.h loongarch/linux.h"
2521 extra_options="${extra_options} linux-android.opt"
2522 tmake_file="${tmake_file} loongarch/t-multilib loongarch/t-linux"
2526 # Force .init_array support. The configure script cannot always
2527 # automatically detect that GAS supports it, yet we require it.
2528 gcc_cv_initfini_array=yes
2532 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2533 tm_file="${tm_file} loongarch/elf.h loongarch/linux.h"
2534 tmake_file="${tmake_file} loongarch/t-multilib loongarch/t-linux"
2538 # For .init_array support. The configure script cannot always
2539 # automatically detect that GAS supports it, yet we require it.
2540 gcc_cv_initfini_array=yes
2543 mips*-*-netbsd*) # NetBSD/mips, either endian.
2544 target_cpu_default="MASK_ABICALLS"
2545 tm_file="elfos.h ${tm_file} mips/elf.h ${nbsd_tm_file} mips/netbsd.h"
2546 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2549 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"
2550 extra_options="${extra_options} linux-android.opt"
2551 tmake_file="${tmake_file} mips/t-img-linux"
2552 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2553 with_arch_32="mips32r6"
2554 with_arch_64="mips64r6"
2559 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"
2560 extra_options="${extra_options} linux-android.opt"
2561 tmake_file="${tmake_file} mips/t-mti-linux"
2562 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2563 with_arch_32="mips32r2"
2564 with_arch_64="mips64r2"
2568 mips*-*-linux*) # Linux MIPS, either endian.
2569 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"
2570 extra_options="${extra_options} linux-android.opt"
2573 default_mips_arch=mips32r6
2576 default_mips_arch=mips32r2
2579 default_mips_arch=mips32
2581 mips64el-st-linux-gnu)
2582 default_mips_abi=n32
2583 tm_file="${tm_file} mips/st.h"
2584 tmake_file="${tmake_file} mips/t-st"
2585 enable_mips_multilibs="yes"
2587 mips64octeon*-*-linux*)
2588 default_mips_abi=n32
2589 tm_defines="${tm_defines} MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\""
2590 target_cpu_default=MASK_SOFT_FLOAT_ABI
2591 enable_mips_multilibs="yes"
2593 mipsisa64r6*-*-linux-gnuabi64)
2595 default_mips_arch=mips64r6
2596 enable_mips_multilibs="yes"
2598 mipsisa64r6*-*-linux*)
2599 default_mips_abi=n32
2600 default_mips_arch=mips64r6
2601 enable_mips_multilibs="yes"
2603 mipsisa64r2*-*-linux-gnuabi64)
2605 default_mips_arch=mips64r2
2606 enable_mips_multilibs="yes"
2608 mipsisa64r2*-*-linux*)
2609 default_mips_abi=n32
2610 default_mips_arch=mips64r2
2611 enable_mips_multilibs="yes"
2613 mips64*-*-linux-gnuabi64 | mipsisa64*-*-linux-gnuabi64)
2615 enable_mips_multilibs="yes"
2617 mips64*-*-linux* | mipsisa64*-*-linux*)
2618 default_mips_abi=n32
2619 enable_mips_multilibs="yes"
2622 if test x$enable_targets = xall; then
2623 enable_mips_multilibs="yes"
2625 if test x$enable_mips_multilibs = xyes; then
2626 tmake_file="${tmake_file} mips/t-linux64"
2630 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2631 tmake_file="mips/t-mti-elf"
2632 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2633 with_arch_32="mips32r2"
2634 with_arch_64="mips64r2"
2637 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2638 tmake_file="mips/t-img-elf"
2639 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2640 with_arch_32="mips32r6"
2641 with_arch_64="mips64r6"
2644 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h"
2645 tmake_file="mips/t-sde"
2646 extra_options="${extra_options} mips/sde.opt"
2647 case "${with_newlib}" in
2649 # newlib / libgloss.
2652 # MIPS toolkit libraries.
2653 tm_file="$tm_file mips/sdemtk.h"
2654 tmake_file="$tmake_file mips/t-sdemtk"
2655 case ${enable_threads} in
2657 thread_file='mipssde'
2664 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2667 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2670 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32 MIPS_ABI_DEFAULT=ABI_32"
2673 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6 MIPS_ABI_DEFAULT=ABI_N32"
2676 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2 MIPS_ABI_DEFAULT=ABI_N32"
2679 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_ABI_DEFAULT=ABI_N32"
2683 mipsisa32-*-elf* | mipsisa32el-*-elf* | \
2684 mipsisa32r2-*-elf* | mipsisa32r2el-*-elf* | \
2685 mipsisa32r6-*-elf* | mipsisa32r6el-*-elf* | \
2686 mipsisa64-*-elf* | mipsisa64el-*-elf* | \
2687 mipsisa64r2-*-elf* | mipsisa64r2el-*-elf* | \
2688 mipsisa64r6-*-elf* | mipsisa64r6el-*-elf*)
2689 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2690 tmake_file="mips/t-isa3264"
2693 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6"
2696 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2"
2699 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32"
2702 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6"
2705 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2"
2708 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64"
2712 mipsisa32*-*-elfoabi*)
2713 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_32"
2714 tm_file="${tm_file} mips/elfoabi.h"
2716 mipsisa64*-*-elfoabi*)
2717 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_O64"
2718 tm_file="${tm_file} mips/elfoabi.h"
2721 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2725 mipsisa64sr71k-*-elf*)
2726 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2727 tmake_file=mips/t-sr71k
2728 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sr71000\\\" MIPS_ABI_DEFAULT=ABI_EABI"
2730 mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*)
2731 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2732 tmake_file="mips/t-elf mips/t-sb1"
2733 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sb1\\\" MIPS_ABI_DEFAULT=ABI_O64"
2735 mips-*-elf* | mipsel-*-elf* | mipsr5900-*-elf* | mipsr5900el-*-elf*)
2736 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2737 tmake_file="mips/t-elf"
2739 mips64r5900-*-elf* | mips64r5900el-*-elf*)
2740 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h"
2741 tmake_file="mips/t-elf"
2742 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_N32"
2744 mips64-*-elf* | mips64el-*-elf*)
2745 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2746 tmake_file="mips/t-elf"
2747 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_O64"
2749 mips64vr-*-elf* | mips64vrel-*-elf*)
2750 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/vr.h mips/elf.h"
2751 tmake_file=mips/t-vr
2752 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2754 mips64orion-*-elf* | mips64orionel-*-elf*)
2755 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elforion.h mips/elf.h"
2756 tmake_file="mips/t-elf"
2757 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_O64"
2760 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/rtems.h rtems.h"
2761 tmake_file="${tmake_file} mips/t-elf mips/t-rtems"
2764 tm_file="elfos.h ${tm_file} mips/elf.h vx-common.h vxworks.h mips/vxworks.h"
2765 tmake_file="${tmake_file} mips/t-vxworks"
2767 mipstx39-*-elf* | mipstx39el-*-elf*)
2768 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/r3900.h mips/elf.h"
2769 tmake_file="mips/t-r3900"
2771 mmix-knuth-mmixware)
2772 tm_file="${tm_file} newlib-stdint.h"
2776 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2781 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2782 c_target_objs="msp430-c.o"
2783 cxx_target_objs="msp430-c.o"
2784 tmake_file="${tmake_file} msp430/t-msp430"
2785 extra_objs="${extra_objs} msp430-devices.o"
2786 extra_gcc_objs="driver-msp430.o msp430-devices.o"
2787 # Enable .init_array unless it has been explicitly disabled.
2788 # The MSP430 EABI mandates the use of .init_array, and the Newlib CRT
2789 # code since mid-2019 expects it.
2790 if test x${disable_initfini_array} != xyes; then
2791 gcc_cv_initfini_array=yes
2795 # __cxa_atexit increases code size, and we don't need to support
2796 # dynamic shared objects on MSP430, so regular Newlib atexit is a
2797 # fine replacement as it also supports registration of more than 32
2799 default_use_cxa_atexit=no
2800 # This target does not match the generic *-*-elf case above which
2801 # sets use_gcc_stdint=wrap, so explicitly set it here.
2807 target_cpu_default="0"
2808 tm_defines="${tm_defines}"
2813 target_cpu_default="${target_cpu_default}|MASK_BIG_ENDIAN"
2814 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2819 tm_file="elfos.h newlib-stdint.h ${tm_file} nds32/elf.h nds32/nds32_intrinsic.h"
2820 tmake_file="nds32/t-nds32 nds32/t-elf"
2823 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h nds32/linux.h nds32/nds32_intrinsic.h"
2824 tmake_file="${tmake_file} nds32/t-nds32 nds32/t-linux"
2825 gcc_cv_initfini_array=yes
2829 # Handle --enable-default-relax setting.
2830 if test x${enable_default_relax} = xyes; then
2831 tm_defines="${tm_defines} TARGET_DEFAULT_RELAX=1"
2833 # Handle --with-ext-dsp
2834 if test x${with_ext_dsp} = xyes; then
2835 tm_defines="${tm_defines} TARGET_DEFAULT_EXT_DSP=1"
2839 tm_file="elfos.h ${tm_file}"
2840 tmake_file="${tmake_file} nios2/t-nios2"
2843 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h nios2/linux.h "
2846 tm_file="${tm_file} newlib-stdint.h nios2/elf.h"
2847 extra_options="${extra_options} nios2/elf.opt"
2850 tm_file="${tm_file} newlib-stdint.h nios2/rtems.h rtems.h"
2851 tmake_file="${tmake_file} t-rtems nios2/t-rtems"
2856 tm_file="${tm_file} newlib-stdint.h"
2858 tmake_file="nvptx/t-nvptx"
2859 if test x$enable_as_accelerator = xyes; then
2860 extra_programs="${extra_programs} mkoffload\$(exeext)"
2861 tm_file="${tm_file} nvptx/offload.h"
2865 tm_file="elfos.h ${tm_file}"
2866 tmake_file="${tmake_file} or1k/t-or1k"
2867 # Force .init_array support. The configure script cannot always
2868 # automatically detect that GAS supports it, yet we require it.
2869 gcc_cv_initfini_array=yes
2871 # Handle --with-multilib-list=...
2872 or1k_multilibs="${with_multilib_list}"
2873 if test "$or1k_multilibs" = "default"; then
2874 or1k_multilibs="mcmov,msoft-mul,msoft-div"
2876 or1k_multilibs=`echo $or1k_multilibs | sed -e 's/,/ /g'`
2877 for or1k_multilib in ${or1k_multilibs}; do
2878 case ${or1k_multilib} in
2879 mcmov | msext | msfimm | \
2881 mhard-float | mdouble-float | munordered-float | msoft-float | \
2882 mhard-div | mhard-mul | \
2883 msoft-div | msoft-mul )
2884 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${or1k_multilib}"
2887 echo "--with-multilib-list=${with_multilib_list} not supported."
2891 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2895 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h"
2896 tm_file="${tm_file} or1k/linux.h"
2899 tm_file="${tm_file} newlib-stdint.h or1k/elf.h"
2900 extra_options="${extra_options} or1k/elf.opt"
2903 tm_file="${tm_file} newlib-stdint.h or1k/rtems.h rtems.h"
2904 tmake_file="${tmake_file} or1k/t-rtems"
2909 tm_file="${tm_file} newlib-stdint.h"
2912 # port not yet contributed
2913 #powerpc-*-openbsd*)
2914 # tmake_file="${tmake_file} rs6000/t-fprules"
2918 extra_options="${extra_options} ${cpu_type}/darwin.opt"
2920 *-darwin1[0-9]* | *-darwin9*)
2921 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2922 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2925 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2926 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2929 tm_file="${tm_file} ${cpu_type}/darwin7.h"
2932 # Earlier - ingle arch, with 32b only
2933 # OS X 10.0, the first edition is Darwin4
2936 tmake_file="${tmake_file} t-slibgcc"
2938 powerpc64-*-darwin*)
2939 extra_options="${extra_options} ${cpu_type}/darwin.opt"
2940 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
2941 tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h"
2943 powerpc*-*-freebsd*)
2944 tm_file="${tm_file} elfos.h gnu-user.h ${fbsd_tm_file} rs6000/sysv4.h"
2945 extra_options="${extra_options} rs6000/sysv4.opt"
2946 tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
2949 tm_file="${tm_file} rs6000/sysv4le.h" ;;
2953 tm_file="${tm_file} rs6000/default64.h rs6000/freebsd64.h"
2954 tmake_file="${tmake_file} rs6000/t-freebsd64"
2955 extra_options="${extra_options} rs6000/linux64.opt"
2956 if test $fbsd_major -ge 13; then
2957 tm_defines="${tm_defines} TARGET_FREEBSD32_SECURE_PLT=1"
2961 if test $fbsd_major -ge 13; then
2962 tm_file="rs6000/secureplt.h ${tm_file}"
2964 tm_file="${tm_file} rs6000/freebsd.h"
2969 tm_file="${tm_file} elfos.h gnu-user.h ${nbsd_tm_file} freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h"
2970 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2971 tmake_file="${tmake_file} rs6000/t-netbsd"
2972 extra_options="${extra_options} rs6000/sysv4.opt"
2974 powerpc-*-eabisimaltivec*)
2975 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"
2976 extra_options="${extra_options} rs6000/sysv4.opt"
2977 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
2981 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"
2982 extra_options="${extra_options} rs6000/sysv4.opt"
2983 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
2987 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h"
2988 extra_options="${extra_options} rs6000/sysv4.opt"
2989 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
2991 powerpc-*-eabialtivec*)
2992 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabialtivec.h"
2993 extra_options="${extra_options} rs6000/sysv4.opt"
2994 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
2998 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h"
2999 extra_options="${extra_options} rs6000/sysv4.opt"
3000 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3004 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"
3005 extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
3006 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-rtems rs6000/t-ppccomm"
3009 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h rs6000/sysv4.h"
3010 extra_options="${extra_options} rs6000/sysv4.opt"
3011 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm"
3012 extra_objs="$extra_objs rs6000-linux.o"
3015 tm_file="${tm_file} rs6000/sysv4le.h" ;;
3017 case ${target}:${with_cpu} in
3018 powerpc64*: | powerpc64*:native) cpu_is_64bit=yes ;;
3020 maybe_biarch=${cpu_is_64bit}
3021 case ${enable_targets} in
3022 *powerpc64*) maybe_biarch=yes ;;
3023 all) maybe_biarch=yes ;;
3025 case ${target}:${enable_targets}:${maybe_biarch} in
3026 powerpc64-* | powerpc-*:*:yes | *:*powerpc64-*:yes | *:all:yes \
3027 | powerpc64le*:*powerpcle* | powerpc64le*:*powerpc-* \
3028 | powerpcle-*:*powerpc64le*:yes)
3029 if test x$cpu_is_64bit = xyes; then
3030 tm_file="${tm_file} rs6000/default64.h"
3032 tm_file="rs6000/biarch64.h ${tm_file} rs6000/linux64.h glibc-stdint.h"
3033 tmake_file="$tmake_file rs6000/t-linux64"
3036 tmake_file="$tmake_file rs6000/t-linux64le"
3037 case ${enable_targets} in
3038 all | *powerpc64-* | *powerpc-*)
3039 tmake_file="$tmake_file rs6000/t-linux64lebe" ;;
3042 case ${enable_targets} in
3043 all | *powerpc64le-* | *powerpcle-*)
3044 tmake_file="$tmake_file rs6000/t-linux64bele" ;;
3047 extra_options="${extra_options} rs6000/linux64.opt"
3050 tm_file="${tm_file} rs6000/default64.h rs6000/linux64.h glibc-stdint.h"
3051 extra_options="${extra_options} rs6000/linux64.opt"
3052 tmake_file="${tmake_file} rs6000/t-linux"
3055 tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
3056 tmake_file="${tmake_file} rs6000/t-ppcos rs6000/t-linux"
3060 powerpc*-*-linux*ppc476*)
3061 tm_file="${tm_file} rs6000/476.h"
3062 extra_options="${extra_options} rs6000/476.opt" ;;
3063 powerpc*-*-linux*altivec*)
3064 tm_file="${tm_file} rs6000/linuxaltivec.h" ;;
3068 enable_secureplt=yes ;;
3070 if test x${enable_secureplt} = xyes; then
3071 tm_file="rs6000/secureplt.h ${tm_file}"
3074 powerpc*-wrs-vxworks7r*)
3076 # Wind River 7 post SR0600 is mostly like Linux so we setup
3077 # our config in a very similar fashion and adjust to a few
3080 # The system compiler is configured with secureplt by default.
3081 tm_file="${tm_file} rs6000/secureplt.h"
3083 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h"
3084 tm_file="${tm_file} rs6000/sysv4.h rs6000/biarch64.h rs6000/default64.h rs6000/linux64.h"
3085 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3087 extra_options="${extra_options} rs6000/sysv4.opt linux.opt rs6000/linux64.opt"
3089 tmake_file="${tmake_file} t-linux rs6000/t-linux64 rs6000/t-fprules rs6000/t-ppccomm"
3090 tmake_file="${tmake_file} rs6000/t-vxworks"
3092 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
3093 extra_objs="$extra_objs linux.o rs6000-linux.o"
3095 powerpc-wrs-vxworks*)
3096 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h rs6000/sysv4.h"
3097 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm rs6000/t-vxworks"
3098 extra_options="${extra_options} rs6000/sysv4.opt vxworks-smp.opt"
3099 extra_headers="${extra_headers} ppc-asm.h"
3102 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksmils.h"
3103 tmake_file="${tmake_file} rs6000/t-vxworksmils"
3106 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksae.h"
3107 tmake_file="${tmake_file} rs6000/t-vxworksae"
3110 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3116 tm_file="${tm_file} elfos.h gnu-user.h rs6000/sysv4.h rs6000/lynx.h lynx.h"
3117 tmake_file="t-lynx rs6000/t-lynx"
3118 extra_options="${extra_options} rs6000/sysv4.opt lynx.opt"
3124 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h"
3125 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3126 extra_options="${extra_options} rs6000/sysv4.opt"
3128 powerpcle-*-eabisim*)
3129 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"
3130 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3131 extra_options="${extra_options} rs6000/sysv4.opt"
3135 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"
3136 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3137 extra_options="${extra_options} rs6000/sysv4.opt"
3141 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3142 tmake_file="${tmake_file} pru/t-pru"
3143 extra_objs="pru-pragma.o pru-passes.o"
3146 rs6000-ibm-aix7.1.* | powerpc-ibm-aix7.1.*)
3147 tmake_file="rs6000/t-aix52 t-slibgcc"
3148 if test x$cpu_is_64bit = xyes; then
3149 tm_file="${tm_file} rs6000/biarch64.h"
3150 tmake_file="rs6000/t-aix64 t-slibgcc"
3152 tm_file="${tm_file} rs6000/aix.h rs6000/aix71.h rs6000/xcoff.h rs6000/aix-stdint.h"
3153 extra_options="${extra_options} rs6000/aix64.opt"
3157 default_use_cxa_atexit=yes
3159 rs6000-ibm-aix7.2.* | powerpc-ibm-aix7.2.*)
3160 tmake_file="rs6000/t-aix52 t-slibgcc"
3161 if test x$cpu_is_64bit = xyes; then
3162 tm_file="${tm_file} rs6000/biarch64.h"
3163 tmake_file="rs6000/t-aix64 t-slibgcc"
3165 tm_file="${tm_file} rs6000/aix.h rs6000/aix72.h rs6000/xcoff.h rs6000/aix-stdint.h"
3166 extra_options="${extra_options} rs6000/aix64.opt"
3170 default_use_cxa_atexit=yes
3172 rs6000-ibm-aix[789].* | powerpc-ibm-aix[789].*)
3173 tmake_file="rs6000/t-aix52 t-slibgcc"
3174 if test x$cpu_is_64bit = xyes; then
3175 tm_file="${tm_file} rs6000/biarch64.h"
3176 tmake_file="rs6000/t-aix64 t-slibgcc"
3178 tm_file="${tm_file} rs6000/aix.h rs6000/aix73.h rs6000/xcoff.h rs6000/aix-stdint.h"
3179 extra_options="${extra_options} rs6000/aix64.opt"
3183 default_use_cxa_atexit=yes
3186 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3187 target_has_targetm_common=no
3188 c_target_objs="rl78-c.o"
3189 cxx_target_objs="rl78-c.o"
3190 tmake_file="${tmake_file} rl78/t-rl78"
3193 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3194 tmake_file="${tmake_file} rx/t-rx"
3195 extra_options="${extra_options} rx/elf.opt"
3198 tm_file="elfos.h linux.h glibc-stdint.h rx/linux.h ../../libgcc/config/rx/rx-abi.h"
3199 tmake_file="${tmake_file} rx/t-linux"
3202 tm_file="s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3203 c_target_objs="${c_target_objs} s390-c.o"
3204 cxx_target_objs="${cxx_target_objs} s390-c.o"
3205 if test x$enable_targets = xall; then
3206 tmake_file="${tmake_file} s390/t-linux64"
3208 tmake_file="${tmake_file} s390/t-s390"
3211 tm_file="s390/s390x.h s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3212 tm_p_file="linux-protos.h s390/s390-protos.h"
3213 c_target_objs="${c_target_objs} s390-c.o"
3214 cxx_target_objs="${cxx_target_objs} s390-c.o"
3215 md_file=s390/s390.md
3216 extra_modes=s390/s390-modes.def
3217 out_file=s390/s390.cc
3218 tmake_file="${tmake_file} s390/t-linux64 s390/t-s390"
3221 tm_file="s390/s390x.h s390/s390.h elfos.h glibc-stdint.h s390/tpf.h"
3222 tm_p_file=s390/s390-protos.h
3223 c_target_objs="${c_target_objs} s390-c.o"
3224 cxx_target_objs="${cxx_target_objs} s390-c.o"
3225 md_file=s390/s390.md
3226 extra_modes=s390/s390-modes.def
3227 out_file=s390/s390.cc
3229 extra_options="${extra_options} s390/tpf.opt"
3230 tmake_file="${tmake_file} s390/t-s390"
3232 sh-*-elf* | sh[12346l]*-*-elf* | \
3233 sh-*-linux* | sh[2346lbe]*-*-linux* | \
3234 sh-*-netbsdelf* | shl*-*-netbsdelf*)
3235 tmake_file="${tmake_file} sh/t-sh sh/t-elf"
3236 if test x${with_endian} = x; then
3238 sh[1234]*be-*-* | sh[1234]*eb-*-*) with_endian=big ;;
3239 shbe-*-* | sheb-*-*) with_endian=big,little ;;
3240 sh[1234]l* | sh[34]*-*-linux*) with_endian=little ;;
3241 shl* | sh*-*-linux* | \
3242 sh-superh-elf) with_endian=little,big ;;
3243 sh[1234]*-*-*) with_endian=big ;;
3244 *) with_endian=big,little ;;
3247 # TM_ENDIAN_CONFIG is used by t-sh to determine multilibs.
3248 # First word : the default endian.
3249 # Second word: the secondary endian (optional).
3250 case ${with_endian} in
3251 big) TM_ENDIAN_CONFIG=mb ;;
3252 little) TM_ENDIAN_CONFIG=ml ;;
3253 big,little) TM_ENDIAN_CONFIG="mb ml" ;;
3254 little,big) TM_ENDIAN_CONFIG="ml mb" ;;
3255 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
3257 case ${with_endian} in
3258 little*) tm_file="sh/little.h ${tm_file}" ;;
3260 tm_file="${tm_file} elfos.h sh/elf.h"
3262 sh*-*-linux*) tmake_file="${tmake_file} sh/t-linux"
3263 if test x$enable_fdpic = xyes; then
3264 tm_defines="$tm_defines FDPIC_DEFAULT=1"
3266 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h sh/linux.h" ;;
3268 tm_file="${tm_file} ${nbsd_tm_file} sh/netbsd-elf.h"
3269 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3272 sh*-superh-elf) if test x$with_libgloss != xno; then
3274 tm_file="${tm_file} sh/newlib.h"
3276 tm_file="${tm_file} sh/embed-elf.h"
3277 tm_file="${tm_file} sh/superh.h"
3278 extra_options="${extra_options} sh/superh.opt" ;;
3279 *) if test x$with_newlib = xyes \
3280 && test x$with_libgloss = xyes; then
3281 tm_file="${tm_file} sh/newlib.h"
3283 tm_file="${tm_file} sh/embed-elf.h" ;;
3289 tm_file="${tm_file} newlib-stdint.h"
3292 # sed el/eb endian suffixes away to avoid confusion with sh[23]e
3293 case `echo ${target} | sed 's/e[lb]-/-/'` in
3294 sh4a_single_only*) sh_cpu_target=sh4a-single-only ;;
3295 sh4a_single*) sh_cpu_target=sh4a-single ;;
3296 sh4a_nofpu*) sh_cpu_target=sh4a-nofpu ;;
3297 sh4al) sh_cpu_target=sh4al ;;
3298 sh4a*) sh_cpu_target=sh4a ;;
3299 sh4_single_only*) sh_cpu_target=sh4-single-only ;;
3300 sh4_single*) sh_cpu_target=sh4-single ;;
3301 sh4_nofpu*) sh_cpu_target=sh4-nofpu ;;
3302 sh4* | sh-superh-*) sh_cpu_target=sh4 ;;
3303 sh3e*) sh_cpu_target=sh3e ;;
3304 sh*-*-netbsd* | sh3*) sh_cpu_target=sh3 ;;
3305 sh2a_single_only*) sh_cpu_target=sh2a-single-only ;;
3306 sh2a_single*) sh_cpu_target=sh2a-single ;;
3307 sh2a_nofpu*) sh_cpu_target=sh2a-nofpu ;;
3308 sh2a*) sh_cpu_target=sh2a ;;
3309 sh2e*) sh_cpu_target=sh2e ;;
3310 sh2*) sh_cpu_target=sh2 ;;
3311 *) sh_cpu_target=sh1 ;;
3313 # did the user say --without-fp ?
3314 if test x$with_fp = xno; then
3315 case ${sh_cpu_target} in
3317 sh4a* ) sh_cpu_target=sh4a-nofpu ;;
3318 sh4*) sh_cpu_target=sh4-nofpu ;;
3319 sh3*) sh_cpu_target=sh3 ;;
3320 sh2a*) sh_cpu_target=sh2a-nofpu ;;
3321 sh2*) sh_cpu_target=sh2 ;;
3322 *) echo --without-fp not available for $target: ignored
3324 tm_defines="$tm_defines STRICT_NOFPU=1"
3326 sh_cpu_default="`echo $with_cpu|sed s/^m/sh/|tr A-Z_ a-z-`"
3327 case $sh_cpu_default in
3328 sh2a-single-only | sh2a-single | sh2a-nofpu | sh2a | \
3329 sh4a-single-only | sh4a-single | sh4a-nofpu | sh4a | sh4al | \
3330 sh4-single-only | sh4-single | sh4-nofpu | sh4 | sh4-300 | \
3331 sh3e | sh3 | sh2e | sh2 | sh1) ;;
3332 "") sh_cpu_default=${sh_cpu_target} ;;
3333 *) echo "with_cpu=$with_cpu not supported"; exit 1 ;;
3335 sh_multilibs=${with_multilib_list}
3336 if test "$sh_multilibs" = "default" ; then
3338 sh[1234]*) sh_multilibs=${sh_cpu_target} ;;
3339 sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
3340 sh*-*-linux*) sh_multilibs=m1,m2,m2a,m3e,m4 ;;
3341 sh*-*-netbsd*) sh_multilibs=m3,m3e,m4 ;;
3342 *) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single ;;
3344 if test x$with_fp = xno; then
3345 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`"
3348 target_cpu_default=SELECT_`echo ${sh_cpu_default}|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`
3349 tm_defines=${tm_defines}' SH_MULTILIB_CPU_DEFAULT=\"'`echo $sh_cpu_default|sed s/sh/m/`'\"'
3350 tm_defines="$tm_defines SUPPORT_`echo $sh_cpu_default | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3351 sh_multilibs=`echo $sh_multilibs | sed -e 's/,/ /g' -e 's/^[Ss][Hh]/m/' -e 's/ [Ss][Hh]/ m/g' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-`
3352 for sh_multilib in ${sh_multilibs}; do
3353 case ${sh_multilib} in
3354 m1 | m2 | m2e | m3 | m3e | \
3355 m4 | m4-single | m4-single-only | m4-nofpu | m4-300 |\
3356 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al | \
3357 m2a | m2a-single | m2a-single-only | m2a-nofpu)
3358 # TM_MULTILIB_CONFIG is used by t-sh for the non-endian multilib definition
3359 # It is passed to MULTIILIB_OPTIONS verbatim.
3360 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG}/${sh_multilib}"
3361 tm_defines="$tm_defines SUPPORT_`echo $sh_multilib | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3363 \!*) # TM_MULTILIB_EXCEPTIONS_CONFIG is used by t-sh
3364 # It is passed the MULTILIB_EXCEPTIONS verbatim.
3365 TM_MULTILIB_EXCEPTIONS_CONFIG="${TM_MULTILIB_EXCEPTIONS_CONFIG} `echo $sh_multilib | sed 's/^!//'`" ;;
3367 echo "with_multilib_list=${sh_multilib} not supported."
3372 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's:^/::'`
3373 if test x${enable_incomplete_targets} = xyes ; then
3374 tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1"
3376 tm_file="$tm_file ./sysroot-suffix.h"
3377 tmake_file="$tmake_file t-sysroot-suffix"
3380 tmake_file="${tmake_file} sh/t-sh sh/t-rtems"
3381 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h newlib-stdint.h"
3384 tmake_file="$tmake_file sh/t-sh sh/t-vxworks"
3385 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h vx-common.h vxworks.h sh/vxworks.h"
3388 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp-elf.h"
3391 tmake_file="sparc/t-sparc sparc/t-leon"
3394 tmake_file="sparc/t-sparc sparc/t-leon3"
3397 tmake_file="sparc/t-sparc sparc/t-elf"
3402 tm_file="${tm_file} elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
3403 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
3406 tm_file="${tm_file} elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
3407 extra_options="${extra_options} sparc/long-double-switch.opt"
3410 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon"
3413 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon3"
3416 tmake_file="${tmake_file} sparc/t-sparc"
3419 if test x$enable_targets = xall; then
3420 tm_file="sparc/biarch64.h ${tm_file} sparc/linux64.h"
3421 tmake_file="${tmake_file} sparc/t-linux64"
3423 tm_file="${tm_file} sparc/linux.h"
3424 tmake_file="${tmake_file} sparc/t-linux"
3428 tm_file="${tm_file} elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3429 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3430 extra_options="${extra_options} sparc/long-double-switch.opt"
3431 tmake_file="${tmake_file} sparc/t-sparc"
3434 tm_file="sparc/biarch64.h ${tm_file} ${sol2_tm_file} sparc/tso.h"
3436 sparc64-*-* | sparcv9-*-*)
3437 tm_file="sparc/default64.h ${tm_file}"
3440 test x$with_cpu != x || with_cpu=v9
3443 tmake_file="${tmake_file} sparc/t-sparc sparc/t-sol2"
3446 tm_file="${tm_file} elfos.h sparc/sysv4.h vx-common.h vxworks.h sparc/vxworks.h"
3447 tmake_file="${tmake_file} sparc/t-sparc sparc/t-vxworks"
3450 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h"
3451 extra_options="${extra_options}"
3452 tmake_file="${tmake_file} sparc/t-sparc"
3455 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h sparc/rtemself.h rtems.h"
3456 extra_options="${extra_options}"
3457 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
3460 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"
3461 extra_options="${extra_options} sparc/long-double-switch.opt"
3462 tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
3464 sparc64-*-freebsd*|ultrasparc-*-freebsd*)
3465 tm_file="${tm_file} ${fbsd_tm_file} elfos.h sparc/sysv4.h sparc/freebsd.h"
3466 extra_options="${extra_options} sparc/long-double-switch.opt"
3467 case "x$with_cpu" in
3469 x) with_cpu=ultrasparc ;;
3470 *) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
3472 tmake_file="${tmake_file} sparc/t-sparc"
3475 tm_file="sparc/biarch64.h ${tm_file}"
3476 tm_file="${tm_file} elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3477 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3478 extra_options="${extra_options} sparc/long-double-switch.opt"
3479 tmake_file="${tmake_file} sparc/t-sparc sparc/t-netbsd64"
3482 tm_file="sparc/openbsd1-64.h ${tm_file} elfos.h sparc/sysv4.h sparc/sp64-elf.h"
3483 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h sparc/openbsd64.h"
3484 extra_options="${extra_options} openbsd.opt"
3485 extra_options="${extra_options}"
3488 tmake_file="${tmake_file} sparc/t-sparc"
3491 tm_file="elfos.h ${tm_file} c6x/elf-common.h c6x/elf.h"
3492 tm_file="${tm_file} tm-dwarf2.h newlib-stdint.h"
3493 tmake_file="c6x/t-c6x c6x/t-c6x-elf"
3497 tm_file="elfos.h ${tm_file} gnu-user.h linux.h c6x/elf-common.h c6x/uclinux-elf.h"
3498 tm_file="${tm_file} tm-dwarf2.h glibc-stdint.h"
3499 tm_file="${tm_file} ./sysroot-suffix.h"
3500 tmake_file="t-sysroot-suffix t-slibgcc"
3501 tmake_file="${tmake_file} c6x/t-c6x c6x/t-c6x-elf c6x/t-c6x-uclinux"
3505 target_cpu_default="TARGET_CPU_generic"
3506 tm_file="elfos.h v850/v850.h"
3507 tm_file="${tm_file} v850/rtems.h rtems.h newlib-stdint.h"
3508 tmake_file="${tmake_file} v850/t-v850"
3509 tmake_file="${tmake_file} v850/t-rtems"
3511 c_target_objs="v850-c.o"
3512 cxx_target_objs="v850-c.o"
3517 target_cpu_default="TARGET_CPU_v850e3v5"
3520 target_cpu_default="TARGET_CPU_v850e2v3"
3523 target_cpu_default="TARGET_CPU_v850e2"
3525 v850e1-*-* | v850es-*-*)
3526 target_cpu_default="TARGET_CPU_v850e1"
3529 target_cpu_default="TARGET_CPU_v850e"
3532 target_cpu_default="TARGET_CPU_generic"
3535 tm_file="elfos.h newlib-stdint.h v850/v850.h"
3537 c_target_objs="v850-c.o"
3538 cxx_target_objs="v850-c.o"
3542 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h vax/elf.h vax/linux.h"
3543 extra_options="${extra_options} vax/elf.opt"
3546 tm_file="${tm_file} elfos.h ${nbsd_tm_file} vax/elf.h vax/netbsd-elf.h"
3547 extra_options="${extra_options} netbsd.opt netbsd-elf.opt vax/elf.opt"
3548 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
3551 tm_file="elfos.h ${tm_file} visium/elf.h newlib-stdint.h"
3552 tmake_file="visium/t-visium visium/t-crtstuff"
3555 # For historical reasons, the target files omit the 'x'.
3556 tm_file="elfos.h newlib-stdint.h stormy16/stormy16.h"
3557 tm_p_file=stormy16/stormy16-protos.h
3558 md_file=stormy16/stormy16.md
3559 out_file=stormy16/stormy16.cc
3560 extra_options=stormy16/stormy16.opt
3561 tmake_file="stormy16/t-stormy16"
3564 tm_file="${tm_file} elfos.h newlib-stdint.h xtensa/elf.h"
3565 extra_options="${extra_options} xtensa/elf.opt"
3568 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/linux.h"
3569 tmake_file="${tmake_file} xtensa/t-xtensa"
3572 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/uclinux.h"
3573 tmake_file="${tmake_file} xtensa/t-xtensa"
3574 extra_options="${extra_options} xtensa/uclinux.opt"
3577 tm_file="mn10300/mn10300.h elfos.h gnu-user.h linux.h glibc-stdint.h mn10300/linux.h"
3582 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3583 c_target_objs="m32c-pragma.o"
3584 cxx_target_objs="m32c-pragma.o"
3587 echo "*** Configuration ${target} not supported" 1>&2
3593 i[34567]86-*-linux* | x86_64-*-linux*)
3594 tmake_file="${tmake_file} i386/t-pmm_malloc i386/t-i386"
3596 i[34567]86-*-* | x86_64-*-*)
3597 tmake_file="${tmake_file} i386/t-gmm_malloc i386/t-i386"
3599 powerpc*-*-* | rs6000-*-*)
3600 tm_file="${tm_file} ${cpu_type}/option-defaults.h"
3606 tmake_file="${tmake_file} t-musl"
3609 tmake_file="${tmake_file} t-uclibc"
3613 # Assume the existence of indirect function support and allow the use of the
3614 # resolver attribute.
3616 *-*-linux*android*|*-*-linux*uclibc*|*-*-linux*musl*)
3618 *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
3620 *-*-linux* | *-*-gnu*)
3622 aarch64*-* | arm*-* | i[34567]86-* | powerpc*-* | s390*-* | sparc*-* | x86_64-* | loongarch*-*)
3623 default_gnu_indirect_function=yes
3629 if [ "$target_has_targetcm" = "no" ]; then
3630 c_target_objs="$c_target_objs default-c.o"
3631 cxx_target_objs="$cxx_target_objs default-c.o"
3634 if [ "$common_out_file" = "" ]; then
3635 if [ "$target_has_targetm_common" = "yes" ]; then
3636 common_out_file="$cpu_type/$cpu_type-common.cc"
3638 common_out_file="default-common.cc"
3642 if [ "$target_has_targetdm" = "no" ]; then
3643 d_target_objs="$d_target_objs default-d.o"
3646 if [ "$target_has_targetrustm" = "no" ]; then
3647 rust_target_objs="$rust_target_objs default-rust.o"
3650 # Support for --with-cpu and related options (and a few unrelated options,
3654 echo "--with-cpu must be passed a value" 1>&2
3659 # Set arch and cpu from ${target} and ${target_noncanonical}. Set cpu
3660 # to generic if there is no processor scheduler model for the target.
3663 arch_without_sse2=no
3664 arch_without_64bit=no
3667 if test $fbsd_major -ge 6; then
3673 arch_without_sse2=yes
3674 arch_without_64bit=yes
3679 arch_without_sse2=yes
3680 arch_without_64bit=yes
3685 arch_without_sse2=yes
3686 arch_without_64bit=yes
3691 arch_without_sse2=yes
3692 arch_without_64bit=yes
3695 arch_without_sse2=yes
3696 arch_without_64bit=yes
3697 case ${target_noncanonical} in
3710 pentium_mmx-*|winchip_c6-*|winchip2-*|c3-*)
3720 i686-*-* | i786-*-*)
3721 case ${target_noncanonical} in
3762 amdfam10-*|barcelona-*)
3766 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3770 k8-*|opteron-*|athlon64-*|athlon_fx-*)
3774 athlon_xp-*|athlon_mp-*|athlon_4-*)
3777 arch_without_sse2=yes
3778 arch_without_64bit=yes
3780 athlon_tbird-*|athlon-*)
3783 arch_without_sse2=yes
3788 arch_without_sse2=yes
3797 arch_without_sse2=yes
3799 pentium3-*|pentium3m-*)
3802 arch_without_sse2=yes
3804 pentium4-*|pentium4m-*)
3843 arch_without_sse2=yes
3848 arch_without_sse2=yes
3849 arch_without_64bit=yes
3854 case ${target_noncanonical} in
3895 amdfam10-*|barcelona-*)
3899 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3903 k8-*|opteron-*|athlon_64-*)
3939 # If there is no $with_cpu option, try to infer one from ${target}.
3940 # This block sets nothing except for with_cpu.
3941 if test x$with_cpu = x ; then
3943 i[34567]86-*-elfiamcu)
3946 i[34567]86-*-*|x86_64-*-*)
3964 frv-*-*linux* | frv400-*-*linux*)
3971 case "$with_arch" in
3973 with_cpu=${default_cf_cpu}
3976 with_cpu=m${default_m68k_cpu}
3992 with_cpu="`echo ${target} | sed 's/-.*$//'`"
4001 # Avoid overriding --with-cpu-32 and --with-cpu-64 values.
4003 i[34567]86-*-*|x86_64-*-*)
4004 if test x$with_cpu_32 != x || test x$with_cpu_64 != x; then
4005 if test x$with_cpu_32 = x; then
4006 with_cpu_32=$with_cpu
4008 if test x$with_cpu_64 = x; then
4009 with_cpu_64=$with_cpu
4017 # Support for --with-arch and related options (and a few unrelated options,
4019 case ${with_arch} in
4021 echo "--with-arch must be passed a value" 1>&2
4026 # If there is no $with_arch option, try to infer one from ${target}.
4027 # This block sets nothing except for with_arch.
4028 if test x$with_arch = x ; then
4030 i[34567]86-*-darwin*|x86_64-*-darwin*)
4031 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
4032 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
4034 i[34567]86-*-elfiamcu)
4038 # --with-fpmath sets the default ISA to SSE2, which is the same
4039 # ISA supported by Pentium 4.
4040 if test x$with_fpmath = x || test $arch_without_sse2 = no; then
4049 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4060 # Avoid overriding --with-arch-32 and --with-arch-64 values.
4062 i[34567]86-*-darwin*|x86_64-*-darwin*)
4063 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
4064 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
4066 i[34567]86-*-*|x86_64-*-*)
4067 if test x$with_arch_32 != x || test x$with_arch_64 != x; then
4068 if test x$with_arch_32 = x; then
4069 with_arch_32=$with_arch
4071 if test x$with_arch_64 = x; then
4072 if test $arch_without_64bit = yes; then
4073 # Set the default 64bit arch to x86-64 if the default arch
4074 # doesn't support 64bit.
4077 with_arch_64=$with_arch
4081 elif test $arch_without_64bit$need_64bit_isa = yesyes; then
4082 # Set the default 64bit arch to x86-64 if the default arch
4083 # doesn't support 64bit and we need 64bit ISA.
4084 with_arch_32=$with_arch
4092 # Infer a default setting for --with-float.
4093 if test x$with_float = x; then
4095 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4096 # The R5900 doesn't support 64-bit float. 32-bit float doesn't
4097 # comply with IEEE 754.
4103 # Infer a default setting for --with-fpu.
4104 if test x$with_fpu = x; then
4106 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4107 # The R5900 FPU only supports single precision.
4113 # Support --with-fpmath.
4114 if test x$with_fpmath != x; then
4116 i[34567]86-*-* | x86_64-*-*)
4117 case ${with_fpmath} in
4119 tm_file="${tm_file} i386/avxmath.h"
4122 tm_file="${tm_file} i386/ssemath.h"
4125 echo "Invalid --with-fpmath=$with_fpmath" 1>&2
4131 echo "--with-fpmath isn't supported for $target." 1>&2
4137 # Similarly for --with-schedule.
4138 if test x$with_schedule = x; then
4141 # Override default PA8000 scheduling model.
4142 with_schedule=7100LC
4147 # Infer a default setting for --with-llsc.
4148 if test x$with_llsc = x; then
4151 # The kernel emulates LL and SC where necessary.
4154 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4155 # The R5900 doesn't support LL(D) and SC(D).
4161 # Validate and mark as valid any --with options supported
4162 # by this target. In order to use a particular --with option
4163 # you must list it in supported_defaults; validating the value
4164 # is optional. This case statement should set nothing besides
4165 # supported_defaults.
4170 supported_defaults="abi cpu cpu_64 arch arch_64 tune tune_64"
4171 if test x$with_cpu_64 != x && test x$with_cpu = x; then
4172 with_cpu=$with_cpu_64
4174 if test x$with_arch_64 != x && test x$with_arch = x; then
4175 with_arch=$with_arch_64
4177 if test x$with_tune_64 != x && test x$with_tune = x; then
4178 with_tune=$with_tune_64
4180 for which in cpu arch tune; do
4181 eval "val=\$with_$which"
4182 base_val=`echo $val | sed -e 's/\+.*//'`
4183 ext_val=`echo $val | sed -e 's/[a-z0-9.-]\+//'`
4185 if [ $which = arch ]; then
4186 def=aarch64-arches.def
4187 pattern=AARCH64_ARCH
4189 def=aarch64-cores.def
4190 pattern=AARCH64_CORE
4193 # Find the base CPU or ARCH id in aarch64-cores.def or
4194 # aarch64-arches.def
4195 if [ x"$base_val" = x ] \
4196 || grep "^$pattern(\"$base_val\"," \
4197 ${srcdir}/config/aarch64/$def \
4200 # Disallow extensions in --with-tune=cortex-a53+crc.
4201 if [ $which = tune ] && [ x"$ext_val" != x ]; then
4202 echo "Architecture extensions not supported in --with-$which=$val" 1>&2
4206 # Use the pre-processor to strip flatten the options.
4207 # This makes the format less rigid than if we use
4208 # grep and sed directly here.
4209 opt_macro="AARCH64_OPT_EXTENSION(A, B, C, D, E, F)=A, B, C, D, E, F"
4210 options_parsed="`$ac_cv_prog_CPP -D"$opt_macro" -x c \
4211 ${srcdir}/config/aarch64/aarch64-option-extensions.def`"
4213 while [ x"$ext_val" != x ]
4215 ext_val=`echo $ext_val | sed -e 's/\+//'`
4216 ext=`echo $ext_val | sed -e 's/\+.*//'`
4217 base_ext=`echo $ext | sed -e 's/^no//'`
4218 opt_line=`echo -e "$options_parsed" | \
4219 grep "^\"$base_ext\""`
4221 if [ x"$base_ext" = x ] \
4222 || [ x"$opt_line" != x ]; then
4225 echo "Unknown extension used in --with-$which=$val" 1>&2
4228 ext_val=`echo $ext_val | sed -e 's/[a-z0-9]\+//'`
4233 # Allow --with-$which=native.
4234 if [ "$val" = native ]; then
4237 echo "Unknown $which used in --with-$which=$val" 1>&2
4245 supported_defaults="cpu tune"
4246 for which in cpu tune; do
4247 eval "val=\$with_$which"
4250 | ev4 | ev45 | 21064 | ev5 | 21164 | ev56 | 21164a \
4251 | pca56 | 21164PC | 21164pc | ev6 | 21264 | ev67 \
4255 echo "Unknown CPU used in --with-$which=$val" 1>&2
4263 supported_defaults="cpu fpu"
4266 if [ x"$with_cpu" = x ] \
4267 || grep -q -E "^ARC_CPU[[:blank:]]*\($with_cpu," \
4268 ${srcdir}/config/arc/arc-cpus.def
4273 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4277 # see if --with-fpu matches any of the supported FPUs
4282 fpus | fpus_div | fpus_fma | fpus_all)
4286 fpuda | fpuda_div | fpuda_fma | fpuda_all)
4290 fpud | fpud_div | fpud_fma | fpud_all)
4295 echo "Unknown floating point type used in "\
4296 "--with-fpu=$with_fpu" 1>&2
4301 if [ -n "$flags_ok" ] \
4302 && ! grep -q -E "^ARC_CPU[[:blank:]]*\($new_cpu,[[:blank:]]*$flags_ok," \
4303 ${srcdir}/config/arc/arc-cpus.def
4305 echo "Unknown floating point type used in "\
4306 "--with-fpu=$with_fpu for cpu $new_cpu" 1>&2
4312 # Handle --with-multilib-list.
4313 if test "x${with_multilib_list}" != xdefault; then
4314 TM_MULTILIB_CONFIG="${with_multilib_list}"
4319 supported_defaults="cpu endian float"
4323 supported_defaults="arch cpu float tune fpu abi mode tls"
4324 for which in cpu tune arch; do
4325 # See if it matches a supported value
4326 eval "val=\$with_$which"
4327 if [ x"$val" != x ]; then
4328 cpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4329 -v cmd="chk$which $val" \
4330 ${srcdir}/config/arm/arm-cpus.in`
4331 if [ "$cpu" = "error" ]; then
4332 echo "Unknown target in --with-$which=$val" 1>&2
4336 eval "target_${which}_cname=$new_val"
4337 echo "For $val real value is $new_val"
4342 case "$with_float" in
4344 | soft | hard | softfp)
4348 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4353 # see if --with-fpu matches any of the supported FPUs
4354 if [ x"$with_fpu" != x ] ; then
4356 fpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4357 -v cmd="chkfpu $val" \
4358 ${srcdir}/config/arm/arm-cpus.in`
4359 if [ "$fpu" = "error" ]
4361 echo "Unknown target in --with-fpu=$val" 1>&2
4368 | apcs-gnu | atpcs | aapcs | iwmmxt | aapcs-linux )
4372 echo "Unknown ABI used in --with-abi=$with_abi"
4377 case "$with_mode" in
4383 echo "Unknown mode used in --with-mode=$with_mode"
4394 echo "Unknown TLS method used in --with-tls=$with_tls" 1>&2
4399 if test "x$with_arch" != x && test "x$with_cpu" != x; then
4400 echo "Switch \"--with-arch\" may not be used with switch \"--with-cpu\"" 1>&2
4404 if test "x$with_cpu" != x && test "x$with_tune" != x; then
4405 echo "Switch \"--with-tune\" may not be used with switch \"--with-cpu\"" 1>&2
4409 # Add extra multilibs
4410 if test "x$with_multilib_list" != x; then
4412 arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
4413 if test "x${arm_multilibs}" != xdefault ; then
4414 for arm_multilib in ${arm_multilibs}; do
4415 case ${arm_multilib} in
4417 tmake_profile_file="arm/t-multilib"
4418 tm_mlib_file="arm/arm-mlib.h"
4421 ml=`echo "X$arm_multilib" | sed '1s,^X@,,'`
4422 if test -f "${srcdir}/config/arm/${ml}"; then
4423 tmake_file="${tmake_file} arm/${ml}"
4425 echo "Error: ${ml} does not exist in ${srcdir}/config/arm" >&2
4430 echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2
4437 if test "x${tmake_profile_file}" != x ; then
4438 # arm/t-aprofile and arm/t-rmprofile are only
4439 # designed to work without any with-cpu,
4440 # with-arch, with-mode, with-fpu or with-float
4442 if test "x$with_arch" != x \
4443 || test "x$with_cpu" != x \
4444 || test "x$with_float" != x \
4445 || test "x$with_fpu" != x \
4446 || test "x$with_mode" != x ; then
4447 echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=${with_multilib_list}" 1>&2
4449 elif test "x$ml" != x ; then
4450 echo "Error: You cannot use builtin multilib profiles along with custom ones" 1>&2
4453 # But pass the default value for float-abi
4454 # through to the multilib selector
4456 tmake_file="${tmake_file} ${tmake_profile_file}"
4457 tm_file="$tm_file $tm_mlib_file"
4458 TM_MULTILIB_CONFIG="$with_multilib_list"
4461 target_cpu_cname=${target_cpu_cname:-arm7tdmi}
4462 with_cpu=${with_cpu:-$target_cpu_cname}
4466 supported_defaults=cpu
4471 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4477 fido-*-* | m68k*-*-*)
4478 supported_defaults="arch cpu"
4479 case "$with_arch" in
4481 m68k_arch_family="$with_arch"
4484 echo "Invalid --with-arch=$with_arch" 1>&2
4489 # We always have a $with_cpu setting here.
4491 "m68000" | "m68010" | "m68020" | "m68030" | "m68040" | "m68060")
4492 m68k_cpu_ident=$with_cpu
4495 m68k_cpu_ident=m68020
4496 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_40"
4499 m68k_cpu_ident=m68020
4500 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_60"
4503 # We need the C identifier rather than the string.
4504 m68k_cpu_ident=`awk -v arg="\"$with_cpu\"" \
4505 'BEGIN { FS="[ \t]*[,()][ \t]*" }; \
4506 $1 == "M68K_DEVICE" && $2 == arg { print $3 }' \
4507 ${srcdir}/config/m68k/m68k-devices.def`
4508 if [ x"$m68k_cpu_ident" = x ] ; then
4509 echo "Unknown CPU used in --with-cpu=$with_cpu" 1>&2
4512 with_cpu="mcpu=$with_cpu"
4518 supported_defaults="arch tune"
4520 for which in arch tune; do
4521 eval "val=\$with_$which"
4523 "" | fiji | gfx900 | gfx906 | gfx908 | gfx90a)
4527 echo "Unknown cpu used in --with-$which=$val." 1>&2
4532 [ "x$with_arch" = x ] && with_arch=fiji
4536 supported_defaults="arch schedule"
4538 case "$with_arch" in
4539 "" | 1.0 | 1.1 | 2.0)
4543 echo "Unknown architecture used in --with-arch=$with_arch" 1>&2
4548 case "$with_schedule" in
4549 "" | 700 | 7100 | 7100LC | 7200 | 7300 | 8000)
4553 echo "Unknown processor used in --with-schedule=$with_schedule." 1>&2
4559 i[34567]86-*-* | x86_64-*-*)
4560 supported_defaults="abi arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64"
4561 for which in arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64; do
4562 eval "val=\$with_$which"
4563 case " $x86_archs " in
4571 echo "CPU given in --with-$which=$val doesn't support 64bit mode." 1>&2
4580 if test x${val} != x; then
4581 case " $x86_64_archs " in
4583 # Disallow x86-64-v* for --with-cpu=/--with-tune=
4584 case "x$which$val" in
4585 xcpu*x86-64-v*|xtune*x86-64-v*)
4586 echo "Unknown CPU given in --with-$which=$val." 1>&2
4595 # Allow $x86_cpus --with-cpu=/--with-tune=
4598 case " $x86_cpus " in
4603 echo "Unknown CPU given in --with-$which=$val." 1>&2
4609 echo "Unknown CPU given in --with-$which=$val." 1>&2
4622 supported_defaults="abi arch tune riscv_attribute isa_spec"
4625 riscv-* | riscv32*) xlen=32 ;;
4626 riscv64*) xlen=64 ;;
4627 *) echo "Unsupported RISC-V target ${target}" 1>&2; exit 1 ;;
4630 case "${with_isa_spec}" in
4631 ""|default|20191213|201912)
4632 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20191213"
4633 with_isa_spec=20191213
4636 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_2P2"
4639 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20190608"
4640 with_isa_spec=20190608
4643 echo "--with-isa-spec only accept 2.2, 20191213, 201912, 20190608 or 201906" 1>&2
4647 case "${with_riscv_attribute}" in
4649 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4652 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=0"
4655 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4658 echo "--with-riscv-attribute=${with_riscv_attribute} is not supported. The argument must begin with yes, no or default." 1>&2
4664 # Infer arch from --with-arch, --target, and --with-abi.
4665 case "${with_arch}" in
4666 rv32e* | rv32i* | rv32g* | rv64i* | rv64g*)
4670 # Infer XLEN, but otherwise assume GC.
4671 case "${with_abi}" in
4672 ilp32e) with_arch="rv32e" ;;
4673 ilp32 | ilp32f | ilp32d) with_arch="rv32gc" ;;
4674 lp64 | lp64f | lp64d) with_arch="rv64gc" ;;
4675 *) with_arch="rv${xlen}gc" ;;
4679 echo "--with-arch=${with_arch} is not supported. The argument must begin with rv32e, rv32i, rv32g, rv64i, or rv64g." 1>&2
4683 PYTHON=`which python || which python3 || which python2`
4684 if test "x${PYTHON}" != x; then
4685 with_arch=`${PYTHON} ${srcdir}/config/riscv/arch-canonicalize -misa-spec=${with_isa_spec} ${with_arch}`
4687 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ARCH=${with_arch}"
4689 # Make sure --with-abi is valid. If it was not specified,
4690 # pick a default based on the ISA, preferring soft-float
4691 # unless the D extension is present.
4692 case "${with_abi}" in
4693 ilp32 | ilp32e | ilp32f | ilp32d | lp64 | lp64f | lp64d)
4696 case "${with_arch}" in
4697 rv32*d* | rv32g*) with_abi=ilp32d ;;
4698 rv32e*) with_abi=ilp32e ;;
4699 rv32*) with_abi=ilp32 ;;
4700 rv64*d* | rv64g*) with_abi=lp64d ;;
4701 rv64*) with_abi=lp64 ;;
4705 echo "--with-abi=${with_abi} is not supported" 1>&2
4709 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ABI=${with_abi}"
4711 # Make sure ABI and ISA are compatible.
4712 case "${with_abi},${with_arch}" in
4713 ilp32,rv32* | ilp32e,rv32e* \
4714 | ilp32f,rv32*f* | ilp32f,rv32g* \
4715 | ilp32d,rv32*d* | ilp32d,rv32g* \
4717 | lp64f,rv64*f* | lp64f,rv64g* \
4718 | lp64d,rv64*d* | lp64d,rv64g*)
4721 echo "--with-abi=${with_abi} is not supported for ISA ${with_arch}" 1>&2
4725 # Handle --with-multilib-generator.
4726 if test "x${with_multilib_generator}" != xdefault; then
4727 if test "x${with_multilib_list}" != xdefault; then
4728 echo "--with-multilib-list= can't used with --with-multilib-generator= at same time" 1>&2
4733 if ${srcdir}/config/riscv/multilib-generator \
4734 -misa-spec=${with_isa_spec} \
4735 `echo ${with_multilib_generator} | sed 's/;/ /g'`\
4736 > t-multilib-config;
4738 tmake_file="${tmake_file} riscv/t-withmultilib-generator"
4740 echo "invalid option for --with-multilib-generator" 1>&2
4745 echo "--with-multilib-generator= is not supported for ${target}, only supported for riscv*-*-elf*" 1>&2
4751 # Handle --with-multilib-list.
4752 if test "x${with_multilib_list}" != xdefault; then
4753 tmake_file="${tmake_file} riscv/t-withmultilib"
4755 case ${with_multilib_list} in
4756 ilp32 | ilp32f | ilp32d \
4757 | lp64 | lp64f | lp64d )
4758 TM_MULTILIB_CONFIG="${with_arch},${with_multilib_list}"
4761 echo "--with-multilib-list=${with_multilib_list} not supported."
4768 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"
4770 case ${with_float} in
4775 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4781 "" | single | double)
4785 echo "Unknown fpu type used in --with-fpu=$with_fpu" 1>&2
4795 echo "Unknown NaN encoding used in --with-nan=$with_nan" 1>&2
4800 case ${with_fp_32} in
4805 echo "Unknown FP mode used in --with-fp-32=$with_fp_32" 1>&2
4810 case ${with_odd_spreg_32} in
4812 with_odd_spreg_32="odd-spreg"
4815 with_odd_spreg_32="no-odd-spreg"
4821 echo "Unknown odd-spreg-32 type used in --with-odd-spreg-32=$with_odd_spreg_32" 1>&2
4827 "" | 32 | o64 | n32 | 64 | eabi)
4831 echo "Unknown ABI used in --with-abi=$with_abi" 1>&2
4836 case ${with_divide} in
4837 "" | breaks | traps)
4841 echo "Unknown division check type use in --with-divide=$with_divide" 1>&2
4846 case ${with_llsc} in
4857 echo "Unknown llsc type used in --with-llsc" 1>&2
4862 case ${with_mips_plt} in
4867 with_mips_plt=no-plt
4872 echo "Unknown --with-mips-plt argument: $with_mips_plt" 1>&2
4877 case ${with_synci} in
4887 echo "Unknown synci type used in --with-synci" 1>&2
4892 case ${with_lxc1_sxc1} in
4894 with_lxc1_sxc1=lxc1-sxc1
4897 with_lxc1_sxc1=no-lxc1-sxc1
4902 echo "Unknown lxc1-sxc1 type used in --with-lxc1-sxc1" 1>&2
4907 case ${with_madd4} in
4917 echo "Unknown madd4 type used in --with-madd4" 1>&2
4922 case ${with_compact_branches} in
4923 "" | never | always | optimal)
4926 echo "Unknown compact-branches policy used in --with-compact-branches" 1>&2
4941 echo "Unknown msa type used in --with-msa" 1>&2
4948 supported_defaults="abi arch tune fpu simd multilib-default strict-align-lib"
4953 arch_pattern arch_default \
4954 fpu_pattern fpu_default \
4955 triplet_os triplet_abi \
4958 # --with-abi is now obsolete, emit a warning if given.
4962 echo "warning: --with-abi= is now obsolete," \
4963 "the default ABI is derived from your target" \
4964 "triplet ${target}" 1>&2
4968 # Infer ABI from the triplet.
4970 loongarch64-*f64) abi_base="lp64d"; abi_ext="base" ;;
4971 loongarch64-*f32) abi_base="lp64f"; abi_ext="base" ;;
4972 loongarch64-*sf) abi_base="lp64s"; abi_ext="base" ;;
4973 loongarch64-*) abi_base="lp64d"; abi_ext="base" ;;
4975 echo "Unsupported target ${target}." 1>&2
4980 # Get the canonical triplet (multiarch specifier).
4981 case ${abi_base},${abi_ext} in
4982 lp64d,base) triplet_abi="";;
4983 lp64f,base) triplet_abi="f32";;
4984 lp64s,base) triplet_abi="sf";;
4988 *-linux-gnu*) triplet_os="linux-gnu";;
4989 *-linux-musl*) triplet_os="linux-musl";;
4990 *-elf*) triplet_os="elf";;
4992 echo "Unsupported target ${target}." 1>&2
4996 la_canonical_triplet="loongarch64-${triplet_os}${triplet_abi}"
4999 # Perform initial sanity checks on --with-* options.
5000 case ${with_arch} in
5001 "" | abi-default | loongarch64 | la464) ;; # OK, append here.
5003 if test x${host} != x${target}; then
5004 echo "--with-arch=native is illegal for cross-compiler." 1>&2
5009 echo "Unknown arch in --with-arch=$with_arch" 1>&2
5016 "" | none | 32 | 64) ;; # OK, append here.
5018 # Convert "0" to "none" for upcoming checks.
5022 echo "Unknown fpu type in --with-fpu=$with_fpu" 1>&2
5027 case ${with_simd} in
5029 lsx | lasx) # OK, append here.
5034 echo "--with-simd=${with_simd} conflicts with --with-fpu=${with_fpu}" 1>&2
5041 echo "Unknown SIMD extension in --with-simd=$with_simd" 1>&2
5046 # Infer ISA-related default options from the ABI: pass 1
5047 case ${abi_base}/${abi_ext} in
5049 # architectures that support lp64* ABI
5050 arch_pattern="native|abi-default|loongarch64|la464"
5051 # default architecture for lp64* ABI
5052 arch_default="abi-default"
5055 echo "Unsupported ABI type ${abi_base}/${abi_ext}." 1>&2
5060 # Infer ISA-related default options from the ABI: pass 2
5061 case ${abi_base}/${abi_ext} in
5070 fpu_pattern="none|32|64"
5074 echo "Unsupported ABI type ${abi_base}/${abi_ext}." 1>&2
5079 ## Set default value for with_arch.
5080 case ${with_arch} in
5082 if test x${arch_default} != x; then
5083 with_arch=${arch_default}
5085 with_arch=${arch_pattern}
5090 if echo "${with_arch}" | grep -E "^${arch_pattern}$" > /dev/null; then
5093 echo "${abi_base}/${abi_ext} ABI cannot be implemented with" \
5094 "--with-arch=${with_arch}." 1>&2
5100 ## Set default value for with_fpu.
5103 if test x${fpu_default} != x; then
5104 with_fpu=${fpu_default}
5106 with_fpu=${fpu_pattern}
5111 if echo "${with_fpu}" | grep -E "^${fpu_pattern}$" > /dev/null; then
5114 echo "${abi_base}/${abi_ext} ABI cannot be implemented with" \
5115 "--with-fpu=${with_fpu}." 1>&2
5122 # Check default with_tune configuration using with_arch.
5123 case ${with_arch} in
5125 tune_pattern="native|abi-default|loongarch64|la464"
5128 # By default, $with_tune == $with_arch
5133 case ${with_tune} in
5136 if echo "${with_tune}" | grep -E "^${tune_pattern}$" > /dev/null; then
5139 echo "Incompatible options: --with-tune=${with_tune}" \
5140 "and --with-arch=${with_arch}." 1>&2
5146 # Build libraries with -mstrict-align if --with-strict-align-lib is given.
5147 case ${with_strict_align_lib} in
5148 yes) strict_align_opt="/mstrict-align" ;;
5151 echo "Unknown option: --with-strict-align-lib=${with_strict_align_lib}" 1>&2
5157 # Handle --with-multilib-default
5158 if echo "${with_multilib_default}" \
5159 | grep -E -e '[[:space:]]' -e '//' -e '/$' -e '^/' > /dev/null 2>&1; then
5160 echo "Invalid argument to --with-multilib-default." 1>&2
5164 if test x${with_multilib_default} = x; then
5165 # Use -march=abi-default by default when building libraries.
5166 with_multilib_default="/march=abi-default"
5168 unset parse_state component
5170 for component in $(echo "${with_multilib_default}" | tr '/' ' '); do
5171 case ${parse_state},${component} in
5172 arch,|arch,abi-default)
5173 # ABI-default: use the ABI's default ARCH configuration for
5174 # multilib library builds, unless otherwise specified
5175 # in --with-multilib-list.
5176 with_multilib_default="/march=abi-default" ;;
5178 # Fixed: use the default gcc configuration for all multilib
5179 # builds by default.
5180 with_multilib_default="" ;;
5181 arch,native|arch,loongarch64|arch,la464) # OK, append here.
5182 with_multilib_default="/march=${component}" ;;
5184 with_multilib_default="/march=abi-default"
5185 with_multilib_default="${with_multilib_default}/${component}" ;;
5187 with_multilib_default="${with_multilib_default}/${component}" ;;
5190 if test x${parse_state} = xarch; then
5194 unset parse_state component
5197 # Handle --with-multilib-list.
5198 if test x"${with_multilib_list}" = x \
5199 || test x"${with_multilib_list}" = xno \
5200 || test x"${with_multilib_list}" = xdefault \
5201 || test x"${enable_multilib}" != xyes; then
5203 with_multilib_list="${abi_base}/${abi_ext}"
5206 # Check if the configured default ABI combination is included in
5207 # ${with_multilib_list}.
5208 loongarch_multilib_list_sane=no
5210 # This one goes to TM_MULTILIB_CONFIG, for use in t-linux.
5211 loongarch_multilib_list_make="${abi_base},"
5213 # This one goes to tm_defines, for use in loongarch-driver.c.
5214 loongarch_multilib_list_c=""
5216 # ${with_multilib_list} should not contain whitespaces,
5217 # consecutive commas or slashes.
5218 if echo "${with_multilib_list}" \
5219 | grep -E -e "[[:space:]]" -e '[,/][,/]' -e '[,/]$' -e '^[,/]' > /dev/null 2>&1; then
5220 echo "Invalid argument to --with-multilib-list." 1>&2
5224 unset component elem_abi_base elem_abi_ext elem_tmp parse_state all_abis
5225 for elem in $(echo "${with_multilib_list}" | tr ',' ' '); do
5226 unset elem_abi_base elem_abi_ext
5227 parse_state="abi-base"
5229 for component in $(echo "${elem}" | tr '/' ' '); do
5230 if test x${parse_state} = x"abi-base"; then
5232 case ${component} in
5233 lp64d | lp64f | lp64s) elem_tmp="ABI_BASE_$(echo ${component} | tr a-z A-Z),";;
5235 echo "Unknown base ABI \"${component}\" in --with-multilib-list." 1>&2
5239 loongarch_multilib_list_c="${loongarch_multilib_list_c}${elem_tmp}"
5240 loongarch_multilib_list_make="${loongarch_multilib_list_make}mabi=${component}"
5241 elem_abi_base="${component}"
5243 parse_state="abi-ext"
5247 if test x${parse_state} = x"abi-ext"; then
5248 # ABI extension type
5249 case ${component} in
5252 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5253 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5259 # The default ABI extension is "base" if unspecified.
5261 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5262 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5266 if test x${parse_state} = x"arch"; then
5268 case ${component} in
5269 native | abi-default | loongarch64 | la464) # OK, append here.
5270 # Append -march spec for each multilib variant.
5271 loongarch_multilib_list_make="${loongarch_multilib_list_make}/march=${component}"
5277 # "/default" is equivalent to --with-multilib-default=fixed
5283 # If ARCH is unspecified for this multilib variant, use ${with_multllib_default}.
5284 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5288 if test x${parse_state} = x"opts"; then
5289 # Other compiler options for building libraries.
5290 # (no static sanity check performed)
5291 case ${component} in
5293 # Append other components as additional build options
5294 # (without the prepending dash).
5295 # Their validity should be examined by the compiler.
5296 loongarch_multilib_list_make="${loongarch_multilib_list_make}/${component}"
5302 case ${parse_state} in
5305 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5306 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5307 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5310 # If ARCH is unspecified for this multilib variant, use ${with_multllib_default}.
5311 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5318 # Use mstrict-align for building libraries if --with-strict-align-lib is given.
5319 loongarch_multilib_list_make="${loongarch_multilib_list_make}${strict_align_opt}"
5321 # Check for repeated configuration of the same multilib variant.
5322 if echo "${elem_abi_base}/${elem_abi_ext}" \
5323 | grep -E "^(${all_abis%|})$" >/dev/null 2>&1; then
5324 echo "Repeated multilib config of \"${elem_abi_base}/${elem_abi_ext}\" in --with-multilib-list."
5327 all_abis="${all_abis}${elem_abi_base}/${elem_abi_ext}|"
5330 # Check if the default ABI configuration of the GCC binary
5331 # is included in the enabled multilib variants.
5332 if test x${elem_abi_base} = x${abi_base} \
5333 && test x${elem_abi_ext} = x${abi_ext}; then
5334 loongarch_multilib_list_sane=yes
5336 loongarch_multilib_list_make="${loongarch_multilib_list_make},"
5338 unset component elem_abi_base elem_abi_ext elem_tmp parse_state all_abis
5341 # Check if the default ABI combination is in the default list.
5342 if test x${loongarch_multilib_list_sane} = xno; then
5343 if test x${abi_ext} = xbase; then
5346 abi_ext="/${abi_ext}"
5349 echo "Default ABI combination (${abi_base}${abi_ext})" \
5350 "not found in --with-multilib-list." 1>&2
5354 # Remove the excessive appending comma.
5355 loongarch_multilib_list_c=${loongarch_multilib_list_c%,}
5356 loongarch_multilib_list_make=${loongarch_multilib_list_make%,}
5360 supported_defaults="arch cpu nds32_lib float fpu_config"
5362 # process --with-arch
5363 case "${with_arch}" in
5365 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5369 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5372 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=1"
5375 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=2"
5379 echo "Cannot accept --with-arch=$with_arch, available values are: v2 v2j v3 v3m v3f v3s" 1>&2
5384 case "${with_cpu}" in
5388 n6 | n7 |n8 | e8 | s8 | n9 | n10 | d10 | n12 | n13 | n15)
5392 echo "Cannot accept --with-cpu=$with_cpu, available values are: n6 n7 n8 e8 s8 n9 n10 d10 n12 n13 n15" 1>&2
5397 # process --with-nds32-lib
5398 case "${with_nds32_lib}" in
5402 with_nds32_lib=ulibc
5405 with_nds32_lib=glibc
5408 with_nds32_lib=newlib
5409 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5415 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5419 # for the arch=v3f or arch=v3s under mculib toolchain,
5420 # we would like to set -fno-math-errno as default
5421 case "${with_arch}" in
5423 tm_defines="${tm_defines} TARGET_DEFAULT_NO_MATH_ERRNO=1"
5431 echo "Cannot accept --with-nds32-lib=$with_nds32_lib, available values are: newlib mculib glibc uclibc" 1>&2
5436 # process --with-float
5437 case "${with_float}" in
5442 echo "Cannot accept --with-float=$with_float, available values are: soft hard" 1>&2
5447 # process --with-config-fpu
5448 case "${with_config_fpu}" in
5453 echo "Cannot accept --with-config-fpu=$with_config_fpu, available values from 0 to 7" 1>&2
5461 supported_defaults="arch"
5462 case "$with_arch" in
5467 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5474 supported_defaults=arch
5475 TM_MULTILIB_CONFIG=$with_arch
5476 #TODO 'sm_[...]' list per 'nvptx-sm.def'.
5481 sm_35 | sm_53 | sm_70 | sm_75 | sm_80 )
5482 # OK, but we'd like 'sm_30', too.
5483 TM_MULTILIB_CONFIG="$TM_MULTILIB_CONFIG sm_30"
5486 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5492 powerpc*-*-* | rs6000-*-*)
5493 supported_defaults="abi cpu cpu_32 cpu_64 float tune tune_32 tune_64 advance_toolchain"
5495 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5496 eval "val=\$with_$which"
5498 default32 | default64)
5503 echo "$val only valid for --with-cpu and --with-tune." 1>&2
5507 with_which="with_$which"
5511 tm_defines="${tm_defines} CONFIG_PPC405CR"
5512 eval "with_$which=405"
5514 "" | common | native \
5515 | power[3456789] | power10 | power5+ | power6x \
5516 | powerpc | powerpc64 | powerpc64le \
5518 | 401 | 403 | 405 | 405fp | 440 | 440fp | 464 | 464fp \
5519 | 476 | 476fp | 505 | 601 | 602 | 603 | 603e | ec603e \
5520 | 604 | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 \
5521 | a2 | e300c[23] | 854[08] | e500mc | e500mc64 | e5500 | e6500 \
5522 | titan | 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5 | cell)
5526 echo "Unknown cpu used in --with-$which=$val." 1>&2
5533 "" | elfv1 | elfv2 )
5537 echo "Unknown ABI used in --with-abi=$with_abi"
5542 if test "x$with_advance_toolchain" != x; then
5543 if test -d "/opt/$with_advance_toolchain/." -a \
5544 -d "/opt/$with_advance_toolchain/bin/." -a \
5545 -d "/opt/$with_advance_toolchain/include/."; then
5547 tm_file="$tm_file ./advance-toolchain.h"
5548 (at="/opt/$with_advance_toolchain"
5549 echo "/* Use Advance Toolchain $at */"
5551 echo "#undef LINK_OS_NEW_DTAGS_SPEC"
5552 echo "#define LINK_OS_NEW_DTAGS_SPEC" \
5553 "\"--enable-new-dtags\""
5555 echo "#undef DYNAMIC_LINKER_PREFIX"
5556 echo "#define DYNAMIC_LINKER_PREFIX \"$at\""
5558 echo "#undef MD_EXEC_PREFIX"
5559 echo "#define MD_EXEC_PREFIX \"$at/bin/\""
5561 echo "#undef MD_STARTFILE_PREFIX"
5562 echo "#define MD_STARTFILE_PREFIX \"$prefix/lib/\""
5564 echo "#undef MD_STARTFILE_PREFIX_1"
5565 echo "#define MD_STARTFILE_PREFIX_1 \"$at/lib/\"") \
5566 > advance-toolchain.h
5568 echo "Unknown advance-toolchain $with_advance_toolchain"
5573 # Set up the default long double format if the user changed it.
5574 if test x$with_long_double_format = xieee; then
5575 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=1"
5577 elif test x$with_long_double_format = xibm; then
5578 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=0"
5583 supported_defaults="arch mode tune"
5585 for which in arch tune; do
5586 eval "val=\$with_$which"
5588 "" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | z15 | z16 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12 | arch13 | arch14 )
5592 echo "Unknown cpu used in --with-$which=$val." 1>&2
5598 case ${with_mode} in
5603 echo "Unknown architecture mode used in --with-mode=$with_mode." 1>&2
5609 sh[123456ble]*-*-* | sh-*-*)
5610 supported_defaults="cpu"
5611 case "`echo $with_cpu | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz- | sed s/sh/m/`" in
5612 "" | m1 | m2 | m2e | m3 | m3e | m4 | m4-single | m4-single-only | m4-nofpu )
5615 m2a | m2a-single | m2a-single-only | m2a-nofpu)
5617 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al)
5620 echo "Unknown CPU used in --with-cpu=$with_cpu, known values:" 1>&2
5621 echo "m1 m2 m2e m3 m3e m4 m4-single m4-single-only m4-nofpu" 1>&2
5622 echo "m4a m4a-single m4a-single-only m4a-nofpu m4al" 1>&2
5623 echo "m2a m2a-single m2a-single-only m2a-nofpu" 1>&2
5629 supported_defaults="cpu cpu_32 cpu_64 float tune tune_32 tune_64"
5631 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5632 eval "val=\$with_$which"
5634 "" | sparc | sparcv9 | sparc64 \
5636 | v8 | supersparc | hypersparc | leon | leon3 | leon3v7 \
5637 | sparclite | f930 | f934 | sparclite86x \
5638 | sparclet | tsc701 \
5639 | v9 | ultrasparc | ultrasparc3 | niagara | niagara2 \
5640 | niagara3 | niagara4 | niagara7 | m8)
5644 echo "Unknown cpu used in --with-$which=$val" 1>&2
5650 case ${with_float} in
5655 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
5662 supported_defaults="arch"
5664 case ${with_arch} in
5665 "" | c62x | c64x | c64x+ | c67x | c67x+ | c674x)
5669 echo "Unknown arch used in --with-arch=$with_arch." 1>&2
5676 supported_defaults=cpu
5678 "" | v850e | v850e1 | v850e2 | v850es | v850e2v3 | v850e3v5)
5682 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5688 supported_defaults="cpu"
5692 *) echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5699 # VxWorks support for shared libraries has to be requested explicitly,
5700 # so we can factor this part here:
5702 case "${target}-${enable_shared}" in
5704 tmake_file="${tmake_file} t-slibgcc"
5708 # Targets for which there is at least one VxWorks port should include
5709 # vxworks-dummy.h to allow safe references to various TARGET_VXWORKS kinds
5710 # of markers from other files in the port, including the vxworks*.h files to
5711 # distinguish VxWorks variants such as VxWorks 7 or 64).
5714 arm*-*-* | i[34567]86-*-* | mips*-*-* | powerpc*-*-* | sh*-*-* \
5715 | sparc*-*-* | x86_64-*-*)
5716 tm_file="vxworks-dummy.h ${tm_file}"
5720 # Set some miscellaneous flags for particular targets.
5721 target_cpu_default2=
5724 if test x"$target_cpu_cname" != x
5726 target_cpu_default2=$target_cpu_cname
5731 if test x$with_cpu = x
5733 echo "Don't know the target cpu" 1>&2
5736 target_cpu_default2="\\\"$with_cpu\\\""
5741 if test x$gas = xyes
5743 target_cpu_default2="MASK_GAS"
5747 fido*-*-* | m68k*-*-*)
5748 target_cpu_default2=$m68k_cpu_ident
5749 tmake_file="m68k/t-opts $tmake_file"
5750 if [ x"$m68k_arch_family" != x ]; then
5751 tmake_file="m68k/t-$m68k_arch_family $tmake_file"
5755 i[34567]86-*-darwin* | x86_64-*-darwin*)
5757 i[34567]86-*-linux* | x86_64-*-linux*)
5758 extra_objs="${extra_objs} gnu-property.o"
5759 tmake_file="$tmake_file i386/t-linux i386/t-gnu-property"
5761 i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu)
5762 tmake_file="$tmake_file i386/t-kfreebsd"
5765 tmake_file="$tmake_file i386/t-gnu"
5767 i[34567]86-*-msdosdjgpp*)
5768 tmake_file="${tmake_file} i386/t-djgpp"
5770 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
5772 i[34567]86-*-cygwin* | x86_64-*-cygwin*)
5774 i[34567]86-*-mingw* | x86_64-*-mingw*)
5776 i[34567]86-*-dragonfly* | x86_64-*-dragonfly*)
5778 i[34567]86-*-freebsd*)
5781 tmake_file="${tmake_file} i386/t-freebsd64"
5787 if test x$gnu_ld = xyes
5789 target_cpu_default2="MASK_SPLIT_ADDRESSES"
5793 tm_defines="TARGET_ENDIAN_DEFAULT=0 $tm_defines"
5796 if test x$with_arch != x; then
5797 default_mips_arch=$with_arch
5799 with_arch=$default_mips_arch
5801 if test x$with_abi != x; then
5802 default_mips_abi=$with_abi
5804 case ${default_mips_arch} in
5805 mips1) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS1" ;;
5806 mips2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS2" ;;
5807 mips3) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3" ;;
5808 mips4) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS4" ;;
5809 mips32) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32" ;;
5810 mips32r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2" ;;
5811 mips32r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6" ;;
5812 mips64) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64" ;;
5813 mips64r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2" ;;
5814 mips64r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6" ;;
5816 case ${default_mips_abi} in
5817 32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_32" ;;
5818 o64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_O64" ;;
5819 n32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_N32" ;;
5820 64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_64" ;;
5821 eabi) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_EABI" ;;
5823 tmake_file="mips/t-mips $tmake_file"
5827 # Export canonical triplet.
5828 tm_defines="${tm_defines} LA_MULTIARCH_TRIPLET=${la_canonical_triplet}"
5830 # Define macro LA_DISABLE_MULTILIB if --disable-multilib
5831 tm_defines="${tm_defines} TM_MULTILIB_LIST=${loongarch_multilib_list_c}"
5832 if test x$enable_multilib = xyes; then
5833 TM_MULTILIB_CONFIG="${loongarch_multilib_list_make}"
5835 tm_defines="${tm_defines} LA_DISABLE_MULTILIB"
5838 # Let --with- flags initialize the enum variables from loongarch.opt.
5839 # See macro definitions from loongarch-opts.h and loongarch-cpu.h.
5842 tm_defines="${tm_defines} DEFAULT_CPU_ARCH=CPU_$(echo ${with_arch} | tr a-z- A-Z_)"
5845 tm_defines="${tm_defines} DEFAULT_ABI_BASE=ABI_BASE_$(echo ${abi_base} | tr a-z- A-Z_)"
5849 base) tm_defines="${tm_defines} DEFAULT_ABI_EXT=ABI_EXT_BASE" ;;
5853 if test x${with_tune} != x; then
5854 tm_defines="${tm_defines} DEFAULT_CPU_TUNE=CPU_$(echo ${with_tune} | tr a-z- A-Z_)"
5859 none) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_NONE" ;;
5860 32) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU32" ;;
5861 64) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU64" ;;
5865 case ${with_simd} in
5866 none) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_NONE" ;;
5867 lsx) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_SIMD_LSX" ;;
5868 lasx) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_SIMD_LASX" ;;
5871 tmake_file="loongarch/t-loongarch $tmake_file"
5874 powerpc*-*-* | rs6000-*-*)
5875 # FIXME: The PowerPC port uses the value set at compile time,
5876 # although it's only cosmetic.
5877 if test "x$with_cpu" != x
5879 target_cpu_default2="\\\"$with_cpu\\\""
5881 out_file="${cpu_type}/${cpu_type}.cc"
5882 c_target_objs="${c_target_objs} ${cpu_type}-c.o"
5883 cxx_target_objs="${cxx_target_objs} ${cpu_type}-c.o"
5884 d_target_objs="${d_target_objs} ${cpu_type}-d.o"
5885 tmake_file="${cpu_type}/t-${cpu_type} ${tmake_file}"
5888 sh[123456ble]*-*-* | sh-*-*)
5889 c_target_objs="${c_target_objs} sh-c.o"
5890 cxx_target_objs="${cxx_target_objs} sh-c.o"
5894 # Some standard aliases.
5899 xsparcv9 | xsparc64)
5904 if test x$with_tune = x ; then
5915 # The SPARC port checks this value at compile-time.
5916 target_cpu_default2="TARGET_CPU_$with_cpu"
5920 case "x$with_cpu" in
5923 xv850e | xv850e1 | xv850e2 | xv850e2v3 | xv850e3v5)
5924 target_cpu_default2="TARGET_CPU_$with_cpu"
5927 target_cpu_default2="TARGET_CPU_v850e1"
5932 target_cpu_default2="TARGET_CPU_$with_cpu"
5937 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"
5938 for option in $all_defaults
5940 eval "val=\$with_"`echo $option | sed s/-/_/g`
5941 if test -n "$val"; then
5942 case " $supported_defaults " in
5946 echo "This target does not support --with-$option." 2>&1
5947 echo "Valid --with options are: $supported_defaults" 2>&1
5954 t="{ \"$option\", \"$val\" }"
5956 t="${t}, { \"$option\", \"$val\" }"
5963 configure_default_options="{ { NULL, NULL} }"
5965 configure_default_options="{ ${t} }"
5968 if test "$target_cpu_default2" != ""
5970 if test "$target_cpu_default" != ""
5972 target_cpu_default="(${target_cpu_default}|${target_cpu_default2})"
5974 target_cpu_default=$target_cpu_default2
5979 i[34567]86-*-* | x86_64-*-*)
5980 if test x$enable_as_accelerator = xyes; then
5981 extra_programs="mkoffload\$(exeext)"