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 # Obsolete configurations.
255 if test "x$enable_obsolete" != xyes; then
256 echo "*** Configuration ${target} is obsolete." >&2
257 echo "*** Specify --enable-obsolete to build it anyway." >&2
258 echo "*** Support will be REMOVED in the next major release of GCC," >&2
259 echo "*** unless a maintainer comes forward." >&2
264 # Unsupported targets list. Do not put an entry in this list unless
265 # it would otherwise be caught by a more permissive pattern. The list
266 # should be in alphabetical order.
268 # Avoid special cases that are not obsolete
279 | i[34567]86-go32-* \
280 | i[34567]86-*-go32* \
284 | m68k-*-uclinuxoldabi* \
285 | mips64orion*-*-rtems* \
287 | powerpc*-*-linux*paired* \
289 | sparc-hal-solaris2* \
292 | *-*-freebsd[12] | *-*-freebsd[1234].* \
293 | *-*-freebsd*aout* \
301 | *-*-solaris2.[0-9] \
302 | *-*-solaris2.[0-9].* \
307 echo "*** Configuration ${target} not supported" 1>&2
312 # Set default cpu_type, tm_file, tm_p_file and xm_file so it can be
313 # updated in each machine entry. Also set default extra_headers for some
316 cpu_type=`echo ${target} | sed 's/-.*$//'`
321 tmake_file=m32c/t-m32c
322 target_has_targetm_common=no
326 extra_headers="arm_fp16.h arm_neon.h arm_bf16.h arm_acle.h arm_sve.h"
327 c_target_objs="aarch64-c.o"
328 cxx_target_objs="aarch64-c.o"
329 d_target_objs="aarch64-d.o"
330 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"
331 target_gtfiles="\$(srcdir)/config/aarch64/aarch64-builtins.cc \$(srcdir)/config/aarch64/aarch64-sve-builtins.h \$(srcdir)/config/aarch64/aarch64-sve-builtins.cc"
332 target_has_targetm_common=yes
336 extra_options="${extra_options} g.opt"
347 c_target_objs="arc-c.o"
348 cxx_target_objs="arc-c.o"
349 extra_options="${extra_options} arc/arc-tables.opt g.opt"
350 extra_headers="arc-simd.h"
354 extra_objs="arm-builtins.o arm-mve-builtins.o aarch-common.o"
355 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"
356 target_type_format_char='%'
357 c_target_objs="arm-c.o"
358 cxx_target_objs="arm-c.o"
359 d_target_objs="arm-d.o"
360 extra_options="${extra_options} arm/arm-tables.opt"
361 target_gtfiles="\$(srcdir)/config/arm/arm-builtins.cc \$(srcdir)/config/arm/arm-mve-builtins.h \$(srcdir)/config/arm/arm-mve-builtins.cc"
365 c_target_objs="avr-c.o"
366 cxx_target_objs="avr-c.o"
375 extra_options="${extra_options} g.opt"
378 target_has_targetm_common=no
380 moxie*) cpu_type=moxie
381 target_has_targetm_common=no
385 extra_headers=math-68881.h
386 extra_options="${extra_options} m68k/m68k-tables.opt"
388 i[34567]86-*-* | x86_64-*-*)
390 c_target_objs="i386-c.o"
391 cxx_target_objs="i386-c.o"
392 d_target_objs="i386-d.o"
393 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"
394 target_gtfiles="\$(srcdir)/config/i386/i386-builtins.cc \$(srcdir)/config/i386/i386-expand.cc \$(srcdir)/config/i386/i386-options.cc"
395 extra_options="${extra_options} fused-madd.opt"
396 extra_headers="cpuid.h mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h
397 pmmintrin.h tmmintrin.h ammintrin.h smmintrin.h
398 nmmintrin.h bmmintrin.h fma4intrin.h wmmintrin.h
399 immintrin.h x86intrin.h avxintrin.h xopintrin.h
400 ia32intrin.h cross-stdarg.h lwpintrin.h popcntintrin.h
401 lzcntintrin.h bmiintrin.h bmi2intrin.h tbmintrin.h
402 avx2intrin.h avx512fintrin.h fmaintrin.h f16cintrin.h
403 rtmintrin.h xtestintrin.h rdseedintrin.h prfchwintrin.h
404 adxintrin.h fxsrintrin.h xsaveintrin.h xsaveoptintrin.h
405 avx512cdintrin.h avx512erintrin.h avx512pfintrin.h
406 shaintrin.h clflushoptintrin.h xsavecintrin.h
407 xsavesintrin.h avx512dqintrin.h avx512bwintrin.h
408 avx512vlintrin.h avx512vlbwintrin.h avx512vldqintrin.h
409 avx512ifmaintrin.h avx512ifmavlintrin.h avx512vbmiintrin.h
410 avx512vbmivlintrin.h avx5124fmapsintrin.h avx5124vnniwintrin.h
411 avx512vpopcntdqintrin.h clwbintrin.h mwaitxintrin.h
412 clzerointrin.h pkuintrin.h sgxintrin.h cetintrin.h
413 gfniintrin.h cet.h avx512vbmi2intrin.h
414 avx512vbmi2vlintrin.h avx512vnniintrin.h
415 avx512vnnivlintrin.h vaesintrin.h vpclmulqdqintrin.h
416 avx512vpopcntdqvlintrin.h avx512bitalgintrin.h
417 pconfigintrin.h wbnoinvdintrin.h movdirintrin.h
418 waitpkgintrin.h cldemoteintrin.h avx512bf16vlintrin.h
419 avx512bf16intrin.h enqcmdintrin.h serializeintrin.h
420 avx512vp2intersectintrin.h avx512vp2intersectvlintrin.h
421 tsxldtrkintrin.h amxtileintrin.h amxint8intrin.h
422 amxbf16intrin.h x86gprintrin.h uintrintrin.h
423 hresetintrin.h keylockerintrin.h avxvnniintrin.h
424 mwaitintrin.h avx512fp16intrin.h avx512fp16vlintrin.h"
427 extra_headers=ia64intrin.h
428 extra_options="${extra_options} g.opt fused-madd.opt"
434 extra_options="${extra_options} g.opt"
438 extra_options="${extra_options} g.opt"
441 extra_headers=math-68881.h
442 extra_options="${extra_options} m68k/m68k-tables.opt"
446 extra_options="${extra_options} g.opt"
450 d_target_objs="mips-d.o"
451 extra_headers="loongson.h loongson-mmiintrin.h msa.h"
452 extra_objs="frame-header-opt.o"
453 extra_options="${extra_options} g.opt fused-madd.opt mips/mips-tables.opt"
457 extra_headers="larchintrin.h"
458 extra_objs="loongarch-c.o loongarch-builtins.o loongarch-cpu.o loongarch-opts.o loongarch-def.o"
459 extra_gcc_objs="loongarch-driver.o loongarch-cpu.o loongarch-opts.o loongarch-def.o"
460 extra_options="${extra_options} g.opt fused-madd.opt"
464 extra_headers="nds32_intrinsic.h nds32_isr.h nds32_init.inc"
467 extra_options="${extra_options} nds32/nds32-linux.opt"
470 extra_options="${extra_options} nds32/nds32-elf.opt"
475 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"
479 extra_options="${extra_options} g.opt"
483 c_target_objs="nvptx-c.o"
484 cxx_target_objs="nvptx-c.o"
485 extra_options="${extra_options} nvptx/nvptx-gen.opt"
492 extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
493 extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o"
494 extra_objs="${extra_objs} rs6000-builtins.o rs6000-builtin.o"
495 extra_headers="ppc-asm.h altivec.h htmintrin.h htmxlintrin.h"
496 extra_headers="${extra_headers} bmi2intrin.h bmiintrin.h"
497 extra_headers="${extra_headers} xmmintrin.h mm_malloc.h emmintrin.h"
498 extra_headers="${extra_headers} mmintrin.h x86intrin.h"
499 extra_headers="${extra_headers} pmmintrin.h tmmintrin.h smmintrin.h"
500 extra_headers="${extra_headers} nmmintrin.h immintrin.h x86gprintrin.h"
501 extra_headers="${extra_headers} ppu_intrinsics.h spu2vmx.h vec_types.h si2vmx.h"
502 extra_headers="${extra_headers} amo.h"
504 xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[3456789]|xpower10|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|xe6500)
508 extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
509 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.cc \$(srcdir)/config/rs6000/rs6000-call.cc"
510 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-pcrel-opt.cc"
511 target_gtfiles="$target_gtfiles ./rs6000-builtins.h"
518 extra_objs="riscv-builtins.o riscv-c.o riscv-sr.o riscv-shorten-memrefs.o riscv-selftests.o"
519 extra_objs="${extra_objs} riscv-vector-builtins.o"
520 d_target_objs="riscv-d.o"
521 extra_headers="riscv_vector.h"
524 extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
525 extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
526 extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o"
527 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.cc \$(srcdir)/config/rs6000/rs6000-call.cc"
528 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-pcrel-opt.cc"
532 c_target_objs="sparc-c.o"
533 cxx_target_objs="sparc-c.o"
534 d_target_objs="sparc-d.o"
535 extra_headers="visintrin.h"
539 d_target_objs="s390-d.o"
540 extra_options="${extra_options} fused-madd.opt"
541 extra_headers="s390intrin.h htmintrin.h htmxlintrin.h vecintrin.h"
543 # Note the 'l'; we need to be able to match e.g. "shle" or "shl".
544 sh[123456789lbe]*-*-* | sh-*-*)
546 extra_options="${extra_options} fused-madd.opt"
547 extra_objs="${extra_objs} sh_treg_combine.o sh-mem.o sh_optimize_sett_clrt.o"
554 extra_headers="c6x_intrinsics.h"
555 extra_options="${extra_options} c6x/c6x-tables.opt"
558 extra_options="${extra_options} fused-madd.opt"
562 tm_file=${cpu_type}/${cpu_type}.h
563 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-protos.h
565 tm_p_file=${cpu_type}/${cpu_type}-protos.h
569 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-d.h
571 tm_d_file="${tm_d_file} ${cpu_type}/${cpu_type}-d.h"
575 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-modes.def
577 extra_modes=${cpu_type}/${cpu_type}-modes.def
579 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}.opt
581 extra_options="${extra_options} ${cpu_type}/${cpu_type}.opt"
586 tm_p_file="${tm_p_file} arm/aarch-common-protos.h"
589 if test "x$with_multilib_list" = xilp32; then
590 tm_file="aarch64/biarchilp32.h ${tm_file}"
592 tm_file="aarch64/biarchlp64.h ${tm_file}"
596 tm_file="aarch64/biarchilp32.h ${tm_file}"
599 tm_file="aarch64/biarchlp64.h ${tm_file}"
602 echo "Unknown ABI used in --with-abi=$with_abi"
607 if test "x$with_abi" != x; then
608 echo "This target does not support --with-abi."
617 if test "x$with_multilib_list" = xmx32; then
618 tm_file="i386/biarchx32.h ${tm_file}"
620 tm_file="i386/biarch64.h ${tm_file}"
624 tm_file="i386/biarch64.h ${tm_file}"
627 tm_file="i386/biarchx32.h ${tm_file}"
630 echo "Unknown ABI used in --with-abi=$with_abi"
635 tm_p_file="arm/arm-flags.h ${tm_p_file} arm/aarch-common-protos.h"
639 # On a.out targets, we need to use collect2.
646 # Common C libraries.
647 tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
649 # 32-bit x86 processors supported by --with-arch=. Each processor
650 # MUST be separated by exactly one space.
651 x86_archs="athlon athlon-4 athlon-fx athlon-mp athlon-tbird \
652 athlon-xp k6 k6-2 k6-3 geode c3 c3-2 winchip-c6 winchip2 i386 i486 \
653 i586 i686 pentium pentium-m pentium-mmx pentium2 pentium3 pentium3m \
654 pentium4 pentium4m pentiumpro prescott lakemont samuel-2 nehemiah \
657 # 64-bit x86 processors supported by --with-arch=. Each processor
658 # MUST be separated by exactly one space.
659 x86_64_archs="amdfam10 athlon64 athlon64-sse3 barcelona bdver1 bdver2 \
660 bdver3 bdver4 znver1 znver2 znver3 btver1 btver2 k8 k8-sse3 opteron \
661 opteron-sse3 nocona core2 corei7 corei7-avx core-avx-i core-avx2 atom \
662 slm nehalem westmere sandybridge ivybridge haswell broadwell bonnell \
663 silvermont knl knm skylake-avx512 cannonlake icelake-client icelake-server \
664 skylake goldmont goldmont-plus tremont cascadelake tigerlake cooperlake \
665 sapphirerapids alderlake rocketlake eden-x2 nano nano-1000 nano-2000 nano-3000 \
666 nano-x2 eden-x4 nano-x4 lujiazui x86-64 x86-64-v2 x86-64-v3 x86-64-v4 native"
668 # Additional x86 processors supported by --with-cpu=. Each processor
669 # MUST be separated by exactly one space.
670 x86_cpus="generic intel"
672 # Common parts for widely ported systems.
675 tmake_file="t-darwin "
676 tm_file="${tm_file} darwin.h"
677 darwin_os=`echo ${target} | sed 's/.*darwin\([0-9.]*\).*$/\1/'`
678 darwin_maj=`expr "$darwin_os" : '\([0-9]*\).*'`
679 macos_min=`expr "$darwin_os" : '[0-9]*\.\([0-9]*\).*'`
681 if test x"${macos_min}" = x; then
685 # Tools hosted on earlier versions of Darwin constrained all object
686 # alignment to be 2^15 or smaller. From Darwin11 (macOS 10.7) the
687 # alignment of non-common is allowed to be up to 2^28. Note that the
688 #Â larger alignment is permitted when targeting 10.6 from 10.7 so that
689 #Â the constraint only need be applied per host (and only if the host
692 *-*-darwin[4-9]* | *-*-darwin10*)
693 tm_defines="$tm_defines L2_MAX_OFILE_ALIGNMENT=15U"
696 tm_defines="$tm_defines L2_MAX_OFILE_ALIGNMENT=28U"
700 # Darwin 4 to 19 correspond to macOS 10.0 to 10.15
701 *-*-darwin[4-9]* | *-*-darwin1[0-9]*)
702 macos_min=`expr $darwin_maj - 4`
705 # Darwin 20 corresponds to macOS 11, Darwin 21 to macOS 12.
706 macos_maj=`expr $darwin_maj - 9`
711 aarch64) macos_maj=11 ;;
712 x86_64) macos_min=6 ;;
716 *-*-darwin*) tm_defines="$tm_defines DARWIN_USE_KERNEL_VERS" ;;
718 # If configuring a cross-compiler then we will have set some
719 #Â default above, but it is probably not what was intended.
720 echo "Warning: Using ${target} is only suitable for Darwin hosts" 1>&2
721 echo "configure with an explicit target version" 1>&2
726 echo "Error: configuring for an unreleased macOS version ${target}" 1>&2
730 tm_defines="$tm_defines DEF_MIN_OSX_VERSION=\\\"${macos_maj}.${macos_min}\\\""
731 tm_defines="$tm_defines DEF_LD64=\\\"${def_ld64}\\\""
732 tm_file="${tm_file} ${cpu_type}/darwin.h"
733 tm_p_file="${tm_p_file} darwin-protos.h"
734 target_gtfiles="$target_gtfiles \$(srcdir)/config/darwin.cc"
735 extra_options="${extra_options} rpath.opt darwin.opt"
736 c_target_objs="${c_target_objs} darwin-c.o"
737 cxx_target_objs="${cxx_target_objs} darwin-c.o"
738 d_target_objs="${d_target_objs} darwin-d.o"
739 fortran_target_objs="darwin-f.o"
740 target_has_targetcm=yes
741 target_has_targetdm=yes
742 extra_objs="${extra_objs} darwin.o"
743 extra_gcc_objs="darwin-driver.o"
744 default_use_cxa_atexit=yes
746 case ${enable_threads} in
747 "" | yes | posix) thread_file='posix' ;;
753 tmake_file="t-slibgcc"
754 case ${enable_threads} in
759 # Let these non-posix thread selections fall through if requested
762 echo 'Unknown thread configuration for DragonFly BSD'
766 extra_options="$extra_options rpath.opt dragonfly.opt"
767 default_use_cxa_atexit=yes
769 d_target_objs="${d_target_objs} dragonfly-d.o"
770 tmake_file="${tmake_file} t-dragonfly"
771 target_has_targetdm=yes
774 # This is the generic ELF configuration of FreeBSD. Later
775 # machine-specific sections may refine and add to this
778 # Due to tm_file entry ordering issues that vary between cpu
779 # architectures, we only define fbsd_tm_file to allow the
780 # machine-specific section to dictate the final order of all
781 # entries of tm_file with the minor exception that components
782 # of the tm_file set here will always be of the form:
784 # freebsd<version_number>.h [freebsd-<conf_option>.h ...] freebsd-spec.h freebsd.h
786 # The machine-specific section should not tamper with this
787 # ordering but may order all other entries of tm_file as it
788 # pleases around the provided core setting.
791 fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
792 if test "$fbsd_major" = ""; then
793 echo "Specify the major version number of the targeted FreeBSD release"
794 echo "like this: --target=amd64-unknown-freebsd10.1"
797 tm_defines="${tm_defines} FBSD_MAJOR=${fbsd_major}"
798 tmake_file="t-slibgcc"
799 case ${enable_threads} in
801 fbsd_tm_file="${fbsd_tm_file} freebsd-nthr.h"
807 echo 'Unknown thread configuration for FreeBSD'
811 fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h freebsd-stdint.h"
812 extra_options="$extra_options rpath.opt freebsd.opt"
817 default_use_cxa_atexit=yes;;
820 d_target_objs="${d_target_objs} freebsd-d.o"
821 tmake_file="${tmake_file} t-freebsd"
822 target_has_targetdm=yes
825 native_system_header_dir=/include
827 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi)
828 extra_options="$extra_options gnu-user.opt"
831 case ${enable_threads} in
832 "" | yes | posix) thread_file='posix' ;;
834 tmake_file="t-slibgcc"
836 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
839 native_system_header_dir=/include
842 # Linux C libraries selection switch: glibc / uclibc / bionic.
843 # uclibc and bionic aren't usable for GNU/Hurd and neither for GNU/k*BSD.
846 tm_p_file="${tm_p_file} linux-protos.h"
847 tmake_file="${tmake_file} t-linux"
848 extra_objs="${extra_objs} linux.o"
849 extra_options="${extra_options} linux.opt"
854 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC"
856 *-*-*uclibc* | *-*-uclinuxfdpiceabi)
857 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
860 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
863 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
866 # Assume that glibc or uClibc or Bionic are being used and so __cxa_atexit
868 default_use_cxa_atexit=yes
871 # Enable compilation for Android by default for *android* targets.
874 tm_defines="$tm_defines ANDROID_DEFAULT=1"
877 tm_defines="$tm_defines ANDROID_DEFAULT=0"
880 c_target_objs="${c_target_objs} glibc-c.o"
881 cxx_target_objs="${cxx_target_objs} glibc-c.o"
882 d_target_objs="${d_target_objs} glibc-d.o"
883 tmake_file="${tmake_file} t-glibc"
884 target_has_targetcm=yes
885 target_has_targetdm=yes
887 *-*-*uclibc* | *-*-uclinuxfdpiceabi)
890 # Linux targets always support .init_array.
891 gcc_cv_initfini_array=yes
896 tm_p_file="${tm_p_file} netbsd-protos.h"
897 tmake_file="t-netbsd t-slibgcc"
898 extra_objs="${extra_objs} netbsd.o"
899 d_target_objs="${d_target_objs} netbsd-d.o"
903 case ${enable_threads} in
904 "" | yes | posix) thread_file='posix' ;;
906 nbsd_tm_file="netbsd.h netbsd-stdint.h netbsd-elf.h"
907 default_use_cxa_atexit=yes
908 target_has_targetdm=yes
910 arm*-* | i[34567]86-* | powerpc*-* | sparc*-* | x86_64-*)
911 default_gnu_indirect_function=yes
916 tmake_file="t-openbsd"
917 case ${enable_threads} in
923 *-*-openbsd4.[3-9]|*-*-openbsd[5-9]*)
924 default_use_cxa_atexit=yes
927 d_target_objs="${d_target_objs} openbsd-d.o"
928 target_has_targetdm=yes
933 default_use_cxa_atexit=yes
936 case ${enable_threads} in
937 "" | yes | rtems) thread_file='rtems' ;;
938 posix) thread_file='posix' ;;
941 echo 'Unknown thread configuration for RTEMS'
945 tmake_file="${tmake_file} t-rtems"
946 extra_options="${extra_options} rtems.opt"
947 default_use_cxa_atexit=yes
951 extra_options="$extra_options gnu-user.opt"
953 case ${enable_threads} in
954 "" | yes | posix) thread_file='posix' ;;
956 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC SINGLE_LIBC"
962 # i?86-*-solaris2* needs to insert headers between cpu default and
963 # Solaris 2 specific ones.
964 sol2_tm_file_head="elfos.h ${cpu_type}/sysv4.h"
965 sol2_tm_file_tail="${cpu_type}/sol2.h sol2.h"
966 sol2_tm_file="${sol2_tm_file_head} ${sol2_tm_file_tail}"
968 *-*-solaris2.1[1-9]*)
969 # __cxa_atexit was introduced in Solaris 11.4.
970 default_use_cxa_atexit=yes
974 if test x$gnu_ld = xyes; then
975 tm_file="usegld.h ${tm_file}"
977 if test x$gas = xyes; then
978 tm_file="usegas.h ${tm_file}"
980 tm_p_file="${tm_p_file} sol2-protos.h"
981 tmake_file="${tmake_file} t-sol2 t-slibgcc"
982 c_target_objs="${c_target_objs} sol2-c.o"
983 cxx_target_objs="${cxx_target_objs} sol2-c.o sol2-cxx.o"
984 d_target_objs="${d_target_objs} sol2-d.o"
985 extra_objs="${extra_objs} sol2.o sol2-stubs.o"
986 extra_options="${extra_options} sol2.opt"
987 case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
988 "":yes:* | yes:yes:* )
992 target_has_targetdm=yes
995 extra_options="${extra_options} vms/vms.opt"
997 tmake_file="vms/t-vms t-slibgcc"
999 target_gtfiles="$target_gtfiles \$(srcdir)/config/vms/vms.cc"
1000 tm_p_file="${tm_p_file} vms/vms-protos.h"
1001 xm_file="vms/xm-vms.h"
1002 c_target_objs="vms-c.o"
1003 cxx_target_objs="vms-c.o"
1004 fortran_target_objs="vms-f.o"
1005 use_gcc_stdint=provide
1006 tm_file="${tm_file} vms/vms-stdint.h"
1007 if test x$gnu_ld != xyes; then
1008 # Build wrappers for native case.
1009 extra_programs="ld\$(exeext) ar\$(exeext)"
1010 tmake_file="$tmake_file vms/t-vmsnative"
1014 tmake_file=t-vxworks
1017 extra_options="${extra_options} vxworks.opt"
1018 extra_objs="$extra_objs vxworks.o"
1020 c_target_objs="${c_target_objs} vxworks-c.o"
1021 cxx_target_objs="${cxx_target_objs} vxworks-c.o"
1022 extra_headers="${extra_headers} ../vxworks/vxworks-predef.h"
1023 target_has_targetcm="yes"
1025 extra_gcc_objs="vxworks-driver.o"
1027 # This private header exposes a consistent interface for checks on
1028 # the VxWorks version our runtime header files need to perform, based on
1029 # what the system headers adverstise:
1031 extra_headers="${extra_headers} ../vxworks/_vxworks-versions.h"
1033 # Starting from VxWorks 7, the system comes with a Dinkumware
1034 # environment which requires the inclusion of "yvals.h" before other
1035 # system headers. We provide wrapped versions of a few headers to
1036 # accomodate such constraints:
1038 extra_headers="${extra_headers} ../vxworks/_yvals.h"
1039 extra_headers="${extra_headers} ../vxworks/_yvals-wrapper.h"
1041 extra_headers="${extra_headers} ../vxworks/math.h ../vxworks/complex.h"
1042 extra_headers="${extra_headers} ../vxworks/inttypes.h ../vxworks/setjmp.h"
1044 # We provide (a tailored version of) stdint.h
1045 tm_file="${tm_file} vxworks-stdint.h"
1046 use_gcc_stdint=provide
1048 case ${enable_threads} in
1050 "" | yes | vxworks) thread_file='vxworks' ;;
1051 *) echo 'Unknown thread configuration for VxWorks'; exit 1 ;;
1054 # A few common macro definitions conveying general characteristics
1055 # of the configuration at hand. Note that by VxWorks 7, we mean the
1056 # the SR6xx major update or beyond in vendor parlance:
1060 tm_defines="$tm_defines TARGET_VXWORKS7=1"
1065 tm_defines="$tm_defines TARGET_VXWORKS64=1"
1069 # Then a few build configuration controls for VxWorks 7, which
1070 # has specificities on top of which we aim to provide more complete
1075 # VxWorks 7 always has init/fini_array support and it is simpler to
1076 # just leverage this, sticking to what the system toolchain does:
1077 gcc_cv_initfini_array=yes
1081 *-*-elf|arc*-*-elf*)
1082 # Assume that newlib is being used and so __cxa_atexit is provided.
1083 default_use_cxa_atexit=yes
1089 aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
1090 tm_file="${tm_file} elfos.h newlib-stdint.h"
1091 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-elf-raw.h"
1092 tmake_file="${tmake_file} aarch64/t-aarch64"
1098 tm_file="${tm_file} fuchsia.h"
1101 tm_file="${tm_file} aarch64/rtems.h rtems.h"
1106 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1109 aarch64_multilibs="${with_multilib_list}"
1110 if test "$aarch64_multilibs" = "default"; then
1111 aarch64_multilibs="lp64,ilp32"
1113 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1114 for aarch64_multilib in ${aarch64_multilibs}; do
1115 case ${aarch64_multilib} in
1117 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1120 echo "--with-multilib-list=${aarch64_multilib} not supported."
1124 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1126 aarch64*-*-freebsd*)
1127 tm_file="${tm_file} elfos.h ${fbsd_tm_file}"
1128 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-freebsd.h"
1129 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
1130 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1133 tm_file="${tm_file} elfos.h ${nbsd_tm_file}"
1134 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-netbsd.h"
1135 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-netbsd"
1136 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1139 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h"
1140 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-linux.h"
1141 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-linux"
1142 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1145 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1148 aarch64_multilibs="${with_multilib_list}"
1149 if test "$aarch64_multilibs" = "default"; then
1150 # TODO: turn on ILP32 multilib build after its support is mature.
1151 # aarch64_multilibs="lp64,ilp32"
1152 aarch64_multilibs="lp64"
1154 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1155 for aarch64_multilib in ${aarch64_multilibs}; do
1156 case ${aarch64_multilib} in
1158 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1161 echo "--with-multilib-list=${aarch64_multilib} not supported."
1165 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1167 aarch64*-wrs-vxworks*)
1168 tm_file="${tm_file} elfos.h aarch64/aarch64-elf.h"
1169 tm_file="${tm_file} vx-common.h vxworks.h aarch64/aarch64-vxworks.h"
1170 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-vxworks"
1173 tm_file="elfos.h ${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h glibc-stdint.h"
1174 tmake_file="${tmake_file} alpha/t-linux alpha/t-alpha"
1175 extra_options="${extra_options} alpha/elf.opt"
1178 tm_file="elfos.h ${tm_file} ${nbsd_tm_file} alpha/elf.h alpha/netbsd.h"
1179 tmake_file="${tmake_file} alpha/t-alpha"
1180 extra_options="${extra_options} netbsd.opt netbsd-elf.opt \
1184 tm_defines="${tm_defines} OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_FUNCTION_SIZE OBSD_HAS_DECLARE_OBJECT"
1185 tm_file="elfos.h alpha/alpha.h alpha/elf.h openbsd.h openbsd-stdint.h alpha/openbsd.h openbsd-libpthread.h"
1186 tmake_file="${tmake_file} alpha/t-alpha"
1187 extra_options="${extra_options} openbsd.opt alpha/elf.opt"
1188 # default x-alpha is only appropriate for dec-osf.
1191 tm_file="${tm_file} vms/vms.h alpha/vms.h"
1192 tmake_file="${tmake_file} alpha/t-vms alpha/t-alpha"
1195 tm_file="arc/arc-arch.h elfos.h newlib-stdint.h arc/elf.h ${tm_file}"
1196 tmake_file="arc/t-multilib arc/t-arc"
1197 extra_gcc_objs="driver-arc.o"
1198 if test "x$with_cpu" != x; then
1199 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1201 if test x${with_endian} = x; then
1203 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1204 *) with_endian=little ;;
1207 case ${with_endian} in
1209 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1211 case ${with_endian} in
1212 big*) tm_file="arc/big.h ${tm_file}"
1216 tm_file="arc/arc-arch.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arc/linux.h ${tm_file}"
1217 tmake_file="${tmake_file} arc/t-multilib-linux arc/t-arc"
1218 extra_gcc_objs="driver-arc.o"
1219 if test "x$with_cpu" != x; then
1220 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1222 if test x${with_endian} = x; then
1224 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1225 *) with_endian=little ;;
1228 case ${with_endian} in
1230 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1232 case ${with_endian} in
1233 big*) tm_file="arc/big.h ${tm_file}"
1235 # Force .init_array support. The configure script cannot always
1236 # automatically detect that GAS supports it, yet we require it.
1237 gcc_cv_initfini_array=yes
1240 # We only support VxWorks 7 now on ARM, post SR600. Pre SR600
1241 # VxWorks 7 was transitory and major versions prior to 7 were based
1242 # on long deprecated ABI, not supported at all any more regardless
1244 extra_options="${extra_options} arm/vxworks.opt"
1245 tmake_file="${tmake_file} arm/t-arm arm/t-vxworks arm/t-bpabi"
1246 tm_file="elfos.h arm/elf.h arm/bpabi.h arm/aout.h ${tm_file}"
1247 tm_file="${tm_file} vx-common.h vxworks.h arm/vxworks.h"
1248 target_cpu_cname="generic-armv7-a"
1249 need_64bit_hwint=yes
1251 arm*-*-freebsd*) # ARM FreeBSD EABI
1252 tm_file="elfos.h ${fbsd_tm_file} arm/elf.h"
1255 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1258 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi"
1259 tm_file="${tm_file} arm/bpabi.h arm/freebsd.h arm/aout.h arm/arm.h"
1262 target_cpu_cname="arm1176jzf-s"
1263 if test $fbsd_major -ge 11; then
1264 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1268 target_cpu_cname="generic-armv7-a"
1269 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1272 target_cpu_cname="arm9"
1275 with_tls=${with_tls:-gnu}
1278 target_cpu_cname="strongarm"
1279 tmake_file="${tmake_file} arm/t-arm"
1280 tm_file="elfos.h ${nbsd_tm_file} arm/elf.h"
1281 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1283 arm*eb-*) tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" ;;
1286 arm*-*-netbsdelf-*eabi*)
1287 tm_file="$tm_file arm/bpabi.h arm/netbsd-elf.h arm/netbsd-eabi.h"
1288 tmake_file="$tmake_file arm/t-bpabi arm/t-netbsdeabi"
1291 tm_file="$tm_file arm/netbsd-elf.h"
1292 tmake_file="$tmake_file arm/t-netbsd"
1295 tm_file="${tm_file} arm/aout.h arm/arm.h"
1297 arm*-*-netbsdelf-*eabihf*)
1298 # Hard-float requires at least Arm v5te
1299 target_cpu_cname="arm10e"
1300 tm_defines="${tm_defines} TARGET_DEFAULT_FLOAT_ABI=ARM_FLOAT_ABI_HARD"
1304 armv6*) target_cpu_cname="arm1176jzf-s";;
1305 armv7*) target_cpu_cname="generic-armv7-a";;
1308 arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)
1309 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"
1310 extra_options="${extra_options} linux-android.opt"
1313 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1316 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
1317 tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h arm/aout.h arm/arm.h"
1319 arm*-*-uclinuxfdpiceabi)
1320 tm_file="$tm_file arm/uclinuxfdpiceabi.h"
1323 # Define with_float to "hard" if not already defined and
1324 # target name ends with "hf"
1325 case $target:$with_float in
1330 # Generation of floating-point instructions requires at least ARMv5te.
1331 if [ "$with_float" = "hard" -o "$with_float" = "softfp" ] ; then
1332 target_cpu_cname="arm10e"
1334 target_cpu_cname="arm10tdmi"
1336 # Define multilib configuration for arm-linux-androideabi.
1339 tmake_file="$tmake_file arm/t-linux-androideabi"
1342 # The EABI requires the use of __cxa_atexit.
1343 default_use_cxa_atexit=yes
1344 with_tls=${with_tls:-gnu}
1346 arm*-*-uclinux*eabi*) # ARM ucLinux
1347 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
1348 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi"
1349 tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h arm/aout.h arm/arm.h"
1350 target_cpu_cname="arm7tdmi"
1351 # The EABI requires the use of __cxa_atexit.
1352 default_use_cxa_atexit=yes
1355 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1356 tm_file="${tm_file} newlib-stdint.h phoenix.h"
1357 tm_file="${tm_file} arm/aout.h arm/arm.h"
1358 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi arm/t-phoenix"
1359 target_cpu_cname="arm7tdmi"
1361 arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
1364 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1366 default_use_cxa_atexit=yes
1367 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1368 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf"
1369 target_cpu_cname="arm7tdmi"
1372 tm_file="$tm_file newlib-stdint.h"
1373 tmake_file="${tmake_file} arm/t-bpabi"
1377 tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h"
1378 tmake_file="${tmake_file} arm/t-bpabi arm/t-fuchsia"
1379 target_cpu_cname="generic-armv7-a"
1382 tm_file="${tm_file} arm/rtems.h rtems.h newlib-stdint.h"
1383 tmake_file="${tmake_file} arm/t-bpabi arm/t-rtems"
1386 tm_file="${tm_file} arm/symbian.h"
1387 # We do not include t-bpabi for Symbian OS because the system
1388 # provides its own implementation of the BPABI functions.
1389 tmake_file="${tmake_file} arm/t-symbian"
1390 target_cpu_cname="arm10tdmi"
1393 tm_file="${tm_file} arm/aout.h arm/arm.h"
1396 tm_file="elfos.h avr/elf.h avr/avr-arch.h avr/avr.h avr/specs.h avr/avr-stdint.h"
1397 if test x${with_avrlibc} != xno; then
1398 tm_file="${tm_file} ${cpu_type}/avrlibc.h"
1399 tm_defines="${tm_defines} WITH_AVRLIBC"
1401 # Work out avr_double_comparison which is 2 or 3 and is used in
1402 # target hook FLOAT_LIB_COMPARE_RETURNS_BOOL to determine whether
1403 # DFmode comparisons return 3-state or 2-state results.
1404 case y${with_double_comparison} in
1406 avr_double_comparison=3
1409 avr_double_comparison=2
1412 echo "Error: --with-double-comparison= can only be used with: 'tristate', 'bool', 'libf7'" 1>&2
1416 case "y${with_libf7}" in
1418 # avr_double_comparison as set above.
1421 avr_double_comparison=2
1422 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1424 y | yyes | ymath-symbols)
1425 avr_double_comparison=2
1426 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1427 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1428 tm_defines="${tm_defines} WITH_LIBF7_MATH_SYMBOLS"
1431 avr_double_comparison=2
1432 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1433 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1436 echo "Error: --with-libf7=${with_libf7} but can only be used with: 'libgcc', 'math', 'math-symbols', 'yes', 'no'" 1>&2
1440 tm_defines="${tm_defines} WITH_DOUBLE_COMPARISON=${avr_double_comparison}"
1441 case y${with_double} in
1444 tm_defines="${tm_defines} HAVE_DOUBLE32"
1448 tm_defines="${tm_defines} HAVE_DOUBLE64"
1452 avr_double_multilib=1
1453 tm_defines="${tm_defines} HAVE_DOUBLE32"
1454 tm_defines="${tm_defines} HAVE_DOUBLE64"
1455 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1459 avr_double_multilib=1
1460 tm_defines="${tm_defines} HAVE_DOUBLE32"
1461 tm_defines="${tm_defines} HAVE_DOUBLE64"
1462 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1465 echo "Error: --with-double= can only be used with: '32', '32,64', '64,32', '64'" 1>&2
1469 case y${with_long_double} in
1472 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1476 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1480 avr_long_double_multilib=1
1481 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1482 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1483 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1487 avr_long_double_multilib=1
1488 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1489 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1490 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1493 avr_long_double=${avr_double}
1494 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_IS_DOUBLE"
1495 if test y${avr_double_multilib} = y1; then
1496 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1497 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1499 tm_defines="${tm_defines} HAVE_LONG_DOUBLE${avr_long_double}"
1503 echo "Error: --with-long_double= can only be used with: '32', '32,64', '64,32', '64', 'double'" 1>&2
1507 if test ${avr_long_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 32xy1z; then
1508 if test y${with_long_double} != ydouble; then
1509 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
1513 if test ${avr_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 64x1yz; then
1514 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
1517 if test y${avr_double}${avr_long_double} = y6432; then
1518 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
1521 tm_defines="${tm_defines} WITH_DOUBLE${avr_double}"
1522 tm_defines="${tm_defines} WITH_LONG_DOUBLE${avr_long_double}"
1523 tmake_file="${tmake_file} avr/t-avr avr/t-multilib"
1525 extra_gcc_objs="driver-avr.o avr-devices.o"
1526 extra_objs="avr-devices.o avr-log.o"
1529 tm_file="${tm_file} elfos.h newlib-stdint.h bfin/elf.h"
1530 tmake_file=bfin/t-bfin-elf
1534 tm_file="${tm_file} elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/uclinux.h"
1535 tmake_file=bfin/t-bfin-uclinux
1538 bfin*-linux-uclibc*)
1539 tm_file="${tm_file} elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/linux.h ./linux-sysroot-suffix.h"
1540 tmake_file="${tmake_file} bfin/t-bfin-linux"
1544 tm_file="${tm_file} elfos.h bfin/elf.h bfin/rtems.h rtems.h newlib-stdint.h"
1545 tmake_file="${tmake_file} bfin/t-rtems"
1548 tm_file="${tm_file} elfos.h newlib-stdint.h bfin/elf.h"
1553 tm_file="elfos.h ${tm_file}"
1554 tmake_file="${tmake_file} bpf/t-bpf"
1556 extra_headers="bpf-helpers.h"
1557 use_gcc_stdint=provide
1558 extra_objs="coreout.o"
1559 target_gtfiles="$target_gtfiles \$(srcdir)/config/bpf/coreout.cc"
1561 cris-*-elf | cris-*-none)
1562 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1563 tmake_file="cris/t-cris cris/t-elfmulti"
1565 extra_options="${extra_options} cris/elf.opt"
1569 if test x${with_endian} != x; then
1570 case ${with_endian} in
1573 echo "with_endian=${with_endian} not supported."
1578 if test x${with_float} != x; then
1579 case ${with_float} in
1582 "Unknown floating point type used in --with-float=$with_float"
1587 tm_file="csky/csky.h"
1588 md_file="csky/csky.md"
1589 out_file="csky/csky.cc"
1590 tm_p_file="${tm_p_file} csky/csky-protos.h"
1591 extra_options="${extra_options} csky/csky_tables.opt"
1593 if test x${enable_tpf_debug} = xyes; then
1594 tm_defines="${tm_defines} ENABLE_TPF_DEBUG"
1599 tm_file="elfos.h newlib-stdint.h ${tm_file} csky/csky-elf.h"
1600 tmake_file="csky/t-csky csky/t-csky-elf"
1601 default_use_cxa_atexit=no
1605 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} csky/csky-linux-elf.h"
1606 tmake_file="${tmake_file} csky/t-csky csky/t-csky-linux"
1610 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
1611 # Force .init_array support. The configure script cannot always
1612 # automatically detect that GAS supports it, yet we require it.
1613 gcc_cv_initfini_array=yes
1615 csky-*-linux-uclibc*)
1616 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
1617 default_use_cxa_atexit=no
1620 echo "Unknown target $target"
1626 echo "Unknown target $target"
1631 epiphany-*-elf | epiphany-*-rtems*)
1632 tm_file="elfos.h ${tm_file}"
1633 tmake_file="${tmake_file} epiphany/t-epiphany"
1636 tm_file="${tm_file} epiphany/rtems.h rtems.h newlib-stdint.h"
1639 tm_file="${tm_file} newlib-stdint.h"
1642 extra_options="${extra_options} fused-madd.opt"
1643 extra_objs="${extra_objs} mode-switch-use.o resolve-sw-modes.o"
1644 tm_defines="${tm_defines} EPIPHANY_STACK_OFFSET=${with_stack_offset:-8}"
1645 extra_headers="epiphany_intrinsics.h"
1648 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1651 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1652 tmake_file=frv/t-frv
1655 tm_file="elfos.h ${tm_file} \
1656 gnu-user.h linux.h glibc-stdint.h frv/linux.h"
1657 tmake_file="${tmake_file} frv/t-frv frv/t-linux"
1662 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1663 tmake_file="${tmake_file} ft32/t-ft32"
1666 tm_file="elfos.h gcn/gcn-hsa.h gcn/gcn.h newlib-stdint.h"
1667 tmake_file="gcn/t-gcn-hsa"
1668 native_system_header_dir=/include
1669 extra_modes=gcn/gcn-modes.def
1670 extra_objs="${extra_objs} gcn-tree.o"
1671 extra_gcc_objs="driver-gcn.o"
1673 x86_64*-*-linux-gnu )
1674 if test "$ac_cv_search_dlopen" != no; then
1675 extra_programs="${extra_programs} gcn-run\$(exeext)"
1679 if test x$enable_as_accelerator = xyes; then
1680 extra_programs="${extra_programs} mkoffload\$(exeext)"
1681 tm_file="${tm_file} gcn/offload.h"
1683 # Force .init_array support.
1684 gcc_cv_initfini_array=yes
1690 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1691 tmake_file="${tmake_file} moxie/t-moxie"
1696 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h moxie/uclinux.h"
1697 tmake_file="${tmake_file} moxie/t-moxie"
1700 tmake_file="${tmake_file} moxie/t-moxie"
1701 tm_file="moxie/moxie.h elfos.h moxie/rtems.h rtems.h newlib-stdint.h"
1706 tm_file="${tm_file} elfos.h moxie/moxiebox.h newlib-stdint.h"
1707 tmake_file="${tmake_file} moxie/t-moxiebox"
1710 tmake_file="h8300/t-h8300"
1711 tm_file="h8300/h8300.h elfos.h newlib-stdint.h h8300/elf.h"
1714 tmake_file="${tmake_file} h8300/t-h8300 h8300/t-linux"
1715 tm_file="h8300/h8300.h elfos.h gnu-user.h linux.h glibc-stdint.h h8300/linux.h"
1718 target_cpu_default="MASK_PA_11|MASK_PA_20"
1719 tm_file="pa/pa64-start.h ${tm_file} elfos.h gnu-user.h linux.h \
1720 glibc-stdint.h pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h \
1722 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1723 d_target_objs="${d_target_objs} pa-d.o"
1727 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS|MASK_CALLER_COPIES"
1728 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h pa/pa-linux.h \
1729 pa/pa32-regs.h pa/pa32-linux.h"
1730 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1731 d_target_objs="${d_target_objs} pa-d.o"
1734 target_cpu_default="MASK_PA_11"
1735 tm_file="${tm_file} elfos.h openbsd.h openbsd-stdint.h openbsd-libpthread.h \
1736 pa/pa-openbsd.h pa/pa32-regs.h pa/pa32-openbsd.h"
1737 extra_options="${extra_options} openbsd.opt"
1738 tmake_file="pa/t-pa"
1739 d_target_objs="${d_target_objs} pa-d.o"
1744 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS"
1745 tm_file="${tm_file} elfos.h ${nbsd_tm_file} \
1746 pa/pa-netbsd.h pa/pa32-regs.h pa/pa32-netbsd.h"
1747 tmake_file="${tmake_file}"
1748 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
1749 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1752 target_cpu_default="MASK_PA_11|MASK_PA_20"
1753 if test x$gnu_ld = xyes
1755 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
1757 tm_file="pa/pa64-start.h ${tm_file} elfos.h \
1758 pa/pa64-regs.h pa/pa-hpux.h pa/pa-hpux1010.h \
1762 tm_file="${tm_file} pa/pa-hpux1111.h pa/pa-64.h pa/pa64-hpux.h"
1763 extra_options="${extra_options} pa/pa-hpux1111.opt"
1766 tm_file="${tm_file} pa/pa-hpux1131.h pa/pa-64.h pa/pa64-hpux.h"
1767 extra_options="${extra_options} pa/pa-hpux1131.opt"
1770 tm_file="${tm_file} pa/pa-64.h pa/pa64-hpux.h"
1773 extra_options="${extra_options} pa/pa-hpux.opt \
1774 pa/pa-hpux1010.opt pa/pa64-hpux.opt hpux11.opt"
1775 tmake_file="pa/t-pa t-slibgcc"
1776 d_target_objs="${d_target_objs} pa-d.o"
1777 case x${enable_threads} in
1785 use_gcc_stdint=provide
1786 tm_file="${tm_file} hpux-stdint.h"
1790 tm_file="${tm_file} hpux-stdint.h"
1794 i[34567]86-*-darwin1[89]* | i[34567]86-*-darwin2*)
1795 echo "Error: 32bit target is not supported after Darwin17" 1>&2
1797 i[34567]86-*-darwin*)
1799 # Baseline choice for a machine that allows m64 support.
1800 with_cpu=${with_cpu:-core2}
1801 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch t-slibgcc"
1802 tm_file="${cpu_type}/darwin32-biarch.h ${tm_file} "
1804 x86_64-*-darwin1[89]* | x86_64-*-darwin2*)
1806 tm_defines="${tm_defines} TARGET_64BIT_DEFAULT=(OPTION_MASK_ISA_64BIT|OPTION_MASK_ABI_64)"
1807 tm_defines="${tm_defines} TARGET_BI_ARCH=0"
1808 with_cpu=${with_cpu:-core2}
1809 tmake_file="${tmake_file} t-slibgcc"
1812 with_cpu=${with_cpu:-core2}
1813 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
1814 tm_file="${cpu_type}/darwin64-biarch.h ${tm_file} "
1816 i[34567]86-*-elfiamcu)
1817 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/iamcu.h"
1820 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h"
1823 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h"
1826 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"
1829 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/rdos.h"
1832 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"
1833 tmake_file="i386/t-i386elf t-svr4"
1835 i[34567]86-*-dragonfly*)
1836 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h dragonfly.h dragonfly-stdint.h i386/dragonfly.h"
1837 tmake_file="${tmake_file} i386/t-crtstuff"
1839 x86_64-*-dragonfly*)
1840 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h dragonfly.h dragonfly-stdint.h i386/x86-64.h i386/dragonfly.h"
1841 tmake_file="${tmake_file} i386/t-crtstuff"
1843 i[34567]86-*-freebsd*)
1844 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
1847 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"
1849 i[34567]86-*-netbsdelf*)
1850 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${nbsd_tm_file} i386/netbsd-elf.h"
1851 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1854 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${nbsd_tm_file} i386/x86-64.h i386/netbsd64.h"
1855 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1857 i[34567]86-*-openbsd*)
1858 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
1859 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/openbsdelf.h"
1860 extra_options="${extra_options} openbsd.opt"
1865 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
1866 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/x86-64.h i386/openbsdelf.h"
1867 extra_options="${extra_options} openbsd.opt"
1871 i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu)
1872 # Intel 80386's running GNU/*
1873 # with ELF format using glibc 2
1874 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h gnu-user.h glibc-stdint.h"
1876 i[34567]86-*-linux*)
1877 tm_file="${tm_file} linux.h linux-android.h"
1878 extra_options="${extra_options} linux-android.opt"
1879 if test x$enable_targets = xall; then
1880 tm_file="${tm_file} i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h i386/linux-common.h i386/linux64.h"
1881 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
1882 tmake_file="${tmake_file} i386/t-linux64"
1883 x86_multilibs="${with_multilib_list}"
1884 if test "$x86_multilibs" = "default"; then
1885 x86_multilibs="m64,m32"
1887 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
1888 for x86_multilib in ${x86_multilibs}; do
1889 case ${x86_multilib} in
1891 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
1894 echo "--with-multilib-list=${x86_with_multilib} not supported."
1898 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1900 if test x$with_cpu = x; then
1901 if test x$with_cpu_64 = x; then
1905 case " $x86_cpus $x86_archs $x86_64_archs " in
1909 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
1910 echo "$x86_cpus $x86_archs $x86_64_archs " 1>&2
1916 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h i386/linux-common.h i386/linux.h"
1919 i[34567]86-*-kfreebsd*-gnu)
1920 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kfreebsd-gnu.h i386/kfreebsd-gnu.h"
1922 i[34567]86-*-kopensolaris*-gnu)
1923 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kopensolaris-gnu.h i386/kopensolaris-gnu.h"
1926 tm_file="$tm_file i386/gnu-user-common.h i386/gnu-user.h gnu.h i386/gnu.h"
1930 x86_64-*-linux* | x86_64-*-kfreebsd*-gnu)
1931 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h gnu-user.h glibc-stdint.h \
1932 i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h"
1935 tm_file="${tm_file} linux.h linux-android.h i386/linux-common.h i386/linux64.h"
1936 extra_options="${extra_options} linux-android.opt"
1938 x86_64-*-kfreebsd*-gnu)
1939 tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu64.h"
1942 tmake_file="${tmake_file} i386/t-linux64"
1943 x86_multilibs="${with_multilib_list}"
1944 if test "$x86_multilibs" = "default"; then
1947 x86_multilibs="mx32"
1950 x86_multilibs="m64,m32"
1954 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
1955 for x86_multilib in ${x86_multilibs}; do
1956 case ${x86_multilib} in
1958 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
1961 echo "--with-multilib-list=${x86_with_multilib} not supported."
1965 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1967 i[34567]86-pc-msdosdjgpp*)
1968 xm_file=i386/xm-djgpp.h
1969 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/djgpp.h i386/djgpp-stdint.h"
1970 native_system_header_dir=/dev/env/DJDIR/include
1971 extra_options="${extra_options} i386/djgpp.opt"
1976 i[34567]86-*-lynxos*)
1978 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h i386/lynx.h lynx.h"
1979 tmake_file="${tmake_file} t-lynx"
1980 extra_options="${extra_options} lynx.opt"
1985 i[34567]86-*-nto-qnx*)
1986 tm_file="${tm_file} i386/att.h tm-dwarf2.h elfos.h i386/unix.h i386/nto.h"
1987 extra_options="${extra_options} i386/nto.opt"
1991 i[34567]86-*-rtems*)
1992 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h i386/i386elf.h i386/rtemself.h rtems.h newlib-stdint.h"
1993 tmake_file="${tmake_file} i386/t-rtems"
1995 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
1996 # Set default arch_32 to pentium4, tune_32 to generic like the other
1997 # i386 targets, although config.guess defaults to i386-pc-solaris2*.
1998 with_arch_32=${with_arch_32:-pentium4}
1999 with_tune_32=${with_tune_32:-generic}
2000 tm_file="${tm_file} i386/unix.h i386/att.h ${sol2_tm_file_head} i386/x86-64.h ${sol2_tm_file_tail}"
2001 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2002 tmake_file="$tmake_file i386/t-sol2"
2004 if test x$with_cpu = x; then
2005 if test x$with_cpu_64 = x; then
2009 case " $x86_cpus $x86_archs $x86_64_archs " in
2013 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2014 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2020 i[4567]86-wrs-vxworks*|x86_64-wrs-vxworks7*)
2021 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
2025 tm_file="${tm_file} i386/x86-64.h"
2028 tm_file="${tm_file} vx-common.h"
2031 tm_file="${tm_file} vxworksae.h i386/vxworks.h i386/vxworksae.h"
2032 tmake_file="${tmake_file} i386/t-vxworks i386/t-vxworksae"
2035 tm_file="${tm_file} vxworks.h i386/vxworks.h"
2036 tmake_file="${tmake_file} i386/t-vxworks"
2040 i[34567]86-*-cygwin*)
2041 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h i386/cygwin.h i386/cygwin-stdint.h"
2042 xm_file=i386/xm-cygwin.h
2043 tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
2044 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2045 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
2046 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2047 c_target_objs="${c_target_objs} msformat-c.o"
2048 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2049 d_target_objs="${d_target_objs} winnt-d.o"
2050 target_has_targetdm="yes"
2051 if test x$enable_threads = xyes; then
2054 default_use_cxa_atexit=yes
2059 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"
2060 xm_file=i386/xm-cygwin.h
2061 tmake_file="${tmake_file} i386/t-cygming t-slibgcc i386/t-cygwin-w64"
2062 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2063 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
2064 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2065 c_target_objs="${c_target_objs} msformat-c.o"
2066 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2067 d_target_objs="${d_target_objs} winnt-d.o"
2068 target_has_targetdm="yes"
2069 if test x$enable_threads = xyes; then
2072 default_use_cxa_atexit=yes
2074 tm_defines="${tm_defines} TARGET_CYGWIN64=1"
2076 i[34567]86-*-mingw* | x86_64-*-mingw*)
2077 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h"
2078 xm_file=i386/xm-mingw32.h
2079 c_target_objs="${c_target_objs} winnt-c.o"
2080 cxx_target_objs="${cxx_target_objs} winnt-c.o"
2081 d_target_objs="${d_target_objs} winnt-d.o"
2082 target_has_targetcm="yes"
2083 target_has_targetdm="yes"
2085 x86_64-*-* | *-w64-*)
2091 if test x$enable_threads = xposix ; then
2092 tm_file="${tm_file} i386/mingw-pthread.h"
2094 tm_file="${tm_file} i386/mingw32.h"
2095 # This makes the logic if mingw's or the w64 feature set has to be used
2098 user_headers_inc_next_post="${user_headers_inc_next_post} float.h"
2099 user_headers_inc_next_pre="${user_headers_inc_next_pre} stddef.h stdarg.h"
2100 tm_file="${tm_file} i386/mingw-w64.h"
2101 if test x$enable_targets = xall; then
2102 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2103 if test x$with_cpu = x; then
2104 if test x$with_cpu_64 = x; then
2108 case " $x86_cpus $x86_archs $x86_64_archs " in
2112 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2113 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2123 tm_file="${tm_file} i386/mingw-stdint.h"
2124 tmake_file="${tmake_file} t-winnt i386/t-cygming t-slibgcc"
2127 tmake_file="${tmake_file} i386/t-mingw-w64"
2130 tmake_file="${tmake_file} i386/t-mingw-w32"
2133 native_system_header_dir=/mingw/include
2134 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2135 extra_options="${extra_options} i386/cygming.opt i386/mingw.opt"
2138 extra_options="${extra_options} i386/mingw-w64.opt"
2143 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2144 c_target_objs="${c_target_objs} msformat-c.o"
2145 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2148 default_use_cxa_atexit=yes
2150 case ${enable_threads} in
2160 tm_file="${tm_file} i386/crtdll.h"
2162 *mingw32msv* | *mingw*)
2167 tmake_file="${tmake_file} i386/t-x86_64-elf"
2168 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h fuchsia.h"
2171 tm_file="${tm_file} elfos.h newlib-stdint.h ia64/sysv4.h ia64/elf.h"
2172 tmake_file="ia64/t-ia64"
2173 target_cpu_default="0"
2174 if test x$gas = xyes
2176 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2178 if test x$gnu_ld = xyes
2180 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
2184 tm_file="${tm_file} elfos.h ${fbsd_tm_file} ia64/sysv4.h ia64/freebsd.h"
2185 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2186 tmake_file="${tmake_file} ia64/t-ia64"
2189 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h ia64/sysv4.h ia64/linux.h"
2190 tmake_file="${tmake_file} ia64/t-ia64 ia64/t-linux t-libunwind"
2191 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2194 tm_file="${tm_file} elfos.h ia64/sysv4.h ia64/hpux.h"
2195 tmake_file="ia64/t-ia64 ia64/t-hpux t-slibgcc"
2196 target_cpu_default="MASK_GNU_AS"
2197 case x$enable_threads in
2203 c_target_objs="ia64-c.o"
2204 cxx_target_objs="ia64-c.o"
2205 extra_options="${extra_options} ia64/ilp32.opt hpux11.opt"
2207 tm_file="${tm_file} hpux-stdint.h"
2210 tm_file="${tm_file} ia64/hpux-unix2003.h"
2215 tm_file="${tm_file} elfos.h ia64/sysv4.h vms/vms.h ia64/vms.h"
2216 tmake_file="${tmake_file} ia64/t-ia64"
2217 target_cpu_default="0"
2218 if test x$gas = xyes
2220 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2222 extra_options="${extra_options} ia64/vms.opt"
2225 tm_file="elfos.h newlib-stdint.h iq2000/iq2000.h"
2226 out_file=iq2000/iq2000.cc
2227 md_file=iq2000/iq2000.md
2230 tm_file="elfos.h ${tm_file} newlib-stdint.h"
2231 tmake_file="${tmake_file} lm32/t-lm32"
2234 tm_file="elfos.h ${tm_file} lm32/rtems.h rtems.h newlib-stdint.h"
2235 tmake_file="${tmake_file} lm32/t-lm32"
2236 tmake_file="${tmake_file} lm32/t-rtems"
2239 tm_file="elfos.h ${tm_file} gnu-user.h linux.h lm32/uclinux-elf.h"
2240 tmake_file="${tmake_file} lm32/t-lm32"
2243 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2246 tm_file="elfos.h newlib-stdint.h m32r/little.h ${tm_file}"
2248 m68k-*-elf* | fido-*-elf*)
2251 # Check that $with_cpu makes sense.
2256 echo "Cannot accept --with-cpu=$with_cpu"
2263 default_m68k_cpu=68020
2267 tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h elfos.h newlib-stdint.h m68k/m68kemb.h m68k/m68020-elf.h"
2268 tm_defines="${tm_defines} MOTOROLA=1"
2269 tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-m68kelf"
2270 # Add multilibs for targets other than fido.
2275 tmake_file="$tmake_file m68k/t-mlibs"
2280 default_m68k_cpu=68020
2282 tm_file="${tm_file} elfos.h ${nbsd_tm_file} m68k/netbsd-elf.h"
2283 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2284 tm_defines="${tm_defines} MOTOROLA=1 CHAR_FAST8=1 SHORT_FAST16=1"
2286 m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux
2287 # with uClibc, using the new GNU/Linux-style
2289 default_m68k_cpu=68020
2291 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"
2292 extra_options="${extra_options} m68k/uclinux.opt"
2293 tm_defines="${tm_defines} MOTOROLA=1"
2294 tmake_file="m68k/t-floatlib m68k/t-uclinux m68k/t-mlibs"
2296 m68k-*-linux*) # Motorola m68k's running GNU/Linux
2297 # with ELF format using glibc 2
2298 # aka the GNU/Linux C library 6.
2299 default_m68k_cpu=68020
2301 with_arch=${with_arch:-m68k}
2302 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h m68k/linux.h ./sysroot-suffix.h"
2303 extra_options="${extra_options} m68k/ieee.opt"
2304 tm_defines="${tm_defines} MOTOROLA=1"
2305 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-linux m68k/t-mlibs"
2308 default_m68k_cpu=68020
2310 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-m68kbare m68k/t-crtstuff m68k/t-rtems m68k/t-mlibs"
2311 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"
2312 tm_defines="${tm_defines} MOTOROLA=1"
2315 tm_file="elfos.h newlib-stdint.h ${tm_file} mcore/mcore-elf.h"
2316 tmake_file=mcore/t-mcore
2322 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2325 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2328 tm_file="${tm_file} gnu-user.h linux.h microblaze/linux.h"
2329 tm_file="${tm_file} glibc-stdint.h"
2330 c_target_objs="${c_target_objs} microblaze-c.o"
2331 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2332 tmake_file="${tmake_file} microblaze/t-microblaze"
2333 tmake_file="${tmake_file} microblaze/t-microblaze-linux"
2335 microblaze*-*-rtems*)
2338 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2341 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2344 tm_file="${tm_file}"
2345 tm_file="${tm_file} microblaze/rtems.h rtems.h newlib-stdint.h"
2346 c_target_objs="${c_target_objs} microblaze-c.o"
2347 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2348 tmake_file="${tmake_file} microblaze/t-microblaze"
2349 tmake_file="${tmake_file} microblaze/t-rtems"
2354 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2357 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2360 tm_file="${tm_file} newlib-stdint.h"
2361 c_target_objs="${c_target_objs} microblaze-c.o"
2362 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2363 tmake_file="${tmake_file} microblaze/t-microblaze"
2366 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} riscv/linux.h"
2367 case "x${enable_multilib}" in
2369 xyes) tmake_file="${tmake_file} riscv/t-linux-multilib" ;;
2370 *) echo "Unknown value for enable_multilib"; exit 1
2372 tmake_file="${tmake_file} riscv/t-riscv riscv/t-linux"
2376 riscv32be-*|riscv64be-*)
2377 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2380 # Force .init_array support. The configure script cannot always
2381 # automatically detect that GAS supports it, yet we require it.
2382 gcc_cv_initfini_array=yes
2384 riscv*-*-elf* | riscv*-*-rtems*)
2385 tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h"
2388 tm_file="${tm_file} riscv/rtems.h rtems.h"
2389 tmake_file="${tmake_file} riscv/t-rtems"
2392 if test "x${with_multilib_generator}" == xdefault; then
2393 case "x${enable_multilib}" in
2395 xyes) tmake_file="${tmake_file} riscv/t-elf-multilib" ;;
2396 *) echo "Unknown value for enable_multilib"; exit 1
2400 tmake_file="${tmake_file} riscv/t-riscv"
2404 riscv32be-*|riscv64be-*)
2405 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2408 # Force .init_array support. The configure script cannot always
2409 # automatically detect that GAS supports it, yet we require it.
2410 gcc_cv_initfini_array=yes
2413 tm_file="${tm_file} elfos.h ${fbsd_tm_file} riscv/freebsd.h"
2414 tmake_file="${tmake_file} riscv/t-riscv"
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
2427 loongarch*-*-linux*)
2428 tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file}"
2429 tm_file="${tm_file} loongarch/gnu-user.h loongarch/linux.h"
2430 extra_options="${extra_options} linux-android.opt"
2431 tmake_file="${tmake_file} loongarch/t-linux"
2435 # Force .init_array support. The configure script cannot always
2436 # automatically detect that GAS supports it, yet we require it.
2437 gcc_cv_initfini_array=yes
2440 mips*-*-netbsd*) # NetBSD/mips, either endian.
2441 target_cpu_default="MASK_ABICALLS"
2442 tm_file="elfos.h ${tm_file} mips/elf.h ${nbsd_tm_file} mips/netbsd.h"
2443 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2446 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"
2447 extra_options="${extra_options} linux-android.opt"
2448 tmake_file="${tmake_file} mips/t-img-linux"
2449 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2450 with_arch_32="mips32r6"
2451 with_arch_64="mips64r6"
2456 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"
2457 extra_options="${extra_options} linux-android.opt"
2458 tmake_file="${tmake_file} mips/t-mti-linux"
2459 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2460 with_arch_32="mips32r2"
2461 with_arch_64="mips64r2"
2465 mips*-*-linux*) # Linux MIPS, either endian.
2466 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"
2467 extra_options="${extra_options} linux-android.opt"
2470 default_mips_arch=mips32r6
2473 default_mips_arch=mips32r2
2476 default_mips_arch=mips32
2478 mips64el-st-linux-gnu)
2479 default_mips_abi=n32
2480 tm_file="${tm_file} mips/st.h"
2481 tmake_file="${tmake_file} mips/t-st"
2482 enable_mips_multilibs="yes"
2484 mips64octeon*-*-linux*)
2485 default_mips_abi=n32
2486 tm_defines="${tm_defines} MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\""
2487 target_cpu_default=MASK_SOFT_FLOAT_ABI
2488 enable_mips_multilibs="yes"
2490 mipsisa64r6*-*-linux-gnuabi64)
2492 default_mips_arch=mips64r6
2493 enable_mips_multilibs="yes"
2495 mipsisa64r6*-*-linux*)
2496 default_mips_abi=n32
2497 default_mips_arch=mips64r6
2498 enable_mips_multilibs="yes"
2500 mipsisa64r2*-*-linux-gnuabi64)
2502 default_mips_arch=mips64r2
2503 enable_mips_multilibs="yes"
2505 mipsisa64r2*-*-linux*)
2506 default_mips_abi=n32
2507 default_mips_arch=mips64r2
2508 enable_mips_multilibs="yes"
2510 mips64*-*-linux-gnuabi64 | mipsisa64*-*-linux-gnuabi64)
2512 enable_mips_multilibs="yes"
2514 mips64*-*-linux* | mipsisa64*-*-linux*)
2515 default_mips_abi=n32
2516 enable_mips_multilibs="yes"
2519 if test x$enable_targets = xall; then
2520 enable_mips_multilibs="yes"
2522 if test x$enable_mips_multilibs = xyes; then
2523 tmake_file="${tmake_file} mips/t-linux64"
2527 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2528 tmake_file="mips/t-mti-elf"
2529 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2530 with_arch_32="mips32r2"
2531 with_arch_64="mips64r2"
2534 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2535 tmake_file="mips/t-img-elf"
2536 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2537 with_arch_32="mips32r6"
2538 with_arch_64="mips64r6"
2541 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h"
2542 tmake_file="mips/t-sde"
2543 extra_options="${extra_options} mips/sde.opt"
2544 case "${with_newlib}" in
2546 # newlib / libgloss.
2549 # MIPS toolkit libraries.
2550 tm_file="$tm_file mips/sdemtk.h"
2551 tmake_file="$tmake_file mips/t-sdemtk"
2552 case ${enable_threads} in
2554 thread_file='mipssde'
2561 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2564 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2567 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32 MIPS_ABI_DEFAULT=ABI_32"
2570 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6 MIPS_ABI_DEFAULT=ABI_N32"
2573 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2 MIPS_ABI_DEFAULT=ABI_N32"
2576 tm_defines="MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_ABI_DEFAULT=ABI_N32"
2580 mipsisa32-*-elf* | mipsisa32el-*-elf* | \
2581 mipsisa32r2-*-elf* | mipsisa32r2el-*-elf* | \
2582 mipsisa32r6-*-elf* | mipsisa32r6el-*-elf* | \
2583 mipsisa64-*-elf* | mipsisa64el-*-elf* | \
2584 mipsisa64r2-*-elf* | mipsisa64r2el-*-elf* | \
2585 mipsisa64r6-*-elf* | mipsisa64r6el-*-elf*)
2586 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2587 tmake_file="mips/t-isa3264"
2590 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6"
2593 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2"
2596 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32"
2599 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6"
2602 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2"
2605 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64"
2609 mipsisa32*-*-elfoabi*)
2610 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_32"
2611 tm_file="${tm_file} mips/elfoabi.h"
2613 mipsisa64*-*-elfoabi*)
2614 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_O64"
2615 tm_file="${tm_file} mips/elfoabi.h"
2618 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2622 mipsisa64sr71k-*-elf*)
2623 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2624 tmake_file=mips/t-sr71k
2625 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sr71000\\\" MIPS_ABI_DEFAULT=ABI_EABI"
2627 mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*)
2628 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2629 tmake_file="mips/t-elf mips/t-sb1"
2630 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sb1\\\" MIPS_ABI_DEFAULT=ABI_O64"
2632 mips-*-elf* | mipsel-*-elf* | mipsr5900-*-elf* | mipsr5900el-*-elf*)
2633 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2634 tmake_file="mips/t-elf"
2636 mips64r5900-*-elf* | mips64r5900el-*-elf*)
2637 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h"
2638 tmake_file="mips/t-elf"
2639 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_N32"
2641 mips64-*-elf* | mips64el-*-elf*)
2642 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2643 tmake_file="mips/t-elf"
2644 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_O64"
2646 mips64vr-*-elf* | mips64vrel-*-elf*)
2647 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/vr.h mips/elf.h"
2648 tmake_file=mips/t-vr
2649 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2651 mips64orion-*-elf* | mips64orionel-*-elf*)
2652 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elforion.h mips/elf.h"
2653 tmake_file="mips/t-elf"
2654 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_O64"
2657 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/rtems.h rtems.h"
2658 tmake_file="${tmake_file} mips/t-elf mips/t-rtems"
2661 tm_file="elfos.h ${tm_file} mips/elf.h vx-common.h vxworks.h mips/vxworks.h"
2662 tmake_file="${tmake_file} mips/t-vxworks"
2664 mipstx39-*-elf* | mipstx39el-*-elf*)
2665 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/r3900.h mips/elf.h"
2666 tmake_file="mips/t-r3900"
2668 mmix-knuth-mmixware)
2669 tm_file="${tm_file} newlib-stdint.h"
2673 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2678 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2679 c_target_objs="msp430-c.o"
2680 cxx_target_objs="msp430-c.o"
2681 tmake_file="${tmake_file} msp430/t-msp430"
2682 extra_objs="${extra_objs} msp430-devices.o"
2683 extra_gcc_objs="driver-msp430.o msp430-devices.o"
2684 # Enable .init_array unless it has been explicitly disabled.
2685 # The MSP430 EABI mandates the use of .init_array, and the Newlib CRT
2686 # code since mid-2019 expects it.
2687 if test x${disable_initfini_array} != xyes; then
2688 gcc_cv_initfini_array=yes
2692 # __cxa_atexit increases code size, and we don't need to support
2693 # dynamic shared objects on MSP430, so regular Newlib atexit is a
2694 # fine replacement as it also supports registration of more than 32
2696 default_use_cxa_atexit=no
2697 # This target does not match the generic *-*-elf case above which
2698 # sets use_gcc_stdint=wrap, so explicitly set it here.
2704 target_cpu_default="0"
2705 tm_defines="${tm_defines}"
2710 target_cpu_default="${target_cpu_default}|MASK_BIG_ENDIAN"
2711 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2716 tm_file="elfos.h newlib-stdint.h ${tm_file} nds32/elf.h nds32/nds32_intrinsic.h"
2717 tmake_file="nds32/t-nds32 nds32/t-elf"
2720 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h nds32/linux.h nds32/nds32_intrinsic.h"
2721 tmake_file="${tmake_file} nds32/t-nds32 nds32/t-linux"
2722 gcc_cv_initfini_array=yes
2726 # Handle --enable-default-relax setting.
2727 if test x${enable_default_relax} = xyes; then
2728 tm_defines="${tm_defines} TARGET_DEFAULT_RELAX=1"
2730 # Handle --with-ext-dsp
2731 if test x${with_ext_dsp} = xyes; then
2732 tm_defines="${tm_defines} TARGET_DEFAULT_EXT_DSP=1"
2736 tm_file="elfos.h ${tm_file}"
2737 tmake_file="${tmake_file} nios2/t-nios2"
2740 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h nios2/linux.h "
2743 tm_file="${tm_file} newlib-stdint.h nios2/elf.h"
2744 extra_options="${extra_options} nios2/elf.opt"
2747 tm_file="${tm_file} newlib-stdint.h nios2/rtems.h rtems.h"
2748 tmake_file="${tmake_file} t-rtems nios2/t-rtems"
2753 tm_file="${tm_file} newlib-stdint.h"
2755 tmake_file="nvptx/t-nvptx"
2756 if test x$enable_as_accelerator = xyes; then
2757 extra_programs="${extra_programs} mkoffload\$(exeext)"
2758 tm_file="${tm_file} nvptx/offload.h"
2762 tm_file="elfos.h ${tm_file}"
2763 tmake_file="${tmake_file} or1k/t-or1k"
2764 # Force .init_array support. The configure script cannot always
2765 # automatically detect that GAS supports it, yet we require it.
2766 gcc_cv_initfini_array=yes
2768 # Handle --with-multilib-list=...
2769 or1k_multilibs="${with_multilib_list}"
2770 if test "$or1k_multilibs" = "default"; then
2771 or1k_multilibs="mcmov,msoft-mul,msoft-div"
2773 or1k_multilibs=`echo $or1k_multilibs | sed -e 's/,/ /g'`
2774 for or1k_multilib in ${or1k_multilibs}; do
2775 case ${or1k_multilib} in
2776 mcmov | msext | msfimm | \
2778 mhard-float | mdouble-float | munordered-float | msoft-float | \
2779 mhard-div | mhard-mul | \
2780 msoft-div | msoft-mul )
2781 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${or1k_multilib}"
2784 echo "--with-multilib-list=${with_multilib_list} not supported."
2788 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2792 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h"
2793 tm_file="${tm_file} or1k/linux.h"
2796 tm_file="${tm_file} newlib-stdint.h or1k/elf.h"
2797 extra_options="${extra_options} or1k/elf.opt"
2800 tm_file="${tm_file} newlib-stdint.h or1k/rtems.h rtems.h"
2801 tmake_file="${tmake_file} or1k/t-rtems"
2806 tm_file="${tm_file} newlib-stdint.h"
2809 # port not yet contributed
2810 #powerpc-*-openbsd*)
2811 # tmake_file="${tmake_file} rs6000/t-fprules"
2815 extra_options="${extra_options} ${cpu_type}/darwin.opt"
2817 *-darwin1[0-9]* | *-darwin9*)
2818 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2819 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2822 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2823 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2826 tm_file="${tm_file} ${cpu_type}/darwin7.h"
2829 # Earlier - ingle arch, with 32b only
2830 # OS X 10.0, the first edition is Darwin4
2833 tmake_file="${tmake_file} t-slibgcc"
2835 powerpc64-*-darwin*)
2836 extra_options="${extra_options} ${cpu_type}/darwin.opt"
2837 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
2838 tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h"
2840 powerpc*-*-freebsd*)
2841 tm_file="${tm_file} elfos.h gnu-user.h ${fbsd_tm_file} rs6000/sysv4.h"
2842 extra_options="${extra_options} rs6000/sysv4.opt"
2843 tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
2846 tm_file="${tm_file} rs6000/sysv4le.h" ;;
2850 tm_file="${tm_file} rs6000/default64.h rs6000/freebsd64.h"
2851 tmake_file="${tmake_file} rs6000/t-freebsd64"
2852 extra_options="${extra_options} rs6000/linux64.opt"
2853 if test $fbsd_major -ge 13; then
2854 tm_defines="${tm_defines} TARGET_FREEBSD32_SECURE_PLT=1"
2858 if test $fbsd_major -ge 13; then
2859 tm_file="rs6000/secureplt.h ${tm_file}"
2861 tm_file="${tm_file} rs6000/freebsd.h"
2866 tm_file="${tm_file} elfos.h gnu-user.h ${nbsd_tm_file} freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h"
2867 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2868 tmake_file="${tmake_file} rs6000/t-netbsd"
2869 extra_options="${extra_options} rs6000/sysv4.opt"
2871 powerpc-*-eabisimaltivec*)
2872 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"
2873 extra_options="${extra_options} rs6000/sysv4.opt"
2874 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
2878 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"
2879 extra_options="${extra_options} rs6000/sysv4.opt"
2880 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
2884 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h"
2885 extra_options="${extra_options} rs6000/sysv4.opt"
2886 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
2888 powerpc-*-eabialtivec*)
2889 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabialtivec.h"
2890 extra_options="${extra_options} rs6000/sysv4.opt"
2891 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
2895 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h"
2896 extra_options="${extra_options} rs6000/sysv4.opt"
2897 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
2901 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"
2902 extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
2903 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-rtems rs6000/t-ppccomm"
2906 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h rs6000/sysv4.h"
2907 extra_options="${extra_options} rs6000/sysv4.opt"
2908 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm"
2909 extra_objs="$extra_objs rs6000-linux.o"
2912 tm_file="${tm_file} rs6000/sysv4le.h" ;;
2914 case ${target}:${with_cpu} in
2915 powerpc64*: | powerpc64*:native) cpu_is_64bit=yes ;;
2917 maybe_biarch=${cpu_is_64bit}
2918 case ${enable_targets} in
2919 *powerpc64*) maybe_biarch=yes ;;
2920 all) maybe_biarch=yes ;;
2922 case ${target}:${enable_targets}:${maybe_biarch} in
2923 powerpc64-* | powerpc-*:*:yes | *:*powerpc64-*:yes | *:all:yes \
2924 | powerpc64le*:*powerpcle* | powerpc64le*:*powerpc-* \
2925 | powerpcle-*:*powerpc64le*:yes)
2926 if test x$cpu_is_64bit = xyes; then
2927 tm_file="${tm_file} rs6000/default64.h"
2929 tm_file="rs6000/biarch64.h ${tm_file} rs6000/linux64.h glibc-stdint.h"
2930 tmake_file="$tmake_file rs6000/t-linux64"
2933 tmake_file="$tmake_file rs6000/t-linux64le"
2934 case ${enable_targets} in
2935 all | *powerpc64-* | *powerpc-*)
2936 tmake_file="$tmake_file rs6000/t-linux64lebe" ;;
2939 case ${enable_targets} in
2940 all | *powerpc64le-* | *powerpcle-*)
2941 tmake_file="$tmake_file rs6000/t-linux64bele" ;;
2944 extra_options="${extra_options} rs6000/linux64.opt"
2947 tm_file="${tm_file} rs6000/default64.h rs6000/linux64.h glibc-stdint.h"
2948 extra_options="${extra_options} rs6000/linux64.opt"
2949 tmake_file="${tmake_file} rs6000/t-linux"
2952 tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
2953 tmake_file="${tmake_file} rs6000/t-ppcos rs6000/t-linux"
2957 powerpc*-*-linux*ppc476*)
2958 tm_file="${tm_file} rs6000/476.h"
2959 extra_options="${extra_options} rs6000/476.opt" ;;
2960 powerpc*-*-linux*altivec*)
2961 tm_file="${tm_file} rs6000/linuxaltivec.h" ;;
2965 enable_secureplt=yes ;;
2967 if test x${enable_secureplt} = xyes; then
2968 tm_file="rs6000/secureplt.h ${tm_file}"
2971 powerpc*-wrs-vxworks7r*)
2973 # Wind River 7 post SR0600 is mostly like Linux so we setup
2974 # our config in a very similar fashion and adjust to a few
2977 # The system compiler is configured with secureplt by default.
2978 tm_file="${tm_file} rs6000/secureplt.h"
2980 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h"
2981 tm_file="${tm_file} rs6000/sysv4.h rs6000/biarch64.h rs6000/default64.h rs6000/linux64.h"
2982 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
2984 extra_options="${extra_options} rs6000/sysv4.opt linux.opt rs6000/linux64.opt"
2986 tmake_file="${tmake_file} t-linux rs6000/t-linux64 rs6000/t-fprules rs6000/t-ppccomm"
2987 tmake_file="${tmake_file} rs6000/t-vxworks"
2989 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
2990 extra_objs="$extra_objs linux.o rs6000-linux.o"
2992 powerpc-wrs-vxworks*)
2993 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h rs6000/sysv4.h"
2994 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm rs6000/t-vxworks"
2995 extra_options="${extra_options} rs6000/sysv4.opt"
2996 extra_headers="${extra_headers} ppc-asm.h"
2999 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksmils.h"
3000 tmake_file="${tmake_file} rs6000/t-vxworksmils"
3003 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksae.h"
3004 tmake_file="${tmake_file} rs6000/t-vxworksae"
3007 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3013 tm_file="${tm_file} elfos.h gnu-user.h rs6000/sysv4.h rs6000/lynx.h lynx.h"
3014 tmake_file="t-lynx rs6000/t-lynx"
3015 extra_options="${extra_options} rs6000/sysv4.opt lynx.opt"
3021 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h"
3022 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3023 extra_options="${extra_options} rs6000/sysv4.opt"
3025 powerpcle-*-eabisim*)
3026 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"
3027 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3028 extra_options="${extra_options} rs6000/sysv4.opt"
3032 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"
3033 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3034 extra_options="${extra_options} rs6000/sysv4.opt"
3038 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3039 tmake_file="${tmake_file} pru/t-pru"
3040 extra_objs="pru-pragma.o pru-passes.o"
3043 rs6000-ibm-aix7.1.* | powerpc-ibm-aix7.1.*)
3044 tmake_file="rs6000/t-aix52 t-slibgcc"
3045 if test x$cpu_is_64bit = xyes; then
3046 tm_file="${tm_file} rs6000/biarch64.h"
3047 tmake_file="rs6000/t-aix64 t-slibgcc"
3049 tm_file="${tm_file} rs6000/aix.h rs6000/aix71.h rs6000/xcoff.h rs6000/aix-stdint.h"
3050 extra_options="${extra_options} rs6000/aix64.opt"
3054 default_use_cxa_atexit=yes
3056 rs6000-ibm-aix7.2.* | powerpc-ibm-aix7.2.*)
3057 tmake_file="rs6000/t-aix52 t-slibgcc"
3058 if test x$cpu_is_64bit = xyes; then
3059 tm_file="${tm_file} rs6000/biarch64.h"
3060 tmake_file="rs6000/t-aix64 t-slibgcc"
3062 tm_file="${tm_file} rs6000/aix.h rs6000/aix72.h rs6000/xcoff.h rs6000/aix-stdint.h"
3063 extra_options="${extra_options} rs6000/aix64.opt"
3067 default_use_cxa_atexit=yes
3069 rs6000-ibm-aix[789].* | powerpc-ibm-aix[789].*)
3070 tmake_file="rs6000/t-aix52 t-slibgcc"
3071 if test x$cpu_is_64bit = xyes; then
3072 tm_file="${tm_file} rs6000/biarch64.h"
3073 tmake_file="rs6000/t-aix64 t-slibgcc"
3075 tm_file="${tm_file} rs6000/aix.h rs6000/aix73.h rs6000/xcoff.h rs6000/aix-stdint.h"
3076 extra_options="${extra_options} rs6000/aix64.opt"
3080 default_use_cxa_atexit=yes
3083 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3084 target_has_targetm_common=no
3085 c_target_objs="rl78-c.o"
3086 cxx_target_objs="rl78-c.o"
3087 tmake_file="${tmake_file} rl78/t-rl78"
3090 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3091 tmake_file="${tmake_file} rx/t-rx"
3092 extra_options="${extra_options} rx/elf.opt"
3095 tm_file="elfos.h linux.h glibc-stdint.h rx/linux.h ../../libgcc/config/rx/rx-abi.h"
3096 tmake_file="${tmake_file} rx/t-linux"
3099 tm_file="s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3100 c_target_objs="${c_target_objs} s390-c.o"
3101 cxx_target_objs="${cxx_target_objs} s390-c.o"
3102 if test x$enable_targets = xall; then
3103 tmake_file="${tmake_file} s390/t-linux64"
3105 tmake_file="${tmake_file} s390/t-s390"
3108 tm_file="s390/s390x.h s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3109 tm_p_file="linux-protos.h s390/s390-protos.h"
3110 c_target_objs="${c_target_objs} s390-c.o"
3111 cxx_target_objs="${cxx_target_objs} s390-c.o"
3112 md_file=s390/s390.md
3113 extra_modes=s390/s390-modes.def
3114 out_file=s390/s390.cc
3115 tmake_file="${tmake_file} s390/t-linux64 s390/t-s390"
3118 tm_file="s390/s390x.h s390/s390.h elfos.h glibc-stdint.h s390/tpf.h"
3119 tm_p_file=s390/s390-protos.h
3120 c_target_objs="${c_target_objs} s390-c.o"
3121 cxx_target_objs="${cxx_target_objs} s390-c.o"
3122 md_file=s390/s390.md
3123 extra_modes=s390/s390-modes.def
3124 out_file=s390/s390.cc
3126 extra_options="${extra_options} s390/tpf.opt"
3127 tmake_file="${tmake_file} s390/t-s390"
3129 sh-*-elf* | sh[12346l]*-*-elf* | \
3130 sh-*-linux* | sh[2346lbe]*-*-linux* | \
3131 sh-*-netbsdelf* | shl*-*-netbsdelf*)
3132 tmake_file="${tmake_file} sh/t-sh sh/t-elf"
3133 if test x${with_endian} = x; then
3135 sh[1234]*be-*-* | sh[1234]*eb-*-*) with_endian=big ;;
3136 shbe-*-* | sheb-*-*) with_endian=big,little ;;
3137 sh[1234]l* | sh[34]*-*-linux*) with_endian=little ;;
3138 shl* | sh*-*-linux* | \
3139 sh-superh-elf) with_endian=little,big ;;
3140 sh[1234]*-*-*) with_endian=big ;;
3141 *) with_endian=big,little ;;
3144 # TM_ENDIAN_CONFIG is used by t-sh to determine multilibs.
3145 # First word : the default endian.
3146 # Second word: the secondary endian (optional).
3147 case ${with_endian} in
3148 big) TM_ENDIAN_CONFIG=mb ;;
3149 little) TM_ENDIAN_CONFIG=ml ;;
3150 big,little) TM_ENDIAN_CONFIG="mb ml" ;;
3151 little,big) TM_ENDIAN_CONFIG="ml mb" ;;
3152 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
3154 case ${with_endian} in
3155 little*) tm_file="sh/little.h ${tm_file}" ;;
3157 tm_file="${tm_file} elfos.h sh/elf.h"
3159 sh*-*-linux*) tmake_file="${tmake_file} sh/t-linux"
3160 if test x$enable_fdpic = xyes; then
3161 tm_defines="$tm_defines FDPIC_DEFAULT=1"
3163 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h sh/linux.h" ;;
3165 tm_file="${tm_file} ${nbsd_tm_file} sh/netbsd-elf.h"
3166 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3169 sh*-superh-elf) if test x$with_libgloss != xno; then
3171 tm_file="${tm_file} sh/newlib.h"
3173 tm_file="${tm_file} sh/embed-elf.h"
3174 tm_file="${tm_file} sh/superh.h"
3175 extra_options="${extra_options} sh/superh.opt" ;;
3176 *) if test x$with_newlib = xyes \
3177 && test x$with_libgloss = xyes; then
3178 tm_file="${tm_file} sh/newlib.h"
3180 tm_file="${tm_file} sh/embed-elf.h" ;;
3186 tm_file="${tm_file} newlib-stdint.h"
3189 # sed el/eb endian suffixes away to avoid confusion with sh[23]e
3190 case `echo ${target} | sed 's/e[lb]-/-/'` in
3191 sh4a_single_only*) sh_cpu_target=sh4a-single-only ;;
3192 sh4a_single*) sh_cpu_target=sh4a-single ;;
3193 sh4a_nofpu*) sh_cpu_target=sh4a-nofpu ;;
3194 sh4al) sh_cpu_target=sh4al ;;
3195 sh4a*) sh_cpu_target=sh4a ;;
3196 sh4_single_only*) sh_cpu_target=sh4-single-only ;;
3197 sh4_single*) sh_cpu_target=sh4-single ;;
3198 sh4_nofpu*) sh_cpu_target=sh4-nofpu ;;
3199 sh4* | sh-superh-*) sh_cpu_target=sh4 ;;
3200 sh3e*) sh_cpu_target=sh3e ;;
3201 sh*-*-netbsd* | sh3*) sh_cpu_target=sh3 ;;
3202 sh2a_single_only*) sh_cpu_target=sh2a-single-only ;;
3203 sh2a_single*) sh_cpu_target=sh2a-single ;;
3204 sh2a_nofpu*) sh_cpu_target=sh2a-nofpu ;;
3205 sh2a*) sh_cpu_target=sh2a ;;
3206 sh2e*) sh_cpu_target=sh2e ;;
3207 sh2*) sh_cpu_target=sh2 ;;
3208 *) sh_cpu_target=sh1 ;;
3210 # did the user say --without-fp ?
3211 if test x$with_fp = xno; then
3212 case ${sh_cpu_target} in
3214 sh4a* ) sh_cpu_target=sh4a-nofpu ;;
3215 sh4*) sh_cpu_target=sh4-nofpu ;;
3216 sh3*) sh_cpu_target=sh3 ;;
3217 sh2a*) sh_cpu_target=sh2a-nofpu ;;
3218 sh2*) sh_cpu_target=sh2 ;;
3219 *) echo --without-fp not available for $target: ignored
3221 tm_defines="$tm_defines STRICT_NOFPU=1"
3223 sh_cpu_default="`echo $with_cpu|sed s/^m/sh/|tr A-Z_ a-z-`"
3224 case $sh_cpu_default in
3225 sh2a-single-only | sh2a-single | sh2a-nofpu | sh2a | \
3226 sh4a-single-only | sh4a-single | sh4a-nofpu | sh4a | sh4al | \
3227 sh4-single-only | sh4-single | sh4-nofpu | sh4 | sh4-300 | \
3228 sh3e | sh3 | sh2e | sh2 | sh1) ;;
3229 "") sh_cpu_default=${sh_cpu_target} ;;
3230 *) echo "with_cpu=$with_cpu not supported"; exit 1 ;;
3232 sh_multilibs=${with_multilib_list}
3233 if test "$sh_multilibs" = "default" ; then
3235 sh[1234]*) sh_multilibs=${sh_cpu_target} ;;
3236 sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
3237 sh*-*-linux*) sh_multilibs=m1,m2,m2a,m3e,m4 ;;
3238 sh*-*-netbsd*) sh_multilibs=m3,m3e,m4 ;;
3239 *) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single ;;
3241 if test x$with_fp = xno; then
3242 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`"
3245 target_cpu_default=SELECT_`echo ${sh_cpu_default}|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`
3246 tm_defines=${tm_defines}' SH_MULTILIB_CPU_DEFAULT=\"'`echo $sh_cpu_default|sed s/sh/m/`'\"'
3247 tm_defines="$tm_defines SUPPORT_`echo $sh_cpu_default | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3248 sh_multilibs=`echo $sh_multilibs | sed -e 's/,/ /g' -e 's/^[Ss][Hh]/m/' -e 's/ [Ss][Hh]/ m/g' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-`
3249 for sh_multilib in ${sh_multilibs}; do
3250 case ${sh_multilib} in
3251 m1 | m2 | m2e | m3 | m3e | \
3252 m4 | m4-single | m4-single-only | m4-nofpu | m4-300 |\
3253 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al | \
3254 m2a | m2a-single | m2a-single-only | m2a-nofpu)
3255 # TM_MULTILIB_CONFIG is used by t-sh for the non-endian multilib definition
3256 # It is passed to MULTIILIB_OPTIONS verbatim.
3257 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG}/${sh_multilib}"
3258 tm_defines="$tm_defines SUPPORT_`echo $sh_multilib | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3260 \!*) # TM_MULTILIB_EXCEPTIONS_CONFIG is used by t-sh
3261 # It is passed the MULTILIB_EXCEPTIONS verbatim.
3262 TM_MULTILIB_EXCEPTIONS_CONFIG="${TM_MULTILIB_EXCEPTIONS_CONFIG} `echo $sh_multilib | sed 's/^!//'`" ;;
3264 echo "with_multilib_list=${sh_multilib} not supported."
3269 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's:^/::'`
3270 if test x${enable_incomplete_targets} = xyes ; then
3271 tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1"
3273 tm_file="$tm_file ./sysroot-suffix.h"
3274 tmake_file="$tmake_file t-sysroot-suffix"
3277 tmake_file="${tmake_file} sh/t-sh sh/t-rtems"
3278 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h newlib-stdint.h"
3281 tmake_file="$tmake_file sh/t-sh sh/t-vxworks"
3282 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h vx-common.h vxworks.h sh/vxworks.h"
3285 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp-elf.h"
3288 tmake_file="sparc/t-sparc sparc/t-leon"
3291 tmake_file="sparc/t-sparc sparc/t-leon3"
3294 tmake_file="sparc/t-sparc sparc/t-elf"
3299 tm_file="${tm_file} elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
3300 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
3303 tm_file="${tm_file} elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
3304 extra_options="${extra_options} sparc/long-double-switch.opt"
3307 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon"
3310 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon3"
3313 tmake_file="${tmake_file} sparc/t-sparc"
3316 if test x$enable_targets = xall; then
3317 tm_file="sparc/biarch64.h ${tm_file} sparc/linux64.h"
3318 tmake_file="${tmake_file} sparc/t-linux64"
3320 tm_file="${tm_file} sparc/linux.h"
3321 tmake_file="${tmake_file} sparc/t-linux"
3325 tm_file="${tm_file} elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3326 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3327 extra_options="${extra_options} sparc/long-double-switch.opt"
3328 tmake_file="${tmake_file} sparc/t-sparc"
3331 tm_file="sparc/biarch64.h ${tm_file} ${sol2_tm_file} sparc/tso.h"
3333 sparc64-*-* | sparcv9-*-*)
3334 tm_file="sparc/default64.h ${tm_file}"
3337 test x$with_cpu != x || with_cpu=v9
3340 tmake_file="${tmake_file} sparc/t-sparc sparc/t-sol2"
3343 tm_file="${tm_file} elfos.h sparc/sysv4.h vx-common.h vxworks.h sparc/vxworks.h"
3344 tmake_file="${tmake_file} sparc/t-sparc sparc/t-vxworks"
3347 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h"
3348 extra_options="${extra_options}"
3349 tmake_file="${tmake_file} sparc/t-sparc"
3352 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h sparc/rtemself.h rtems.h"
3353 extra_options="${extra_options}"
3354 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
3357 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"
3358 extra_options="${extra_options} sparc/long-double-switch.opt"
3359 tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
3361 sparc64-*-freebsd*|ultrasparc-*-freebsd*)
3362 tm_file="${tm_file} ${fbsd_tm_file} elfos.h sparc/sysv4.h sparc/freebsd.h"
3363 extra_options="${extra_options} sparc/long-double-switch.opt"
3364 case "x$with_cpu" in
3366 x) with_cpu=ultrasparc ;;
3367 *) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
3369 tmake_file="${tmake_file} sparc/t-sparc"
3372 tm_file="sparc/biarch64.h ${tm_file}"
3373 tm_file="${tm_file} elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3374 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3375 extra_options="${extra_options} sparc/long-double-switch.opt"
3376 tmake_file="${tmake_file} sparc/t-sparc sparc/t-netbsd64"
3379 tm_file="sparc/openbsd1-64.h ${tm_file} elfos.h sparc/sysv4.h sparc/sp64-elf.h"
3380 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h sparc/openbsd64.h"
3381 extra_options="${extra_options} openbsd.opt"
3382 extra_options="${extra_options}"
3385 tmake_file="${tmake_file} sparc/t-sparc"
3388 tm_file="elfos.h ${tm_file} c6x/elf-common.h c6x/elf.h"
3389 tm_file="${tm_file} tm-dwarf2.h newlib-stdint.h"
3390 tmake_file="c6x/t-c6x c6x/t-c6x-elf"
3394 tm_file="elfos.h ${tm_file} gnu-user.h linux.h c6x/elf-common.h c6x/uclinux-elf.h"
3395 tm_file="${tm_file} tm-dwarf2.h glibc-stdint.h"
3396 tm_file="${tm_file} ./sysroot-suffix.h"
3397 tmake_file="t-sysroot-suffix t-slibgcc"
3398 tmake_file="${tmake_file} c6x/t-c6x c6x/t-c6x-elf c6x/t-c6x-uclinux"
3402 target_cpu_default="TARGET_CPU_generic"
3403 tm_file="elfos.h v850/v850.h"
3404 tm_file="${tm_file} v850/rtems.h rtems.h newlib-stdint.h"
3405 tmake_file="${tmake_file} v850/t-v850"
3406 tmake_file="${tmake_file} v850/t-rtems"
3408 c_target_objs="v850-c.o"
3409 cxx_target_objs="v850-c.o"
3414 target_cpu_default="TARGET_CPU_v850e3v5"
3417 target_cpu_default="TARGET_CPU_v850e2v3"
3420 target_cpu_default="TARGET_CPU_v850e2"
3422 v850e1-*-* | v850es-*-*)
3423 target_cpu_default="TARGET_CPU_v850e1"
3426 target_cpu_default="TARGET_CPU_v850e"
3429 target_cpu_default="TARGET_CPU_generic"
3432 tm_file="elfos.h newlib-stdint.h v850/v850.h"
3434 c_target_objs="v850-c.o"
3435 cxx_target_objs="v850-c.o"
3439 tm_file="${tm_file} elfos.h gnu-user.h linux.h vax/elf.h vax/linux.h"
3440 extra_options="${extra_options} vax/elf.opt"
3443 tm_file="${tm_file} elfos.h ${nbsd_tm_file} vax/elf.h vax/netbsd-elf.h"
3444 extra_options="${extra_options} netbsd.opt netbsd-elf.opt vax/elf.opt"
3445 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
3448 tm_file="elfos.h ${tm_file} visium/elf.h newlib-stdint.h"
3449 tmake_file="visium/t-visium visium/t-crtstuff"
3452 # For historical reasons, the target files omit the 'x'.
3453 tm_file="elfos.h newlib-stdint.h stormy16/stormy16.h"
3454 tm_p_file=stormy16/stormy16-protos.h
3455 md_file=stormy16/stormy16.md
3456 out_file=stormy16/stormy16.cc
3457 extra_options=stormy16/stormy16.opt
3458 tmake_file="stormy16/t-stormy16"
3461 tm_file="${tm_file} elfos.h newlib-stdint.h xtensa/elf.h"
3462 extra_options="${extra_options} xtensa/elf.opt"
3465 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/linux.h"
3466 tmake_file="${tmake_file} xtensa/t-xtensa"
3469 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/uclinux.h"
3470 tmake_file="${tmake_file} xtensa/t-xtensa"
3471 extra_options="${extra_options} xtensa/uclinux.opt"
3474 tm_file="mn10300/mn10300.h elfos.h gnu-user.h linux.h glibc-stdint.h mn10300/linux.h"
3479 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3480 c_target_objs="m32c-pragma.o"
3481 cxx_target_objs="m32c-pragma.o"
3484 echo "*** Configuration ${target} not supported" 1>&2
3490 i[34567]86-*-linux* | x86_64-*-linux*)
3491 tmake_file="${tmake_file} i386/t-pmm_malloc i386/t-i386"
3493 i[34567]86-*-* | x86_64-*-*)
3494 tmake_file="${tmake_file} i386/t-gmm_malloc i386/t-i386"
3496 powerpc*-*-* | rs6000-*-*)
3497 tm_file="${tm_file} ${cpu_type}/option-defaults.h"
3503 tmake_file="${tmake_file} t-musl"
3506 tmake_file="${tmake_file} t-uclibc"
3510 # Assume the existence of indirect function support and allow the use of the
3511 # resolver attribute.
3513 *-*-linux*android*|*-*-linux*uclibc*|*-*-linux*musl*)
3515 *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
3517 *-*-linux* | *-*-gnu*)
3519 aarch64*-* | arm*-* | i[34567]86-* | powerpc*-* | s390*-* | sparc*-* | x86_64-* | loongarch*-*)
3520 default_gnu_indirect_function=yes
3526 # Build mkoffload tool
3528 *-intelmic-* | *-intelmicemul-*)
3529 tmake_file="${tmake_file} i386/t-intelmic"
3530 tm_file="${tm_file} i386/intelmic-offload.h"
3534 if [ "$target_has_targetcm" = "no" ]; then
3535 c_target_objs="$c_target_objs default-c.o"
3536 cxx_target_objs="$cxx_target_objs default-c.o"
3539 if [ "$common_out_file" = "" ]; then
3540 if [ "$target_has_targetm_common" = "yes" ]; then
3541 common_out_file="$cpu_type/$cpu_type-common.cc"
3543 common_out_file="default-common.cc"
3547 if [ "$target_has_targetdm" = "no" ]; then
3548 d_target_objs="$d_target_objs default-d.o"
3551 # Support for --with-cpu and related options (and a few unrelated options,
3555 echo "--with-cpu must be passed a value" 1>&2
3560 # Set arch and cpu from ${target} and ${target_noncanonical}. Set cpu
3561 # to generic if there is no processor scheduler model for the target.
3564 arch_without_sse2=no
3565 arch_without_64bit=no
3568 if test $fbsd_major -ge 6; then
3574 arch_without_sse2=yes
3575 arch_without_64bit=yes
3580 arch_without_sse2=yes
3581 arch_without_64bit=yes
3586 arch_without_sse2=yes
3587 arch_without_64bit=yes
3592 arch_without_sse2=yes
3593 arch_without_64bit=yes
3596 arch_without_sse2=yes
3597 arch_without_64bit=yes
3598 case ${target_noncanonical} in
3611 pentium_mmx-*|winchip_c6-*|winchip2-*|c3-*)
3621 i686-*-* | i786-*-*)
3622 case ${target_noncanonical} in
3659 amdfam10-*|barcelona-*)
3663 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3667 k8-*|opteron-*|athlon64-*|athlon_fx-*)
3671 athlon_xp-*|athlon_mp-*|athlon_4-*)
3674 arch_without_sse2=yes
3675 arch_without_64bit=yes
3677 athlon_tbird-*|athlon-*)
3680 arch_without_sse2=yes
3685 arch_without_sse2=yes
3694 arch_without_sse2=yes
3696 pentium3-*|pentium3m-*)
3699 arch_without_sse2=yes
3701 pentium4-*|pentium4m-*)
3740 arch_without_sse2=yes
3745 arch_without_sse2=yes
3746 arch_without_64bit=yes
3751 case ${target_noncanonical} in
3788 amdfam10-*|barcelona-*)
3792 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3796 k8-*|opteron-*|athlon_64-*)
3832 # If there is no $with_cpu option, try to infer one from ${target}.
3833 # This block sets nothing except for with_cpu.
3834 if test x$with_cpu = x ; then
3836 i[34567]86-*-elfiamcu)
3839 i[34567]86-*-*|x86_64-*-*)
3857 frv-*-*linux* | frv400-*-*linux*)
3864 case "$with_arch" in
3866 with_cpu=${default_cf_cpu}
3869 with_cpu=m${default_m68k_cpu}
3885 with_cpu="`echo ${target} | sed 's/-.*$//'`"
3894 # Avoid overriding --with-cpu-32 and --with-cpu-64 values.
3896 i[34567]86-*-*|x86_64-*-*)
3897 if test x$with_cpu_32 != x || test x$with_cpu_64 != x; then
3898 if test x$with_cpu_32 = x; then
3899 with_cpu_32=$with_cpu
3901 if test x$with_cpu_64 = x; then
3902 with_cpu_64=$with_cpu
3910 # Support for --with-arch and related options (and a few unrelated options,
3912 case ${with_arch} in
3914 echo "--with-arch must be passed a value" 1>&2
3919 # If there is no $with_arch option, try to infer one from ${target}.
3920 # This block sets nothing except for with_arch.
3921 if test x$with_arch = x ; then
3923 i[34567]86-*-darwin*|x86_64-*-darwin*)
3924 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
3925 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
3927 i[34567]86-*-elfiamcu)
3931 # --with-fpmath sets the default ISA to SSE2, which is the same
3932 # ISA supported by Pentium 4.
3933 if test x$with_fpmath = x || test $arch_without_sse2 = no; then
3942 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
3953 # Avoid overriding --with-arch-32 and --with-arch-64 values.
3955 i[34567]86-*-darwin*|x86_64-*-darwin*)
3956 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
3957 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
3959 i[34567]86-*-*|x86_64-*-*)
3960 if test x$with_arch_32 != x || test x$with_arch_64 != x; then
3961 if test x$with_arch_32 = x; then
3962 with_arch_32=$with_arch
3964 if test x$with_arch_64 = x; then
3965 if test $arch_without_64bit = yes; then
3966 # Set the default 64bit arch to x86-64 if the default arch
3967 # doesn't support 64bit.
3970 with_arch_64=$with_arch
3974 elif test $arch_without_64bit$need_64bit_isa = yesyes; then
3975 # Set the default 64bit arch to x86-64 if the default arch
3976 # doesn't support 64bit and we need 64bit ISA.
3977 with_arch_32=$with_arch
3985 # Infer a default setting for --with-float.
3986 if test x$with_float = x; then
3988 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
3989 # The R5900 doesn't support 64-bit float. 32-bit float doesn't
3990 # comply with IEEE 754.
3996 # Infer a default setting for --with-fpu.
3997 if test x$with_fpu = x; then
3999 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4000 # The R5900 FPU only supports single precision.
4006 # Support --with-fpmath.
4007 if test x$with_fpmath != x; then
4009 i[34567]86-*-* | x86_64-*-*)
4010 case ${with_fpmath} in
4012 tm_file="${tm_file} i386/avxmath.h"
4015 tm_file="${tm_file} i386/ssemath.h"
4018 echo "Invalid --with-fpmath=$with_fpmath" 1>&2
4024 echo "--with-fpmath isn't supported for $target." 1>&2
4030 # Similarly for --with-schedule.
4031 if test x$with_schedule = x; then
4034 # Override default PA8000 scheduling model.
4035 with_schedule=7100LC
4040 # Infer a default setting for --with-llsc.
4041 if test x$with_llsc = x; then
4044 # The kernel emulates LL and SC where necessary.
4047 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4048 # The R5900 doesn't support LL(D) and SC(D).
4054 # Validate and mark as valid any --with options supported
4055 # by this target. In order to use a particular --with option
4056 # you must list it in supported_defaults; validating the value
4057 # is optional. This case statement should set nothing besides
4058 # supported_defaults.
4063 supported_defaults="abi cpu cpu_64 arch arch_64 tune tune_64"
4064 if test x$with_cpu_64 != x && test x$with_cpu = x; then
4065 with_cpu=$with_cpu_64
4067 if test x$with_arch_64 != x && test x$with_arch = x; then
4068 with_arch=$with_arch_64
4070 if test x$with_tune_64 != x && test x$with_tune = x; then
4071 with_tune=$with_tune_64
4073 for which in cpu arch tune; do
4074 eval "val=\$with_$which"
4075 base_val=`echo $val | sed -e 's/\+.*//'`
4076 ext_val=`echo $val | sed -e 's/[a-z0-9.-]\+//'`
4078 if [ $which = arch ]; then
4079 def=aarch64-arches.def
4080 pattern=AARCH64_ARCH
4082 def=aarch64-cores.def
4083 pattern=AARCH64_CORE
4086 # Find the base CPU or ARCH id in aarch64-cores.def or
4087 # aarch64-arches.def
4088 if [ x"$base_val" = x ] \
4089 || grep "^$pattern(\"$base_val\"," \
4090 ${srcdir}/config/aarch64/$def \
4093 # Disallow extensions in --with-tune=cortex-a53+crc.
4094 if [ $which = tune ] && [ x"$ext_val" != x ]; then
4095 echo "Architecture extensions not supported in --with-$which=$val" 1>&2
4099 # Use the pre-processor to strip flatten the options.
4100 # This makes the format less rigid than if we use
4101 # grep and sed directly here.
4102 opt_macro="AARCH64_OPT_EXTENSION(A, B, C, D, E, F)=A, B, C, D, E, F"
4103 options_parsed="`$ac_cv_prog_CPP -D"$opt_macro" -x c \
4104 ${srcdir}/config/aarch64/aarch64-option-extensions.def`"
4106 while [ x"$ext_val" != x ]
4108 ext_val=`echo $ext_val | sed -e 's/\+//'`
4109 ext=`echo $ext_val | sed -e 's/\+.*//'`
4110 base_ext=`echo $ext | sed -e 's/^no//'`
4111 opt_line=`echo -e "$options_parsed" | \
4112 grep "^\"$base_ext\""`
4114 if [ x"$base_ext" = x ] \
4115 || [ x"$opt_line" != x ]; then
4118 echo "Unknown extension used in --with-$which=$val" 1>&2
4121 ext_val=`echo $ext_val | sed -e 's/[a-z0-9]\+//'`
4126 # Allow --with-$which=native.
4127 if [ "$val" = native ]; then
4130 echo "Unknown $which used in --with-$which=$val" 1>&2
4138 supported_defaults="cpu tune"
4139 for which in cpu tune; do
4140 eval "val=\$with_$which"
4143 | ev4 | ev45 | 21064 | ev5 | 21164 | ev56 | 21164a \
4144 | pca56 | 21164PC | 21164pc | ev6 | 21264 | ev67 \
4148 echo "Unknown CPU used in --with-$which=$val" 1>&2
4156 supported_defaults="cpu fpu"
4159 if [ x"$with_cpu" = x ] \
4160 || grep -q -E "^ARC_CPU[[:blank:]]*\($with_cpu," \
4161 ${srcdir}/config/arc/arc-cpus.def
4166 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4170 # see if --with-fpu matches any of the supported FPUs
4175 fpus | fpus_div | fpus_fma | fpus_all)
4179 fpuda | fpuda_div | fpuda_fma | fpuda_all)
4183 fpud | fpud_div | fpud_fma | fpud_all)
4188 echo "Unknown floating point type used in "\
4189 "--with-fpu=$with_fpu" 1>&2
4194 if [ -n "$flags_ok" ] \
4195 && ! grep -q -E "^ARC_CPU[[:blank:]]*\($new_cpu,[[:blank:]]*$flags_ok," \
4196 ${srcdir}/config/arc/arc-cpus.def
4198 echo "Unknown floating point type used in "\
4199 "--with-fpu=$with_fpu for cpu $new_cpu" 1>&2
4205 # Handle --with-multilib-list.
4206 if test "x${with_multilib_list}" != xdefault; then
4207 TM_MULTILIB_CONFIG="${with_multilib_list}"
4212 supported_defaults="cpu endian float"
4216 supported_defaults="arch cpu float tune fpu abi mode tls"
4217 for which in cpu tune arch; do
4218 # See if it matches a supported value
4219 eval "val=\$with_$which"
4220 if [ x"$val" != x ]; then
4221 cpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4222 -v cmd="chk$which $val" \
4223 ${srcdir}/config/arm/arm-cpus.in`
4224 if [ "$cpu" = "error" ]; then
4225 echo "Unknown target in --with-$which=$val" 1>&2
4229 eval "target_${which}_cname=$new_val"
4230 echo "For $val real value is $new_val"
4235 case "$with_float" in
4237 | soft | hard | softfp)
4241 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4246 # see if --with-fpu matches any of the supported FPUs
4247 if [ x"$with_fpu" != x ] ; then
4249 fpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4250 -v cmd="chkfpu $val" \
4251 ${srcdir}/config/arm/arm-cpus.in`
4252 if [ "$fpu" = "error" ]
4254 echo "Unknown target in --with-fpu=$val" 1>&2
4261 | apcs-gnu | atpcs | aapcs | iwmmxt | aapcs-linux )
4265 echo "Unknown ABI used in --with-abi=$with_abi"
4270 case "$with_mode" in
4276 echo "Unknown mode used in --with-mode=$with_mode"
4287 echo "Unknown TLS method used in --with-tls=$with_tls" 1>&2
4292 if test "x$with_arch" != x && test "x$with_cpu" != x; then
4293 echo "Switch \"--with-arch\" may not be used with switch \"--with-cpu\"" 1>&2
4297 if test "x$with_cpu" != x && test "x$with_tune" != x; then
4298 echo "Switch \"--with-tune\" may not be used with switch \"--with-cpu\"" 1>&2
4302 # Add extra multilibs
4303 if test "x$with_multilib_list" != x; then
4305 arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
4306 if test "x${arm_multilibs}" != xdefault ; then
4307 for arm_multilib in ${arm_multilibs}; do
4308 case ${arm_multilib} in
4310 tmake_profile_file="arm/t-multilib"
4313 ml=`echo "X$arm_multilib" | sed '1s,^X@,,'`
4314 if test -f "${srcdir}/config/arm/${ml}"; then
4315 tmake_file="${tmake_file} arm/${ml}"
4317 echo "Error: ${ml} does not exist in ${srcdir}/config/arm" >&2
4322 echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2
4329 if test "x${tmake_profile_file}" != x ; then
4330 # arm/t-aprofile and arm/t-rmprofile are only
4331 # designed to work without any with-cpu,
4332 # with-arch, with-mode, with-fpu or with-float
4334 if test "x$with_arch" != x \
4335 || test "x$with_cpu" != x \
4336 || test "x$with_float" != x \
4337 || test "x$with_fpu" != x \
4338 || test "x$with_mode" != x ; then
4339 echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=${with_multilib_list}" 1>&2
4341 elif test "x$ml" != x ; then
4342 echo "Error: You cannot use builtin multilib profiles along with custom ones" 1>&2
4345 # But pass the default value for float-abi
4346 # through to the multilib selector
4348 tmake_file="${tmake_file} ${tmake_profile_file}"
4349 TM_MULTILIB_CONFIG="$with_multilib_list"
4352 target_cpu_cname=${target_cpu_cname:-arm7tdmi}
4353 with_cpu=${with_cpu:-$target_cpu_cname}
4357 supported_defaults=cpu
4362 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4368 fido-*-* | m68k*-*-*)
4369 supported_defaults="arch cpu"
4370 case "$with_arch" in
4372 m68k_arch_family="$with_arch"
4375 echo "Invalid --with-arch=$with_arch" 1>&2
4380 # We always have a $with_cpu setting here.
4382 "m68000" | "m68010" | "m68020" | "m68030" | "m68040" | "m68060")
4383 m68k_cpu_ident=$with_cpu
4386 m68k_cpu_ident=m68020
4387 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_40"
4390 m68k_cpu_ident=m68020
4391 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_60"
4394 # We need the C identifier rather than the string.
4395 m68k_cpu_ident=`awk -v arg="\"$with_cpu\"" \
4396 'BEGIN { FS="[ \t]*[,()][ \t]*" }; \
4397 $1 == "M68K_DEVICE" && $2 == arg { print $3 }' \
4398 ${srcdir}/config/m68k/m68k-devices.def`
4399 if [ x"$m68k_cpu_ident" = x ] ; then
4400 echo "Unknown CPU used in --with-cpu=$with_cpu" 1>&2
4403 with_cpu="mcpu=$with_cpu"
4409 supported_defaults="arch tune"
4411 for which in arch tune; do
4412 eval "val=\$with_$which"
4414 "" | fiji | gfx900 | gfx906 | gfx908 | gfx90a)
4418 echo "Unknown cpu used in --with-$which=$val." 1>&2
4423 [ "x$with_arch" = x ] && with_arch=fiji
4427 supported_defaults="arch schedule"
4429 case "$with_arch" in
4430 "" | 1.0 | 1.1 | 2.0)
4434 echo "Unknown architecture used in --with-arch=$with_arch" 1>&2
4439 case "$with_schedule" in
4440 "" | 700 | 7100 | 7100LC | 7200 | 7300 | 8000)
4444 echo "Unknown processor used in --with-schedule=$with_schedule." 1>&2
4450 i[34567]86-*-* | x86_64-*-*)
4451 supported_defaults="abi arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64"
4452 for which in arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64; do
4453 eval "val=\$with_$which"
4454 case " $x86_archs " in
4462 echo "CPU given in --with-$which=$val doesn't support 64bit mode." 1>&2
4471 if test x${val} != x; then
4472 case " $x86_64_archs " in
4474 # Disallow x86-64-v* for --with-cpu=/--with-tune=
4475 case "x$which$val" in
4476 xcpu*x86-64-v*|xtune*x86-64-v*)
4477 echo "Unknown CPU given in --with-$which=$val." 1>&2
4486 # Allow $x86_cpus --with-cpu=/--with-tune=
4489 case " $x86_cpus " in
4494 echo "Unknown CPU given in --with-$which=$val." 1>&2
4500 echo "Unknown CPU given in --with-$which=$val." 1>&2
4513 supported_defaults="abi arch tune riscv_attribute isa_spec"
4516 riscv-* | riscv32*) xlen=32 ;;
4517 riscv64*) xlen=64 ;;
4518 *) echo "Unsupported RISC-V target ${target}" 1>&2; exit 1 ;;
4521 case "${with_isa_spec}" in
4522 ""|default|20191213|201912)
4523 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20191213"
4524 with_isa_spec=20191213
4527 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_2P2"
4530 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20190608"
4531 with_isa_spec=20190608
4534 echo "--with-isa-spec only accept 2.2, 20191213, 201912, 20190608 or 201906" 1>&2
4538 case "${with_riscv_attribute}" in
4540 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4543 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=0"
4546 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4549 echo "--with-riscv-attribute=${with_riscv_attribute} is not supported. The argument must begin with yes, no or default." 1>&2
4555 # Infer arch from --with-arch, --target, and --with-abi.
4556 case "${with_arch}" in
4557 rv32e* | rv32i* | rv32g* | rv64i* | rv64g*)
4561 # Infer XLEN, but otherwise assume GC.
4562 case "${with_abi}" in
4563 ilp32e) with_arch="rv32e" ;;
4564 ilp32 | ilp32f | ilp32d) with_arch="rv32gc" ;;
4565 lp64 | lp64f | lp64d) with_arch="rv64gc" ;;
4566 *) with_arch="rv${xlen}gc" ;;
4570 echo "--with-arch=${with_arch} is not supported. The argument must begin with rv32e, rv32i, rv32g, rv64i, or rv64g." 1>&2
4574 PYTHON=`which python || which python3 || which python2`
4575 if test "x${PYTHON}" != x; then
4576 with_arch=`${PYTHON} ${srcdir}/config/riscv/arch-canonicalize -misa-spec=${with_isa_spec} ${with_arch}`
4578 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ARCH=${with_arch}"
4580 # Make sure --with-abi is valid. If it was not specified,
4581 # pick a default based on the ISA, preferring soft-float
4582 # unless the D extension is present.
4583 case "${with_abi}" in
4584 ilp32 | ilp32e | ilp32f | ilp32d | lp64 | lp64f | lp64d)
4587 case "${with_arch}" in
4588 rv32*d* | rv32g*) with_abi=ilp32d ;;
4589 rv32e*) with_abi=ilp32e ;;
4590 rv32*) with_abi=ilp32 ;;
4591 rv64*d* | rv64g*) with_abi=lp64d ;;
4592 rv64*) with_abi=lp64 ;;
4596 echo "--with-abi=${with_abi} is not supported" 1>&2
4600 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ABI=${with_abi}"
4602 # Make sure ABI and ISA are compatible.
4603 case "${with_abi},${with_arch}" in
4604 ilp32,rv32* | ilp32e,rv32e* \
4605 | ilp32f,rv32*f* | ilp32f,rv32g* \
4606 | ilp32d,rv32*d* | ilp32d,rv32g* \
4608 | lp64f,rv64*f* | lp64f,rv64g* \
4609 | lp64d,rv64*d* | lp64d,rv64g*)
4612 echo "--with-abi=${with_abi} is not supported for ISA ${with_arch}" 1>&2
4616 # Handle --with-multilib-generator.
4617 if test "x${with_multilib_generator}" != xdefault; then
4618 if test "x${with_multilib_list}" != xdefault; then
4619 echo "--with-multilib-list= can't used with --with-multilib-generator= at same time" 1>&2
4624 if ${srcdir}/config/riscv/multilib-generator \
4625 -misa-spec=${with_isa_spec} \
4626 `echo ${with_multilib_generator} | sed 's/;/ /g'`\
4627 > t-multilib-config;
4629 tmake_file="${tmake_file} riscv/t-withmultilib-generator"
4631 echo "invalid option for --with-multilib-generator" 1>&2
4636 echo "--with-multilib-generator= is not supported for ${target}, only supported for riscv*-*-elf*" 1>&2
4642 # Handle --with-multilib-list.
4643 if test "x${with_multilib_list}" != xdefault; then
4644 tmake_file="${tmake_file} riscv/t-withmultilib"
4646 case ${with_multilib_list} in
4647 ilp32 | ilp32f | ilp32d \
4648 | lp64 | lp64f | lp64d )
4649 TM_MULTILIB_CONFIG="${with_arch},${with_multilib_list}"
4652 echo "--with-multilib-list=${with_multilib_list} not supported."
4659 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"
4661 case ${with_float} in
4666 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4672 "" | single | double)
4676 echo "Unknown fpu type used in --with-fpu=$with_fpu" 1>&2
4686 echo "Unknown NaN encoding used in --with-nan=$with_nan" 1>&2
4691 case ${with_fp_32} in
4696 echo "Unknown FP mode used in --with-fp-32=$with_fp_32" 1>&2
4701 case ${with_odd_spreg_32} in
4703 with_odd_spreg_32="odd-spreg"
4706 with_odd_spreg_32="no-odd-spreg"
4712 echo "Unknown odd-spreg-32 type used in --with-odd-spreg-32=$with_odd_spreg_32" 1>&2
4718 "" | 32 | o64 | n32 | 64 | eabi)
4722 echo "Unknown ABI used in --with-abi=$with_abi" 1>&2
4727 case ${with_divide} in
4728 "" | breaks | traps)
4732 echo "Unknown division check type use in --with-divide=$with_divide" 1>&2
4737 case ${with_llsc} in
4748 echo "Unknown llsc type used in --with-llsc" 1>&2
4753 case ${with_mips_plt} in
4758 with_mips_plt=no-plt
4763 echo "Unknown --with-mips-plt argument: $with_mips_plt" 1>&2
4768 case ${with_synci} in
4778 echo "Unknown synci type used in --with-synci" 1>&2
4783 case ${with_lxc1_sxc1} in
4785 with_lxc1_sxc1=lxc1-sxc1
4788 with_lxc1_sxc1=no-lxc1-sxc1
4793 echo "Unknown lxc1-sxc1 type used in --with-lxc1-sxc1" 1>&2
4798 case ${with_madd4} in
4808 echo "Unknown madd4 type used in --with-madd4" 1>&2
4815 supported_defaults="abi arch tune fpu"
4819 abi_pattern abi_default \
4820 abiext_pattern abiext_default \
4821 arch_pattern arch_default \
4822 fpu_pattern fpu_default \
4823 tune_pattern tune_default \
4824 triplet_os triplet_abi
4826 # Infer ABI from the triplet.
4828 loongarch64-*-*-*f64)
4832 loongarch64-*-*-*f32)
4836 loongarch64-*-*-*sf)
4841 abi_pattern="lp64[dfs]"
4846 echo "Unsupported target ${target}." 1>&2
4852 abiext_default="base"
4854 # Get the canonical triplet (multiarch specifier).
4856 *-linux-gnu*) triplet_os="linux-gnu";;
4857 *-linux-musl*) triplet_os="linux-musl";;
4859 echo "Unsupported target ${target}." 1>&2
4864 la_canonical_triplet="loongarch64-${triplet_os}${triplet_abi}"
4867 # Perform initial sanity checks on --with-* options.
4868 case ${with_arch} in
4869 "" | loongarch64 | la464) ;; # OK, append here.
4871 if test x${host} != x${target}; then
4872 echo "--with-arch=native is illegal for cross-compiler." 1>&2
4877 echo "Please set a default value for \${with_arch}" \
4878 "according to your target triplet \"${target}\"." 1>&2
4882 echo "Unknown arch in --with-arch=$with_arch" 1>&2
4888 "" | lp64d | lp64f | lp64s) ;; # OK, append here.
4890 echo "Unsupported ABI given in --with-abi=$with_abi" 1>&2
4895 case ${with_abiext} in
4896 "" | base) ;; # OK, append here.
4898 echo "Unsupported ABI extention type $with_abiext" 1>&2
4904 "" | none | 32 | 64) ;; # OK, append here.
4906 # Convert "0" to "none" for upcoming checks.
4910 echo "Unknown fpu type in --with-fpu=$with_fpu" 1>&2
4916 # Set default value for with_abi.
4919 if test x${abi_default} != x; then
4920 with_abi=${abi_default}
4922 with_abi=${abi_pattern}
4927 if echo "${with_abi}" | grep -E "^${abi_pattern}$" > /dev/null; then
4930 echo "Incompatible options:" \
4931 "--with-abi=${with_abi} and --target=${target}." 1>&2
4937 # Set default value for with_abiext (internal)
4938 case ${with_abiext} in
4940 if test x${abiext_default} != x; then
4941 with_abiext=${abiext_default}
4943 with_abiext=${abiext_pattern}
4948 if echo "${with_abiext}" | grep -E "^${abiext_pattern}$" > /dev/null; then
4951 echo "The ABI extension type \"${with_abiext}\"" \
4952 "is incompatible with --target=${target}." 1>&2
4959 # Infer ISA-related default options from the ABI: pass 1
4960 case ${with_abi}/${with_abiext} in
4962 # architectures that support lp64* ABI
4963 arch_pattern="native|loongarch64|la464"
4964 # default architecture for lp64* ABI
4965 arch_default="loongarch64"
4968 echo "Unsupported ABI type ${with_abi}/${with_abiext}." 1>&2
4973 # Infer ISA-related default options from the ABI: pass 2
4974 case ${with_abi}/${with_abiext} in
4983 fpu_pattern="none|32|64"
4987 echo "Unsupported ABI type ${with_abi}/${with_abiext}." 1>&2
4992 ## Set default value for with_arch.
4993 case ${with_arch} in
4995 if test x${arch_default} != x; then
4996 with_arch=${arch_default}
4998 with_arch=${arch_pattern}
5003 if echo "${with_arch}" | grep -E "^${arch_pattern}$" > /dev/null; then
5006 echo "${with_abi}/${with_abiext} ABI cannot be implemented with" \
5007 "--with-arch=${with_arch}." 1>&2
5013 ## Set default value for with_fpu.
5016 if test x${fpu_default} != x; then
5017 with_fpu=${fpu_default}
5019 with_fpu=${fpu_pattern}
5024 if echo "${with_fpu}" | grep -E "^${fpu_pattern}$" > /dev/null; then
5027 echo "${with_abi}/${with_abiext} ABI cannot be implemented with" \
5028 "--with-fpu=${with_fpu}." 1>&2
5035 # Infer default with_tune from with_arch: pass 1
5036 case ${with_arch} in
5039 tune_default="native"
5042 tune_pattern="loongarch64|la464"
5043 tune_default="la464"
5046 # By default, $with_tune == $with_arch
5047 tune_pattern="$with_arch"
5051 ## Set default value for with_tune.
5052 case ${with_tune} in
5054 if test x${tune_default} != x; then
5055 with_tune=${tune_default}
5057 with_tune=${tune_pattern}
5062 if echo "${with_tune}" | grep -E "^${tune_pattern}$" > /dev/null; then
5065 echo "Incompatible options: --with-tune=${with_tune}" \
5066 "and --with-arch=${with_arch}." 1>&2
5072 # Handle --with-multilib-list.
5073 if test x"${with_multilib_list}" = x \
5074 || test x"${with_multilib_list}" = xno \
5075 || test x"${with_multilib_list}" = xdefault \
5076 || test x"${enable_multilib}" != xyes; then
5078 with_multilib_list="${with_abi}/${with_abiext}"
5081 # Check if the configured default ABI combination is included in
5082 # ${with_multilib_list}.
5083 loongarch_multilib_list_sane=no
5085 # This one goes to TM_MULTILIB_CONFIG, for use in t-linux.
5086 loongarch_multilib_list_make=""
5088 # This one goes to tm_defines, for use in loongarch-driver.c.
5089 loongarch_multilib_list_c=""
5091 # ${with_multilib_list} should not contain whitespaces,
5092 # consecutive commas or slashes.
5093 if echo "${with_multilib_list}" \
5094 | grep -E -e "[[:space:]]" -e '[,/][,/]' -e '[,/]$' -e '^[,/]' > /dev/null; then
5095 echo "Invalid argument to --with-multilib-list." 1>&2
5099 unset component idx elem_abi_base elem_abi_ext elem_tmp
5100 for elem in $(echo "${with_multilib_list}" | tr ',' ' '); do
5104 component=$(echo "${elem}" | awk -F'/' '{print $'"${idx}"'}')
5108 # Component 1: Base ABI type
5109 case ${component} in
5110 lp64d) elem_tmp="ABI_BASE_LP64D,";;
5111 lp64f) elem_tmp="ABI_BASE_LP64F,";;
5112 lp64s) elem_tmp="ABI_BASE_LP64S,";;
5114 echo "Unknown base ABI \"${component}\" in --with-multilib-list." 1>&2
5118 loongarch_multilib_list_c="${loongarch_multilib_list_c}${elem_tmp}"
5119 loongarch_multilib_list_make="${loongarch_multilib_list_make}mabi=${component}"
5120 elem_abi_base="${component}"
5124 # Component 2: ABI extension type
5125 case ${component} in
5128 elem_tmp="ABI_EXT_BASE,"
5131 echo "Unknown ABI extension \"${component}\" in --with-multilib-list." 1>&2
5135 loongarch_multilib_list_c="${loongarch_multilib_list_c}${elem_tmp}"
5136 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5137 elem_abi_ext="${component}"
5141 # Component 3 and on: optional stuff
5142 case ${component} in
5144 # End of component list.
5148 echo "Unknown ABI \"${elem}\" in --with-multilib-list." 1>&2
5156 if test x${elem_abi_base} = x${with_abi} \
5157 && test x${elem_abi_ext} = x${with_abiext}; then
5158 loongarch_multilib_list_sane=yes
5160 loongarch_multilib_list_make="${loongarch_multilib_list_make},"
5163 # Check if the default ABI combination is in the default list.
5164 if test x${loongarch_multilib_list_sane} = xno; then
5165 if test x${with_abiext} = xbase; then
5168 with_abiext="/${with_abiext}"
5171 echo "Default ABI combination (${with_abi}${with_abiext})" \
5172 "not found in --with-multilib-list." 1>&2
5176 # Remove the excessive appending comma.
5177 loongarch_multilib_list_c=${loongarch_multilib_list_c%,}
5178 loongarch_multilib_list_make=${loongarch_multilib_list_make%,}
5182 supported_defaults="arch cpu nds32_lib float fpu_config"
5184 # process --with-arch
5185 case "${with_arch}" in
5187 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5191 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5194 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=1"
5197 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=2"
5201 echo "Cannot accept --with-arch=$with_arch, available values are: v2 v2j v3 v3m v3f v3s" 1>&2
5206 case "${with_cpu}" in
5210 n6 | n7 |n8 | e8 | s8 | n9 | n10 | d10 | n12 | n13 | n15)
5214 echo "Cannot accept --with-cpu=$with_cpu, available values are: n6 n7 n8 e8 s8 n9 n10 d10 n12 n13 n15" 1>&2
5219 # process --with-nds32-lib
5220 case "${with_nds32_lib}" in
5224 with_nds32_lib=ulibc
5227 with_nds32_lib=glibc
5230 with_nds32_lib=newlib
5231 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5237 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5241 # for the arch=v3f or arch=v3s under mculib toolchain,
5242 # we would like to set -fno-math-errno as default
5243 case "${with_arch}" in
5245 tm_defines="${tm_defines} TARGET_DEFAULT_NO_MATH_ERRNO=1"
5253 echo "Cannot accept --with-nds32-lib=$with_nds32_lib, available values are: newlib mculib glibc uclibc" 1>&2
5258 # process --with-float
5259 case "${with_float}" in
5264 echo "Cannot accept --with-float=$with_float, available values are: soft hard" 1>&2
5269 # process --with-config-fpu
5270 case "${with_config_fpu}" in
5275 echo "Cannot accept --with-config-fpu=$with_config_fpu, available values from 0 to 7" 1>&2
5283 supported_defaults="arch"
5284 case "$with_arch" in
5289 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5296 supported_defaults=arch
5297 TM_MULTILIB_CONFIG=$with_arch
5298 #TODO 'sm_[...]' list per 'nvptx-sm.def'.
5303 sm_35 | sm_53 | sm_70 | sm_75 | sm_80 )
5304 # OK, but we'd like 'sm_30', too.
5305 TM_MULTILIB_CONFIG="$TM_MULTILIB_CONFIG sm_30"
5308 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5314 powerpc*-*-* | rs6000-*-*)
5315 supported_defaults="abi cpu cpu_32 cpu_64 float tune tune_32 tune_64 advance_toolchain"
5317 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5318 eval "val=\$with_$which"
5320 default32 | default64)
5325 echo "$val only valid for --with-cpu and --with-tune." 1>&2
5329 with_which="with_$which"
5333 tm_defines="${tm_defines} CONFIG_PPC405CR"
5334 eval "with_$which=405"
5336 "" | common | native \
5337 | power[3456789] | power10 | power5+ | power6x \
5338 | powerpc | powerpc64 | powerpc64le \
5340 | 401 | 403 | 405 | 405fp | 440 | 440fp | 464 | 464fp \
5341 | 476 | 476fp | 505 | 601 | 602 | 603 | 603e | ec603e \
5342 | 604 | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 \
5343 | a2 | e300c[23] | 854[08] | e500mc | e500mc64 | e5500 | e6500 \
5344 | titan | 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5 | cell)
5348 echo "Unknown cpu used in --with-$which=$val." 1>&2
5355 "" | elfv1 | elfv2 )
5359 echo "Unknown ABI used in --with-abi=$with_abi"
5364 if test "x$with_advance_toolchain" != x; then
5365 if test -d "/opt/$with_advance_toolchain/." -a \
5366 -d "/opt/$with_advance_toolchain/bin/." -a \
5367 -d "/opt/$with_advance_toolchain/include/."; then
5369 tm_file="$tm_file ./advance-toolchain.h"
5370 (at="/opt/$with_advance_toolchain"
5371 echo "/* Use Advance Toolchain $at */"
5373 echo "#undef LINK_OS_NEW_DTAGS_SPEC"
5374 echo "#define LINK_OS_NEW_DTAGS_SPEC" \
5375 "\"--enable-new-dtags\""
5377 echo "#undef DYNAMIC_LINKER_PREFIX"
5378 echo "#define DYNAMIC_LINKER_PREFIX \"$at\""
5380 echo "#undef MD_EXEC_PREFIX"
5381 echo "#define MD_EXEC_PREFIX \"$at/bin/\""
5383 echo "#undef MD_STARTFILE_PREFIX"
5384 echo "#define MD_STARTFILE_PREFIX \"$prefix/lib/\""
5386 echo "#undef MD_STARTFILE_PREFIX_1"
5387 echo "#define MD_STARTFILE_PREFIX_1 \"$at/lib/\"") \
5388 > advance-toolchain.h
5390 echo "Unknown advance-toolchain $with_advance_toolchain"
5395 # Set up the default long double format if the user changed it.
5396 if test x$with_long_double_format = xieee; then
5397 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=1"
5399 elif test x$with_long_double_format = xibm; then
5400 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=0"
5405 supported_defaults="arch mode tune"
5407 for which in arch tune; do
5408 eval "val=\$with_$which"
5410 "" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | z15 | z16 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12 | arch13 | arch14 )
5414 echo "Unknown cpu used in --with-$which=$val." 1>&2
5420 case ${with_mode} in
5425 echo "Unknown architecture mode used in --with-mode=$with_mode." 1>&2
5431 sh[123456ble]*-*-* | sh-*-*)
5432 supported_defaults="cpu"
5433 case "`echo $with_cpu | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz- | sed s/sh/m/`" in
5434 "" | m1 | m2 | m2e | m3 | m3e | m4 | m4-single | m4-single-only | m4-nofpu )
5437 m2a | m2a-single | m2a-single-only | m2a-nofpu)
5439 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al)
5442 echo "Unknown CPU used in --with-cpu=$with_cpu, known values:" 1>&2
5443 echo "m1 m2 m2e m3 m3e m4 m4-single m4-single-only m4-nofpu" 1>&2
5444 echo "m4a m4a-single m4a-single-only m4a-nofpu m4al" 1>&2
5445 echo "m2a m2a-single m2a-single-only m2a-nofpu" 1>&2
5451 supported_defaults="cpu cpu_32 cpu_64 float tune tune_32 tune_64"
5453 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5454 eval "val=\$with_$which"
5456 "" | sparc | sparcv9 | sparc64 \
5458 | v8 | supersparc | hypersparc | leon | leon3 | leon3v7 \
5459 | sparclite | f930 | f934 | sparclite86x \
5460 | sparclet | tsc701 \
5461 | v9 | ultrasparc | ultrasparc3 | niagara | niagara2 \
5462 | niagara3 | niagara4 | niagara7 | m8)
5466 echo "Unknown cpu used in --with-$which=$val" 1>&2
5472 case ${with_float} in
5477 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
5484 supported_defaults="arch"
5486 case ${with_arch} in
5487 "" | c62x | c64x | c64x+ | c67x | c67x+ | c674x)
5491 echo "Unknown arch used in --with-arch=$with_arch." 1>&2
5498 supported_defaults=cpu
5500 "" | v850e | v850e1 | v850e2 | v850es | v850e2v3 | v850e3v5)
5504 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5510 supported_defaults="cpu"
5514 *) echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5521 # Targets for which there is at least one VxWorks port should include
5522 # vxworks-dummy.h to allow safe references to various TARGET_VXWORKS kinds
5523 # of markers from other files in the port, including the vxworks*.h files to
5524 # distinguish VxWorks variants such as VxWorks 7 or 64).
5527 arm*-*-* | i[34567]86-*-* | mips*-*-* | powerpc*-*-* | sh*-*-* \
5528 | sparc*-*-* | x86_64-*-*)
5529 tm_file="vxworks-dummy.h ${tm_file}"
5533 # Set some miscellaneous flags for particular targets.
5534 target_cpu_default2=
5537 if test x"$target_cpu_cname" != x
5539 target_cpu_default2=$target_cpu_cname
5544 if test x$with_cpu = x
5546 echo "Don't know the target cpu" 1>&2
5549 target_cpu_default2="\\\"$with_cpu\\\""
5554 if test x$gas = xyes
5556 target_cpu_default2="MASK_GAS"
5560 fido*-*-* | m68k*-*-*)
5561 target_cpu_default2=$m68k_cpu_ident
5562 tmake_file="m68k/t-opts $tmake_file"
5563 if [ x"$m68k_arch_family" != x ]; then
5564 tmake_file="m68k/t-$m68k_arch_family $tmake_file"
5568 i[34567]86-*-darwin* | x86_64-*-darwin*)
5570 i[34567]86-*-linux* | x86_64-*-linux*)
5571 extra_objs="${extra_objs} gnu-property.o"
5572 tmake_file="$tmake_file i386/t-linux i386/t-gnu-property"
5574 i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu)
5575 tmake_file="$tmake_file i386/t-kfreebsd"
5578 tmake_file="$tmake_file i386/t-gnu"
5580 i[34567]86-*-msdosdjgpp*)
5581 tmake_file="${tmake_file} i386/t-djgpp"
5583 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
5585 i[34567]86-*-cygwin* | x86_64-*-cygwin*)
5587 i[34567]86-*-mingw* | x86_64-*-mingw*)
5589 i[34567]86-*-dragonfly* | x86_64-*-dragonfly*)
5591 i[34567]86-*-freebsd*)
5594 tmake_file="${tmake_file} i386/t-freebsd64"
5600 if test x$gnu_ld = xyes
5602 target_cpu_default2="MASK_SPLIT_ADDRESSES"
5606 tm_defines="TARGET_ENDIAN_DEFAULT=0 $tm_defines"
5609 if test x$with_arch != x; then
5610 default_mips_arch=$with_arch
5612 with_arch=$default_mips_arch
5614 if test x$with_abi != x; then
5615 default_mips_abi=$with_abi
5617 case ${default_mips_arch} in
5618 mips1) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS1" ;;
5619 mips2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS2" ;;
5620 mips3) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3" ;;
5621 mips4) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS4" ;;
5622 mips32) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32" ;;
5623 mips32r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2" ;;
5624 mips32r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6" ;;
5625 mips64) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64" ;;
5626 mips64r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2" ;;
5627 mips64r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6" ;;
5629 case ${default_mips_abi} in
5630 32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_32" ;;
5631 o64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_O64" ;;
5632 n32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_N32" ;;
5633 64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_64" ;;
5634 eabi) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_EABI" ;;
5636 tmake_file="mips/t-mips $tmake_file"
5640 # Export canonical triplet.
5641 tm_defines="${tm_defines} LA_MULTIARCH_TRIPLET=${la_canonical_triplet}"
5643 # Define macro LA_DISABLE_MULTILIB if --disable-multilib
5644 tm_defines="${tm_defines} TM_MULTILIB_LIST=${loongarch_multilib_list_c}"
5645 if test x$enable_multilib = xyes; then
5646 TM_MULTILIB_CONFIG="${loongarch_multilib_list_make}"
5648 tm_defines="${tm_defines} LA_DISABLE_MULTILIB"
5651 # Let --with- flags initialize the enum variables from loongarch.opt.
5652 # See macro definitions from loongarch-opts.h and loongarch-cpu.h.
5653 case ${with_arch} in
5654 native) tm_defines="${tm_defines} DEFAULT_CPU_ARCH=CPU_NATIVE" ;;
5655 la464) tm_defines="${tm_defines} DEFAULT_CPU_ARCH=CPU_LA464" ;;
5656 loongarch64) tm_defines="${tm_defines} DEFAULT_CPU_ARCH=CPU_LOONGARCH64" ;;
5659 case ${with_tune} in
5660 native) tm_defines="${tm_defines} DEFAULT_CPU_TUNE=CPU_NATIVE" ;;
5661 la464) tm_defines="${tm_defines} DEFAULT_CPU_TUNE=CPU_LA464" ;;
5662 loongarch64) tm_defines="${tm_defines} DEFAULT_CPU_TUNE=CPU_LOONGARCH64" ;;
5666 lp64d) tm_defines="${tm_defines} DEFAULT_ABI_BASE=ABI_BASE_LP64D" ;;
5667 lp64f) tm_defines="${tm_defines} DEFAULT_ABI_BASE=ABI_BASE_LP64F" ;;
5668 lp64s) tm_defines="${tm_defines} DEFAULT_ABI_BASE=ABI_BASE_LP64S" ;;
5671 case ${with_abiext} in
5672 base) tm_defines="${tm_defines} DEFAULT_ABI_EXT=ABI_EXT_BASE" ;;
5676 none) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_NOFPU" ;;
5677 32) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU32" ;;
5678 64) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU64" ;;
5681 tmake_file="loongarch/t-loongarch $tmake_file"
5684 powerpc*-*-* | rs6000-*-*)
5685 # FIXME: The PowerPC port uses the value set at compile time,
5686 # although it's only cosmetic.
5687 if test "x$with_cpu" != x
5689 target_cpu_default2="\\\"$with_cpu\\\""
5691 out_file="${cpu_type}/${cpu_type}.cc"
5692 c_target_objs="${c_target_objs} ${cpu_type}-c.o"
5693 cxx_target_objs="${cxx_target_objs} ${cpu_type}-c.o"
5694 d_target_objs="${d_target_objs} ${cpu_type}-d.o"
5695 tmake_file="${cpu_type}/t-${cpu_type} ${tmake_file}"
5698 sh[123456ble]*-*-* | sh-*-*)
5699 c_target_objs="${c_target_objs} sh-c.o"
5700 cxx_target_objs="${cxx_target_objs} sh-c.o"
5704 # Some standard aliases.
5709 xsparcv9 | xsparc64)
5714 if test x$with_tune = x ; then
5725 # The SPARC port checks this value at compile-time.
5726 target_cpu_default2="TARGET_CPU_$with_cpu"
5730 case "x$with_cpu" in
5733 xv850e | xv850e1 | xv850e2 | xv850e2v3 | xv850e3v5)
5734 target_cpu_default2="TARGET_CPU_$with_cpu"
5737 target_cpu_default2="TARGET_CPU_v850e1"
5742 target_cpu_default2="TARGET_CPU_$with_cpu"
5747 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"
5748 for option in $all_defaults
5750 eval "val=\$with_"`echo $option | sed s/-/_/g`
5751 if test -n "$val"; then
5752 case " $supported_defaults " in
5756 echo "This target does not support --with-$option." 2>&1
5757 echo "Valid --with options are: $supported_defaults" 2>&1
5764 t="{ \"$option\", \"$val\" }"
5766 t="${t}, { \"$option\", \"$val\" }"
5773 configure_default_options="{ { NULL, NULL} }"
5775 configure_default_options="{ ${t} }"
5778 if test "$target_cpu_default2" != ""
5780 if test "$target_cpu_default" != ""
5782 target_cpu_default="(${target_cpu_default}|${target_cpu_default2})"
5784 target_cpu_default=$target_cpu_default2
5789 i[34567]86-*-* | x86_64-*-*)
5790 if test x$enable_as_accelerator = xyes; then
5791 extra_programs="mkoffload\$(exeext)"