1 # SPDX-License-Identifier: GPL-3.0-or-later
2 # GCC target-specific configuration file.
3 # Copyright (C) 1997-2022 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 aarch64-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"
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
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 csky/t-csky-linux"
1649 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
1650 # Force .init_array support. The configure script cannot always
1651 # automatically detect that GAS supports it, yet we require it.
1652 gcc_cv_initfini_array=yes
1654 csky-*-linux-uclibc*)
1655 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
1656 default_use_cxa_atexit=no
1659 echo "Unknown target $target"
1665 echo "Unknown target $target"
1670 epiphany-*-elf | epiphany-*-rtems*)
1671 tm_file="elfos.h ${tm_file}"
1672 tmake_file="${tmake_file} epiphany/t-epiphany"
1675 tm_file="${tm_file} epiphany/rtems.h rtems.h newlib-stdint.h"
1678 tm_file="${tm_file} newlib-stdint.h"
1681 extra_options="${extra_options} fused-madd.opt"
1682 extra_objs="${extra_objs} mode-switch-use.o resolve-sw-modes.o"
1683 tm_defines="${tm_defines} EPIPHANY_STACK_OFFSET=${with_stack_offset:-8}"
1684 extra_headers="epiphany_intrinsics.h"
1687 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1690 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1691 tmake_file=frv/t-frv
1694 tm_file="elfos.h ${tm_file} \
1695 gnu-user.h linux.h glibc-stdint.h frv/linux.h"
1696 tmake_file="${tmake_file} frv/t-frv frv/t-linux"
1701 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1702 tmake_file="${tmake_file} ft32/t-ft32"
1705 tm_file="elfos.h gcn/gcn-hsa.h gcn/gcn.h newlib-stdint.h"
1706 tmake_file="gcn/t-gcn-hsa"
1707 native_system_header_dir=/include
1708 extra_modes=gcn/gcn-modes.def
1709 extra_objs="${extra_objs} gcn-tree.o"
1710 extra_gcc_objs="driver-gcn.o"
1712 x86_64*-*-linux-gnu )
1713 if test "$ac_cv_search_dlopen" != no; then
1714 extra_programs="${extra_programs} gcn-run\$(exeext)"
1718 if test x$enable_as_accelerator = xyes; then
1719 extra_programs="${extra_programs} mkoffload\$(exeext)"
1720 tm_file="${tm_file} gcn/offload.h"
1722 # Force .init_array support.
1723 gcc_cv_initfini_array=yes
1729 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1730 tmake_file="${tmake_file} moxie/t-moxie"
1735 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h moxie/uclinux.h"
1736 tmake_file="${tmake_file} moxie/t-moxie"
1739 tmake_file="${tmake_file} moxie/t-moxie"
1740 tm_file="moxie/moxie.h elfos.h moxie/rtems.h rtems.h newlib-stdint.h"
1745 tm_file="${tm_file} elfos.h moxie/moxiebox.h newlib-stdint.h"
1746 tmake_file="${tmake_file} moxie/t-moxiebox"
1749 tmake_file="h8300/t-h8300"
1750 tm_file="h8300/h8300.h elfos.h newlib-stdint.h h8300/elf.h"
1753 tmake_file="${tmake_file} h8300/t-h8300 h8300/t-linux"
1754 tm_file="h8300/h8300.h elfos.h gnu-user.h linux.h glibc-stdint.h h8300/linux.h"
1757 target_cpu_default="MASK_PA_11|MASK_PA_20"
1758 tm_file="pa/pa64-start.h ${tm_file} elfos.h gnu-user.h linux.h \
1759 glibc-stdint.h pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h \
1761 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1762 d_target_objs="${d_target_objs} pa-d.o"
1766 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS|MASK_CALLER_COPIES"
1767 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h pa/pa-linux.h \
1768 pa/pa32-regs.h pa/pa32-linux.h"
1769 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1770 d_target_objs="${d_target_objs} pa-d.o"
1773 target_cpu_default="MASK_PA_11"
1774 tm_file="${tm_file} elfos.h openbsd.h openbsd-stdint.h openbsd-libpthread.h \
1775 pa/pa-openbsd.h pa/pa32-regs.h pa/pa32-openbsd.h"
1776 extra_options="${extra_options} openbsd.opt"
1777 tmake_file="pa/t-pa"
1778 d_target_objs="${d_target_objs} pa-d.o"
1783 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS"
1784 tm_file="${tm_file} elfos.h ${nbsd_tm_file} \
1785 pa/pa-netbsd.h pa/pa32-regs.h pa/pa32-netbsd.h"
1786 tmake_file="${tmake_file}"
1787 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
1788 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1791 target_cpu_default="MASK_PA_11|MASK_PA_20"
1792 if test x$gnu_ld = xyes
1794 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
1796 tm_file="pa/pa64-start.h ${tm_file} elfos.h \
1797 pa/pa64-regs.h pa/pa-hpux.h pa/pa-hpux1010.h \
1801 tm_file="${tm_file} pa/pa-hpux1111.h pa/pa-64.h pa/pa64-hpux.h"
1802 extra_options="${extra_options} pa/pa-hpux1111.opt"
1805 tm_file="${tm_file} pa/pa-hpux1131.h pa/pa-64.h pa/pa64-hpux.h"
1806 extra_options="${extra_options} pa/pa-hpux1131.opt"
1809 tm_file="${tm_file} pa/pa-64.h pa/pa64-hpux.h"
1812 extra_options="${extra_options} pa/pa-hpux.opt \
1813 pa/pa-hpux1010.opt pa/pa64-hpux.opt hpux11.opt"
1814 tmake_file="pa/t-pa t-slibgcc"
1815 d_target_objs="${d_target_objs} pa-d.o"
1816 case x${enable_threads} in
1824 use_gcc_stdint=provide
1825 tm_file="${tm_file} hpux-stdint.h"
1829 tm_file="${tm_file} hpux-stdint.h"
1833 i[34567]86-*-darwin1[89]* | i[34567]86-*-darwin2*)
1834 echo "Error: 32bit target is not supported after Darwin17" 1>&2
1836 i[34567]86-*-darwin*)
1838 # Baseline choice for a machine that allows m64 support.
1839 with_cpu=${with_cpu:-core2}
1840 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch t-slibgcc"
1841 tm_file="${cpu_type}/darwin32-biarch.h ${tm_file} "
1843 x86_64-*-darwin1[89]* | x86_64-*-darwin2*)
1845 tm_defines="${tm_defines} TARGET_64BIT_DEFAULT=(OPTION_MASK_ISA_64BIT|OPTION_MASK_ABI_64)"
1846 tm_defines="${tm_defines} TARGET_BI_ARCH=0"
1847 with_cpu=${with_cpu:-core2}
1848 tmake_file="${tmake_file} t-slibgcc"
1851 with_cpu=${with_cpu:-core2}
1852 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
1853 tm_file="${cpu_type}/darwin64-biarch.h ${tm_file} "
1855 i[34567]86-*-elfiamcu)
1856 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/iamcu.h"
1859 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h"
1862 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h"
1865 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"
1868 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/rdos.h"
1871 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"
1872 tmake_file="i386/t-i386elf t-svr4"
1874 i[34567]86-*-dragonfly*)
1875 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h dragonfly.h dragonfly-stdint.h i386/dragonfly.h"
1876 tmake_file="${tmake_file} i386/t-crtstuff"
1878 x86_64-*-dragonfly*)
1879 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h dragonfly.h dragonfly-stdint.h i386/x86-64.h i386/dragonfly.h"
1880 tmake_file="${tmake_file} i386/t-crtstuff"
1882 i[34567]86-*-freebsd*)
1883 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
1886 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"
1888 i[34567]86-*-netbsdelf*)
1889 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${nbsd_tm_file} i386/netbsd-elf.h"
1890 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1893 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${nbsd_tm_file} i386/x86-64.h i386/netbsd64.h"
1894 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1896 i[34567]86-*-openbsd*)
1897 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
1898 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/openbsdelf.h"
1899 extra_options="${extra_options} openbsd.opt"
1904 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
1905 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/x86-64.h i386/openbsdelf.h"
1906 extra_options="${extra_options} openbsd.opt"
1910 i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu)
1911 # Intel 80386's running GNU/*
1912 # with ELF format using glibc 2
1913 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h gnu-user.h glibc-stdint.h"
1915 i[34567]86-*-linux*)
1916 tm_file="${tm_file} linux.h linux-android.h"
1917 extra_options="${extra_options} linux-android.opt"
1918 if test x$enable_targets = xall; then
1919 tm_file="${tm_file} i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h i386/linux-common.h i386/linux64.h"
1920 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
1921 tmake_file="${tmake_file} i386/t-linux64"
1922 x86_multilibs="${with_multilib_list}"
1923 if test "$x86_multilibs" = "default"; then
1924 x86_multilibs="m64,m32"
1926 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
1927 for x86_multilib in ${x86_multilibs}; do
1928 case ${x86_multilib} in
1930 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
1933 echo "--with-multilib-list=${x86_with_multilib} not supported."
1937 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1939 if test x$with_cpu = x; then
1940 if test x$with_cpu_64 = x; then
1944 case " $x86_cpus $x86_archs $x86_64_archs " in
1948 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
1949 echo "$x86_cpus $x86_archs $x86_64_archs " 1>&2
1955 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h i386/linux-common.h i386/linux.h"
1958 i[34567]86-*-kfreebsd*-gnu)
1959 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kfreebsd-gnu.h i386/kfreebsd-gnu.h"
1961 i[34567]86-*-kopensolaris*-gnu)
1962 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kopensolaris-gnu.h i386/kopensolaris-gnu.h"
1965 tm_file="$tm_file i386/gnu-user-common.h i386/gnu-user.h gnu.h i386/gnu.h"
1969 x86_64-*-linux* | x86_64-*-kfreebsd*-gnu)
1970 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h gnu-user.h glibc-stdint.h \
1971 i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h"
1974 tm_file="${tm_file} linux.h linux-android.h i386/linux-common.h i386/linux64.h"
1975 extra_options="${extra_options} linux-android.opt"
1977 x86_64-*-kfreebsd*-gnu)
1978 tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu64.h"
1981 tmake_file="${tmake_file} i386/t-linux64"
1982 x86_multilibs="${with_multilib_list}"
1983 if test "$x86_multilibs" = "default"; then
1986 x86_multilibs="mx32"
1989 x86_multilibs="m64,m32"
1993 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
1994 for x86_multilib in ${x86_multilibs}; do
1995 case ${x86_multilib} in
1997 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
2000 echo "--with-multilib-list=${x86_with_multilib} not supported."
2004 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2006 i[34567]86-pc-msdosdjgpp*)
2007 xm_file=i386/xm-djgpp.h
2008 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/djgpp.h i386/djgpp-stdint.h"
2009 native_system_header_dir=/dev/env/DJDIR/include
2010 extra_options="${extra_options} i386/djgpp.opt"
2015 i[34567]86-*-lynxos*)
2017 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h i386/lynx.h lynx.h"
2018 tmake_file="${tmake_file} t-lynx"
2019 extra_options="${extra_options} lynx.opt"
2024 i[34567]86-*-nto-qnx*)
2025 tm_file="${tm_file} i386/att.h tm-dwarf2.h elfos.h i386/unix.h i386/nto.h"
2026 extra_options="${extra_options} i386/nto.opt"
2030 i[34567]86-*-rtems*)
2031 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h i386/i386elf.h i386/rtemself.h rtems.h newlib-stdint.h"
2032 tmake_file="${tmake_file} i386/t-rtems"
2034 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
2035 # Set default arch_32 to pentium4, tune_32 to generic like the other
2036 # i386 targets, although config.guess defaults to i386-pc-solaris2*.
2037 with_arch_32=${with_arch_32:-pentium4}
2038 with_tune_32=${with_tune_32:-generic}
2039 tm_file="${tm_file} i386/unix.h i386/att.h ${sol2_tm_file_head} i386/x86-64.h ${sol2_tm_file_tail}"
2040 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2041 tmake_file="$tmake_file i386/t-sol2"
2043 if test x$with_cpu = x; then
2044 if test x$with_cpu_64 = x; then
2048 case " $x86_cpus $x86_archs $x86_64_archs " in
2052 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2053 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2059 i[4567]86-wrs-vxworks*|x86_64-wrs-vxworks7*)
2060 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
2064 tm_file="${tm_file} i386/x86-64.h"
2067 tm_file="${tm_file} vx-common.h"
2070 tm_file="${tm_file} vxworksae.h i386/vxworks.h i386/vxworksae.h"
2071 tmake_file="${tmake_file} i386/t-vxworks i386/t-vxworksae"
2074 tm_file="${tm_file} vxworks.h i386/vxworks.h"
2075 tmake_file="${tmake_file} i386/t-vxworks"
2079 i[34567]86-*-cygwin*)
2080 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h i386/cygwin.h i386/cygwin-stdint.h"
2081 xm_file=i386/xm-cygwin.h
2082 tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
2083 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2084 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
2085 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2086 c_target_objs="${c_target_objs} msformat-c.o"
2087 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2088 d_target_objs="${d_target_objs} cygwin-d.o"
2089 target_has_targetdm="yes"
2090 if test x$enable_threads = xyes; then
2093 default_use_cxa_atexit=yes
2098 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"
2099 xm_file=i386/xm-cygwin.h
2100 tmake_file="${tmake_file} i386/t-cygming t-slibgcc i386/t-cygwin-w64"
2101 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2102 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
2103 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2104 c_target_objs="${c_target_objs} msformat-c.o"
2105 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2106 d_target_objs="${d_target_objs} cygwin-d.o"
2107 target_has_targetdm="yes"
2108 if test x$enable_threads = xyes; then
2111 default_use_cxa_atexit=yes
2113 tm_defines="${tm_defines} TARGET_CYGWIN64=1"
2115 i[34567]86-*-mingw* | x86_64-*-mingw*)
2116 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h"
2117 xm_file=i386/xm-mingw32.h
2118 c_target_objs="${c_target_objs} winnt-c.o"
2119 cxx_target_objs="${cxx_target_objs} winnt-c.o"
2120 d_target_objs="${d_target_objs} winnt-d.o"
2121 target_has_targetcm="yes"
2122 target_has_targetdm="yes"
2124 x86_64-*-* | *-w64-*)
2130 if test x$enable_threads = xposix ; then
2131 tm_file="${tm_file} i386/mingw-pthread.h"
2133 if test x$enable_threads = xmcf ; then
2134 tm_file="${tm_file} i386/mingw-mcfgthread.h"
2136 tm_file="${tm_file} i386/mingw32.h"
2137 # This makes the logic if mingw's or the w64 feature set has to be used
2140 user_headers_inc_next_post="${user_headers_inc_next_post} float.h"
2141 user_headers_inc_next_pre="${user_headers_inc_next_pre} stddef.h stdarg.h"
2142 tm_file="${tm_file} i386/mingw-w64.h"
2143 if test x$enable_targets = xall; then
2144 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2145 if test x$with_cpu = x; then
2146 if test x$with_cpu_64 = x; then
2150 case " $x86_cpus $x86_archs $x86_64_archs " in
2154 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2155 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2165 tm_file="${tm_file} i386/mingw-stdint.h"
2166 tmake_file="${tmake_file} t-winnt i386/t-cygming t-slibgcc"
2169 tmake_file="${tmake_file} i386/t-mingw-w64"
2172 tmake_file="${tmake_file} i386/t-mingw-w32"
2175 native_system_header_dir=/mingw/include
2176 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2177 extra_options="${extra_options} i386/cygming.opt i386/mingw.opt"
2180 extra_options="${extra_options} i386/mingw-w64.opt"
2185 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2186 c_target_objs="${c_target_objs} msformat-c.o"
2187 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2190 default_use_cxa_atexit=yes
2192 case ${enable_threads} in
2202 tm_file="${tm_file} i386/crtdll.h"
2204 *mingw32msv* | *mingw*)
2209 tmake_file="${tmake_file} i386/t-x86_64-elf"
2210 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h fuchsia.h"
2213 tm_file="${tm_file} elfos.h newlib-stdint.h ia64/sysv4.h ia64/elf.h"
2214 tmake_file="ia64/t-ia64"
2215 target_cpu_default="0"
2216 if test x$gas = xyes
2218 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2220 if test x$gnu_ld = xyes
2222 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
2226 tm_file="${tm_file} elfos.h ${fbsd_tm_file} ia64/sysv4.h ia64/freebsd.h"
2227 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2228 tmake_file="${tmake_file} ia64/t-ia64"
2231 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h ia64/sysv4.h ia64/linux.h"
2232 tmake_file="${tmake_file} ia64/t-ia64 ia64/t-linux t-libunwind"
2233 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2236 tm_file="${tm_file} elfos.h ia64/sysv4.h ia64/hpux.h"
2237 tmake_file="ia64/t-ia64 ia64/t-hpux t-slibgcc"
2238 target_cpu_default="MASK_GNU_AS"
2239 case x$enable_threads in
2245 c_target_objs="ia64-c.o"
2246 cxx_target_objs="ia64-c.o"
2247 extra_options="${extra_options} ia64/ilp32.opt hpux11.opt"
2249 tm_file="${tm_file} hpux-stdint.h"
2252 tm_file="${tm_file} ia64/hpux-unix2003.h"
2257 tm_file="${tm_file} elfos.h ia64/sysv4.h vms/vms.h ia64/vms.h"
2258 tmake_file="${tmake_file} ia64/t-ia64"
2259 target_cpu_default="0"
2260 if test x$gas = xyes
2262 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2264 extra_options="${extra_options} ia64/vms.opt"
2267 tm_file="elfos.h newlib-stdint.h iq2000/iq2000.h"
2268 out_file=iq2000/iq2000.cc
2269 md_file=iq2000/iq2000.md
2272 tm_file="elfos.h ${tm_file} newlib-stdint.h"
2273 tmake_file="${tmake_file} lm32/t-lm32"
2276 tm_file="elfos.h ${tm_file} lm32/rtems.h rtems.h newlib-stdint.h"
2277 tmake_file="${tmake_file} lm32/t-lm32"
2278 tmake_file="${tmake_file} lm32/t-rtems"
2281 tm_file="elfos.h ${tm_file} gnu-user.h linux.h lm32/uclinux-elf.h"
2282 tmake_file="${tmake_file} lm32/t-lm32"
2285 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2288 tm_file="elfos.h newlib-stdint.h m32r/little.h ${tm_file}"
2290 m68k-*-elf* | fido-*-elf*)
2293 # Check that $with_cpu makes sense.
2298 echo "Cannot accept --with-cpu=$with_cpu"
2305 default_m68k_cpu=68020
2309 tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h elfos.h newlib-stdint.h m68k/m68kemb.h m68k/m68020-elf.h"
2310 tm_defines="${tm_defines} MOTOROLA=1"
2311 tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-m68kelf"
2312 # Add multilibs for targets other than fido.
2317 tmake_file="$tmake_file m68k/t-mlibs"
2322 default_m68k_cpu=68020
2324 tm_file="${tm_file} elfos.h ${nbsd_tm_file} m68k/netbsd-elf.h"
2325 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2326 tm_defines="${tm_defines} MOTOROLA=1 CHAR_FAST8=1 SHORT_FAST16=1"
2328 m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux
2329 # with uClibc, using the new GNU/Linux-style
2331 default_m68k_cpu=68020
2333 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"
2334 extra_options="${extra_options} m68k/uclinux.opt"
2335 tm_defines="${tm_defines} MOTOROLA=1"
2336 tmake_file="m68k/t-floatlib m68k/t-uclinux m68k/t-mlibs"
2338 m68k-*-linux*) # Motorola m68k's running GNU/Linux
2339 # with ELF format using glibc 2
2340 # aka the GNU/Linux C library 6.
2341 default_m68k_cpu=68020
2343 with_arch=${with_arch:-m68k}
2344 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h m68k/linux.h ./sysroot-suffix.h"
2345 extra_options="${extra_options} m68k/ieee.opt"
2346 tm_defines="${tm_defines} MOTOROLA=1"
2347 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-linux m68k/t-mlibs"
2350 default_m68k_cpu=68020
2352 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-m68kbare m68k/t-crtstuff m68k/t-rtems m68k/t-mlibs"
2353 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"
2354 tm_defines="${tm_defines} MOTOROLA=1"
2357 tm_file="elfos.h newlib-stdint.h ${tm_file} mcore/mcore-elf.h"
2358 tmake_file=mcore/t-mcore
2364 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2367 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2370 tm_file="${tm_file} gnu-user.h linux.h microblaze/linux.h"
2371 tm_file="${tm_file} glibc-stdint.h"
2372 c_target_objs="${c_target_objs} microblaze-c.o"
2373 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2374 tmake_file="${tmake_file} microblaze/t-microblaze"
2375 tmake_file="${tmake_file} microblaze/t-microblaze-linux"
2377 microblaze*-*-rtems*)
2380 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2383 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2386 tm_file="${tm_file}"
2387 tm_file="${tm_file} microblaze/rtems.h rtems.h newlib-stdint.h"
2388 c_target_objs="${c_target_objs} microblaze-c.o"
2389 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2390 tmake_file="${tmake_file} microblaze/t-microblaze"
2391 tmake_file="${tmake_file} microblaze/t-rtems"
2396 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2399 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2402 tm_file="${tm_file} newlib-stdint.h"
2403 c_target_objs="${c_target_objs} microblaze-c.o"
2404 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2405 tmake_file="${tmake_file} microblaze/t-microblaze"
2408 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} riscv/linux.h"
2409 case "x${enable_multilib}" in
2411 xyes) tmake_file="${tmake_file} riscv/t-linux-multilib" ;;
2412 *) echo "Unknown value for enable_multilib"; exit 1
2414 tmake_file="${tmake_file} riscv/t-riscv riscv/t-linux"
2418 riscv32be-*|riscv64be-*)
2419 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2422 # Force .init_array support. The configure script cannot always
2423 # automatically detect that GAS supports it, yet we require it.
2424 gcc_cv_initfini_array=yes
2426 riscv*-*-elf* | riscv*-*-rtems*)
2427 tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h"
2430 tm_file="${tm_file} riscv/rtems.h rtems.h"
2431 tmake_file="${tmake_file} riscv/t-rtems"
2434 if test "x${with_multilib_generator}" == xdefault; then
2435 case "x${enable_multilib}" in
2437 xyes) tmake_file="${tmake_file} riscv/t-elf-multilib" ;;
2438 *) echo "Unknown value for enable_multilib"; exit 1
2442 tmake_file="${tmake_file} riscv/t-riscv"
2446 riscv32be-*|riscv64be-*)
2447 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2450 # Force .init_array support. The configure script cannot always
2451 # automatically detect that GAS supports it, yet we require it.
2452 gcc_cv_initfini_array=yes
2455 tm_file="${tm_file} elfos.h ${fbsd_tm_file} riscv/freebsd.h"
2456 tmake_file="${tmake_file} riscv/t-riscv"
2460 riscv32be-*|riscv64be-*)
2461 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2464 # Force .init_array support. The configure script cannot always
2465 # automatically detect that GAS supports it, yet we require it.
2466 gcc_cv_initfini_array=yes
2469 loongarch*-*-linux*)
2470 tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file}"
2471 tm_file="${tm_file} loongarch/gnu-user.h loongarch/linux.h"
2472 extra_options="${extra_options} linux-android.opt"
2473 tmake_file="${tmake_file} loongarch/t-linux"
2477 # Force .init_array support. The configure script cannot always
2478 # automatically detect that GAS supports it, yet we require it.
2479 gcc_cv_initfini_array=yes
2482 mips*-*-netbsd*) # NetBSD/mips, either endian.
2483 target_cpu_default="MASK_ABICALLS"
2484 tm_file="elfos.h ${tm_file} mips/elf.h ${nbsd_tm_file} mips/netbsd.h"
2485 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2488 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"
2489 extra_options="${extra_options} linux-android.opt"
2490 tmake_file="${tmake_file} mips/t-img-linux"
2491 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2492 with_arch_32="mips32r6"
2493 with_arch_64="mips64r6"
2498 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"
2499 extra_options="${extra_options} linux-android.opt"
2500 tmake_file="${tmake_file} mips/t-mti-linux"
2501 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2502 with_arch_32="mips32r2"
2503 with_arch_64="mips64r2"
2507 mips*-*-linux*) # Linux MIPS, either endian.
2508 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"
2509 extra_options="${extra_options} linux-android.opt"
2512 default_mips_arch=mips32r6
2515 default_mips_arch=mips32r2
2518 default_mips_arch=mips32
2520 mips64el-st-linux-gnu)
2521 default_mips_abi=n32
2522 tm_file="${tm_file} mips/st.h"
2523 tmake_file="${tmake_file} mips/t-st"
2524 enable_mips_multilibs="yes"
2526 mips64octeon*-*-linux*)
2527 default_mips_abi=n32
2528 tm_defines="${tm_defines} MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\""
2529 target_cpu_default=MASK_SOFT_FLOAT_ABI
2530 enable_mips_multilibs="yes"
2532 mipsisa64r6*-*-linux-gnuabi64)
2534 default_mips_arch=mips64r6
2535 enable_mips_multilibs="yes"
2537 mipsisa64r6*-*-linux*)
2538 default_mips_abi=n32
2539 default_mips_arch=mips64r6
2540 enable_mips_multilibs="yes"
2542 mipsisa64r2*-*-linux-gnuabi64)
2544 default_mips_arch=mips64r2
2545 enable_mips_multilibs="yes"
2547 mipsisa64r2*-*-linux*)
2548 default_mips_abi=n32
2549 default_mips_arch=mips64r2
2550 enable_mips_multilibs="yes"
2552 mips64*-*-linux-gnuabi64 | mipsisa64*-*-linux-gnuabi64)
2554 enable_mips_multilibs="yes"
2556 mips64*-*-linux* | mipsisa64*-*-linux*)
2557 default_mips_abi=n32
2558 enable_mips_multilibs="yes"
2561 if test x$enable_targets = xall; then
2562 enable_mips_multilibs="yes"
2564 if test x$enable_mips_multilibs = xyes; then
2565 tmake_file="${tmake_file} mips/t-linux64"
2569 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2570 tmake_file="mips/t-mti-elf"
2571 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2572 with_arch_32="mips32r2"
2573 with_arch_64="mips64r2"
2576 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2577 tmake_file="mips/t-img-elf"
2578 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2579 with_arch_32="mips32r6"
2580 with_arch_64="mips64r6"
2583 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h"
2584 tmake_file="mips/t-sde"
2585 extra_options="${extra_options} mips/sde.opt"
2586 case "${with_newlib}" in
2588 # newlib / libgloss.
2591 # MIPS toolkit libraries.
2592 tm_file="$tm_file mips/sdemtk.h"
2593 tmake_file="$tmake_file mips/t-sdemtk"
2594 case ${enable_threads} in
2596 thread_file='mipssde'
2603 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2606 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2609 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32 MIPS_ABI_DEFAULT=ABI_32"
2612 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6 MIPS_ABI_DEFAULT=ABI_N32"
2615 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2 MIPS_ABI_DEFAULT=ABI_N32"
2618 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_ABI_DEFAULT=ABI_N32"
2622 mipsisa32-*-elf* | mipsisa32el-*-elf* | \
2623 mipsisa32r2-*-elf* | mipsisa32r2el-*-elf* | \
2624 mipsisa32r6-*-elf* | mipsisa32r6el-*-elf* | \
2625 mipsisa64-*-elf* | mipsisa64el-*-elf* | \
2626 mipsisa64r2-*-elf* | mipsisa64r2el-*-elf* | \
2627 mipsisa64r6-*-elf* | mipsisa64r6el-*-elf*)
2628 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2629 tmake_file="mips/t-isa3264"
2632 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6"
2635 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2"
2638 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32"
2641 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6"
2644 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2"
2647 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64"
2651 mipsisa32*-*-elfoabi*)
2652 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_32"
2653 tm_file="${tm_file} mips/elfoabi.h"
2655 mipsisa64*-*-elfoabi*)
2656 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_O64"
2657 tm_file="${tm_file} mips/elfoabi.h"
2660 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2664 mipsisa64sr71k-*-elf*)
2665 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2666 tmake_file=mips/t-sr71k
2667 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sr71000\\\" MIPS_ABI_DEFAULT=ABI_EABI"
2669 mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*)
2670 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2671 tmake_file="mips/t-elf mips/t-sb1"
2672 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sb1\\\" MIPS_ABI_DEFAULT=ABI_O64"
2674 mips-*-elf* | mipsel-*-elf* | mipsr5900-*-elf* | mipsr5900el-*-elf*)
2675 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2676 tmake_file="mips/t-elf"
2678 mips64r5900-*-elf* | mips64r5900el-*-elf*)
2679 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h"
2680 tmake_file="mips/t-elf"
2681 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_N32"
2683 mips64-*-elf* | mips64el-*-elf*)
2684 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2685 tmake_file="mips/t-elf"
2686 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_O64"
2688 mips64vr-*-elf* | mips64vrel-*-elf*)
2689 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/vr.h mips/elf.h"
2690 tmake_file=mips/t-vr
2691 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2693 mips64orion-*-elf* | mips64orionel-*-elf*)
2694 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elforion.h mips/elf.h"
2695 tmake_file="mips/t-elf"
2696 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_O64"
2699 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/rtems.h rtems.h"
2700 tmake_file="${tmake_file} mips/t-elf mips/t-rtems"
2703 tm_file="elfos.h ${tm_file} mips/elf.h vx-common.h vxworks.h mips/vxworks.h"
2704 tmake_file="${tmake_file} mips/t-vxworks"
2706 mipstx39-*-elf* | mipstx39el-*-elf*)
2707 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/r3900.h mips/elf.h"
2708 tmake_file="mips/t-r3900"
2710 mmix-knuth-mmixware)
2711 tm_file="${tm_file} newlib-stdint.h"
2715 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2720 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2721 c_target_objs="msp430-c.o"
2722 cxx_target_objs="msp430-c.o"
2723 tmake_file="${tmake_file} msp430/t-msp430"
2724 extra_objs="${extra_objs} msp430-devices.o"
2725 extra_gcc_objs="driver-msp430.o msp430-devices.o"
2726 # Enable .init_array unless it has been explicitly disabled.
2727 # The MSP430 EABI mandates the use of .init_array, and the Newlib CRT
2728 # code since mid-2019 expects it.
2729 if test x${disable_initfini_array} != xyes; then
2730 gcc_cv_initfini_array=yes
2734 # __cxa_atexit increases code size, and we don't need to support
2735 # dynamic shared objects on MSP430, so regular Newlib atexit is a
2736 # fine replacement as it also supports registration of more than 32
2738 default_use_cxa_atexit=no
2739 # This target does not match the generic *-*-elf case above which
2740 # sets use_gcc_stdint=wrap, so explicitly set it here.
2746 target_cpu_default="0"
2747 tm_defines="${tm_defines}"
2752 target_cpu_default="${target_cpu_default}|MASK_BIG_ENDIAN"
2753 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2758 tm_file="elfos.h newlib-stdint.h ${tm_file} nds32/elf.h nds32/nds32_intrinsic.h"
2759 tmake_file="nds32/t-nds32 nds32/t-elf"
2762 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h nds32/linux.h nds32/nds32_intrinsic.h"
2763 tmake_file="${tmake_file} nds32/t-nds32 nds32/t-linux"
2764 gcc_cv_initfini_array=yes
2768 # Handle --enable-default-relax setting.
2769 if test x${enable_default_relax} = xyes; then
2770 tm_defines="${tm_defines} TARGET_DEFAULT_RELAX=1"
2772 # Handle --with-ext-dsp
2773 if test x${with_ext_dsp} = xyes; then
2774 tm_defines="${tm_defines} TARGET_DEFAULT_EXT_DSP=1"
2778 tm_file="elfos.h ${tm_file}"
2779 tmake_file="${tmake_file} nios2/t-nios2"
2782 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h nios2/linux.h "
2785 tm_file="${tm_file} newlib-stdint.h nios2/elf.h"
2786 extra_options="${extra_options} nios2/elf.opt"
2789 tm_file="${tm_file} newlib-stdint.h nios2/rtems.h rtems.h"
2790 tmake_file="${tmake_file} t-rtems nios2/t-rtems"
2795 tm_file="${tm_file} newlib-stdint.h"
2797 tmake_file="nvptx/t-nvptx"
2798 if test x$enable_as_accelerator = xyes; then
2799 extra_programs="${extra_programs} mkoffload\$(exeext)"
2800 tm_file="${tm_file} nvptx/offload.h"
2804 tm_file="elfos.h ${tm_file}"
2805 tmake_file="${tmake_file} or1k/t-or1k"
2806 # Force .init_array support. The configure script cannot always
2807 # automatically detect that GAS supports it, yet we require it.
2808 gcc_cv_initfini_array=yes
2810 # Handle --with-multilib-list=...
2811 or1k_multilibs="${with_multilib_list}"
2812 if test "$or1k_multilibs" = "default"; then
2813 or1k_multilibs="mcmov,msoft-mul,msoft-div"
2815 or1k_multilibs=`echo $or1k_multilibs | sed -e 's/,/ /g'`
2816 for or1k_multilib in ${or1k_multilibs}; do
2817 case ${or1k_multilib} in
2818 mcmov | msext | msfimm | \
2820 mhard-float | mdouble-float | munordered-float | msoft-float | \
2821 mhard-div | mhard-mul | \
2822 msoft-div | msoft-mul )
2823 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${or1k_multilib}"
2826 echo "--with-multilib-list=${with_multilib_list} not supported."
2830 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2834 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h"
2835 tm_file="${tm_file} or1k/linux.h"
2838 tm_file="${tm_file} newlib-stdint.h or1k/elf.h"
2839 extra_options="${extra_options} or1k/elf.opt"
2842 tm_file="${tm_file} newlib-stdint.h or1k/rtems.h rtems.h"
2843 tmake_file="${tmake_file} or1k/t-rtems"
2848 tm_file="${tm_file} newlib-stdint.h"
2851 # port not yet contributed
2852 #powerpc-*-openbsd*)
2853 # tmake_file="${tmake_file} rs6000/t-fprules"
2857 extra_options="${extra_options} ${cpu_type}/darwin.opt"
2859 *-darwin1[0-9]* | *-darwin9*)
2860 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2861 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2864 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2865 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2868 tm_file="${tm_file} ${cpu_type}/darwin7.h"
2871 # Earlier - ingle arch, with 32b only
2872 # OS X 10.0, the first edition is Darwin4
2875 tmake_file="${tmake_file} t-slibgcc"
2877 powerpc64-*-darwin*)
2878 extra_options="${extra_options} ${cpu_type}/darwin.opt"
2879 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
2880 tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h"
2882 powerpc*-*-freebsd*)
2883 tm_file="${tm_file} elfos.h gnu-user.h ${fbsd_tm_file} rs6000/sysv4.h"
2884 extra_options="${extra_options} rs6000/sysv4.opt"
2885 tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
2888 tm_file="${tm_file} rs6000/sysv4le.h" ;;
2892 tm_file="${tm_file} rs6000/default64.h rs6000/freebsd64.h"
2893 tmake_file="${tmake_file} rs6000/t-freebsd64"
2894 extra_options="${extra_options} rs6000/linux64.opt"
2895 if test $fbsd_major -ge 13; then
2896 tm_defines="${tm_defines} TARGET_FREEBSD32_SECURE_PLT=1"
2900 if test $fbsd_major -ge 13; then
2901 tm_file="rs6000/secureplt.h ${tm_file}"
2903 tm_file="${tm_file} rs6000/freebsd.h"
2908 tm_file="${tm_file} elfos.h gnu-user.h ${nbsd_tm_file} freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h"
2909 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2910 tmake_file="${tmake_file} rs6000/t-netbsd"
2911 extra_options="${extra_options} rs6000/sysv4.opt"
2913 powerpc-*-eabisimaltivec*)
2914 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"
2915 extra_options="${extra_options} rs6000/sysv4.opt"
2916 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
2920 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"
2921 extra_options="${extra_options} rs6000/sysv4.opt"
2922 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
2926 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h"
2927 extra_options="${extra_options} rs6000/sysv4.opt"
2928 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
2930 powerpc-*-eabialtivec*)
2931 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabialtivec.h"
2932 extra_options="${extra_options} rs6000/sysv4.opt"
2933 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
2937 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h"
2938 extra_options="${extra_options} rs6000/sysv4.opt"
2939 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
2943 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"
2944 extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
2945 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-rtems rs6000/t-ppccomm"
2948 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h rs6000/sysv4.h"
2949 extra_options="${extra_options} rs6000/sysv4.opt"
2950 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm"
2951 extra_objs="$extra_objs rs6000-linux.o"
2954 tm_file="${tm_file} rs6000/sysv4le.h" ;;
2956 case ${target}:${with_cpu} in
2957 powerpc64*: | powerpc64*:native) cpu_is_64bit=yes ;;
2959 maybe_biarch=${cpu_is_64bit}
2960 case ${enable_targets} in
2961 *powerpc64*) maybe_biarch=yes ;;
2962 all) maybe_biarch=yes ;;
2964 case ${target}:${enable_targets}:${maybe_biarch} in
2965 powerpc64-* | powerpc-*:*:yes | *:*powerpc64-*:yes | *:all:yes \
2966 | powerpc64le*:*powerpcle* | powerpc64le*:*powerpc-* \
2967 | powerpcle-*:*powerpc64le*:yes)
2968 if test x$cpu_is_64bit = xyes; then
2969 tm_file="${tm_file} rs6000/default64.h"
2971 tm_file="rs6000/biarch64.h ${tm_file} rs6000/linux64.h glibc-stdint.h"
2972 tmake_file="$tmake_file rs6000/t-linux64"
2975 tmake_file="$tmake_file rs6000/t-linux64le"
2976 case ${enable_targets} in
2977 all | *powerpc64-* | *powerpc-*)
2978 tmake_file="$tmake_file rs6000/t-linux64lebe" ;;
2981 case ${enable_targets} in
2982 all | *powerpc64le-* | *powerpcle-*)
2983 tmake_file="$tmake_file rs6000/t-linux64bele" ;;
2986 extra_options="${extra_options} rs6000/linux64.opt"
2989 tm_file="${tm_file} rs6000/default64.h rs6000/linux64.h glibc-stdint.h"
2990 extra_options="${extra_options} rs6000/linux64.opt"
2991 tmake_file="${tmake_file} rs6000/t-linux"
2994 tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
2995 tmake_file="${tmake_file} rs6000/t-ppcos rs6000/t-linux"
2999 powerpc*-*-linux*ppc476*)
3000 tm_file="${tm_file} rs6000/476.h"
3001 extra_options="${extra_options} rs6000/476.opt" ;;
3002 powerpc*-*-linux*altivec*)
3003 tm_file="${tm_file} rs6000/linuxaltivec.h" ;;
3007 enable_secureplt=yes ;;
3009 if test x${enable_secureplt} = xyes; then
3010 tm_file="rs6000/secureplt.h ${tm_file}"
3013 powerpc*-wrs-vxworks7r*)
3015 # Wind River 7 post SR0600 is mostly like Linux so we setup
3016 # our config in a very similar fashion and adjust to a few
3019 # The system compiler is configured with secureplt by default.
3020 tm_file="${tm_file} rs6000/secureplt.h"
3022 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h"
3023 tm_file="${tm_file} rs6000/sysv4.h rs6000/biarch64.h rs6000/default64.h rs6000/linux64.h"
3024 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3026 extra_options="${extra_options} rs6000/sysv4.opt linux.opt rs6000/linux64.opt"
3028 tmake_file="${tmake_file} t-linux rs6000/t-linux64 rs6000/t-fprules rs6000/t-ppccomm"
3029 tmake_file="${tmake_file} rs6000/t-vxworks"
3031 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
3032 extra_objs="$extra_objs linux.o rs6000-linux.o"
3034 powerpc-wrs-vxworks*)
3035 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h rs6000/sysv4.h"
3036 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm rs6000/t-vxworks"
3037 extra_options="${extra_options} rs6000/sysv4.opt"
3038 extra_headers="${extra_headers} ppc-asm.h"
3041 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksmils.h"
3042 tmake_file="${tmake_file} rs6000/t-vxworksmils"
3045 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksae.h"
3046 tmake_file="${tmake_file} rs6000/t-vxworksae"
3049 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3055 tm_file="${tm_file} elfos.h gnu-user.h rs6000/sysv4.h rs6000/lynx.h lynx.h"
3056 tmake_file="t-lynx rs6000/t-lynx"
3057 extra_options="${extra_options} rs6000/sysv4.opt lynx.opt"
3063 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h"
3064 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3065 extra_options="${extra_options} rs6000/sysv4.opt"
3067 powerpcle-*-eabisim*)
3068 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"
3069 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3070 extra_options="${extra_options} rs6000/sysv4.opt"
3074 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"
3075 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3076 extra_options="${extra_options} rs6000/sysv4.opt"
3080 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3081 tmake_file="${tmake_file} pru/t-pru"
3082 extra_objs="pru-pragma.o pru-passes.o"
3085 rs6000-ibm-aix7.1.* | powerpc-ibm-aix7.1.*)
3086 tmake_file="rs6000/t-aix52 t-slibgcc"
3087 if test x$cpu_is_64bit = xyes; then
3088 tm_file="${tm_file} rs6000/biarch64.h"
3089 tmake_file="rs6000/t-aix64 t-slibgcc"
3091 tm_file="${tm_file} rs6000/aix.h rs6000/aix71.h rs6000/xcoff.h rs6000/aix-stdint.h"
3092 extra_options="${extra_options} rs6000/aix64.opt"
3096 default_use_cxa_atexit=yes
3098 rs6000-ibm-aix7.2.* | powerpc-ibm-aix7.2.*)
3099 tmake_file="rs6000/t-aix52 t-slibgcc"
3100 if test x$cpu_is_64bit = xyes; then
3101 tm_file="${tm_file} rs6000/biarch64.h"
3102 tmake_file="rs6000/t-aix64 t-slibgcc"
3104 tm_file="${tm_file} rs6000/aix.h rs6000/aix72.h rs6000/xcoff.h rs6000/aix-stdint.h"
3105 extra_options="${extra_options} rs6000/aix64.opt"
3109 default_use_cxa_atexit=yes
3111 rs6000-ibm-aix[789].* | powerpc-ibm-aix[789].*)
3112 tmake_file="rs6000/t-aix52 t-slibgcc"
3113 if test x$cpu_is_64bit = xyes; then
3114 tm_file="${tm_file} rs6000/biarch64.h"
3115 tmake_file="rs6000/t-aix64 t-slibgcc"
3117 tm_file="${tm_file} rs6000/aix.h rs6000/aix73.h rs6000/xcoff.h rs6000/aix-stdint.h"
3118 extra_options="${extra_options} rs6000/aix64.opt"
3122 default_use_cxa_atexit=yes
3125 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3126 target_has_targetm_common=no
3127 c_target_objs="rl78-c.o"
3128 cxx_target_objs="rl78-c.o"
3129 tmake_file="${tmake_file} rl78/t-rl78"
3132 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3133 tmake_file="${tmake_file} rx/t-rx"
3134 extra_options="${extra_options} rx/elf.opt"
3137 tm_file="elfos.h linux.h glibc-stdint.h rx/linux.h ../../libgcc/config/rx/rx-abi.h"
3138 tmake_file="${tmake_file} rx/t-linux"
3141 tm_file="s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3142 c_target_objs="${c_target_objs} s390-c.o"
3143 cxx_target_objs="${cxx_target_objs} s390-c.o"
3144 if test x$enable_targets = xall; then
3145 tmake_file="${tmake_file} s390/t-linux64"
3147 tmake_file="${tmake_file} s390/t-s390"
3150 tm_file="s390/s390x.h s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3151 tm_p_file="linux-protos.h s390/s390-protos.h"
3152 c_target_objs="${c_target_objs} s390-c.o"
3153 cxx_target_objs="${cxx_target_objs} s390-c.o"
3154 md_file=s390/s390.md
3155 extra_modes=s390/s390-modes.def
3156 out_file=s390/s390.cc
3157 tmake_file="${tmake_file} s390/t-linux64 s390/t-s390"
3160 tm_file="s390/s390x.h s390/s390.h elfos.h glibc-stdint.h s390/tpf.h"
3161 tm_p_file=s390/s390-protos.h
3162 c_target_objs="${c_target_objs} s390-c.o"
3163 cxx_target_objs="${cxx_target_objs} s390-c.o"
3164 md_file=s390/s390.md
3165 extra_modes=s390/s390-modes.def
3166 out_file=s390/s390.cc
3168 extra_options="${extra_options} s390/tpf.opt"
3169 tmake_file="${tmake_file} s390/t-s390"
3171 sh-*-elf* | sh[12346l]*-*-elf* | \
3172 sh-*-linux* | sh[2346lbe]*-*-linux* | \
3173 sh-*-netbsdelf* | shl*-*-netbsdelf*)
3174 tmake_file="${tmake_file} sh/t-sh sh/t-elf"
3175 if test x${with_endian} = x; then
3177 sh[1234]*be-*-* | sh[1234]*eb-*-*) with_endian=big ;;
3178 shbe-*-* | sheb-*-*) with_endian=big,little ;;
3179 sh[1234]l* | sh[34]*-*-linux*) with_endian=little ;;
3180 shl* | sh*-*-linux* | \
3181 sh-superh-elf) with_endian=little,big ;;
3182 sh[1234]*-*-*) with_endian=big ;;
3183 *) with_endian=big,little ;;
3186 # TM_ENDIAN_CONFIG is used by t-sh to determine multilibs.
3187 # First word : the default endian.
3188 # Second word: the secondary endian (optional).
3189 case ${with_endian} in
3190 big) TM_ENDIAN_CONFIG=mb ;;
3191 little) TM_ENDIAN_CONFIG=ml ;;
3192 big,little) TM_ENDIAN_CONFIG="mb ml" ;;
3193 little,big) TM_ENDIAN_CONFIG="ml mb" ;;
3194 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
3196 case ${with_endian} in
3197 little*) tm_file="sh/little.h ${tm_file}" ;;
3199 tm_file="${tm_file} elfos.h sh/elf.h"
3201 sh*-*-linux*) tmake_file="${tmake_file} sh/t-linux"
3202 if test x$enable_fdpic = xyes; then
3203 tm_defines="$tm_defines FDPIC_DEFAULT=1"
3205 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h sh/linux.h" ;;
3207 tm_file="${tm_file} ${nbsd_tm_file} sh/netbsd-elf.h"
3208 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3211 sh*-superh-elf) if test x$with_libgloss != xno; then
3213 tm_file="${tm_file} sh/newlib.h"
3215 tm_file="${tm_file} sh/embed-elf.h"
3216 tm_file="${tm_file} sh/superh.h"
3217 extra_options="${extra_options} sh/superh.opt" ;;
3218 *) if test x$with_newlib = xyes \
3219 && test x$with_libgloss = xyes; then
3220 tm_file="${tm_file} sh/newlib.h"
3222 tm_file="${tm_file} sh/embed-elf.h" ;;
3228 tm_file="${tm_file} newlib-stdint.h"
3231 # sed el/eb endian suffixes away to avoid confusion with sh[23]e
3232 case `echo ${target} | sed 's/e[lb]-/-/'` in
3233 sh4a_single_only*) sh_cpu_target=sh4a-single-only ;;
3234 sh4a_single*) sh_cpu_target=sh4a-single ;;
3235 sh4a_nofpu*) sh_cpu_target=sh4a-nofpu ;;
3236 sh4al) sh_cpu_target=sh4al ;;
3237 sh4a*) sh_cpu_target=sh4a ;;
3238 sh4_single_only*) sh_cpu_target=sh4-single-only ;;
3239 sh4_single*) sh_cpu_target=sh4-single ;;
3240 sh4_nofpu*) sh_cpu_target=sh4-nofpu ;;
3241 sh4* | sh-superh-*) sh_cpu_target=sh4 ;;
3242 sh3e*) sh_cpu_target=sh3e ;;
3243 sh*-*-netbsd* | sh3*) sh_cpu_target=sh3 ;;
3244 sh2a_single_only*) sh_cpu_target=sh2a-single-only ;;
3245 sh2a_single*) sh_cpu_target=sh2a-single ;;
3246 sh2a_nofpu*) sh_cpu_target=sh2a-nofpu ;;
3247 sh2a*) sh_cpu_target=sh2a ;;
3248 sh2e*) sh_cpu_target=sh2e ;;
3249 sh2*) sh_cpu_target=sh2 ;;
3250 *) sh_cpu_target=sh1 ;;
3252 # did the user say --without-fp ?
3253 if test x$with_fp = xno; then
3254 case ${sh_cpu_target} in
3256 sh4a* ) sh_cpu_target=sh4a-nofpu ;;
3257 sh4*) sh_cpu_target=sh4-nofpu ;;
3258 sh3*) sh_cpu_target=sh3 ;;
3259 sh2a*) sh_cpu_target=sh2a-nofpu ;;
3260 sh2*) sh_cpu_target=sh2 ;;
3261 *) echo --without-fp not available for $target: ignored
3263 tm_defines="$tm_defines STRICT_NOFPU=1"
3265 sh_cpu_default="`echo $with_cpu|sed s/^m/sh/|tr A-Z_ a-z-`"
3266 case $sh_cpu_default in
3267 sh2a-single-only | sh2a-single | sh2a-nofpu | sh2a | \
3268 sh4a-single-only | sh4a-single | sh4a-nofpu | sh4a | sh4al | \
3269 sh4-single-only | sh4-single | sh4-nofpu | sh4 | sh4-300 | \
3270 sh3e | sh3 | sh2e | sh2 | sh1) ;;
3271 "") sh_cpu_default=${sh_cpu_target} ;;
3272 *) echo "with_cpu=$with_cpu not supported"; exit 1 ;;
3274 sh_multilibs=${with_multilib_list}
3275 if test "$sh_multilibs" = "default" ; then
3277 sh[1234]*) sh_multilibs=${sh_cpu_target} ;;
3278 sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
3279 sh*-*-linux*) sh_multilibs=m1,m2,m2a,m3e,m4 ;;
3280 sh*-*-netbsd*) sh_multilibs=m3,m3e,m4 ;;
3281 *) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single ;;
3283 if test x$with_fp = xno; then
3284 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`"
3287 target_cpu_default=SELECT_`echo ${sh_cpu_default}|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`
3288 tm_defines=${tm_defines}' SH_MULTILIB_CPU_DEFAULT=\"'`echo $sh_cpu_default|sed s/sh/m/`'\"'
3289 tm_defines="$tm_defines SUPPORT_`echo $sh_cpu_default | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3290 sh_multilibs=`echo $sh_multilibs | sed -e 's/,/ /g' -e 's/^[Ss][Hh]/m/' -e 's/ [Ss][Hh]/ m/g' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-`
3291 for sh_multilib in ${sh_multilibs}; do
3292 case ${sh_multilib} in
3293 m1 | m2 | m2e | m3 | m3e | \
3294 m4 | m4-single | m4-single-only | m4-nofpu | m4-300 |\
3295 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al | \
3296 m2a | m2a-single | m2a-single-only | m2a-nofpu)
3297 # TM_MULTILIB_CONFIG is used by t-sh for the non-endian multilib definition
3298 # It is passed to MULTIILIB_OPTIONS verbatim.
3299 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG}/${sh_multilib}"
3300 tm_defines="$tm_defines SUPPORT_`echo $sh_multilib | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3302 \!*) # TM_MULTILIB_EXCEPTIONS_CONFIG is used by t-sh
3303 # It is passed the MULTILIB_EXCEPTIONS verbatim.
3304 TM_MULTILIB_EXCEPTIONS_CONFIG="${TM_MULTILIB_EXCEPTIONS_CONFIG} `echo $sh_multilib | sed 's/^!//'`" ;;
3306 echo "with_multilib_list=${sh_multilib} not supported."
3311 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's:^/::'`
3312 if test x${enable_incomplete_targets} = xyes ; then
3313 tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1"
3315 tm_file="$tm_file ./sysroot-suffix.h"
3316 tmake_file="$tmake_file t-sysroot-suffix"
3319 tmake_file="${tmake_file} sh/t-sh sh/t-rtems"
3320 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h newlib-stdint.h"
3323 tmake_file="$tmake_file sh/t-sh sh/t-vxworks"
3324 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h vx-common.h vxworks.h sh/vxworks.h"
3327 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp-elf.h"
3330 tmake_file="sparc/t-sparc sparc/t-leon"
3333 tmake_file="sparc/t-sparc sparc/t-leon3"
3336 tmake_file="sparc/t-sparc sparc/t-elf"
3341 tm_file="${tm_file} elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
3342 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
3345 tm_file="${tm_file} elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
3346 extra_options="${extra_options} sparc/long-double-switch.opt"
3349 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon"
3352 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon3"
3355 tmake_file="${tmake_file} sparc/t-sparc"
3358 if test x$enable_targets = xall; then
3359 tm_file="sparc/biarch64.h ${tm_file} sparc/linux64.h"
3360 tmake_file="${tmake_file} sparc/t-linux64"
3362 tm_file="${tm_file} sparc/linux.h"
3363 tmake_file="${tmake_file} sparc/t-linux"
3367 tm_file="${tm_file} elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3368 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3369 extra_options="${extra_options} sparc/long-double-switch.opt"
3370 tmake_file="${tmake_file} sparc/t-sparc"
3373 tm_file="sparc/biarch64.h ${tm_file} ${sol2_tm_file} sparc/tso.h"
3375 sparc64-*-* | sparcv9-*-*)
3376 tm_file="sparc/default64.h ${tm_file}"
3379 test x$with_cpu != x || with_cpu=v9
3382 tmake_file="${tmake_file} sparc/t-sparc sparc/t-sol2"
3385 tm_file="${tm_file} elfos.h sparc/sysv4.h vx-common.h vxworks.h sparc/vxworks.h"
3386 tmake_file="${tmake_file} sparc/t-sparc sparc/t-vxworks"
3389 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h"
3390 extra_options="${extra_options}"
3391 tmake_file="${tmake_file} sparc/t-sparc"
3394 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h sparc/rtemself.h rtems.h"
3395 extra_options="${extra_options}"
3396 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
3399 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"
3400 extra_options="${extra_options} sparc/long-double-switch.opt"
3401 tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
3403 sparc64-*-freebsd*|ultrasparc-*-freebsd*)
3404 tm_file="${tm_file} ${fbsd_tm_file} elfos.h sparc/sysv4.h sparc/freebsd.h"
3405 extra_options="${extra_options} sparc/long-double-switch.opt"
3406 case "x$with_cpu" in
3408 x) with_cpu=ultrasparc ;;
3409 *) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
3411 tmake_file="${tmake_file} sparc/t-sparc"
3414 tm_file="sparc/biarch64.h ${tm_file}"
3415 tm_file="${tm_file} elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3416 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3417 extra_options="${extra_options} sparc/long-double-switch.opt"
3418 tmake_file="${tmake_file} sparc/t-sparc sparc/t-netbsd64"
3421 tm_file="sparc/openbsd1-64.h ${tm_file} elfos.h sparc/sysv4.h sparc/sp64-elf.h"
3422 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h sparc/openbsd64.h"
3423 extra_options="${extra_options} openbsd.opt"
3424 extra_options="${extra_options}"
3427 tmake_file="${tmake_file} sparc/t-sparc"
3430 tm_file="elfos.h ${tm_file} c6x/elf-common.h c6x/elf.h"
3431 tm_file="${tm_file} tm-dwarf2.h newlib-stdint.h"
3432 tmake_file="c6x/t-c6x c6x/t-c6x-elf"
3436 tm_file="elfos.h ${tm_file} gnu-user.h linux.h c6x/elf-common.h c6x/uclinux-elf.h"
3437 tm_file="${tm_file} tm-dwarf2.h glibc-stdint.h"
3438 tm_file="${tm_file} ./sysroot-suffix.h"
3439 tmake_file="t-sysroot-suffix t-slibgcc"
3440 tmake_file="${tmake_file} c6x/t-c6x c6x/t-c6x-elf c6x/t-c6x-uclinux"
3444 target_cpu_default="TARGET_CPU_generic"
3445 tm_file="elfos.h v850/v850.h"
3446 tm_file="${tm_file} v850/rtems.h rtems.h newlib-stdint.h"
3447 tmake_file="${tmake_file} v850/t-v850"
3448 tmake_file="${tmake_file} v850/t-rtems"
3450 c_target_objs="v850-c.o"
3451 cxx_target_objs="v850-c.o"
3456 target_cpu_default="TARGET_CPU_v850e3v5"
3459 target_cpu_default="TARGET_CPU_v850e2v3"
3462 target_cpu_default="TARGET_CPU_v850e2"
3464 v850e1-*-* | v850es-*-*)
3465 target_cpu_default="TARGET_CPU_v850e1"
3468 target_cpu_default="TARGET_CPU_v850e"
3471 target_cpu_default="TARGET_CPU_generic"
3474 tm_file="elfos.h newlib-stdint.h v850/v850.h"
3476 c_target_objs="v850-c.o"
3477 cxx_target_objs="v850-c.o"
3481 tm_file="${tm_file} elfos.h gnu-user.h linux.h vax/elf.h vax/linux.h"
3482 extra_options="${extra_options} vax/elf.opt"
3485 tm_file="${tm_file} elfos.h ${nbsd_tm_file} vax/elf.h vax/netbsd-elf.h"
3486 extra_options="${extra_options} netbsd.opt netbsd-elf.opt vax/elf.opt"
3487 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
3490 tm_file="elfos.h ${tm_file} visium/elf.h newlib-stdint.h"
3491 tmake_file="visium/t-visium visium/t-crtstuff"
3494 # For historical reasons, the target files omit the 'x'.
3495 tm_file="elfos.h newlib-stdint.h stormy16/stormy16.h"
3496 tm_p_file=stormy16/stormy16-protos.h
3497 md_file=stormy16/stormy16.md
3498 out_file=stormy16/stormy16.cc
3499 extra_options=stormy16/stormy16.opt
3500 tmake_file="stormy16/t-stormy16"
3503 tm_file="${tm_file} elfos.h newlib-stdint.h xtensa/elf.h"
3504 extra_options="${extra_options} xtensa/elf.opt"
3507 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/linux.h"
3508 tmake_file="${tmake_file} xtensa/t-xtensa"
3511 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/uclinux.h"
3512 tmake_file="${tmake_file} xtensa/t-xtensa"
3513 extra_options="${extra_options} xtensa/uclinux.opt"
3516 tm_file="mn10300/mn10300.h elfos.h gnu-user.h linux.h glibc-stdint.h mn10300/linux.h"
3521 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3522 c_target_objs="m32c-pragma.o"
3523 cxx_target_objs="m32c-pragma.o"
3526 echo "*** Configuration ${target} not supported" 1>&2
3532 i[34567]86-*-linux* | x86_64-*-linux*)
3533 tmake_file="${tmake_file} i386/t-pmm_malloc i386/t-i386"
3535 i[34567]86-*-* | x86_64-*-*)
3536 tmake_file="${tmake_file} i386/t-gmm_malloc i386/t-i386"
3538 powerpc*-*-* | rs6000-*-*)
3539 tm_file="${tm_file} ${cpu_type}/option-defaults.h"
3545 tmake_file="${tmake_file} t-musl"
3548 tmake_file="${tmake_file} t-uclibc"
3552 # Assume the existence of indirect function support and allow the use of the
3553 # resolver attribute.
3555 *-*-linux*android*|*-*-linux*uclibc*|*-*-linux*musl*)
3557 *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
3559 *-*-linux* | *-*-gnu*)
3561 aarch64*-* | arm*-* | i[34567]86-* | powerpc*-* | s390*-* | sparc*-* | x86_64-* | loongarch*-*)
3562 default_gnu_indirect_function=yes
3568 if [ "$target_has_targetcm" = "no" ]; then
3569 c_target_objs="$c_target_objs default-c.o"
3570 cxx_target_objs="$cxx_target_objs default-c.o"
3573 if [ "$common_out_file" = "" ]; then
3574 if [ "$target_has_targetm_common" = "yes" ]; then
3575 common_out_file="$cpu_type/$cpu_type-common.cc"
3577 common_out_file="default-common.cc"
3581 if [ "$target_has_targetdm" = "no" ]; then
3582 d_target_objs="$d_target_objs default-d.o"
3585 # Support for --with-cpu and related options (and a few unrelated options,
3589 echo "--with-cpu must be passed a value" 1>&2
3594 # Set arch and cpu from ${target} and ${target_noncanonical}. Set cpu
3595 # to generic if there is no processor scheduler model for the target.
3598 arch_without_sse2=no
3599 arch_without_64bit=no
3602 if test $fbsd_major -ge 6; then
3608 arch_without_sse2=yes
3609 arch_without_64bit=yes
3614 arch_without_sse2=yes
3615 arch_without_64bit=yes
3620 arch_without_sse2=yes
3621 arch_without_64bit=yes
3626 arch_without_sse2=yes
3627 arch_without_64bit=yes
3630 arch_without_sse2=yes
3631 arch_without_64bit=yes
3632 case ${target_noncanonical} in
3645 pentium_mmx-*|winchip_c6-*|winchip2-*|c3-*)
3655 i686-*-* | i786-*-*)
3656 case ${target_noncanonical} in
3697 amdfam10-*|barcelona-*)
3701 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3705 k8-*|opteron-*|athlon64-*|athlon_fx-*)
3709 athlon_xp-*|athlon_mp-*|athlon_4-*)
3712 arch_without_sse2=yes
3713 arch_without_64bit=yes
3715 athlon_tbird-*|athlon-*)
3718 arch_without_sse2=yes
3723 arch_without_sse2=yes
3732 arch_without_sse2=yes
3734 pentium3-*|pentium3m-*)
3737 arch_without_sse2=yes
3739 pentium4-*|pentium4m-*)
3778 arch_without_sse2=yes
3783 arch_without_sse2=yes
3784 arch_without_64bit=yes
3789 case ${target_noncanonical} in
3830 amdfam10-*|barcelona-*)
3834 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3838 k8-*|opteron-*|athlon_64-*)
3874 # If there is no $with_cpu option, try to infer one from ${target}.
3875 # This block sets nothing except for with_cpu.
3876 if test x$with_cpu = x ; then
3878 i[34567]86-*-elfiamcu)
3881 i[34567]86-*-*|x86_64-*-*)
3899 frv-*-*linux* | frv400-*-*linux*)
3906 case "$with_arch" in
3908 with_cpu=${default_cf_cpu}
3911 with_cpu=m${default_m68k_cpu}
3927 with_cpu="`echo ${target} | sed 's/-.*$//'`"
3936 # Avoid overriding --with-cpu-32 and --with-cpu-64 values.
3938 i[34567]86-*-*|x86_64-*-*)
3939 if test x$with_cpu_32 != x || test x$with_cpu_64 != x; then
3940 if test x$with_cpu_32 = x; then
3941 with_cpu_32=$with_cpu
3943 if test x$with_cpu_64 = x; then
3944 with_cpu_64=$with_cpu
3952 # Support for --with-arch and related options (and a few unrelated options,
3954 case ${with_arch} in
3956 echo "--with-arch must be passed a value" 1>&2
3961 # If there is no $with_arch option, try to infer one from ${target}.
3962 # This block sets nothing except for with_arch.
3963 if test x$with_arch = x ; then
3965 i[34567]86-*-darwin*|x86_64-*-darwin*)
3966 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
3967 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
3969 i[34567]86-*-elfiamcu)
3973 # --with-fpmath sets the default ISA to SSE2, which is the same
3974 # ISA supported by Pentium 4.
3975 if test x$with_fpmath = x || test $arch_without_sse2 = no; then
3984 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
3995 # Avoid overriding --with-arch-32 and --with-arch-64 values.
3997 i[34567]86-*-darwin*|x86_64-*-darwin*)
3998 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
3999 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
4001 i[34567]86-*-*|x86_64-*-*)
4002 if test x$with_arch_32 != x || test x$with_arch_64 != x; then
4003 if test x$with_arch_32 = x; then
4004 with_arch_32=$with_arch
4006 if test x$with_arch_64 = x; then
4007 if test $arch_without_64bit = yes; then
4008 # Set the default 64bit arch to x86-64 if the default arch
4009 # doesn't support 64bit.
4012 with_arch_64=$with_arch
4016 elif test $arch_without_64bit$need_64bit_isa = yesyes; then
4017 # Set the default 64bit arch to x86-64 if the default arch
4018 # doesn't support 64bit and we need 64bit ISA.
4019 with_arch_32=$with_arch
4027 # Infer a default setting for --with-float.
4028 if test x$with_float = x; then
4030 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4031 # The R5900 doesn't support 64-bit float. 32-bit float doesn't
4032 # comply with IEEE 754.
4038 # Infer a default setting for --with-fpu.
4039 if test x$with_fpu = x; then
4041 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4042 # The R5900 FPU only supports single precision.
4048 # Support --with-fpmath.
4049 if test x$with_fpmath != x; then
4051 i[34567]86-*-* | x86_64-*-*)
4052 case ${with_fpmath} in
4054 tm_file="${tm_file} i386/avxmath.h"
4057 tm_file="${tm_file} i386/ssemath.h"
4060 echo "Invalid --with-fpmath=$with_fpmath" 1>&2
4066 echo "--with-fpmath isn't supported for $target." 1>&2
4072 # Similarly for --with-schedule.
4073 if test x$with_schedule = x; then
4076 # Override default PA8000 scheduling model.
4077 with_schedule=7100LC
4082 # Infer a default setting for --with-llsc.
4083 if test x$with_llsc = x; then
4086 # The kernel emulates LL and SC where necessary.
4089 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4090 # The R5900 doesn't support LL(D) and SC(D).
4096 # Validate and mark as valid any --with options supported
4097 # by this target. In order to use a particular --with option
4098 # you must list it in supported_defaults; validating the value
4099 # is optional. This case statement should set nothing besides
4100 # supported_defaults.
4105 supported_defaults="abi cpu cpu_64 arch arch_64 tune tune_64"
4106 if test x$with_cpu_64 != x && test x$with_cpu = x; then
4107 with_cpu=$with_cpu_64
4109 if test x$with_arch_64 != x && test x$with_arch = x; then
4110 with_arch=$with_arch_64
4112 if test x$with_tune_64 != x && test x$with_tune = x; then
4113 with_tune=$with_tune_64
4115 for which in cpu arch tune; do
4116 eval "val=\$with_$which"
4117 base_val=`echo $val | sed -e 's/\+.*//'`
4118 ext_val=`echo $val | sed -e 's/[a-z0-9.-]\+//'`
4120 if [ $which = arch ]; then
4121 def=aarch64-arches.def
4122 pattern=AARCH64_ARCH
4124 def=aarch64-cores.def
4125 pattern=AARCH64_CORE
4128 # Find the base CPU or ARCH id in aarch64-cores.def or
4129 # aarch64-arches.def
4130 if [ x"$base_val" = x ] \
4131 || grep "^$pattern(\"$base_val\"," \
4132 ${srcdir}/config/aarch64/$def \
4135 # Disallow extensions in --with-tune=cortex-a53+crc.
4136 if [ $which = tune ] && [ x"$ext_val" != x ]; then
4137 echo "Architecture extensions not supported in --with-$which=$val" 1>&2
4141 # Use the pre-processor to strip flatten the options.
4142 # This makes the format less rigid than if we use
4143 # grep and sed directly here.
4144 opt_macro="AARCH64_OPT_EXTENSION(A, B, C, D, E, F)=A, B, C, D, E, F"
4145 options_parsed="`$ac_cv_prog_CPP -D"$opt_macro" -x c \
4146 ${srcdir}/config/aarch64/aarch64-option-extensions.def`"
4148 while [ x"$ext_val" != x ]
4150 ext_val=`echo $ext_val | sed -e 's/\+//'`
4151 ext=`echo $ext_val | sed -e 's/\+.*//'`
4152 base_ext=`echo $ext | sed -e 's/^no//'`
4153 opt_line=`echo -e "$options_parsed" | \
4154 grep "^\"$base_ext\""`
4156 if [ x"$base_ext" = x ] \
4157 || [ x"$opt_line" != x ]; then
4160 echo "Unknown extension used in --with-$which=$val" 1>&2
4163 ext_val=`echo $ext_val | sed -e 's/[a-z0-9]\+//'`
4168 # Allow --with-$which=native.
4169 if [ "$val" = native ]; then
4172 echo "Unknown $which used in --with-$which=$val" 1>&2
4180 supported_defaults="cpu tune"
4181 for which in cpu tune; do
4182 eval "val=\$with_$which"
4185 | ev4 | ev45 | 21064 | ev5 | 21164 | ev56 | 21164a \
4186 | pca56 | 21164PC | 21164pc | ev6 | 21264 | ev67 \
4190 echo "Unknown CPU used in --with-$which=$val" 1>&2
4198 supported_defaults="cpu fpu"
4201 if [ x"$with_cpu" = x ] \
4202 || grep -q -E "^ARC_CPU[[:blank:]]*\($with_cpu," \
4203 ${srcdir}/config/arc/arc-cpus.def
4208 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4212 # see if --with-fpu matches any of the supported FPUs
4217 fpus | fpus_div | fpus_fma | fpus_all)
4221 fpuda | fpuda_div | fpuda_fma | fpuda_all)
4225 fpud | fpud_div | fpud_fma | fpud_all)
4230 echo "Unknown floating point type used in "\
4231 "--with-fpu=$with_fpu" 1>&2
4236 if [ -n "$flags_ok" ] \
4237 && ! grep -q -E "^ARC_CPU[[:blank:]]*\($new_cpu,[[:blank:]]*$flags_ok," \
4238 ${srcdir}/config/arc/arc-cpus.def
4240 echo "Unknown floating point type used in "\
4241 "--with-fpu=$with_fpu for cpu $new_cpu" 1>&2
4247 # Handle --with-multilib-list.
4248 if test "x${with_multilib_list}" != xdefault; then
4249 TM_MULTILIB_CONFIG="${with_multilib_list}"
4254 supported_defaults="cpu endian float"
4258 supported_defaults="arch cpu float tune fpu abi mode tls"
4259 for which in cpu tune arch; do
4260 # See if it matches a supported value
4261 eval "val=\$with_$which"
4262 if [ x"$val" != x ]; then
4263 cpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4264 -v cmd="chk$which $val" \
4265 ${srcdir}/config/arm/arm-cpus.in`
4266 if [ "$cpu" = "error" ]; then
4267 echo "Unknown target in --with-$which=$val" 1>&2
4271 eval "target_${which}_cname=$new_val"
4272 echo "For $val real value is $new_val"
4277 case "$with_float" in
4279 | soft | hard | softfp)
4283 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4288 # see if --with-fpu matches any of the supported FPUs
4289 if [ x"$with_fpu" != x ] ; then
4291 fpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4292 -v cmd="chkfpu $val" \
4293 ${srcdir}/config/arm/arm-cpus.in`
4294 if [ "$fpu" = "error" ]
4296 echo "Unknown target in --with-fpu=$val" 1>&2
4303 | apcs-gnu | atpcs | aapcs | iwmmxt | aapcs-linux )
4307 echo "Unknown ABI used in --with-abi=$with_abi"
4312 case "$with_mode" in
4318 echo "Unknown mode used in --with-mode=$with_mode"
4329 echo "Unknown TLS method used in --with-tls=$with_tls" 1>&2
4334 if test "x$with_arch" != x && test "x$with_cpu" != x; then
4335 echo "Switch \"--with-arch\" may not be used with switch \"--with-cpu\"" 1>&2
4339 if test "x$with_cpu" != x && test "x$with_tune" != x; then
4340 echo "Switch \"--with-tune\" may not be used with switch \"--with-cpu\"" 1>&2
4344 # Add extra multilibs
4345 if test "x$with_multilib_list" != x; then
4347 arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
4348 if test "x${arm_multilibs}" != xdefault ; then
4349 for arm_multilib in ${arm_multilibs}; do
4350 case ${arm_multilib} in
4352 tmake_profile_file="arm/t-multilib"
4355 ml=`echo "X$arm_multilib" | sed '1s,^X@,,'`
4356 if test -f "${srcdir}/config/arm/${ml}"; then
4357 tmake_file="${tmake_file} arm/${ml}"
4359 echo "Error: ${ml} does not exist in ${srcdir}/config/arm" >&2
4364 echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2
4371 if test "x${tmake_profile_file}" != x ; then
4372 # arm/t-aprofile and arm/t-rmprofile are only
4373 # designed to work without any with-cpu,
4374 # with-arch, with-mode, with-fpu or with-float
4376 if test "x$with_arch" != x \
4377 || test "x$with_cpu" != x \
4378 || test "x$with_float" != x \
4379 || test "x$with_fpu" != x \
4380 || test "x$with_mode" != x ; then
4381 echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=${with_multilib_list}" 1>&2
4383 elif test "x$ml" != x ; then
4384 echo "Error: You cannot use builtin multilib profiles along with custom ones" 1>&2
4387 # But pass the default value for float-abi
4388 # through to the multilib selector
4390 tmake_file="${tmake_file} ${tmake_profile_file}"
4391 TM_MULTILIB_CONFIG="$with_multilib_list"
4394 target_cpu_cname=${target_cpu_cname:-arm7tdmi}
4395 with_cpu=${with_cpu:-$target_cpu_cname}
4399 supported_defaults=cpu
4404 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4410 fido-*-* | m68k*-*-*)
4411 supported_defaults="arch cpu"
4412 case "$with_arch" in
4414 m68k_arch_family="$with_arch"
4417 echo "Invalid --with-arch=$with_arch" 1>&2
4422 # We always have a $with_cpu setting here.
4424 "m68000" | "m68010" | "m68020" | "m68030" | "m68040" | "m68060")
4425 m68k_cpu_ident=$with_cpu
4428 m68k_cpu_ident=m68020
4429 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_40"
4432 m68k_cpu_ident=m68020
4433 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_60"
4436 # We need the C identifier rather than the string.
4437 m68k_cpu_ident=`awk -v arg="\"$with_cpu\"" \
4438 'BEGIN { FS="[ \t]*[,()][ \t]*" }; \
4439 $1 == "M68K_DEVICE" && $2 == arg { print $3 }' \
4440 ${srcdir}/config/m68k/m68k-devices.def`
4441 if [ x"$m68k_cpu_ident" = x ] ; then
4442 echo "Unknown CPU used in --with-cpu=$with_cpu" 1>&2
4445 with_cpu="mcpu=$with_cpu"
4451 supported_defaults="arch tune"
4453 for which in arch tune; do
4454 eval "val=\$with_$which"
4456 "" | fiji | gfx900 | gfx906 | gfx908 | gfx90a)
4460 echo "Unknown cpu used in --with-$which=$val." 1>&2
4465 [ "x$with_arch" = x ] && with_arch=fiji
4469 supported_defaults="arch schedule"
4471 case "$with_arch" in
4472 "" | 1.0 | 1.1 | 2.0)
4476 echo "Unknown architecture used in --with-arch=$with_arch" 1>&2
4481 case "$with_schedule" in
4482 "" | 700 | 7100 | 7100LC | 7200 | 7300 | 8000)
4486 echo "Unknown processor used in --with-schedule=$with_schedule." 1>&2
4492 i[34567]86-*-* | x86_64-*-*)
4493 supported_defaults="abi arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64"
4494 for which in arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64; do
4495 eval "val=\$with_$which"
4496 case " $x86_archs " in
4504 echo "CPU given in --with-$which=$val doesn't support 64bit mode." 1>&2
4513 if test x${val} != x; then
4514 case " $x86_64_archs " in
4516 # Disallow x86-64-v* for --with-cpu=/--with-tune=
4517 case "x$which$val" in
4518 xcpu*x86-64-v*|xtune*x86-64-v*)
4519 echo "Unknown CPU given in --with-$which=$val." 1>&2
4528 # Allow $x86_cpus --with-cpu=/--with-tune=
4531 case " $x86_cpus " in
4536 echo "Unknown CPU given in --with-$which=$val." 1>&2
4542 echo "Unknown CPU given in --with-$which=$val." 1>&2
4555 supported_defaults="abi arch tune riscv_attribute isa_spec"
4558 riscv-* | riscv32*) xlen=32 ;;
4559 riscv64*) xlen=64 ;;
4560 *) echo "Unsupported RISC-V target ${target}" 1>&2; exit 1 ;;
4563 case "${with_isa_spec}" in
4564 ""|default|20191213|201912)
4565 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20191213"
4566 with_isa_spec=20191213
4569 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_2P2"
4572 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20190608"
4573 with_isa_spec=20190608
4576 echo "--with-isa-spec only accept 2.2, 20191213, 201912, 20190608 or 201906" 1>&2
4580 case "${with_riscv_attribute}" in
4582 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4585 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=0"
4588 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4591 echo "--with-riscv-attribute=${with_riscv_attribute} is not supported. The argument must begin with yes, no or default." 1>&2
4597 # Infer arch from --with-arch, --target, and --with-abi.
4598 case "${with_arch}" in
4599 rv32e* | rv32i* | rv32g* | rv64i* | rv64g*)
4603 # Infer XLEN, but otherwise assume GC.
4604 case "${with_abi}" in
4605 ilp32e) with_arch="rv32e" ;;
4606 ilp32 | ilp32f | ilp32d) with_arch="rv32gc" ;;
4607 lp64 | lp64f | lp64d) with_arch="rv64gc" ;;
4608 *) with_arch="rv${xlen}gc" ;;
4612 echo "--with-arch=${with_arch} is not supported. The argument must begin with rv32e, rv32i, rv32g, rv64i, or rv64g." 1>&2
4616 PYTHON=`which python || which python3 || which python2`
4617 if test "x${PYTHON}" != x; then
4618 with_arch=`${PYTHON} ${srcdir}/config/riscv/arch-canonicalize -misa-spec=${with_isa_spec} ${with_arch}`
4620 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ARCH=${with_arch}"
4622 # Make sure --with-abi is valid. If it was not specified,
4623 # pick a default based on the ISA, preferring soft-float
4624 # unless the D extension is present.
4625 case "${with_abi}" in
4626 ilp32 | ilp32e | ilp32f | ilp32d | lp64 | lp64f | lp64d)
4629 case "${with_arch}" in
4630 rv32*d* | rv32g*) with_abi=ilp32d ;;
4631 rv32e*) with_abi=ilp32e ;;
4632 rv32*) with_abi=ilp32 ;;
4633 rv64*d* | rv64g*) with_abi=lp64d ;;
4634 rv64*) with_abi=lp64 ;;
4638 echo "--with-abi=${with_abi} is not supported" 1>&2
4642 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ABI=${with_abi}"
4644 # Make sure ABI and ISA are compatible.
4645 case "${with_abi},${with_arch}" in
4646 ilp32,rv32* | ilp32e,rv32e* \
4647 | ilp32f,rv32*f* | ilp32f,rv32g* \
4648 | ilp32d,rv32*d* | ilp32d,rv32g* \
4650 | lp64f,rv64*f* | lp64f,rv64g* \
4651 | lp64d,rv64*d* | lp64d,rv64g*)
4654 echo "--with-abi=${with_abi} is not supported for ISA ${with_arch}" 1>&2
4658 # Handle --with-multilib-generator.
4659 if test "x${with_multilib_generator}" != xdefault; then
4660 if test "x${with_multilib_list}" != xdefault; then
4661 echo "--with-multilib-list= can't used with --with-multilib-generator= at same time" 1>&2
4666 if ${srcdir}/config/riscv/multilib-generator \
4667 -misa-spec=${with_isa_spec} \
4668 `echo ${with_multilib_generator} | sed 's/;/ /g'`\
4669 > t-multilib-config;
4671 tmake_file="${tmake_file} riscv/t-withmultilib-generator"
4673 echo "invalid option for --with-multilib-generator" 1>&2
4678 echo "--with-multilib-generator= is not supported for ${target}, only supported for riscv*-*-elf*" 1>&2
4684 # Handle --with-multilib-list.
4685 if test "x${with_multilib_list}" != xdefault; then
4686 tmake_file="${tmake_file} riscv/t-withmultilib"
4688 case ${with_multilib_list} in
4689 ilp32 | ilp32f | ilp32d \
4690 | lp64 | lp64f | lp64d )
4691 TM_MULTILIB_CONFIG="${with_arch},${with_multilib_list}"
4694 echo "--with-multilib-list=${with_multilib_list} not supported."
4701 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"
4703 case ${with_float} in
4708 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4714 "" | single | double)
4718 echo "Unknown fpu type used in --with-fpu=$with_fpu" 1>&2
4728 echo "Unknown NaN encoding used in --with-nan=$with_nan" 1>&2
4733 case ${with_fp_32} in
4738 echo "Unknown FP mode used in --with-fp-32=$with_fp_32" 1>&2
4743 case ${with_odd_spreg_32} in
4745 with_odd_spreg_32="odd-spreg"
4748 with_odd_spreg_32="no-odd-spreg"
4754 echo "Unknown odd-spreg-32 type used in --with-odd-spreg-32=$with_odd_spreg_32" 1>&2
4760 "" | 32 | o64 | n32 | 64 | eabi)
4764 echo "Unknown ABI used in --with-abi=$with_abi" 1>&2
4769 case ${with_divide} in
4770 "" | breaks | traps)
4774 echo "Unknown division check type use in --with-divide=$with_divide" 1>&2
4779 case ${with_llsc} in
4790 echo "Unknown llsc type used in --with-llsc" 1>&2
4795 case ${with_mips_plt} in
4800 with_mips_plt=no-plt
4805 echo "Unknown --with-mips-plt argument: $with_mips_plt" 1>&2
4810 case ${with_synci} in
4820 echo "Unknown synci type used in --with-synci" 1>&2
4825 case ${with_lxc1_sxc1} in
4827 with_lxc1_sxc1=lxc1-sxc1
4830 with_lxc1_sxc1=no-lxc1-sxc1
4835 echo "Unknown lxc1-sxc1 type used in --with-lxc1-sxc1" 1>&2
4840 case ${with_madd4} in
4850 echo "Unknown madd4 type used in --with-madd4" 1>&2
4855 case ${with_compact_branches} in
4856 "" | never | always | optimal)
4859 echo "Unknown compact-branches policy used in --with-compact-branches" 1>&2
4866 supported_defaults="abi arch tune fpu"
4870 abi_pattern abi_default \
4871 abiext_pattern abiext_default \
4872 arch_pattern arch_default \
4873 fpu_pattern fpu_default \
4874 tune_pattern tune_default \
4875 triplet_os triplet_abi
4877 # Infer ABI from the triplet.
4879 loongarch64-*-*-*f64)
4883 loongarch64-*-*-*f32)
4887 loongarch64-*-*-*sf)
4892 abi_pattern="lp64[dfs]"
4897 echo "Unsupported target ${target}." 1>&2
4903 abiext_default="base"
4905 # Get the canonical triplet (multiarch specifier).
4907 *-linux-gnu*) triplet_os="linux-gnu";;
4908 *-linux-musl*) triplet_os="linux-musl";;
4910 echo "Unsupported target ${target}." 1>&2
4915 la_canonical_triplet="loongarch64-${triplet_os}${triplet_abi}"
4918 # Perform initial sanity checks on --with-* options.
4919 case ${with_arch} in
4920 "" | loongarch64 | la464) ;; # OK, append here.
4922 if test x${host} != x${target}; then
4923 echo "--with-arch=native is illegal for cross-compiler." 1>&2
4928 echo "Please set a default value for \${with_arch}" \
4929 "according to your target triplet \"${target}\"." 1>&2
4933 echo "Unknown arch in --with-arch=$with_arch" 1>&2
4939 "" | lp64d | lp64f | lp64s) ;; # OK, append here.
4941 echo "Unsupported ABI given in --with-abi=$with_abi" 1>&2
4946 case ${with_abiext} in
4947 "" | base) ;; # OK, append here.
4949 echo "Unsupported ABI extention type $with_abiext" 1>&2
4955 "" | none | 32 | 64) ;; # OK, append here.
4957 # Convert "0" to "none" for upcoming checks.
4961 echo "Unknown fpu type in --with-fpu=$with_fpu" 1>&2
4967 # Set default value for with_abi.
4970 if test x${abi_default} != x; then
4971 with_abi=${abi_default}
4973 with_abi=${abi_pattern}
4978 if echo "${with_abi}" | grep -E "^${abi_pattern}$" > /dev/null; then
4981 echo "Incompatible options:" \
4982 "--with-abi=${with_abi} and --target=${target}." 1>&2
4988 # Set default value for with_abiext (internal)
4989 case ${with_abiext} in
4991 if test x${abiext_default} != x; then
4992 with_abiext=${abiext_default}
4994 with_abiext=${abiext_pattern}
4999 if echo "${with_abiext}" | grep -E "^${abiext_pattern}$" > /dev/null; then
5002 echo "The ABI extension type \"${with_abiext}\"" \
5003 "is incompatible with --target=${target}." 1>&2
5010 # Infer ISA-related default options from the ABI: pass 1
5011 case ${with_abi}/${with_abiext} in
5013 # architectures that support lp64* ABI
5014 arch_pattern="native|loongarch64|la464"
5015 # default architecture for lp64* ABI
5016 arch_default="loongarch64"
5019 echo "Unsupported ABI type ${with_abi}/${with_abiext}." 1>&2
5024 # Infer ISA-related default options from the ABI: pass 2
5025 case ${with_abi}/${with_abiext} in
5034 fpu_pattern="none|32|64"
5038 echo "Unsupported ABI type ${with_abi}/${with_abiext}." 1>&2
5043 ## Set default value for with_arch.
5044 case ${with_arch} in
5046 if test x${arch_default} != x; then
5047 with_arch=${arch_default}
5049 with_arch=${arch_pattern}
5054 if echo "${with_arch}" | grep -E "^${arch_pattern}$" > /dev/null; then
5057 echo "${with_abi}/${with_abiext} ABI cannot be implemented with" \
5058 "--with-arch=${with_arch}." 1>&2
5064 ## Set default value for with_fpu.
5067 if test x${fpu_default} != x; then
5068 with_fpu=${fpu_default}
5070 with_fpu=${fpu_pattern}
5075 if echo "${with_fpu}" | grep -E "^${fpu_pattern}$" > /dev/null; then
5078 echo "${with_abi}/${with_abiext} ABI cannot be implemented with" \
5079 "--with-fpu=${with_fpu}." 1>&2
5086 # Infer default with_tune from with_arch: pass 1
5087 case ${with_arch} in
5090 tune_default="native"
5093 tune_pattern="loongarch64|la464"
5094 tune_default="la464"
5097 # By default, $with_tune == $with_arch
5098 tune_pattern="$with_arch"
5102 ## Set default value for with_tune.
5103 case ${with_tune} in
5105 if test x${tune_default} != x; then
5106 with_tune=${tune_default}
5108 with_tune=${tune_pattern}
5113 if echo "${with_tune}" | grep -E "^${tune_pattern}$" > /dev/null; then
5116 echo "Incompatible options: --with-tune=${with_tune}" \
5117 "and --with-arch=${with_arch}." 1>&2
5123 # Handle --with-multilib-list.
5124 if test x"${with_multilib_list}" = x \
5125 || test x"${with_multilib_list}" = xno \
5126 || test x"${with_multilib_list}" = xdefault \
5127 || test x"${enable_multilib}" != xyes; then
5129 with_multilib_list="${with_abi}/${with_abiext}"
5132 # Check if the configured default ABI combination is included in
5133 # ${with_multilib_list}.
5134 loongarch_multilib_list_sane=no
5136 # This one goes to TM_MULTILIB_CONFIG, for use in t-linux.
5137 loongarch_multilib_list_make=""
5139 # This one goes to tm_defines, for use in loongarch-driver.c.
5140 loongarch_multilib_list_c=""
5142 # ${with_multilib_list} should not contain whitespaces,
5143 # consecutive commas or slashes.
5144 if echo "${with_multilib_list}" \
5145 | grep -E -e "[[:space:]]" -e '[,/][,/]' -e '[,/]$' -e '^[,/]' > /dev/null; then
5146 echo "Invalid argument to --with-multilib-list." 1>&2
5150 unset component idx elem_abi_base elem_abi_ext elem_tmp
5151 for elem in $(echo "${with_multilib_list}" | tr ',' ' '); do
5155 component=$(echo "${elem}" | awk -F'/' '{print $'"${idx}"'}')
5159 # Component 1: Base ABI type
5160 case ${component} in
5161 lp64d) elem_tmp="ABI_BASE_LP64D,";;
5162 lp64f) elem_tmp="ABI_BASE_LP64F,";;
5163 lp64s) elem_tmp="ABI_BASE_LP64S,";;
5165 echo "Unknown base ABI \"${component}\" in --with-multilib-list." 1>&2
5169 loongarch_multilib_list_c="${loongarch_multilib_list_c}${elem_tmp}"
5170 loongarch_multilib_list_make="${loongarch_multilib_list_make}mabi=${component}"
5171 elem_abi_base="${component}"
5175 # Component 2: ABI extension type
5176 case ${component} in
5179 elem_tmp="ABI_EXT_BASE,"
5182 echo "Unknown ABI extension \"${component}\" in --with-multilib-list." 1>&2
5186 loongarch_multilib_list_c="${loongarch_multilib_list_c}${elem_tmp}"
5187 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5188 elem_abi_ext="${component}"
5192 # Component 3 and on: optional stuff
5193 case ${component} in
5195 # End of component list.
5199 echo "Unknown ABI \"${elem}\" in --with-multilib-list." 1>&2
5207 if test x${elem_abi_base} = x${with_abi} \
5208 && test x${elem_abi_ext} = x${with_abiext}; then
5209 loongarch_multilib_list_sane=yes
5211 loongarch_multilib_list_make="${loongarch_multilib_list_make},"
5214 # Check if the default ABI combination is in the default list.
5215 if test x${loongarch_multilib_list_sane} = xno; then
5216 if test x${with_abiext} = xbase; then
5219 with_abiext="/${with_abiext}"
5222 echo "Default ABI combination (${with_abi}${with_abiext})" \
5223 "not found in --with-multilib-list." 1>&2
5227 # Remove the excessive appending comma.
5228 loongarch_multilib_list_c=${loongarch_multilib_list_c%,}
5229 loongarch_multilib_list_make=${loongarch_multilib_list_make%,}
5233 supported_defaults="arch cpu nds32_lib float fpu_config"
5235 # process --with-arch
5236 case "${with_arch}" in
5238 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5242 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5245 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=1"
5248 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=2"
5252 echo "Cannot accept --with-arch=$with_arch, available values are: v2 v2j v3 v3m v3f v3s" 1>&2
5257 case "${with_cpu}" in
5261 n6 | n7 |n8 | e8 | s8 | n9 | n10 | d10 | n12 | n13 | n15)
5265 echo "Cannot accept --with-cpu=$with_cpu, available values are: n6 n7 n8 e8 s8 n9 n10 d10 n12 n13 n15" 1>&2
5270 # process --with-nds32-lib
5271 case "${with_nds32_lib}" in
5275 with_nds32_lib=ulibc
5278 with_nds32_lib=glibc
5281 with_nds32_lib=newlib
5282 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5288 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5292 # for the arch=v3f or arch=v3s under mculib toolchain,
5293 # we would like to set -fno-math-errno as default
5294 case "${with_arch}" in
5296 tm_defines="${tm_defines} TARGET_DEFAULT_NO_MATH_ERRNO=1"
5304 echo "Cannot accept --with-nds32-lib=$with_nds32_lib, available values are: newlib mculib glibc uclibc" 1>&2
5309 # process --with-float
5310 case "${with_float}" in
5315 echo "Cannot accept --with-float=$with_float, available values are: soft hard" 1>&2
5320 # process --with-config-fpu
5321 case "${with_config_fpu}" in
5326 echo "Cannot accept --with-config-fpu=$with_config_fpu, available values from 0 to 7" 1>&2
5334 supported_defaults="arch"
5335 case "$with_arch" in
5340 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5347 supported_defaults=arch
5348 TM_MULTILIB_CONFIG=$with_arch
5349 #TODO 'sm_[...]' list per 'nvptx-sm.def'.
5354 sm_35 | sm_53 | sm_70 | sm_75 | sm_80 )
5355 # OK, but we'd like 'sm_30', too.
5356 TM_MULTILIB_CONFIG="$TM_MULTILIB_CONFIG sm_30"
5359 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5365 powerpc*-*-* | rs6000-*-*)
5366 supported_defaults="abi cpu cpu_32 cpu_64 float tune tune_32 tune_64 advance_toolchain"
5368 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5369 eval "val=\$with_$which"
5371 default32 | default64)
5376 echo "$val only valid for --with-cpu and --with-tune." 1>&2
5380 with_which="with_$which"
5384 tm_defines="${tm_defines} CONFIG_PPC405CR"
5385 eval "with_$which=405"
5387 "" | common | native \
5388 | power[3456789] | power10 | power5+ | power6x \
5389 | powerpc | powerpc64 | powerpc64le \
5391 | 401 | 403 | 405 | 405fp | 440 | 440fp | 464 | 464fp \
5392 | 476 | 476fp | 505 | 601 | 602 | 603 | 603e | ec603e \
5393 | 604 | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 \
5394 | a2 | e300c[23] | 854[08] | e500mc | e500mc64 | e5500 | e6500 \
5395 | titan | 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5 | cell)
5399 echo "Unknown cpu used in --with-$which=$val." 1>&2
5406 "" | elfv1 | elfv2 )
5410 echo "Unknown ABI used in --with-abi=$with_abi"
5415 if test "x$with_advance_toolchain" != x; then
5416 if test -d "/opt/$with_advance_toolchain/." -a \
5417 -d "/opt/$with_advance_toolchain/bin/." -a \
5418 -d "/opt/$with_advance_toolchain/include/."; then
5420 tm_file="$tm_file ./advance-toolchain.h"
5421 (at="/opt/$with_advance_toolchain"
5422 echo "/* Use Advance Toolchain $at */"
5424 echo "#undef LINK_OS_NEW_DTAGS_SPEC"
5425 echo "#define LINK_OS_NEW_DTAGS_SPEC" \
5426 "\"--enable-new-dtags\""
5428 echo "#undef DYNAMIC_LINKER_PREFIX"
5429 echo "#define DYNAMIC_LINKER_PREFIX \"$at\""
5431 echo "#undef MD_EXEC_PREFIX"
5432 echo "#define MD_EXEC_PREFIX \"$at/bin/\""
5434 echo "#undef MD_STARTFILE_PREFIX"
5435 echo "#define MD_STARTFILE_PREFIX \"$prefix/lib/\""
5437 echo "#undef MD_STARTFILE_PREFIX_1"
5438 echo "#define MD_STARTFILE_PREFIX_1 \"$at/lib/\"") \
5439 > advance-toolchain.h
5441 echo "Unknown advance-toolchain $with_advance_toolchain"
5446 # Set up the default long double format if the user changed it.
5447 if test x$with_long_double_format = xieee; then
5448 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=1"
5450 elif test x$with_long_double_format = xibm; then
5451 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=0"
5456 supported_defaults="arch mode tune"
5458 for which in arch tune; do
5459 eval "val=\$with_$which"
5461 "" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | z15 | z16 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12 | arch13 | arch14 )
5465 echo "Unknown cpu used in --with-$which=$val." 1>&2
5471 case ${with_mode} in
5476 echo "Unknown architecture mode used in --with-mode=$with_mode." 1>&2
5482 sh[123456ble]*-*-* | sh-*-*)
5483 supported_defaults="cpu"
5484 case "`echo $with_cpu | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz- | sed s/sh/m/`" in
5485 "" | m1 | m2 | m2e | m3 | m3e | m4 | m4-single | m4-single-only | m4-nofpu )
5488 m2a | m2a-single | m2a-single-only | m2a-nofpu)
5490 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al)
5493 echo "Unknown CPU used in --with-cpu=$with_cpu, known values:" 1>&2
5494 echo "m1 m2 m2e m3 m3e m4 m4-single m4-single-only m4-nofpu" 1>&2
5495 echo "m4a m4a-single m4a-single-only m4a-nofpu m4al" 1>&2
5496 echo "m2a m2a-single m2a-single-only m2a-nofpu" 1>&2
5502 supported_defaults="cpu cpu_32 cpu_64 float tune tune_32 tune_64"
5504 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5505 eval "val=\$with_$which"
5507 "" | sparc | sparcv9 | sparc64 \
5509 | v8 | supersparc | hypersparc | leon | leon3 | leon3v7 \
5510 | sparclite | f930 | f934 | sparclite86x \
5511 | sparclet | tsc701 \
5512 | v9 | ultrasparc | ultrasparc3 | niagara | niagara2 \
5513 | niagara3 | niagara4 | niagara7 | m8)
5517 echo "Unknown cpu used in --with-$which=$val" 1>&2
5523 case ${with_float} in
5528 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
5535 supported_defaults="arch"
5537 case ${with_arch} in
5538 "" | c62x | c64x | c64x+ | c67x | c67x+ | c674x)
5542 echo "Unknown arch used in --with-arch=$with_arch." 1>&2
5549 supported_defaults=cpu
5551 "" | v850e | v850e1 | v850e2 | v850es | v850e2v3 | v850e3v5)
5555 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5561 supported_defaults="cpu"
5565 *) echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5572 # VxWorks support for shared libraries has to be requested explicitly,
5573 # so we can factor this part here:
5575 case "${target}-${enable_shared}" in
5577 tmake_file="${tmake_file} t-slibgcc"
5581 # Targets for which there is at least one VxWorks port should include
5582 # vxworks-dummy.h to allow safe references to various TARGET_VXWORKS kinds
5583 # of markers from other files in the port, including the vxworks*.h files to
5584 # distinguish VxWorks variants such as VxWorks 7 or 64).
5587 arm*-*-* | i[34567]86-*-* | mips*-*-* | powerpc*-*-* | sh*-*-* \
5588 | sparc*-*-* | x86_64-*-*)
5589 tm_file="vxworks-dummy.h ${tm_file}"
5593 # Set some miscellaneous flags for particular targets.
5594 target_cpu_default2=
5597 if test x"$target_cpu_cname" != x
5599 target_cpu_default2=$target_cpu_cname
5604 if test x$with_cpu = x
5606 echo "Don't know the target cpu" 1>&2
5609 target_cpu_default2="\\\"$with_cpu\\\""
5614 if test x$gas = xyes
5616 target_cpu_default2="MASK_GAS"
5620 fido*-*-* | m68k*-*-*)
5621 target_cpu_default2=$m68k_cpu_ident
5622 tmake_file="m68k/t-opts $tmake_file"
5623 if [ x"$m68k_arch_family" != x ]; then
5624 tmake_file="m68k/t-$m68k_arch_family $tmake_file"
5628 i[34567]86-*-darwin* | x86_64-*-darwin*)
5630 i[34567]86-*-linux* | x86_64-*-linux*)
5631 extra_objs="${extra_objs} gnu-property.o"
5632 tmake_file="$tmake_file i386/t-linux i386/t-gnu-property"
5634 i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu)
5635 tmake_file="$tmake_file i386/t-kfreebsd"
5638 tmake_file="$tmake_file i386/t-gnu"
5640 i[34567]86-*-msdosdjgpp*)
5641 tmake_file="${tmake_file} i386/t-djgpp"
5643 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
5645 i[34567]86-*-cygwin* | x86_64-*-cygwin*)
5647 i[34567]86-*-mingw* | x86_64-*-mingw*)
5649 i[34567]86-*-dragonfly* | x86_64-*-dragonfly*)
5651 i[34567]86-*-freebsd*)
5654 tmake_file="${tmake_file} i386/t-freebsd64"
5660 if test x$gnu_ld = xyes
5662 target_cpu_default2="MASK_SPLIT_ADDRESSES"
5666 tm_defines="TARGET_ENDIAN_DEFAULT=0 $tm_defines"
5669 if test x$with_arch != x; then
5670 default_mips_arch=$with_arch
5672 with_arch=$default_mips_arch
5674 if test x$with_abi != x; then
5675 default_mips_abi=$with_abi
5677 case ${default_mips_arch} in
5678 mips1) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS1" ;;
5679 mips2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS2" ;;
5680 mips3) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3" ;;
5681 mips4) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS4" ;;
5682 mips32) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32" ;;
5683 mips32r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2" ;;
5684 mips32r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6" ;;
5685 mips64) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64" ;;
5686 mips64r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2" ;;
5687 mips64r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6" ;;
5689 case ${default_mips_abi} in
5690 32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_32" ;;
5691 o64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_O64" ;;
5692 n32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_N32" ;;
5693 64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_64" ;;
5694 eabi) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_EABI" ;;
5696 tmake_file="mips/t-mips $tmake_file"
5700 # Export canonical triplet.
5701 tm_defines="${tm_defines} LA_MULTIARCH_TRIPLET=${la_canonical_triplet}"
5703 # Define macro LA_DISABLE_MULTILIB if --disable-multilib
5704 tm_defines="${tm_defines} TM_MULTILIB_LIST=${loongarch_multilib_list_c}"
5705 if test x$enable_multilib = xyes; then
5706 TM_MULTILIB_CONFIG="${loongarch_multilib_list_make}"
5708 tm_defines="${tm_defines} LA_DISABLE_MULTILIB"
5711 # Let --with- flags initialize the enum variables from loongarch.opt.
5712 # See macro definitions from loongarch-opts.h and loongarch-cpu.h.
5713 case ${with_arch} in
5714 native) tm_defines="${tm_defines} DEFAULT_CPU_ARCH=CPU_NATIVE" ;;
5715 la464) tm_defines="${tm_defines} DEFAULT_CPU_ARCH=CPU_LA464" ;;
5716 loongarch64) tm_defines="${tm_defines} DEFAULT_CPU_ARCH=CPU_LOONGARCH64" ;;
5719 case ${with_tune} in
5720 native) tm_defines="${tm_defines} DEFAULT_CPU_TUNE=CPU_NATIVE" ;;
5721 la464) tm_defines="${tm_defines} DEFAULT_CPU_TUNE=CPU_LA464" ;;
5722 loongarch64) tm_defines="${tm_defines} DEFAULT_CPU_TUNE=CPU_LOONGARCH64" ;;
5726 lp64d) tm_defines="${tm_defines} DEFAULT_ABI_BASE=ABI_BASE_LP64D" ;;
5727 lp64f) tm_defines="${tm_defines} DEFAULT_ABI_BASE=ABI_BASE_LP64F" ;;
5728 lp64s) tm_defines="${tm_defines} DEFAULT_ABI_BASE=ABI_BASE_LP64S" ;;
5731 case ${with_abiext} in
5732 base) tm_defines="${tm_defines} DEFAULT_ABI_EXT=ABI_EXT_BASE" ;;
5736 none) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_NOFPU" ;;
5737 32) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU32" ;;
5738 64) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU64" ;;
5741 tmake_file="loongarch/t-loongarch $tmake_file"
5744 powerpc*-*-* | rs6000-*-*)
5745 # FIXME: The PowerPC port uses the value set at compile time,
5746 # although it's only cosmetic.
5747 if test "x$with_cpu" != x
5749 target_cpu_default2="\\\"$with_cpu\\\""
5751 out_file="${cpu_type}/${cpu_type}.cc"
5752 c_target_objs="${c_target_objs} ${cpu_type}-c.o"
5753 cxx_target_objs="${cxx_target_objs} ${cpu_type}-c.o"
5754 d_target_objs="${d_target_objs} ${cpu_type}-d.o"
5755 tmake_file="${cpu_type}/t-${cpu_type} ${tmake_file}"
5758 sh[123456ble]*-*-* | sh-*-*)
5759 c_target_objs="${c_target_objs} sh-c.o"
5760 cxx_target_objs="${cxx_target_objs} sh-c.o"
5764 # Some standard aliases.
5769 xsparcv9 | xsparc64)
5774 if test x$with_tune = x ; then
5785 # The SPARC port checks this value at compile-time.
5786 target_cpu_default2="TARGET_CPU_$with_cpu"
5790 case "x$with_cpu" in
5793 xv850e | xv850e1 | xv850e2 | xv850e2v3 | xv850e3v5)
5794 target_cpu_default2="TARGET_CPU_$with_cpu"
5797 target_cpu_default2="TARGET_CPU_v850e1"
5802 target_cpu_default2="TARGET_CPU_$with_cpu"
5807 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"
5808 for option in $all_defaults
5810 eval "val=\$with_"`echo $option | sed s/-/_/g`
5811 if test -n "$val"; then
5812 case " $supported_defaults " in
5816 echo "This target does not support --with-$option." 2>&1
5817 echo "Valid --with options are: $supported_defaults" 2>&1
5824 t="{ \"$option\", \"$val\" }"
5826 t="${t}, { \"$option\", \"$val\" }"
5833 configure_default_options="{ { NULL, NULL} }"
5835 configure_default_options="{ ${t} }"
5838 if test "$target_cpu_default2" != ""
5840 if test "$target_cpu_default" != ""
5842 target_cpu_default="(${target_cpu_default}|${target_cpu_default2})"
5844 target_cpu_default=$target_cpu_default2
5849 i[34567]86-*-* | x86_64-*-*)
5850 if test x$enable_as_accelerator = xyes; then
5851 extra_programs="mkoffload\$(exeext)"