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 # out_file The name of the machine description C support
94 # file, if different from "$cpu_type/$cpu_type.c".
96 # common_out_file The name of the source file for code shared between
97 # the compiler proper and the driver.
99 # md_file The name of the machine-description file, if
100 # different from "$cpu_type/$cpu_type.md".
102 # tmake_file A list of machine-description-specific
103 # makefile-fragments, if different from
104 # "$cpu_type/t-$cpu_type".
106 # extra_modes The name of the file containing a list of extra
107 # machine modes, if necessary and different from
108 # "$cpu_type/$cpu_type-modes.def".
110 # extra_objs List of extra objects that should be linked into
111 # the compiler proper (cc1, cc1obj, cc1plus)
112 # depending on target.
114 # extra_gcc_objs List of extra objects that should be linked into
115 # the compiler driver (gcc) depending on target.
117 # extra_headers List of used header files from the directory
118 # config/${cpu_type}.
120 # user_headers_inc_next_pre
121 # List of header file names of internal gcc header
122 # files, which should be prefixed by an include_next.
123 # user_headers_inc_next_post
124 # List of header file names of internal gcc header
125 # files, which should be postfixed by an include_next.
126 # use_gcc_tgmath If set, add tgmath.h to the list of used header
129 # use_gcc_stdint If "wrap", install a version of stdint.h that
130 # wraps the system's copy for hosted compilations;
131 # if "provide", provide a version of systems without
132 # such a system header; otherwise "none", do not
133 # provide such a header at all.
135 # extra_programs List of extra executables compiled for this target
136 # machine, used when linking.
138 # extra_options List of target-dependent .opt files.
140 # c_target_objs List of extra target-dependent objects that be
141 # linked into the C compiler only.
143 # cxx_target_objs List of extra target-dependent objects that be
144 # linked into the C++ compiler only.
146 # d_target_objs List of extra target-dependent objects that be
147 # linked into the D compiler only.
149 # fortran_target_objs List of extra target-dependent objects that be
150 # linked into the fortran compiler only.
152 # target_gtfiles List of extra source files with type information.
154 # xm_defines List of macros to define when compiling for the
157 # xm_file List of files to include when compiling for the
160 # use_collect2 Set to yes or no, depending on whether collect2
163 # target_cpu_default Set to override the default target model.
165 # gdb_needs_out_file_path
166 # Set to yes if gdb needs a dir command with
167 # `dirname $out_file`.
169 # thread_file Set to control which thread package to use.
171 # gas Set to yes or no depending on whether the target
172 # system normally uses GNU as.
174 # configure_default_options
175 # Set to an initializer for configure_default_options
176 # in configargs.h, based on --with-cpu et cetera.
178 # native_system_header_dir
179 # Where system header files are found for this
180 # target. This defaults to /usr/include. If
181 # the --with-sysroot configure option or the
182 # --sysroot command line option is used this
183 # will be relative to the sysroot.
184 # target_type_format_char
185 # The default character to be used for formatting
187 # .type symbol_name, ${t_t_f_c}<property>
190 # The following variables are used in each case-construct to build up the
191 # outgoing variables:
193 # gnu_ld Set to yes or no depending on whether the target
194 # system normally uses GNU ld.
196 # target_has_targetcm Set to yes or no depending on whether the target
197 # has its own definition of targetcm.
199 # target_has_targetm_common Set to yes or no depending on whether the
200 # target has its own definition of targetm_common.
202 # target_has_targetdm Set to yes or no depending on whether the target
203 # has its own definition of targetdm.
209 user_headers_inc_next_pre=
210 user_headers_inc_next_post=
221 target_has_targetcm=no
222 target_has_targetm_common=yes
223 target_has_targetdm=no
226 # Set this to force installation and use of collect2.
228 # Set this to override the default target model.
230 # Set this if gdb needs a dir command with `dirname $out_file`
231 gdb_needs_out_file_path=
232 # Set this to control which thread package will be used.
234 # Reinitialize these from the flag values every loop pass, since some
235 # configure entries modify them.
237 gnu_ld="$gnu_ld_flag"
238 default_use_cxa_atexit=no
239 default_gnu_indirect_function=no
242 native_system_header_dir=/usr/include
243 target_type_format_char='@'
245 # Don't carry these over build->host->target. Please.
249 # Determine Solaris minor version
250 case ${target}:`uname -v` in
251 # Only do this on Solaris. Illumos uses illumos-* instead.
252 *-*-solaris2.11*:11.*)
253 # Restrict to native configurations.
254 if test x$host = x$target; then
255 uname_version="`uname -v`"
256 # Prepend dot as needed below.
257 target_min=".`expr "$uname_version" : '11\.\([0-9]*\)'`"
262 # Obsolete configurations.
263 case ${target}${target_min} in
264 *-*-solaris2.11.[0-3]* \
266 if test "x$enable_obsolete" != xyes; then
267 echo "*** Configuration ${target}${target_min} is obsolete." >&2
268 echo "*** Specify --enable-obsolete to build it anyway." >&2
269 echo "*** Support will be REMOVED in the next major release of GCC," >&2
270 echo "*** unless a maintainer comes forward." >&2
275 # Unsupported targets list. Do not put an entry in this list unless
276 # it would otherwise be caught by a more permissive pattern. The list
277 # should be in alphabetical order.
279 # Avoid special cases that are not obsolete
290 | i[34567]86-go32-* \
291 | i[34567]86-*-go32* \
295 | m68k-*-uclinuxoldabi* \
296 | mips64orion*-*-rtems* \
298 | powerpc*-*-linux*paired* \
300 | sparc-hal-solaris2* \
303 | *-*-freebsd[12] | *-*-freebsd[1234].* \
304 | *-*-freebsd*aout* \
312 | *-*-solaris2.[0-9] \
313 | *-*-solaris2.[0-9].* \
318 echo "*** Configuration ${target} not supported" 1>&2
323 # Set default cpu_type, tm_file, tm_p_file and xm_file so it can be
324 # updated in each machine entry. Also set default extra_headers for some
327 cpu_type=`echo ${target} | sed 's/-.*$//'`
332 tmake_file=m32c/t-m32c
333 target_has_targetm_common=no
337 extra_headers="arm_fp16.h arm_neon.h arm_bf16.h arm_acle.h arm_sve.h"
338 c_target_objs="aarch64-c.o"
339 cxx_target_objs="aarch64-c.o"
340 d_target_objs="aarch64-d.o"
341 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"
342 target_gtfiles="\$(srcdir)/config/aarch64/aarch64-builtins.cc \$(srcdir)/config/aarch64/aarch64-sve-builtins.h \$(srcdir)/config/aarch64/aarch64-sve-builtins.cc"
343 target_has_targetm_common=yes
347 extra_options="${extra_options} g.opt"
358 c_target_objs="arc-c.o"
359 cxx_target_objs="arc-c.o"
360 extra_options="${extra_options} arc/arc-tables.opt g.opt"
361 extra_headers="arc-simd.h"
365 extra_objs="arm-builtins.o arm-mve-builtins.o aarch-common.o aarch-bti-insert.o"
366 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"
367 target_type_format_char='%'
368 c_target_objs="arm-c.o"
369 cxx_target_objs="arm-c.o"
370 d_target_objs="arm-d.o"
371 extra_options="${extra_options} arm/arm-tables.opt"
372 target_gtfiles="\$(srcdir)/config/arm/arm-builtins.cc \$(srcdir)/config/arm/arm-mve-builtins.h \$(srcdir)/config/arm/arm-mve-builtins.cc"
376 c_target_objs="avr-c.o"
377 cxx_target_objs="avr-c.o"
386 extra_options="${extra_options} g.opt"
389 target_has_targetm_common=no
391 moxie*) cpu_type=moxie
392 target_has_targetm_common=no
396 extra_headers=math-68881.h
397 extra_options="${extra_options} m68k/m68k-tables.opt"
399 i[34567]86-*-* | x86_64-*-*)
401 c_target_objs="i386-c.o"
402 cxx_target_objs="i386-c.o"
403 d_target_objs="i386-d.o"
404 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"
405 target_gtfiles="\$(srcdir)/config/i386/i386-builtins.cc \$(srcdir)/config/i386/i386-expand.cc \$(srcdir)/config/i386/i386-options.cc"
406 extra_options="${extra_options} fused-madd.opt"
407 extra_headers="cpuid.h mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h
408 pmmintrin.h tmmintrin.h ammintrin.h smmintrin.h
409 nmmintrin.h bmmintrin.h fma4intrin.h wmmintrin.h
410 immintrin.h x86intrin.h avxintrin.h xopintrin.h
411 ia32intrin.h cross-stdarg.h lwpintrin.h popcntintrin.h
412 lzcntintrin.h bmiintrin.h bmi2intrin.h tbmintrin.h
413 avx2intrin.h avx512fintrin.h fmaintrin.h f16cintrin.h
414 rtmintrin.h xtestintrin.h rdseedintrin.h prfchwintrin.h
415 adxintrin.h fxsrintrin.h xsaveintrin.h xsaveoptintrin.h
416 avx512cdintrin.h avx512erintrin.h avx512pfintrin.h
417 shaintrin.h clflushoptintrin.h xsavecintrin.h
418 xsavesintrin.h avx512dqintrin.h avx512bwintrin.h
419 avx512vlintrin.h avx512vlbwintrin.h avx512vldqintrin.h
420 avx512ifmaintrin.h avx512ifmavlintrin.h avx512vbmiintrin.h
421 avx512vbmivlintrin.h avx5124fmapsintrin.h avx5124vnniwintrin.h
422 avx512vpopcntdqintrin.h clwbintrin.h mwaitxintrin.h
423 clzerointrin.h pkuintrin.h sgxintrin.h cetintrin.h
424 gfniintrin.h cet.h avx512vbmi2intrin.h
425 avx512vbmi2vlintrin.h avx512vnniintrin.h
426 avx512vnnivlintrin.h vaesintrin.h vpclmulqdqintrin.h
427 avx512vpopcntdqvlintrin.h avx512bitalgintrin.h
428 pconfigintrin.h wbnoinvdintrin.h movdirintrin.h
429 waitpkgintrin.h cldemoteintrin.h avx512bf16vlintrin.h
430 avx512bf16intrin.h enqcmdintrin.h serializeintrin.h
431 avx512vp2intersectintrin.h avx512vp2intersectvlintrin.h
432 tsxldtrkintrin.h amxtileintrin.h amxint8intrin.h
433 amxbf16intrin.h x86gprintrin.h uintrintrin.h
434 hresetintrin.h keylockerintrin.h avxvnniintrin.h
435 mwaitintrin.h avx512fp16intrin.h avx512fp16vlintrin.h
436 avxifmaintrin.h avxvnniint8intrin.h avxneconvertintrin.h
437 cmpccxaddintrin.h amxfp16intrin.h prfchiintrin.h
441 extra_headers=ia64intrin.h
442 extra_options="${extra_options} g.opt fused-madd.opt"
448 extra_options="${extra_options} g.opt"
452 extra_options="${extra_options} g.opt"
455 extra_headers=math-68881.h
456 extra_options="${extra_options} m68k/m68k-tables.opt"
460 extra_options="${extra_options} g.opt"
464 d_target_objs="mips-d.o"
465 extra_headers="loongson.h loongson-mmiintrin.h msa.h"
466 extra_objs="frame-header-opt.o"
467 extra_options="${extra_options} g.opt fused-madd.opt mips/mips-tables.opt"
471 extra_headers="larchintrin.h"
472 extra_objs="loongarch-c.o loongarch-builtins.o loongarch-cpu.o loongarch-opts.o loongarch-def.o"
473 extra_gcc_objs="loongarch-driver.o loongarch-cpu.o loongarch-opts.o loongarch-def.o"
474 extra_options="${extra_options} g.opt fused-madd.opt"
478 extra_headers="nds32_intrinsic.h nds32_isr.h nds32_init.inc"
481 extra_options="${extra_options} nds32/nds32-linux.opt"
484 extra_options="${extra_options} nds32/nds32-elf.opt"
489 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"
493 extra_options="${extra_options} g.opt"
497 c_target_objs="nvptx-c.o"
498 cxx_target_objs="nvptx-c.o"
499 extra_options="${extra_options} nvptx/nvptx-gen.opt"
506 extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
507 extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o"
508 extra_objs="${extra_objs} rs6000-builtins.o rs6000-builtin.o"
509 extra_headers="ppc-asm.h altivec.h htmintrin.h htmxlintrin.h"
510 extra_headers="${extra_headers} bmi2intrin.h bmiintrin.h"
511 extra_headers="${extra_headers} xmmintrin.h mm_malloc.h emmintrin.h"
512 extra_headers="${extra_headers} mmintrin.h x86intrin.h"
513 extra_headers="${extra_headers} pmmintrin.h tmmintrin.h smmintrin.h"
514 extra_headers="${extra_headers} nmmintrin.h immintrin.h x86gprintrin.h"
515 extra_headers="${extra_headers} ppu_intrinsics.h spu2vmx.h vec_types.h si2vmx.h"
516 extra_headers="${extra_headers} amo.h"
518 xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[3456789]|xpower10|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|xe6500)
522 extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
523 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.cc \$(srcdir)/config/rs6000/rs6000-call.cc"
524 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-pcrel-opt.cc"
525 target_gtfiles="$target_gtfiles ./rs6000-builtins.h"
532 extra_objs="riscv-builtins.o riscv-c.o riscv-sr.o riscv-shorten-memrefs.o riscv-selftests.o riscv-v.o riscv-vsetvl.o"
533 extra_objs="${extra_objs} riscv-vector-builtins.o riscv-vector-builtins-shapes.o riscv-vector-builtins-bases.o"
534 d_target_objs="riscv-d.o"
535 extra_headers="riscv_vector.h"
536 target_gtfiles="$target_gtfiles \$(srcdir)/config/riscv/riscv-vector-builtins.cc"
537 target_gtfiles="$target_gtfiles \$(srcdir)/config/riscv/riscv-vector-builtins.h"
540 extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
541 extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
542 extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o"
543 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.cc \$(srcdir)/config/rs6000/rs6000-call.cc"
544 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-pcrel-opt.cc"
548 c_target_objs="sparc-c.o"
549 cxx_target_objs="sparc-c.o"
550 d_target_objs="sparc-d.o"
551 extra_headers="visintrin.h"
555 d_target_objs="s390-d.o"
556 extra_options="${extra_options} fused-madd.opt"
557 extra_headers="s390intrin.h htmintrin.h htmxlintrin.h vecintrin.h"
559 # Note the 'l'; we need to be able to match e.g. "shle" or "shl".
560 sh[123456789lbe]*-*-* | sh-*-*)
562 extra_options="${extra_options} fused-madd.opt"
563 extra_objs="${extra_objs} sh_treg_combine.o sh-mem.o sh_optimize_sett_clrt.o"
570 extra_headers="c6x_intrinsics.h"
571 extra_options="${extra_options} c6x/c6x-tables.opt"
574 extra_options="${extra_options} fused-madd.opt"
575 extra_objs="xtensa-dynconfig.o"
579 tm_file=${cpu_type}/${cpu_type}.h
580 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-protos.h
582 tm_p_file=${cpu_type}/${cpu_type}-protos.h
586 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-d.h
588 tm_d_file="${tm_d_file} ${cpu_type}/${cpu_type}-d.h"
592 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-modes.def
594 extra_modes=${cpu_type}/${cpu_type}-modes.def
596 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}.opt
598 extra_options="${extra_options} ${cpu_type}/${cpu_type}.opt"
603 tm_p_file="${tm_p_file} arm/aarch-common-protos.h"
606 if test "x$with_multilib_list" = xilp32; then
607 tm_file="aarch64/biarchilp32.h ${tm_file}"
609 tm_file="aarch64/biarchlp64.h ${tm_file}"
613 tm_file="aarch64/biarchilp32.h ${tm_file}"
616 tm_file="aarch64/biarchlp64.h ${tm_file}"
619 echo "Unknown ABI used in --with-abi=$with_abi"
624 if test "x$with_abi" != x; then
625 echo "This target does not support --with-abi."
634 if test "x$with_multilib_list" = xmx32; then
635 tm_file="i386/biarchx32.h ${tm_file}"
637 tm_file="i386/biarch64.h ${tm_file}"
641 tm_file="i386/biarch64.h ${tm_file}"
644 tm_file="i386/biarchx32.h ${tm_file}"
647 echo "Unknown ABI used in --with-abi=$with_abi"
652 tm_p_file="arm/arm-flags.h ${tm_p_file} arm/aarch-common-protos.h"
656 # On a.out targets, we need to use collect2.
663 # Common C libraries.
664 tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
666 # 32-bit x86 processors supported by --with-arch=. Each processor
667 # MUST be separated by exactly one space.
668 x86_archs="athlon athlon-4 athlon-fx athlon-mp athlon-tbird \
669 athlon-xp k6 k6-2 k6-3 geode c3 c3-2 winchip-c6 winchip2 i386 i486 \
670 i586 i686 pentium pentium-m pentium-mmx pentium2 pentium3 pentium3m \
671 pentium4 pentium4m pentiumpro prescott lakemont samuel-2 nehemiah \
674 # 64-bit x86 processors supported by --with-arch=. Each processor
675 # MUST be separated by exactly one space.
676 x86_64_archs="amdfam10 athlon64 athlon64-sse3 barcelona bdver1 bdver2 \
677 bdver3 bdver4 znver1 znver2 znver3 znver4 btver1 btver2 k8 k8-sse3 opteron \
678 opteron-sse3 nocona core2 corei7 corei7-avx core-avx-i core-avx2 atom \
679 slm nehalem westmere sandybridge ivybridge haswell broadwell bonnell \
680 silvermont knl knm skylake-avx512 cannonlake icelake-client icelake-server \
681 skylake goldmont goldmont-plus tremont cascadelake tigerlake cooperlake \
682 sapphirerapids alderlake rocketlake eden-x2 nano nano-1000 nano-2000 nano-3000 \
683 nano-x2 eden-x4 nano-x4 lujiazui x86-64 x86-64-v2 x86-64-v3 x86-64-v4 \
684 sierraforest graniterapids grandridge native"
686 # Additional x86 processors supported by --with-cpu=. Each processor
687 # MUST be separated by exactly one space.
688 x86_cpus="generic intel"
690 # Common parts for widely ported systems.
693 tmake_file="t-darwin "
694 tm_file="${tm_file} darwin.h"
695 darwin_os=`echo ${target} | sed 's/.*darwin\([0-9.]*\).*$/\1/'`
696 darwin_maj=`expr "$darwin_os" : '\([0-9]*\).*'`
697 macos_min=`expr "$darwin_os" : '[0-9]*\.\([0-9]*\).*'`
699 if test x"${macos_min}" = x; then
703 # Tools hosted on earlier versions of Darwin constrained all object
704 # alignment to be 2^15 or smaller. From Darwin11 (macOS 10.7) the
705 # alignment of non-common is allowed to be up to 2^28. Note that the
706 #Â larger alignment is permitted when targeting 10.6 from 10.7 so that
707 #Â the constraint only need be applied per host (and only if the host
710 *-*-darwin[4-9]* | *-*-darwin10*)
711 tm_defines="$tm_defines L2_MAX_OFILE_ALIGNMENT=15U"
714 tm_defines="$tm_defines L2_MAX_OFILE_ALIGNMENT=28U"
718 # Darwin 4 to 19 correspond to macOS 10.0 to 10.15
719 *-*-darwin[4-9]* | *-*-darwin1[0-9]*)
720 macos_min=`expr $darwin_maj - 4`
723 # Darwin 20 corresponds to macOS 11, Darwin 21 to macOS 12.
724 macos_maj=`expr $darwin_maj - 9`
729 aarch64) macos_maj=11 ;;
730 x86_64) macos_min=6 ;;
734 *-*-darwin*) tm_defines="$tm_defines DARWIN_USE_KERNEL_VERS" ;;
736 # If configuring a cross-compiler then we will have set some
737 #Â default above, but it is probably not what was intended.
738 echo "Warning: Using ${target} is only suitable for Darwin hosts" 1>&2
739 echo "configure with an explicit target version" 1>&2
744 echo "Error: configuring for an unreleased macOS version ${target}" 1>&2
748 tm_defines="$tm_defines DEF_MIN_OSX_VERSION=\\\"${macos_maj}.${macos_min}\\\""
749 tm_defines="$tm_defines DEF_LD64=\\\"${def_ld64}\\\""
750 tm_file="${tm_file} ${cpu_type}/darwin.h"
751 tm_p_file="${tm_p_file} darwin-protos.h"
752 target_gtfiles="$target_gtfiles \$(srcdir)/config/darwin.cc"
753 extra_options="${extra_options} rpath.opt darwin.opt"
754 c_target_objs="${c_target_objs} darwin-c.o"
755 cxx_target_objs="${cxx_target_objs} darwin-c.o"
756 d_target_objs="${d_target_objs} darwin-d.o"
757 fortran_target_objs="darwin-f.o"
758 target_has_targetcm=yes
759 target_has_targetdm=yes
760 extra_objs="${extra_objs} darwin.o"
761 extra_gcc_objs="darwin-driver.o"
762 default_use_cxa_atexit=yes
764 case ${enable_threads} in
765 "" | yes | posix) thread_file='posix' ;;
771 tmake_file="t-slibgcc"
772 case ${enable_threads} in
777 # Let these non-posix thread selections fall through if requested
780 echo 'Unknown thread configuration for DragonFly BSD'
784 extra_options="$extra_options rpath.opt dragonfly.opt"
785 default_use_cxa_atexit=yes
787 d_target_objs="${d_target_objs} dragonfly-d.o"
788 tmake_file="${tmake_file} t-dragonfly"
789 target_has_targetdm=yes
792 # This is the generic ELF configuration of FreeBSD. Later
793 # machine-specific sections may refine and add to this
796 # Due to tm_file entry ordering issues that vary between cpu
797 # architectures, we only define fbsd_tm_file to allow the
798 # machine-specific section to dictate the final order of all
799 # entries of tm_file with the minor exception that components
800 # of the tm_file set here will always be of the form:
802 # freebsd<version_number>.h [freebsd-<conf_option>.h ...] freebsd-spec.h freebsd.h
804 # The machine-specific section should not tamper with this
805 # ordering but may order all other entries of tm_file as it
806 # pleases around the provided core setting.
809 fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
810 if test "$fbsd_major" = ""; then
811 echo "Specify the major version number of the targeted FreeBSD release"
812 echo "like this: --target=amd64-unknown-freebsd10.1"
815 tm_defines="${tm_defines} FBSD_MAJOR=${fbsd_major}"
816 tmake_file="t-slibgcc"
817 case ${enable_threads} in
819 fbsd_tm_file="${fbsd_tm_file} freebsd-nthr.h"
825 echo 'Unknown thread configuration for FreeBSD'
829 fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h freebsd-stdint.h"
830 extra_options="$extra_options rpath.opt freebsd.opt"
835 default_use_cxa_atexit=yes;;
838 d_target_objs="${d_target_objs} freebsd-d.o"
839 tmake_file="${tmake_file} t-freebsd"
840 target_has_targetdm=yes
843 native_system_header_dir=/include
845 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi)
846 extra_options="$extra_options gnu-user.opt"
849 case ${enable_threads} in
850 "" | yes | posix) thread_file='posix' ;;
852 tmake_file="t-slibgcc"
854 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
857 native_system_header_dir=/include
860 # Linux C libraries selection switch: glibc / uclibc / bionic.
861 # uclibc and bionic aren't usable for GNU/Hurd and neither for GNU/k*BSD.
864 tm_p_file="${tm_p_file} linux-protos.h"
865 tmake_file="${tmake_file} t-linux"
866 extra_objs="${extra_objs} linux.o"
867 extra_options="${extra_options} linux.opt"
872 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC"
874 *-*-*uclibc* | *-*-uclinuxfdpiceabi)
875 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
878 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
881 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
884 # Assume that glibc or uClibc or Bionic are being used and so __cxa_atexit
886 default_use_cxa_atexit=yes
889 # Enable compilation for Android by default for *android* targets.
892 tm_defines="$tm_defines ANDROID_DEFAULT=1"
895 tm_defines="$tm_defines ANDROID_DEFAULT=0"
898 c_target_objs="${c_target_objs} glibc-c.o"
899 cxx_target_objs="${cxx_target_objs} glibc-c.o"
900 tmake_file="${tmake_file} t-glibc"
901 target_has_targetcm=yes
903 *-*-*uclibc* | *-*-uclinuxfdpiceabi)
906 # Linux targets always support .init_array.
907 gcc_cv_initfini_array=yes
912 d_target_objs="${d_target_objs} linux-d.o"
913 target_has_targetdm=yes
916 d_target_objs="${d_target_objs} kfreebsd-d.o"
917 target_has_targetdm=yes
919 *-*-kopensolaris*-gnu)
920 d_target_objs="${d_target_objs} kopensolaris-d.o"
921 target_has_targetdm=yes
924 d_target_objs="${d_target_objs} gnu-d.o"
925 target_has_targetdm=yes
930 tm_p_file="${tm_p_file} netbsd-protos.h"
931 tmake_file="t-netbsd t-slibgcc"
932 extra_objs="${extra_objs} netbsd.o"
933 d_target_objs="${d_target_objs} netbsd-d.o"
937 case ${enable_threads} in
938 "" | yes | posix) thread_file='posix' ;;
940 nbsd_tm_file="netbsd.h netbsd-stdint.h netbsd-elf.h"
941 default_use_cxa_atexit=yes
942 target_has_targetdm=yes
944 arm*-* | i[34567]86-* | powerpc*-* | sparc*-* | x86_64-*)
945 default_gnu_indirect_function=yes
950 tmake_file="t-openbsd"
951 case ${enable_threads} in
957 *-*-openbsd4.[3-9]|*-*-openbsd[5-9]*)
958 default_use_cxa_atexit=yes
961 d_target_objs="${d_target_objs} openbsd-d.o"
962 target_has_targetdm=yes
967 default_use_cxa_atexit=yes
970 case ${enable_threads} in
971 "" | yes | rtems) thread_file='rtems' ;;
972 posix) thread_file='posix' ;;
975 echo 'Unknown thread configuration for RTEMS'
979 tmake_file="${tmake_file} t-rtems"
980 extra_options="${extra_options} rtems.opt"
981 default_use_cxa_atexit=yes
985 extra_options="$extra_options gnu-user.opt"
987 case ${enable_threads} in
988 "" | yes | posix) thread_file='posix' ;;
990 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC SINGLE_LIBC"
996 # i?86-*-solaris2* needs to insert headers between cpu default and
997 # Solaris 2 specific ones.
998 sol2_tm_file_head="elfos.h ${cpu_type}/sysv4.h"
999 sol2_tm_file_tail="${cpu_type}/sol2.h sol2.h"
1000 sol2_tm_file="${sol2_tm_file_head} ${sol2_tm_file_tail}"
1002 *-*-solaris2.1[1-9]*)
1003 # __cxa_atexit was introduced in Solaris 11.4.
1004 default_use_cxa_atexit=yes
1008 if test x$gnu_ld = xyes; then
1009 tm_file="usegld.h ${tm_file}"
1011 if test x$gas = xyes; then
1012 tm_file="usegas.h ${tm_file}"
1014 tm_p_file="${tm_p_file} sol2-protos.h"
1015 tmake_file="${tmake_file} t-sol2 t-slibgcc"
1016 c_target_objs="${c_target_objs} sol2-c.o"
1017 cxx_target_objs="${cxx_target_objs} sol2-c.o sol2-cxx.o"
1018 d_target_objs="${d_target_objs} sol2-d.o"
1019 extra_objs="${extra_objs} sol2.o sol2-stubs.o"
1020 extra_options="${extra_options} sol2.opt"
1021 case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
1022 "":yes:* | yes:yes:* )
1026 target_has_targetdm=yes
1029 extra_options="${extra_options} vms/vms.opt"
1030 xmake_file=vms/x-vms
1031 tmake_file="vms/t-vms t-slibgcc"
1033 target_gtfiles="$target_gtfiles \$(srcdir)/config/vms/vms.cc"
1034 tm_p_file="${tm_p_file} vms/vms-protos.h"
1035 xm_file="vms/xm-vms.h"
1036 c_target_objs="vms-c.o"
1037 cxx_target_objs="vms-c.o"
1038 fortran_target_objs="vms-f.o"
1039 use_gcc_stdint=provide
1040 tm_file="${tm_file} vms/vms-stdint.h"
1041 if test x$gnu_ld != xyes; then
1042 # Build wrappers for native case.
1043 extra_programs="ld\$(exeext) ar\$(exeext)"
1044 tmake_file="$tmake_file vms/t-vmsnative"
1048 tmake_file=t-vxworks
1051 extra_options="${extra_options} vxworks.opt"
1052 extra_objs="$extra_objs vxworks.o"
1054 c_target_objs="${c_target_objs} vxworks-c.o"
1055 cxx_target_objs="${cxx_target_objs} vxworks-c.o"
1056 extra_headers="${extra_headers} ../vxworks/vxworks-predef.h"
1057 target_has_targetcm="yes"
1059 extra_gcc_objs="vxworks-driver.o"
1061 # This private header exposes a consistent interface for checks on
1062 # the VxWorks version our runtime header files need to perform, based on
1063 # what the system headers adverstise:
1065 extra_headers="${extra_headers} ../vxworks/_vxworks-versions.h"
1067 # Starting from VxWorks 7, the system comes with a Dinkumware
1068 # environment which requires the inclusion of "yvals.h" before other
1069 # system headers. We provide wrapped versions of a few headers to
1070 # accomodate such constraints:
1072 extra_headers="${extra_headers} ../vxworks/_yvals.h"
1073 extra_headers="${extra_headers} ../vxworks/_yvals-wrapper.h"
1075 extra_headers="${extra_headers} ../vxworks/math.h ../vxworks/complex.h"
1076 extra_headers="${extra_headers} ../vxworks/inttypes.h ../vxworks/setjmp.h"
1078 # We provide (a tailored version of) stdint.h
1079 tm_file="${tm_file} vxworks-stdint.h"
1080 use_gcc_stdint=provide
1082 case ${enable_threads} in
1084 "" | yes | vxworks) thread_file='vxworks' ;;
1085 *) echo 'Unknown thread configuration for VxWorks'; exit 1 ;;
1088 # A few common macro definitions conveying general characteristics
1089 # of the configuration at hand. Note that by VxWorks 7, we mean the
1090 # the SR6xx major update or beyond in vendor parlance:
1094 tm_defines="$tm_defines TARGET_VXWORKS7=1"
1099 tm_defines="$tm_defines TARGET_VXWORKS64=1"
1103 # Then a few build configuration controls for VxWorks 7, which
1104 # has specificities on top of which we aim to provide more complete
1109 # VxWorks 7 always has init/fini_array support and it is simpler to
1110 # just leverage this, sticking to what the system toolchain does:
1111 gcc_cv_initfini_array=yes
1115 *-*-elf|arc*-*-elf*)
1116 # Assume that newlib is being used and so __cxa_atexit is provided.
1117 default_use_cxa_atexit=yes
1120 case "${with_newlib}-${with_headers}" in
1121 no-no) use_gcc_stdint=provide ;;
1128 aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
1129 tm_file="${tm_file} elfos.h newlib-stdint.h"
1130 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-elf-raw.h"
1131 tmake_file="${tmake_file} aarch64/t-aarch64"
1137 tm_file="${tm_file} fuchsia.h"
1140 tm_file="${tm_file} aarch64/rtems.h rtems.h"
1145 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1148 aarch64_multilibs="${with_multilib_list}"
1149 if test "$aarch64_multilibs" = "default"; then
1150 aarch64_multilibs="lp64,ilp32"
1152 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1153 for aarch64_multilib in ${aarch64_multilibs}; do
1154 case ${aarch64_multilib} in
1156 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1159 echo "--with-multilib-list=${aarch64_multilib} not supported."
1163 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1165 aarch64*-*-freebsd*)
1166 tm_file="${tm_file} elfos.h ${fbsd_tm_file}"
1167 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-freebsd.h"
1168 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
1169 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1172 tm_file="${tm_file} elfos.h ${nbsd_tm_file}"
1173 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-netbsd.h"
1174 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-netbsd"
1175 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1178 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h"
1179 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-linux.h"
1180 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-linux"
1181 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1184 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1187 aarch64_multilibs="${with_multilib_list}"
1188 if test "$aarch64_multilibs" = "default"; then
1189 # TODO: turn on ILP32 multilib build after its support is mature.
1190 # aarch64_multilibs="lp64,ilp32"
1191 aarch64_multilibs="lp64"
1193 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1194 for aarch64_multilib in ${aarch64_multilibs}; do
1195 case ${aarch64_multilib} in
1197 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1200 echo "--with-multilib-list=${aarch64_multilib} not supported."
1204 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1206 aarch64*-wrs-vxworks*)
1207 tm_file="${tm_file} elfos.h aarch64/aarch64-elf.h"
1208 tm_file="${tm_file} vx-common.h vxworks.h aarch64/aarch64-vxworks.h"
1209 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-vxworks"
1212 tm_file="elfos.h ${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h glibc-stdint.h"
1213 tmake_file="${tmake_file} alpha/t-linux alpha/t-alpha"
1214 extra_options="${extra_options} alpha/elf.opt"
1217 tm_file="elfos.h ${tm_file} ${nbsd_tm_file} alpha/elf.h alpha/netbsd.h"
1218 tmake_file="${tmake_file} alpha/t-alpha"
1219 extra_options="${extra_options} netbsd.opt netbsd-elf.opt \
1223 tm_defines="${tm_defines} OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_FUNCTION_SIZE OBSD_HAS_DECLARE_OBJECT"
1224 tm_file="elfos.h alpha/alpha.h alpha/elf.h openbsd.h openbsd-stdint.h alpha/openbsd.h openbsd-libpthread.h"
1225 tmake_file="${tmake_file} alpha/t-alpha"
1226 extra_options="${extra_options} openbsd.opt alpha/elf.opt"
1227 # default x-alpha is only appropriate for dec-osf.
1230 tm_file="${tm_file} vms/vms.h alpha/vms.h"
1231 tmake_file="${tmake_file} alpha/t-vms alpha/t-alpha"
1234 tm_file="arc/arc-arch.h elfos.h newlib-stdint.h arc/elf.h ${tm_file}"
1235 tmake_file="arc/t-multilib arc/t-arc"
1236 extra_gcc_objs="driver-arc.o"
1237 if test "x$with_cpu" != x; then
1238 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1240 if test x${with_endian} = x; then
1242 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1243 *) with_endian=little ;;
1246 case ${with_endian} in
1248 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1250 case ${with_endian} in
1251 big*) tm_file="arc/big.h ${tm_file}"
1255 tm_file="arc/arc-arch.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arc/linux.h ${tm_file}"
1256 tmake_file="${tmake_file} arc/t-multilib-linux arc/t-arc"
1257 extra_gcc_objs="driver-arc.o"
1258 if test "x$with_cpu" != x; then
1259 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1261 if test x${with_endian} = x; then
1263 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1264 *) with_endian=little ;;
1267 case ${with_endian} in
1269 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1271 case ${with_endian} in
1272 big*) tm_file="arc/big.h ${tm_file}"
1274 # Force .init_array support. The configure script cannot always
1275 # automatically detect that GAS supports it, yet we require it.
1276 gcc_cv_initfini_array=yes
1279 # We only support VxWorks 7 now on ARM, post SR600. Pre SR600
1280 # VxWorks 7 was transitory and major versions prior to 7 were based
1281 # on long deprecated ABI, not supported at all any more regardless
1283 extra_options="${extra_options} arm/vxworks.opt"
1284 tmake_file="${tmake_file} arm/t-arm arm/t-vxworks arm/t-bpabi"
1285 tm_file="elfos.h arm/elf.h arm/bpabi.h arm/aout.h ${tm_file}"
1286 tm_file="${tm_file} vx-common.h vxworks.h arm/vxworks.h"
1287 target_cpu_cname="generic-armv7-a"
1288 need_64bit_hwint=yes
1290 arm*-*-freebsd*) # ARM FreeBSD EABI
1291 tm_file="elfos.h ${fbsd_tm_file} arm/elf.h"
1294 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1297 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi"
1298 tm_file="${tm_file} arm/bpabi.h arm/freebsd.h arm/aout.h arm/arm.h"
1301 target_cpu_cname="arm1176jzf-s"
1302 if test $fbsd_major -ge 11; then
1303 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1307 target_cpu_cname="generic-armv7-a"
1308 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1311 target_cpu_cname="arm9"
1314 with_tls=${with_tls:-gnu}
1317 target_cpu_cname="strongarm"
1318 tmake_file="${tmake_file} arm/t-arm"
1319 tm_file="elfos.h ${nbsd_tm_file} arm/elf.h"
1320 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1322 arm*eb-*) tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" ;;
1325 arm*-*-netbsdelf-*eabi*)
1326 tm_file="$tm_file arm/bpabi.h arm/netbsd-elf.h arm/netbsd-eabi.h"
1327 tmake_file="$tmake_file arm/t-bpabi arm/t-netbsdeabi"
1330 tm_file="$tm_file arm/netbsd-elf.h"
1331 tmake_file="$tmake_file arm/t-netbsd"
1334 tm_file="${tm_file} arm/aout.h arm/arm.h"
1336 arm*-*-netbsdelf-*eabihf*)
1337 # Hard-float requires at least Arm v5te
1338 target_cpu_cname="arm10e"
1339 tm_defines="${tm_defines} TARGET_DEFAULT_FLOAT_ABI=ARM_FLOAT_ABI_HARD"
1343 armv6*) target_cpu_cname="arm1176jzf-s";;
1344 armv7*) target_cpu_cname="generic-armv7-a";;
1347 arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)
1348 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"
1349 extra_options="${extra_options} linux-android.opt"
1352 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1355 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
1356 tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h arm/aout.h arm/arm.h"
1358 arm*-*-uclinuxfdpiceabi)
1359 tm_file="$tm_file arm/uclinuxfdpiceabi.h"
1362 # Define with_float to "hard" if not already defined and
1363 # target name ends with "hf"
1364 case $target:$with_float in
1369 # Generation of floating-point instructions requires at least ARMv5te.
1370 if [ "$with_float" = "hard" -o "$with_float" = "softfp" ] ; then
1371 target_cpu_cname="arm10e"
1373 target_cpu_cname="arm10tdmi"
1375 # Define multilib configuration for arm-linux-androideabi.
1378 tmake_file="$tmake_file arm/t-linux-androideabi"
1381 # The EABI requires the use of __cxa_atexit.
1382 default_use_cxa_atexit=yes
1383 with_tls=${with_tls:-gnu}
1385 arm*-*-uclinux*eabi*) # ARM ucLinux
1386 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
1387 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi"
1388 tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h arm/aout.h arm/arm.h"
1389 target_cpu_cname="arm7tdmi"
1390 # The EABI requires the use of __cxa_atexit.
1391 default_use_cxa_atexit=yes
1394 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1395 tm_file="${tm_file} newlib-stdint.h phoenix.h"
1396 tm_file="${tm_file} arm/aout.h arm/arm.h"
1397 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi arm/t-phoenix"
1398 target_cpu_cname="arm7tdmi"
1400 arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
1403 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1405 default_use_cxa_atexit=yes
1406 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1407 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf"
1408 target_cpu_cname="arm7tdmi"
1411 tm_file="$tm_file newlib-stdint.h"
1412 tmake_file="${tmake_file} arm/t-bpabi"
1416 tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h"
1417 tmake_file="${tmake_file} arm/t-bpabi arm/t-fuchsia"
1418 target_cpu_cname="generic-armv7-a"
1421 tm_file="${tm_file} arm/rtems.h rtems.h newlib-stdint.h"
1422 tmake_file="${tmake_file} arm/t-bpabi arm/t-rtems"
1425 tm_file="${tm_file} arm/symbian.h"
1426 # We do not include t-bpabi for Symbian OS because the system
1427 # provides its own implementation of the BPABI functions.
1428 tmake_file="${tmake_file} arm/t-symbian"
1429 target_cpu_cname="arm10tdmi"
1432 tm_file="${tm_file} arm/aout.h arm/arm.h"
1435 tm_file="elfos.h avr/elf.h avr/avr-arch.h avr/avr.h avr/specs.h avr/avr-stdint.h"
1436 if test x${with_avrlibc} != xno; then
1437 tm_file="${tm_file} ${cpu_type}/avrlibc.h"
1438 tm_defines="${tm_defines} WITH_AVRLIBC"
1440 # Work out avr_double_comparison which is 2 or 3 and is used in
1441 # target hook FLOAT_LIB_COMPARE_RETURNS_BOOL to determine whether
1442 # DFmode comparisons return 3-state or 2-state results.
1443 case y${with_double_comparison} in
1445 avr_double_comparison=3
1448 avr_double_comparison=2
1451 echo "Error: --with-double-comparison= can only be used with: 'tristate', 'bool', 'libf7'" 1>&2
1455 case "y${with_libf7}" in
1457 # avr_double_comparison as set above.
1460 avr_double_comparison=2
1461 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1463 y | yyes | ymath-symbols)
1464 avr_double_comparison=2
1465 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1466 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1467 tm_defines="${tm_defines} WITH_LIBF7_MATH_SYMBOLS"
1470 avr_double_comparison=2
1471 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1472 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1475 echo "Error: --with-libf7=${with_libf7} but can only be used with: 'libgcc', 'math', 'math-symbols', 'yes', 'no'" 1>&2
1479 tm_defines="${tm_defines} WITH_DOUBLE_COMPARISON=${avr_double_comparison}"
1480 case y${with_double} in
1483 tm_defines="${tm_defines} HAVE_DOUBLE32"
1487 tm_defines="${tm_defines} HAVE_DOUBLE64"
1491 avr_double_multilib=1
1492 tm_defines="${tm_defines} HAVE_DOUBLE32"
1493 tm_defines="${tm_defines} HAVE_DOUBLE64"
1494 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1498 avr_double_multilib=1
1499 tm_defines="${tm_defines} HAVE_DOUBLE32"
1500 tm_defines="${tm_defines} HAVE_DOUBLE64"
1501 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1504 echo "Error: --with-double= can only be used with: '32', '32,64', '64,32', '64'" 1>&2
1508 case y${with_long_double} in
1511 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1515 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1519 avr_long_double_multilib=1
1520 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1521 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1522 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1526 avr_long_double_multilib=1
1527 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1528 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1529 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1532 avr_long_double=${avr_double}
1533 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_IS_DOUBLE"
1534 if test y${avr_double_multilib} = y1; then
1535 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1536 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1538 tm_defines="${tm_defines} HAVE_LONG_DOUBLE${avr_long_double}"
1542 echo "Error: --with-long_double= can only be used with: '32', '32,64', '64,32', '64', 'double'" 1>&2
1546 if test ${avr_long_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 32xy1z; then
1547 if test y${with_long_double} != ydouble; then
1548 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
1552 if test ${avr_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 64x1yz; then
1553 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
1556 if test y${avr_double}${avr_long_double} = y6432; then
1557 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
1560 tm_defines="${tm_defines} WITH_DOUBLE${avr_double}"
1561 tm_defines="${tm_defines} WITH_LONG_DOUBLE${avr_long_double}"
1562 tmake_file="${tmake_file} avr/t-avr avr/t-multilib"
1564 extra_gcc_objs="driver-avr.o avr-devices.o"
1565 extra_objs="avr-devices.o avr-log.o"
1568 tm_file="${tm_file} elfos.h newlib-stdint.h bfin/elf.h"
1569 tmake_file=bfin/t-bfin-elf
1573 tm_file="${tm_file} elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/uclinux.h"
1574 tmake_file=bfin/t-bfin-uclinux
1577 bfin*-linux-uclibc*)
1578 tm_file="${tm_file} elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/linux.h ./linux-sysroot-suffix.h"
1579 tmake_file="${tmake_file} bfin/t-bfin-linux"
1583 tm_file="${tm_file} elfos.h bfin/elf.h bfin/rtems.h rtems.h newlib-stdint.h"
1584 tmake_file="${tmake_file} bfin/t-rtems"
1587 tm_file="${tm_file} elfos.h newlib-stdint.h bfin/elf.h"
1592 tm_file="elfos.h ${tm_file}"
1593 tmake_file="${tmake_file} bpf/t-bpf"
1595 extra_headers="bpf-helpers.h"
1596 use_gcc_stdint=provide
1597 extra_objs="coreout.o"
1598 target_gtfiles="$target_gtfiles \$(srcdir)/config/bpf/coreout.cc"
1600 cris-*-elf | cris-*-none)
1601 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1602 tmake_file="cris/t-cris cris/t-elfmulti"
1604 extra_options="${extra_options} cris/elf.opt"
1608 if test x${with_endian} != x; then
1609 case ${with_endian} in
1612 echo "with_endian=${with_endian} not supported."
1617 if test x${with_float} != x; then
1618 case ${with_float} in
1619 soft | hard | softfp) ;;
1621 "Unknown floating point type used in --with-float=$with_float"
1626 tm_file="csky/csky.h"
1627 md_file="csky/csky.md"
1628 out_file="csky/csky.cc"
1629 tm_p_file="${tm_p_file} csky/csky-protos.h"
1630 extra_options="${extra_options} csky/csky_tables.opt"
1632 if test x${enable_tpf_debug} = xyes; then
1633 tm_defines="${tm_defines} ENABLE_TPF_DEBUG"
1638 tm_file="elfos.h newlib-stdint.h ${tm_file} csky/csky-elf.h"
1639 tmake_file="csky/t-csky csky/t-csky-elf"
1640 default_use_cxa_atexit=no
1644 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} csky/csky-linux-elf.h"
1645 tmake_file="${tmake_file} csky/t-csky"
1647 if test "x${enable_multilib}" = xyes ; then
1648 tm_defines="$tm_defines CSKY_ENABLE_MULTILIB"
1649 tmake_file="${tmake_file} csky/t-csky-linux"
1654 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
1655 # Force .init_array support. The configure script cannot always
1656 # automatically detect that GAS supports it, yet we require it.
1657 gcc_cv_initfini_array=yes
1659 csky-*-linux-uclibc*)
1660 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
1661 default_use_cxa_atexit=no
1664 echo "Unknown target $target"
1670 echo "Unknown target $target"
1675 epiphany-*-elf | epiphany-*-rtems*)
1676 tm_file="elfos.h ${tm_file}"
1677 tmake_file="${tmake_file} epiphany/t-epiphany"
1680 tm_file="${tm_file} epiphany/rtems.h rtems.h newlib-stdint.h"
1683 tm_file="${tm_file} newlib-stdint.h"
1686 extra_options="${extra_options} fused-madd.opt"
1687 extra_objs="${extra_objs} mode-switch-use.o resolve-sw-modes.o"
1688 tm_defines="${tm_defines} EPIPHANY_STACK_OFFSET=${with_stack_offset:-8}"
1689 extra_headers="epiphany_intrinsics.h"
1692 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1695 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1696 tmake_file=frv/t-frv
1699 tm_file="elfos.h ${tm_file} \
1700 gnu-user.h linux.h glibc-stdint.h frv/linux.h"
1701 tmake_file="${tmake_file} frv/t-frv frv/t-linux"
1706 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1707 tmake_file="${tmake_file} ft32/t-ft32"
1710 tm_file="elfos.h gcn/gcn-hsa.h gcn/gcn.h newlib-stdint.h"
1711 tmake_file="gcn/t-gcn-hsa"
1712 native_system_header_dir=/include
1713 extra_modes=gcn/gcn-modes.def
1714 extra_objs="${extra_objs} gcn-tree.o"
1715 extra_gcc_objs="driver-gcn.o"
1717 x86_64*-*-linux-gnu )
1718 if test "$ac_cv_search_dlopen" != no; then
1719 extra_programs="${extra_programs} gcn-run\$(exeext)"
1723 if test x$enable_as_accelerator = xyes; then
1724 extra_programs="${extra_programs} mkoffload\$(exeext)"
1725 tm_file="${tm_file} gcn/offload.h"
1727 # Force .init_array support.
1728 gcc_cv_initfini_array=yes
1734 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1735 tmake_file="${tmake_file} moxie/t-moxie"
1740 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h moxie/uclinux.h"
1741 tmake_file="${tmake_file} moxie/t-moxie"
1744 tmake_file="${tmake_file} moxie/t-moxie"
1745 tm_file="moxie/moxie.h elfos.h moxie/rtems.h rtems.h newlib-stdint.h"
1750 tm_file="${tm_file} elfos.h moxie/moxiebox.h newlib-stdint.h"
1751 tmake_file="${tmake_file} moxie/t-moxiebox"
1754 tmake_file="h8300/t-h8300"
1755 tm_file="h8300/h8300.h elfos.h newlib-stdint.h h8300/elf.h"
1758 tmake_file="${tmake_file} h8300/t-h8300 h8300/t-linux"
1759 tm_file="h8300/h8300.h elfos.h gnu-user.h linux.h glibc-stdint.h h8300/linux.h"
1762 target_cpu_default="MASK_PA_11|MASK_PA_20"
1763 tm_file="pa/pa64-start.h ${tm_file} elfos.h gnu-user.h linux.h \
1764 glibc-stdint.h pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h \
1766 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1767 d_target_objs="${d_target_objs} pa-d.o"
1771 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS|MASK_CALLER_COPIES"
1772 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h pa/pa-linux.h \
1773 pa/pa32-regs.h pa/pa32-linux.h"
1774 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1775 d_target_objs="${d_target_objs} pa-d.o"
1778 target_cpu_default="MASK_PA_11"
1779 tm_file="${tm_file} elfos.h openbsd.h openbsd-stdint.h openbsd-libpthread.h \
1780 pa/pa-openbsd.h pa/pa32-regs.h pa/pa32-openbsd.h"
1781 extra_options="${extra_options} openbsd.opt"
1782 tmake_file="pa/t-pa"
1783 d_target_objs="${d_target_objs} pa-d.o"
1788 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS"
1789 tm_file="${tm_file} elfos.h ${nbsd_tm_file} \
1790 pa/pa-netbsd.h pa/pa32-regs.h pa/pa32-netbsd.h"
1791 tmake_file="${tmake_file}"
1792 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
1793 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1796 target_cpu_default="MASK_PA_11|MASK_PA_20"
1797 if test x$gnu_ld = xyes
1799 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
1801 tm_file="pa/pa64-start.h ${tm_file} elfos.h \
1802 pa/pa64-regs.h pa/pa-hpux.h pa/pa-hpux1010.h \
1806 tm_file="${tm_file} pa/pa-hpux1111.h pa/pa-64.h pa/pa64-hpux.h"
1807 extra_options="${extra_options} pa/pa-hpux1111.opt"
1810 tm_file="${tm_file} pa/pa-hpux1131.h pa/pa-64.h pa/pa64-hpux.h"
1811 extra_options="${extra_options} pa/pa-hpux1131.opt"
1814 tm_file="${tm_file} pa/pa-64.h pa/pa64-hpux.h"
1817 extra_options="${extra_options} pa/pa-hpux.opt \
1818 pa/pa-hpux1010.opt pa/pa64-hpux.opt hpux11.opt"
1819 tmake_file="pa/t-pa t-slibgcc"
1820 d_target_objs="${d_target_objs} pa-d.o"
1821 case x${enable_threads} in
1829 use_gcc_stdint=provide
1830 tm_file="${tm_file} hpux-stdint.h"
1834 tm_file="${tm_file} hpux-stdint.h"
1838 i[34567]86-*-darwin1[89]* | i[34567]86-*-darwin2*)
1839 echo "Error: 32bit target is not supported after Darwin17" 1>&2
1841 i[34567]86-*-darwin*)
1843 # Baseline choice for a machine that allows m64 support.
1844 with_cpu=${with_cpu:-core2}
1845 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch t-slibgcc"
1846 tm_file="${cpu_type}/darwin32-biarch.h ${tm_file} "
1848 x86_64-*-darwin1[89]* | x86_64-*-darwin2*)
1850 tm_defines="${tm_defines} TARGET_64BIT_DEFAULT=(OPTION_MASK_ISA_64BIT|OPTION_MASK_ABI_64)"
1851 tm_defines="${tm_defines} TARGET_BI_ARCH=0"
1852 with_cpu=${with_cpu:-core2}
1853 tmake_file="${tmake_file} t-slibgcc"
1856 with_cpu=${with_cpu:-core2}
1857 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
1858 tm_file="${cpu_type}/darwin64-biarch.h ${tm_file} "
1860 i[34567]86-*-elfiamcu)
1861 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/iamcu.h"
1864 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h"
1867 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h"
1870 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"
1873 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/rdos.h"
1876 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"
1877 tmake_file="i386/t-i386elf t-svr4"
1879 i[34567]86-*-dragonfly*)
1880 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h dragonfly.h dragonfly-stdint.h i386/dragonfly.h"
1881 tmake_file="${tmake_file} i386/t-crtstuff"
1883 x86_64-*-dragonfly*)
1884 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h dragonfly.h dragonfly-stdint.h i386/x86-64.h i386/dragonfly.h"
1885 tmake_file="${tmake_file} i386/t-crtstuff"
1887 i[34567]86-*-freebsd*)
1888 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
1891 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"
1893 i[34567]86-*-netbsdelf*)
1894 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${nbsd_tm_file} i386/netbsd-elf.h"
1895 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1898 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${nbsd_tm_file} i386/x86-64.h i386/netbsd64.h"
1899 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1901 i[34567]86-*-openbsd*)
1902 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
1903 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/openbsdelf.h"
1904 extra_options="${extra_options} openbsd.opt"
1909 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
1910 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/x86-64.h i386/openbsdelf.h"
1911 extra_options="${extra_options} openbsd.opt"
1915 i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu)
1916 # Intel 80386's running GNU/*
1917 # with ELF format using glibc 2
1918 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h gnu-user.h glibc-stdint.h"
1920 i[34567]86-*-linux*)
1921 tm_file="${tm_file} linux.h linux-android.h"
1922 extra_options="${extra_options} linux-android.opt"
1923 if test x$enable_targets = xall; then
1924 tm_file="${tm_file} i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h i386/linux-common.h i386/linux64.h"
1925 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
1926 tmake_file="${tmake_file} i386/t-linux64"
1927 x86_multilibs="${with_multilib_list}"
1928 if test "$x86_multilibs" = "default"; then
1929 x86_multilibs="m64,m32"
1931 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
1932 for x86_multilib in ${x86_multilibs}; do
1933 case ${x86_multilib} in
1935 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
1938 echo "--with-multilib-list=${x86_with_multilib} not supported."
1942 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1944 if test x$with_cpu = x; then
1945 if test x$with_cpu_64 = x; then
1949 case " $x86_cpus $x86_archs $x86_64_archs " in
1953 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
1954 echo "$x86_cpus $x86_archs $x86_64_archs " 1>&2
1960 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h i386/linux-common.h i386/linux.h"
1963 i[34567]86-*-kfreebsd*-gnu)
1964 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kfreebsd-gnu.h i386/kfreebsd-gnu.h"
1966 i[34567]86-*-kopensolaris*-gnu)
1967 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kopensolaris-gnu.h i386/kopensolaris-gnu.h"
1970 tm_file="$tm_file i386/gnu-user-common.h i386/gnu-user.h gnu.h i386/gnu.h"
1974 x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-gnu*)
1975 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h gnu-user.h glibc-stdint.h \
1976 i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h"
1979 tm_file="${tm_file} linux.h linux-android.h i386/linux-common.h i386/linux64.h"
1980 extra_options="${extra_options} linux-android.opt"
1982 x86_64-*-kfreebsd*-gnu)
1983 tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu64.h"
1986 tm_file="${tm_file} gnu.h i386/gnu64.h"
1989 tmake_file="${tmake_file} i386/t-linux64"
1990 x86_multilibs="${with_multilib_list}"
1991 if test "$x86_multilibs" = "default"; then
1994 x86_multilibs="mx32"
1997 x86_multilibs="m64,m32"
2001 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
2002 for x86_multilib in ${x86_multilibs}; do
2003 case ${x86_multilib} in
2005 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
2008 echo "--with-multilib-list=${x86_with_multilib} not supported."
2012 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2014 i[34567]86-pc-msdosdjgpp*)
2015 xm_file=i386/xm-djgpp.h
2016 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/djgpp.h i386/djgpp-stdint.h"
2017 native_system_header_dir=/dev/env/DJDIR/include
2018 extra_options="${extra_options} i386/djgpp.opt"
2023 i[34567]86-*-lynxos*)
2025 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h i386/lynx.h lynx.h"
2026 tmake_file="${tmake_file} t-lynx"
2027 extra_options="${extra_options} lynx.opt"
2032 i[34567]86-*-nto-qnx*)
2033 tm_file="${tm_file} i386/att.h tm-dwarf2.h elfos.h i386/unix.h i386/nto.h"
2034 extra_options="${extra_options} i386/nto.opt"
2038 i[34567]86-*-rtems*)
2039 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h i386/i386elf.h i386/rtemself.h rtems.h newlib-stdint.h"
2040 tmake_file="${tmake_file} i386/t-rtems"
2042 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
2043 # Set default arch_32 to pentium4, tune_32 to generic like the other
2044 # i386 targets, although config.guess defaults to i386-pc-solaris2*.
2045 with_arch_32=${with_arch_32:-pentium4}
2046 with_tune_32=${with_tune_32:-generic}
2047 tm_file="${tm_file} i386/unix.h i386/att.h ${sol2_tm_file_head} i386/x86-64.h ${sol2_tm_file_tail}"
2048 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2049 tmake_file="$tmake_file i386/t-sol2"
2051 if test x$with_cpu = x; then
2052 if test x$with_cpu_64 = x; then
2056 case " $x86_cpus $x86_archs $x86_64_archs " in
2060 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2061 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2067 i[4567]86-wrs-vxworks*|x86_64-wrs-vxworks7*)
2068 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
2072 tm_file="${tm_file} i386/x86-64.h"
2075 tm_file="${tm_file} vx-common.h"
2078 tm_file="${tm_file} vxworksae.h i386/vxworks.h i386/vxworksae.h"
2079 tmake_file="${tmake_file} i386/t-vxworks i386/t-vxworksae"
2082 tm_file="${tm_file} vxworks.h i386/vxworks.h"
2083 tmake_file="${tmake_file} i386/t-vxworks"
2087 i[34567]86-*-cygwin*)
2088 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h i386/cygwin.h i386/cygwin-stdint.h"
2089 xm_file=i386/xm-cygwin.h
2090 tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
2091 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2092 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
2093 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2094 c_target_objs="${c_target_objs} msformat-c.o"
2095 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2096 d_target_objs="${d_target_objs} cygwin-d.o"
2097 target_has_targetdm="yes"
2098 if test x$enable_threads = xyes; then
2101 default_use_cxa_atexit=yes
2106 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"
2107 xm_file=i386/xm-cygwin.h
2108 tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
2109 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2110 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
2111 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2112 c_target_objs="${c_target_objs} msformat-c.o"
2113 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2114 d_target_objs="${d_target_objs} cygwin-d.o"
2115 target_has_targetdm="yes"
2116 if test x$enable_threads = xyes; then
2119 default_use_cxa_atexit=yes
2121 tm_defines="${tm_defines} TARGET_CYGWIN64=1"
2123 i[34567]86-*-mingw* | x86_64-*-mingw*)
2124 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h"
2125 xm_file=i386/xm-mingw32.h
2126 c_target_objs="${c_target_objs} winnt-c.o"
2127 cxx_target_objs="${cxx_target_objs} winnt-c.o"
2128 d_target_objs="${d_target_objs} winnt-d.o"
2129 target_has_targetcm="yes"
2130 target_has_targetdm="yes"
2132 x86_64-*-* | *-w64-*)
2138 if test x$enable_threads = xposix ; then
2139 tm_file="${tm_file} i386/mingw-pthread.h"
2141 if test x$enable_threads = xmcf ; then
2142 tm_file="${tm_file} i386/mingw-mcfgthread.h"
2144 tm_file="${tm_file} i386/mingw32.h"
2145 # This makes the logic if mingw's or the w64 feature set has to be used
2148 user_headers_inc_next_post="${user_headers_inc_next_post} float.h"
2149 user_headers_inc_next_pre="${user_headers_inc_next_pre} stddef.h stdarg.h"
2150 tm_file="${tm_file} i386/mingw-w64.h"
2151 if test x$enable_targets = xall; then
2152 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2153 if test x$with_cpu = x; then
2154 if test x$with_cpu_64 = x; then
2158 case " $x86_cpus $x86_archs $x86_64_archs " in
2162 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2163 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2173 tm_file="${tm_file} i386/mingw-stdint.h"
2174 tmake_file="${tmake_file} t-winnt i386/t-cygming t-slibgcc"
2177 tmake_file="${tmake_file} i386/t-mingw-w64"
2180 tmake_file="${tmake_file} i386/t-mingw-w32"
2183 native_system_header_dir=/mingw/include
2184 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2185 extra_options="${extra_options} i386/cygming.opt i386/mingw.opt"
2188 extra_options="${extra_options} i386/mingw-w64.opt"
2193 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2194 c_target_objs="${c_target_objs} msformat-c.o"
2195 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2198 default_use_cxa_atexit=yes
2200 case ${enable_threads} in
2210 tm_file="${tm_file} i386/crtdll.h"
2212 *mingw32msv* | *mingw*)
2217 tmake_file="${tmake_file} i386/t-x86_64-elf"
2218 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h fuchsia.h"
2221 tm_file="${tm_file} elfos.h newlib-stdint.h ia64/sysv4.h ia64/elf.h"
2222 tmake_file="ia64/t-ia64"
2223 target_cpu_default="0"
2224 if test x$gas = xyes
2226 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2228 if test x$gnu_ld = xyes
2230 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
2234 tm_file="${tm_file} elfos.h ${fbsd_tm_file} ia64/sysv4.h ia64/freebsd.h"
2235 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2236 tmake_file="${tmake_file} ia64/t-ia64"
2239 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h ia64/sysv4.h ia64/linux.h"
2240 tmake_file="${tmake_file} ia64/t-ia64 ia64/t-linux t-libunwind"
2241 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2244 tm_file="${tm_file} elfos.h ia64/sysv4.h ia64/hpux.h"
2245 tmake_file="ia64/t-ia64 ia64/t-hpux t-slibgcc"
2246 target_cpu_default="MASK_GNU_AS"
2247 case x$enable_threads in
2253 c_target_objs="ia64-c.o"
2254 cxx_target_objs="ia64-c.o"
2255 extra_options="${extra_options} ia64/ilp32.opt hpux11.opt"
2257 tm_file="${tm_file} hpux-stdint.h"
2260 tm_file="${tm_file} ia64/hpux-unix2003.h"
2265 tm_file="${tm_file} elfos.h ia64/sysv4.h vms/vms.h ia64/vms.h"
2266 tmake_file="${tmake_file} ia64/t-ia64"
2267 target_cpu_default="0"
2268 if test x$gas = xyes
2270 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2272 extra_options="${extra_options} ia64/vms.opt"
2275 tm_file="elfos.h newlib-stdint.h iq2000/iq2000.h"
2276 out_file=iq2000/iq2000.cc
2277 md_file=iq2000/iq2000.md
2280 tm_file="elfos.h ${tm_file} newlib-stdint.h"
2281 tmake_file="${tmake_file} lm32/t-lm32"
2284 tm_file="elfos.h ${tm_file} lm32/rtems.h rtems.h newlib-stdint.h"
2285 tmake_file="${tmake_file} lm32/t-lm32"
2286 tmake_file="${tmake_file} lm32/t-rtems"
2289 tm_file="elfos.h ${tm_file} gnu-user.h linux.h lm32/uclinux-elf.h"
2290 tmake_file="${tmake_file} lm32/t-lm32"
2293 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2296 tm_file="elfos.h newlib-stdint.h m32r/little.h ${tm_file}"
2298 m68k-*-elf* | fido-*-elf*)
2301 # Check that $with_cpu makes sense.
2306 echo "Cannot accept --with-cpu=$with_cpu"
2313 default_m68k_cpu=68020
2317 tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h elfos.h newlib-stdint.h m68k/m68kemb.h m68k/m68020-elf.h"
2318 tm_defines="${tm_defines} MOTOROLA=1"
2319 tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-m68kelf"
2320 # Add multilibs for targets other than fido.
2325 tmake_file="$tmake_file m68k/t-mlibs"
2330 default_m68k_cpu=68020
2332 tm_file="${tm_file} elfos.h ${nbsd_tm_file} m68k/netbsd-elf.h"
2333 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2334 tm_defines="${tm_defines} MOTOROLA=1 CHAR_FAST8=1 SHORT_FAST16=1"
2336 m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux
2337 # with uClibc, using the new GNU/Linux-style
2339 default_m68k_cpu=68020
2341 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"
2342 extra_options="${extra_options} m68k/uclinux.opt"
2343 tm_defines="${tm_defines} MOTOROLA=1"
2344 tmake_file="m68k/t-floatlib m68k/t-uclinux m68k/t-mlibs"
2346 m68k-*-linux*) # Motorola m68k's running GNU/Linux
2347 # with ELF format using glibc 2
2348 # aka the GNU/Linux C library 6.
2349 default_m68k_cpu=68020
2351 with_arch=${with_arch:-m68k}
2352 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h m68k/linux.h ./sysroot-suffix.h"
2353 extra_options="${extra_options} m68k/ieee.opt"
2354 tm_defines="${tm_defines} MOTOROLA=1"
2355 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-linux m68k/t-mlibs"
2358 default_m68k_cpu=68020
2360 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-m68kbare m68k/t-crtstuff m68k/t-rtems m68k/t-mlibs"
2361 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"
2362 tm_defines="${tm_defines} MOTOROLA=1"
2365 tm_file="elfos.h newlib-stdint.h ${tm_file} mcore/mcore-elf.h"
2366 tmake_file=mcore/t-mcore
2372 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2375 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2378 tm_file="${tm_file} gnu-user.h linux.h microblaze/linux.h"
2379 tm_file="${tm_file} glibc-stdint.h"
2380 c_target_objs="${c_target_objs} microblaze-c.o"
2381 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2382 tmake_file="${tmake_file} microblaze/t-microblaze"
2383 tmake_file="${tmake_file} microblaze/t-microblaze-linux"
2385 microblaze*-*-rtems*)
2388 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2391 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2394 tm_file="${tm_file}"
2395 tm_file="${tm_file} microblaze/rtems.h rtems.h newlib-stdint.h"
2396 c_target_objs="${c_target_objs} microblaze-c.o"
2397 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2398 tmake_file="${tmake_file} microblaze/t-microblaze"
2399 tmake_file="${tmake_file} microblaze/t-rtems"
2404 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2407 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2410 tm_file="${tm_file} newlib-stdint.h"
2411 c_target_objs="${c_target_objs} microblaze-c.o"
2412 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2413 tmake_file="${tmake_file} microblaze/t-microblaze"
2416 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} riscv/linux.h"
2417 case "x${enable_multilib}" in
2419 xyes) tmake_file="${tmake_file} riscv/t-linux-multilib" ;;
2420 *) echo "Unknown value for enable_multilib"; exit 1
2422 tmake_file="${tmake_file} riscv/t-riscv riscv/t-linux"
2423 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
2427 riscv32be-*|riscv64be-*)
2428 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2431 # Force .init_array support. The configure script cannot always
2432 # automatically detect that GAS supports it, yet we require it.
2433 gcc_cv_initfini_array=yes
2435 riscv*-*-elf* | riscv*-*-rtems*)
2436 tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h"
2439 tm_file="${tm_file} riscv/rtems.h rtems.h"
2440 tmake_file="${tmake_file} riscv/t-rtems"
2443 if test "x${with_multilib_generator}" == xdefault; then
2444 case "x${enable_multilib}" in
2446 xyes) tmake_file="${tmake_file} riscv/t-elf-multilib" ;;
2447 *) echo "Unknown value for enable_multilib"; exit 1
2451 tmake_file="${tmake_file} riscv/t-riscv"
2455 riscv32be-*|riscv64be-*)
2456 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2459 # Force .init_array support. The configure script cannot always
2460 # automatically detect that GAS supports it, yet we require it.
2461 gcc_cv_initfini_array=yes
2464 tm_file="${tm_file} elfos.h ${fbsd_tm_file} riscv/freebsd.h"
2465 tmake_file="${tmake_file} riscv/t-riscv"
2469 riscv32be-*|riscv64be-*)
2470 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2473 # Force .init_array support. The configure script cannot always
2474 # automatically detect that GAS supports it, yet we require it.
2475 gcc_cv_initfini_array=yes
2478 loongarch*-*-linux*)
2479 tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file}"
2480 tm_file="${tm_file} loongarch/gnu-user.h loongarch/linux.h"
2481 extra_options="${extra_options} linux-android.opt"
2482 tmake_file="${tmake_file} loongarch/t-linux"
2486 # Force .init_array support. The configure script cannot always
2487 # automatically detect that GAS supports it, yet we require it.
2488 gcc_cv_initfini_array=yes
2491 mips*-*-netbsd*) # NetBSD/mips, either endian.
2492 target_cpu_default="MASK_ABICALLS"
2493 tm_file="elfos.h ${tm_file} mips/elf.h ${nbsd_tm_file} mips/netbsd.h"
2494 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2497 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"
2498 extra_options="${extra_options} linux-android.opt"
2499 tmake_file="${tmake_file} mips/t-img-linux"
2500 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2501 with_arch_32="mips32r6"
2502 with_arch_64="mips64r6"
2507 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"
2508 extra_options="${extra_options} linux-android.opt"
2509 tmake_file="${tmake_file} mips/t-mti-linux"
2510 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2511 with_arch_32="mips32r2"
2512 with_arch_64="mips64r2"
2516 mips*-*-linux*) # Linux MIPS, either endian.
2517 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"
2518 extra_options="${extra_options} linux-android.opt"
2521 default_mips_arch=mips32r6
2524 default_mips_arch=mips32r2
2527 default_mips_arch=mips32
2529 mips64el-st-linux-gnu)
2530 default_mips_abi=n32
2531 tm_file="${tm_file} mips/st.h"
2532 tmake_file="${tmake_file} mips/t-st"
2533 enable_mips_multilibs="yes"
2535 mips64octeon*-*-linux*)
2536 default_mips_abi=n32
2537 tm_defines="${tm_defines} MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\""
2538 target_cpu_default=MASK_SOFT_FLOAT_ABI
2539 enable_mips_multilibs="yes"
2541 mipsisa64r6*-*-linux-gnuabi64)
2543 default_mips_arch=mips64r6
2544 enable_mips_multilibs="yes"
2546 mipsisa64r6*-*-linux*)
2547 default_mips_abi=n32
2548 default_mips_arch=mips64r6
2549 enable_mips_multilibs="yes"
2551 mipsisa64r2*-*-linux-gnuabi64)
2553 default_mips_arch=mips64r2
2554 enable_mips_multilibs="yes"
2556 mipsisa64r2*-*-linux*)
2557 default_mips_abi=n32
2558 default_mips_arch=mips64r2
2559 enable_mips_multilibs="yes"
2561 mips64*-*-linux-gnuabi64 | mipsisa64*-*-linux-gnuabi64)
2563 enable_mips_multilibs="yes"
2565 mips64*-*-linux* | mipsisa64*-*-linux*)
2566 default_mips_abi=n32
2567 enable_mips_multilibs="yes"
2570 if test x$enable_targets = xall; then
2571 enable_mips_multilibs="yes"
2573 if test x$enable_mips_multilibs = xyes; then
2574 tmake_file="${tmake_file} mips/t-linux64"
2578 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2579 tmake_file="mips/t-mti-elf"
2580 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2581 with_arch_32="mips32r2"
2582 with_arch_64="mips64r2"
2585 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2586 tmake_file="mips/t-img-elf"
2587 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2588 with_arch_32="mips32r6"
2589 with_arch_64="mips64r6"
2592 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h"
2593 tmake_file="mips/t-sde"
2594 extra_options="${extra_options} mips/sde.opt"
2595 case "${with_newlib}" in
2597 # newlib / libgloss.
2600 # MIPS toolkit libraries.
2601 tm_file="$tm_file mips/sdemtk.h"
2602 tmake_file="$tmake_file mips/t-sdemtk"
2603 case ${enable_threads} in
2605 thread_file='mipssde'
2612 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2615 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2618 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32 MIPS_ABI_DEFAULT=ABI_32"
2621 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6 MIPS_ABI_DEFAULT=ABI_N32"
2624 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2 MIPS_ABI_DEFAULT=ABI_N32"
2627 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_ABI_DEFAULT=ABI_N32"
2631 mipsisa32-*-elf* | mipsisa32el-*-elf* | \
2632 mipsisa32r2-*-elf* | mipsisa32r2el-*-elf* | \
2633 mipsisa32r6-*-elf* | mipsisa32r6el-*-elf* | \
2634 mipsisa64-*-elf* | mipsisa64el-*-elf* | \
2635 mipsisa64r2-*-elf* | mipsisa64r2el-*-elf* | \
2636 mipsisa64r6-*-elf* | mipsisa64r6el-*-elf*)
2637 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2638 tmake_file="mips/t-isa3264"
2641 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6"
2644 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2"
2647 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32"
2650 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6"
2653 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2"
2656 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64"
2660 mipsisa32*-*-elfoabi*)
2661 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_32"
2662 tm_file="${tm_file} mips/elfoabi.h"
2664 mipsisa64*-*-elfoabi*)
2665 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_O64"
2666 tm_file="${tm_file} mips/elfoabi.h"
2669 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2673 mipsisa64sr71k-*-elf*)
2674 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2675 tmake_file=mips/t-sr71k
2676 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sr71000\\\" MIPS_ABI_DEFAULT=ABI_EABI"
2678 mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*)
2679 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2680 tmake_file="mips/t-elf mips/t-sb1"
2681 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sb1\\\" MIPS_ABI_DEFAULT=ABI_O64"
2683 mips-*-elf* | mipsel-*-elf* | mipsr5900-*-elf* | mipsr5900el-*-elf*)
2684 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2685 tmake_file="mips/t-elf"
2687 mips64r5900-*-elf* | mips64r5900el-*-elf*)
2688 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h"
2689 tmake_file="mips/t-elf"
2690 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_N32"
2692 mips64-*-elf* | mips64el-*-elf*)
2693 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2694 tmake_file="mips/t-elf"
2695 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_O64"
2697 mips64vr-*-elf* | mips64vrel-*-elf*)
2698 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/vr.h mips/elf.h"
2699 tmake_file=mips/t-vr
2700 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2702 mips64orion-*-elf* | mips64orionel-*-elf*)
2703 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elforion.h mips/elf.h"
2704 tmake_file="mips/t-elf"
2705 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_O64"
2708 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/rtems.h rtems.h"
2709 tmake_file="${tmake_file} mips/t-elf mips/t-rtems"
2712 tm_file="elfos.h ${tm_file} mips/elf.h vx-common.h vxworks.h mips/vxworks.h"
2713 tmake_file="${tmake_file} mips/t-vxworks"
2715 mipstx39-*-elf* | mipstx39el-*-elf*)
2716 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/r3900.h mips/elf.h"
2717 tmake_file="mips/t-r3900"
2719 mmix-knuth-mmixware)
2720 tm_file="${tm_file} newlib-stdint.h"
2724 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2729 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2730 c_target_objs="msp430-c.o"
2731 cxx_target_objs="msp430-c.o"
2732 tmake_file="${tmake_file} msp430/t-msp430"
2733 extra_objs="${extra_objs} msp430-devices.o"
2734 extra_gcc_objs="driver-msp430.o msp430-devices.o"
2735 # Enable .init_array unless it has been explicitly disabled.
2736 # The MSP430 EABI mandates the use of .init_array, and the Newlib CRT
2737 # code since mid-2019 expects it.
2738 if test x${disable_initfini_array} != xyes; then
2739 gcc_cv_initfini_array=yes
2743 # __cxa_atexit increases code size, and we don't need to support
2744 # dynamic shared objects on MSP430, so regular Newlib atexit is a
2745 # fine replacement as it also supports registration of more than 32
2747 default_use_cxa_atexit=no
2748 # This target does not match the generic *-*-elf case above which
2749 # sets use_gcc_stdint=wrap, so explicitly set it here.
2755 target_cpu_default="0"
2756 tm_defines="${tm_defines}"
2761 target_cpu_default="${target_cpu_default}|MASK_BIG_ENDIAN"
2762 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2767 tm_file="elfos.h newlib-stdint.h ${tm_file} nds32/elf.h nds32/nds32_intrinsic.h"
2768 tmake_file="nds32/t-nds32 nds32/t-elf"
2771 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h nds32/linux.h nds32/nds32_intrinsic.h"
2772 tmake_file="${tmake_file} nds32/t-nds32 nds32/t-linux"
2773 gcc_cv_initfini_array=yes
2777 # Handle --enable-default-relax setting.
2778 if test x${enable_default_relax} = xyes; then
2779 tm_defines="${tm_defines} TARGET_DEFAULT_RELAX=1"
2781 # Handle --with-ext-dsp
2782 if test x${with_ext_dsp} = xyes; then
2783 tm_defines="${tm_defines} TARGET_DEFAULT_EXT_DSP=1"
2787 tm_file="elfos.h ${tm_file}"
2788 tmake_file="${tmake_file} nios2/t-nios2"
2791 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h nios2/linux.h "
2794 tm_file="${tm_file} newlib-stdint.h nios2/elf.h"
2795 extra_options="${extra_options} nios2/elf.opt"
2798 tm_file="${tm_file} newlib-stdint.h nios2/rtems.h rtems.h"
2799 tmake_file="${tmake_file} t-rtems nios2/t-rtems"
2804 tm_file="${tm_file} newlib-stdint.h"
2806 tmake_file="nvptx/t-nvptx"
2807 if test x$enable_as_accelerator = xyes; then
2808 extra_programs="${extra_programs} mkoffload\$(exeext)"
2809 tm_file="${tm_file} nvptx/offload.h"
2813 tm_file="elfos.h ${tm_file}"
2814 tmake_file="${tmake_file} or1k/t-or1k"
2815 # Force .init_array support. The configure script cannot always
2816 # automatically detect that GAS supports it, yet we require it.
2817 gcc_cv_initfini_array=yes
2819 # Handle --with-multilib-list=...
2820 or1k_multilibs="${with_multilib_list}"
2821 if test "$or1k_multilibs" = "default"; then
2822 or1k_multilibs="mcmov,msoft-mul,msoft-div"
2824 or1k_multilibs=`echo $or1k_multilibs | sed -e 's/,/ /g'`
2825 for or1k_multilib in ${or1k_multilibs}; do
2826 case ${or1k_multilib} in
2827 mcmov | msext | msfimm | \
2829 mhard-float | mdouble-float | munordered-float | msoft-float | \
2830 mhard-div | mhard-mul | \
2831 msoft-div | msoft-mul )
2832 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${or1k_multilib}"
2835 echo "--with-multilib-list=${with_multilib_list} not supported."
2839 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2843 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h"
2844 tm_file="${tm_file} or1k/linux.h"
2847 tm_file="${tm_file} newlib-stdint.h or1k/elf.h"
2848 extra_options="${extra_options} or1k/elf.opt"
2851 tm_file="${tm_file} newlib-stdint.h or1k/rtems.h rtems.h"
2852 tmake_file="${tmake_file} or1k/t-rtems"
2857 tm_file="${tm_file} newlib-stdint.h"
2860 # port not yet contributed
2861 #powerpc-*-openbsd*)
2862 # tmake_file="${tmake_file} rs6000/t-fprules"
2866 extra_options="${extra_options} ${cpu_type}/darwin.opt"
2868 *-darwin1[0-9]* | *-darwin9*)
2869 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2870 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2873 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2874 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2877 tm_file="${tm_file} ${cpu_type}/darwin7.h"
2880 # Earlier - ingle arch, with 32b only
2881 # OS X 10.0, the first edition is Darwin4
2884 tmake_file="${tmake_file} t-slibgcc"
2886 powerpc64-*-darwin*)
2887 extra_options="${extra_options} ${cpu_type}/darwin.opt"
2888 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
2889 tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h"
2891 powerpc*-*-freebsd*)
2892 tm_file="${tm_file} elfos.h gnu-user.h ${fbsd_tm_file} rs6000/sysv4.h"
2893 extra_options="${extra_options} rs6000/sysv4.opt"
2894 tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
2897 tm_file="${tm_file} rs6000/sysv4le.h" ;;
2901 tm_file="${tm_file} rs6000/default64.h rs6000/freebsd64.h"
2902 tmake_file="${tmake_file} rs6000/t-freebsd64"
2903 extra_options="${extra_options} rs6000/linux64.opt"
2904 if test $fbsd_major -ge 13; then
2905 tm_defines="${tm_defines} TARGET_FREEBSD32_SECURE_PLT=1"
2909 if test $fbsd_major -ge 13; then
2910 tm_file="rs6000/secureplt.h ${tm_file}"
2912 tm_file="${tm_file} rs6000/freebsd.h"
2917 tm_file="${tm_file} elfos.h gnu-user.h ${nbsd_tm_file} freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h"
2918 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2919 tmake_file="${tmake_file} rs6000/t-netbsd"
2920 extra_options="${extra_options} rs6000/sysv4.opt"
2922 powerpc-*-eabisimaltivec*)
2923 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"
2924 extra_options="${extra_options} rs6000/sysv4.opt"
2925 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
2929 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"
2930 extra_options="${extra_options} rs6000/sysv4.opt"
2931 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
2935 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h"
2936 extra_options="${extra_options} rs6000/sysv4.opt"
2937 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
2939 powerpc-*-eabialtivec*)
2940 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabialtivec.h"
2941 extra_options="${extra_options} rs6000/sysv4.opt"
2942 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
2946 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h"
2947 extra_options="${extra_options} rs6000/sysv4.opt"
2948 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
2952 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"
2953 extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
2954 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-rtems rs6000/t-ppccomm"
2957 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h rs6000/sysv4.h"
2958 extra_options="${extra_options} rs6000/sysv4.opt"
2959 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm"
2960 extra_objs="$extra_objs rs6000-linux.o"
2963 tm_file="${tm_file} rs6000/sysv4le.h" ;;
2965 case ${target}:${with_cpu} in
2966 powerpc64*: | powerpc64*:native) cpu_is_64bit=yes ;;
2968 maybe_biarch=${cpu_is_64bit}
2969 case ${enable_targets} in
2970 *powerpc64*) maybe_biarch=yes ;;
2971 all) maybe_biarch=yes ;;
2973 case ${target}:${enable_targets}:${maybe_biarch} in
2974 powerpc64-* | powerpc-*:*:yes | *:*powerpc64-*:yes | *:all:yes \
2975 | powerpc64le*:*powerpcle* | powerpc64le*:*powerpc-* \
2976 | powerpcle-*:*powerpc64le*:yes)
2977 if test x$cpu_is_64bit = xyes; then
2978 tm_file="${tm_file} rs6000/default64.h"
2980 tm_file="rs6000/biarch64.h ${tm_file} rs6000/linux64.h glibc-stdint.h"
2981 tmake_file="$tmake_file rs6000/t-linux64"
2984 tmake_file="$tmake_file rs6000/t-linux64le"
2985 case ${enable_targets} in
2986 all | *powerpc64-* | *powerpc-*)
2987 tmake_file="$tmake_file rs6000/t-linux64lebe" ;;
2990 case ${enable_targets} in
2991 all | *powerpc64le-* | *powerpcle-*)
2992 tmake_file="$tmake_file rs6000/t-linux64bele" ;;
2995 extra_options="${extra_options} rs6000/linux64.opt"
2998 tm_file="${tm_file} rs6000/default64.h rs6000/linux64.h glibc-stdint.h"
2999 extra_options="${extra_options} rs6000/linux64.opt"
3000 tmake_file="${tmake_file} rs6000/t-linux"
3003 tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
3004 tmake_file="${tmake_file} rs6000/t-ppcos rs6000/t-linux"
3008 powerpc*-*-linux*ppc476*)
3009 tm_file="${tm_file} rs6000/476.h"
3010 extra_options="${extra_options} rs6000/476.opt" ;;
3011 powerpc*-*-linux*altivec*)
3012 tm_file="${tm_file} rs6000/linuxaltivec.h" ;;
3016 enable_secureplt=yes ;;
3018 if test x${enable_secureplt} = xyes; then
3019 tm_file="rs6000/secureplt.h ${tm_file}"
3022 powerpc*-wrs-vxworks7r*)
3024 # Wind River 7 post SR0600 is mostly like Linux so we setup
3025 # our config in a very similar fashion and adjust to a few
3028 # The system compiler is configured with secureplt by default.
3029 tm_file="${tm_file} rs6000/secureplt.h"
3031 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h"
3032 tm_file="${tm_file} rs6000/sysv4.h rs6000/biarch64.h rs6000/default64.h rs6000/linux64.h"
3033 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3035 extra_options="${extra_options} rs6000/sysv4.opt linux.opt rs6000/linux64.opt"
3037 tmake_file="${tmake_file} t-linux rs6000/t-linux64 rs6000/t-fprules rs6000/t-ppccomm"
3038 tmake_file="${tmake_file} rs6000/t-vxworks"
3040 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
3041 extra_objs="$extra_objs linux.o rs6000-linux.o"
3043 powerpc-wrs-vxworks*)
3044 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h rs6000/sysv4.h"
3045 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm rs6000/t-vxworks"
3046 extra_options="${extra_options} rs6000/sysv4.opt"
3047 extra_headers="${extra_headers} ppc-asm.h"
3050 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksmils.h"
3051 tmake_file="${tmake_file} rs6000/t-vxworksmils"
3054 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksae.h"
3055 tmake_file="${tmake_file} rs6000/t-vxworksae"
3058 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3064 tm_file="${tm_file} elfos.h gnu-user.h rs6000/sysv4.h rs6000/lynx.h lynx.h"
3065 tmake_file="t-lynx rs6000/t-lynx"
3066 extra_options="${extra_options} rs6000/sysv4.opt lynx.opt"
3072 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h"
3073 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3074 extra_options="${extra_options} rs6000/sysv4.opt"
3076 powerpcle-*-eabisim*)
3077 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"
3078 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3079 extra_options="${extra_options} rs6000/sysv4.opt"
3083 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"
3084 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3085 extra_options="${extra_options} rs6000/sysv4.opt"
3089 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3090 tmake_file="${tmake_file} pru/t-pru"
3091 extra_objs="pru-pragma.o pru-passes.o"
3094 rs6000-ibm-aix7.1.* | powerpc-ibm-aix7.1.*)
3095 tmake_file="rs6000/t-aix52 t-slibgcc"
3096 if test x$cpu_is_64bit = xyes; then
3097 tm_file="${tm_file} rs6000/biarch64.h"
3098 tmake_file="rs6000/t-aix64 t-slibgcc"
3100 tm_file="${tm_file} rs6000/aix.h rs6000/aix71.h rs6000/xcoff.h rs6000/aix-stdint.h"
3101 extra_options="${extra_options} rs6000/aix64.opt"
3105 default_use_cxa_atexit=yes
3107 rs6000-ibm-aix7.2.* | powerpc-ibm-aix7.2.*)
3108 tmake_file="rs6000/t-aix52 t-slibgcc"
3109 if test x$cpu_is_64bit = xyes; then
3110 tm_file="${tm_file} rs6000/biarch64.h"
3111 tmake_file="rs6000/t-aix64 t-slibgcc"
3113 tm_file="${tm_file} rs6000/aix.h rs6000/aix72.h rs6000/xcoff.h rs6000/aix-stdint.h"
3114 extra_options="${extra_options} rs6000/aix64.opt"
3118 default_use_cxa_atexit=yes
3120 rs6000-ibm-aix[789].* | powerpc-ibm-aix[789].*)
3121 tmake_file="rs6000/t-aix52 t-slibgcc"
3122 if test x$cpu_is_64bit = xyes; then
3123 tm_file="${tm_file} rs6000/biarch64.h"
3124 tmake_file="rs6000/t-aix64 t-slibgcc"
3126 tm_file="${tm_file} rs6000/aix.h rs6000/aix73.h rs6000/xcoff.h rs6000/aix-stdint.h"
3127 extra_options="${extra_options} rs6000/aix64.opt"
3131 default_use_cxa_atexit=yes
3134 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3135 target_has_targetm_common=no
3136 c_target_objs="rl78-c.o"
3137 cxx_target_objs="rl78-c.o"
3138 tmake_file="${tmake_file} rl78/t-rl78"
3141 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3142 tmake_file="${tmake_file} rx/t-rx"
3143 extra_options="${extra_options} rx/elf.opt"
3146 tm_file="elfos.h linux.h glibc-stdint.h rx/linux.h ../../libgcc/config/rx/rx-abi.h"
3147 tmake_file="${tmake_file} rx/t-linux"
3150 tm_file="s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3151 c_target_objs="${c_target_objs} s390-c.o"
3152 cxx_target_objs="${cxx_target_objs} s390-c.o"
3153 if test x$enable_targets = xall; then
3154 tmake_file="${tmake_file} s390/t-linux64"
3156 tmake_file="${tmake_file} s390/t-s390"
3159 tm_file="s390/s390x.h s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3160 tm_p_file="linux-protos.h s390/s390-protos.h"
3161 c_target_objs="${c_target_objs} s390-c.o"
3162 cxx_target_objs="${cxx_target_objs} s390-c.o"
3163 md_file=s390/s390.md
3164 extra_modes=s390/s390-modes.def
3165 out_file=s390/s390.cc
3166 tmake_file="${tmake_file} s390/t-linux64 s390/t-s390"
3169 tm_file="s390/s390x.h s390/s390.h elfos.h glibc-stdint.h s390/tpf.h"
3170 tm_p_file=s390/s390-protos.h
3171 c_target_objs="${c_target_objs} s390-c.o"
3172 cxx_target_objs="${cxx_target_objs} s390-c.o"
3173 md_file=s390/s390.md
3174 extra_modes=s390/s390-modes.def
3175 out_file=s390/s390.cc
3177 extra_options="${extra_options} s390/tpf.opt"
3178 tmake_file="${tmake_file} s390/t-s390"
3180 sh-*-elf* | sh[12346l]*-*-elf* | \
3181 sh-*-linux* | sh[2346lbe]*-*-linux* | \
3182 sh-*-netbsdelf* | shl*-*-netbsdelf*)
3183 tmake_file="${tmake_file} sh/t-sh sh/t-elf"
3184 if test x${with_endian} = x; then
3186 sh[1234]*be-*-* | sh[1234]*eb-*-*) with_endian=big ;;
3187 shbe-*-* | sheb-*-*) with_endian=big,little ;;
3188 sh[1234]l* | sh[34]*-*-linux*) with_endian=little ;;
3189 shl* | sh*-*-linux* | \
3190 sh-superh-elf) with_endian=little,big ;;
3191 sh[1234]*-*-*) with_endian=big ;;
3192 *) with_endian=big,little ;;
3195 # TM_ENDIAN_CONFIG is used by t-sh to determine multilibs.
3196 # First word : the default endian.
3197 # Second word: the secondary endian (optional).
3198 case ${with_endian} in
3199 big) TM_ENDIAN_CONFIG=mb ;;
3200 little) TM_ENDIAN_CONFIG=ml ;;
3201 big,little) TM_ENDIAN_CONFIG="mb ml" ;;
3202 little,big) TM_ENDIAN_CONFIG="ml mb" ;;
3203 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
3205 case ${with_endian} in
3206 little*) tm_file="sh/little.h ${tm_file}" ;;
3208 tm_file="${tm_file} elfos.h sh/elf.h"
3210 sh*-*-linux*) tmake_file="${tmake_file} sh/t-linux"
3211 if test x$enable_fdpic = xyes; then
3212 tm_defines="$tm_defines FDPIC_DEFAULT=1"
3214 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h sh/linux.h" ;;
3216 tm_file="${tm_file} ${nbsd_tm_file} sh/netbsd-elf.h"
3217 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3220 sh*-superh-elf) if test x$with_libgloss != xno; then
3222 tm_file="${tm_file} sh/newlib.h"
3224 tm_file="${tm_file} sh/embed-elf.h"
3225 tm_file="${tm_file} sh/superh.h"
3226 extra_options="${extra_options} sh/superh.opt" ;;
3227 *) if test x$with_newlib = xyes \
3228 && test x$with_libgloss = xyes; then
3229 tm_file="${tm_file} sh/newlib.h"
3231 tm_file="${tm_file} sh/embed-elf.h" ;;
3237 tm_file="${tm_file} newlib-stdint.h"
3240 # sed el/eb endian suffixes away to avoid confusion with sh[23]e
3241 case `echo ${target} | sed 's/e[lb]-/-/'` in
3242 sh4a_single_only*) sh_cpu_target=sh4a-single-only ;;
3243 sh4a_single*) sh_cpu_target=sh4a-single ;;
3244 sh4a_nofpu*) sh_cpu_target=sh4a-nofpu ;;
3245 sh4al) sh_cpu_target=sh4al ;;
3246 sh4a*) sh_cpu_target=sh4a ;;
3247 sh4_single_only*) sh_cpu_target=sh4-single-only ;;
3248 sh4_single*) sh_cpu_target=sh4-single ;;
3249 sh4_nofpu*) sh_cpu_target=sh4-nofpu ;;
3250 sh4* | sh-superh-*) sh_cpu_target=sh4 ;;
3251 sh3e*) sh_cpu_target=sh3e ;;
3252 sh*-*-netbsd* | sh3*) sh_cpu_target=sh3 ;;
3253 sh2a_single_only*) sh_cpu_target=sh2a-single-only ;;
3254 sh2a_single*) sh_cpu_target=sh2a-single ;;
3255 sh2a_nofpu*) sh_cpu_target=sh2a-nofpu ;;
3256 sh2a*) sh_cpu_target=sh2a ;;
3257 sh2e*) sh_cpu_target=sh2e ;;
3258 sh2*) sh_cpu_target=sh2 ;;
3259 *) sh_cpu_target=sh1 ;;
3261 # did the user say --without-fp ?
3262 if test x$with_fp = xno; then
3263 case ${sh_cpu_target} in
3265 sh4a* ) sh_cpu_target=sh4a-nofpu ;;
3266 sh4*) sh_cpu_target=sh4-nofpu ;;
3267 sh3*) sh_cpu_target=sh3 ;;
3268 sh2a*) sh_cpu_target=sh2a-nofpu ;;
3269 sh2*) sh_cpu_target=sh2 ;;
3270 *) echo --without-fp not available for $target: ignored
3272 tm_defines="$tm_defines STRICT_NOFPU=1"
3274 sh_cpu_default="`echo $with_cpu|sed s/^m/sh/|tr A-Z_ a-z-`"
3275 case $sh_cpu_default in
3276 sh2a-single-only | sh2a-single | sh2a-nofpu | sh2a | \
3277 sh4a-single-only | sh4a-single | sh4a-nofpu | sh4a | sh4al | \
3278 sh4-single-only | sh4-single | sh4-nofpu | sh4 | sh4-300 | \
3279 sh3e | sh3 | sh2e | sh2 | sh1) ;;
3280 "") sh_cpu_default=${sh_cpu_target} ;;
3281 *) echo "with_cpu=$with_cpu not supported"; exit 1 ;;
3283 sh_multilibs=${with_multilib_list}
3284 if test "$sh_multilibs" = "default" ; then
3286 sh[1234]*) sh_multilibs=${sh_cpu_target} ;;
3287 sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
3288 sh*-*-linux*) sh_multilibs=m1,m2,m2a,m3e,m4 ;;
3289 sh*-*-netbsd*) sh_multilibs=m3,m3e,m4 ;;
3290 *) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single ;;
3292 if test x$with_fp = xno; then
3293 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`"
3296 target_cpu_default=SELECT_`echo ${sh_cpu_default}|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`
3297 tm_defines=${tm_defines}' SH_MULTILIB_CPU_DEFAULT=\"'`echo $sh_cpu_default|sed s/sh/m/`'\"'
3298 tm_defines="$tm_defines SUPPORT_`echo $sh_cpu_default | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3299 sh_multilibs=`echo $sh_multilibs | sed -e 's/,/ /g' -e 's/^[Ss][Hh]/m/' -e 's/ [Ss][Hh]/ m/g' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-`
3300 for sh_multilib in ${sh_multilibs}; do
3301 case ${sh_multilib} in
3302 m1 | m2 | m2e | m3 | m3e | \
3303 m4 | m4-single | m4-single-only | m4-nofpu | m4-300 |\
3304 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al | \
3305 m2a | m2a-single | m2a-single-only | m2a-nofpu)
3306 # TM_MULTILIB_CONFIG is used by t-sh for the non-endian multilib definition
3307 # It is passed to MULTIILIB_OPTIONS verbatim.
3308 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG}/${sh_multilib}"
3309 tm_defines="$tm_defines SUPPORT_`echo $sh_multilib | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3311 \!*) # TM_MULTILIB_EXCEPTIONS_CONFIG is used by t-sh
3312 # It is passed the MULTILIB_EXCEPTIONS verbatim.
3313 TM_MULTILIB_EXCEPTIONS_CONFIG="${TM_MULTILIB_EXCEPTIONS_CONFIG} `echo $sh_multilib | sed 's/^!//'`" ;;
3315 echo "with_multilib_list=${sh_multilib} not supported."
3320 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's:^/::'`
3321 if test x${enable_incomplete_targets} = xyes ; then
3322 tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1"
3324 tm_file="$tm_file ./sysroot-suffix.h"
3325 tmake_file="$tmake_file t-sysroot-suffix"
3328 tmake_file="${tmake_file} sh/t-sh sh/t-rtems"
3329 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h newlib-stdint.h"
3332 tmake_file="$tmake_file sh/t-sh sh/t-vxworks"
3333 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h vx-common.h vxworks.h sh/vxworks.h"
3336 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp-elf.h"
3339 tmake_file="sparc/t-sparc sparc/t-leon"
3342 tmake_file="sparc/t-sparc sparc/t-leon3"
3345 tmake_file="sparc/t-sparc sparc/t-elf"
3350 tm_file="${tm_file} elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
3351 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
3354 tm_file="${tm_file} elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
3355 extra_options="${extra_options} sparc/long-double-switch.opt"
3358 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon"
3361 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon3"
3364 tmake_file="${tmake_file} sparc/t-sparc"
3367 if test x$enable_targets = xall; then
3368 tm_file="sparc/biarch64.h ${tm_file} sparc/linux64.h"
3369 tmake_file="${tmake_file} sparc/t-linux64"
3371 tm_file="${tm_file} sparc/linux.h"
3372 tmake_file="${tmake_file} sparc/t-linux"
3376 tm_file="${tm_file} elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3377 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3378 extra_options="${extra_options} sparc/long-double-switch.opt"
3379 tmake_file="${tmake_file} sparc/t-sparc"
3382 tm_file="sparc/biarch64.h ${tm_file} ${sol2_tm_file} sparc/tso.h"
3384 sparc64-*-* | sparcv9-*-*)
3385 tm_file="sparc/default64.h ${tm_file}"
3388 test x$with_cpu != x || with_cpu=v9
3391 tmake_file="${tmake_file} sparc/t-sparc sparc/t-sol2"
3394 tm_file="${tm_file} elfos.h sparc/sysv4.h vx-common.h vxworks.h sparc/vxworks.h"
3395 tmake_file="${tmake_file} sparc/t-sparc sparc/t-vxworks"
3398 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h"
3399 extra_options="${extra_options}"
3400 tmake_file="${tmake_file} sparc/t-sparc"
3403 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h sparc/rtemself.h rtems.h"
3404 extra_options="${extra_options}"
3405 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
3408 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"
3409 extra_options="${extra_options} sparc/long-double-switch.opt"
3410 tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
3412 sparc64-*-freebsd*|ultrasparc-*-freebsd*)
3413 tm_file="${tm_file} ${fbsd_tm_file} elfos.h sparc/sysv4.h sparc/freebsd.h"
3414 extra_options="${extra_options} sparc/long-double-switch.opt"
3415 case "x$with_cpu" in
3417 x) with_cpu=ultrasparc ;;
3418 *) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
3420 tmake_file="${tmake_file} sparc/t-sparc"
3423 tm_file="sparc/biarch64.h ${tm_file}"
3424 tm_file="${tm_file} elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3425 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3426 extra_options="${extra_options} sparc/long-double-switch.opt"
3427 tmake_file="${tmake_file} sparc/t-sparc sparc/t-netbsd64"
3430 tm_file="sparc/openbsd1-64.h ${tm_file} elfos.h sparc/sysv4.h sparc/sp64-elf.h"
3431 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h sparc/openbsd64.h"
3432 extra_options="${extra_options} openbsd.opt"
3433 extra_options="${extra_options}"
3436 tmake_file="${tmake_file} sparc/t-sparc"
3439 tm_file="elfos.h ${tm_file} c6x/elf-common.h c6x/elf.h"
3440 tm_file="${tm_file} tm-dwarf2.h newlib-stdint.h"
3441 tmake_file="c6x/t-c6x c6x/t-c6x-elf"
3445 tm_file="elfos.h ${tm_file} gnu-user.h linux.h c6x/elf-common.h c6x/uclinux-elf.h"
3446 tm_file="${tm_file} tm-dwarf2.h glibc-stdint.h"
3447 tm_file="${tm_file} ./sysroot-suffix.h"
3448 tmake_file="t-sysroot-suffix t-slibgcc"
3449 tmake_file="${tmake_file} c6x/t-c6x c6x/t-c6x-elf c6x/t-c6x-uclinux"
3453 target_cpu_default="TARGET_CPU_generic"
3454 tm_file="elfos.h v850/v850.h"
3455 tm_file="${tm_file} v850/rtems.h rtems.h newlib-stdint.h"
3456 tmake_file="${tmake_file} v850/t-v850"
3457 tmake_file="${tmake_file} v850/t-rtems"
3459 c_target_objs="v850-c.o"
3460 cxx_target_objs="v850-c.o"
3465 target_cpu_default="TARGET_CPU_v850e3v5"
3468 target_cpu_default="TARGET_CPU_v850e2v3"
3471 target_cpu_default="TARGET_CPU_v850e2"
3473 v850e1-*-* | v850es-*-*)
3474 target_cpu_default="TARGET_CPU_v850e1"
3477 target_cpu_default="TARGET_CPU_v850e"
3480 target_cpu_default="TARGET_CPU_generic"
3483 tm_file="elfos.h newlib-stdint.h v850/v850.h"
3485 c_target_objs="v850-c.o"
3486 cxx_target_objs="v850-c.o"
3490 tm_file="${tm_file} elfos.h gnu-user.h linux.h vax/elf.h vax/linux.h"
3491 extra_options="${extra_options} vax/elf.opt"
3494 tm_file="${tm_file} elfos.h ${nbsd_tm_file} vax/elf.h vax/netbsd-elf.h"
3495 extra_options="${extra_options} netbsd.opt netbsd-elf.opt vax/elf.opt"
3496 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
3499 tm_file="elfos.h ${tm_file} visium/elf.h newlib-stdint.h"
3500 tmake_file="visium/t-visium visium/t-crtstuff"
3503 # For historical reasons, the target files omit the 'x'.
3504 tm_file="elfos.h newlib-stdint.h stormy16/stormy16.h"
3505 tm_p_file=stormy16/stormy16-protos.h
3506 md_file=stormy16/stormy16.md
3507 out_file=stormy16/stormy16.cc
3508 extra_options=stormy16/stormy16.opt
3509 tmake_file="stormy16/t-stormy16"
3512 tm_file="${tm_file} elfos.h newlib-stdint.h xtensa/elf.h"
3513 extra_options="${extra_options} xtensa/elf.opt"
3516 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/linux.h"
3517 tmake_file="${tmake_file} xtensa/t-xtensa"
3520 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/uclinux.h"
3521 tmake_file="${tmake_file} xtensa/t-xtensa"
3522 extra_options="${extra_options} xtensa/uclinux.opt"
3525 tm_file="mn10300/mn10300.h elfos.h gnu-user.h linux.h glibc-stdint.h mn10300/linux.h"
3530 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3531 c_target_objs="m32c-pragma.o"
3532 cxx_target_objs="m32c-pragma.o"
3535 echo "*** Configuration ${target} not supported" 1>&2
3541 i[34567]86-*-linux* | x86_64-*-linux*)
3542 tmake_file="${tmake_file} i386/t-pmm_malloc i386/t-i386"
3544 i[34567]86-*-* | x86_64-*-*)
3545 tmake_file="${tmake_file} i386/t-gmm_malloc i386/t-i386"
3547 powerpc*-*-* | rs6000-*-*)
3548 tm_file="${tm_file} ${cpu_type}/option-defaults.h"
3554 tmake_file="${tmake_file} t-musl"
3557 tmake_file="${tmake_file} t-uclibc"
3561 # Assume the existence of indirect function support and allow the use of the
3562 # resolver attribute.
3564 *-*-linux*android*|*-*-linux*uclibc*|*-*-linux*musl*)
3566 *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
3568 *-*-linux* | *-*-gnu*)
3570 aarch64*-* | arm*-* | i[34567]86-* | powerpc*-* | s390*-* | sparc*-* | x86_64-* | loongarch*-*)
3571 default_gnu_indirect_function=yes
3577 if [ "$target_has_targetcm" = "no" ]; then
3578 c_target_objs="$c_target_objs default-c.o"
3579 cxx_target_objs="$cxx_target_objs default-c.o"
3582 if [ "$common_out_file" = "" ]; then
3583 if [ "$target_has_targetm_common" = "yes" ]; then
3584 common_out_file="$cpu_type/$cpu_type-common.cc"
3586 common_out_file="default-common.cc"
3590 if [ "$target_has_targetdm" = "no" ]; then
3591 d_target_objs="$d_target_objs default-d.o"
3594 # Support for --with-cpu and related options (and a few unrelated options,
3598 echo "--with-cpu must be passed a value" 1>&2
3603 # Set arch and cpu from ${target} and ${target_noncanonical}. Set cpu
3604 # to generic if there is no processor scheduler model for the target.
3607 arch_without_sse2=no
3608 arch_without_64bit=no
3611 if test $fbsd_major -ge 6; then
3617 arch_without_sse2=yes
3618 arch_without_64bit=yes
3623 arch_without_sse2=yes
3624 arch_without_64bit=yes
3629 arch_without_sse2=yes
3630 arch_without_64bit=yes
3635 arch_without_sse2=yes
3636 arch_without_64bit=yes
3639 arch_without_sse2=yes
3640 arch_without_64bit=yes
3641 case ${target_noncanonical} in
3654 pentium_mmx-*|winchip_c6-*|winchip2-*|c3-*)
3664 i686-*-* | i786-*-*)
3665 case ${target_noncanonical} in
3706 amdfam10-*|barcelona-*)
3710 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3714 k8-*|opteron-*|athlon64-*|athlon_fx-*)
3718 athlon_xp-*|athlon_mp-*|athlon_4-*)
3721 arch_without_sse2=yes
3722 arch_without_64bit=yes
3724 athlon_tbird-*|athlon-*)
3727 arch_without_sse2=yes
3732 arch_without_sse2=yes
3741 arch_without_sse2=yes
3743 pentium3-*|pentium3m-*)
3746 arch_without_sse2=yes
3748 pentium4-*|pentium4m-*)
3787 arch_without_sse2=yes
3792 arch_without_sse2=yes
3793 arch_without_64bit=yes
3798 case ${target_noncanonical} in
3839 amdfam10-*|barcelona-*)
3843 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3847 k8-*|opteron-*|athlon_64-*)
3883 # If there is no $with_cpu option, try to infer one from ${target}.
3884 # This block sets nothing except for with_cpu.
3885 if test x$with_cpu = x ; then
3887 i[34567]86-*-elfiamcu)
3890 i[34567]86-*-*|x86_64-*-*)
3908 frv-*-*linux* | frv400-*-*linux*)
3915 case "$with_arch" in
3917 with_cpu=${default_cf_cpu}
3920 with_cpu=m${default_m68k_cpu}
3936 with_cpu="`echo ${target} | sed 's/-.*$//'`"
3945 # Avoid overriding --with-cpu-32 and --with-cpu-64 values.
3947 i[34567]86-*-*|x86_64-*-*)
3948 if test x$with_cpu_32 != x || test x$with_cpu_64 != x; then
3949 if test x$with_cpu_32 = x; then
3950 with_cpu_32=$with_cpu
3952 if test x$with_cpu_64 = x; then
3953 with_cpu_64=$with_cpu
3961 # Support for --with-arch and related options (and a few unrelated options,
3963 case ${with_arch} in
3965 echo "--with-arch must be passed a value" 1>&2
3970 # If there is no $with_arch option, try to infer one from ${target}.
3971 # This block sets nothing except for with_arch.
3972 if test x$with_arch = x ; then
3974 i[34567]86-*-darwin*|x86_64-*-darwin*)
3975 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
3976 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
3978 i[34567]86-*-elfiamcu)
3982 # --with-fpmath sets the default ISA to SSE2, which is the same
3983 # ISA supported by Pentium 4.
3984 if test x$with_fpmath = x || test $arch_without_sse2 = no; then
3993 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4004 # Avoid overriding --with-arch-32 and --with-arch-64 values.
4006 i[34567]86-*-darwin*|x86_64-*-darwin*)
4007 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
4008 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
4010 i[34567]86-*-*|x86_64-*-*)
4011 if test x$with_arch_32 != x || test x$with_arch_64 != x; then
4012 if test x$with_arch_32 = x; then
4013 with_arch_32=$with_arch
4015 if test x$with_arch_64 = x; then
4016 if test $arch_without_64bit = yes; then
4017 # Set the default 64bit arch to x86-64 if the default arch
4018 # doesn't support 64bit.
4021 with_arch_64=$with_arch
4025 elif test $arch_without_64bit$need_64bit_isa = yesyes; then
4026 # Set the default 64bit arch to x86-64 if the default arch
4027 # doesn't support 64bit and we need 64bit ISA.
4028 with_arch_32=$with_arch
4036 # Infer a default setting for --with-float.
4037 if test x$with_float = x; then
4039 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4040 # The R5900 doesn't support 64-bit float. 32-bit float doesn't
4041 # comply with IEEE 754.
4047 # Infer a default setting for --with-fpu.
4048 if test x$with_fpu = x; then
4050 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4051 # The R5900 FPU only supports single precision.
4057 # Support --with-fpmath.
4058 if test x$with_fpmath != x; then
4060 i[34567]86-*-* | x86_64-*-*)
4061 case ${with_fpmath} in
4063 tm_file="${tm_file} i386/avxmath.h"
4066 tm_file="${tm_file} i386/ssemath.h"
4069 echo "Invalid --with-fpmath=$with_fpmath" 1>&2
4075 echo "--with-fpmath isn't supported for $target." 1>&2
4081 # Similarly for --with-schedule.
4082 if test x$with_schedule = x; then
4085 # Override default PA8000 scheduling model.
4086 with_schedule=7100LC
4091 # Infer a default setting for --with-llsc.
4092 if test x$with_llsc = x; then
4095 # The kernel emulates LL and SC where necessary.
4098 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4099 # The R5900 doesn't support LL(D) and SC(D).
4105 # Validate and mark as valid any --with options supported
4106 # by this target. In order to use a particular --with option
4107 # you must list it in supported_defaults; validating the value
4108 # is optional. This case statement should set nothing besides
4109 # supported_defaults.
4114 supported_defaults="abi cpu cpu_64 arch arch_64 tune tune_64"
4115 if test x$with_cpu_64 != x && test x$with_cpu = x; then
4116 with_cpu=$with_cpu_64
4118 if test x$with_arch_64 != x && test x$with_arch = x; then
4119 with_arch=$with_arch_64
4121 if test x$with_tune_64 != x && test x$with_tune = x; then
4122 with_tune=$with_tune_64
4124 for which in cpu arch tune; do
4125 eval "val=\$with_$which"
4126 base_val=`echo $val | sed -e 's/\+.*//'`
4127 ext_val=`echo $val | sed -e 's/[a-z0-9.-]\+//'`
4129 if [ $which = arch ]; then
4130 def=aarch64-arches.def
4131 pattern=AARCH64_ARCH
4133 def=aarch64-cores.def
4134 pattern=AARCH64_CORE
4137 # Find the base CPU or ARCH id in aarch64-cores.def or
4138 # aarch64-arches.def
4139 if [ x"$base_val" = x ] \
4140 || grep "^$pattern(\"$base_val\"," \
4141 ${srcdir}/config/aarch64/$def \
4144 # Disallow extensions in --with-tune=cortex-a53+crc.
4145 if [ $which = tune ] && [ x"$ext_val" != x ]; then
4146 echo "Architecture extensions not supported in --with-$which=$val" 1>&2
4150 # Use the pre-processor to strip flatten the options.
4151 # This makes the format less rigid than if we use
4152 # grep and sed directly here.
4153 opt_macro="AARCH64_OPT_EXTENSION(A, B, C, D, E, F)=A, B, C, D, E, F"
4154 options_parsed="`$ac_cv_prog_CPP -D"$opt_macro" -x c \
4155 ${srcdir}/config/aarch64/aarch64-option-extensions.def`"
4157 while [ x"$ext_val" != x ]
4159 ext_val=`echo $ext_val | sed -e 's/\+//'`
4160 ext=`echo $ext_val | sed -e 's/\+.*//'`
4161 base_ext=`echo $ext | sed -e 's/^no//'`
4162 opt_line=`echo -e "$options_parsed" | \
4163 grep "^\"$base_ext\""`
4165 if [ x"$base_ext" = x ] \
4166 || [ x"$opt_line" != x ]; then
4169 echo "Unknown extension used in --with-$which=$val" 1>&2
4172 ext_val=`echo $ext_val | sed -e 's/[a-z0-9]\+//'`
4177 # Allow --with-$which=native.
4178 if [ "$val" = native ]; then
4181 echo "Unknown $which used in --with-$which=$val" 1>&2
4189 supported_defaults="cpu tune"
4190 for which in cpu tune; do
4191 eval "val=\$with_$which"
4194 | ev4 | ev45 | 21064 | ev5 | 21164 | ev56 | 21164a \
4195 | pca56 | 21164PC | 21164pc | ev6 | 21264 | ev67 \
4199 echo "Unknown CPU used in --with-$which=$val" 1>&2
4207 supported_defaults="cpu fpu"
4210 if [ x"$with_cpu" = x ] \
4211 || grep -q -E "^ARC_CPU[[:blank:]]*\($with_cpu," \
4212 ${srcdir}/config/arc/arc-cpus.def
4217 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4221 # see if --with-fpu matches any of the supported FPUs
4226 fpus | fpus_div | fpus_fma | fpus_all)
4230 fpuda | fpuda_div | fpuda_fma | fpuda_all)
4234 fpud | fpud_div | fpud_fma | fpud_all)
4239 echo "Unknown floating point type used in "\
4240 "--with-fpu=$with_fpu" 1>&2
4245 if [ -n "$flags_ok" ] \
4246 && ! grep -q -E "^ARC_CPU[[:blank:]]*\($new_cpu,[[:blank:]]*$flags_ok," \
4247 ${srcdir}/config/arc/arc-cpus.def
4249 echo "Unknown floating point type used in "\
4250 "--with-fpu=$with_fpu for cpu $new_cpu" 1>&2
4256 # Handle --with-multilib-list.
4257 if test "x${with_multilib_list}" != xdefault; then
4258 TM_MULTILIB_CONFIG="${with_multilib_list}"
4263 supported_defaults="cpu endian float"
4267 supported_defaults="arch cpu float tune fpu abi mode tls"
4268 for which in cpu tune arch; do
4269 # See if it matches a supported value
4270 eval "val=\$with_$which"
4271 if [ x"$val" != x ]; then
4272 cpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4273 -v cmd="chk$which $val" \
4274 ${srcdir}/config/arm/arm-cpus.in`
4275 if [ "$cpu" = "error" ]; then
4276 echo "Unknown target in --with-$which=$val" 1>&2
4280 eval "target_${which}_cname=$new_val"
4281 echo "For $val real value is $new_val"
4286 case "$with_float" in
4288 | soft | hard | softfp)
4292 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4297 # see if --with-fpu matches any of the supported FPUs
4298 if [ x"$with_fpu" != x ] ; then
4300 fpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4301 -v cmd="chkfpu $val" \
4302 ${srcdir}/config/arm/arm-cpus.in`
4303 if [ "$fpu" = "error" ]
4305 echo "Unknown target in --with-fpu=$val" 1>&2
4312 | apcs-gnu | atpcs | aapcs | iwmmxt | aapcs-linux )
4316 echo "Unknown ABI used in --with-abi=$with_abi"
4321 case "$with_mode" in
4327 echo "Unknown mode used in --with-mode=$with_mode"
4338 echo "Unknown TLS method used in --with-tls=$with_tls" 1>&2
4343 if test "x$with_arch" != x && test "x$with_cpu" != x; then
4344 echo "Switch \"--with-arch\" may not be used with switch \"--with-cpu\"" 1>&2
4348 if test "x$with_cpu" != x && test "x$with_tune" != x; then
4349 echo "Switch \"--with-tune\" may not be used with switch \"--with-cpu\"" 1>&2
4353 # Add extra multilibs
4354 if test "x$with_multilib_list" != x; then
4356 arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
4357 if test "x${arm_multilibs}" != xdefault ; then
4358 for arm_multilib in ${arm_multilibs}; do
4359 case ${arm_multilib} in
4361 tmake_profile_file="arm/t-multilib"
4362 tm_mlib_file="arm/arm-mlib.h"
4365 ml=`echo "X$arm_multilib" | sed '1s,^X@,,'`
4366 if test -f "${srcdir}/config/arm/${ml}"; then
4367 tmake_file="${tmake_file} arm/${ml}"
4369 echo "Error: ${ml} does not exist in ${srcdir}/config/arm" >&2
4374 echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2
4381 if test "x${tmake_profile_file}" != x ; then
4382 # arm/t-aprofile and arm/t-rmprofile are only
4383 # designed to work without any with-cpu,
4384 # with-arch, with-mode, with-fpu or with-float
4386 if test "x$with_arch" != x \
4387 || test "x$with_cpu" != x \
4388 || test "x$with_float" != x \
4389 || test "x$with_fpu" != x \
4390 || test "x$with_mode" != x ; then
4391 echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=${with_multilib_list}" 1>&2
4393 elif test "x$ml" != x ; then
4394 echo "Error: You cannot use builtin multilib profiles along with custom ones" 1>&2
4397 # But pass the default value for float-abi
4398 # through to the multilib selector
4400 tmake_file="${tmake_file} ${tmake_profile_file}"
4401 tm_file="$tm_file $tm_mlib_file"
4402 TM_MULTILIB_CONFIG="$with_multilib_list"
4405 target_cpu_cname=${target_cpu_cname:-arm7tdmi}
4406 with_cpu=${with_cpu:-$target_cpu_cname}
4410 supported_defaults=cpu
4415 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4421 fido-*-* | m68k*-*-*)
4422 supported_defaults="arch cpu"
4423 case "$with_arch" in
4425 m68k_arch_family="$with_arch"
4428 echo "Invalid --with-arch=$with_arch" 1>&2
4433 # We always have a $with_cpu setting here.
4435 "m68000" | "m68010" | "m68020" | "m68030" | "m68040" | "m68060")
4436 m68k_cpu_ident=$with_cpu
4439 m68k_cpu_ident=m68020
4440 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_40"
4443 m68k_cpu_ident=m68020
4444 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_60"
4447 # We need the C identifier rather than the string.
4448 m68k_cpu_ident=`awk -v arg="\"$with_cpu\"" \
4449 'BEGIN { FS="[ \t]*[,()][ \t]*" }; \
4450 $1 == "M68K_DEVICE" && $2 == arg { print $3 }' \
4451 ${srcdir}/config/m68k/m68k-devices.def`
4452 if [ x"$m68k_cpu_ident" = x ] ; then
4453 echo "Unknown CPU used in --with-cpu=$with_cpu" 1>&2
4456 with_cpu="mcpu=$with_cpu"
4462 supported_defaults="arch tune"
4464 for which in arch tune; do
4465 eval "val=\$with_$which"
4467 "" | fiji | gfx900 | gfx906 | gfx908 | gfx90a)
4471 echo "Unknown cpu used in --with-$which=$val." 1>&2
4476 [ "x$with_arch" = x ] && with_arch=fiji
4480 supported_defaults="arch schedule"
4482 case "$with_arch" in
4483 "" | 1.0 | 1.1 | 2.0)
4487 echo "Unknown architecture used in --with-arch=$with_arch" 1>&2
4492 case "$with_schedule" in
4493 "" | 700 | 7100 | 7100LC | 7200 | 7300 | 8000)
4497 echo "Unknown processor used in --with-schedule=$with_schedule." 1>&2
4503 i[34567]86-*-* | x86_64-*-*)
4504 supported_defaults="abi arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64"
4505 for which in arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64; do
4506 eval "val=\$with_$which"
4507 case " $x86_archs " in
4515 echo "CPU given in --with-$which=$val doesn't support 64bit mode." 1>&2
4524 if test x${val} != x; then
4525 case " $x86_64_archs " in
4527 # Disallow x86-64-v* for --with-cpu=/--with-tune=
4528 case "x$which$val" in
4529 xcpu*x86-64-v*|xtune*x86-64-v*)
4530 echo "Unknown CPU given in --with-$which=$val." 1>&2
4539 # Allow $x86_cpus --with-cpu=/--with-tune=
4542 case " $x86_cpus " in
4547 echo "Unknown CPU given in --with-$which=$val." 1>&2
4553 echo "Unknown CPU given in --with-$which=$val." 1>&2
4566 supported_defaults="abi arch tune riscv_attribute isa_spec"
4569 riscv-* | riscv32*) xlen=32 ;;
4570 riscv64*) xlen=64 ;;
4571 *) echo "Unsupported RISC-V target ${target}" 1>&2; exit 1 ;;
4574 case "${with_isa_spec}" in
4575 ""|default|20191213|201912)
4576 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20191213"
4577 with_isa_spec=20191213
4580 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_2P2"
4583 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20190608"
4584 with_isa_spec=20190608
4587 echo "--with-isa-spec only accept 2.2, 20191213, 201912, 20190608 or 201906" 1>&2
4591 case "${with_riscv_attribute}" in
4593 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4596 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=0"
4599 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4602 echo "--with-riscv-attribute=${with_riscv_attribute} is not supported. The argument must begin with yes, no or default." 1>&2
4608 # Infer arch from --with-arch, --target, and --with-abi.
4609 case "${with_arch}" in
4610 rv32e* | rv32i* | rv32g* | rv64i* | rv64g*)
4614 # Infer XLEN, but otherwise assume GC.
4615 case "${with_abi}" in
4616 ilp32e) with_arch="rv32e" ;;
4617 ilp32 | ilp32f | ilp32d) with_arch="rv32gc" ;;
4618 lp64 | lp64f | lp64d) with_arch="rv64gc" ;;
4619 *) with_arch="rv${xlen}gc" ;;
4623 echo "--with-arch=${with_arch} is not supported. The argument must begin with rv32e, rv32i, rv32g, rv64i, or rv64g." 1>&2
4627 PYTHON=`which python || which python3 || which python2`
4628 if test "x${PYTHON}" != x; then
4629 with_arch=`${PYTHON} ${srcdir}/config/riscv/arch-canonicalize -misa-spec=${with_isa_spec} ${with_arch}`
4631 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ARCH=${with_arch}"
4633 # Make sure --with-abi is valid. If it was not specified,
4634 # pick a default based on the ISA, preferring soft-float
4635 # unless the D extension is present.
4636 case "${with_abi}" in
4637 ilp32 | ilp32e | ilp32f | ilp32d | lp64 | lp64f | lp64d)
4640 case "${with_arch}" in
4641 rv32*d* | rv32g*) with_abi=ilp32d ;;
4642 rv32e*) with_abi=ilp32e ;;
4643 rv32*) with_abi=ilp32 ;;
4644 rv64*d* | rv64g*) with_abi=lp64d ;;
4645 rv64*) with_abi=lp64 ;;
4649 echo "--with-abi=${with_abi} is not supported" 1>&2
4653 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ABI=${with_abi}"
4655 # Make sure ABI and ISA are compatible.
4656 case "${with_abi},${with_arch}" in
4657 ilp32,rv32* | ilp32e,rv32e* \
4658 | ilp32f,rv32*f* | ilp32f,rv32g* \
4659 | ilp32d,rv32*d* | ilp32d,rv32g* \
4661 | lp64f,rv64*f* | lp64f,rv64g* \
4662 | lp64d,rv64*d* | lp64d,rv64g*)
4665 echo "--with-abi=${with_abi} is not supported for ISA ${with_arch}" 1>&2
4669 # Handle --with-multilib-generator.
4670 if test "x${with_multilib_generator}" != xdefault; then
4671 if test "x${with_multilib_list}" != xdefault; then
4672 echo "--with-multilib-list= can't used with --with-multilib-generator= at same time" 1>&2
4677 if ${srcdir}/config/riscv/multilib-generator \
4678 -misa-spec=${with_isa_spec} \
4679 `echo ${with_multilib_generator} | sed 's/;/ /g'`\
4680 > t-multilib-config;
4682 tmake_file="${tmake_file} riscv/t-withmultilib-generator"
4684 echo "invalid option for --with-multilib-generator" 1>&2
4689 echo "--with-multilib-generator= is not supported for ${target}, only supported for riscv*-*-elf*" 1>&2
4695 # Handle --with-multilib-list.
4696 if test "x${with_multilib_list}" != xdefault; then
4697 tmake_file="${tmake_file} riscv/t-withmultilib"
4699 case ${with_multilib_list} in
4700 ilp32 | ilp32f | ilp32d \
4701 | lp64 | lp64f | lp64d )
4702 TM_MULTILIB_CONFIG="${with_arch},${with_multilib_list}"
4705 echo "--with-multilib-list=${with_multilib_list} not supported."
4712 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"
4714 case ${with_float} in
4719 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4725 "" | single | double)
4729 echo "Unknown fpu type used in --with-fpu=$with_fpu" 1>&2
4739 echo "Unknown NaN encoding used in --with-nan=$with_nan" 1>&2
4744 case ${with_fp_32} in
4749 echo "Unknown FP mode used in --with-fp-32=$with_fp_32" 1>&2
4754 case ${with_odd_spreg_32} in
4756 with_odd_spreg_32="odd-spreg"
4759 with_odd_spreg_32="no-odd-spreg"
4765 echo "Unknown odd-spreg-32 type used in --with-odd-spreg-32=$with_odd_spreg_32" 1>&2
4771 "" | 32 | o64 | n32 | 64 | eabi)
4775 echo "Unknown ABI used in --with-abi=$with_abi" 1>&2
4780 case ${with_divide} in
4781 "" | breaks | traps)
4785 echo "Unknown division check type use in --with-divide=$with_divide" 1>&2
4790 case ${with_llsc} in
4801 echo "Unknown llsc type used in --with-llsc" 1>&2
4806 case ${with_mips_plt} in
4811 with_mips_plt=no-plt
4816 echo "Unknown --with-mips-plt argument: $with_mips_plt" 1>&2
4821 case ${with_synci} in
4831 echo "Unknown synci type used in --with-synci" 1>&2
4836 case ${with_lxc1_sxc1} in
4838 with_lxc1_sxc1=lxc1-sxc1
4841 with_lxc1_sxc1=no-lxc1-sxc1
4846 echo "Unknown lxc1-sxc1 type used in --with-lxc1-sxc1" 1>&2
4851 case ${with_madd4} in
4861 echo "Unknown madd4 type used in --with-madd4" 1>&2
4866 case ${with_compact_branches} in
4867 "" | never | always | optimal)
4870 echo "Unknown compact-branches policy used in --with-compact-branches" 1>&2
4885 echo "Unknown msa type used in --with-msa" 1>&2
4892 supported_defaults="abi arch tune fpu"
4896 abi_pattern abi_default \
4897 abiext_pattern abiext_default \
4898 arch_pattern arch_default \
4899 fpu_pattern fpu_default \
4900 tune_pattern tune_default \
4901 triplet_os triplet_abi
4903 # Infer ABI from the triplet.
4905 loongarch64-*-*-*f64)
4908 loongarch64-*-*-*f32)
4911 loongarch64-*-*-*sf)
4915 abi_pattern="lp64[dfs]"
4919 echo "Unsupported target ${target}." 1>&2
4925 abiext_default="base"
4927 # Get the canonical triplet (multiarch specifier).
4929 *-linux-gnu*) triplet_os="linux-gnu";;
4930 *-linux-musl*) triplet_os="linux-musl";;
4932 echo "Unsupported target ${target}." 1>&2
4937 # Perform initial sanity checks on --with-* options.
4938 case ${with_arch} in
4939 "" | loongarch64 | la464) ;; # OK, append here.
4941 if test x${host} != x${target}; then
4942 echo "--with-arch=native is illegal for cross-compiler." 1>&2
4947 echo "Please set a default value for \${with_arch}" \
4948 "according to your target triplet \"${target}\"." 1>&2
4952 echo "Unknown arch in --with-arch=$with_arch" 1>&2
4958 "" | lp64d | lp64f | lp64s) ;; # OK, append here.
4960 echo "Unsupported ABI given in --with-abi=$with_abi" 1>&2
4965 case ${with_abiext} in
4966 "" | base) ;; # OK, append here.
4968 echo "Unsupported ABI extention type $with_abiext" 1>&2
4974 "" | none | 32 | 64) ;; # OK, append here.
4976 # Convert "0" to "none" for upcoming checks.
4980 echo "Unknown fpu type in --with-fpu=$with_fpu" 1>&2
4986 # Set default value for with_abi.
4989 if test x${abi_default} != x; then
4990 with_abi=${abi_default}
4992 with_abi=${abi_pattern}
4997 if echo "${with_abi}" | grep -E "^${abi_pattern}$" > /dev/null; then
5000 echo "Incompatible options:" \
5001 "--with-abi=${with_abi} and --target=${target}." 1>&2
5008 "lp64d") triplet_abi="";;
5009 "lp64f") triplet_abi="f32";;
5010 "lp64s") triplet_abi="sf";;
5012 la_canonical_triplet="loongarch64-${triplet_os}${triplet_abi}"
5014 # Set default value for with_abiext (internal)
5015 case ${with_abiext} in
5017 if test x${abiext_default} != x; then
5018 with_abiext=${abiext_default}
5020 with_abiext=${abiext_pattern}
5025 if echo "${with_abiext}" | grep -E "^${abiext_pattern}$" > /dev/null; then
5028 echo "The ABI extension type \"${with_abiext}\"" \
5029 "is incompatible with --target=${target}." 1>&2
5036 # Infer ISA-related default options from the ABI: pass 1
5037 case ${with_abi}/${with_abiext} in
5039 # architectures that support lp64* ABI
5040 arch_pattern="native|loongarch64|la464"
5041 # default architecture for lp64* ABI
5042 arch_default="loongarch64"
5045 echo "Unsupported ABI type ${with_abi}/${with_abiext}." 1>&2
5050 # Infer ISA-related default options from the ABI: pass 2
5051 case ${with_abi}/${with_abiext} in
5060 fpu_pattern="none|32|64"
5064 echo "Unsupported ABI type ${with_abi}/${with_abiext}." 1>&2
5069 ## Set default value for with_arch.
5070 case ${with_arch} in
5072 if test x${arch_default} != x; then
5073 with_arch=${arch_default}
5075 with_arch=${arch_pattern}
5080 if echo "${with_arch}" | grep -E "^${arch_pattern}$" > /dev/null; then
5083 echo "${with_abi}/${with_abiext} ABI cannot be implemented with" \
5084 "--with-arch=${with_arch}." 1>&2
5090 ## Set default value for with_fpu.
5093 if test x${fpu_default} != x; then
5094 with_fpu=${fpu_default}
5096 with_fpu=${fpu_pattern}
5101 if echo "${with_fpu}" | grep -E "^${fpu_pattern}$" > /dev/null; then
5104 echo "${with_abi}/${with_abiext} ABI cannot be implemented with" \
5105 "--with-fpu=${with_fpu}." 1>&2
5112 # Infer default with_tune from with_arch: pass 1
5113 case ${with_arch} in
5116 tune_default="native"
5119 tune_pattern="loongarch64|la464"
5120 tune_default="la464"
5123 # By default, $with_tune == $with_arch
5124 tune_pattern="$with_arch"
5128 ## Set default value for with_tune.
5129 case ${with_tune} in
5131 if test x${tune_default} != x; then
5132 with_tune=${tune_default}
5134 with_tune=${tune_pattern}
5139 if echo "${with_tune}" | grep -E "^${tune_pattern}$" > /dev/null; then
5142 echo "Incompatible options: --with-tune=${with_tune}" \
5143 "and --with-arch=${with_arch}." 1>&2
5149 # Handle --with-multilib-list.
5150 if test x"${with_multilib_list}" = x \
5151 || test x"${with_multilib_list}" = xno \
5152 || test x"${with_multilib_list}" = xdefault \
5153 || test x"${enable_multilib}" != xyes; then
5155 with_multilib_list="${with_abi}/${with_abiext}"
5158 # Check if the configured default ABI combination is included in
5159 # ${with_multilib_list}.
5160 loongarch_multilib_list_sane=no
5162 # This one goes to TM_MULTILIB_CONFIG, for use in t-linux.
5163 loongarch_multilib_list_make=""
5165 # This one goes to tm_defines, for use in loongarch-driver.c.
5166 loongarch_multilib_list_c=""
5168 # ${with_multilib_list} should not contain whitespaces,
5169 # consecutive commas or slashes.
5170 if echo "${with_multilib_list}" \
5171 | grep -E -e "[[:space:]]" -e '[,/][,/]' -e '[,/]$' -e '^[,/]' > /dev/null; then
5172 echo "Invalid argument to --with-multilib-list." 1>&2
5176 unset component idx elem_abi_base elem_abi_ext elem_tmp
5177 for elem in $(echo "${with_multilib_list}" | tr ',' ' '); do
5181 component=$(echo "${elem}" | awk -F'/' '{print $'"${idx}"'}')
5185 # Component 1: Base ABI type
5186 case ${component} in
5187 lp64d) elem_tmp="ABI_BASE_LP64D,";;
5188 lp64f) elem_tmp="ABI_BASE_LP64F,";;
5189 lp64s) elem_tmp="ABI_BASE_LP64S,";;
5191 echo "Unknown base ABI \"${component}\" in --with-multilib-list." 1>&2
5195 loongarch_multilib_list_c="${loongarch_multilib_list_c}${elem_tmp}"
5196 loongarch_multilib_list_make="${loongarch_multilib_list_make}mabi=${component}"
5197 elem_abi_base="${component}"
5201 # Component 2: ABI extension type
5202 case ${component} in
5205 elem_tmp="ABI_EXT_BASE,"
5208 echo "Unknown ABI extension \"${component}\" in --with-multilib-list." 1>&2
5212 loongarch_multilib_list_c="${loongarch_multilib_list_c}${elem_tmp}"
5213 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5214 elem_abi_ext="${component}"
5218 # Component 3 and on: optional stuff
5219 case ${component} in
5221 # End of component list.
5225 echo "Unknown ABI \"${elem}\" in --with-multilib-list." 1>&2
5233 if test x${elem_abi_base} = x${with_abi} \
5234 && test x${elem_abi_ext} = x${with_abiext}; then
5235 loongarch_multilib_list_sane=yes
5237 loongarch_multilib_list_make="${loongarch_multilib_list_make},"
5240 # Check if the default ABI combination is in the default list.
5241 if test x${loongarch_multilib_list_sane} = xno; then
5242 if test x${with_abiext} = xbase; then
5245 with_abiext="/${with_abiext}"
5248 echo "Default ABI combination (${with_abi}${with_abiext})" \
5249 "not found in --with-multilib-list." 1>&2
5253 # Remove the excessive appending comma.
5254 loongarch_multilib_list_c=${loongarch_multilib_list_c%,}
5255 loongarch_multilib_list_make=${loongarch_multilib_list_make%,}
5259 supported_defaults="arch cpu nds32_lib float fpu_config"
5261 # process --with-arch
5262 case "${with_arch}" in
5264 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5268 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5271 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=1"
5274 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=2"
5278 echo "Cannot accept --with-arch=$with_arch, available values are: v2 v2j v3 v3m v3f v3s" 1>&2
5283 case "${with_cpu}" in
5287 n6 | n7 |n8 | e8 | s8 | n9 | n10 | d10 | n12 | n13 | n15)
5291 echo "Cannot accept --with-cpu=$with_cpu, available values are: n6 n7 n8 e8 s8 n9 n10 d10 n12 n13 n15" 1>&2
5296 # process --with-nds32-lib
5297 case "${with_nds32_lib}" in
5301 with_nds32_lib=ulibc
5304 with_nds32_lib=glibc
5307 with_nds32_lib=newlib
5308 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5314 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5318 # for the arch=v3f or arch=v3s under mculib toolchain,
5319 # we would like to set -fno-math-errno as default
5320 case "${with_arch}" in
5322 tm_defines="${tm_defines} TARGET_DEFAULT_NO_MATH_ERRNO=1"
5330 echo "Cannot accept --with-nds32-lib=$with_nds32_lib, available values are: newlib mculib glibc uclibc" 1>&2
5335 # process --with-float
5336 case "${with_float}" in
5341 echo "Cannot accept --with-float=$with_float, available values are: soft hard" 1>&2
5346 # process --with-config-fpu
5347 case "${with_config_fpu}" in
5352 echo "Cannot accept --with-config-fpu=$with_config_fpu, available values from 0 to 7" 1>&2
5360 supported_defaults="arch"
5361 case "$with_arch" in
5366 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5373 supported_defaults=arch
5374 TM_MULTILIB_CONFIG=$with_arch
5375 #TODO 'sm_[...]' list per 'nvptx-sm.def'.
5380 sm_35 | sm_53 | sm_70 | sm_75 | sm_80 )
5381 # OK, but we'd like 'sm_30', too.
5382 TM_MULTILIB_CONFIG="$TM_MULTILIB_CONFIG sm_30"
5385 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5391 powerpc*-*-* | rs6000-*-*)
5392 supported_defaults="abi cpu cpu_32 cpu_64 float tune tune_32 tune_64 advance_toolchain"
5394 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5395 eval "val=\$with_$which"
5397 default32 | default64)
5402 echo "$val only valid for --with-cpu and --with-tune." 1>&2
5406 with_which="with_$which"
5410 tm_defines="${tm_defines} CONFIG_PPC405CR"
5411 eval "with_$which=405"
5413 "" | common | native \
5414 | power[3456789] | power10 | power5+ | power6x \
5415 | powerpc | powerpc64 | powerpc64le \
5417 | 401 | 403 | 405 | 405fp | 440 | 440fp | 464 | 464fp \
5418 | 476 | 476fp | 505 | 601 | 602 | 603 | 603e | ec603e \
5419 | 604 | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 \
5420 | a2 | e300c[23] | 854[08] | e500mc | e500mc64 | e5500 | e6500 \
5421 | titan | 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5 | cell)
5425 echo "Unknown cpu used in --with-$which=$val." 1>&2
5432 "" | elfv1 | elfv2 )
5436 echo "Unknown ABI used in --with-abi=$with_abi"
5441 if test "x$with_advance_toolchain" != x; then
5442 if test -d "/opt/$with_advance_toolchain/." -a \
5443 -d "/opt/$with_advance_toolchain/bin/." -a \
5444 -d "/opt/$with_advance_toolchain/include/."; then
5446 tm_file="$tm_file ./advance-toolchain.h"
5447 (at="/opt/$with_advance_toolchain"
5448 echo "/* Use Advance Toolchain $at */"
5450 echo "#undef LINK_OS_NEW_DTAGS_SPEC"
5451 echo "#define LINK_OS_NEW_DTAGS_SPEC" \
5452 "\"--enable-new-dtags\""
5454 echo "#undef DYNAMIC_LINKER_PREFIX"
5455 echo "#define DYNAMIC_LINKER_PREFIX \"$at\""
5457 echo "#undef MD_EXEC_PREFIX"
5458 echo "#define MD_EXEC_PREFIX \"$at/bin/\""
5460 echo "#undef MD_STARTFILE_PREFIX"
5461 echo "#define MD_STARTFILE_PREFIX \"$prefix/lib/\""
5463 echo "#undef MD_STARTFILE_PREFIX_1"
5464 echo "#define MD_STARTFILE_PREFIX_1 \"$at/lib/\"") \
5465 > advance-toolchain.h
5467 echo "Unknown advance-toolchain $with_advance_toolchain"
5472 # Set up the default long double format if the user changed it.
5473 if test x$with_long_double_format = xieee; then
5474 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=1"
5476 elif test x$with_long_double_format = xibm; then
5477 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=0"
5482 supported_defaults="arch mode tune"
5484 for which in arch tune; do
5485 eval "val=\$with_$which"
5487 "" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | z15 | z16 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12 | arch13 | arch14 )
5491 echo "Unknown cpu used in --with-$which=$val." 1>&2
5497 case ${with_mode} in
5502 echo "Unknown architecture mode used in --with-mode=$with_mode." 1>&2
5508 sh[123456ble]*-*-* | sh-*-*)
5509 supported_defaults="cpu"
5510 case "`echo $with_cpu | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz- | sed s/sh/m/`" in
5511 "" | m1 | m2 | m2e | m3 | m3e | m4 | m4-single | m4-single-only | m4-nofpu )
5514 m2a | m2a-single | m2a-single-only | m2a-nofpu)
5516 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al)
5519 echo "Unknown CPU used in --with-cpu=$with_cpu, known values:" 1>&2
5520 echo "m1 m2 m2e m3 m3e m4 m4-single m4-single-only m4-nofpu" 1>&2
5521 echo "m4a m4a-single m4a-single-only m4a-nofpu m4al" 1>&2
5522 echo "m2a m2a-single m2a-single-only m2a-nofpu" 1>&2
5528 supported_defaults="cpu cpu_32 cpu_64 float tune tune_32 tune_64"
5530 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5531 eval "val=\$with_$which"
5533 "" | sparc | sparcv9 | sparc64 \
5535 | v8 | supersparc | hypersparc | leon | leon3 | leon3v7 \
5536 | sparclite | f930 | f934 | sparclite86x \
5537 | sparclet | tsc701 \
5538 | v9 | ultrasparc | ultrasparc3 | niagara | niagara2 \
5539 | niagara3 | niagara4 | niagara7 | m8)
5543 echo "Unknown cpu used in --with-$which=$val" 1>&2
5549 case ${with_float} in
5554 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
5561 supported_defaults="arch"
5563 case ${with_arch} in
5564 "" | c62x | c64x | c64x+ | c67x | c67x+ | c674x)
5568 echo "Unknown arch used in --with-arch=$with_arch." 1>&2
5575 supported_defaults=cpu
5577 "" | v850e | v850e1 | v850e2 | v850es | v850e2v3 | v850e3v5)
5581 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5587 supported_defaults="cpu"
5591 *) echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5598 # VxWorks support for shared libraries has to be requested explicitly,
5599 # so we can factor this part here:
5601 case "${target}-${enable_shared}" in
5603 tmake_file="${tmake_file} t-slibgcc"
5607 # Targets for which there is at least one VxWorks port should include
5608 # vxworks-dummy.h to allow safe references to various TARGET_VXWORKS kinds
5609 # of markers from other files in the port, including the vxworks*.h files to
5610 # distinguish VxWorks variants such as VxWorks 7 or 64).
5613 arm*-*-* | i[34567]86-*-* | mips*-*-* | powerpc*-*-* | sh*-*-* \
5614 | sparc*-*-* | x86_64-*-*)
5615 tm_file="vxworks-dummy.h ${tm_file}"
5619 # Set some miscellaneous flags for particular targets.
5620 target_cpu_default2=
5623 if test x"$target_cpu_cname" != x
5625 target_cpu_default2=$target_cpu_cname
5630 if test x$with_cpu = x
5632 echo "Don't know the target cpu" 1>&2
5635 target_cpu_default2="\\\"$with_cpu\\\""
5640 if test x$gas = xyes
5642 target_cpu_default2="MASK_GAS"
5646 fido*-*-* | m68k*-*-*)
5647 target_cpu_default2=$m68k_cpu_ident
5648 tmake_file="m68k/t-opts $tmake_file"
5649 if [ x"$m68k_arch_family" != x ]; then
5650 tmake_file="m68k/t-$m68k_arch_family $tmake_file"
5654 i[34567]86-*-darwin* | x86_64-*-darwin*)
5656 i[34567]86-*-linux* | x86_64-*-linux*)
5657 extra_objs="${extra_objs} gnu-property.o"
5658 tmake_file="$tmake_file i386/t-linux i386/t-gnu-property"
5660 i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu)
5661 tmake_file="$tmake_file i386/t-kfreebsd"
5664 tmake_file="$tmake_file i386/t-gnu"
5666 i[34567]86-*-msdosdjgpp*)
5667 tmake_file="${tmake_file} i386/t-djgpp"
5669 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
5671 i[34567]86-*-cygwin* | x86_64-*-cygwin*)
5673 i[34567]86-*-mingw* | x86_64-*-mingw*)
5675 i[34567]86-*-dragonfly* | x86_64-*-dragonfly*)
5677 i[34567]86-*-freebsd*)
5680 tmake_file="${tmake_file} i386/t-freebsd64"
5686 if test x$gnu_ld = xyes
5688 target_cpu_default2="MASK_SPLIT_ADDRESSES"
5692 tm_defines="TARGET_ENDIAN_DEFAULT=0 $tm_defines"
5695 if test x$with_arch != x; then
5696 default_mips_arch=$with_arch
5698 with_arch=$default_mips_arch
5700 if test x$with_abi != x; then
5701 default_mips_abi=$with_abi
5703 case ${default_mips_arch} in
5704 mips1) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS1" ;;
5705 mips2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS2" ;;
5706 mips3) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3" ;;
5707 mips4) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS4" ;;
5708 mips32) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32" ;;
5709 mips32r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2" ;;
5710 mips32r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6" ;;
5711 mips64) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64" ;;
5712 mips64r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2" ;;
5713 mips64r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6" ;;
5715 case ${default_mips_abi} in
5716 32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_32" ;;
5717 o64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_O64" ;;
5718 n32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_N32" ;;
5719 64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_64" ;;
5720 eabi) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_EABI" ;;
5722 tmake_file="mips/t-mips $tmake_file"
5726 # Export canonical triplet.
5727 tm_defines="${tm_defines} LA_MULTIARCH_TRIPLET=${la_canonical_triplet}"
5729 # Define macro LA_DISABLE_MULTILIB if --disable-multilib
5730 tm_defines="${tm_defines} TM_MULTILIB_LIST=${loongarch_multilib_list_c}"
5731 if test x$enable_multilib = xyes; then
5732 TM_MULTILIB_CONFIG="${loongarch_multilib_list_make}"
5734 tm_defines="${tm_defines} LA_DISABLE_MULTILIB"
5737 # Let --with- flags initialize the enum variables from loongarch.opt.
5738 # See macro definitions from loongarch-opts.h and loongarch-cpu.h.
5739 case ${with_arch} in
5740 native) tm_defines="${tm_defines} DEFAULT_CPU_ARCH=CPU_NATIVE" ;;
5741 la464) tm_defines="${tm_defines} DEFAULT_CPU_ARCH=CPU_LA464" ;;
5742 loongarch64) tm_defines="${tm_defines} DEFAULT_CPU_ARCH=CPU_LOONGARCH64" ;;
5745 case ${with_tune} in
5746 native) tm_defines="${tm_defines} DEFAULT_CPU_TUNE=CPU_NATIVE" ;;
5747 la464) tm_defines="${tm_defines} DEFAULT_CPU_TUNE=CPU_LA464" ;;
5748 loongarch64) tm_defines="${tm_defines} DEFAULT_CPU_TUNE=CPU_LOONGARCH64" ;;
5752 lp64d) tm_defines="${tm_defines} DEFAULT_ABI_BASE=ABI_BASE_LP64D" ;;
5753 lp64f) tm_defines="${tm_defines} DEFAULT_ABI_BASE=ABI_BASE_LP64F" ;;
5754 lp64s) tm_defines="${tm_defines} DEFAULT_ABI_BASE=ABI_BASE_LP64S" ;;
5757 case ${with_abiext} in
5758 base) tm_defines="${tm_defines} DEFAULT_ABI_EXT=ABI_EXT_BASE" ;;
5762 none) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_NOFPU" ;;
5763 32) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU32" ;;
5764 64) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU64" ;;
5767 tmake_file="loongarch/t-loongarch $tmake_file"
5770 powerpc*-*-* | rs6000-*-*)
5771 # FIXME: The PowerPC port uses the value set at compile time,
5772 # although it's only cosmetic.
5773 if test "x$with_cpu" != x
5775 target_cpu_default2="\\\"$with_cpu\\\""
5777 out_file="${cpu_type}/${cpu_type}.cc"
5778 c_target_objs="${c_target_objs} ${cpu_type}-c.o"
5779 cxx_target_objs="${cxx_target_objs} ${cpu_type}-c.o"
5780 d_target_objs="${d_target_objs} ${cpu_type}-d.o"
5781 tmake_file="${cpu_type}/t-${cpu_type} ${tmake_file}"
5784 sh[123456ble]*-*-* | sh-*-*)
5785 c_target_objs="${c_target_objs} sh-c.o"
5786 cxx_target_objs="${cxx_target_objs} sh-c.o"
5790 # Some standard aliases.
5795 xsparcv9 | xsparc64)
5800 if test x$with_tune = x ; then
5811 # The SPARC port checks this value at compile-time.
5812 target_cpu_default2="TARGET_CPU_$with_cpu"
5816 case "x$with_cpu" in
5819 xv850e | xv850e1 | xv850e2 | xv850e2v3 | xv850e3v5)
5820 target_cpu_default2="TARGET_CPU_$with_cpu"
5823 target_cpu_default2="TARGET_CPU_v850e1"
5828 target_cpu_default2="TARGET_CPU_$with_cpu"
5833 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"
5834 for option in $all_defaults
5836 eval "val=\$with_"`echo $option | sed s/-/_/g`
5837 if test -n "$val"; then
5838 case " $supported_defaults " in
5842 echo "This target does not support --with-$option." 2>&1
5843 echo "Valid --with options are: $supported_defaults" 2>&1
5850 t="{ \"$option\", \"$val\" }"
5852 t="${t}, { \"$option\", \"$val\" }"
5859 configure_default_options="{ { NULL, NULL} }"
5861 configure_default_options="{ ${t} }"
5864 if test "$target_cpu_default2" != ""
5866 if test "$target_cpu_default" != ""
5868 target_cpu_default="(${target_cpu_default}|${target_cpu_default2})"
5870 target_cpu_default=$target_cpu_default2
5875 i[34567]86-*-* | x86_64-*-*)
5876 if test x$enable_as_accelerator = xyes; then
5877 extra_programs="mkoffload\$(exeext)"