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
875 tmake_file="t-fuchsia"
876 rust_target_objs="${rust_target_objs} fuchsia-rust.o"
877 target_has_targetrustm=yes
879 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi)
880 extra_options="$extra_options gnu-user.opt"
883 case ${enable_threads} in
884 "" | yes | posix) thread_file='posix' ;;
886 tmake_file="t-slibgcc"
888 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
891 native_system_header_dir=/include
894 # Linux C libraries selection switch: glibc / uclibc / bionic.
895 # uclibc and bionic aren't usable for GNU/Hurd and neither for GNU/k*BSD.
898 tm_p_file="${tm_p_file} linux-protos.h"
899 tmake_file="${tmake_file} t-linux"
900 extra_objs="${extra_objs} linux.o"
901 extra_options="${extra_options} linux.opt"
906 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC"
908 *-*-*uclibc* | *-*-uclinuxfdpiceabi)
909 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
912 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
915 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
918 # Assume that glibc or uClibc or Bionic are being used and so __cxa_atexit
920 default_use_cxa_atexit=yes
923 # Enable compilation for Android by default for *android* targets.
926 tm_defines="$tm_defines ANDROID_DEFAULT=1"
929 tm_defines="$tm_defines ANDROID_DEFAULT=0"
932 c_target_objs="${c_target_objs} glibc-c.o"
933 cxx_target_objs="${cxx_target_objs} glibc-c.o"
934 tmake_file="${tmake_file} t-glibc"
935 target_has_targetcm=yes
937 *-*-*uclibc* | *-*-uclinuxfdpiceabi)
940 # Linux targets always support .init_array.
941 gcc_cv_initfini_array=yes
946 d_target_objs="${d_target_objs} linux-d.o"
947 target_has_targetdm=yes
948 rust_target_objs="${rust_target_objs} linux-rust.o"
949 target_has_targetrustm=yes
952 d_target_objs="${d_target_objs} kfreebsd-d.o"
953 target_has_targetdm=yes
955 *-*-kopensolaris*-gnu)
956 d_target_objs="${d_target_objs} kopensolaris-d.o"
957 target_has_targetdm=yes
960 d_target_objs="${d_target_objs} gnu-d.o"
961 target_has_targetdm=yes
966 tm_p_file="${tm_p_file} netbsd-protos.h"
967 tmake_file="t-netbsd t-slibgcc"
968 extra_objs="${extra_objs} netbsd.o"
969 d_target_objs="${d_target_objs} netbsd-d.o"
973 case ${enable_threads} in
974 "" | yes | posix) thread_file='posix' ;;
976 nbsd_tm_file="netbsd.h netbsd-stdint.h netbsd-elf.h"
977 default_use_cxa_atexit=yes
978 target_has_targetdm=yes
980 arm*-* | i[34567]86-* | powerpc*-* | sparc*-* | x86_64-*)
981 default_gnu_indirect_function=yes
984 rust_target_objs="${rust_target_objs} netbsd-rust.o"
985 target_has_targetrustm=yes
988 tmake_file="t-openbsd"
989 case ${enable_threads} in
995 *-*-openbsd4.[3-9]|*-*-openbsd[5-9]*)
996 default_use_cxa_atexit=yes
999 d_target_objs="${d_target_objs} openbsd-d.o"
1000 target_has_targetdm=yes
1001 rust_target_objs="${rust_target_objs} openbsd-rust.o"
1002 target_has_targetrustm=yes
1007 default_use_cxa_atexit=yes
1010 case ${enable_threads} in
1011 "" | yes | rtems) thread_file='rtems' ;;
1012 posix) thread_file='posix' ;;
1015 echo 'Unknown thread configuration for RTEMS'
1019 tmake_file="${tmake_file} t-rtems"
1020 extra_options="${extra_options} rtems.opt"
1021 default_use_cxa_atexit=yes
1025 extra_options="$extra_options gnu-user.opt"
1027 case ${enable_threads} in
1028 "" | yes | posix) thread_file='posix' ;;
1030 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC SINGLE_LIBC"
1036 # i?86-*-solaris2* needs to insert headers between cpu default and
1037 # Solaris 2 specific ones.
1038 sol2_tm_file_head="elfos.h ${cpu_type}/sysv4.h"
1039 sol2_tm_file_tail="${cpu_type}/sol2.h sol2.h"
1040 sol2_tm_file="${sol2_tm_file_head} ${sol2_tm_file_tail}"
1042 *-*-solaris2.1[1-9]*)
1043 # __cxa_atexit was introduced in Solaris 11.4.
1044 default_use_cxa_atexit=yes
1048 if test x$gnu_ld = xyes; then
1049 tm_file="usegld.h ${tm_file}"
1051 if test x$gas = xyes; then
1052 tm_file="usegas.h ${tm_file}"
1054 tm_p_file="${tm_p_file} sol2-protos.h"
1055 tmake_file="${tmake_file} t-sol2 t-slibgcc"
1056 c_target_objs="${c_target_objs} sol2-c.o"
1057 cxx_target_objs="${cxx_target_objs} sol2-c.o sol2-cxx.o"
1058 d_target_objs="${d_target_objs} sol2-d.o"
1059 extra_objs="${extra_objs} sol2.o sol2-stubs.o"
1060 extra_options="${extra_options} sol2.opt"
1061 case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
1062 "":yes:* | yes:yes:* )
1066 target_has_targetdm=yes
1067 rust_target_objs="${rust_target_objs} sol2-rust.o"
1068 target_has_targetrustm=yes
1071 extra_options="${extra_options} vms/vms.opt"
1072 xmake_file=vms/x-vms
1073 tmake_file="vms/t-vms t-slibgcc"
1075 target_gtfiles="$target_gtfiles \$(srcdir)/config/vms/vms.cc"
1076 tm_p_file="${tm_p_file} vms/vms-protos.h"
1077 xm_file="vms/xm-vms.h"
1078 c_target_objs="vms-c.o"
1079 cxx_target_objs="vms-c.o"
1080 fortran_target_objs="vms-f.o"
1081 use_gcc_stdint=provide
1082 tm_file="${tm_file} vms/vms-stdint.h"
1083 if test x$gnu_ld != xyes; then
1084 # Build wrappers for native case.
1085 extra_programs="ld\$(exeext) ar\$(exeext)"
1086 tmake_file="$tmake_file vms/t-vmsnative"
1090 tmake_file=t-vxworks
1093 extra_options="${extra_options} vxworks.opt"
1094 extra_objs="$extra_objs vxworks.o"
1096 c_target_objs="${c_target_objs} vxworks-c.o"
1097 cxx_target_objs="${cxx_target_objs} vxworks-c.o"
1098 extra_headers="${extra_headers} ../vxworks/vxworks-predef.h"
1099 target_has_targetcm="yes"
1101 rust_target_objs="${rust_target_objs} vxworks-rust.o"
1102 target_has_targetrustm=yes
1104 extra_gcc_objs="vxworks-driver.o"
1106 # This private header exposes a consistent interface for checks on
1107 # the VxWorks version our runtime header files need to perform, based on
1108 # what the system headers adverstise:
1110 extra_headers="${extra_headers} ../vxworks/_vxworks-versions.h"
1112 # Starting from VxWorks 7, the system comes with a Dinkumware
1113 # environment which requires the inclusion of "yvals.h" before other
1114 # system headers. We provide wrapped versions of a few headers to
1115 # accomodate such constraints:
1117 extra_headers="${extra_headers} ../vxworks/_yvals.h"
1118 extra_headers="${extra_headers} ../vxworks/_yvals-wrapper.h"
1120 extra_headers="${extra_headers} ../vxworks/math.h ../vxworks/complex.h"
1121 extra_headers="${extra_headers} ../vxworks/inttypes.h ../vxworks/setjmp.h"
1123 # We provide (a tailored version of) stdint.h
1124 tm_file="${tm_file} vxworks-stdint.h"
1125 use_gcc_stdint=provide
1127 case ${enable_threads} in
1129 "" | yes | vxworks) thread_file='vxworks' ;;
1130 *) echo 'Unknown thread configuration for VxWorks'; exit 1 ;;
1133 # A few common macro definitions conveying general characteristics
1134 # of the configuration at hand. Note that by VxWorks 7, we mean the
1135 # the SR6xx major update or beyond in vendor parlance:
1139 tm_defines="$tm_defines TARGET_VXWORKS7=1"
1144 tm_defines="$tm_defines TARGET_VXWORKS64=1"
1148 # Then a few build configuration controls for VxWorks 7, which
1149 # has specificities on top of which we aim to provide more complete
1154 # VxWorks 7 always has init/fini_array support and it is simpler to
1155 # just leverage this, sticking to what the system toolchain does:
1156 gcc_cv_initfini_array=yes
1160 *-*-elf|arc*-*-elf*)
1161 # Assume that newlib is being used and so __cxa_atexit is provided.
1162 default_use_cxa_atexit=yes
1165 case "${with_newlib}-${with_headers}" in
1166 no-no) use_gcc_stdint=provide ;;
1173 aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
1174 tm_file="${tm_file} elfos.h newlib-stdint.h"
1175 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-elf-raw.h"
1176 tmake_file="${tmake_file} aarch64/t-aarch64"
1182 tm_file="${tm_file} fuchsia.h"
1185 tm_file="${tm_file} aarch64/rtems.h rtems.h"
1190 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1193 aarch64_multilibs="${with_multilib_list}"
1194 if test "$aarch64_multilibs" = "default"; then
1195 aarch64_multilibs="lp64,ilp32"
1197 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1198 for aarch64_multilib in ${aarch64_multilibs}; do
1199 case ${aarch64_multilib} in
1201 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1204 echo "--with-multilib-list=${aarch64_multilib} not supported."
1208 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1210 aarch64*-*-freebsd*)
1211 tm_file="${tm_file} elfos.h ${fbsd_tm_file}"
1212 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-freebsd.h"
1213 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
1214 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1217 tm_file="${tm_file} elfos.h ${nbsd_tm_file}"
1218 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-netbsd.h"
1219 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-netbsd"
1220 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1223 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h"
1224 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-linux.h"
1225 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-linux"
1226 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1229 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1232 aarch64_multilibs="${with_multilib_list}"
1233 if test "$aarch64_multilibs" = "default"; then
1234 # TODO: turn on ILP32 multilib build after its support is mature.
1235 # aarch64_multilibs="lp64,ilp32"
1236 aarch64_multilibs="lp64"
1238 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1239 for aarch64_multilib in ${aarch64_multilibs}; do
1240 case ${aarch64_multilib} in
1242 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1245 echo "--with-multilib-list=${aarch64_multilib} not supported."
1249 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1251 aarch64*-wrs-vxworks*)
1252 tm_file="${tm_file} elfos.h aarch64/aarch64-elf.h"
1253 tm_file="${tm_file} vx-common.h vxworks.h aarch64/aarch64-vxworks.h"
1254 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-vxworks"
1257 tm_file="elfos.h ${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h glibc-stdint.h"
1258 tmake_file="${tmake_file} alpha/t-linux alpha/t-alpha"
1259 extra_options="${extra_options} alpha/elf.opt"
1262 tm_file="elfos.h ${tm_file} ${nbsd_tm_file} alpha/elf.h alpha/netbsd.h"
1263 tmake_file="${tmake_file} alpha/t-alpha"
1264 extra_options="${extra_options} netbsd.opt netbsd-elf.opt \
1268 tm_defines="${tm_defines} OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_FUNCTION_SIZE OBSD_HAS_DECLARE_OBJECT"
1269 tm_file="elfos.h alpha/alpha.h alpha/elf.h openbsd.h openbsd-stdint.h alpha/openbsd.h openbsd-libpthread.h"
1270 tmake_file="${tmake_file} alpha/t-alpha"
1271 extra_options="${extra_options} openbsd.opt alpha/elf.opt"
1272 # default x-alpha is only appropriate for dec-osf.
1275 tm_file="${tm_file} vms/vms.h alpha/vms.h"
1276 tmake_file="${tmake_file} alpha/t-vms alpha/t-alpha"
1279 tm_file="arc/arc-arch.h elfos.h newlib-stdint.h arc/elf.h ${tm_file}"
1280 tmake_file="arc/t-multilib arc/t-arc"
1281 extra_gcc_objs="driver-arc.o"
1282 if test "x$with_cpu" != x; then
1283 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1285 if test x${with_endian} = x; then
1287 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1288 *) with_endian=little ;;
1291 case ${with_endian} in
1293 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1295 case ${with_endian} in
1296 big*) tm_file="arc/big.h ${tm_file}"
1300 tm_file="arc/arc-arch.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arc/linux.h ${tm_file}"
1301 tmake_file="${tmake_file} arc/t-multilib-linux arc/t-arc"
1302 extra_gcc_objs="driver-arc.o"
1303 if test "x$with_cpu" != x; then
1304 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1306 if test x${with_endian} = x; then
1308 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1309 *) with_endian=little ;;
1312 case ${with_endian} in
1314 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1316 case ${with_endian} in
1317 big*) tm_file="arc/big.h ${tm_file}"
1319 # Force .init_array support. The configure script cannot always
1320 # automatically detect that GAS supports it, yet we require it.
1321 gcc_cv_initfini_array=yes
1324 # We only support VxWorks 7 now on ARM, post SR600. Pre SR600
1325 # VxWorks 7 was transitory and major versions prior to 7 were based
1326 # on long deprecated ABI, not supported at all any more regardless
1328 extra_options="${extra_options} arm/vxworks.opt"
1329 tmake_file="${tmake_file} arm/t-arm arm/t-vxworks arm/t-bpabi"
1330 tm_file="elfos.h arm/elf.h arm/bpabi.h arm/aout.h ${tm_file}"
1331 tm_file="${tm_file} vx-common.h vxworks.h arm/vxworks.h"
1332 target_cpu_cname="generic-armv7-a"
1333 need_64bit_hwint=yes
1335 arm*-*-freebsd*) # ARM FreeBSD EABI
1336 tm_file="elfos.h ${fbsd_tm_file} arm/elf.h"
1339 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1342 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi"
1343 tm_file="${tm_file} arm/bpabi.h arm/freebsd.h arm/aout.h arm/arm.h"
1346 target_cpu_cname="arm1176jzf-s"
1347 if test $fbsd_major -ge 11; then
1348 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1352 target_cpu_cname="generic-armv7-a"
1353 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1356 target_cpu_cname="arm9"
1359 with_tls=${with_tls:-gnu}
1362 target_cpu_cname="strongarm"
1363 tmake_file="${tmake_file} arm/t-arm"
1364 tm_file="elfos.h ${nbsd_tm_file} arm/elf.h"
1365 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1367 arm*eb-*) tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" ;;
1370 arm*-*-netbsdelf-*eabi*)
1371 tm_file="$tm_file arm/bpabi.h arm/netbsd-elf.h arm/netbsd-eabi.h"
1372 tmake_file="$tmake_file arm/t-bpabi arm/t-netbsdeabi"
1375 tm_file="$tm_file arm/netbsd-elf.h"
1376 tmake_file="$tmake_file arm/t-netbsd"
1379 tm_file="${tm_file} arm/aout.h arm/arm.h"
1381 arm*-*-netbsdelf-*eabihf*)
1382 # Hard-float requires at least Arm v5te
1383 target_cpu_cname="arm10e"
1384 tm_defines="${tm_defines} TARGET_DEFAULT_FLOAT_ABI=ARM_FLOAT_ABI_HARD"
1388 armv6*) target_cpu_cname="arm1176jzf-s";;
1389 armv7*) target_cpu_cname="generic-armv7-a";;
1392 arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)
1393 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"
1394 extra_options="${extra_options} linux-android.opt"
1397 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1400 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
1401 tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h arm/aout.h arm/arm.h"
1403 arm*-*-uclinuxfdpiceabi)
1404 tm_file="$tm_file arm/uclinuxfdpiceabi.h"
1407 # Define with_float to "hard" if not already defined and
1408 # target name ends with "hf"
1409 case $target:$with_float in
1414 # Generation of floating-point instructions requires at least ARMv5te.
1415 if [ "$with_float" = "hard" -o "$with_float" = "softfp" ] ; then
1416 target_cpu_cname="arm10e"
1418 target_cpu_cname="arm10tdmi"
1420 # Define multilib configuration for arm-linux-androideabi.
1423 tmake_file="$tmake_file arm/t-linux-androideabi"
1426 # The EABI requires the use of __cxa_atexit.
1427 default_use_cxa_atexit=yes
1428 with_tls=${with_tls:-gnu}
1430 arm*-*-uclinux*eabi*) # ARM ucLinux
1431 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
1432 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi"
1433 tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h arm/aout.h arm/arm.h"
1434 target_cpu_cname="arm7tdmi"
1435 # The EABI requires the use of __cxa_atexit.
1436 default_use_cxa_atexit=yes
1439 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1440 tm_file="${tm_file} newlib-stdint.h phoenix.h"
1441 tm_file="${tm_file} arm/aout.h arm/arm.h"
1442 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi arm/t-phoenix"
1443 target_cpu_cname="arm7tdmi"
1445 arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
1448 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1450 default_use_cxa_atexit=yes
1451 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1452 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf"
1453 target_cpu_cname="arm7tdmi"
1456 tm_file="$tm_file newlib-stdint.h"
1457 tmake_file="${tmake_file} arm/t-bpabi"
1461 tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h"
1462 tmake_file="${tmake_file} arm/t-bpabi arm/t-fuchsia"
1463 target_cpu_cname="generic-armv7-a"
1466 tm_file="${tm_file} arm/rtems.h rtems.h newlib-stdint.h"
1467 tmake_file="${tmake_file} arm/t-bpabi arm/t-rtems"
1470 tm_file="${tm_file} arm/symbian.h"
1471 # We do not include t-bpabi for Symbian OS because the system
1472 # provides its own implementation of the BPABI functions.
1473 tmake_file="${tmake_file} arm/t-symbian"
1474 target_cpu_cname="arm10tdmi"
1477 tm_file="${tm_file} arm/aout.h arm/arm.h"
1480 tm_file="elfos.h avr/elf.h avr/avr-arch.h avr/avr.h avr/specs.h avr/avr-stdint.h"
1481 if test x${with_avrlibc} != xno; then
1482 tm_file="${tm_file} ${cpu_type}/avrlibc.h"
1483 tm_defines="${tm_defines} WITH_AVRLIBC"
1485 # Work out avr_double_comparison which is 2 or 3 and is used in
1486 # target hook FLOAT_LIB_COMPARE_RETURNS_BOOL to determine whether
1487 # DFmode comparisons return 3-state or 2-state results.
1488 case y${with_double_comparison} in
1490 avr_double_comparison=3
1493 avr_double_comparison=2
1496 echo "Error: --with-double-comparison= can only be used with: 'tristate', 'bool', 'libf7'" 1>&2
1500 case "y${with_libf7}" in
1502 # avr_double_comparison as set above.
1505 avr_double_comparison=2
1506 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1508 y | yyes | ymath-symbols)
1509 avr_double_comparison=2
1510 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1511 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1512 tm_defines="${tm_defines} WITH_LIBF7_MATH_SYMBOLS"
1515 avr_double_comparison=2
1516 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1517 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1520 echo "Error: --with-libf7=${with_libf7} but can only be used with: 'libgcc', 'math', 'math-symbols', 'yes', 'no'" 1>&2
1524 tm_defines="${tm_defines} WITH_DOUBLE_COMPARISON=${avr_double_comparison}"
1525 case y${with_double} in
1528 tm_defines="${tm_defines} HAVE_DOUBLE32"
1532 tm_defines="${tm_defines} HAVE_DOUBLE64"
1536 avr_double_multilib=1
1537 tm_defines="${tm_defines} HAVE_DOUBLE32"
1538 tm_defines="${tm_defines} HAVE_DOUBLE64"
1539 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1543 avr_double_multilib=1
1544 tm_defines="${tm_defines} HAVE_DOUBLE32"
1545 tm_defines="${tm_defines} HAVE_DOUBLE64"
1546 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1549 echo "Error: --with-double= can only be used with: '32', '32,64', '64,32', '64'" 1>&2
1553 case y${with_long_double} in
1556 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1560 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1564 avr_long_double_multilib=1
1565 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1566 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1567 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1571 avr_long_double_multilib=1
1572 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1573 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1574 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1577 avr_long_double=${avr_double}
1578 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_IS_DOUBLE"
1579 if test y${avr_double_multilib} = y1; then
1580 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1581 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1583 tm_defines="${tm_defines} HAVE_LONG_DOUBLE${avr_long_double}"
1587 echo "Error: --with-long_double= can only be used with: '32', '32,64', '64,32', '64', 'double'" 1>&2
1591 if test ${avr_long_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 32xy1z; then
1592 if test y${with_long_double} != ydouble; then
1593 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
1597 if test ${avr_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 64x1yz; then
1598 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
1601 if test y${avr_double}${avr_long_double} = y6432; then
1602 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
1605 tm_defines="${tm_defines} WITH_DOUBLE${avr_double}"
1606 tm_defines="${tm_defines} WITH_LONG_DOUBLE${avr_long_double}"
1607 tmake_file="${tmake_file} avr/t-avr avr/t-multilib"
1609 extra_gcc_objs="driver-avr.o avr-devices.o"
1610 extra_objs="avr-devices.o avr-log.o"
1613 tm_file="${tm_file} elfos.h newlib-stdint.h bfin/elf.h"
1614 tmake_file=bfin/t-bfin-elf
1618 tm_file="${tm_file} elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/uclinux.h"
1619 tmake_file=bfin/t-bfin-uclinux
1622 bfin*-linux-uclibc*)
1623 tm_file="${tm_file} elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/linux.h ./linux-sysroot-suffix.h"
1624 tmake_file="${tmake_file} bfin/t-bfin-linux"
1628 tm_file="${tm_file} elfos.h bfin/elf.h bfin/rtems.h rtems.h newlib-stdint.h"
1629 tmake_file="${tmake_file} bfin/t-rtems"
1632 tm_file="${tm_file} elfos.h newlib-stdint.h bfin/elf.h"
1637 tm_file="elfos.h ${tm_file}"
1638 tmake_file="${tmake_file} bpf/t-bpf"
1640 extra_headers="bpf-helpers.h"
1641 use_gcc_stdint=provide
1642 extra_objs="coreout.o core-builtins.o"
1643 target_gtfiles="$target_gtfiles \$(srcdir)/config/bpf/coreout.cc \$(srcdir)/config/bpf/core-builtins.cc"
1645 cris-*-elf | cris-*-none)
1646 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1647 tmake_file="cris/t-cris cris/t-elfmulti"
1649 extra_options="${extra_options} cris/elf.opt"
1653 if test x${with_endian} != x; then
1654 case ${with_endian} in
1657 echo "with_endian=${with_endian} not supported."
1662 if test x${with_float} != x; then
1663 case ${with_float} in
1664 soft | hard | softfp) ;;
1666 "Unknown floating point type used in --with-float=$with_float"
1671 tm_file="csky/csky.h"
1672 md_file="csky/csky.md"
1673 out_file="csky/csky.cc"
1674 tm_p_file="${tm_p_file} csky/csky-protos.h"
1675 extra_options="${extra_options} csky/csky_tables.opt"
1677 if test x${enable_tpf_debug} = xyes; then
1678 tm_defines="${tm_defines} ENABLE_TPF_DEBUG"
1683 tm_file="elfos.h newlib-stdint.h ${tm_file} csky/csky-elf.h"
1684 tmake_file="csky/t-csky csky/t-csky-elf"
1685 default_use_cxa_atexit=no
1689 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} csky/csky-linux-elf.h"
1690 tmake_file="${tmake_file} csky/t-csky"
1692 if test "x${enable_multilib}" = xyes ; then
1693 tm_defines="$tm_defines CSKY_ENABLE_MULTILIB"
1694 tmake_file="${tmake_file} csky/t-csky-linux"
1699 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
1700 # Force .init_array support. The configure script cannot always
1701 # automatically detect that GAS supports it, yet we require it.
1702 gcc_cv_initfini_array=yes
1704 csky-*-linux-uclibc*)
1705 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
1706 default_use_cxa_atexit=no
1709 echo "Unknown target $target"
1715 echo "Unknown target $target"
1720 epiphany-*-elf | epiphany-*-rtems*)
1721 tm_file="elfos.h ${tm_file}"
1722 tmake_file="${tmake_file} epiphany/t-epiphany"
1725 tm_file="${tm_file} epiphany/rtems.h rtems.h newlib-stdint.h"
1728 tm_file="${tm_file} newlib-stdint.h"
1731 extra_options="${extra_options} fused-madd.opt"
1732 extra_objs="${extra_objs} mode-switch-use.o resolve-sw-modes.o"
1733 tm_defines="${tm_defines} EPIPHANY_STACK_OFFSET=${with_stack_offset:-8}"
1734 extra_headers="epiphany_intrinsics.h"
1737 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1740 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1741 tmake_file=frv/t-frv
1744 tm_file="elfos.h ${tm_file} \
1745 gnu-user.h linux.h glibc-stdint.h frv/linux.h"
1746 tmake_file="${tmake_file} frv/t-frv frv/t-linux"
1751 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1752 tmake_file="${tmake_file} ft32/t-ft32"
1755 tm_file="elfos.h gcn/gcn-hsa.h gcn/gcn.h newlib-stdint.h"
1756 tmake_file="gcn/t-gcn-hsa"
1757 native_system_header_dir=/include
1758 extra_modes=gcn/gcn-modes.def
1759 extra_objs="${extra_objs} gcn-tree.o"
1760 extra_gcc_objs="driver-gcn.o"
1762 x86_64*-*-linux-gnu )
1763 if test "$ac_cv_search_dlopen" != no; then
1764 extra_programs="${extra_programs} gcn-run\$(exeext)"
1768 if test x$enable_as_accelerator = xyes; then
1769 extra_programs="${extra_programs} mkoffload\$(exeext)"
1770 tm_file="${tm_file} gcn/offload.h"
1772 # Force .init_array support.
1773 gcc_cv_initfini_array=yes
1779 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1780 tmake_file="${tmake_file} moxie/t-moxie"
1785 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h moxie/uclinux.h"
1786 tmake_file="${tmake_file} moxie/t-moxie"
1789 tmake_file="${tmake_file} moxie/t-moxie"
1790 tm_file="moxie/moxie.h elfos.h moxie/rtems.h rtems.h newlib-stdint.h"
1795 tm_file="${tm_file} elfos.h moxie/moxiebox.h newlib-stdint.h"
1796 tmake_file="${tmake_file} moxie/t-moxiebox"
1799 tmake_file="h8300/t-h8300"
1800 tm_file="h8300/h8300.h elfos.h newlib-stdint.h h8300/elf.h"
1803 tmake_file="${tmake_file} h8300/t-h8300 h8300/t-linux"
1804 tm_file="h8300/h8300.h elfos.h gnu-user.h linux.h glibc-stdint.h h8300/linux.h"
1807 target_cpu_default="MASK_PA_11|MASK_PA_20"
1808 tm_file="pa/pa64-start.h ${tm_file} elfos.h gnu-user.h linux.h \
1809 glibc-stdint.h pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h \
1811 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1812 d_target_objs="${d_target_objs} pa-d.o"
1816 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS|MASK_CALLER_COPIES"
1817 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h pa/pa-linux.h \
1818 pa/pa32-regs.h pa/pa32-linux.h"
1819 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1820 d_target_objs="${d_target_objs} pa-d.o"
1823 target_cpu_default="MASK_PA_11"
1824 tm_file="${tm_file} elfos.h openbsd.h openbsd-stdint.h openbsd-libpthread.h \
1825 pa/pa-openbsd.h pa/pa32-regs.h pa/pa32-openbsd.h"
1826 extra_options="${extra_options} openbsd.opt"
1827 tmake_file="pa/t-pa"
1828 d_target_objs="${d_target_objs} pa-d.o"
1833 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS"
1834 tm_file="${tm_file} elfos.h ${nbsd_tm_file} \
1835 pa/pa-netbsd.h pa/pa32-regs.h pa/pa32-netbsd.h"
1836 tmake_file="${tmake_file}"
1837 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
1838 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1841 target_cpu_default="MASK_PA_11|MASK_PA_20"
1842 if test x$gnu_ld = xyes
1844 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
1846 tm_file="pa/pa64-start.h ${tm_file} elfos.h \
1847 pa/pa64-regs.h pa/pa-hpux.h pa/pa-hpux1010.h \
1851 tm_file="${tm_file} pa/pa-hpux1111.h pa/pa-64.h pa/pa64-hpux.h"
1852 extra_options="${extra_options} pa/pa-hpux1111.opt"
1855 tm_file="${tm_file} pa/pa-hpux1131.h pa/pa-64.h pa/pa64-hpux.h"
1856 extra_options="${extra_options} pa/pa-hpux1131.opt"
1859 tm_file="${tm_file} pa/pa-64.h pa/pa64-hpux.h"
1862 extra_options="${extra_options} pa/pa-hpux.opt \
1863 pa/pa-hpux1010.opt pa/pa64-hpux.opt hpux11.opt"
1864 tmake_file="pa/t-pa t-slibgcc"
1865 d_target_objs="${d_target_objs} pa-d.o"
1866 case x${enable_threads} in
1874 use_gcc_stdint=provide
1875 tm_file="${tm_file} hpux-stdint.h"
1879 tm_file="${tm_file} hpux-stdint.h"
1883 i[34567]86-*-darwin1[89]* | i[34567]86-*-darwin2*)
1884 echo "Error: 32bit target is not supported after Darwin17" 1>&2
1886 i[34567]86-*-darwin*)
1888 # Baseline choice for a machine that allows m64 support.
1889 with_cpu=${with_cpu:-core2}
1890 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch t-slibgcc"
1891 tm_file="${cpu_type}/darwin32-biarch.h ${tm_file} "
1893 x86_64-*-darwin1[89]* | x86_64-*-darwin2*)
1895 tm_defines="${tm_defines} TARGET_64BIT_DEFAULT=(OPTION_MASK_ISA_64BIT|OPTION_MASK_ABI_64)"
1896 tm_defines="${tm_defines} TARGET_BI_ARCH=0"
1897 with_cpu=${with_cpu:-core2}
1898 tmake_file="${tmake_file} t-slibgcc"
1901 with_cpu=${with_cpu:-core2}
1902 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
1903 tm_file="${cpu_type}/darwin64-biarch.h ${tm_file} "
1905 i[34567]86-*-elfiamcu)
1906 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/iamcu.h"
1909 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h"
1912 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h"
1915 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"
1918 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/rdos.h"
1921 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"
1922 tmake_file="i386/t-i386elf t-svr4"
1924 i[34567]86-*-dragonfly*)
1925 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h dragonfly.h dragonfly-stdint.h i386/dragonfly.h"
1926 tmake_file="${tmake_file} i386/t-crtstuff"
1928 x86_64-*-dragonfly*)
1929 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h dragonfly.h dragonfly-stdint.h i386/x86-64.h i386/dragonfly.h"
1930 tmake_file="${tmake_file} i386/t-crtstuff"
1932 i[34567]86-*-freebsd*)
1933 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
1936 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"
1938 i[34567]86-*-netbsdelf*)
1939 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${nbsd_tm_file} i386/netbsd-elf.h"
1940 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1943 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${nbsd_tm_file} i386/x86-64.h i386/netbsd64.h"
1944 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1946 i[34567]86-*-openbsd*)
1947 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
1948 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/openbsdelf.h"
1949 extra_options="${extra_options} openbsd.opt"
1954 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
1955 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/x86-64.h i386/openbsdelf.h"
1956 extra_options="${extra_options} openbsd.opt"
1960 i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu)
1961 # Intel 80386's running GNU/*
1962 # with ELF format using glibc 2
1963 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h gnu-user.h glibc-stdint.h"
1965 i[34567]86-*-linux*)
1966 tm_file="${tm_file} linux.h linux-android.h"
1967 extra_options="${extra_options} linux-android.opt"
1968 if test x$enable_targets = xall; then
1969 tm_file="${tm_file} i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h i386/linux-common.h i386/linux64.h"
1970 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
1971 tmake_file="${tmake_file} i386/t-linux64"
1972 x86_multilibs="${with_multilib_list}"
1973 if test "$x86_multilibs" = "default"; then
1974 x86_multilibs="m64,m32"
1976 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
1977 for x86_multilib in ${x86_multilibs}; do
1978 case ${x86_multilib} in
1980 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
1983 echo "--with-multilib-list=${x86_with_multilib} not supported."
1987 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1989 if test x$with_cpu = x; then
1990 if test x$with_cpu_64 = x; then
1994 case " $x86_cpus $x86_archs $x86_64_archs " in
1998 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
1999 echo "$x86_cpus $x86_archs $x86_64_archs " 1>&2
2005 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h i386/linux-common.h i386/linux.h"
2008 i[34567]86-*-kfreebsd*-gnu)
2009 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kfreebsd-gnu.h i386/kfreebsd-gnu.h"
2011 i[34567]86-*-kopensolaris*-gnu)
2012 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kopensolaris-gnu.h i386/kopensolaris-gnu.h"
2015 tm_file="$tm_file i386/gnu-user-common.h i386/gnu-user.h gnu.h i386/gnu.h"
2019 x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-gnu*)
2020 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h gnu-user.h glibc-stdint.h \
2021 i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h"
2024 tm_file="${tm_file} linux.h linux-android.h i386/linux-common.h i386/linux64.h"
2025 extra_options="${extra_options} linux-android.opt"
2027 x86_64-*-kfreebsd*-gnu)
2028 tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu64.h"
2031 tm_file="${tm_file} gnu.h i386/gnu64.h"
2034 tmake_file="${tmake_file} i386/t-linux64"
2035 x86_multilibs="${with_multilib_list}"
2036 if test "$x86_multilibs" = "default"; then
2039 x86_multilibs="mx32"
2042 x86_multilibs="m64,m32"
2046 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
2047 for x86_multilib in ${x86_multilibs}; do
2048 case ${x86_multilib} in
2050 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
2053 echo "--with-multilib-list=${x86_with_multilib} not supported."
2057 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2059 i[34567]86-pc-msdosdjgpp*)
2060 xm_file=i386/xm-djgpp.h
2061 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/djgpp.h i386/djgpp-stdint.h"
2062 native_system_header_dir=/dev/env/DJDIR/include
2063 extra_options="${extra_options} i386/djgpp.opt"
2068 i[34567]86-*-lynxos*)
2070 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h i386/lynx.h lynx.h"
2071 tmake_file="${tmake_file} t-lynx"
2072 extra_options="${extra_options} lynx.opt"
2077 i[34567]86-*-nto-qnx*)
2078 tm_file="${tm_file} i386/att.h tm-dwarf2.h elfos.h i386/unix.h i386/nto.h"
2079 extra_options="${extra_options} i386/nto.opt"
2083 i[34567]86-*-rtems*)
2084 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h i386/i386elf.h i386/rtemself.h rtems.h newlib-stdint.h"
2085 tmake_file="${tmake_file} i386/t-rtems"
2087 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
2088 # Set default arch_32 to pentium4, tune_32 to generic like the other
2089 # i386 targets, although config.guess defaults to i386-pc-solaris2*.
2090 with_arch_32=${with_arch_32:-pentium4}
2091 with_tune_32=${with_tune_32:-generic}
2092 tm_file="${tm_file} i386/unix.h i386/att.h ${sol2_tm_file_head} i386/x86-64.h ${sol2_tm_file_tail}"
2093 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2094 tmake_file="$tmake_file i386/t-sol2"
2096 if test x$with_cpu = x; then
2097 if test x$with_cpu_64 = x; then
2101 case " $x86_cpus $x86_archs $x86_64_archs " in
2105 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2106 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2112 i[4567]86-wrs-vxworks*|x86_64-wrs-vxworks7*)
2113 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
2117 tm_file="${tm_file} i386/x86-64.h"
2120 tm_file="${tm_file} vx-common.h"
2123 tm_file="${tm_file} vxworksae.h i386/vxworks.h i386/vxworksae.h"
2124 tmake_file="${tmake_file} i386/t-vxworks i386/t-vxworksae"
2127 tm_file="${tm_file} vxworks.h i386/vxworks.h"
2128 tmake_file="${tmake_file} i386/t-vxworks"
2132 i[34567]86-*-cygwin*)
2133 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h i386/cygwin.h i386/cygwin-stdint.h"
2134 xm_file=i386/xm-cygwin.h
2135 tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
2136 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2137 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
2138 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2139 c_target_objs="${c_target_objs} msformat-c.o"
2140 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2141 d_target_objs="${d_target_objs} cygwin-d.o"
2142 target_has_targetdm="yes"
2143 if test x$enable_threads = xyes; then
2146 default_use_cxa_atexit=yes
2151 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"
2152 xm_file=i386/xm-cygwin.h
2153 tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
2154 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2155 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
2156 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2157 c_target_objs="${c_target_objs} msformat-c.o"
2158 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2159 d_target_objs="${d_target_objs} cygwin-d.o"
2160 target_has_targetdm="yes"
2161 if test x$enable_threads = xyes; then
2164 default_use_cxa_atexit=yes
2166 tm_defines="${tm_defines} TARGET_CYGWIN64=1"
2168 i[34567]86-*-mingw* | x86_64-*-mingw*)
2169 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h"
2170 xm_file=i386/xm-mingw32.h
2171 c_target_objs="${c_target_objs} winnt-c.o"
2172 cxx_target_objs="${cxx_target_objs} winnt-c.o"
2173 d_target_objs="${d_target_objs} winnt-d.o"
2174 target_has_targetcm="yes"
2175 target_has_targetdm="yes"
2176 rust_target_objs="${rust_target_objs} winnt-rust.o"
2177 target_has_targetrustm="yes"
2179 x86_64-*-* | *-w64-*)
2185 if test x$enable_threads = xposix ; then
2186 tm_file="${tm_file} i386/mingw-pthread.h"
2188 if test x$enable_threads = xmcf ; then
2189 tm_file="${tm_file} i386/mingw-mcfgthread.h"
2191 tm_file="${tm_file} i386/mingw32.h"
2192 # This makes the logic if mingw's or the w64 feature set has to be used
2195 user_headers_inc_next_post="${user_headers_inc_next_post} float.h"
2196 user_headers_inc_next_pre="${user_headers_inc_next_pre} stddef.h stdarg.h"
2197 tm_file="${tm_file} i386/mingw-w64.h"
2198 if test x$enable_targets = xall; then
2199 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2200 if test x$with_cpu = x; then
2201 if test x$with_cpu_64 = x; then
2205 case " $x86_cpus $x86_archs $x86_64_archs " in
2209 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2210 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2220 tm_file="${tm_file} i386/mingw-stdint.h"
2221 tmake_file="${tmake_file} t-winnt i386/t-cygming t-slibgcc"
2224 tmake_file="${tmake_file} i386/t-mingw-w64"
2227 tmake_file="${tmake_file} i386/t-mingw-w32"
2230 native_system_header_dir=/mingw/include
2231 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2232 extra_options="${extra_options} i386/cygming.opt i386/mingw.opt"
2235 extra_options="${extra_options} i386/mingw-w64.opt"
2240 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2241 c_target_objs="${c_target_objs} msformat-c.o"
2242 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2245 default_use_cxa_atexit=yes
2247 case ${enable_threads} in
2257 tm_file="${tm_file} i386/crtdll.h"
2259 *mingw32msv* | *mingw*)
2264 tmake_file="${tmake_file} i386/t-x86_64-elf"
2265 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h fuchsia.h"
2268 tm_file="${tm_file} elfos.h newlib-stdint.h ia64/sysv4.h ia64/elf.h"
2269 tmake_file="ia64/t-ia64"
2270 target_cpu_default="0"
2271 if test x$gas = xyes
2273 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2275 if test x$gnu_ld = xyes
2277 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
2281 tm_file="${tm_file} elfos.h ${fbsd_tm_file} ia64/sysv4.h ia64/freebsd.h"
2282 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2283 tmake_file="${tmake_file} ia64/t-ia64"
2286 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h ia64/sysv4.h ia64/linux.h"
2287 tmake_file="${tmake_file} ia64/t-ia64 ia64/t-linux t-libunwind"
2288 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2291 tm_file="${tm_file} elfos.h ia64/sysv4.h ia64/hpux.h"
2292 tmake_file="ia64/t-ia64 ia64/t-hpux t-slibgcc"
2293 target_cpu_default="MASK_GNU_AS"
2294 case x$enable_threads in
2300 c_target_objs="ia64-c.o"
2301 cxx_target_objs="ia64-c.o"
2302 extra_options="${extra_options} ia64/ilp32.opt hpux11.opt"
2304 tm_file="${tm_file} hpux-stdint.h"
2307 tm_file="${tm_file} ia64/hpux-unix2003.h"
2312 tm_file="${tm_file} elfos.h ia64/sysv4.h vms/vms.h ia64/vms.h"
2313 tmake_file="${tmake_file} ia64/t-ia64"
2314 target_cpu_default="0"
2315 if test x$gas = xyes
2317 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2319 extra_options="${extra_options} ia64/vms.opt"
2322 tm_file="elfos.h newlib-stdint.h iq2000/iq2000.h"
2323 out_file=iq2000/iq2000.cc
2324 md_file=iq2000/iq2000.md
2327 tm_file="elfos.h ${tm_file} newlib-stdint.h"
2328 tmake_file="${tmake_file} lm32/t-lm32"
2331 tm_file="elfos.h ${tm_file} lm32/rtems.h rtems.h newlib-stdint.h"
2332 tmake_file="${tmake_file} lm32/t-lm32"
2333 tmake_file="${tmake_file} lm32/t-rtems"
2336 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h lm32/uclinux-elf.h"
2337 tmake_file="${tmake_file} lm32/t-lm32"
2340 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2343 tm_file="elfos.h newlib-stdint.h m32r/little.h ${tm_file}"
2345 m68k-*-elf* | fido-*-elf*)
2348 # Check that $with_cpu makes sense.
2353 echo "Cannot accept --with-cpu=$with_cpu"
2360 default_m68k_cpu=68020
2364 tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h elfos.h newlib-stdint.h m68k/m68kemb.h m68k/m68020-elf.h"
2365 tm_defines="${tm_defines} MOTOROLA=1"
2366 tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-m68kelf"
2367 # Add multilibs for targets other than fido.
2372 tmake_file="$tmake_file m68k/t-mlibs"
2377 default_m68k_cpu=68020
2379 tm_file="${tm_file} elfos.h ${nbsd_tm_file} m68k/netbsd-elf.h"
2380 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2381 tm_defines="${tm_defines} MOTOROLA=1 CHAR_FAST8=1 SHORT_FAST16=1"
2383 m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux
2384 # with uClibc, using the new GNU/Linux-style
2386 default_m68k_cpu=68020
2388 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"
2389 extra_options="${extra_options} m68k/uclinux.opt"
2390 tm_defines="${tm_defines} MOTOROLA=1"
2391 tmake_file="m68k/t-floatlib m68k/t-uclinux m68k/t-mlibs"
2393 m68k-*-linux*) # Motorola m68k's running GNU/Linux
2394 # with ELF format using glibc 2
2395 # aka the GNU/Linux C library 6.
2396 default_m68k_cpu=68020
2398 with_arch=${with_arch:-m68k}
2399 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h m68k/linux.h ./sysroot-suffix.h"
2400 extra_options="${extra_options} m68k/ieee.opt"
2401 tm_defines="${tm_defines} MOTOROLA=1"
2402 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-linux m68k/t-mlibs"
2405 default_m68k_cpu=68020
2407 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-m68kbare m68k/t-crtstuff m68k/t-rtems m68k/t-mlibs"
2408 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"
2409 tm_defines="${tm_defines} MOTOROLA=1"
2412 tm_file="elfos.h newlib-stdint.h ${tm_file} mcore/mcore-elf.h"
2413 tmake_file=mcore/t-mcore
2419 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2422 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2425 tm_file="${tm_file} gnu-user.h linux.h microblaze/linux.h"
2426 tm_file="${tm_file} glibc-stdint.h"
2427 c_target_objs="${c_target_objs} microblaze-c.o"
2428 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2429 tmake_file="${tmake_file} microblaze/t-microblaze"
2430 tmake_file="${tmake_file} microblaze/t-microblaze-linux"
2432 microblaze*-*-rtems*)
2435 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2438 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2441 tm_file="${tm_file}"
2442 tm_file="${tm_file} microblaze/rtems.h rtems.h newlib-stdint.h"
2443 c_target_objs="${c_target_objs} microblaze-c.o"
2444 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2445 tmake_file="${tmake_file} microblaze/t-microblaze"
2446 tmake_file="${tmake_file} microblaze/t-rtems"
2451 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2454 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2457 tm_file="${tm_file} newlib-stdint.h"
2458 c_target_objs="${c_target_objs} microblaze-c.o"
2459 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2460 tmake_file="${tmake_file} microblaze/t-microblaze"
2463 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} riscv/linux.h"
2464 case "x${enable_multilib}" in
2466 xyes) tmake_file="${tmake_file} riscv/t-linux-multilib" ;;
2467 *) echo "Unknown value for enable_multilib"; exit 1
2469 tmake_file="${tmake_file} riscv/t-riscv riscv/t-linux"
2470 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
2474 riscv32be-*|riscv64be-*)
2475 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2478 # Force .init_array support. The configure script cannot always
2479 # automatically detect that GAS supports it, yet we require it.
2480 gcc_cv_initfini_array=yes
2482 riscv*-*-elf* | riscv*-*-rtems*)
2483 tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h"
2486 tm_file="${tm_file} riscv/rtems.h rtems.h"
2487 tmake_file="${tmake_file} riscv/t-rtems"
2490 if test "x${with_multilib_generator}" = xdefault; then
2491 case "x${enable_multilib}" in
2493 xyes) tmake_file="${tmake_file} riscv/t-elf-multilib" ;;
2494 *) echo "Unknown value for enable_multilib"; exit 1
2498 tmake_file="${tmake_file} riscv/t-riscv"
2502 riscv32be-*|riscv64be-*)
2503 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2506 # Force .init_array support. The configure script cannot always
2507 # automatically detect that GAS supports it, yet we require it.
2508 gcc_cv_initfini_array=yes
2511 tm_file="${tm_file} elfos.h ${fbsd_tm_file} riscv/freebsd.h"
2512 tmake_file="${tmake_file} riscv/t-riscv"
2516 riscv32be-*|riscv64be-*)
2517 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2520 # Force .init_array support. The configure script cannot always
2521 # automatically detect that GAS supports it, yet we require it.
2522 gcc_cv_initfini_array=yes
2525 loongarch*-*-linux*)
2526 tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file}"
2527 tm_file="${tm_file} loongarch/gnu-user.h loongarch/linux.h"
2528 extra_options="${extra_options} linux-android.opt"
2529 tmake_file="${tmake_file} loongarch/t-multilib loongarch/t-linux"
2533 # Force .init_array support. The configure script cannot always
2534 # automatically detect that GAS supports it, yet we require it.
2535 gcc_cv_initfini_array=yes
2539 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2540 tm_file="${tm_file} loongarch/elf.h loongarch/linux.h"
2541 tmake_file="${tmake_file} loongarch/t-multilib loongarch/t-linux"
2545 # For .init_array support. The configure script cannot always
2546 # automatically detect that GAS supports it, yet we require it.
2547 gcc_cv_initfini_array=yes
2550 mips*-*-netbsd*) # NetBSD/mips, either endian.
2551 target_cpu_default="MASK_ABICALLS"
2552 tm_file="elfos.h ${tm_file} mips/elf.h ${nbsd_tm_file} mips/netbsd.h"
2553 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2556 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"
2557 extra_options="${extra_options} linux-android.opt"
2558 tmake_file="${tmake_file} mips/t-img-linux"
2559 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2560 with_arch_32="mips32r6"
2561 with_arch_64="mips64r6"
2566 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"
2567 extra_options="${extra_options} linux-android.opt"
2568 tmake_file="${tmake_file} mips/t-mti-linux"
2569 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2570 with_arch_32="mips32r2"
2571 with_arch_64="mips64r2"
2575 mips*-*-linux*) # Linux MIPS, either endian.
2576 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"
2577 extra_options="${extra_options} linux-android.opt"
2580 default_mips_arch=mips32r6
2583 default_mips_arch=mips32r2
2586 default_mips_arch=mips32
2588 mips64el-st-linux-gnu)
2589 default_mips_abi=n32
2590 tm_file="${tm_file} mips/st.h"
2591 tmake_file="${tmake_file} mips/t-st"
2592 enable_mips_multilibs="yes"
2594 mips64octeon*-*-linux*)
2595 default_mips_abi=n32
2596 tm_defines="${tm_defines} MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\""
2597 target_cpu_default=MASK_SOFT_FLOAT_ABI
2598 enable_mips_multilibs="yes"
2600 mipsisa64r6*-*-linux-gnuabi64)
2602 default_mips_arch=mips64r6
2603 enable_mips_multilibs="yes"
2605 mipsisa64r6*-*-linux*)
2606 default_mips_abi=n32
2607 default_mips_arch=mips64r6
2608 enable_mips_multilibs="yes"
2610 mipsisa64r2*-*-linux-gnuabi64)
2612 default_mips_arch=mips64r2
2613 enable_mips_multilibs="yes"
2615 mipsisa64r2*-*-linux*)
2616 default_mips_abi=n32
2617 default_mips_arch=mips64r2
2618 enable_mips_multilibs="yes"
2620 mips64*-*-linux-gnuabi64 | mipsisa64*-*-linux-gnuabi64)
2622 enable_mips_multilibs="yes"
2624 mips64*-*-linux* | mipsisa64*-*-linux*)
2625 default_mips_abi=n32
2626 enable_mips_multilibs="yes"
2629 if test x$enable_targets = xall; then
2630 enable_mips_multilibs="yes"
2632 if test x$enable_mips_multilibs = xyes; then
2633 tmake_file="${tmake_file} mips/t-linux64"
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-mti-elf"
2639 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2640 with_arch_32="mips32r2"
2641 with_arch_64="mips64r2"
2644 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2645 tmake_file="mips/t-img-elf"
2646 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2647 with_arch_32="mips32r6"
2648 with_arch_64="mips64r6"
2651 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h"
2652 tmake_file="mips/t-sde"
2653 extra_options="${extra_options} mips/sde.opt"
2654 case "${with_newlib}" in
2656 # newlib / libgloss.
2659 # MIPS toolkit libraries.
2660 tm_file="$tm_file mips/sdemtk.h"
2661 tmake_file="$tmake_file mips/t-sdemtk"
2662 case ${enable_threads} in
2664 thread_file='mipssde'
2671 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2674 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2677 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32 MIPS_ABI_DEFAULT=ABI_32"
2680 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6 MIPS_ABI_DEFAULT=ABI_N32"
2683 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2 MIPS_ABI_DEFAULT=ABI_N32"
2686 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_ABI_DEFAULT=ABI_N32"
2690 mipsisa32-*-elf* | mipsisa32el-*-elf* | \
2691 mipsisa32r2-*-elf* | mipsisa32r2el-*-elf* | \
2692 mipsisa32r6-*-elf* | mipsisa32r6el-*-elf* | \
2693 mipsisa64-*-elf* | mipsisa64el-*-elf* | \
2694 mipsisa64r2-*-elf* | mipsisa64r2el-*-elf* | \
2695 mipsisa64r6-*-elf* | mipsisa64r6el-*-elf*)
2696 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2697 tmake_file="mips/t-isa3264"
2700 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6"
2703 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2"
2706 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32"
2709 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6"
2712 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2"
2715 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64"
2719 mipsisa32*-*-elfoabi*)
2720 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_32"
2721 tm_file="${tm_file} mips/elfoabi.h"
2723 mipsisa64*-*-elfoabi*)
2724 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_O64"
2725 tm_file="${tm_file} mips/elfoabi.h"
2728 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2732 mipsisa64sr71k-*-elf*)
2733 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2734 tmake_file=mips/t-sr71k
2735 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sr71000\\\" MIPS_ABI_DEFAULT=ABI_EABI"
2737 mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*)
2738 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2739 tmake_file="mips/t-elf mips/t-sb1"
2740 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sb1\\\" MIPS_ABI_DEFAULT=ABI_O64"
2742 mips-*-elf* | mipsel-*-elf* | mipsr5900-*-elf* | mipsr5900el-*-elf*)
2743 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2744 tmake_file="mips/t-elf"
2746 mips64r5900-*-elf* | mips64r5900el-*-elf*)
2747 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h"
2748 tmake_file="mips/t-elf"
2749 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_N32"
2751 mips64-*-elf* | mips64el-*-elf*)
2752 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2753 tmake_file="mips/t-elf"
2754 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_O64"
2756 mips64vr-*-elf* | mips64vrel-*-elf*)
2757 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/vr.h mips/elf.h"
2758 tmake_file=mips/t-vr
2759 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2761 mips64orion-*-elf* | mips64orionel-*-elf*)
2762 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elforion.h mips/elf.h"
2763 tmake_file="mips/t-elf"
2764 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_O64"
2767 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/rtems.h rtems.h"
2768 tmake_file="${tmake_file} mips/t-elf mips/t-rtems"
2771 tm_file="elfos.h ${tm_file} mips/elf.h vx-common.h vxworks.h mips/vxworks.h"
2772 tmake_file="${tmake_file} mips/t-vxworks"
2774 mipstx39-*-elf* | mipstx39el-*-elf*)
2775 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/r3900.h mips/elf.h"
2776 tmake_file="mips/t-r3900"
2778 mmix-knuth-mmixware)
2779 tm_file="${tm_file} newlib-stdint.h"
2783 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2788 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2789 c_target_objs="msp430-c.o"
2790 cxx_target_objs="msp430-c.o"
2791 tmake_file="${tmake_file} msp430/t-msp430"
2792 extra_objs="${extra_objs} msp430-devices.o"
2793 extra_gcc_objs="driver-msp430.o msp430-devices.o"
2794 # Enable .init_array unless it has been explicitly disabled.
2795 # The MSP430 EABI mandates the use of .init_array, and the Newlib CRT
2796 # code since mid-2019 expects it.
2797 if test x${disable_initfini_array} != xyes; then
2798 gcc_cv_initfini_array=yes
2802 # __cxa_atexit increases code size, and we don't need to support
2803 # dynamic shared objects on MSP430, so regular Newlib atexit is a
2804 # fine replacement as it also supports registration of more than 32
2806 default_use_cxa_atexit=no
2807 # This target does not match the generic *-*-elf case above which
2808 # sets use_gcc_stdint=wrap, so explicitly set it here.
2814 target_cpu_default="0"
2815 tm_defines="${tm_defines}"
2820 target_cpu_default="${target_cpu_default}|MASK_BIG_ENDIAN"
2821 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2826 tm_file="elfos.h newlib-stdint.h ${tm_file} nds32/elf.h nds32/nds32_intrinsic.h"
2827 tmake_file="nds32/t-nds32 nds32/t-elf"
2830 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h nds32/linux.h nds32/nds32_intrinsic.h"
2831 tmake_file="${tmake_file} nds32/t-nds32 nds32/t-linux"
2832 gcc_cv_initfini_array=yes
2836 # Handle --enable-default-relax setting.
2837 if test x${enable_default_relax} = xyes; then
2838 tm_defines="${tm_defines} TARGET_DEFAULT_RELAX=1"
2840 # Handle --with-ext-dsp
2841 if test x${with_ext_dsp} = xyes; then
2842 tm_defines="${tm_defines} TARGET_DEFAULT_EXT_DSP=1"
2846 tm_file="elfos.h ${tm_file}"
2847 tmake_file="${tmake_file} nios2/t-nios2"
2850 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h nios2/linux.h "
2853 tm_file="${tm_file} newlib-stdint.h nios2/elf.h"
2854 extra_options="${extra_options} nios2/elf.opt"
2857 tm_file="${tm_file} newlib-stdint.h nios2/rtems.h rtems.h"
2858 tmake_file="${tmake_file} t-rtems nios2/t-rtems"
2863 tm_file="${tm_file} newlib-stdint.h"
2865 tmake_file="nvptx/t-nvptx"
2866 if test x$enable_as_accelerator = xyes; then
2867 extra_programs="${extra_programs} mkoffload\$(exeext)"
2868 tm_file="${tm_file} nvptx/offload.h"
2872 tm_file="elfos.h ${tm_file}"
2873 tmake_file="${tmake_file} or1k/t-or1k"
2874 # Force .init_array support. The configure script cannot always
2875 # automatically detect that GAS supports it, yet we require it.
2876 gcc_cv_initfini_array=yes
2878 # Handle --with-multilib-list=...
2879 or1k_multilibs="${with_multilib_list}"
2880 if test "$or1k_multilibs" = "default"; then
2881 or1k_multilibs="mcmov,msoft-mul,msoft-div"
2883 or1k_multilibs=`echo $or1k_multilibs | sed -e 's/,/ /g'`
2884 for or1k_multilib in ${or1k_multilibs}; do
2885 case ${or1k_multilib} in
2886 mcmov | msext | msfimm | \
2888 mhard-float | mdouble-float | munordered-float | msoft-float | \
2889 mhard-div | mhard-mul | \
2890 msoft-div | msoft-mul )
2891 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${or1k_multilib}"
2894 echo "--with-multilib-list=${with_multilib_list} not supported."
2898 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2902 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h"
2903 tm_file="${tm_file} or1k/linux.h"
2906 tm_file="${tm_file} newlib-stdint.h or1k/elf.h"
2907 extra_options="${extra_options} or1k/elf.opt"
2910 tm_file="${tm_file} newlib-stdint.h or1k/rtems.h rtems.h"
2911 tmake_file="${tmake_file} or1k/t-rtems"
2916 tm_file="${tm_file} newlib-stdint.h"
2919 # port not yet contributed
2920 #powerpc-*-openbsd*)
2921 # tmake_file="${tmake_file} rs6000/t-fprules"
2925 extra_options="${extra_options} ${cpu_type}/darwin.opt"
2927 *-darwin1[0-9]* | *-darwin9*)
2928 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2929 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2932 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2933 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2936 tm_file="${tm_file} ${cpu_type}/darwin7.h"
2939 # Earlier - ingle arch, with 32b only
2940 # OS X 10.0, the first edition is Darwin4
2943 tmake_file="${tmake_file} t-slibgcc"
2945 powerpc64-*-darwin*)
2946 extra_options="${extra_options} ${cpu_type}/darwin.opt"
2947 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
2948 tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h"
2950 powerpc*-*-freebsd*)
2951 tm_file="${tm_file} elfos.h gnu-user.h ${fbsd_tm_file} rs6000/sysv4.h"
2952 extra_options="${extra_options} rs6000/sysv4.opt"
2953 tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
2956 tm_file="${tm_file} rs6000/sysv4le.h" ;;
2960 tm_file="${tm_file} rs6000/default64.h rs6000/freebsd64.h"
2961 tmake_file="${tmake_file} rs6000/t-freebsd64"
2962 extra_options="${extra_options} rs6000/linux64.opt"
2963 if test $fbsd_major -ge 13; then
2964 tm_defines="${tm_defines} TARGET_FREEBSD32_SECURE_PLT=1"
2968 if test $fbsd_major -ge 13; then
2969 tm_file="rs6000/secureplt.h ${tm_file}"
2971 tm_file="${tm_file} rs6000/freebsd.h"
2976 tm_file="${tm_file} elfos.h gnu-user.h ${nbsd_tm_file} freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h"
2977 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2978 tmake_file="${tmake_file} rs6000/t-netbsd"
2979 extra_options="${extra_options} rs6000/sysv4.opt"
2981 powerpc-*-eabisimaltivec*)
2982 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"
2983 extra_options="${extra_options} rs6000/sysv4.opt"
2984 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
2988 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"
2989 extra_options="${extra_options} rs6000/sysv4.opt"
2990 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
2994 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h"
2995 extra_options="${extra_options} rs6000/sysv4.opt"
2996 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
2998 powerpc-*-eabialtivec*)
2999 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabialtivec.h"
3000 extra_options="${extra_options} rs6000/sysv4.opt"
3001 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
3005 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h"
3006 extra_options="${extra_options} rs6000/sysv4.opt"
3007 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3011 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"
3012 extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
3013 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-rtems rs6000/t-ppccomm"
3016 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h rs6000/sysv4.h"
3017 extra_options="${extra_options} rs6000/sysv4.opt"
3018 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm"
3019 extra_objs="$extra_objs rs6000-linux.o"
3022 tm_file="${tm_file} rs6000/sysv4le.h" ;;
3024 case ${target}:${with_cpu} in
3025 powerpc64*: | powerpc64*:native) cpu_is_64bit=yes ;;
3027 maybe_biarch=${cpu_is_64bit}
3028 case ${enable_targets} in
3029 *powerpc64*) maybe_biarch=yes ;;
3030 all) maybe_biarch=yes ;;
3032 case ${target}:${enable_targets}:${maybe_biarch} in
3033 powerpc64-* | powerpc-*:*:yes | *:*powerpc64-*:yes | *:all:yes \
3034 | powerpc64le*:*powerpcle* | powerpc64le*:*powerpc-* \
3035 | powerpcle-*:*powerpc64le*:yes)
3036 if test x$cpu_is_64bit = xyes; then
3037 tm_file="${tm_file} rs6000/default64.h"
3039 tm_file="rs6000/biarch64.h ${tm_file} rs6000/linux64.h glibc-stdint.h"
3040 tmake_file="$tmake_file rs6000/t-linux64"
3043 tmake_file="$tmake_file rs6000/t-linux64le"
3044 case ${enable_targets} in
3045 all | *powerpc64-* | *powerpc-*)
3046 tmake_file="$tmake_file rs6000/t-linux64lebe" ;;
3049 case ${enable_targets} in
3050 all | *powerpc64le-* | *powerpcle-*)
3051 tmake_file="$tmake_file rs6000/t-linux64bele" ;;
3054 extra_options="${extra_options} rs6000/linux64.opt"
3057 tm_file="${tm_file} rs6000/default64.h rs6000/linux64.h glibc-stdint.h"
3058 extra_options="${extra_options} rs6000/linux64.opt"
3059 tmake_file="${tmake_file} rs6000/t-linux"
3062 tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
3063 tmake_file="${tmake_file} rs6000/t-ppcos rs6000/t-linux"
3067 powerpc*-*-linux*ppc476*)
3068 tm_file="${tm_file} rs6000/476.h"
3069 extra_options="${extra_options} rs6000/476.opt" ;;
3070 powerpc*-*-linux*altivec*)
3071 tm_file="${tm_file} rs6000/linuxaltivec.h" ;;
3075 enable_secureplt=yes ;;
3077 if test x${enable_secureplt} = xyes; then
3078 tm_file="rs6000/secureplt.h ${tm_file}"
3081 powerpc*-wrs-vxworks7r*)
3083 # Wind River 7 post SR0600 is mostly like Linux so we setup
3084 # our config in a very similar fashion and adjust to a few
3087 # The system compiler is configured with secureplt by default.
3088 tm_file="${tm_file} rs6000/secureplt.h"
3090 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h"
3091 tm_file="${tm_file} rs6000/sysv4.h rs6000/biarch64.h rs6000/default64.h rs6000/linux64.h"
3092 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3094 extra_options="${extra_options} rs6000/sysv4.opt linux.opt rs6000/linux64.opt"
3096 tmake_file="${tmake_file} t-linux rs6000/t-linux64 rs6000/t-fprules rs6000/t-ppccomm"
3097 tmake_file="${tmake_file} rs6000/t-vxworks"
3099 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
3100 extra_objs="$extra_objs linux.o rs6000-linux.o"
3102 powerpc-wrs-vxworks*)
3103 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h rs6000/sysv4.h"
3104 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm rs6000/t-vxworks"
3105 extra_options="${extra_options} rs6000/sysv4.opt vxworks-smp.opt"
3106 extra_headers="${extra_headers} ppc-asm.h"
3109 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksmils.h"
3110 tmake_file="${tmake_file} rs6000/t-vxworksmils"
3113 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksae.h"
3114 tmake_file="${tmake_file} rs6000/t-vxworksae"
3117 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3123 tm_file="${tm_file} elfos.h gnu-user.h rs6000/sysv4.h rs6000/lynx.h lynx.h"
3124 tmake_file="t-lynx rs6000/t-lynx"
3125 extra_options="${extra_options} rs6000/sysv4.opt lynx.opt"
3131 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h"
3132 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3133 extra_options="${extra_options} rs6000/sysv4.opt"
3135 powerpcle-*-eabisim*)
3136 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"
3137 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3138 extra_options="${extra_options} rs6000/sysv4.opt"
3142 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"
3143 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3144 extra_options="${extra_options} rs6000/sysv4.opt"
3148 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3149 tmake_file="${tmake_file} pru/t-pru"
3150 extra_objs="pru-pragma.o pru-passes.o"
3153 rs6000-ibm-aix7.1.* | powerpc-ibm-aix7.1.*)
3154 tmake_file="rs6000/t-aix52 t-slibgcc"
3155 if test x$cpu_is_64bit = xyes; then
3156 tm_file="${tm_file} rs6000/biarch64.h"
3157 tmake_file="rs6000/t-aix64 t-slibgcc"
3159 tm_file="${tm_file} rs6000/aix.h rs6000/aix71.h rs6000/xcoff.h rs6000/aix-stdint.h"
3160 extra_options="${extra_options} rs6000/aix64.opt"
3164 default_use_cxa_atexit=yes
3166 rs6000-ibm-aix7.2.* | powerpc-ibm-aix7.2.*)
3167 tmake_file="rs6000/t-aix52 t-slibgcc"
3168 if test x$cpu_is_64bit = xyes; then
3169 tm_file="${tm_file} rs6000/biarch64.h"
3170 tmake_file="rs6000/t-aix64 t-slibgcc"
3172 tm_file="${tm_file} rs6000/aix.h rs6000/aix72.h rs6000/xcoff.h rs6000/aix-stdint.h"
3173 extra_options="${extra_options} rs6000/aix64.opt"
3177 default_use_cxa_atexit=yes
3179 rs6000-ibm-aix[789].* | powerpc-ibm-aix[789].*)
3180 tmake_file="rs6000/t-aix52 t-slibgcc"
3181 if test x$cpu_is_64bit = xyes; then
3182 tm_file="${tm_file} rs6000/biarch64.h"
3183 tmake_file="rs6000/t-aix64 t-slibgcc"
3185 tm_file="${tm_file} rs6000/aix.h rs6000/aix73.h rs6000/xcoff.h rs6000/aix-stdint.h"
3186 extra_options="${extra_options} rs6000/aix64.opt"
3190 default_use_cxa_atexit=yes
3193 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3194 target_has_targetm_common=no
3195 c_target_objs="rl78-c.o"
3196 cxx_target_objs="rl78-c.o"
3197 tmake_file="${tmake_file} rl78/t-rl78"
3200 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3201 tmake_file="${tmake_file} rx/t-rx"
3202 extra_options="${extra_options} rx/elf.opt"
3205 tm_file="elfos.h linux.h glibc-stdint.h rx/linux.h ../../libgcc/config/rx/rx-abi.h"
3206 tmake_file="${tmake_file} rx/t-linux"
3209 tm_file="s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3210 c_target_objs="${c_target_objs} s390-c.o"
3211 cxx_target_objs="${cxx_target_objs} s390-c.o"
3212 if test x$enable_targets = xall; then
3213 tmake_file="${tmake_file} s390/t-linux64"
3215 tmake_file="${tmake_file} s390/t-s390"
3218 tm_file="s390/s390x.h s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3219 tm_p_file="linux-protos.h s390/s390-protos.h"
3220 c_target_objs="${c_target_objs} s390-c.o"
3221 cxx_target_objs="${cxx_target_objs} s390-c.o"
3222 md_file=s390/s390.md
3223 extra_modes=s390/s390-modes.def
3224 out_file=s390/s390.cc
3225 tmake_file="${tmake_file} s390/t-linux64 s390/t-s390"
3228 tm_file="s390/s390x.h s390/s390.h elfos.h glibc-stdint.h s390/tpf.h"
3229 tm_p_file=s390/s390-protos.h
3230 c_target_objs="${c_target_objs} s390-c.o"
3231 cxx_target_objs="${cxx_target_objs} s390-c.o"
3232 md_file=s390/s390.md
3233 extra_modes=s390/s390-modes.def
3234 out_file=s390/s390.cc
3236 extra_options="${extra_options} s390/tpf.opt"
3237 tmake_file="${tmake_file} s390/t-s390"
3239 sh-*-elf* | sh[12346l]*-*-elf* | \
3240 sh-*-linux* | sh[2346lbe]*-*-linux* | \
3241 sh-*-netbsdelf* | shl*-*-netbsdelf*)
3242 tmake_file="${tmake_file} sh/t-sh sh/t-elf"
3243 if test x${with_endian} = x; then
3245 sh[1234]*be-*-* | sh[1234]*eb-*-*) with_endian=big ;;
3246 shbe-*-* | sheb-*-*) with_endian=big,little ;;
3247 sh[1234]l* | sh[34]*-*-linux*) with_endian=little ;;
3248 shl* | sh*-*-linux* | \
3249 sh-superh-elf) with_endian=little,big ;;
3250 sh[1234]*-*-*) with_endian=big ;;
3251 *) with_endian=big,little ;;
3254 # TM_ENDIAN_CONFIG is used by t-sh to determine multilibs.
3255 # First word : the default endian.
3256 # Second word: the secondary endian (optional).
3257 case ${with_endian} in
3258 big) TM_ENDIAN_CONFIG=mb ;;
3259 little) TM_ENDIAN_CONFIG=ml ;;
3260 big,little) TM_ENDIAN_CONFIG="mb ml" ;;
3261 little,big) TM_ENDIAN_CONFIG="ml mb" ;;
3262 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
3264 case ${with_endian} in
3265 little*) tm_file="sh/little.h ${tm_file}" ;;
3267 tm_file="${tm_file} elfos.h sh/elf.h"
3269 sh*-*-linux*) tmake_file="${tmake_file} sh/t-linux"
3270 if test x$enable_fdpic = xyes; then
3271 tm_defines="$tm_defines FDPIC_DEFAULT=1"
3273 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h sh/linux.h" ;;
3275 tm_file="${tm_file} ${nbsd_tm_file} sh/netbsd-elf.h"
3276 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3279 sh*-superh-elf) if test x$with_libgloss != xno; then
3281 tm_file="${tm_file} sh/newlib.h"
3283 tm_file="${tm_file} sh/embed-elf.h"
3284 tm_file="${tm_file} sh/superh.h"
3285 extra_options="${extra_options} sh/superh.opt" ;;
3286 *) if test x$with_newlib = xyes \
3287 && test x$with_libgloss = xyes; then
3288 tm_file="${tm_file} sh/newlib.h"
3290 tm_file="${tm_file} sh/embed-elf.h" ;;
3296 tm_file="${tm_file} newlib-stdint.h"
3299 # sed el/eb endian suffixes away to avoid confusion with sh[23]e
3300 case `echo ${target} | sed 's/e[lb]-/-/'` in
3301 sh4a_single_only*) sh_cpu_target=sh4a-single-only ;;
3302 sh4a_single*) sh_cpu_target=sh4a-single ;;
3303 sh4a_nofpu*) sh_cpu_target=sh4a-nofpu ;;
3304 sh4al) sh_cpu_target=sh4al ;;
3305 sh4a*) sh_cpu_target=sh4a ;;
3306 sh4_single_only*) sh_cpu_target=sh4-single-only ;;
3307 sh4_single*) sh_cpu_target=sh4-single ;;
3308 sh4_nofpu*) sh_cpu_target=sh4-nofpu ;;
3309 sh4* | sh-superh-*) sh_cpu_target=sh4 ;;
3310 sh3e*) sh_cpu_target=sh3e ;;
3311 sh*-*-netbsd* | sh3*) sh_cpu_target=sh3 ;;
3312 sh2a_single_only*) sh_cpu_target=sh2a-single-only ;;
3313 sh2a_single*) sh_cpu_target=sh2a-single ;;
3314 sh2a_nofpu*) sh_cpu_target=sh2a-nofpu ;;
3315 sh2a*) sh_cpu_target=sh2a ;;
3316 sh2e*) sh_cpu_target=sh2e ;;
3317 sh2*) sh_cpu_target=sh2 ;;
3318 *) sh_cpu_target=sh1 ;;
3320 # did the user say --without-fp ?
3321 if test x$with_fp = xno; then
3322 case ${sh_cpu_target} in
3324 sh4a* ) sh_cpu_target=sh4a-nofpu ;;
3325 sh4*) sh_cpu_target=sh4-nofpu ;;
3326 sh3*) sh_cpu_target=sh3 ;;
3327 sh2a*) sh_cpu_target=sh2a-nofpu ;;
3328 sh2*) sh_cpu_target=sh2 ;;
3329 *) echo --without-fp not available for $target: ignored
3331 tm_defines="$tm_defines STRICT_NOFPU=1"
3333 sh_cpu_default="`echo $with_cpu|sed s/^m/sh/|tr A-Z_ a-z-`"
3334 case $sh_cpu_default in
3335 sh2a-single-only | sh2a-single | sh2a-nofpu | sh2a | \
3336 sh4a-single-only | sh4a-single | sh4a-nofpu | sh4a | sh4al | \
3337 sh4-single-only | sh4-single | sh4-nofpu | sh4 | sh4-300 | \
3338 sh3e | sh3 | sh2e | sh2 | sh1) ;;
3339 "") sh_cpu_default=${sh_cpu_target} ;;
3340 *) echo "with_cpu=$with_cpu not supported"; exit 1 ;;
3342 sh_multilibs=${with_multilib_list}
3343 if test "$sh_multilibs" = "default" ; then
3345 sh[1234]*) sh_multilibs=${sh_cpu_target} ;;
3346 sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
3347 sh*-*-linux*) sh_multilibs=m1,m2,m2a,m3e,m4 ;;
3348 sh*-*-netbsd*) sh_multilibs=m3,m3e,m4 ;;
3349 *) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single ;;
3351 if test x$with_fp = xno; then
3352 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`"
3355 target_cpu_default=SELECT_`echo ${sh_cpu_default}|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`
3356 tm_defines=${tm_defines}' SH_MULTILIB_CPU_DEFAULT=\"'`echo $sh_cpu_default|sed s/sh/m/`'\"'
3357 tm_defines="$tm_defines SUPPORT_`echo $sh_cpu_default | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3358 sh_multilibs=`echo $sh_multilibs | sed -e 's/,/ /g' -e 's/^[Ss][Hh]/m/' -e 's/ [Ss][Hh]/ m/g' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-`
3359 for sh_multilib in ${sh_multilibs}; do
3360 case ${sh_multilib} in
3361 m1 | m2 | m2e | m3 | m3e | \
3362 m4 | m4-single | m4-single-only | m4-nofpu | m4-300 |\
3363 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al | \
3364 m2a | m2a-single | m2a-single-only | m2a-nofpu)
3365 # TM_MULTILIB_CONFIG is used by t-sh for the non-endian multilib definition
3366 # It is passed to MULTIILIB_OPTIONS verbatim.
3367 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG}/${sh_multilib}"
3368 tm_defines="$tm_defines SUPPORT_`echo $sh_multilib | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3370 \!*) # TM_MULTILIB_EXCEPTIONS_CONFIG is used by t-sh
3371 # It is passed the MULTILIB_EXCEPTIONS verbatim.
3372 TM_MULTILIB_EXCEPTIONS_CONFIG="${TM_MULTILIB_EXCEPTIONS_CONFIG} `echo $sh_multilib | sed 's/^!//'`" ;;
3374 echo "with_multilib_list=${sh_multilib} not supported."
3379 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's:^/::'`
3380 if test x${enable_incomplete_targets} = xyes ; then
3381 tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1"
3383 tm_file="$tm_file ./sysroot-suffix.h"
3384 tmake_file="$tmake_file t-sysroot-suffix"
3387 tmake_file="${tmake_file} sh/t-sh sh/t-rtems"
3388 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h newlib-stdint.h"
3391 tmake_file="$tmake_file sh/t-sh sh/t-vxworks"
3392 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h vx-common.h vxworks.h sh/vxworks.h"
3395 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp-elf.h"
3398 tmake_file="sparc/t-sparc sparc/t-leon"
3401 tmake_file="sparc/t-sparc sparc/t-leon3"
3404 tmake_file="sparc/t-sparc sparc/t-elf"
3409 tm_file="${tm_file} elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
3410 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
3413 tm_file="${tm_file} elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
3414 extra_options="${extra_options} sparc/long-double-switch.opt"
3417 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon"
3420 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon3"
3423 tmake_file="${tmake_file} sparc/t-sparc"
3426 if test x$enable_targets = xall; then
3427 tm_file="sparc/biarch64.h ${tm_file} sparc/linux64.h"
3428 tmake_file="${tmake_file} sparc/t-linux64"
3430 tm_file="${tm_file} sparc/linux.h"
3431 tmake_file="${tmake_file} sparc/t-linux"
3435 tm_file="${tm_file} elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3436 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3437 extra_options="${extra_options} sparc/long-double-switch.opt"
3438 tmake_file="${tmake_file} sparc/t-sparc"
3441 tm_file="sparc/biarch64.h ${tm_file} ${sol2_tm_file} sparc/tso.h"
3443 sparc64-*-* | sparcv9-*-*)
3444 tm_file="sparc/default64.h ${tm_file}"
3447 test x$with_cpu != x || with_cpu=v9
3450 tmake_file="${tmake_file} sparc/t-sparc sparc/t-sol2"
3453 tm_file="${tm_file} elfos.h sparc/sysv4.h vx-common.h vxworks.h sparc/vxworks.h"
3454 tmake_file="${tmake_file} sparc/t-sparc sparc/t-vxworks"
3457 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h"
3458 extra_options="${extra_options}"
3459 tmake_file="${tmake_file} sparc/t-sparc"
3462 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h sparc/rtemself.h rtems.h"
3463 extra_options="${extra_options}"
3464 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
3467 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"
3468 extra_options="${extra_options} sparc/long-double-switch.opt"
3469 tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
3471 sparc64-*-freebsd*|ultrasparc-*-freebsd*)
3472 tm_file="${tm_file} ${fbsd_tm_file} elfos.h sparc/sysv4.h sparc/freebsd.h"
3473 extra_options="${extra_options} sparc/long-double-switch.opt"
3474 case "x$with_cpu" in
3476 x) with_cpu=ultrasparc ;;
3477 *) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
3479 tmake_file="${tmake_file} sparc/t-sparc"
3482 tm_file="sparc/biarch64.h ${tm_file}"
3483 tm_file="${tm_file} elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3484 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3485 extra_options="${extra_options} sparc/long-double-switch.opt"
3486 tmake_file="${tmake_file} sparc/t-sparc sparc/t-netbsd64"
3489 tm_file="sparc/openbsd1-64.h ${tm_file} elfos.h sparc/sysv4.h sparc/sp64-elf.h"
3490 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h sparc/openbsd64.h"
3491 extra_options="${extra_options} openbsd.opt"
3492 extra_options="${extra_options}"
3495 tmake_file="${tmake_file} sparc/t-sparc"
3498 tm_file="elfos.h ${tm_file} c6x/elf-common.h c6x/elf.h"
3499 tm_file="${tm_file} tm-dwarf2.h newlib-stdint.h"
3500 tmake_file="c6x/t-c6x c6x/t-c6x-elf"
3504 tm_file="elfos.h ${tm_file} gnu-user.h linux.h c6x/elf-common.h c6x/uclinux-elf.h"
3505 tm_file="${tm_file} tm-dwarf2.h glibc-stdint.h"
3506 tm_file="${tm_file} ./sysroot-suffix.h"
3507 tmake_file="t-sysroot-suffix t-slibgcc"
3508 tmake_file="${tmake_file} c6x/t-c6x c6x/t-c6x-elf c6x/t-c6x-uclinux"
3512 target_cpu_default="TARGET_CPU_generic"
3513 tm_file="elfos.h v850/v850.h"
3514 tm_file="${tm_file} v850/rtems.h rtems.h newlib-stdint.h"
3515 tmake_file="${tmake_file} v850/t-v850"
3516 tmake_file="${tmake_file} v850/t-rtems"
3518 c_target_objs="v850-c.o"
3519 cxx_target_objs="v850-c.o"
3524 target_cpu_default="TARGET_CPU_v850e3v5"
3527 target_cpu_default="TARGET_CPU_v850e2v3"
3530 target_cpu_default="TARGET_CPU_v850e2"
3532 v850e1-*-* | v850es-*-*)
3533 target_cpu_default="TARGET_CPU_v850e1"
3536 target_cpu_default="TARGET_CPU_v850e"
3539 target_cpu_default="TARGET_CPU_generic"
3542 tm_file="elfos.h newlib-stdint.h v850/v850.h"
3544 c_target_objs="v850-c.o"
3545 cxx_target_objs="v850-c.o"
3549 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h vax/elf.h vax/linux.h"
3550 extra_options="${extra_options} vax/elf.opt"
3553 tm_file="${tm_file} elfos.h ${nbsd_tm_file} vax/elf.h vax/netbsd-elf.h"
3554 extra_options="${extra_options} netbsd.opt netbsd-elf.opt vax/elf.opt"
3555 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
3558 tm_file="elfos.h ${tm_file} visium/elf.h newlib-stdint.h"
3559 tmake_file="visium/t-visium visium/t-crtstuff"
3562 # For historical reasons, the target files omit the 'x'.
3563 tm_file="elfos.h newlib-stdint.h stormy16/stormy16.h"
3564 tm_p_file=stormy16/stormy16-protos.h
3565 md_file=stormy16/stormy16.md
3566 out_file=stormy16/stormy16.cc
3567 extra_options=stormy16/stormy16.opt
3568 tmake_file="stormy16/t-stormy16"
3571 tm_file="${tm_file} elfos.h newlib-stdint.h xtensa/elf.h"
3572 extra_options="${extra_options} xtensa/elf.opt"
3575 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/linux.h"
3576 tmake_file="${tmake_file} xtensa/t-xtensa"
3579 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/uclinux.h"
3580 tmake_file="${tmake_file} xtensa/t-xtensa"
3581 extra_options="${extra_options} xtensa/uclinux.opt"
3584 tm_file="mn10300/mn10300.h elfos.h gnu-user.h linux.h glibc-stdint.h mn10300/linux.h"
3589 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3590 c_target_objs="m32c-pragma.o"
3591 cxx_target_objs="m32c-pragma.o"
3594 echo "*** Configuration ${target} not supported" 1>&2
3600 i[34567]86-*-linux* | x86_64-*-linux*)
3601 tmake_file="${tmake_file} i386/t-pmm_malloc i386/t-i386"
3603 i[34567]86-*-* | x86_64-*-*)
3604 tmake_file="${tmake_file} i386/t-gmm_malloc i386/t-i386"
3606 powerpc*-*-* | rs6000-*-*)
3607 tm_file="${tm_file} ${cpu_type}/option-defaults.h"
3613 tmake_file="${tmake_file} t-musl"
3616 tmake_file="${tmake_file} t-uclibc"
3620 # Assume the existence of indirect function support and allow the use of the
3621 # resolver attribute.
3623 *-*-linux*android*|*-*-linux*uclibc*|*-*-linux*musl*)
3625 *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
3627 *-*-linux* | *-*-gnu*)
3629 aarch64*-* | arm*-* | i[34567]86-* | powerpc*-* | s390*-* | sparc*-* | x86_64-* | loongarch*-*)
3630 default_gnu_indirect_function=yes
3636 if [ "$target_has_targetcm" = "no" ]; then
3637 c_target_objs="$c_target_objs default-c.o"
3638 cxx_target_objs="$cxx_target_objs default-c.o"
3641 if [ "$common_out_file" = "" ]; then
3642 if [ "$target_has_targetm_common" = "yes" ]; then
3643 common_out_file="$cpu_type/$cpu_type-common.cc"
3645 common_out_file="default-common.cc"
3649 if [ "$target_has_targetdm" = "no" ]; then
3650 d_target_objs="$d_target_objs default-d.o"
3653 if [ "$target_has_targetrustm" = "no" ]; then
3654 rust_target_objs="$rust_target_objs default-rust.o"
3657 # Support for --with-cpu and related options (and a few unrelated options,
3661 echo "--with-cpu must be passed a value" 1>&2
3666 # Set arch and cpu from ${target} and ${target_noncanonical}. Set cpu
3667 # to generic if there is no processor scheduler model for the target.
3670 arch_without_sse2=no
3671 arch_without_64bit=no
3674 if test $fbsd_major -ge 6; then
3680 arch_without_sse2=yes
3681 arch_without_64bit=yes
3686 arch_without_sse2=yes
3687 arch_without_64bit=yes
3692 arch_without_sse2=yes
3693 arch_without_64bit=yes
3698 arch_without_sse2=yes
3699 arch_without_64bit=yes
3702 arch_without_sse2=yes
3703 arch_without_64bit=yes
3704 case ${target_noncanonical} in
3717 pentium_mmx-*|winchip_c6-*|winchip2-*|c3-*)
3727 i686-*-* | i786-*-*)
3728 case ${target_noncanonical} in
3769 amdfam10-*|barcelona-*)
3773 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3777 k8-*|opteron-*|athlon64-*|athlon_fx-*)
3781 athlon_xp-*|athlon_mp-*|athlon_4-*)
3784 arch_without_sse2=yes
3785 arch_without_64bit=yes
3787 athlon_tbird-*|athlon-*)
3790 arch_without_sse2=yes
3795 arch_without_sse2=yes
3804 arch_without_sse2=yes
3806 pentium3-*|pentium3m-*)
3809 arch_without_sse2=yes
3811 pentium4-*|pentium4m-*)
3850 arch_without_sse2=yes
3855 arch_without_sse2=yes
3856 arch_without_64bit=yes
3861 case ${target_noncanonical} in
3902 amdfam10-*|barcelona-*)
3906 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3910 k8-*|opteron-*|athlon_64-*)
3946 # If there is no $with_cpu option, try to infer one from ${target}.
3947 # This block sets nothing except for with_cpu.
3948 if test x$with_cpu = x ; then
3950 i[34567]86-*-elfiamcu)
3953 i[34567]86-*-*|x86_64-*-*)
3971 frv-*-*linux* | frv400-*-*linux*)
3978 case "$with_arch" in
3980 with_cpu=${default_cf_cpu}
3983 with_cpu=m${default_m68k_cpu}
3999 with_cpu="`echo ${target} | sed 's/-.*$//'`"
4008 # Avoid overriding --with-cpu-32 and --with-cpu-64 values.
4010 i[34567]86-*-*|x86_64-*-*)
4011 if test x$with_cpu_32 != x || test x$with_cpu_64 != x; then
4012 if test x$with_cpu_32 = x; then
4013 with_cpu_32=$with_cpu
4015 if test x$with_cpu_64 = x; then
4016 with_cpu_64=$with_cpu
4024 # Support for --with-arch and related options (and a few unrelated options,
4026 case ${with_arch} in
4028 echo "--with-arch must be passed a value" 1>&2
4033 # If there is no $with_arch option, try to infer one from ${target}.
4034 # This block sets nothing except for with_arch.
4035 if test x$with_arch = x ; then
4037 i[34567]86-*-darwin*|x86_64-*-darwin*)
4038 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
4039 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
4041 i[34567]86-*-elfiamcu)
4045 # --with-fpmath sets the default ISA to SSE2, which is the same
4046 # ISA supported by Pentium 4.
4047 if test x$with_fpmath = x || test $arch_without_sse2 = no; then
4056 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4067 # Avoid overriding --with-arch-32 and --with-arch-64 values.
4069 i[34567]86-*-darwin*|x86_64-*-darwin*)
4070 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
4071 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
4073 i[34567]86-*-*|x86_64-*-*)
4074 if test x$with_arch_32 != x || test x$with_arch_64 != x; then
4075 if test x$with_arch_32 = x; then
4076 with_arch_32=$with_arch
4078 if test x$with_arch_64 = x; then
4079 if test $arch_without_64bit = yes; then
4080 # Set the default 64bit arch to x86-64 if the default arch
4081 # doesn't support 64bit.
4084 with_arch_64=$with_arch
4088 elif test $arch_without_64bit$need_64bit_isa = yesyes; then
4089 # Set the default 64bit arch to x86-64 if the default arch
4090 # doesn't support 64bit and we need 64bit ISA.
4091 with_arch_32=$with_arch
4099 # Infer a default setting for --with-float.
4100 if test x$with_float = x; then
4102 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4103 # The R5900 doesn't support 64-bit float. 32-bit float doesn't
4104 # comply with IEEE 754.
4110 # Infer a default setting for --with-fpu.
4111 if test x$with_fpu = x; then
4113 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4114 # The R5900 FPU only supports single precision.
4120 # Support --with-fpmath.
4121 if test x$with_fpmath != x; then
4123 i[34567]86-*-* | x86_64-*-*)
4124 case ${with_fpmath} in
4126 tm_file="${tm_file} i386/avxmath.h"
4129 tm_file="${tm_file} i386/ssemath.h"
4132 echo "Invalid --with-fpmath=$with_fpmath" 1>&2
4138 echo "--with-fpmath isn't supported for $target." 1>&2
4144 # Similarly for --with-schedule.
4145 if test x$with_schedule = x; then
4148 # Override default PA8000 scheduling model.
4149 with_schedule=7100LC
4154 # Infer a default setting for --with-llsc.
4155 if test x$with_llsc = x; then
4158 # The kernel emulates LL and SC where necessary.
4161 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4162 # The R5900 doesn't support LL(D) and SC(D).
4168 # Validate and mark as valid any --with options supported
4169 # by this target. In order to use a particular --with option
4170 # you must list it in supported_defaults; validating the value
4171 # is optional. This case statement should set nothing besides
4172 # supported_defaults.
4177 supported_defaults="abi cpu cpu_64 arch arch_64 tune tune_64"
4178 if test x$with_cpu_64 != x && test x$with_cpu = x; then
4179 with_cpu=$with_cpu_64
4181 if test x$with_arch_64 != x && test x$with_arch = x; then
4182 with_arch=$with_arch_64
4184 if test x$with_tune_64 != x && test x$with_tune = x; then
4185 with_tune=$with_tune_64
4187 for which in cpu arch tune; do
4188 eval "val=\$with_$which"
4189 base_val=`echo $val | sed -e 's/\+.*//'`
4190 ext_val=`echo $val | sed -e 's/[a-z0-9.-]\+//'`
4192 if [ $which = arch ]; then
4193 def=aarch64-arches.def
4194 pattern=AARCH64_ARCH
4196 def=aarch64-cores.def
4197 pattern=AARCH64_CORE
4200 # Find the base CPU or ARCH id in aarch64-cores.def or
4201 # aarch64-arches.def
4202 if [ x"$base_val" = x ] \
4203 || grep "^$pattern(\"$base_val\"," \
4204 ${srcdir}/config/aarch64/$def \
4207 # Disallow extensions in --with-tune=cortex-a53+crc.
4208 if [ $which = tune ] && [ x"$ext_val" != x ]; then
4209 echo "Architecture extensions not supported in --with-$which=$val" 1>&2
4213 # Use the pre-processor to strip flatten the options.
4214 # This makes the format less rigid than if we use
4215 # grep and sed directly here.
4216 opt_macro="AARCH64_OPT_EXTENSION(A, B, C, D, E, F)=A, B, C, D, E, F"
4217 options_parsed="`$ac_cv_prog_CPP -D"$opt_macro" -x c \
4218 ${srcdir}/config/aarch64/aarch64-option-extensions.def`"
4220 while [ x"$ext_val" != x ]
4222 ext_val=`echo $ext_val | sed -e 's/\+//'`
4223 ext=`echo $ext_val | sed -e 's/\+.*//'`
4224 base_ext=`echo $ext | sed -e 's/^no//'`
4225 opt_line=`echo -e "$options_parsed" | \
4226 grep "^\"$base_ext\""`
4228 if [ x"$base_ext" = x ] \
4229 || [ x"$opt_line" != x ]; then
4232 echo "Unknown extension used in --with-$which=$val" 1>&2
4235 ext_val=`echo $ext_val | sed -e 's/[a-z0-9]\+//'`
4240 # Allow --with-$which=native.
4241 if [ "$val" = native ]; then
4244 echo "Unknown $which used in --with-$which=$val" 1>&2
4252 supported_defaults="cpu tune"
4253 for which in cpu tune; do
4254 eval "val=\$with_$which"
4257 | ev4 | ev45 | 21064 | ev5 | 21164 | ev56 | 21164a \
4258 | pca56 | 21164PC | 21164pc | ev6 | 21264 | ev67 \
4262 echo "Unknown CPU used in --with-$which=$val" 1>&2
4270 supported_defaults="cpu fpu"
4273 if [ x"$with_cpu" = x ] \
4274 || grep -q -E "^ARC_CPU[[:blank:]]*\($with_cpu," \
4275 ${srcdir}/config/arc/arc-cpus.def
4280 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4284 # see if --with-fpu matches any of the supported FPUs
4289 fpus | fpus_div | fpus_fma | fpus_all)
4293 fpuda | fpuda_div | fpuda_fma | fpuda_all)
4297 fpud | fpud_div | fpud_fma | fpud_all)
4302 echo "Unknown floating point type used in "\
4303 "--with-fpu=$with_fpu" 1>&2
4308 if [ -n "$flags_ok" ] \
4309 && ! grep -q -E "^ARC_CPU[[:blank:]]*\($new_cpu,[[:blank:]]*$flags_ok," \
4310 ${srcdir}/config/arc/arc-cpus.def
4312 echo "Unknown floating point type used in "\
4313 "--with-fpu=$with_fpu for cpu $new_cpu" 1>&2
4319 # Handle --with-multilib-list.
4320 if test "x${with_multilib_list}" != xdefault; then
4321 TM_MULTILIB_CONFIG="${with_multilib_list}"
4326 supported_defaults="cpu endian float"
4330 supported_defaults="arch cpu float tune fpu abi mode tls"
4331 for which in cpu tune arch; do
4332 # See if it matches a supported value
4333 eval "val=\$with_$which"
4334 if [ x"$val" != x ]; then
4335 cpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4336 -v cmd="chk$which $val" \
4337 ${srcdir}/config/arm/arm-cpus.in`
4338 if [ "$cpu" = "error" ]; then
4339 echo "Unknown target in --with-$which=$val" 1>&2
4343 eval "target_${which}_cname=$new_val"
4344 echo "For $val real value is $new_val"
4349 case "$with_float" in
4351 | soft | hard | softfp)
4355 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4360 # see if --with-fpu matches any of the supported FPUs
4361 if [ x"$with_fpu" != x ] ; then
4363 fpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4364 -v cmd="chkfpu $val" \
4365 ${srcdir}/config/arm/arm-cpus.in`
4366 if [ "$fpu" = "error" ]
4368 echo "Unknown target in --with-fpu=$val" 1>&2
4375 | apcs-gnu | atpcs | aapcs | iwmmxt | aapcs-linux )
4379 echo "Unknown ABI used in --with-abi=$with_abi"
4384 case "$with_mode" in
4390 echo "Unknown mode used in --with-mode=$with_mode"
4401 echo "Unknown TLS method used in --with-tls=$with_tls" 1>&2
4406 if test "x$with_arch" != x && test "x$with_cpu" != x; then
4407 echo "Switch \"--with-arch\" may not be used with switch \"--with-cpu\"" 1>&2
4411 if test "x$with_cpu" != x && test "x$with_tune" != x; then
4412 echo "Switch \"--with-tune\" may not be used with switch \"--with-cpu\"" 1>&2
4416 # Add extra multilibs
4417 if test "x$with_multilib_list" != x; then
4419 arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
4420 if test "x${arm_multilibs}" != xdefault ; then
4421 for arm_multilib in ${arm_multilibs}; do
4422 case ${arm_multilib} in
4424 tmake_profile_file="arm/t-multilib"
4425 tm_mlib_file="arm/arm-mlib.h"
4428 ml=`echo "X$arm_multilib" | sed '1s,^X@,,'`
4429 if test -f "${srcdir}/config/arm/${ml}"; then
4430 tmake_file="${tmake_file} arm/${ml}"
4432 echo "Error: ${ml} does not exist in ${srcdir}/config/arm" >&2
4437 echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2
4444 if test "x${tmake_profile_file}" != x ; then
4445 # arm/t-aprofile and arm/t-rmprofile are only
4446 # designed to work without any with-cpu,
4447 # with-arch, with-mode, with-fpu or with-float
4449 if test "x$with_arch" != x \
4450 || test "x$with_cpu" != x \
4451 || test "x$with_float" != x \
4452 || test "x$with_fpu" != x \
4453 || test "x$with_mode" != x ; then
4454 echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=${with_multilib_list}" 1>&2
4456 elif test "x$ml" != x ; then
4457 echo "Error: You cannot use builtin multilib profiles along with custom ones" 1>&2
4460 # But pass the default value for float-abi
4461 # through to the multilib selector
4463 tmake_file="${tmake_file} ${tmake_profile_file}"
4464 tm_file="$tm_file $tm_mlib_file"
4465 TM_MULTILIB_CONFIG="$with_multilib_list"
4468 target_cpu_cname=${target_cpu_cname:-arm7tdmi}
4469 with_cpu=${with_cpu:-$target_cpu_cname}
4473 supported_defaults=cpu
4478 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4484 fido-*-* | m68k*-*-*)
4485 supported_defaults="arch cpu"
4486 case "$with_arch" in
4488 m68k_arch_family="$with_arch"
4491 echo "Invalid --with-arch=$with_arch" 1>&2
4496 # We always have a $with_cpu setting here.
4498 "m68000" | "m68010" | "m68020" | "m68030" | "m68040" | "m68060")
4499 m68k_cpu_ident=$with_cpu
4502 m68k_cpu_ident=m68020
4503 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_40"
4506 m68k_cpu_ident=m68020
4507 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_60"
4510 # We need the C identifier rather than the string.
4511 m68k_cpu_ident=`awk -v arg="\"$with_cpu\"" \
4512 'BEGIN { FS="[ \t]*[,()][ \t]*" }; \
4513 $1 == "M68K_DEVICE" && $2 == arg { print $3 }' \
4514 ${srcdir}/config/m68k/m68k-devices.def`
4515 if [ x"$m68k_cpu_ident" = x ] ; then
4516 echo "Unknown CPU used in --with-cpu=$with_cpu" 1>&2
4519 with_cpu="mcpu=$with_cpu"
4525 supported_defaults="arch tune"
4527 for which in arch tune; do
4528 eval "val=\$with_$which"
4530 "" | fiji | gfx900 | gfx906 | gfx908 | gfx90a)
4534 echo "Unknown cpu used in --with-$which=$val." 1>&2
4539 [ "x$with_arch" = x ] && with_arch=fiji
4543 supported_defaults="arch schedule"
4545 case "$with_arch" in
4546 "" | 1.0 | 1.1 | 2.0)
4550 echo "Unknown architecture used in --with-arch=$with_arch" 1>&2
4555 case "$with_schedule" in
4556 "" | 700 | 7100 | 7100LC | 7200 | 7300 | 8000)
4560 echo "Unknown processor used in --with-schedule=$with_schedule." 1>&2
4566 i[34567]86-*-* | x86_64-*-*)
4567 supported_defaults="abi arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64"
4568 for which in arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64; do
4569 eval "val=\$with_$which"
4570 case " $x86_archs " in
4578 echo "CPU given in --with-$which=$val doesn't support 64bit mode." 1>&2
4587 if test x${val} != x; then
4588 case " $x86_64_archs " in
4590 # Disallow x86-64-v* for --with-cpu=/--with-tune=
4591 case "x$which$val" in
4592 xcpu*x86-64-v*|xtune*x86-64-v*)
4593 echo "Unknown CPU given in --with-$which=$val." 1>&2
4602 # Allow $x86_cpus --with-cpu=/--with-tune=
4605 case " $x86_cpus " in
4610 echo "Unknown CPU given in --with-$which=$val." 1>&2
4616 echo "Unknown CPU given in --with-$which=$val." 1>&2
4629 supported_defaults="abi arch tune riscv_attribute isa_spec"
4632 riscv-* | riscv32*) xlen=32 ;;
4633 riscv64*) xlen=64 ;;
4634 *) echo "Unsupported RISC-V target ${target}" 1>&2; exit 1 ;;
4637 case "${with_isa_spec}" in
4638 ""|default|20191213|201912)
4639 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20191213"
4640 with_isa_spec=20191213
4643 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_2P2"
4646 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20190608"
4647 with_isa_spec=20190608
4650 echo "--with-isa-spec only accept 2.2, 20191213, 201912, 20190608 or 201906" 1>&2
4654 case "${with_riscv_attribute}" in
4656 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4659 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=0"
4662 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4665 echo "--with-riscv-attribute=${with_riscv_attribute} is not supported. The argument must begin with yes, no or default." 1>&2
4671 # Infer arch from --with-arch, --target, and --with-abi.
4672 case "${with_arch}" in
4673 rv32e* | rv32i* | rv32g* | rv64i* | rv64g*)
4677 # Infer XLEN, but otherwise assume GC.
4678 case "${with_abi}" in
4679 ilp32e) with_arch="rv32e" ;;
4680 ilp32 | ilp32f | ilp32d) with_arch="rv32gc" ;;
4681 lp64 | lp64f | lp64d) with_arch="rv64gc" ;;
4682 *) with_arch="rv${xlen}gc" ;;
4686 echo "--with-arch=${with_arch} is not supported. The argument must begin with rv32e, rv32i, rv32g, rv64i, or rv64g." 1>&2
4690 PYTHON=`which python || which python3 || which python2`
4691 if test "x${PYTHON}" != x; then
4692 with_arch=`${PYTHON} ${srcdir}/config/riscv/arch-canonicalize -misa-spec=${with_isa_spec} ${with_arch}`
4694 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ARCH=${with_arch}"
4696 # Make sure --with-abi is valid. If it was not specified,
4697 # pick a default based on the ISA, preferring soft-float
4698 # unless the D extension is present.
4699 case "${with_abi}" in
4700 ilp32 | ilp32e | ilp32f | ilp32d | lp64 | lp64f | lp64d)
4703 case "${with_arch}" in
4704 rv32*d* | rv32g*) with_abi=ilp32d ;;
4705 rv32e*) with_abi=ilp32e ;;
4706 rv32*) with_abi=ilp32 ;;
4707 rv64*d* | rv64g*) with_abi=lp64d ;;
4708 rv64*) with_abi=lp64 ;;
4712 echo "--with-abi=${with_abi} is not supported" 1>&2
4716 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ABI=${with_abi}"
4718 # Make sure ABI and ISA are compatible.
4719 case "${with_abi},${with_arch}" in
4720 ilp32,rv32* | ilp32e,rv32e* \
4721 | ilp32f,rv32*f* | ilp32f,rv32g* \
4722 | ilp32d,rv32*d* | ilp32d,rv32g* \
4724 | lp64f,rv64*f* | lp64f,rv64g* \
4725 | lp64d,rv64*d* | lp64d,rv64g*)
4728 echo "--with-abi=${with_abi} is not supported for ISA ${with_arch}" 1>&2
4732 # Handle --with-multilib-generator.
4733 if test "x${with_multilib_generator}" != xdefault; then
4734 if test "x${with_multilib_list}" != xdefault; then
4735 echo "--with-multilib-list= can't used with --with-multilib-generator= at same time" 1>&2
4740 if ${srcdir}/config/riscv/multilib-generator \
4741 -misa-spec=${with_isa_spec} \
4742 `echo ${with_multilib_generator} | sed 's/;/ /g'`\
4743 > t-multilib-config;
4745 tmake_file="${tmake_file} riscv/t-withmultilib-generator"
4747 echo "invalid option for --with-multilib-generator" 1>&2
4752 echo "--with-multilib-generator= is not supported for ${target}, only supported for riscv*-*-elf*" 1>&2
4758 # Handle --with-multilib-list.
4759 if test "x${with_multilib_list}" != xdefault; then
4760 tmake_file="${tmake_file} riscv/t-withmultilib"
4762 case ${with_multilib_list} in
4763 ilp32 | ilp32f | ilp32d \
4764 | lp64 | lp64f | lp64d )
4765 TM_MULTILIB_CONFIG="${with_arch},${with_multilib_list}"
4768 echo "--with-multilib-list=${with_multilib_list} not supported."
4775 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"
4777 case ${with_float} in
4782 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4788 "" | single | double)
4792 echo "Unknown fpu type used in --with-fpu=$with_fpu" 1>&2
4802 echo "Unknown NaN encoding used in --with-nan=$with_nan" 1>&2
4807 case ${with_fp_32} in
4812 echo "Unknown FP mode used in --with-fp-32=$with_fp_32" 1>&2
4817 case ${with_odd_spreg_32} in
4819 with_odd_spreg_32="odd-spreg"
4822 with_odd_spreg_32="no-odd-spreg"
4828 echo "Unknown odd-spreg-32 type used in --with-odd-spreg-32=$with_odd_spreg_32" 1>&2
4834 "" | 32 | o64 | n32 | 64 | eabi)
4838 echo "Unknown ABI used in --with-abi=$with_abi" 1>&2
4843 case ${with_divide} in
4844 "" | breaks | traps)
4848 echo "Unknown division check type use in --with-divide=$with_divide" 1>&2
4853 case ${with_llsc} in
4864 echo "Unknown llsc type used in --with-llsc" 1>&2
4869 case ${with_mips_plt} in
4874 with_mips_plt=no-plt
4879 echo "Unknown --with-mips-plt argument: $with_mips_plt" 1>&2
4884 case ${with_synci} in
4894 echo "Unknown synci type used in --with-synci" 1>&2
4899 case ${with_lxc1_sxc1} in
4901 with_lxc1_sxc1=lxc1-sxc1
4904 with_lxc1_sxc1=no-lxc1-sxc1
4909 echo "Unknown lxc1-sxc1 type used in --with-lxc1-sxc1" 1>&2
4914 case ${with_madd4} in
4924 echo "Unknown madd4 type used in --with-madd4" 1>&2
4929 case ${with_compact_branches} in
4930 "" | never | always | optimal)
4933 echo "Unknown compact-branches policy used in --with-compact-branches" 1>&2
4948 echo "Unknown msa type used in --with-msa" 1>&2
4955 supported_defaults="abi arch tune fpu simd multilib-default strict-align-lib"
4960 arch_pattern arch_default \
4961 fpu_pattern fpu_default \
4962 triplet_os triplet_abi \
4965 # --with-abi is now obsolete, emit a warning if given.
4969 echo "warning: --with-abi= is now obsolete," \
4970 "the default ABI is derived from your target" \
4971 "triplet ${target}" 1>&2
4975 # Infer ABI from the triplet.
4977 loongarch64-*f64) abi_base="lp64d"; abi_ext="base" ;;
4978 loongarch64-*f32) abi_base="lp64f"; abi_ext="base" ;;
4979 loongarch64-*sf) abi_base="lp64s"; abi_ext="base" ;;
4980 loongarch64-*) abi_base="lp64d"; abi_ext="base" ;;
4982 echo "Unsupported target ${target}." 1>&2
4987 # Get the canonical triplet (multiarch specifier).
4988 case ${abi_base},${abi_ext} in
4989 lp64d,base) triplet_abi="";;
4990 lp64f,base) triplet_abi="f32";;
4991 lp64s,base) triplet_abi="sf";;
4995 *-linux-gnu*) triplet_os="linux-gnu";;
4996 *-linux-musl*) triplet_os="linux-musl";;
4997 *-elf*) triplet_os="elf";;
4999 echo "Unsupported target ${target}." 1>&2
5003 la_canonical_triplet="loongarch64-${triplet_os}${triplet_abi}"
5006 # Perform initial sanity checks on --with-* options.
5007 case ${with_arch} in
5008 "" | abi-default | loongarch64 | la464) ;; # OK, append here.
5010 if test x${host} != x${target}; then
5011 echo "--with-arch=native is illegal for cross-compiler." 1>&2
5016 echo "Unknown arch in --with-arch=$with_arch" 1>&2
5023 "" | none | 32 | 64) ;; # OK, append here.
5025 # Convert "0" to "none" for upcoming checks.
5029 echo "Unknown fpu type in --with-fpu=$with_fpu" 1>&2
5034 case ${with_simd} in
5036 lsx | lasx) # OK, append here.
5041 echo "--with-simd=${with_simd} conflicts with --with-fpu=${with_fpu}" 1>&2
5048 echo "Unknown SIMD extension in --with-simd=$with_simd" 1>&2
5053 # Infer ISA-related default options from the ABI: pass 1
5054 case ${abi_base}/${abi_ext} in
5056 # architectures that support lp64* ABI
5057 arch_pattern="native|abi-default|loongarch64|la464"
5058 # default architecture for lp64* ABI
5059 arch_default="abi-default"
5062 echo "Unsupported ABI type ${abi_base}/${abi_ext}." 1>&2
5067 # Infer ISA-related default options from the ABI: pass 2
5068 case ${abi_base}/${abi_ext} in
5077 fpu_pattern="none|32|64"
5081 echo "Unsupported ABI type ${abi_base}/${abi_ext}." 1>&2
5086 ## Set default value for with_arch.
5087 case ${with_arch} in
5089 if test x${arch_default} != x; then
5090 with_arch=${arch_default}
5092 with_arch=${arch_pattern}
5097 if echo "${with_arch}" | grep -E "^${arch_pattern}$" > /dev/null; then
5100 echo "${abi_base}/${abi_ext} ABI cannot be implemented with" \
5101 "--with-arch=${with_arch}." 1>&2
5107 ## Set default value for with_fpu.
5110 if test x${fpu_default} != x; then
5111 with_fpu=${fpu_default}
5113 with_fpu=${fpu_pattern}
5118 if echo "${with_fpu}" | grep -E "^${fpu_pattern}$" > /dev/null; then
5121 echo "${abi_base}/${abi_ext} ABI cannot be implemented with" \
5122 "--with-fpu=${with_fpu}." 1>&2
5129 # Check default with_tune configuration using with_arch.
5130 case ${with_arch} in
5132 tune_pattern="native|abi-default|loongarch64|la464"
5135 # By default, $with_tune == $with_arch
5140 case ${with_tune} in
5143 if echo "${with_tune}" | grep -E "^${tune_pattern}$" > /dev/null; then
5146 echo "Incompatible options: --with-tune=${with_tune}" \
5147 "and --with-arch=${with_arch}." 1>&2
5153 # Build libraries with -mstrict-align if --with-strict-align-lib is given.
5154 case ${with_strict_align_lib} in
5155 yes) strict_align_opt="/mstrict-align" ;;
5158 echo "Unknown option: --with-strict-align-lib=${with_strict_align_lib}" 1>&2
5164 # Handle --with-multilib-default
5165 if echo "${with_multilib_default}" \
5166 | grep -E -e '[[:space:]]' -e '//' -e '/$' -e '^/' > /dev/null 2>&1; then
5167 echo "Invalid argument to --with-multilib-default." 1>&2
5171 if test x${with_multilib_default} = x; then
5172 # Use -march=abi-default by default when building libraries.
5173 with_multilib_default="/march=abi-default"
5175 unset parse_state component
5177 for component in $(echo "${with_multilib_default}" | tr '/' ' '); do
5178 case ${parse_state},${component} in
5179 arch,|arch,abi-default)
5180 # ABI-default: use the ABI's default ARCH configuration for
5181 # multilib library builds, unless otherwise specified
5182 # in --with-multilib-list.
5183 with_multilib_default="/march=abi-default" ;;
5185 # Fixed: use the default gcc configuration for all multilib
5186 # builds by default.
5187 with_multilib_default="" ;;
5188 arch,native|arch,loongarch64|arch,la464) # OK, append here.
5189 with_multilib_default="/march=${component}" ;;
5191 with_multilib_default="/march=abi-default"
5192 with_multilib_default="${with_multilib_default}/${component}" ;;
5194 with_multilib_default="${with_multilib_default}/${component}" ;;
5197 if test x${parse_state} = xarch; then
5201 unset parse_state component
5204 # Handle --with-multilib-list.
5205 if test x"${with_multilib_list}" = x \
5206 || test x"${with_multilib_list}" = xno \
5207 || test x"${with_multilib_list}" = xdefault \
5208 || test x"${enable_multilib}" != xyes; then
5210 with_multilib_list="${abi_base}/${abi_ext}"
5213 # Check if the configured default ABI combination is included in
5214 # ${with_multilib_list}.
5215 loongarch_multilib_list_sane=no
5217 # This one goes to TM_MULTILIB_CONFIG, for use in t-linux.
5218 loongarch_multilib_list_make="${abi_base},"
5220 # This one goes to tm_defines, for use in loongarch-driver.c.
5221 loongarch_multilib_list_c=""
5223 # ${with_multilib_list} should not contain whitespaces,
5224 # consecutive commas or slashes.
5225 if echo "${with_multilib_list}" \
5226 | grep -E -e "[[:space:]]" -e '[,/][,/]' -e '[,/]$' -e '^[,/]' > /dev/null 2>&1; then
5227 echo "Invalid argument to --with-multilib-list." 1>&2
5231 unset component elem_abi_base elem_abi_ext elem_tmp parse_state all_abis
5232 for elem in $(echo "${with_multilib_list}" | tr ',' ' '); do
5233 unset elem_abi_base elem_abi_ext
5234 parse_state="abi-base"
5236 for component in $(echo "${elem}" | tr '/' ' '); do
5237 if test x${parse_state} = x"abi-base"; then
5239 case ${component} in
5240 lp64d | lp64f | lp64s) elem_tmp="ABI_BASE_$(echo ${component} | tr a-z A-Z),";;
5242 echo "Unknown base ABI \"${component}\" in --with-multilib-list." 1>&2
5246 loongarch_multilib_list_c="${loongarch_multilib_list_c}${elem_tmp}"
5247 loongarch_multilib_list_make="${loongarch_multilib_list_make}mabi=${component}"
5248 elem_abi_base="${component}"
5250 parse_state="abi-ext"
5254 if test x${parse_state} = x"abi-ext"; then
5255 # ABI extension type
5256 case ${component} in
5259 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5260 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5266 # The default ABI extension is "base" if unspecified.
5268 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5269 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5273 if test x${parse_state} = x"arch"; then
5275 case ${component} in
5276 native | abi-default | loongarch64 | la464) # OK, append here.
5277 # Append -march spec for each multilib variant.
5278 loongarch_multilib_list_make="${loongarch_multilib_list_make}/march=${component}"
5284 # "/default" is equivalent to --with-multilib-default=fixed
5290 # If ARCH is unspecified for this multilib variant, use ${with_multllib_default}.
5291 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5295 if test x${parse_state} = x"opts"; then
5296 # Other compiler options for building libraries.
5297 # (no static sanity check performed)
5298 case ${component} in
5300 # Append other components as additional build options
5301 # (without the prepending dash).
5302 # Their validity should be examined by the compiler.
5303 loongarch_multilib_list_make="${loongarch_multilib_list_make}/${component}"
5309 case ${parse_state} in
5312 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5313 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5314 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5317 # If ARCH is unspecified for this multilib variant, use ${with_multllib_default}.
5318 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5325 # Use mstrict-align for building libraries if --with-strict-align-lib is given.
5326 loongarch_multilib_list_make="${loongarch_multilib_list_make}${strict_align_opt}"
5328 # Check for repeated configuration of the same multilib variant.
5329 if echo "${elem_abi_base}/${elem_abi_ext}" \
5330 | grep -E "^(${all_abis%|})$" >/dev/null 2>&1; then
5331 echo "Repeated multilib config of \"${elem_abi_base}/${elem_abi_ext}\" in --with-multilib-list."
5334 all_abis="${all_abis}${elem_abi_base}/${elem_abi_ext}|"
5337 # Check if the default ABI configuration of the GCC binary
5338 # is included in the enabled multilib variants.
5339 if test x${elem_abi_base} = x${abi_base} \
5340 && test x${elem_abi_ext} = x${abi_ext}; then
5341 loongarch_multilib_list_sane=yes
5343 loongarch_multilib_list_make="${loongarch_multilib_list_make},"
5345 unset component elem_abi_base elem_abi_ext elem_tmp parse_state all_abis
5348 # Check if the default ABI combination is in the default list.
5349 if test x${loongarch_multilib_list_sane} = xno; then
5350 if test x${abi_ext} = xbase; then
5353 abi_ext="/${abi_ext}"
5356 echo "Default ABI combination (${abi_base}${abi_ext})" \
5357 "not found in --with-multilib-list." 1>&2
5361 # Remove the excessive appending comma.
5362 loongarch_multilib_list_c=${loongarch_multilib_list_c%,}
5363 loongarch_multilib_list_make=${loongarch_multilib_list_make%,}
5367 supported_defaults="arch cpu nds32_lib float fpu_config"
5369 # process --with-arch
5370 case "${with_arch}" in
5372 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5376 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5379 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=1"
5382 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=2"
5386 echo "Cannot accept --with-arch=$with_arch, available values are: v2 v2j v3 v3m v3f v3s" 1>&2
5391 case "${with_cpu}" in
5395 n6 | n7 |n8 | e8 | s8 | n9 | n10 | d10 | n12 | n13 | n15)
5399 echo "Cannot accept --with-cpu=$with_cpu, available values are: n6 n7 n8 e8 s8 n9 n10 d10 n12 n13 n15" 1>&2
5404 # process --with-nds32-lib
5405 case "${with_nds32_lib}" in
5409 with_nds32_lib=ulibc
5412 with_nds32_lib=glibc
5415 with_nds32_lib=newlib
5416 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5422 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5426 # for the arch=v3f or arch=v3s under mculib toolchain,
5427 # we would like to set -fno-math-errno as default
5428 case "${with_arch}" in
5430 tm_defines="${tm_defines} TARGET_DEFAULT_NO_MATH_ERRNO=1"
5438 echo "Cannot accept --with-nds32-lib=$with_nds32_lib, available values are: newlib mculib glibc uclibc" 1>&2
5443 # process --with-float
5444 case "${with_float}" in
5449 echo "Cannot accept --with-float=$with_float, available values are: soft hard" 1>&2
5454 # process --with-config-fpu
5455 case "${with_config_fpu}" in
5460 echo "Cannot accept --with-config-fpu=$with_config_fpu, available values from 0 to 7" 1>&2
5468 supported_defaults="arch"
5469 case "$with_arch" in
5474 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5481 supported_defaults=arch
5482 TM_MULTILIB_CONFIG=$with_arch
5483 #TODO 'sm_[...]' list per 'nvptx-sm.def'.
5488 sm_35 | sm_53 | sm_70 | sm_75 | sm_80 )
5489 # OK, but we'd like 'sm_30', too.
5490 TM_MULTILIB_CONFIG="$TM_MULTILIB_CONFIG sm_30"
5493 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5499 powerpc*-*-* | rs6000-*-*)
5500 supported_defaults="abi cpu cpu_32 cpu_64 float tune tune_32 tune_64 advance_toolchain"
5502 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5503 eval "val=\$with_$which"
5505 default32 | default64)
5510 echo "$val only valid for --with-cpu and --with-tune." 1>&2
5514 with_which="with_$which"
5518 tm_defines="${tm_defines} CONFIG_PPC405CR"
5519 eval "with_$which=405"
5521 "" | common | native \
5522 | power[3456789] | power10 | power5+ | power6x \
5523 | powerpc | powerpc64 | powerpc64le \
5525 | 401 | 403 | 405 | 405fp | 440 | 440fp | 464 | 464fp \
5526 | 476 | 476fp | 505 | 601 | 602 | 603 | 603e | ec603e \
5527 | 604 | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 \
5528 | a2 | e300c[23] | 854[08] | e500mc | e500mc64 | e5500 | e6500 \
5529 | titan | 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5 | cell)
5533 echo "Unknown cpu used in --with-$which=$val." 1>&2
5540 "" | elfv1 | elfv2 )
5544 echo "Unknown ABI used in --with-abi=$with_abi"
5549 if test "x$with_advance_toolchain" != x; then
5550 if test -d "/opt/$with_advance_toolchain/." -a \
5551 -d "/opt/$with_advance_toolchain/bin/." -a \
5552 -d "/opt/$with_advance_toolchain/include/."; then
5554 tm_file="$tm_file ./advance-toolchain.h"
5555 (at="/opt/$with_advance_toolchain"
5556 echo "/* Use Advance Toolchain $at */"
5558 echo "#undef LINK_OS_NEW_DTAGS_SPEC"
5559 echo "#define LINK_OS_NEW_DTAGS_SPEC" \
5560 "\"--enable-new-dtags\""
5562 echo "#undef DYNAMIC_LINKER_PREFIX"
5563 echo "#define DYNAMIC_LINKER_PREFIX \"$at\""
5565 echo "#undef MD_EXEC_PREFIX"
5566 echo "#define MD_EXEC_PREFIX \"$at/bin/\""
5568 echo "#undef MD_STARTFILE_PREFIX"
5569 echo "#define MD_STARTFILE_PREFIX \"$prefix/lib/\""
5571 echo "#undef MD_STARTFILE_PREFIX_1"
5572 echo "#define MD_STARTFILE_PREFIX_1 \"$at/lib/\"") \
5573 > advance-toolchain.h
5575 echo "Unknown advance-toolchain $with_advance_toolchain"
5580 # Set up the default long double format if the user changed it.
5581 if test x$with_long_double_format = xieee; then
5582 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=1"
5584 elif test x$with_long_double_format = xibm; then
5585 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=0"
5590 supported_defaults="arch mode tune"
5592 for which in arch tune; do
5593 eval "val=\$with_$which"
5595 "" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | z15 | z16 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12 | arch13 | arch14 )
5599 echo "Unknown cpu used in --with-$which=$val." 1>&2
5605 case ${with_mode} in
5610 echo "Unknown architecture mode used in --with-mode=$with_mode." 1>&2
5616 sh[123456ble]*-*-* | sh-*-*)
5617 supported_defaults="cpu"
5618 case "`echo $with_cpu | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz- | sed s/sh/m/`" in
5619 "" | m1 | m2 | m2e | m3 | m3e | m4 | m4-single | m4-single-only | m4-nofpu )
5622 m2a | m2a-single | m2a-single-only | m2a-nofpu)
5624 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al)
5627 echo "Unknown CPU used in --with-cpu=$with_cpu, known values:" 1>&2
5628 echo "m1 m2 m2e m3 m3e m4 m4-single m4-single-only m4-nofpu" 1>&2
5629 echo "m4a m4a-single m4a-single-only m4a-nofpu m4al" 1>&2
5630 echo "m2a m2a-single m2a-single-only m2a-nofpu" 1>&2
5636 supported_defaults="cpu cpu_32 cpu_64 float tune tune_32 tune_64"
5638 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5639 eval "val=\$with_$which"
5641 "" | sparc | sparcv9 | sparc64 \
5643 | v8 | supersparc | hypersparc | leon | leon3 | leon3v7 \
5644 | sparclite | f930 | f934 | sparclite86x \
5645 | sparclet | tsc701 \
5646 | v9 | ultrasparc | ultrasparc3 | niagara | niagara2 \
5647 | niagara3 | niagara4 | niagara7 | m8)
5651 echo "Unknown cpu used in --with-$which=$val" 1>&2
5657 case ${with_float} in
5662 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
5669 supported_defaults="arch"
5671 case ${with_arch} in
5672 "" | c62x | c64x | c64x+ | c67x | c67x+ | c674x)
5676 echo "Unknown arch used in --with-arch=$with_arch." 1>&2
5683 supported_defaults=cpu
5685 "" | v850e | v850e1 | v850e2 | v850es | v850e2v3 | v850e3v5)
5689 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5695 supported_defaults="cpu"
5699 *) echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5706 # VxWorks support for shared libraries has to be requested explicitly,
5707 # so we can factor this part here:
5709 case "${target}-${enable_shared}" in
5711 tmake_file="${tmake_file} t-slibgcc"
5715 # Targets for which there is at least one VxWorks port should include
5716 # vxworks-dummy.h to allow safe references to various TARGET_VXWORKS kinds
5717 # of markers from other files in the port, including the vxworks*.h files to
5718 # distinguish VxWorks variants such as VxWorks 7 or 64).
5721 arm*-*-* | i[34567]86-*-* | mips*-*-* | powerpc*-*-* | sh*-*-* \
5722 | sparc*-*-* | x86_64-*-*)
5723 tm_file="vxworks-dummy.h ${tm_file}"
5727 # Set some miscellaneous flags for particular targets.
5728 target_cpu_default2=
5731 if test x"$target_cpu_cname" != x
5733 target_cpu_default2=$target_cpu_cname
5738 if test x$with_cpu = x
5740 echo "Don't know the target cpu" 1>&2
5743 target_cpu_default2="\\\"$with_cpu\\\""
5748 if test x$gas = xyes
5750 target_cpu_default2="MASK_GAS"
5754 fido*-*-* | m68k*-*-*)
5755 target_cpu_default2=$m68k_cpu_ident
5756 tmake_file="m68k/t-opts $tmake_file"
5757 if [ x"$m68k_arch_family" != x ]; then
5758 tmake_file="m68k/t-$m68k_arch_family $tmake_file"
5762 i[34567]86-*-darwin* | x86_64-*-darwin*)
5764 i[34567]86-*-linux* | x86_64-*-linux*)
5765 extra_objs="${extra_objs} gnu-property.o"
5766 tmake_file="$tmake_file i386/t-linux i386/t-gnu-property"
5768 i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu)
5769 tmake_file="$tmake_file i386/t-kfreebsd"
5772 tmake_file="$tmake_file i386/t-gnu"
5774 i[34567]86-*-msdosdjgpp*)
5775 tmake_file="${tmake_file} i386/t-djgpp"
5777 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
5779 i[34567]86-*-cygwin* | x86_64-*-cygwin*)
5781 i[34567]86-*-mingw* | x86_64-*-mingw*)
5783 i[34567]86-*-dragonfly* | x86_64-*-dragonfly*)
5785 i[34567]86-*-freebsd*)
5788 tmake_file="${tmake_file} i386/t-freebsd64"
5794 if test x$gnu_ld = xyes
5796 target_cpu_default2="MASK_SPLIT_ADDRESSES"
5800 tm_defines="TARGET_ENDIAN_DEFAULT=0 $tm_defines"
5803 if test x$with_arch != x; then
5804 default_mips_arch=$with_arch
5806 with_arch=$default_mips_arch
5808 if test x$with_abi != x; then
5809 default_mips_abi=$with_abi
5811 case ${default_mips_arch} in
5812 mips1) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS1" ;;
5813 mips2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS2" ;;
5814 mips3) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3" ;;
5815 mips4) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS4" ;;
5816 mips32) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32" ;;
5817 mips32r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2" ;;
5818 mips32r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6" ;;
5819 mips64) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64" ;;
5820 mips64r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2" ;;
5821 mips64r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6" ;;
5823 case ${default_mips_abi} in
5824 32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_32" ;;
5825 o64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_O64" ;;
5826 n32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_N32" ;;
5827 64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_64" ;;
5828 eabi) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_EABI" ;;
5830 tmake_file="mips/t-mips $tmake_file"
5834 # Export canonical triplet.
5835 tm_defines="${tm_defines} LA_MULTIARCH_TRIPLET=${la_canonical_triplet}"
5837 # Define macro LA_DISABLE_MULTILIB if --disable-multilib
5838 tm_defines="${tm_defines} TM_MULTILIB_LIST=${loongarch_multilib_list_c}"
5839 if test x$enable_multilib = xyes; then
5840 TM_MULTILIB_CONFIG="${loongarch_multilib_list_make}"
5842 tm_defines="${tm_defines} LA_DISABLE_MULTILIB"
5845 # Let --with- flags initialize the enum variables from loongarch.opt.
5846 # See macro definitions from loongarch-opts.h and loongarch-cpu.h.
5849 tm_defines="${tm_defines} DEFAULT_CPU_ARCH=CPU_$(echo ${with_arch} | tr a-z- A-Z_)"
5852 tm_defines="${tm_defines} DEFAULT_ABI_BASE=ABI_BASE_$(echo ${abi_base} | tr a-z- A-Z_)"
5856 base) tm_defines="${tm_defines} DEFAULT_ABI_EXT=ABI_EXT_BASE" ;;
5860 if test x${with_tune} != x; then
5861 tm_defines="${tm_defines} DEFAULT_CPU_TUNE=CPU_$(echo ${with_tune} | tr a-z- A-Z_)"
5866 none) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_NONE" ;;
5867 32) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU32" ;;
5868 64) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU64" ;;
5872 case ${with_simd} in
5873 none) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_NONE" ;;
5874 lsx) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_SIMD_LSX" ;;
5875 lasx) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_SIMD_LASX" ;;
5878 tmake_file="loongarch/t-loongarch $tmake_file"
5881 powerpc*-*-* | rs6000-*-*)
5882 # FIXME: The PowerPC port uses the value set at compile time,
5883 # although it's only cosmetic.
5884 if test "x$with_cpu" != x
5886 target_cpu_default2="\\\"$with_cpu\\\""
5888 out_file="${cpu_type}/${cpu_type}.cc"
5889 c_target_objs="${c_target_objs} ${cpu_type}-c.o"
5890 cxx_target_objs="${cxx_target_objs} ${cpu_type}-c.o"
5891 d_target_objs="${d_target_objs} ${cpu_type}-d.o"
5892 tmake_file="${cpu_type}/t-${cpu_type} ${tmake_file}"
5895 sh[123456ble]*-*-* | sh-*-*)
5896 c_target_objs="${c_target_objs} sh-c.o"
5897 cxx_target_objs="${cxx_target_objs} sh-c.o"
5901 # Some standard aliases.
5906 xsparcv9 | xsparc64)
5911 if test x$with_tune = x ; then
5922 # The SPARC port checks this value at compile-time.
5923 target_cpu_default2="TARGET_CPU_$with_cpu"
5927 case "x$with_cpu" in
5930 xv850e | xv850e1 | xv850e2 | xv850e2v3 | xv850e3v5)
5931 target_cpu_default2="TARGET_CPU_$with_cpu"
5934 target_cpu_default2="TARGET_CPU_v850e1"
5939 target_cpu_default2="TARGET_CPU_$with_cpu"
5944 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"
5945 for option in $all_defaults
5947 eval "val=\$with_"`echo $option | sed s/-/_/g`
5948 if test -n "$val"; then
5949 case " $supported_defaults " in
5953 echo "This target does not support --with-$option." 2>&1
5954 echo "Valid --with options are: $supported_defaults" 2>&1
5961 t="{ \"$option\", \"$val\" }"
5963 t="${t}, { \"$option\", \"$val\" }"
5970 configure_default_options="{ { NULL, NULL} }"
5972 configure_default_options="{ ${t} }"
5975 if test "$target_cpu_default2" != ""
5977 if test "$target_cpu_default" != ""
5979 target_cpu_default="(${target_cpu_default}|${target_cpu_default2})"
5981 target_cpu_default=$target_cpu_default2
5986 i[34567]86-*-* | x86_64-*-*)
5987 if test x$enable_as_accelerator = xyes; then
5988 extra_programs="mkoffload\$(exeext)"