1 # SPDX-License-Identifier: GPL-3.0-or-later
2 # GCC target-specific configuration file.
3 # Copyright (C) 1997-2021 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} dbxelf.h 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 dbxelf.h 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.
253 if test "x$enable_obsolete" != xyes; then
254 echo "*** Configuration ${target} is obsolete." >&2
255 echo "*** Specify --enable-obsolete to build it anyway." >&2
256 echo "*** Support will be REMOVED in the next major release of GCC," >&2
257 echo "*** unless a maintainer comes forward." >&2
262 # Unsupported targets list. Do not put an entry in this list unless
263 # it would otherwise be caught by a more permissive pattern. The list
264 # should be in alphabetical order.
266 # Avoid special cases that are not obsolete
277 | i[34567]86-go32-* \
278 | i[34567]86-*-go32* \
279 | m68k-*-uclinuxoldabi* \
280 | mips64orion*-*-rtems* \
282 | powerpc*-*-linux*paired* \
284 | sparc-hal-solaris2* \
287 | *-*-freebsd[12] | *-*-freebsd[1234].* \
288 | *-*-freebsd*aout* \
296 | *-*-solaris2.[0-9] \
297 | *-*-solaris2.[0-9].* \
302 echo "*** Configuration ${target} not supported" 1>&2
307 # Set default cpu_type, tm_file, tm_p_file and xm_file so it can be
308 # updated in each machine entry. Also set default extra_headers for some
311 cpu_type=`echo ${target} | sed 's/-.*$//'`
316 tmake_file=m32c/t-m32c
317 target_has_targetm_common=no
321 extra_headers="arm_fp16.h arm_neon.h arm_bf16.h arm_acle.h arm_sve.h"
322 c_target_objs="aarch64-c.o"
323 cxx_target_objs="aarch64-c.o"
324 d_target_objs="aarch64-d.o"
325 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"
326 target_gtfiles="\$(srcdir)/config/aarch64/aarch64-builtins.c \$(srcdir)/config/aarch64/aarch64-sve-builtins.h \$(srcdir)/config/aarch64/aarch64-sve-builtins.cc"
327 target_has_targetm_common=yes
331 extra_options="${extra_options} g.opt"
342 c_target_objs="arc-c.o"
343 cxx_target_objs="arc-c.o"
344 extra_options="${extra_options} arc/arc-tables.opt g.opt"
345 extra_headers="arc-simd.h"
349 extra_objs="arm-builtins.o aarch-common.o"
350 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"
351 target_type_format_char='%'
352 c_target_objs="arm-c.o"
353 cxx_target_objs="arm-c.o"
354 d_target_objs="arm-d.o"
355 extra_options="${extra_options} arm/arm-tables.opt"
356 target_gtfiles="\$(srcdir)/config/arm/arm-builtins.c"
360 c_target_objs="avr-c.o"
361 cxx_target_objs="avr-c.o"
370 extra_options="${extra_options} g.opt"
373 target_has_targetm_common=no
375 moxie*) cpu_type=moxie
376 target_has_targetm_common=no
380 extra_headers=math-68881.h
381 extra_options="${extra_options} m68k/m68k-tables.opt"
383 i[34567]86-*-* | x86_64-*-*)
385 c_target_objs="i386-c.o"
386 cxx_target_objs="i386-c.o"
387 d_target_objs="i386-d.o"
388 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"
389 target_gtfiles="\$(srcdir)/config/i386/i386-builtins.c \$(srcdir)/config/i386/i386-expand.c \$(srcdir)/config/i386/i386-options.c"
390 extra_options="${extra_options} fused-madd.opt"
391 extra_headers="cpuid.h mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h
392 pmmintrin.h tmmintrin.h ammintrin.h smmintrin.h
393 nmmintrin.h bmmintrin.h fma4intrin.h wmmintrin.h
394 immintrin.h x86intrin.h avxintrin.h xopintrin.h
395 ia32intrin.h cross-stdarg.h lwpintrin.h popcntintrin.h
396 lzcntintrin.h bmiintrin.h bmi2intrin.h tbmintrin.h
397 avx2intrin.h avx512fintrin.h fmaintrin.h f16cintrin.h
398 rtmintrin.h xtestintrin.h rdseedintrin.h prfchwintrin.h
399 adxintrin.h fxsrintrin.h xsaveintrin.h xsaveoptintrin.h
400 avx512cdintrin.h avx512erintrin.h avx512pfintrin.h
401 shaintrin.h clflushoptintrin.h xsavecintrin.h
402 xsavesintrin.h avx512dqintrin.h avx512bwintrin.h
403 avx512vlintrin.h avx512vlbwintrin.h avx512vldqintrin.h
404 avx512ifmaintrin.h avx512ifmavlintrin.h avx512vbmiintrin.h
405 avx512vbmivlintrin.h avx5124fmapsintrin.h avx5124vnniwintrin.h
406 avx512vpopcntdqintrin.h clwbintrin.h mwaitxintrin.h
407 clzerointrin.h pkuintrin.h sgxintrin.h cetintrin.h
408 gfniintrin.h cet.h avx512vbmi2intrin.h
409 avx512vbmi2vlintrin.h avx512vnniintrin.h
410 avx512vnnivlintrin.h vaesintrin.h vpclmulqdqintrin.h
411 avx512vpopcntdqvlintrin.h avx512bitalgintrin.h
412 pconfigintrin.h wbnoinvdintrin.h movdirintrin.h
413 waitpkgintrin.h cldemoteintrin.h avx512bf16vlintrin.h
414 avx512bf16intrin.h enqcmdintrin.h serializeintrin.h
415 avx512vp2intersectintrin.h avx512vp2intersectvlintrin.h
416 tsxldtrkintrin.h amxtileintrin.h amxint8intrin.h
417 amxbf16intrin.h x86gprintrin.h uintrintrin.h
418 hresetintrin.h keylockerintrin.h avxvnniintrin.h
422 extra_headers=ia64intrin.h
423 extra_options="${extra_options} g.opt fused-madd.opt"
429 extra_options="${extra_options} g.opt"
433 extra_options="${extra_options} g.opt"
436 extra_headers=math-68881.h
437 extra_options="${extra_options} m68k/m68k-tables.opt"
441 extra_options="${extra_options} g.opt"
445 d_target_objs="mips-d.o"
446 extra_headers="loongson.h loongson-mmiintrin.h msa.h"
447 extra_objs="frame-header-opt.o"
448 extra_options="${extra_options} g.opt fused-madd.opt mips/mips-tables.opt"
452 extra_headers="nds32_intrinsic.h nds32_isr.h nds32_init.inc"
455 extra_options="${extra_options} nds32/nds32-linux.opt"
458 extra_options="${extra_options} nds32/nds32-elf.opt"
463 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"
467 extra_options="${extra_options} g.opt"
471 c_target_objs="nvptx-c.o"
472 cxx_target_objs="nvptx-c.o"
479 extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
480 extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o"
481 extra_objs="${extra_objs} rs6000-builtins.o"
482 extra_headers="ppc-asm.h altivec.h htmintrin.h htmxlintrin.h"
483 extra_headers="${extra_headers} bmi2intrin.h bmiintrin.h"
484 extra_headers="${extra_headers} xmmintrin.h mm_malloc.h emmintrin.h"
485 extra_headers="${extra_headers} mmintrin.h x86intrin.h"
486 extra_headers="${extra_headers} pmmintrin.h tmmintrin.h smmintrin.h"
487 extra_headers="${extra_headers} ppu_intrinsics.h spu2vmx.h vec_types.h si2vmx.h"
488 extra_headers="${extra_headers} amo.h"
490 xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[3456789]|xpower10|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|xe6500)
494 extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
495 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.c \$(srcdir)/config/rs6000/rs6000-call.c"
496 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-pcrel-opt.c"
497 target_gtfiles="$target_gtfiles ./rs6000-builtins.h"
504 extra_objs="riscv-builtins.o riscv-c.o riscv-sr.o riscv-shorten-memrefs.o"
505 d_target_objs="riscv-d.o"
508 extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
509 extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
510 extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o"
511 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.c \$(srcdir)/config/rs6000/rs6000-call.c"
512 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-pcrel-opt.c"
516 c_target_objs="sparc-c.o"
517 cxx_target_objs="sparc-c.o"
518 d_target_objs="sparc-d.o"
519 extra_headers="visintrin.h"
523 d_target_objs="s390-d.o"
524 extra_options="${extra_options} fused-madd.opt"
525 extra_headers="s390intrin.h htmintrin.h htmxlintrin.h vecintrin.h"
527 # Note the 'l'; we need to be able to match e.g. "shle" or "shl".
528 sh[123456789lbe]*-*-* | sh-*-*)
530 extra_options="${extra_options} fused-madd.opt"
531 extra_objs="${extra_objs} sh_treg_combine.o sh-mem.o sh_optimize_sett_clrt.o"
538 extra_headers="c6x_intrinsics.h"
539 extra_options="${extra_options} c6x/c6x-tables.opt"
542 extra_options="${extra_options} fused-madd.opt"
552 tm_file=${cpu_type}/${cpu_type}.h
553 tm_d_file=${cpu_type}/${cpu_type}.h
554 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-protos.h
556 tm_p_file=${cpu_type}/${cpu_type}-protos.h
557 tm_d_file="${tm_d_file} ${cpu_type}/${cpu_type}-protos.h"
561 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-modes.def
563 extra_modes=${cpu_type}/${cpu_type}-modes.def
565 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}.opt
567 extra_options="${extra_options} ${cpu_type}/${cpu_type}.opt"
572 tm_p_file="${tm_p_file} arm/aarch-common-protos.h"
575 if test "x$with_multilib_list" = xilp32; then
576 tm_file="aarch64/biarchilp32.h ${tm_file}"
578 tm_file="aarch64/biarchlp64.h ${tm_file}"
582 tm_file="aarch64/biarchilp32.h ${tm_file}"
585 tm_file="aarch64/biarchlp64.h ${tm_file}"
588 echo "Unknown ABI used in --with-abi=$with_abi"
593 if test "x$with_abi" != x; then
594 echo "This target does not support --with-abi."
603 if test "x$with_multilib_list" = xmx32; then
604 tm_file="i386/biarchx32.h ${tm_file}"
606 tm_file="i386/biarch64.h ${tm_file}"
610 tm_file="i386/biarch64.h ${tm_file}"
613 tm_file="i386/biarchx32.h ${tm_file}"
616 echo "Unknown ABI used in --with-abi=$with_abi"
621 tm_p_file="arm/arm-flags.h ${tm_p_file} arm/aarch-common-protos.h"
625 # On a.out targets, we need to use collect2.
632 # Common C libraries.
633 tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
635 # 32-bit x86 processors supported by --with-arch=. Each processor
636 # MUST be separated by exactly one space.
637 x86_archs="athlon athlon-4 athlon-fx athlon-mp athlon-tbird \
638 athlon-xp k6 k6-2 k6-3 geode c3 c3-2 winchip-c6 winchip2 i386 i486 \
639 i586 i686 pentium pentium-m pentium-mmx pentium2 pentium3 pentium3m \
640 pentium4 pentium4m pentiumpro prescott lakemont samuel-2 nehemiah \
643 # 64-bit x86 processors supported by --with-arch=. Each processor
644 # MUST be separated by exactly one space.
645 x86_64_archs="amdfam10 athlon64 athlon64-sse3 barcelona bdver1 bdver2 \
646 bdver3 bdver4 znver1 znver2 znver3 btver1 btver2 k8 k8-sse3 opteron \
647 opteron-sse3 nocona core2 corei7 corei7-avx core-avx-i core-avx2 atom \
648 slm nehalem westmere sandybridge ivybridge haswell broadwell bonnell \
649 silvermont knl knm skylake-avx512 cannonlake icelake-client icelake-server \
650 skylake goldmont goldmont-plus tremont cascadelake tigerlake cooperlake \
651 sapphirerapids alderlake rocketlake eden-x2 nano nano-1000 nano-2000 nano-3000 \
652 nano-x2 eden-x4 nano-x4 x86-64 x86-64-v2 x86-64-v3 x86-64-v4 native"
654 # Additional x86 processors supported by --with-cpu=. Each processor
655 # MUST be separated by exactly one space.
656 x86_cpus="generic intel"
658 # Common parts for widely ported systems.
661 tmake_file="t-darwin "
662 tm_file="${tm_file} darwin.h"
663 darwin_os=`echo ${target} | sed 's/.*darwin\([0-9.]*\).*$/\1/'`
664 darwin_maj=`expr "$darwin_os" : '\([0-9]*\).*'`
665 macos_min=`expr "$darwin_os" : '[0-9]*\.\([0-9]*\).*'`
667 if test x"${macos_min}" = x; then
672 # Darwin 4 to 19 correspond to macOS 10.0 to 10.15
673 *-*-darwin[4-9]* | *-*-darwin1[0-9]*)
674 macos_min=`expr $darwin_maj - 4`
677 # Darwin 20 corresponds to macOS 11.
683 aarch64) macos_maj=11 ;;
684 x86_64) macos_min=6 ;;
688 *-*-darwin*) tm_defines="$tm_defines DARWIN_USE_KERNEL_VERS" ;;
690 # If configuring a cross-compiler then we will have set some
691 #Â default above, but it is probably not what was intended.
692 echo "Warning: Using ${target} is only suitable for Darwin hosts" 1>&2
693 echo "configure with an explicit target version" 1>&2
698 echo "Error: configuring for an unreleased macOS version ${target}" 1>&2
702 tm_defines="$tm_defines DEF_MIN_OSX_VERSION=\\\"${macos_maj}.${macos_min}\\\""
703 tm_defines="$tm_defines DEF_LD64=\\\"${def_ld64}\\\""
704 tm_file="${tm_file} ${cpu_type}/darwin.h"
705 tm_p_file="${tm_p_file} darwin-protos.h"
706 target_gtfiles="$target_gtfiles \$(srcdir)/config/darwin.c"
707 extra_options="${extra_options} rpath.opt darwin.opt"
708 c_target_objs="${c_target_objs} darwin-c.o"
709 cxx_target_objs="${cxx_target_objs} darwin-c.o"
710 d_target_objs="${d_target_objs} darwin-d.o"
711 fortran_target_objs="darwin-f.o"
712 target_has_targetcm=yes
713 target_has_targetdm=yes
714 extra_objs="${extra_objs} darwin.o"
715 extra_gcc_objs="darwin-driver.o"
716 default_use_cxa_atexit=yes
718 case ${enable_threads} in
719 "" | yes | posix) thread_file='posix' ;;
725 tmake_file="t-slibgcc"
726 case ${enable_threads} in
731 # Let these non-posix thread selections fall through if requested
734 echo 'Unknown thread configuration for DragonFly BSD'
738 extra_options="$extra_options rpath.opt dragonfly.opt"
739 default_use_cxa_atexit=yes
741 d_target_objs="${d_target_objs} dragonfly-d.o"
742 tmake_file="${tmake_file} t-dragonfly"
743 target_has_targetdm=yes
746 # This is the generic ELF configuration of FreeBSD. Later
747 # machine-specific sections may refine and add to this
750 # Due to tm_file entry ordering issues that vary between cpu
751 # architectures, we only define fbsd_tm_file to allow the
752 # machine-specific section to dictate the final order of all
753 # entries of tm_file with the minor exception that components
754 # of the tm_file set here will always be of the form:
756 # freebsd<version_number>.h [freebsd-<conf_option>.h ...] freebsd-spec.h freebsd.h
758 # The machine-specific section should not tamper with this
759 # ordering but may order all other entries of tm_file as it
760 # pleases around the provided core setting.
763 fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
764 if test "$fbsd_major" = ""; then
765 echo "Specify the major version number of the targeted FreeBSD release"
766 echo "like this: --target=amd64-unknown-freebsd10.1"
769 tm_defines="${tm_defines} FBSD_MAJOR=${fbsd_major}"
770 tmake_file="t-slibgcc"
771 case ${enable_threads} in
773 fbsd_tm_file="${fbsd_tm_file} freebsd-nthr.h"
779 echo 'Unknown thread configuration for FreeBSD'
783 fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h freebsd-stdint.h"
784 extra_options="$extra_options rpath.opt freebsd.opt"
789 default_use_cxa_atexit=yes;;
792 d_target_objs="${d_target_objs} freebsd-d.o"
793 tmake_file="${tmake_file} t-freebsd"
794 target_has_targetdm=yes
797 native_system_header_dir=/include
799 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi)
800 extra_options="$extra_options gnu-user.opt"
803 case ${enable_threads} in
804 "" | yes | posix) thread_file='posix' ;;
806 tmake_file="t-slibgcc"
808 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
811 native_system_header_dir=/include
814 # Linux C libraries selection switch: glibc / uclibc / bionic.
815 # uclibc and bionic aren't usable for GNU/Hurd and neither for GNU/k*BSD.
818 tm_p_file="${tm_p_file} linux-protos.h"
819 tmake_file="${tmake_file} t-linux"
820 extra_objs="${extra_objs} linux.o"
821 extra_options="${extra_options} linux.opt"
826 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC"
828 *-*-*uclibc* | *-*-uclinuxfdpiceabi)
829 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
832 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
835 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
838 # Assume that glibc or uClibc or Bionic are being used and so __cxa_atexit
840 default_use_cxa_atexit=yes
843 # Enable compilation for Android by default for *android* targets.
846 tm_defines="$tm_defines ANDROID_DEFAULT=1"
849 tm_defines="$tm_defines ANDROID_DEFAULT=0"
852 c_target_objs="${c_target_objs} glibc-c.o"
853 cxx_target_objs="${cxx_target_objs} glibc-c.o"
854 d_target_objs="${d_target_objs} glibc-d.o"
855 tmake_file="${tmake_file} t-glibc"
856 target_has_targetcm=yes
857 target_has_targetdm=yes
859 *-*-*uclibc* | *-*-uclinuxfdpiceabi)
862 # Linux targets always support .init_array.
863 gcc_cv_initfini_array=yes
868 tm_p_file="${tm_p_file} netbsd-protos.h"
869 tmake_file="t-netbsd t-slibgcc"
870 extra_objs="${extra_objs} netbsd.o"
871 d_target_objs="${d_target_objs} netbsd-d.o"
875 case ${enable_threads} in
876 "" | yes | posix) thread_file='posix' ;;
878 nbsd_tm_file="netbsd.h netbsd-stdint.h netbsd-elf.h"
879 default_use_cxa_atexit=yes
880 target_has_targetdm=yes
882 arm*-* | i[34567]86-* | powerpc*-* | sparc*-* | x86_64-*)
883 default_gnu_indirect_function=yes
888 tmake_file="t-openbsd"
889 case ${enable_threads} in
895 *-*-openbsd4.[3-9]|*-*-openbsd[5-9]*)
896 default_use_cxa_atexit=yes
899 d_target_objs="${d_target_objs} openbsd-d.o"
900 target_has_targetdm=yes
905 default_use_cxa_atexit=yes
908 case ${enable_threads} in
909 "" | yes | rtems) thread_file='rtems' ;;
910 posix) thread_file='posix' ;;
913 echo 'Unknown thread configuration for RTEMS'
917 tmake_file="${tmake_file} t-rtems"
918 extra_options="${extra_options} rtems.opt"
919 default_use_cxa_atexit=yes
923 extra_options="$extra_options gnu-user.opt"
925 case ${enable_threads} in
926 "" | yes | posix) thread_file='posix' ;;
928 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC SINGLE_LIBC"
934 # i?86-*-solaris2* needs to insert headers between cpu default and
935 # Solaris 2 specific ones.
936 sol2_tm_file_head="dbxelf.h elfos.h ${cpu_type}/sysv4.h"
937 sol2_tm_file_tail="${cpu_type}/sol2.h sol2.h"
938 sol2_tm_file="${sol2_tm_file_head} ${sol2_tm_file_tail}"
940 *-*-solaris2.1[1-9]*)
941 # __cxa_atexit was introduced in Solaris 11.4.
942 default_use_cxa_atexit=yes
946 if test x$gnu_ld = xyes; then
947 tm_file="usegld.h ${tm_file}"
949 if test x$gas = xyes; then
950 tm_file="usegas.h ${tm_file}"
952 tm_p_file="${tm_p_file} sol2-protos.h"
953 tmake_file="${tmake_file} t-sol2 t-slibgcc"
954 c_target_objs="${c_target_objs} sol2-c.o"
955 cxx_target_objs="${cxx_target_objs} sol2-c.o sol2-cxx.o"
956 d_target_objs="${d_target_objs} sol2-d.o"
957 extra_objs="${extra_objs} sol2.o sol2-stubs.o"
958 extra_options="${extra_options} sol2.opt"
959 case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
960 "":yes:* | yes:yes:* )
964 target_has_targetdm=yes
967 extra_options="${extra_options} vms/vms.opt"
969 tmake_file="vms/t-vms t-slibgcc"
971 target_gtfiles="$target_gtfiles \$(srcdir)/config/vms/vms.c"
972 tm_p_file="${tm_p_file} vms/vms-protos.h"
973 xm_file="vms/xm-vms.h"
974 c_target_objs="vms-c.o"
975 cxx_target_objs="vms-c.o"
976 fortran_target_objs="vms-f.o"
977 use_gcc_stdint=provide
978 tm_file="${tm_file} vms/vms-stdint.h"
979 if test x$gnu_ld != xyes; then
980 # Build wrappers for native case.
981 extra_programs="ld\$(exeext) ar\$(exeext)"
982 tmake_file="$tmake_file vms/t-vmsnative"
989 extra_options="${extra_options} vxworks.opt"
990 extra_objs="$extra_objs vxworks.o"
992 c_target_objs="${c_target_objs} vxworks-c.o"
993 cxx_target_objs="${cxx_target_objs} vxworks-c.o"
994 extra_headers="${extra_headers} ../vxworks/vxworks-predef.h"
995 target_has_targetcm="yes"
997 # This private header exposes a consistent interface for checks on
998 # the VxWorks version our runtime header files need to perform, based on
999 # what the system headers adverstise:
1001 extra_headers="${extra_headers} ../vxworks/_vxworks-versions.h"
1003 # Starting from VxWorks 7, the system comes with a Dinkumware
1004 # environment which requires the inclusion of "yvals.h" before other
1005 # system headers. We provide wrapped versions of a few headers to
1006 # accomodate such constraints:
1008 extra_headers="${extra_headers} ../vxworks/_yvals.h"
1009 extra_headers="${extra_headers} ../vxworks/_yvals-wrapper.h"
1011 extra_headers="${extra_headers} ../vxworks/math.h ../vxworks/complex.h"
1012 extra_headers="${extra_headers} ../vxworks/inttypes.h ../vxworks/setjmp.h"
1014 # We provide stdint.h ...
1016 tm_file="${tm_file} vxworks-stdint.h"
1018 # .. only through the yvals conditional wrapping mentioned above
1019 # to abide by the VxWorks 7 expectations. The final copy is performed
1020 # explicitly by a t-vxworks Makefile rule.
1023 extra_headers="${extra_headers} ../../ginclude/stdint-gcc.h"
1025 case ${enable_threads} in
1027 "" | yes | vxworks) thread_file='vxworks' ;;
1028 *) echo 'Unknown thread configuration for VxWorks'; exit 1 ;;
1031 # A few common macro definitions conveying general characteristics
1032 # of the configuration at hand. Note that by VxWorks 7, we mean the
1033 # the SR6xx major update or beyond in vendor parlance:
1037 tm_defines="$tm_defines TARGET_VXWORKS7=1"
1042 tm_defines="$tm_defines TARGET_VXWORKS64=1"
1046 # Then a few build configuration controls for VxWorks 7, which
1047 # has specificities on top of which we aim to provide more complete
1052 # VxWorks 7 always has init/fini_array support and it is simpler to
1053 # just leverage this, sticking to what the system toolchain does:
1054 gcc_cv_initfini_array=yes
1058 *-*-elf|arc*-*-elf*)
1059 # Assume that newlib is being used and so __cxa_atexit is provided.
1060 default_use_cxa_atexit=yes
1066 aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
1067 tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h"
1068 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-elf-raw.h"
1069 tmake_file="${tmake_file} aarch64/t-aarch64"
1075 tm_file="${tm_file} fuchsia.h"
1078 tm_file="${tm_file} aarch64/rtems.h rtems.h"
1083 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1086 aarch64_multilibs="${with_multilib_list}"
1087 if test "$aarch64_multilibs" = "default"; then
1088 aarch64_multilibs="lp64,ilp32"
1090 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1091 for aarch64_multilib in ${aarch64_multilibs}; do
1092 case ${aarch64_multilib} in
1094 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1097 echo "--with-multilib-list=${aarch64_multilib} not supported."
1101 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1103 aarch64*-*-freebsd*)
1104 tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file}"
1105 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-freebsd.h"
1106 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
1107 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1110 tm_file="${tm_file} dbxelf.h elfos.h ${nbsd_tm_file}"
1111 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-netbsd.h"
1112 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-netbsd"
1113 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1116 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h"
1117 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-linux.h"
1118 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-linux"
1119 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1122 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1125 aarch64_multilibs="${with_multilib_list}"
1126 if test "$aarch64_multilibs" = "default"; then
1127 # TODO: turn on ILP32 multilib build after its support is mature.
1128 # aarch64_multilibs="lp64,ilp32"
1129 aarch64_multilibs="lp64"
1131 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1132 for aarch64_multilib in ${aarch64_multilibs}; do
1133 case ${aarch64_multilib} in
1135 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1138 echo "--with-multilib-list=${aarch64_multilib} not supported."
1142 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1144 aarch64*-wrs-vxworks*)
1145 tm_file="${tm_file} elfos.h aarch64/aarch64-elf.h"
1146 tm_file="${tm_file} vx-common.h vxworks.h aarch64/aarch64-vxworks.h"
1147 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-vxworks"
1150 tm_file="elfos.h ${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h glibc-stdint.h"
1151 tmake_file="${tmake_file} alpha/t-linux alpha/t-alpha"
1152 extra_options="${extra_options} alpha/elf.opt"
1155 tm_file="elfos.h ${tm_file} ${nbsd_tm_file} alpha/elf.h alpha/netbsd.h"
1156 tmake_file="${tmake_file} alpha/t-alpha"
1157 extra_options="${extra_options} netbsd.opt netbsd-elf.opt \
1161 tm_defines="${tm_defines} OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_FUNCTION_SIZE OBSD_HAS_DECLARE_OBJECT"
1162 tm_file="elfos.h alpha/alpha.h alpha/elf.h openbsd.h openbsd-stdint.h alpha/openbsd.h openbsd-libpthread.h"
1163 tmake_file="${tmake_file} alpha/t-alpha"
1164 extra_options="${extra_options} openbsd.opt alpha/elf.opt"
1165 # default x-alpha is only appropriate for dec-osf.
1168 tm_file="${tm_file} vms/vms.h alpha/vms.h"
1169 tmake_file="${tmake_file} alpha/t-vms alpha/t-alpha"
1172 tm_file="arc/arc-arch.h dbxelf.h elfos.h newlib-stdint.h arc/elf.h ${tm_file}"
1173 tmake_file="arc/t-multilib arc/t-arc"
1174 extra_gcc_objs="driver-arc.o"
1175 if test "x$with_cpu" != x; then
1176 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1178 if test x${with_endian} = x; then
1180 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1181 *) with_endian=little ;;
1184 case ${with_endian} in
1186 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1188 case ${with_endian} in
1189 big*) tm_file="arc/big.h ${tm_file}"
1193 tm_file="arc/arc-arch.h dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arc/linux.h ${tm_file}"
1194 tmake_file="${tmake_file} arc/t-multilib-linux arc/t-arc"
1195 extra_gcc_objs="driver-arc.o"
1196 if test "x$with_cpu" != x; then
1197 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1199 if test x${with_endian} = x; then
1201 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1202 *) with_endian=little ;;
1205 case ${with_endian} in
1207 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1209 case ${with_endian} in
1210 big*) tm_file="arc/big.h ${tm_file}"
1212 # Force .init_array support. The configure script cannot always
1213 # automatically detect that GAS supports it, yet we require it.
1214 gcc_cv_initfini_array=yes
1217 # We only support VxWorks 7 now on ARM, post SR600. Pre SR600
1218 # VxWorks 7 was transitory and major versions prior to 7 were based
1219 # on long deprecated ABI, not supported at all any more regardless
1221 extra_options="${extra_options} arm/vxworks.opt"
1222 tmake_file="${tmake_file} arm/t-arm arm/t-vxworks arm/t-bpabi"
1223 tm_file="elfos.h arm/elf.h arm/bpabi.h arm/aout.h ${tm_file}"
1224 tm_file="${tm_file} vx-common.h vxworks.h arm/vxworks.h"
1225 target_cpu_cname="generic-armv7-a"
1226 need_64bit_hwint=yes
1228 arm*-*-freebsd*) # ARM FreeBSD EABI
1229 tm_file="dbxelf.h elfos.h ${fbsd_tm_file} arm/elf.h"
1232 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1235 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi"
1236 tm_file="${tm_file} arm/bpabi.h arm/freebsd.h arm/aout.h arm/arm.h"
1239 target_cpu_cname="arm1176jzf-s"
1240 if test $fbsd_major -ge 11; then
1241 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1245 target_cpu_cname="generic-armv7-a"
1246 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1249 target_cpu_cname="arm9"
1252 with_tls=${with_tls:-gnu}
1255 target_cpu_cname="strongarm"
1256 tmake_file="${tmake_file} arm/t-arm"
1257 tm_file="dbxelf.h elfos.h ${nbsd_tm_file} arm/elf.h"
1258 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1260 arm*eb-*) tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" ;;
1263 arm*-*-netbsdelf-*eabi*)
1264 tm_file="$tm_file arm/bpabi.h arm/netbsd-elf.h arm/netbsd-eabi.h"
1265 tmake_file="$tmake_file arm/t-bpabi arm/t-netbsdeabi"
1268 tm_file="$tm_file arm/netbsd-elf.h"
1269 tmake_file="$tmake_file arm/t-netbsd"
1272 tm_file="${tm_file} arm/aout.h arm/arm.h"
1274 arm*-*-netbsdelf-*eabihf*)
1275 # Hard-float requires at least Arm v5te
1276 target_cpu_cname="arm10e"
1277 tm_defines="${tm_defines} TARGET_DEFAULT_FLOAT_ABI=ARM_FLOAT_ABI_HARD"
1281 armv6*) target_cpu_cname="arm1176jzf-s";;
1282 armv7*) target_cpu_cname="generic-armv7-a";;
1285 arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)
1286 tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
1287 extra_options="${extra_options} linux-android.opt"
1290 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1293 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
1294 tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h arm/aout.h arm/arm.h"
1296 arm*-*-uclinuxfdpiceabi)
1297 tm_file="$tm_file arm/uclinuxfdpiceabi.h"
1300 # Generation of floating-point instructions requires at least ARMv5te.
1301 if [ "$with_float" = "hard" -o "$with_float" = "softfp" ] ; then
1302 target_cpu_cname="arm10e"
1304 target_cpu_cname="arm10tdmi"
1306 # Define multilib configuration for arm-linux-androideabi.
1309 tmake_file="$tmake_file arm/t-linux-androideabi"
1312 # The EABI requires the use of __cxa_atexit.
1313 default_use_cxa_atexit=yes
1314 with_tls=${with_tls:-gnu}
1316 arm*-*-uclinux*eabi*) # ARM ucLinux
1317 tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
1318 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi"
1319 tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h arm/aout.h arm/arm.h"
1320 target_cpu_cname="arm7tdmi"
1321 # The EABI requires the use of __cxa_atexit.
1322 default_use_cxa_atexit=yes
1325 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1326 tm_file="${tm_file} newlib-stdint.h phoenix.h"
1327 tm_file="${tm_file} arm/aout.h arm/arm.h"
1328 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi arm/t-phoenix"
1329 target_cpu_cname="arm7tdmi"
1331 arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
1334 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1336 default_use_cxa_atexit=yes
1337 tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1338 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf"
1339 target_cpu_cname="arm7tdmi"
1342 tm_file="$tm_file newlib-stdint.h"
1343 tmake_file="${tmake_file} arm/t-bpabi"
1347 tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h"
1348 tmake_file="${tmake_file} arm/t-bpabi arm/t-fuchsia"
1349 target_cpu_cname="generic-armv7-a"
1352 tm_file="${tm_file} arm/rtems.h rtems.h newlib-stdint.h"
1353 tmake_file="${tmake_file} arm/t-bpabi arm/t-rtems"
1356 tm_file="${tm_file} arm/symbian.h"
1357 # We do not include t-bpabi for Symbian OS because the system
1358 # provides its own implementation of the BPABI functions.
1359 tmake_file="${tmake_file} arm/t-symbian"
1360 target_cpu_cname="arm10tdmi"
1363 tm_file="${tm_file} arm/aout.h arm/arm.h"
1366 tm_file="elfos.h avr/elf.h avr/avr-arch.h avr/avr.h avr/specs.h dbxelf.h avr/avr-stdint.h"
1367 if test x${with_avrlibc} != xno; then
1368 tm_file="${tm_file} ${cpu_type}/avrlibc.h"
1369 tm_defines="${tm_defines} WITH_AVRLIBC"
1371 # Work out avr_double_comparison which is 2 or 3 and is used in
1372 # target hook FLOAT_LIB_COMPARE_RETURNS_BOOL to determine whether
1373 # DFmode comparisons return 3-state or 2-state results.
1374 case y${with_double_comparison} in
1376 avr_double_comparison=3
1379 avr_double_comparison=2
1382 echo "Error: --with-double-comparison= can only be used with: 'tristate', 'bool', 'libf7'" 1>&2
1386 case "y${with_libf7}" in
1388 # avr_double_comparison as set above.
1391 avr_double_comparison=2
1392 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1394 y | yyes | ymath-symbols)
1395 avr_double_comparison=2
1396 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1397 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1398 tm_defines="${tm_defines} WITH_LIBF7_MATH_SYMBOLS"
1401 avr_double_comparison=2
1402 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1403 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1406 echo "Error: --with-libf7=${with_libf7} but can only be used with: 'libgcc', 'math', 'math-symbols', 'yes', 'no'" 1>&2
1410 tm_defines="${tm_defines} WITH_DOUBLE_COMPARISON=${avr_double_comparison}"
1411 case y${with_double} in
1414 tm_defines="${tm_defines} HAVE_DOUBLE32"
1418 tm_defines="${tm_defines} HAVE_DOUBLE64"
1422 avr_double_multilib=1
1423 tm_defines="${tm_defines} HAVE_DOUBLE32"
1424 tm_defines="${tm_defines} HAVE_DOUBLE64"
1425 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1429 avr_double_multilib=1
1430 tm_defines="${tm_defines} HAVE_DOUBLE32"
1431 tm_defines="${tm_defines} HAVE_DOUBLE64"
1432 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1435 echo "Error: --with-double= can only be used with: '32', '32,64', '64,32', '64'" 1>&2
1439 case y${with_long_double} in
1442 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1446 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1450 avr_long_double_multilib=1
1451 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1452 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1453 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1457 avr_long_double_multilib=1
1458 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1459 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1460 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1463 avr_long_double=${avr_double}
1464 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_IS_DOUBLE"
1465 if test y${avr_double_multilib} = y1; then
1466 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1467 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1469 tm_defines="${tm_defines} HAVE_LONG_DOUBLE${avr_long_double}"
1473 echo "Error: --with-long_double= can only be used with: '32', '32,64', '64,32', '64', 'double'" 1>&2
1477 if test ${avr_long_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 32xy1z; then
1478 if test y${with_long_double} != ydouble; then
1479 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
1483 if test ${avr_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 64x1yz; then
1484 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
1487 if test y${avr_double}${avr_long_double} = y6432; then
1488 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
1491 tm_defines="${tm_defines} WITH_DOUBLE${avr_double}"
1492 tm_defines="${tm_defines} WITH_LONG_DOUBLE${avr_long_double}"
1493 tmake_file="${tmake_file} avr/t-avr avr/t-multilib"
1495 extra_gcc_objs="driver-avr.o avr-devices.o"
1496 extra_objs="avr-devices.o avr-log.o"
1499 tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h bfin/elf.h"
1500 tmake_file=bfin/t-bfin-elf
1504 tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/uclinux.h"
1505 tmake_file=bfin/t-bfin-uclinux
1508 bfin*-linux-uclibc*)
1509 tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/linux.h ./linux-sysroot-suffix.h"
1510 tmake_file="${tmake_file} bfin/t-bfin-linux"
1514 tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h bfin/rtems.h rtems.h newlib-stdint.h"
1515 tmake_file="${tmake_file} bfin/t-rtems"
1518 tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h bfin/elf.h"
1523 tm_file="elfos.h ${tm_file}"
1524 tmake_file="${tmake_file} bpf/t-bpf"
1526 extra_headers="bpf-helpers.h"
1527 use_gcc_stdint=provide
1530 tm_file="elfos.h ${tm_file} newlib-stdint.h"
1531 tmake_file="${tmake_file} cr16/t-cr16 "
1534 cris-*-elf | cris-*-none)
1535 tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
1536 tmake_file="cris/t-cris cris/t-elfmulti"
1538 extra_options="${extra_options} cris/elf.opt"
1542 if test x${with_endian} != x; then
1543 case ${with_endian} in
1546 echo "with_endian=${with_endian} not supported."
1551 if test x${with_float} != x; then
1552 case ${with_float} in
1555 "Unknown floating point type used in --with-float=$with_float"
1560 tm_file="csky/csky.h"
1561 md_file="csky/csky.md"
1562 out_file="csky/csky.c"
1563 tm_p_file="${tm_p_file} csky/csky-protos.h"
1564 extra_options="${extra_options} csky/csky_tables.opt"
1566 if test x${enable_tpf_debug} = xyes; then
1567 tm_defines="${tm_defines} ENABLE_TPF_DEBUG"
1572 tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file} csky/csky-elf.h"
1573 tmake_file="csky/t-csky csky/t-csky-elf"
1574 default_use_cxa_atexit=no
1578 tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} csky/csky-linux-elf.h"
1579 tmake_file="${tmake_file} csky/t-csky csky/t-csky-linux"
1583 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
1584 # Force .init_array support. The configure script cannot always
1585 # automatically detect that GAS supports it, yet we require it.
1586 gcc_cv_initfini_array=yes
1588 csky-*-linux-uclibc*)
1589 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
1590 default_use_cxa_atexit=no
1593 echo "Unknown target $target"
1599 echo "Unknown target $target"
1604 epiphany-*-elf | epiphany-*-rtems*)
1605 tm_file="${tm_file} dbxelf.h elfos.h"
1606 tmake_file="${tmake_file} epiphany/t-epiphany"
1609 tm_file="${tm_file} epiphany/rtems.h rtems.h newlib-stdint.h"
1612 tm_file="${tm_file} newlib-stdint.h"
1615 extra_options="${extra_options} fused-madd.opt"
1616 extra_objs="${extra_objs} mode-switch-use.o resolve-sw-modes.o"
1617 tm_defines="${tm_defines} EPIPHANY_STACK_OFFSET=${with_stack_offset:-8}"
1618 extra_headers="epiphany_intrinsics.h"
1621 tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
1624 tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
1625 tmake_file=frv/t-frv
1628 tm_file="dbxelf.h elfos.h ${tm_file} \
1629 gnu-user.h linux.h glibc-stdint.h frv/linux.h"
1630 tmake_file="${tmake_file} frv/t-frv frv/t-linux"
1635 tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
1636 tmake_file="${tmake_file} ft32/t-ft32"
1639 tm_file="elfos.h gcn/gcn-hsa.h gcn/gcn.h newlib-stdint.h"
1640 tmake_file="gcn/t-gcn-hsa"
1641 native_system_header_dir=/include
1642 extra_modes=gcn/gcn-modes.def
1643 extra_objs="${extra_objs} gcn-tree.o"
1644 extra_gcc_objs="driver-gcn.o"
1646 x86_64*-*-linux-gnu )
1647 if test "$ac_cv_search_dlopen" != no; then
1648 extra_programs="${extra_programs} gcn-run\$(exeext)"
1652 if test x$enable_as_accelerator = xyes; then
1653 extra_programs="${extra_programs} mkoffload\$(exeext)"
1654 tm_file="${tm_file} gcn/offload.h"
1656 # Force .init_array support.
1657 gcc_cv_initfini_array=yes
1663 tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
1664 tmake_file="${tmake_file} moxie/t-moxie"
1669 tm_file="dbxelf.h elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h moxie/uclinux.h"
1670 tmake_file="${tmake_file} moxie/t-moxie"
1673 tmake_file="${tmake_file} moxie/t-moxie"
1674 tm_file="moxie/moxie.h dbxelf.h elfos.h moxie/rtems.h rtems.h newlib-stdint.h"
1679 tm_file="${tm_file} dbxelf.h elfos.h moxie/moxiebox.h newlib-stdint.h"
1680 tmake_file="${tmake_file} moxie/t-moxiebox"
1683 tmake_file="h8300/t-h8300"
1684 tm_file="h8300/h8300.h elfos.h newlib-stdint.h h8300/elf.h"
1687 tmake_file="${tmake_file} h8300/t-h8300 h8300/t-linux"
1688 tm_file="h8300/h8300.h elfos.h gnu-user.h linux.h glibc-stdint.h h8300/linux.h"
1691 target_cpu_default="MASK_PA_11|MASK_PA_20"
1692 tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h gnu-user.h linux.h \
1693 glibc-stdint.h pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h \
1695 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1696 d_target_objs="${d_target_objs} pa-d.o"
1700 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS|MASK_CALLER_COPIES"
1701 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h pa/pa-linux.h \
1702 pa/pa32-regs.h pa/pa32-linux.h"
1703 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1704 d_target_objs="${d_target_objs} pa-d.o"
1707 target_cpu_default="MASK_PA_11"
1708 tm_file="${tm_file} dbxelf.h elfos.h openbsd.h openbsd-stdint.h openbsd-libpthread.h \
1709 pa/pa-openbsd.h pa/pa32-regs.h pa/pa32-openbsd.h"
1710 extra_options="${extra_options} openbsd.opt"
1711 tmake_file="pa/t-pa"
1712 d_target_objs="${d_target_objs} pa-d.o"
1717 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS"
1718 tm_file="${tm_file} dbxelf.h elfos.h ${nbsd_tm_file} \
1719 pa/pa-netbsd.h pa/pa32-regs.h pa/pa32-netbsd.h"
1720 tmake_file="${tmake_file}"
1721 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
1722 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1724 hppa[12]*-*-hpux10*)
1726 hppa1.1-*-* | hppa2*-*-*)
1727 target_cpu_default="MASK_PA_11"
1730 tm_file="${tm_file} pa/pa32-regs.h dbxelf.h pa/som.h \
1731 pa/pa-hpux.h pa/pa-hpux10.h"
1732 extra_options="${extra_options} pa/pa-hpux.opt pa/pa-hpux10.opt"
1735 tm_file="${tm_file} pa/pa-hpux1010.h"
1736 extra_options="${extra_options} pa/pa-hpux1010.opt"
1739 use_gcc_stdint=provide
1740 tm_file="${tm_file} hpux-stdint.h"
1741 tmake_file="pa/t-pa t-slibgcc"
1742 d_target_objs="${d_target_objs} pa-d.o"
1743 case ${enable_threads} in
1745 if test x$have_pthread_h = xyes ; then
1746 tmake_file="${tmake_file} pa/t-dce-thr"
1750 tmake_file="${tmake_file} pa/t-dce-thr"
1755 if test "x$with_dwarf2" != x; then
1756 echo "Warning: dwarf2 debug format is not supported for this target, --with-dwarf2 ignored" 1>&2
1761 target_cpu_default="MASK_PA_11|MASK_PA_20"
1762 if test x$gnu_ld = xyes
1764 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
1766 tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h \
1767 pa/pa64-regs.h pa/pa-hpux.h pa/pa-hpux1010.h \
1771 tm_file="${tm_file} pa/pa-hpux1111.h pa/pa-64.h pa/pa64-hpux.h"
1772 extra_options="${extra_options} pa/pa-hpux1111.opt"
1775 tm_file="${tm_file} pa/pa-hpux1131.h pa/pa-64.h pa/pa64-hpux.h"
1776 extra_options="${extra_options} pa/pa-hpux1131.opt"
1779 tm_file="${tm_file} pa/pa-64.h pa/pa64-hpux.h"
1782 extra_options="${extra_options} pa/pa-hpux.opt \
1783 pa/pa-hpux1010.opt pa/pa64-hpux.opt hpux11.opt"
1784 tmake_file="pa/t-pa t-slibgcc"
1785 d_target_objs="${d_target_objs} pa-d.o"
1786 case x${enable_threads} in
1794 use_gcc_stdint=provide
1795 tm_file="${tm_file} hpux-stdint.h"
1799 tm_file="${tm_file} hpux-stdint.h"
1803 hppa[12]*-*-hpux11*)
1805 hppa1.1-*-* | hppa2*-*-*)
1806 target_cpu_default="MASK_PA_11"
1809 tm_file="${tm_file} pa/pa32-regs.h dbxelf.h pa/som.h \
1810 pa/pa-hpux.h pa/pa-hpux1010.h pa/pa-hpux11.h"
1811 extra_options="${extra_options} pa/pa-hpux.opt pa/pa-hpux1010.opt \
1815 tm_file="${tm_file} pa/pa-hpux1111.h"
1816 extra_options="${extra_options} pa/pa-hpux1111.opt"
1819 tm_file="${tm_file} pa/pa-hpux1131.h"
1820 extra_options="${extra_options} pa/pa-hpux1131.opt"
1823 tmake_file="pa/t-pa t-slibgcc"
1824 d_target_objs="${d_target_objs} pa-d.o"
1825 case x${enable_threads} in
1834 use_gcc_stdint=provide
1835 tm_file="${tm_file} hpux-stdint.h"
1839 tm_file="${tm_file} hpux-stdint.h"
1842 if test "x$with_dwarf2" != x; then
1843 echo "Warning: dwarf2 debug format is not supported for this target, --with-dwarf2 ignored" 1>&2
1847 i[34567]86-*-darwin1[89]* | i[34567]86-*-darwin2[0-9]*)
1848 echo "Error: 32bit target is not supported after Darwin17" 1>&2
1850 i[34567]86-*-darwin*)
1852 # Baseline choice for a machine that allows m64 support.
1853 with_cpu=${with_cpu:-core2}
1854 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch t-slibgcc"
1855 tm_file="${cpu_type}/darwin32-biarch.h ${tm_file} "
1857 x86_64-*-darwin1[89]* | x86_64-*-darwin2[01]*)
1859 tm_defines="${tm_defines} TARGET_64BIT_DEFAULT=(OPTION_MASK_ISA_64BIT|OPTION_MASK_ABI_64)"
1860 tm_defines="${tm_defines} TARGET_BI_ARCH=0"
1861 with_cpu=${with_cpu:-core2}
1862 tmake_file="${tmake_file} t-slibgcc"
1865 with_cpu=${with_cpu:-core2}
1866 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
1867 tm_file="${cpu_type}/darwin64-biarch.h ${tm_file} "
1869 i[34567]86-*-elfiamcu)
1870 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/iamcu.h"
1873 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h"
1876 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h"
1879 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h i386/rtemself.h rtems.h"
1882 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/rdos.h"
1885 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h i386/rdos.h i386/rdos64.h"
1886 tmake_file="i386/t-i386elf t-svr4"
1888 i[34567]86-*-dragonfly*)
1889 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h dragonfly.h dragonfly-stdint.h i386/dragonfly.h"
1890 tmake_file="${tmake_file} i386/t-crtstuff"
1892 x86_64-*-dragonfly*)
1893 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h dragonfly.h dragonfly-stdint.h i386/x86-64.h i386/dragonfly.h"
1894 tmake_file="${tmake_file} i386/t-crtstuff"
1896 i[34567]86-*-freebsd*)
1897 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
1900 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h"
1902 i[34567]86-*-netbsdelf*)
1903 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${nbsd_tm_file} i386/netbsd-elf.h"
1904 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1907 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${nbsd_tm_file} i386/x86-64.h i386/netbsd64.h"
1908 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1910 i[34567]86-*-openbsd*)
1911 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h"
1912 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/openbsdelf.h"
1913 extra_options="${extra_options} openbsd.opt"
1918 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h"
1919 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/x86-64.h i386/openbsdelf.h"
1920 extra_options="${extra_options} openbsd.opt"
1924 i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu)
1925 # Intel 80386's running GNU/*
1926 # with ELF format using glibc 2
1927 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h gnu-user.h glibc-stdint.h"
1929 i[34567]86-*-linux*)
1930 tm_file="${tm_file} linux.h linux-android.h"
1931 extra_options="${extra_options} linux-android.opt"
1932 if test x$enable_targets = xall; then
1933 tm_file="${tm_file} i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h i386/linux-common.h i386/linux64.h"
1934 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
1935 tmake_file="${tmake_file} i386/t-linux64"
1936 x86_multilibs="${with_multilib_list}"
1937 if test "$x86_multilibs" = "default"; then
1938 x86_multilibs="m64,m32"
1940 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
1941 for x86_multilib in ${x86_multilibs}; do
1942 case ${x86_multilib} in
1944 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
1947 echo "--with-multilib-list=${x86_with_multilib} not supported."
1951 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1953 if test x$with_cpu = x; then
1954 if test x$with_cpu_64 = x; then
1958 case " $x86_cpus $x86_archs $x86_64_archs " in
1962 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
1963 echo "$x86_cpus $x86_archs $x86_64_archs " 1>&2
1969 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h i386/linux-common.h i386/linux.h"
1972 i[34567]86-*-kfreebsd*-gnu)
1973 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kfreebsd-gnu.h i386/kfreebsd-gnu.h"
1975 i[34567]86-*-kopensolaris*-gnu)
1976 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kopensolaris-gnu.h i386/kopensolaris-gnu.h"
1979 tm_file="$tm_file i386/gnu-user-common.h i386/gnu-user.h gnu.h i386/gnu.h"
1983 x86_64-*-linux* | x86_64-*-kfreebsd*-gnu)
1984 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h gnu-user.h glibc-stdint.h \
1985 i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h"
1988 tm_file="${tm_file} linux.h linux-android.h i386/linux-common.h i386/linux64.h"
1989 extra_options="${extra_options} linux-android.opt"
1991 x86_64-*-kfreebsd*-gnu)
1992 tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu64.h"
1995 tmake_file="${tmake_file} i386/t-linux64"
1996 x86_multilibs="${with_multilib_list}"
1997 if test "$x86_multilibs" = "default"; then
2000 x86_multilibs="mx32"
2003 x86_multilibs="m64,m32"
2007 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
2008 for x86_multilib in ${x86_multilibs}; do
2009 case ${x86_multilib} in
2011 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
2014 echo "--with-multilib-list=${x86_with_multilib} not supported."
2018 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2020 i[34567]86-pc-msdosdjgpp*)
2021 xm_file=i386/xm-djgpp.h
2022 tm_file="dbxcoff.h ${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/djgpp.h i386/djgpp-stdint.h"
2023 native_system_header_dir=/dev/env/DJDIR/include
2024 extra_options="${extra_options} i386/djgpp.opt"
2029 i[34567]86-*-lynxos*)
2031 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/lynx.h lynx.h"
2032 tmake_file="${tmake_file} t-lynx"
2033 extra_options="${extra_options} lynx.opt"
2038 i[34567]86-*-nto-qnx*)
2039 tm_file="${tm_file} i386/att.h dbxelf.h tm-dwarf2.h elfos.h i386/unix.h i386/nto.h"
2040 extra_options="${extra_options} i386/nto.opt"
2044 i[34567]86-*-rtems*)
2045 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/i386elf.h i386/rtemself.h rtems.h newlib-stdint.h"
2046 tmake_file="${tmake_file} i386/t-rtems"
2048 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
2049 # Set default arch_32 to pentium4, tune_32 to generic like the other
2050 # i386 targets, although config.guess defaults to i386-pc-solaris2*.
2051 with_arch_32=${with_arch_32:-pentium4}
2052 with_tune_32=${with_tune_32:-generic}
2053 tm_file="${tm_file} i386/unix.h i386/att.h ${sol2_tm_file_head} i386/x86-64.h ${sol2_tm_file_tail}"
2054 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2055 tmake_file="$tmake_file i386/t-sol2"
2057 if test x$with_cpu = x; then
2058 if test x$with_cpu_64 = x; then
2062 case " $x86_cpus $x86_archs $x86_64_archs " in
2066 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2067 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2073 i[4567]86-wrs-vxworks*|x86_64-wrs-vxworks7*)
2074 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
2078 tm_file="${tm_file} i386/x86-64.h"
2081 tm_file="${tm_file} vx-common.h"
2084 tm_file="${tm_file} vxworksae.h i386/vxworks.h i386/vxworksae.h"
2085 tmake_file="${tmake_file} i386/t-vxworks i386/t-vxworksae"
2088 tm_file="${tm_file} vxworks.h i386/vxworks.h"
2089 tmake_file="${tmake_file} i386/t-vxworks"
2093 i[34567]86-*-cygwin*)
2094 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/cygming.h i386/cygwin.h i386/cygwin-stdint.h"
2095 xm_file=i386/xm-cygwin.h
2096 tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
2097 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.c"
2098 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
2099 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2100 c_target_objs="${c_target_objs} msformat-c.o"
2101 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2102 d_target_objs="${d_target_objs} winnt-d.o"
2103 target_has_targetdm="yes"
2104 if test x$enable_threads = xyes; then
2107 default_use_cxa_atexit=yes
2112 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/cygming.h i386/cygwin.h i386/cygwin-w64.h i386/cygwin-stdint.h"
2113 xm_file=i386/xm-cygwin.h
2114 tmake_file="${tmake_file} i386/t-cygming t-slibgcc i386/t-cygwin-w64"
2115 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.c"
2116 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
2117 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2118 c_target_objs="${c_target_objs} msformat-c.o"
2119 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2120 d_target_objs="${d_target_objs} winnt-d.o"
2121 target_has_targetdm="yes"
2122 if test x$enable_threads = xyes; then
2125 default_use_cxa_atexit=yes
2127 tm_defines="${tm_defines} TARGET_CYGWIN64=1"
2129 i[34567]86-*-mingw* | x86_64-*-mingw*)
2130 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/cygming.h"
2131 xm_file=i386/xm-mingw32.h
2132 c_target_objs="${c_target_objs} winnt-c.o"
2133 cxx_target_objs="${cxx_target_objs} winnt-c.o"
2134 d_target_objs="${d_target_objs} winnt-d.o"
2135 target_has_targetcm="yes"
2136 target_has_targetdm="yes"
2138 x86_64-*-* | *-w64-*)
2144 if test x$enable_threads = xposix ; then
2145 tm_file="${tm_file} i386/mingw-pthread.h"
2147 tm_file="${tm_file} i386/mingw32.h"
2148 # This makes the logic if mingw's or the w64 feature set has to be used
2151 user_headers_inc_next_post="${user_headers_inc_next_post} float.h"
2152 user_headers_inc_next_pre="${user_headers_inc_next_pre} stddef.h stdarg.h"
2153 tm_file="${tm_file} i386/mingw-w64.h"
2154 if test x$enable_targets = xall; then
2155 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2156 if test x$with_cpu = x; then
2157 if test x$with_cpu_64 = x; then
2161 case " $x86_cpus $x86_archs $x86_64_archs " in
2165 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2166 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2176 tm_file="${tm_file} i386/mingw-stdint.h"
2177 tmake_file="${tmake_file} t-winnt i386/t-cygming t-slibgcc"
2180 tmake_file="${tmake_file} i386/t-mingw-w64"
2183 tmake_file="${tmake_file} i386/t-mingw-w32"
2186 native_system_header_dir=/mingw/include
2187 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.c"
2188 extra_options="${extra_options} i386/cygming.opt i386/mingw.opt"
2191 extra_options="${extra_options} i386/mingw-w64.opt"
2196 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2197 c_target_objs="${c_target_objs} msformat-c.o"
2198 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2201 default_use_cxa_atexit=yes
2203 case ${enable_threads} in
2213 tm_file="${tm_file} i386/crtdll.h"
2215 *mingw32msv* | *mingw*)
2220 tmake_file="${tmake_file} i386/t-x86_64-elf"
2221 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h fuchsia.h"
2224 tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h ia64/sysv4.h ia64/elf.h"
2225 tmake_file="ia64/t-ia64"
2226 target_cpu_default="0"
2227 if test x$gas = xyes
2229 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2231 if test x$gnu_ld = xyes
2233 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
2237 tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file} ia64/sysv4.h ia64/freebsd.h"
2238 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2239 tmake_file="${tmake_file} ia64/t-ia64"
2242 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ia64/sysv4.h ia64/linux.h"
2243 tmake_file="${tmake_file} ia64/t-ia64 ia64/t-linux t-libunwind"
2244 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2247 tm_file="${tm_file} dbxelf.h elfos.h ia64/sysv4.h ia64/hpux.h"
2248 tmake_file="ia64/t-ia64 ia64/t-hpux t-slibgcc"
2249 target_cpu_default="MASK_GNU_AS"
2250 case x$enable_threads in
2256 c_target_objs="ia64-c.o"
2257 cxx_target_objs="ia64-c.o"
2258 extra_options="${extra_options} ia64/ilp32.opt hpux11.opt"
2260 tm_file="${tm_file} hpux-stdint.h"
2263 tm_file="${tm_file} ia64/hpux-unix2003.h"
2268 tm_file="${tm_file} elfos.h ia64/sysv4.h vms/vms.h ia64/vms.h"
2269 tmake_file="${tmake_file} ia64/t-ia64"
2270 target_cpu_default="0"
2271 if test x$gas = xyes
2273 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2275 extra_options="${extra_options} ia64/vms.opt"
2278 tm_file="elfos.h newlib-stdint.h iq2000/iq2000.h"
2279 out_file=iq2000/iq2000.c
2280 md_file=iq2000/iq2000.md
2283 tm_file="dbxelf.h elfos.h ${tm_file} newlib-stdint.h"
2284 tmake_file="${tmake_file} lm32/t-lm32"
2287 tm_file="dbxelf.h elfos.h ${tm_file} lm32/rtems.h rtems.h newlib-stdint.h"
2288 tmake_file="${tmake_file} lm32/t-lm32"
2289 tmake_file="${tmake_file} lm32/t-rtems"
2292 tm_file="dbxelf.h elfos.h ${tm_file} gnu-user.h linux.h lm32/uclinux-elf.h"
2293 tmake_file="${tmake_file} lm32/t-lm32"
2296 tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
2299 tm_file="dbxelf.h elfos.h newlib-stdint.h m32r/little.h ${tm_file}"
2302 tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} m32r/linux.h"
2303 tmake_file="${tmake_file} m32r/t-linux t-slibgcc"
2305 if test x$enable_threads = xyes; then
2310 tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h m32r/little.h ${tm_file} m32r/linux.h"
2311 tmake_file="${tmake_file} m32r/t-linux t-slibgcc"
2313 if test x$enable_threads = xyes; then
2317 m68k-*-elf* | fido-*-elf*)
2320 # Check that $with_cpu makes sense.
2325 echo "Cannot accept --with-cpu=$with_cpu"
2332 default_m68k_cpu=68020
2336 tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h newlib-stdint.h m68k/m68kemb.h m68k/m68020-elf.h"
2337 tm_defines="${tm_defines} MOTOROLA=1"
2338 tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-m68kelf"
2339 # Add multilibs for targets other than fido.
2344 tmake_file="$tmake_file m68k/t-mlibs"
2349 default_m68k_cpu=68020
2351 tm_file="${tm_file} dbxelf.h elfos.h ${nbsd_tm_file} m68k/netbsd-elf.h"
2352 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2353 tm_defines="${tm_defines} MOTOROLA=1 CHAR_FAST8=1 SHORT_FAST16=1"
2356 default_m68k_cpu=68020
2358 # needed to unconfuse gdb
2359 tm_defines="${tm_defines} OBSD_OLD_GAS"
2360 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h m68k/openbsd.h"
2361 extra_options="${extra_options} openbsd.opt"
2362 tmake_file="t-openbsd m68k/t-openbsd"
2363 # we need collect2 until our bug is fixed...
2366 m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux
2367 # with uClibc, using the new GNU/Linux-style
2369 default_m68k_cpu=68020
2371 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h flat.h m68k/linux.h m68k/uclinux.h ./sysroot-suffix.h"
2372 extra_options="${extra_options} m68k/uclinux.opt"
2373 tm_defines="${tm_defines} MOTOROLA=1"
2374 tmake_file="m68k/t-floatlib m68k/t-uclinux m68k/t-mlibs"
2376 m68k-*-linux*) # Motorola m68k's running GNU/Linux
2377 # with ELF format using glibc 2
2378 # aka the GNU/Linux C library 6.
2379 default_m68k_cpu=68020
2381 with_arch=${with_arch:-m68k}
2382 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h m68k/linux.h ./sysroot-suffix.h"
2383 extra_options="${extra_options} m68k/ieee.opt"
2384 tm_defines="${tm_defines} MOTOROLA=1"
2385 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-linux m68k/t-mlibs"
2388 default_m68k_cpu=68020
2390 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-m68kbare m68k/t-crtstuff m68k/t-rtems m68k/t-mlibs"
2391 tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h m68k/m68kemb.h m68k/m68020-elf.h m68k/rtemself.h rtems.h newlib-stdint.h"
2392 tm_defines="${tm_defines} MOTOROLA=1"
2395 tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file} mcore/mcore-elf.h"
2396 tmake_file=mcore/t-mcore
2402 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2405 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2408 tm_file="${tm_file} dbxelf.h gnu-user.h linux.h microblaze/linux.h"
2409 tm_file="${tm_file} glibc-stdint.h"
2410 c_target_objs="${c_target_objs} microblaze-c.o"
2411 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2412 tmake_file="${tmake_file} microblaze/t-microblaze"
2413 tmake_file="${tmake_file} microblaze/t-microblaze-linux"
2415 microblaze*-*-rtems*)
2418 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2421 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2424 tm_file="${tm_file} dbxelf.h"
2425 tm_file="${tm_file} microblaze/rtems.h rtems.h newlib-stdint.h"
2426 c_target_objs="${c_target_objs} microblaze-c.o"
2427 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2428 tmake_file="${tmake_file} microblaze/t-microblaze"
2429 tmake_file="${tmake_file} microblaze/t-rtems"
2434 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2437 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2440 tm_file="${tm_file} dbxelf.h newlib-stdint.h"
2441 c_target_objs="${c_target_objs} microblaze-c.o"
2442 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2443 tmake_file="${tmake_file} microblaze/t-microblaze"
2446 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} riscv/linux.h"
2447 case "x${enable_multilib}" in
2449 xyes) tmake_file="${tmake_file} riscv/t-linux-multilib" ;;
2450 *) echo "Unknown value for enable_multilib"; exit 1
2452 tmake_file="${tmake_file} riscv/t-riscv riscv/t-linux"
2456 riscv32be-*|riscv64be-*)
2457 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2460 # Force .init_array support. The configure script cannot always
2461 # automatically detect that GAS supports it, yet we require it.
2462 gcc_cv_initfini_array=yes
2464 riscv*-*-elf* | riscv*-*-rtems*)
2465 tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h"
2468 tm_file="${tm_file} riscv/rtems.h rtems.h"
2469 tmake_file="${tmake_file} riscv/t-rtems"
2472 if test "x${with_multilib_generator}" == xdefault; then
2473 case "x${enable_multilib}" in
2475 xyes) tmake_file="${tmake_file} riscv/t-elf-multilib" ;;
2476 *) echo "Unknown value for enable_multilib"; exit 1
2480 tmake_file="${tmake_file} riscv/t-riscv"
2484 riscv32be-*|riscv64be-*)
2485 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2488 # Force .init_array support. The configure script cannot always
2489 # automatically detect that GAS supports it, yet we require it.
2490 gcc_cv_initfini_array=yes
2493 tm_file="${tm_file} elfos.h ${fbsd_tm_file} riscv/freebsd.h"
2494 tmake_file="${tmake_file} riscv/t-riscv"
2498 riscv32be-*|riscv64be-*)
2499 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2502 # Force .init_array support. The configure script cannot always
2503 # automatically detect that GAS supports it, yet we require it.
2504 gcc_cv_initfini_array=yes
2506 mips*-*-netbsd*) # NetBSD/mips, either endian.
2507 target_cpu_default="MASK_ABICALLS"
2508 tm_file="elfos.h ${tm_file} mips/elf.h ${nbsd_tm_file} mips/netbsd.h"
2509 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2512 tm_file="dbxelf.h 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"
2513 extra_options="${extra_options} linux-android.opt"
2514 tmake_file="${tmake_file} mips/t-img-linux"
2515 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=37 MIPS_ABI_DEFAULT=ABI_32"
2516 with_arch_32="mips32r6"
2517 with_arch_64="mips64r6"
2522 tm_file="dbxelf.h 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"
2523 extra_options="${extra_options} linux-android.opt"
2524 tmake_file="${tmake_file} mips/t-mti-linux"
2525 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33 MIPS_ABI_DEFAULT=ABI_32"
2526 with_arch_32="mips32r2"
2527 with_arch_64="mips64r2"
2531 mips*-*-linux*) # Linux MIPS, either endian.
2532 tm_file="dbxelf.h 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"
2533 extra_options="${extra_options} linux-android.opt"
2536 default_mips_arch=mips32r6
2539 default_mips_arch=mips32r2
2542 default_mips_arch=mips32
2544 mips64el-st-linux-gnu)
2545 default_mips_abi=n32
2546 tm_file="${tm_file} mips/st.h"
2547 tmake_file="${tmake_file} mips/t-st"
2548 enable_mips_multilibs="yes"
2550 mips64octeon*-*-linux*)
2551 default_mips_abi=n32
2552 tm_defines="${tm_defines} MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\""
2553 target_cpu_default=MASK_SOFT_FLOAT_ABI
2554 enable_mips_multilibs="yes"
2556 mipsisa64r6*-*-linux*)
2557 default_mips_abi=n32
2558 default_mips_arch=mips64r6
2559 enable_mips_multilibs="yes"
2561 mipsisa64r2*-*-linux*)
2562 default_mips_abi=n32
2563 default_mips_arch=mips64r2
2564 enable_mips_multilibs="yes"
2566 mips64*-*-linux* | mipsisa64*-*-linux*)
2567 default_mips_abi=n32
2568 enable_mips_multilibs="yes"
2571 if test x$enable_targets = xall; then
2572 enable_mips_multilibs="yes"
2574 if test x$enable_mips_multilibs = xyes; then
2575 tmake_file="${tmake_file} mips/t-linux64"
2579 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2580 tmake_file="mips/t-mti-elf"
2581 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33 MIPS_ABI_DEFAULT=ABI_32"
2582 with_arch_32="mips32r2"
2583 with_arch_64="mips64r2"
2586 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2587 tmake_file="mips/t-img-elf"
2588 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=37 MIPS_ABI_DEFAULT=ABI_32"
2589 with_arch_32="mips32r6"
2590 with_arch_64="mips64r6"
2593 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h"
2594 tmake_file="mips/t-sde"
2595 extra_options="${extra_options} mips/sde.opt"
2596 case "${with_newlib}" in
2598 # newlib / libgloss.
2601 # MIPS toolkit libraries.
2602 tm_file="$tm_file mips/sdemtk.h"
2603 tmake_file="$tmake_file mips/t-sdemtk"
2604 case ${enable_threads} in
2606 thread_file='mipssde'
2613 tm_defines="MIPS_ISA_DEFAULT=37 MIPS_ABI_DEFAULT=ABI_32"
2616 tm_defines="MIPS_ISA_DEFAULT=33 MIPS_ABI_DEFAULT=ABI_32"
2619 tm_defines="MIPS_ISA_DEFAULT=32 MIPS_ABI_DEFAULT=ABI_32"
2622 tm_defines="MIPS_ISA_DEFAULT=69 MIPS_ABI_DEFAULT=ABI_N32"
2625 tm_defines="MIPS_ISA_DEFAULT=65 MIPS_ABI_DEFAULT=ABI_N32"
2628 tm_defines="MIPS_ISA_DEFAULT=64 MIPS_ABI_DEFAULT=ABI_N32"
2632 mipsisa32-*-elf* | mipsisa32el-*-elf* | \
2633 mipsisa32r2-*-elf* | mipsisa32r2el-*-elf* | \
2634 mipsisa32r6-*-elf* | mipsisa32r6el-*-elf* | \
2635 mipsisa64-*-elf* | mipsisa64el-*-elf* | \
2636 mipsisa64r2-*-elf* | mipsisa64r2el-*-elf* | \
2637 mipsisa64r6-*-elf* | mipsisa64r6el-*-elf*)
2638 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2639 tmake_file="mips/t-isa3264"
2642 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=37"
2645 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33"
2648 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=32"
2651 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=69"
2654 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=65"
2657 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=64"
2661 mipsisa32*-*-elfoabi*)
2662 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_32"
2663 tm_file="${tm_file} mips/elfoabi.h"
2665 mipsisa64*-*-elfoabi*)
2666 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_O64"
2667 tm_file="${tm_file} mips/elfoabi.h"
2670 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2674 mipsisa64sr71k-*-elf*)
2675 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2676 tmake_file=mips/t-sr71k
2677 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=64 MIPS_CPU_STRING_DEFAULT=\\\"sr71000\\\" MIPS_ABI_DEFAULT=ABI_EABI"
2679 mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*)
2680 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2681 tmake_file="mips/t-elf mips/t-sb1"
2682 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=64 MIPS_CPU_STRING_DEFAULT=\\\"sb1\\\" MIPS_ABI_DEFAULT=ABI_O64"
2684 mips-*-elf* | mipsel-*-elf* | mipsr5900-*-elf* | mipsr5900el-*-elf*)
2685 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2686 tmake_file="mips/t-elf"
2688 mips64r5900-*-elf* | mips64r5900el-*-elf*)
2689 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h"
2690 tmake_file="mips/t-elf"
2691 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_N32"
2693 mips64-*-elf* | mips64el-*-elf*)
2694 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2695 tmake_file="mips/t-elf"
2696 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64"
2698 mips64vr-*-elf* | mips64vrel-*-elf*)
2699 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/vr.h mips/elf.h"
2700 tmake_file=mips/t-vr
2701 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2703 mips64orion-*-elf* | mips64orionel-*-elf*)
2704 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elforion.h mips/elf.h"
2705 tmake_file="mips/t-elf"
2706 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64"
2709 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/rtems.h rtems.h"
2710 tmake_file="${tmake_file} mips/t-elf mips/t-rtems"
2713 tm_file="elfos.h ${tm_file} mips/elf.h vx-common.h vxworks.h mips/vxworks.h"
2714 tmake_file="${tmake_file} mips/t-vxworks"
2716 mipstx39-*-elf* | mipstx39el-*-elf*)
2717 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/r3900.h mips/elf.h"
2718 tmake_file="mips/t-r3900"
2720 mmix-knuth-mmixware)
2721 tm_file="${tm_file} newlib-stdint.h"
2725 tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
2726 if test x$stabs = xyes
2728 tm_file="${tm_file} dbx.h"
2734 tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
2735 c_target_objs="msp430-c.o"
2736 cxx_target_objs="msp430-c.o"
2737 tmake_file="${tmake_file} msp430/t-msp430"
2738 extra_objs="${extra_objs} msp430-devices.o"
2739 extra_gcc_objs="driver-msp430.o msp430-devices.o"
2740 # Enable .init_array unless it has been explicitly disabled.
2741 # The MSP430 EABI mandates the use of .init_array, and the Newlib CRT
2742 # code since mid-2019 expects it.
2743 if test x${disable_initfini_array} != xyes; then
2744 gcc_cv_initfini_array=yes
2748 # __cxa_atexit increases code size, and we don't need to support
2749 # dynamic shared objects on MSP430, so regular Newlib atexit is a
2750 # fine replacement as it also supports registration of more than 32
2752 default_use_cxa_atexit=no
2753 # This target does not match the generic *-*-elf case above which
2754 # sets use_gcc_stdint=wrap, so explicitly set it here.
2760 target_cpu_default="0"
2761 tm_defines="${tm_defines}"
2766 target_cpu_default="${target_cpu_default}|MASK_BIG_ENDIAN"
2767 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2772 tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file} nds32/elf.h nds32/nds32_intrinsic.h"
2773 tmake_file="nds32/t-nds32 nds32/t-elf"
2776 tm_file="dbxelf.h elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h nds32/linux.h nds32/nds32_intrinsic.h"
2777 tmake_file="${tmake_file} nds32/t-nds32 nds32/t-linux"
2778 gcc_cv_initfini_array=yes
2782 # Handle --enable-default-relax setting.
2783 if test x${enable_default_relax} = xyes; then
2784 tm_defines="${tm_defines} TARGET_DEFAULT_RELAX=1"
2786 # Handle --with-ext-dsp
2787 if test x${with_ext_dsp} = xyes; then
2788 tm_defines="${tm_defines} TARGET_DEFAULT_EXT_DSP=1"
2792 tm_file="elfos.h ${tm_file}"
2793 tmake_file="${tmake_file} nios2/t-nios2"
2796 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h nios2/linux.h "
2799 tm_file="${tm_file} newlib-stdint.h nios2/elf.h"
2800 extra_options="${extra_options} nios2/elf.opt"
2803 tm_file="${tm_file} newlib-stdint.h nios2/rtems.h rtems.h"
2804 tmake_file="${tmake_file} t-rtems nios2/t-rtems"
2809 tm_file="${tm_file} newlib-stdint.h"
2811 tmake_file="nvptx/t-nvptx"
2812 if test x$enable_as_accelerator = xyes; then
2813 extra_programs="${extra_programs} mkoffload\$(exeext)"
2814 tm_file="${tm_file} nvptx/offload.h"
2818 tm_file="elfos.h ${tm_file}"
2819 tmake_file="${tmake_file} or1k/t-or1k"
2820 # Force .init_array support. The configure script cannot always
2821 # automatically detect that GAS supports it, yet we require it.
2822 gcc_cv_initfini_array=yes
2824 # Handle --with-multilib-list=...
2825 or1k_multilibs="${with_multilib_list}"
2826 if test "$or1k_multilibs" = "default"; then
2827 or1k_multilibs="mcmov,msoft-mul,msoft-div"
2829 or1k_multilibs=`echo $or1k_multilibs | sed -e 's/,/ /g'`
2830 for or1k_multilib in ${or1k_multilibs}; do
2831 case ${or1k_multilib} in
2832 mcmov | msext | msfimm | \
2834 mhard-float | mdouble-float | munordered-float | msoft-float | \
2835 mhard-div | mhard-mul | \
2836 msoft-div | msoft-mul )
2837 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${or1k_multilib}"
2840 echo "--with-multilib-list=${with_multilib_list} not supported."
2844 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2848 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h"
2849 tm_file="${tm_file} or1k/linux.h"
2852 tm_file="${tm_file} newlib-stdint.h or1k/elf.h"
2853 extra_options="${extra_options} or1k/elf.opt"
2856 tm_file="${tm_file} newlib-stdint.h or1k/rtems.h rtems.h"
2857 tmake_file="${tmake_file} or1k/t-rtems"
2862 tm_file="${tm_file} newlib-stdint.h"
2865 # port not yet contributed
2866 #powerpc-*-openbsd*)
2867 # tmake_file="${tmake_file} rs6000/t-fprules"
2871 extra_options="${extra_options} ${cpu_type}/darwin.opt"
2873 *-darwin1[0-9]* | *-darwin9*)
2874 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2875 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2878 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2879 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2882 tm_file="${tm_file} ${cpu_type}/darwin7.h"
2885 # Earlier - ingle arch, with 32b only
2886 # OS X 10.0, the first edition is Darwin4
2889 tmake_file="${tmake_file} t-slibgcc"
2891 powerpc64-*-darwin*)
2892 extra_options="${extra_options} ${cpu_type}/darwin.opt"
2893 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
2894 tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h"
2896 powerpc*-*-freebsd*)
2897 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h ${fbsd_tm_file} rs6000/sysv4.h"
2898 extra_options="${extra_options} rs6000/sysv4.opt"
2899 tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
2902 tm_file="${tm_file} rs6000/sysv4le.h" ;;
2906 tm_file="${tm_file} rs6000/default64.h rs6000/freebsd64.h"
2907 tmake_file="${tmake_file} rs6000/t-freebsd64"
2908 extra_options="${extra_options} rs6000/linux64.opt"
2909 if test $fbsd_major -ge 13; then
2910 tm_defines="${tm_defines} TARGET_FREEBSD32_SECURE_PLT=1"
2914 if test $fbsd_major -ge 13; then
2915 tm_file="rs6000/secureplt.h ${tm_file}"
2917 tm_file="${tm_file} rs6000/freebsd.h"
2922 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h ${nbsd_tm_file} freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h"
2923 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2924 tmake_file="${tmake_file} rs6000/t-netbsd"
2925 extra_options="${extra_options} rs6000/sysv4.opt"
2927 powerpc-*-eabisimaltivec*)
2928 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabisim.h rs6000/eabialtivec.h"
2929 extra_options="${extra_options} rs6000/sysv4.opt"
2930 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
2934 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabisim.h"
2935 extra_options="${extra_options} rs6000/sysv4.opt"
2936 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
2940 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h"
2941 extra_options="${extra_options} rs6000/sysv4.opt"
2942 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
2944 powerpc-*-eabialtivec*)
2945 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabialtivec.h"
2946 extra_options="${extra_options} rs6000/sysv4.opt"
2947 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
2951 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h"
2952 extra_options="${extra_options} rs6000/sysv4.opt"
2953 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
2957 tm_file="rs6000/biarch64.h ${tm_file} dbxelf.h elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/rtems.h rtems.h"
2958 extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
2959 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-rtems rs6000/t-ppccomm"
2962 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h freebsd-spec.h rs6000/sysv4.h"
2963 extra_options="${extra_options} rs6000/sysv4.opt"
2964 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm"
2965 extra_objs="$extra_objs rs6000-linux.o"
2968 tm_file="${tm_file} rs6000/sysv4le.h" ;;
2970 case ${target}:${with_cpu} in
2971 powerpc64*: | powerpc64*:native) cpu_is_64bit=yes ;;
2973 maybe_biarch=${cpu_is_64bit}
2974 case ${enable_targets} in
2975 *powerpc64*) maybe_biarch=yes ;;
2976 all) maybe_biarch=yes ;;
2978 case ${target}:${enable_targets}:${maybe_biarch} in
2979 powerpc64-* | powerpc-*:*:yes | *:*powerpc64-*:yes | *:all:yes \
2980 | powerpc64le*:*powerpcle* | powerpc64le*:*powerpc-* \
2981 | powerpcle-*:*powerpc64le*:yes)
2982 if test x$cpu_is_64bit = xyes; then
2983 tm_file="${tm_file} rs6000/default64.h"
2985 tm_file="rs6000/biarch64.h ${tm_file} rs6000/linux64.h glibc-stdint.h"
2986 tmake_file="$tmake_file rs6000/t-linux64"
2989 tmake_file="$tmake_file rs6000/t-linux64le"
2990 case ${enable_targets} in
2991 all | *powerpc64-* | *powerpc-*)
2992 tmake_file="$tmake_file rs6000/t-linux64lebe" ;;
2995 case ${enable_targets} in
2996 all | *powerpc64le-* | *powerpcle-*)
2997 tmake_file="$tmake_file rs6000/t-linux64bele" ;;
3000 extra_options="${extra_options} rs6000/linux64.opt"
3003 tm_file="${tm_file} rs6000/default64.h rs6000/linux64.h glibc-stdint.h"
3004 extra_options="${extra_options} rs6000/linux64.opt"
3005 tmake_file="${tmake_file} rs6000/t-linux"
3008 tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
3009 tmake_file="${tmake_file} rs6000/t-ppcos rs6000/t-linux"
3013 powerpc*-*-linux*ppc476*)
3014 tm_file="${tm_file} rs6000/476.h"
3015 extra_options="${extra_options} rs6000/476.opt" ;;
3016 powerpc*-*-linux*altivec*)
3017 tm_file="${tm_file} rs6000/linuxaltivec.h" ;;
3021 enable_secureplt=yes ;;
3023 if test x${enable_secureplt} = xyes; then
3024 tm_file="rs6000/secureplt.h ${tm_file}"
3027 powerpc*-wrs-vxworks7r*)
3029 # Wind River 7 post SR0600 is mostly like Linux so we setup
3030 # our config in a very similar fashion and adjust to a few
3033 # The system compiler is configured with secureplt by default.
3034 tm_file="${tm_file} rs6000/secureplt.h"
3036 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h"
3037 tm_file="${tm_file} rs6000/sysv4.h rs6000/biarch64.h rs6000/default64.h rs6000/linux64.h"
3038 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3040 extra_options="${extra_options} rs6000/sysv4.opt linux.opt rs6000/linux64.opt"
3042 tmake_file="${tmake_file} t-linux rs6000/t-linux64 rs6000/t-fprules rs6000/t-ppccomm"
3043 tmake_file="${tmake_file} rs6000/t-vxworks"
3045 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
3046 extra_objs="$extra_objs linux.o rs6000-linux.o"
3048 powerpc-wrs-vxworks*)
3049 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h rs6000/sysv4.h"
3050 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm rs6000/t-vxworks"
3051 extra_options="${extra_options} rs6000/sysv4.opt"
3052 extra_headers="${extra_headers} ppc-asm.h"
3055 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksmils.h"
3056 tmake_file="${tmake_file} rs6000/t-vxworksmils"
3059 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksae.h"
3060 tmake_file="${tmake_file} rs6000/t-vxworksae"
3063 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3069 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h rs6000/sysv4.h rs6000/lynx.h lynx.h"
3070 tmake_file="t-lynx rs6000/t-lynx"
3071 extra_options="${extra_options} rs6000/sysv4.opt lynx.opt"
3077 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h"
3078 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3079 extra_options="${extra_options} rs6000/sysv4.opt"
3081 powerpcle-*-eabisim*)
3082 tm_file="${tm_file} dbxelf.h 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"
3083 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3084 extra_options="${extra_options} rs6000/sysv4.opt"
3088 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h"
3089 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3090 extra_options="${extra_options} rs6000/sysv4.opt"
3094 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3095 tmake_file="${tmake_file} pru/t-pru"
3096 extra_objs="pru-pragma.o pru-passes.o"
3099 rs6000-ibm-aix7.1.* | powerpc-ibm-aix7.1.*)
3100 tmake_file="rs6000/t-aix52 t-slibgcc"
3101 if test x$cpu_is_64bit = xyes; then
3102 tm_file="${tm_file} rs6000/biarch64.h"
3103 tmake_file="rs6000/t-aix64 t-slibgcc"
3105 tm_file="${tm_file} rs6000/aix.h rs6000/aix71.h rs6000/xcoff.h rs6000/aix-stdint.h"
3106 extra_options="${extra_options} rs6000/aix64.opt"
3110 default_use_cxa_atexit=yes
3112 rs6000-ibm-aix7.2.* | powerpc-ibm-aix7.2.*)
3113 tmake_file="rs6000/t-aix52 t-slibgcc"
3114 if test x$cpu_is_64bit = xyes; then
3115 tm_file="${tm_file} rs6000/biarch64.h"
3116 tmake_file="rs6000/t-aix64 t-slibgcc"
3118 tm_file="${tm_file} rs6000/aix.h rs6000/aix72.h rs6000/xcoff.h rs6000/aix-stdint.h"
3119 extra_options="${extra_options} rs6000/aix64.opt"
3123 default_use_cxa_atexit=yes
3125 rs6000-ibm-aix[789].* | powerpc-ibm-aix[789].*)
3126 tmake_file="rs6000/t-aix52 t-slibgcc"
3127 if test x$cpu_is_64bit = xyes; then
3128 tm_file="${tm_file} rs6000/biarch64.h"
3129 tmake_file="rs6000/t-aix64 t-slibgcc"
3131 tm_file="${tm_file} rs6000/aix.h rs6000/aix73.h rs6000/xcoff.h rs6000/aix-stdint.h"
3132 extra_options="${extra_options} rs6000/aix64.opt"
3136 default_use_cxa_atexit=yes
3139 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3140 target_has_targetm_common=no
3141 c_target_objs="rl78-c.o"
3142 cxx_target_objs="rl78-c.o"
3143 tmake_file="${tmake_file} rl78/t-rl78"
3146 tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
3147 tmake_file="${tmake_file} rx/t-rx"
3148 extra_options="${extra_options} rx/elf.opt"
3151 tm_file="elfos.h linux.h glibc-stdint.h rx/linux.h ../../libgcc/config/rx/rx-abi.h"
3152 tmake_file="${tmake_file} rx/t-linux"
3155 tm_file="s390/s390.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3156 c_target_objs="${c_target_objs} s390-c.o"
3157 cxx_target_objs="${cxx_target_objs} s390-c.o"
3158 if test x$enable_targets = xall; then
3159 tmake_file="${tmake_file} s390/t-linux64"
3161 tmake_file="${tmake_file} s390/t-s390"
3164 tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3165 tm_p_file="linux-protos.h s390/s390-protos.h"
3166 c_target_objs="${c_target_objs} s390-c.o"
3167 cxx_target_objs="${cxx_target_objs} s390-c.o"
3168 md_file=s390/s390.md
3169 extra_modes=s390/s390-modes.def
3170 out_file=s390/s390.c
3171 tmake_file="${tmake_file} s390/t-linux64 s390/t-s390"
3174 tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h glibc-stdint.h s390/tpf.h"
3175 tm_p_file=s390/s390-protos.h
3176 c_target_objs="${c_target_objs} s390-c.o"
3177 cxx_target_objs="${cxx_target_objs} s390-c.o"
3178 md_file=s390/s390.md
3179 extra_modes=s390/s390-modes.def
3180 out_file=s390/s390.c
3182 extra_options="${extra_options} s390/tpf.opt"
3183 tmake_file="${tmake_file} s390/t-s390"
3185 sh-*-elf* | sh[12346l]*-*-elf* | \
3186 sh-*-linux* | sh[2346lbe]*-*-linux* | \
3187 sh-*-netbsdelf* | shl*-*-netbsdelf*)
3188 tmake_file="${tmake_file} sh/t-sh sh/t-elf"
3189 if test x${with_endian} = x; then
3191 sh[1234]*be-*-* | sh[1234]*eb-*-*) with_endian=big ;;
3192 shbe-*-* | sheb-*-*) with_endian=big,little ;;
3193 sh[1234]l* | sh[34]*-*-linux*) with_endian=little ;;
3194 shl* | sh*-*-linux* | \
3195 sh-superh-elf) with_endian=little,big ;;
3196 sh[1234]*-*-*) with_endian=big ;;
3197 *) with_endian=big,little ;;
3200 # TM_ENDIAN_CONFIG is used by t-sh to determine multilibs.
3201 # First word : the default endian.
3202 # Second word: the secondary endian (optional).
3203 case ${with_endian} in
3204 big) TM_ENDIAN_CONFIG=mb ;;
3205 little) TM_ENDIAN_CONFIG=ml ;;
3206 big,little) TM_ENDIAN_CONFIG="mb ml" ;;
3207 little,big) TM_ENDIAN_CONFIG="ml mb" ;;
3208 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
3210 case ${with_endian} in
3211 little*) tm_file="sh/little.h ${tm_file}" ;;
3213 tm_file="${tm_file} dbxelf.h elfos.h sh/elf.h"
3215 sh*-*-linux*) tmake_file="${tmake_file} sh/t-linux"
3216 if test x$enable_fdpic = xyes; then
3217 tm_defines="$tm_defines FDPIC_DEFAULT=1"
3219 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h sh/linux.h" ;;
3221 tm_file="${tm_file} ${nbsd_tm_file} sh/netbsd-elf.h"
3222 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3225 sh*-superh-elf) if test x$with_libgloss != xno; then
3227 tm_file="${tm_file} sh/newlib.h"
3229 tm_file="${tm_file} sh/embed-elf.h"
3230 tm_file="${tm_file} sh/superh.h"
3231 extra_options="${extra_options} sh/superh.opt" ;;
3232 *) if test x$with_newlib = xyes \
3233 && test x$with_libgloss = xyes; then
3234 tm_file="${tm_file} sh/newlib.h"
3236 tm_file="${tm_file} sh/embed-elf.h" ;;
3242 tm_file="${tm_file} newlib-stdint.h"
3245 # sed el/eb endian suffixes away to avoid confusion with sh[23]e
3246 case `echo ${target} | sed 's/e[lb]-/-/'` in
3247 sh4a_single_only*) sh_cpu_target=sh4a-single-only ;;
3248 sh4a_single*) sh_cpu_target=sh4a-single ;;
3249 sh4a_nofpu*) sh_cpu_target=sh4a-nofpu ;;
3250 sh4al) sh_cpu_target=sh4al ;;
3251 sh4a*) sh_cpu_target=sh4a ;;
3252 sh4_single_only*) sh_cpu_target=sh4-single-only ;;
3253 sh4_single*) sh_cpu_target=sh4-single ;;
3254 sh4_nofpu*) sh_cpu_target=sh4-nofpu ;;
3255 sh4* | sh-superh-*) sh_cpu_target=sh4 ;;
3256 sh3e*) sh_cpu_target=sh3e ;;
3257 sh*-*-netbsd* | sh3*) sh_cpu_target=sh3 ;;
3258 sh2a_single_only*) sh_cpu_target=sh2a-single-only ;;
3259 sh2a_single*) sh_cpu_target=sh2a-single ;;
3260 sh2a_nofpu*) sh_cpu_target=sh2a-nofpu ;;
3261 sh2a*) sh_cpu_target=sh2a ;;
3262 sh2e*) sh_cpu_target=sh2e ;;
3263 sh2*) sh_cpu_target=sh2 ;;
3264 *) sh_cpu_target=sh1 ;;
3266 # did the user say --without-fp ?
3267 if test x$with_fp = xno; then
3268 case ${sh_cpu_target} in
3270 sh4a* ) sh_cpu_target=sh4a-nofpu ;;
3271 sh4*) sh_cpu_target=sh4-nofpu ;;
3272 sh3*) sh_cpu_target=sh3 ;;
3273 sh2a*) sh_cpu_target=sh2a-nofpu ;;
3274 sh2*) sh_cpu_target=sh2 ;;
3275 *) echo --without-fp not available for $target: ignored
3277 tm_defines="$tm_defines STRICT_NOFPU=1"
3279 sh_cpu_default="`echo $with_cpu|sed s/^m/sh/|tr A-Z_ a-z-`"
3280 case $sh_cpu_default in
3281 sh2a-single-only | sh2a-single | sh2a-nofpu | sh2a | \
3282 sh4a-single-only | sh4a-single | sh4a-nofpu | sh4a | sh4al | \
3283 sh4-single-only | sh4-single | sh4-nofpu | sh4 | sh4-300 | \
3284 sh3e | sh3 | sh2e | sh2 | sh1) ;;
3285 "") sh_cpu_default=${sh_cpu_target} ;;
3286 *) echo "with_cpu=$with_cpu not supported"; exit 1 ;;
3288 sh_multilibs=${with_multilib_list}
3289 if test "$sh_multilibs" = "default" ; then
3291 sh[1234]*) sh_multilibs=${sh_cpu_target} ;;
3292 sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
3293 sh*-*-linux*) sh_multilibs=m1,m2,m2a,m3e,m4 ;;
3294 sh*-*-netbsd*) sh_multilibs=m3,m3e,m4 ;;
3295 *) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single ;;
3297 if test x$with_fp = xno; then
3298 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`"
3301 target_cpu_default=SELECT_`echo ${sh_cpu_default}|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`
3302 tm_defines=${tm_defines}' SH_MULTILIB_CPU_DEFAULT=\"'`echo $sh_cpu_default|sed s/sh/m/`'\"'
3303 tm_defines="$tm_defines SUPPORT_`echo $sh_cpu_default | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3304 sh_multilibs=`echo $sh_multilibs | sed -e 's/,/ /g' -e 's/^[Ss][Hh]/m/' -e 's/ [Ss][Hh]/ m/g' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-`
3305 for sh_multilib in ${sh_multilibs}; do
3306 case ${sh_multilib} in
3307 m1 | m2 | m2e | m3 | m3e | \
3308 m4 | m4-single | m4-single-only | m4-nofpu | m4-300 |\
3309 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al | \
3310 m2a | m2a-single | m2a-single-only | m2a-nofpu)
3311 # TM_MULTILIB_CONFIG is used by t-sh for the non-endian multilib definition
3312 # It is passed to MULTIILIB_OPTIONS verbatim.
3313 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG}/${sh_multilib}"
3314 tm_defines="$tm_defines SUPPORT_`echo $sh_multilib | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3316 \!*) # TM_MULTILIB_EXCEPTIONS_CONFIG is used by t-sh
3317 # It is passed the MULTILIB_EXCEPTIONS verbatim.
3318 TM_MULTILIB_EXCEPTIONS_CONFIG="${TM_MULTILIB_EXCEPTIONS_CONFIG} `echo $sh_multilib | sed 's/^!//'`" ;;
3320 echo "with_multilib_list=${sh_multilib} not supported."
3325 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's:^/::'`
3326 if test x${enable_incomplete_targets} = xyes ; then
3327 tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1"
3329 tm_file="$tm_file ./sysroot-suffix.h"
3330 tmake_file="$tmake_file t-sysroot-suffix"
3333 tmake_file="${tmake_file} sh/t-sh sh/t-rtems"
3334 tm_file="${tm_file} dbxelf.h elfos.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h newlib-stdint.h"
3337 tmake_file="$tmake_file sh/t-sh sh/t-vxworks"
3338 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h vx-common.h vxworks.h sh/vxworks.h"
3341 tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp-elf.h"
3344 tmake_file="sparc/t-sparc sparc/t-leon"
3347 tmake_file="sparc/t-sparc sparc/t-leon3"
3350 tmake_file="sparc/t-sparc sparc/t-elf"
3355 tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
3356 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
3359 tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
3360 extra_options="${extra_options} sparc/long-double-switch.opt"
3363 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon"
3366 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon3"
3369 tmake_file="${tmake_file} sparc/t-sparc"
3372 if test x$enable_targets = xall; then
3373 tm_file="sparc/biarch64.h ${tm_file} sparc/linux64.h"
3374 tmake_file="${tmake_file} sparc/t-linux64"
3376 tm_file="${tm_file} sparc/linux.h"
3377 tmake_file="${tmake_file} sparc/t-linux"
3381 tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3382 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3383 extra_options="${extra_options} sparc/long-double-switch.opt"
3384 tmake_file="${tmake_file} sparc/t-sparc"
3387 tm_file="sparc/biarch64.h ${tm_file} ${sol2_tm_file} sparc/tso.h"
3389 sparc64-*-* | sparcv9-*-*)
3390 tm_file="sparc/default64.h ${tm_file}"
3393 test x$with_cpu != x || with_cpu=v9
3396 tmake_file="${tmake_file} sparc/t-sparc sparc/t-sol2"
3399 tm_file="${tm_file} elfos.h sparc/sysv4.h vx-common.h vxworks.h sparc/vxworks.h"
3400 tmake_file="${tmake_file} sparc/t-sparc sparc/t-vxworks"
3403 tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h"
3404 extra_options="${extra_options}"
3405 tmake_file="${tmake_file} sparc/t-sparc"
3408 tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h sparc/rtemself.h rtems.h"
3409 extra_options="${extra_options}"
3410 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
3413 tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default64.h sparc/linux64.h sparc/tso.h"
3414 extra_options="${extra_options} sparc/long-double-switch.opt"
3415 tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
3417 sparc64-*-freebsd*|ultrasparc-*-freebsd*)
3418 tm_file="${tm_file} ${fbsd_tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/freebsd.h"
3419 extra_options="${extra_options} sparc/long-double-switch.opt"
3420 case "x$with_cpu" in
3422 x) with_cpu=ultrasparc ;;
3423 *) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
3425 tmake_file="${tmake_file} sparc/t-sparc"
3428 tm_file="sparc/biarch64.h ${tm_file}"
3429 tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3430 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3431 extra_options="${extra_options} sparc/long-double-switch.opt"
3432 tmake_file="${tmake_file} sparc/t-sparc sparc/t-netbsd64"
3435 tm_file="sparc/openbsd1-64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp64-elf.h"
3436 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h sparc/openbsd64.h"
3437 extra_options="${extra_options} openbsd.opt"
3438 extra_options="${extra_options}"
3441 tmake_file="${tmake_file} sparc/t-sparc"
3444 tm_file="elfos.h ${tm_file} c6x/elf-common.h c6x/elf.h"
3445 tm_file="${tm_file} dbxelf.h tm-dwarf2.h newlib-stdint.h"
3446 tmake_file="c6x/t-c6x c6x/t-c6x-elf"
3450 tm_file="elfos.h ${tm_file} gnu-user.h linux.h c6x/elf-common.h c6x/uclinux-elf.h"
3451 tm_file="${tm_file} dbxelf.h tm-dwarf2.h glibc-stdint.h"
3452 tm_file="${tm_file} ./sysroot-suffix.h"
3453 tmake_file="t-sysroot-suffix t-slibgcc"
3454 tmake_file="${tmake_file} c6x/t-c6x c6x/t-c6x-elf c6x/t-c6x-uclinux"
3458 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h tilegx/linux.h ${tm_file}"
3459 tmake_file="${tmake_file} tilegx/t-tilegx"
3460 extra_objs="${extra_objs} mul-tables.o"
3461 c_target_objs="${c_target_objs} tilegx-c.o"
3462 cxx_target_objs="${cxx_target_objs} tilegx-c.o"
3463 extra_headers="feedback.h"
3466 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
3471 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h tilepro/linux.h ${tm_file}"
3472 tmake_file="${tmake_file} tilepro/t-tilepro"
3473 extra_objs="${extra_objs} mul-tables.o"
3474 c_target_objs="${c_target_objs} tilepro-c.o"
3475 cxx_target_objs="${cxx_target_objs} tilepro-c.o"
3476 extra_headers="feedback.h"
3479 target_cpu_default="TARGET_CPU_generic"
3480 tm_file="elfos.h v850/v850.h"
3481 tm_file="${tm_file} v850/rtems.h rtems.h newlib-stdint.h"
3482 tmake_file="${tmake_file} v850/t-v850"
3483 tmake_file="${tmake_file} v850/t-rtems"
3485 c_target_objs="v850-c.o"
3486 cxx_target_objs="v850-c.o"
3491 target_cpu_default="TARGET_CPU_v850e3v5"
3494 target_cpu_default="TARGET_CPU_v850e2v3"
3497 target_cpu_default="TARGET_CPU_v850e2"
3499 v850e1-*-* | v850es-*-*)
3500 target_cpu_default="TARGET_CPU_v850e1"
3503 target_cpu_default="TARGET_CPU_v850e"
3506 target_cpu_default="TARGET_CPU_generic"
3509 tm_file="elfos.h newlib-stdint.h v850/v850.h"
3511 c_target_objs="v850-c.o"
3512 cxx_target_objs="v850-c.o"
3516 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h vax/elf.h vax/linux.h"
3517 extra_options="${extra_options} vax/elf.opt"
3520 tm_file="${tm_file} elfos.h ${nbsd_tm_file} vax/elf.h vax/netbsd-elf.h"
3521 extra_options="${extra_options} netbsd.opt netbsd-elf.opt vax/elf.opt"
3522 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
3525 tm_file="vax/vax.h vax/openbsd1.h openbsd.h openbsd-stdint.h openbsd-libpthread.h vax/openbsd.h"
3526 extra_options="${extra_options} openbsd.opt"
3530 tm_file="dbxelf.h elfos.h ${tm_file} visium/elf.h newlib-stdint.h"
3531 tmake_file="visium/t-visium visium/t-crtstuff"
3534 # For historical reasons, the target files omit the 'x'.
3535 tm_file="dbxelf.h elfos.h newlib-stdint.h stormy16/stormy16.h"
3536 tm_p_file=stormy16/stormy16-protos.h
3537 tm_d_file="elfos.h stormy16/stormy16.h"
3538 md_file=stormy16/stormy16.md
3539 out_file=stormy16/stormy16.c
3540 extra_options=stormy16/stormy16.opt
3541 tmake_file="stormy16/t-stormy16"
3544 tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h xtensa/elf.h"
3545 extra_options="${extra_options} xtensa/elf.opt"
3548 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/linux.h"
3549 tmake_file="${tmake_file} xtensa/t-xtensa"
3552 tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/uclinux.h"
3553 tmake_file="${tmake_file} xtensa/t-xtensa"
3554 extra_options="${extra_options} xtensa/uclinux.opt"
3557 tm_file="mn10300/mn10300.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h mn10300/linux.h"
3562 tm_file="dbxelf.h elfos.h ${tm_file} m32c/rtems.h rtems.h newlib-stdint.h"
3563 c_target_objs="m32c-pragma.o"
3564 cxx_target_objs="m32c-pragma.o"
3567 tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
3568 c_target_objs="m32c-pragma.o"
3569 cxx_target_objs="m32c-pragma.o"
3572 echo "*** Configuration ${target} not supported" 1>&2
3578 i[34567]86-*-linux* | x86_64-*-linux*)
3579 tmake_file="${tmake_file} i386/t-pmm_malloc i386/t-i386"
3581 i[34567]86-*-* | x86_64-*-*)
3582 tmake_file="${tmake_file} i386/t-gmm_malloc i386/t-i386"
3584 powerpc*-*-* | rs6000-*-*)
3585 tm_file="${tm_file} ${cpu_type}/option-defaults.h"
3591 tmake_file="${tmake_file} t-musl"
3594 tmake_file="${tmake_file} t-uclibc"
3598 # Assume the existence of indirect function support and allow the use of the
3599 # resolver attribute.
3601 *-*-linux*android*|*-*-linux*uclibc*|*-*-linux*musl*)
3603 *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
3605 *-*-linux* | *-*-gnu*)
3607 aarch64*-* | arm*-* | i[34567]86-* | powerpc*-* | s390*-* | sparc*-* | x86_64-*)
3608 default_gnu_indirect_function=yes
3614 # Build mkoffload tool
3616 *-intelmic-* | *-intelmicemul-*)
3617 tmake_file="${tmake_file} i386/t-intelmic"
3618 tm_file="${tm_file} i386/intelmic-offload.h"
3622 if [ "$target_has_targetcm" = "no" ]; then
3623 c_target_objs="$c_target_objs default-c.o"
3624 cxx_target_objs="$cxx_target_objs default-c.o"
3627 if [ "$common_out_file" = "" ]; then
3628 if [ "$target_has_targetm_common" = "yes" ]; then
3629 common_out_file="$cpu_type/$cpu_type-common.c"
3631 common_out_file="default-common.c"
3635 if [ "$target_has_targetdm" = "no" ]; then
3636 d_target_objs="$d_target_objs default-d.o"
3639 # Support for --with-cpu and related options (and a few unrelated options,
3643 echo "--with-cpu must be passed a value" 1>&2
3648 # Set arch and cpu from ${target} and ${target_noncanonical}. Set cpu
3649 # to generic if there is no processor scheduler model for the target.
3652 arch_without_sse2=no
3653 arch_without_64bit=no
3656 if test $fbsd_major -ge 6; then
3662 arch_without_sse2=yes
3663 arch_without_64bit=yes
3668 arch_without_sse2=yes
3669 arch_without_64bit=yes
3674 arch_without_sse2=yes
3675 arch_without_64bit=yes
3680 arch_without_sse2=yes
3681 arch_without_64bit=yes
3684 arch_without_sse2=yes
3685 arch_without_64bit=yes
3686 case ${target_noncanonical} in
3699 pentium_mmx-*|winchip_c6-*|winchip2-*|c3-*)
3709 i686-*-* | i786-*-*)
3710 case ${target_noncanonical} in
3747 amdfam10-*|barcelona-*)
3751 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3755 k8-*|opteron-*|athlon64-*|athlon_fx-*)
3759 athlon_xp-*|athlon_mp-*|athlon_4-*)
3762 arch_without_sse2=yes
3763 arch_without_64bit=yes
3765 athlon_tbird-*|athlon-*)
3768 arch_without_sse2=yes
3773 arch_without_sse2=yes
3778 arch_without_sse2=yes
3780 pentium3-*|pentium3m-*)
3783 arch_without_sse2=yes
3785 pentium4-*|pentium4m-*)
3824 arch_without_sse2=yes
3829 arch_without_sse2=yes
3830 arch_without_64bit=yes
3835 case ${target_noncanonical} in
3872 amdfam10-*|barcelona-*)
3876 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3880 k8-*|opteron-*|athlon_64-*)
3912 # If there is no $with_cpu option, try to infer one from ${target}.
3913 # This block sets nothing except for with_cpu.
3914 if test x$with_cpu = x ; then
3916 i[34567]86-*-elfiamcu)
3919 i[34567]86-*-*|x86_64-*-*)
3937 frv-*-*linux* | frv400-*-*linux*)
3944 case "$with_arch" in
3946 with_cpu=${default_cf_cpu}
3949 with_cpu=m${default_m68k_cpu}
3965 with_cpu="`echo ${target} | sed 's/-.*$//'`"
3974 # Avoid overriding --with-cpu-32 and --with-cpu-64 values.
3976 i[34567]86-*-*|x86_64-*-*)
3977 if test x$with_cpu_32 != x || test x$with_cpu_64 != x; then
3978 if test x$with_cpu_32 = x; then
3979 with_cpu_32=$with_cpu
3981 if test x$with_cpu_64 = x; then
3982 with_cpu_64=$with_cpu
3990 # Support for --with-arch and related options (and a few unrelated options,
3992 case ${with_arch} in
3994 echo "--with-arch must be passed a value" 1>&2
3999 # If there is no $with_arch option, try to infer one from ${target}.
4000 # This block sets nothing except for with_arch.
4001 if test x$with_arch = x ; then
4003 i[34567]86-*-darwin*|x86_64-*-darwin*)
4004 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
4005 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
4007 i[34567]86-*-elfiamcu)
4011 # --with-fpmath sets the default ISA to SSE2, which is the same
4012 # ISA supported by Pentium 4.
4013 if test x$with_fpmath = x || test $arch_without_sse2 = no; then
4022 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4030 # Avoid overriding --with-arch-32 and --with-arch-64 values.
4032 i[34567]86-*-darwin*|x86_64-*-darwin*)
4033 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
4034 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
4036 i[34567]86-*-*|x86_64-*-*)
4037 if test x$with_arch_32 != x || test x$with_arch_64 != x; then
4038 if test x$with_arch_32 = x; then
4039 with_arch_32=$with_arch
4041 if test x$with_arch_64 = x; then
4042 if test $arch_without_64bit = yes; then
4043 # Set the default 64bit arch to x86-64 if the default arch
4044 # doesn't support 64bit.
4047 with_arch_64=$with_arch
4051 elif test $arch_without_64bit$need_64bit_isa = yesyes; then
4052 # Set the default 64bit arch to x86-64 if the default arch
4053 # doesn't support 64bit and we need 64bit ISA.
4054 with_arch_32=$with_arch
4062 # Infer a default setting for --with-float.
4063 if test x$with_float = x; then
4065 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4066 # The R5900 doesn't support 64-bit float. 32-bit float doesn't
4067 # comply with IEEE 754.
4073 # Infer a default setting for --with-fpu.
4074 if test x$with_fpu = x; then
4076 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4077 # The R5900 FPU only supports single precision.
4083 # Support --with-fpmath.
4084 if test x$with_fpmath != x; then
4086 i[34567]86-*-* | x86_64-*-*)
4087 case ${with_fpmath} in
4089 tm_file="${tm_file} i386/avxmath.h"
4092 tm_file="${tm_file} i386/ssemath.h"
4095 echo "Invalid --with-fpmath=$with_fpmath" 1>&2
4101 echo "--with-fpmath isn't supported for $target." 1>&2
4107 # Similarly for --with-schedule.
4108 if test x$with_schedule = x; then
4111 # Override default PA8000 scheduling model.
4112 with_schedule=7100LC
4117 # Infer a default setting for --with-llsc.
4118 if test x$with_llsc = x; then
4121 # The kernel emulates LL and SC where necessary.
4124 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4125 # The R5900 doesn't support LL(D) and SC(D).
4131 # Validate and mark as valid any --with options supported
4132 # by this target. In order to use a particular --with option
4133 # you must list it in supported_defaults; validating the value
4134 # is optional. This case statement should set nothing besides
4135 # supported_defaults.
4140 supported_defaults="abi cpu cpu_64 arch arch_64 tune tune_64"
4141 if test x$with_cpu_64 != x && test x$with_cpu = x; then
4142 with_cpu=$with_cpu_64
4144 if test x$with_arch_64 != x && test x$with_arch = x; then
4145 with_arch=$with_arch_64
4147 if test x$with_tune_64 != x && test x$with_tune = x; then
4148 with_tune=$with_tune_64
4150 for which in cpu arch tune; do
4151 eval "val=\$with_$which"
4152 base_val=`echo $val | sed -e 's/\+.*//'`
4153 ext_val=`echo $val | sed -e 's/[a-z0-9.-]\+//'`
4155 if [ $which = arch ]; then
4156 def=aarch64-arches.def
4157 pattern=AARCH64_ARCH
4159 def=aarch64-cores.def
4160 pattern=AARCH64_CORE
4163 ext_mask=AARCH64_CPU_DEFAULT_FLAGS
4165 # Find the base CPU or ARCH id in aarch64-cores.def or
4166 # aarch64-arches.def
4167 if [ x"$base_val" = x ] \
4168 || grep "^$pattern(\"$base_val\"," \
4169 ${srcdir}/config/aarch64/$def \
4172 if [ $which = arch ]; then
4173 base_id=`grep "^$pattern(\"$base_val\"," \
4174 ${srcdir}/config/aarch64/$def | \
4175 sed -e 's/^[^,]*,[ ]*//' | \
4177 # Extract the architecture flags from aarch64-arches.def
4178 ext_mask=`grep "^$pattern(\"$base_val\"," \
4179 ${srcdir}/config/aarch64/$def | \
4183 base_id=`grep "^$pattern(\"$base_val\"," \
4184 ${srcdir}/config/aarch64/$def | \
4185 sed -e 's/^[^,]*,[ ]*//' | \
4189 # Disallow extensions in --with-tune=cortex-a53+crc.
4190 if [ $which = tune ] && [ x"$ext_val" != x ]; then
4191 echo "Architecture extensions not supported in --with-$which=$val" 1>&2
4195 # Use the pre-processor to strip flatten the options.
4196 # This makes the format less rigid than if we use
4197 # grep and sed directly here.
4198 opt_macro="AARCH64_OPT_EXTENSION(A, B, C, D, E, F)=A, B, C, D, E, F"
4199 options_parsed="`$ac_cv_prog_CPP -D"$opt_macro" -x c \
4200 ${srcdir}/config/aarch64/aarch64-option-extensions.def`"
4202 # Match one element inside AARCH64_OPT_EXTENSION, we
4203 # consume anything that's not a ,.
4204 elem="[ ]*\([^,]\+\)[ ]*"
4206 # Repeat the pattern for the number of entries in the
4207 # AARCH64_OPT_EXTENSION, currently 6 times.
4208 sed_patt="^$elem,$elem,$elem,$elem,$elem,$elem"
4210 while [ x"$ext_val" != x ]
4212 ext_val=`echo $ext_val | sed -e 's/\+//'`
4213 ext=`echo $ext_val | sed -e 's/\+.*//'`
4214 base_ext=`echo $ext | sed -e 's/^no//'`
4215 opt_line=`echo -e "$options_parsed" | \
4216 grep "^\"$base_ext\""`
4218 if [ x"$base_ext" = x ] \
4219 || [[ -n $opt_line ]]; then
4221 # These regexp extract the elements based on
4222 # their group match index in the regexp.
4223 ext_canon=`echo -e "$opt_line" | \
4224 sed -e "s/$sed_patt/\2/"`
4225 ext_on=`echo -e "$opt_line" | \
4226 sed -e "s/$sed_patt/\3/"`
4227 ext_off=`echo -e "$opt_line" | \
4228 sed -e "s/$sed_patt/\4/"`
4230 if [ $ext = $base_ext ]; then
4232 ext_mask="("$ext_mask") | ("$ext_on" | "$ext_canon")"
4234 # Removing extension
4235 ext_mask="("$ext_mask") & ~("$ext_off" | "$ext_canon")"
4240 echo "Unknown extension used in --with-$which=$val" 1>&2
4243 ext_val=`echo $ext_val | sed -e 's/[a-z0-9]\+//'`
4246 ext_mask="(("$ext_mask") << 6)"
4247 if [ x"$base_id" != x ]; then
4248 target_cpu_cname="TARGET_CPU_$base_id | $ext_mask"
4252 # Allow --with-$which=native.
4253 if [ "$val" = native ]; then
4256 echo "Unknown $which used in --with-$which=$val" 1>&2
4264 supported_defaults="cpu tune"
4265 for which in cpu tune; do
4266 eval "val=\$with_$which"
4269 | ev4 | ev45 | 21064 | ev5 | 21164 | ev56 | 21164a \
4270 | pca56 | 21164PC | 21164pc | ev6 | 21264 | ev67 \
4274 echo "Unknown CPU used in --with-$which=$val" 1>&2
4282 supported_defaults="cpu fpu"
4285 if [ x"$with_cpu" = x ] \
4286 || grep -q -E "^ARC_CPU[[:blank:]]*\($with_cpu," \
4287 ${srcdir}/config/arc/arc-cpus.def
4292 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4296 # see if --with-fpu matches any of the supported FPUs
4301 fpus | fpus_div | fpus_fma | fpus_all)
4305 fpuda | fpuda_div | fpuda_fma | fpuda_all)
4309 fpud | fpud_div | fpud_fma | fpud_all)
4314 echo "Unknown floating point type used in "\
4315 "--with-fpu=$with_fpu" 1>&2
4320 if [ -n "$flags_ok" ] \
4321 && ! grep -q -E "^ARC_CPU[[:blank:]]*\($new_cpu,[[:blank:]]*$flags_ok," \
4322 ${srcdir}/config/arc/arc-cpus.def
4324 echo "Unknown floating point type used in "\
4325 "--with-fpu=$with_fpu for cpu $new_cpu" 1>&2
4331 supported_defaults="cpu endian float"
4335 supported_defaults="arch cpu float tune fpu abi mode tls"
4336 for which in cpu tune arch; do
4337 # See if it matches a supported value
4338 eval "val=\$with_$which"
4339 if [ x"$val" != x ]; then
4340 cpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4341 -v cmd="chk$which $val" \
4342 ${srcdir}/config/arm/arm-cpus.in`
4343 if [ "$cpu" = "error" ]; then
4344 echo "Unknown target in --with-$which=$val" 1>&2
4348 eval "target_${which}_cname=$new_val"
4349 echo "For $val real value is $new_val"
4354 case "$with_float" in
4356 | soft | hard | softfp)
4360 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4365 # see if --with-fpu matches any of the supported FPUs
4366 if [ x"$with_fpu" != x ] ; then
4368 fpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4369 -v cmd="chkfpu $val" \
4370 ${srcdir}/config/arm/arm-cpus.in`
4371 if [ "$fpu" = "error" ]
4373 echo "Unknown target in --with-fpu=$val" 1>&2
4380 | apcs-gnu | atpcs | aapcs | iwmmxt | aapcs-linux )
4384 echo "Unknown ABI used in --with-abi=$with_abi"
4389 case "$with_mode" in
4395 echo "Unknown mode used in --with-mode=$with_mode"
4406 echo "Unknown TLS method used in --with-tls=$with_tls" 1>&2
4411 if test "x$with_arch" != x && test "x$with_cpu" != x; then
4412 echo "Switch \"--with-arch\" may not be used with switch \"--with-cpu\"" 1>&2
4416 if test "x$with_cpu" != x && test "x$with_tune" != x; then
4417 echo "Switch \"--with-tune\" may not be used with switch \"--with-cpu\"" 1>&2
4421 # Add extra multilibs
4422 if test "x$with_multilib_list" != x; then
4424 arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
4425 if test "x${arm_multilibs}" != xdefault ; then
4426 for arm_multilib in ${arm_multilibs}; do
4427 case ${arm_multilib} in
4429 tmake_profile_file="arm/t-multilib"
4432 ml=`echo "X$arm_multilib" | sed '1s,^X@,,'`
4433 if test -f "${srcdir}/config/arm/${ml}"; then
4434 tmake_file="${tmake_file} arm/${ml}"
4436 echo "Error: ${ml} does not exist in ${srcdir}/config/arm" >&2
4441 echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2
4448 if test "x${tmake_profile_file}" != x ; then
4449 # arm/t-aprofile and arm/t-rmprofile are only
4450 # designed to work without any with-cpu,
4451 # with-arch, with-mode, with-fpu or with-float
4453 if test "x$with_arch" != x \
4454 || test "x$with_cpu" != x \
4455 || test "x$with_float" != x \
4456 || test "x$with_fpu" != x \
4457 || test "x$with_mode" != x ; then
4458 echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=${with_multilib_list}" 1>&2
4460 elif test "x$ml" != x ; then
4461 echo "Error: You cannot use builtin multilib profiles along with custom ones" 1>&2
4464 # But pass the default value for float-abi
4465 # through to the multilib selector
4467 tmake_file="${tmake_file} ${tmake_profile_file}"
4468 TM_MULTILIB_CONFIG="$with_multilib_list"
4471 target_cpu_cname=${target_cpu_cname:-arm7tdmi}
4472 with_cpu=${with_cpu:-$target_cpu_cname}
4476 supported_defaults=cpu
4481 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4487 fido-*-* | m68k*-*-*)
4488 supported_defaults="arch cpu"
4489 case "$with_arch" in
4491 m68k_arch_family="$with_arch"
4494 echo "Invalid --with-arch=$with_arch" 1>&2
4499 # We always have a $with_cpu setting here.
4501 "m68000" | "m68010" | "m68020" | "m68030" | "m68040" | "m68060")
4502 m68k_cpu_ident=$with_cpu
4505 m68k_cpu_ident=m68020
4506 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_40"
4509 m68k_cpu_ident=m68020
4510 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_60"
4513 # We need the C identifier rather than the string.
4514 m68k_cpu_ident=`awk -v arg="\"$with_cpu\"" \
4515 'BEGIN { FS="[ \t]*[,()][ \t]*" }; \
4516 $1 == "M68K_DEVICE" && $2 == arg { print $3 }' \
4517 ${srcdir}/config/m68k/m68k-devices.def`
4518 if [ x"$m68k_cpu_ident" = x ] ; then
4519 echo "Unknown CPU used in --with-cpu=$with_cpu" 1>&2
4522 with_cpu="mcpu=$with_cpu"
4528 supported_defaults="arch tune"
4530 for which in arch tune; do
4531 eval "val=\$with_$which"
4533 "" | fiji | gfx900 | gfx906 )
4537 echo "Unknown cpu used in --with-$which=$val." 1>&2
4542 [ "x$with_arch" = x ] && with_arch=fiji
4546 supported_defaults="arch schedule"
4548 case "$with_arch" in
4549 "" | 1.0 | 1.1 | 2.0)
4553 echo "Unknown architecture used in --with-arch=$with_arch" 1>&2
4558 case "$with_schedule" in
4559 "" | 700 | 7100 | 7100LC | 7200 | 7300 | 8000)
4563 echo "Unknown processor used in --with-schedule=$with_schedule." 1>&2
4569 i[34567]86-*-* | x86_64-*-*)
4570 supported_defaults="abi arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64"
4571 for which in arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64; do
4572 eval "val=\$with_$which"
4573 case " $x86_archs " in
4581 echo "CPU given in --with-$which=$val doesn't support 64bit mode." 1>&2
4590 if test x${val} != x; then
4591 case " $x86_64_archs " in
4593 # Disallow x86-64-v* for --with-cpu=/--with-tune=
4594 case "x$which$val" in
4595 xcpu*x86-64-v*|xtune*x86-64-v*)
4596 echo "Unknown CPU given in --with-$which=$val." 1>&2
4605 # Allow $x86_cpus --with-cpu=/--with-tune=
4608 case " $x86_cpus " in
4613 echo "Unknown CPU given in --with-$which=$val." 1>&2
4619 echo "Unknown CPU given in --with-$which=$val." 1>&2
4632 supported_defaults="abi arch tune riscv_attribute isa_spec"
4635 riscv-* | riscv32*) xlen=32 ;;
4636 riscv64*) xlen=64 ;;
4637 *) echo "Unsupported RISC-V target ${target}" 1>&2; exit 1 ;;
4640 case "${with_isa_spec}" in
4642 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_2P2"
4645 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20191213"
4648 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20190608"
4651 echo "--with-isa-spec only accept 2.2, 20191213, 201912, 20190608 or 201906" 1>&2
4655 case "${with_riscv_attribute}" in
4657 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4660 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=0"
4663 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4666 echo "--with-riscv-attribute=${with_riscv_attribute} is not supported. The argument must begin with yes, no or default." 1>&2
4672 # Infer arch from --with-arch, --target, and --with-abi.
4673 case "${with_arch}" in
4674 rv32e* | rv32i* | rv32g* | rv64i* | rv64g*)
4678 # Infer XLEN, but otherwise assume GC.
4679 case "${with_abi}" in
4680 ilp32e) with_arch="rv32e" ;;
4681 ilp32 | ilp32f | ilp32d) with_arch="rv32gc" ;;
4682 lp64 | lp64f | lp64d) with_arch="rv64gc" ;;
4683 *) with_arch="rv${xlen}gc" ;;
4687 echo "--with-arch=${with_arch} is not supported. The argument must begin with rv32e, rv32i, rv32g, rv64i, or rv64g." 1>&2
4691 PYTHON=`which python || which python3 || which python2`
4692 if test "x${PYTHON}" != x; then
4693 with_arch=`${PYTHON} ${srcdir}/config/riscv/arch-canonicalize ${with_arch}`
4695 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ARCH=${with_arch}"
4697 # Make sure --with-abi is valid. If it was not specified,
4698 # pick a default based on the ISA, preferring soft-float
4699 # unless the D extension is present.
4700 case "${with_abi}" in
4701 ilp32 | ilp32e | ilp32f | ilp32d | lp64 | lp64f | lp64d)
4704 case "${with_arch}" in
4705 rv32*d* | rv32g*) with_abi=ilp32d ;;
4706 rv32e*) with_abi=ilp32e ;;
4707 rv32*) with_abi=ilp32 ;;
4708 rv64*d* | rv64g*) with_abi=lp64d ;;
4709 rv64*) with_abi=lp64 ;;
4713 echo "--with-abi=${with_abi} is not supported" 1>&2
4717 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ABI=${with_abi}"
4719 # Make sure ABI and ISA are compatible.
4720 case "${with_abi},${with_arch}" in
4721 ilp32,rv32* | ilp32e,rv32e* \
4722 | ilp32f,rv32*f* | ilp32f,rv32g* \
4723 | ilp32d,rv32*d* | ilp32d,rv32g* \
4725 | lp64f,rv64*f* | lp64f,rv64g* \
4726 | lp64d,rv64*d* | lp64d,rv64g*)
4729 echo "--with-abi=${with_abi} is not supported for ISA ${with_arch}" 1>&2
4733 # Handle --with-multilib-generator.
4734 if test "x${with_multilib_generator}" != xdefault; then
4735 if test "x${with_multilib_list}" != xdefault; then
4736 echo "--with-multilib-list= can't used with --with-multilib-generator= at same time" 1>&2
4741 if ${srcdir}/config/riscv/multilib-generator \
4742 `echo ${with_multilib_generator} | sed 's/;/ /g'`\
4743 > t-multilib-config;
4745 tmake_file="${tmake_file} riscv/t-withmultilib-generator"
4747 echo "invalid option for --with-multilib-generator" 1>&2
4752 echo "--with-multilib-generator= is not supported for ${target}, only supported for riscv*-*-elf*" 1>&2
4758 # Handle --with-multilib-list.
4759 if test "x${with_multilib_list}" != xdefault; then
4760 tmake_file="${tmake_file} riscv/t-withmultilib"
4762 case ${with_multilib_list} in
4763 ilp32 | ilp32f | ilp32d \
4764 | lp64 | lp64f | lp64d )
4765 TM_MULTILIB_CONFIG="${with_arch},${with_multilib_list}"
4768 echo "--with-multilib-list=${with_multilib_list} not supported."
4775 supported_defaults="abi arch arch_32 arch_64 float fpu nan fp_32 odd_spreg_32 tune tune_32 tune_64 divide llsc mips-plt synci lxc1-sxc1 madd4"
4777 case ${with_float} in
4782 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4788 "" | single | double)
4792 echo "Unknown fpu type used in --with-fpu=$with_fpu" 1>&2
4802 echo "Unknown NaN encoding used in --with-nan=$with_nan" 1>&2
4807 case ${with_fp_32} in
4812 echo "Unknown FP mode used in --with-fp-32=$with_fp_32" 1>&2
4817 case ${with_odd_spreg_32} in
4819 with_odd_spreg_32="odd-spreg"
4822 with_odd_spreg_32="no-odd-spreg"
4828 echo "Unknown odd-spreg-32 type used in --with-odd-spreg-32=$with_odd_spreg_32" 1>&2
4834 "" | 32 | o64 | n32 | 64 | eabi)
4838 echo "Unknown ABI used in --with-abi=$with_abi" 1>&2
4843 case ${with_divide} in
4844 "" | breaks | traps)
4848 echo "Unknown division check type use in --with-divide=$with_divide" 1>&2
4853 case ${with_llsc} in
4864 echo "Unknown llsc type used in --with-llsc" 1>&2
4869 case ${with_mips_plt} in
4874 with_mips_plt=no-plt
4879 echo "Unknown --with-mips-plt argument: $with_mips_plt" 1>&2
4884 case ${with_synci} in
4894 echo "Unknown synci type used in --with-synci" 1>&2
4899 case ${with_lxc1_sxc1} in
4901 with_lxc1_sxc1=lxc1-sxc1
4904 with_lxc1_sxc1=no-lxc1-sxc1
4909 echo "Unknown lxc1-sxc1 type used in --with-lxc1-sxc1" 1>&2
4914 case ${with_madd4} in
4924 echo "Unknown madd4 type used in --with-madd4" 1>&2
4931 supported_defaults="arch cpu nds32_lib float fpu_config"
4933 # process --with-arch
4934 case "${with_arch}" in
4936 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
4940 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
4943 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=1"
4946 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=2"
4950 echo "Cannot accept --with-arch=$with_arch, available values are: v2 v2j v3 v3m v3f v3s" 1>&2
4955 case "${with_cpu}" in
4959 n6 | n7 |n8 | e8 | s8 | n9 | n10 | d10 | n12 | n13 | n15)
4963 echo "Cannot accept --with-cpu=$with_cpu, available values are: n6 n7 n8 e8 s8 n9 n10 d10 n12 n13 n15" 1>&2
4968 # process --with-nds32-lib
4969 case "${with_nds32_lib}" in
4973 with_nds32_lib=ulibc
4976 with_nds32_lib=glibc
4979 with_nds32_lib=newlib
4980 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
4986 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
4990 # for the arch=v3f or arch=v3s under mculib toolchain,
4991 # we would like to set -fno-math-errno as default
4992 case "${with_arch}" in
4994 tm_defines="${tm_defines} TARGET_DEFAULT_NO_MATH_ERRNO=1"
5002 echo "Cannot accept --with-nds32-lib=$with_nds32_lib, available values are: newlib mculib glibc uclibc" 1>&2
5007 # process --with-float
5008 case "${with_float}" in
5013 echo "Cannot accept --with-float=$with_float, available values are: soft hard" 1>&2
5018 # process --with-config-fpu
5019 case "${with_config_fpu}" in
5024 echo "Cannot accept --with-config-fpu=$with_config_fpu, available values from 0 to 7" 1>&2
5032 supported_defaults="arch"
5033 case "$with_arch" in
5038 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5044 powerpc*-*-* | rs6000-*-*)
5045 supported_defaults="abi cpu cpu_32 cpu_64 float tune tune_32 tune_64 advance_toolchain"
5047 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5048 eval "val=\$with_$which"
5050 default32 | default64)
5055 echo "$val only valid for --with-cpu and --with-tune." 1>&2
5059 with_which="with_$which"
5063 tm_defines="${tm_defines} CONFIG_PPC405CR"
5064 eval "with_$which=405"
5066 "" | common | native \
5067 | power[3456789] | power10 | power5+ | power6x \
5068 | powerpc | powerpc64 | powerpc64le \
5070 | 401 | 403 | 405 | 405fp | 440 | 440fp | 464 | 464fp \
5071 | 476 | 476fp | 505 | 601 | 602 | 603 | 603e | ec603e \
5072 | 604 | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 \
5073 | a2 | e300c[23] | 854[08] | e500mc | e500mc64 | e5500 | e6500 \
5074 | titan | 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5 | cell)
5078 echo "Unknown cpu used in --with-$which=$val." 1>&2
5085 "" | elfv1 | elfv2 )
5089 echo "Unknown ABI used in --with-abi=$with_abi"
5094 if test "x$with_advance_toolchain" != x; then
5095 if test -d "/opt/$with_advance_toolchain/." -a \
5096 -d "/opt/$with_advance_toolchain/bin/." -a \
5097 -d "/opt/$with_advance_toolchain/include/."; then
5099 tm_file="$tm_file ./advance-toolchain.h"
5100 (at="/opt/$with_advance_toolchain"
5101 echo "/* Use Advance Toolchain $at */"
5103 echo "#undef LINK_OS_EXTRA_SPEC32"
5104 echo "#define LINK_OS_EXTRA_SPEC32" \
5105 "\"%(link_os_new_dtags)" \
5106 "-rpath $prefix/lib -rpath $at/lib\""
5108 echo "#undef LINK_OS_EXTRA_SPEC64"
5109 echo "#define LINK_OS_EXTRA_SPEC64" \
5110 "\"%(link_os_new_dtags)" \
5111 "-rpath $prefix/lib64 -rpath $at/lib64\""
5113 echo "#undef LINK_OS_NEW_DTAGS_SPEC"
5114 echo "#define LINK_OS_NEW_DTAGS_SPEC" \
5115 "\"--enable-new-dtags\""
5117 echo "#undef DYNAMIC_LINKER_PREFIX"
5118 echo "#define DYNAMIC_LINKER_PREFIX \"$at\""
5120 echo "#undef MD_EXEC_PREFIX"
5121 echo "#define MD_EXEC_PREFIX \"$at/bin/\""
5123 echo "#undef MD_STARTFILE_PREFIX"
5124 echo "#define MD_STARTFILE_PREFIX \"$prefix/lib/\""
5126 echo "#undef MD_STARTFILE_PREFIX_1"
5127 echo "#define MD_STARTFILE_PREFIX_1 \"$at/lib/\"") \
5128 > advance-toolchain.h
5130 echo "Unknown advance-toolchain $with_advance_toolchain"
5135 # Set up the default long double format if the user changed it.
5136 if test x$with_long_double_format = xieee; then
5137 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=1"
5139 elif test x$with_long_double_format = xibm; then
5140 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=0"
5145 supported_defaults="arch mode tune"
5147 for which in arch tune; do
5148 eval "val=\$with_$which"
5150 "" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | z15 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12 | arch13 | arch14 )
5154 echo "Unknown cpu used in --with-$which=$val." 1>&2
5160 case ${with_mode} in
5165 echo "Unknown architecture mode used in --with-mode=$with_mode." 1>&2
5171 sh[123456ble]*-*-* | sh-*-*)
5172 supported_defaults="cpu"
5173 case "`echo $with_cpu | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz- | sed s/sh/m/`" in
5174 "" | m1 | m2 | m2e | m3 | m3e | m4 | m4-single | m4-single-only | m4-nofpu )
5177 m2a | m2a-single | m2a-single-only | m2a-nofpu)
5179 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al)
5182 echo "Unknown CPU used in --with-cpu=$with_cpu, known values:" 1>&2
5183 echo "m1 m2 m2e m3 m3e m4 m4-single m4-single-only m4-nofpu" 1>&2
5184 echo "m4a m4a-single m4a-single-only m4a-nofpu m4al" 1>&2
5185 echo "m2a m2a-single m2a-single-only m2a-nofpu" 1>&2
5191 supported_defaults="cpu cpu_32 cpu_64 float tune tune_32 tune_64"
5193 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5194 eval "val=\$with_$which"
5196 "" | sparc | sparcv9 | sparc64 \
5198 | v8 | supersparc | hypersparc | leon | leon3 | leon3v7 \
5199 | sparclite | f930 | f934 | sparclite86x \
5200 | sparclet | tsc701 \
5201 | v9 | ultrasparc | ultrasparc3 | niagara | niagara2 \
5202 | niagara3 | niagara4 | niagara7 | m8)
5206 echo "Unknown cpu used in --with-$which=$val" 1>&2
5212 case ${with_float} in
5217 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
5224 supported_defaults="arch"
5226 case ${with_arch} in
5227 "" | c62x | c64x | c64x+ | c67x | c67x+ | c674x)
5231 echo "Unknown arch used in --with-arch=$with_arch." 1>&2
5238 supported_defaults=cpu
5240 "" | v850e | v850e1 | v850e2 | v850es | v850e2v3 | v850e3v5)
5244 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5250 supported_defaults="cpu"
5254 *) echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5261 # Targets for which there is at least one VxWorks port should include
5262 # vxworks-dummy.h to allow safe references to various TARGET_VXWORKS kinds
5263 # of markers from other files in the port, including the vxworks*.h files to
5264 # distinguish VxWorks variants such as VxWorks 7 or 64).
5267 arm*-*-* | i[34567]86-*-* | mips*-*-* | powerpc*-*-* | sh*-*-* \
5268 | sparc*-*-* | x86_64-*-*)
5269 tm_file="vxworks-dummy.h ${tm_file}"
5273 # Set some miscellaneous flags for particular targets.
5274 target_cpu_default2=
5277 if test x"$target_cpu_cname" != x
5279 target_cpu_default2=$target_cpu_cname
5284 if test x$with_cpu = x
5286 echo "Don't know the target cpu" 1>&2
5289 target_cpu_default2="\\\"$with_cpu\\\""
5294 if test x$gas = xyes
5296 target_cpu_default2="MASK_GAS"
5300 fido*-*-* | m68k*-*-*)
5301 target_cpu_default2=$m68k_cpu_ident
5302 tmake_file="m68k/t-opts $tmake_file"
5303 if [ x"$m68k_arch_family" != x ]; then
5304 tmake_file="m68k/t-$m68k_arch_family $tmake_file"
5308 i[34567]86-*-darwin* | x86_64-*-darwin*)
5310 i[34567]86-*-linux* | x86_64-*-linux*)
5311 extra_objs="${extra_objs} gnu-property.o"
5312 tmake_file="$tmake_file i386/t-linux i386/t-gnu-property"
5314 i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu)
5315 tmake_file="$tmake_file i386/t-kfreebsd"
5318 tmake_file="$tmake_file i386/t-gnu"
5320 i[34567]86-*-msdosdjgpp*)
5321 tmake_file="${tmake_file} i386/t-djgpp"
5323 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
5325 i[34567]86-*-cygwin* | x86_64-*-cygwin*)
5327 i[34567]86-*-mingw* | x86_64-*-mingw*)
5329 i[34567]86-*-dragonfly* | x86_64-*-dragonfly*)
5331 i[34567]86-*-freebsd*)
5334 tmake_file="${tmake_file} i386/t-freebsd64"
5340 if test x$gnu_ld = xyes
5342 target_cpu_default2="MASK_SPLIT_ADDRESSES"
5346 tm_defines="TARGET_ENDIAN_DEFAULT=0 $tm_defines"
5349 if test x$with_arch != x; then
5350 default_mips_arch=$with_arch
5352 if test x$with_abi != x; then
5353 default_mips_abi=$with_abi
5355 case ${default_mips_arch} in
5356 mips1) tm_defines="$tm_defines MIPS_ISA_DEFAULT=1" ;;
5357 mips2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=2" ;;
5358 mips3) tm_defines="$tm_defines MIPS_ISA_DEFAULT=3" ;;
5359 mips4) tm_defines="$tm_defines MIPS_ISA_DEFAULT=4" ;;
5360 mips32) tm_defines="$tm_defines MIPS_ISA_DEFAULT=32" ;;
5361 mips32r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=33" ;;
5362 mips32r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=37" ;;
5363 mips64) tm_defines="$tm_defines MIPS_ISA_DEFAULT=64" ;;
5364 mips64r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=65" ;;
5365 mips64r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=69" ;;
5367 case ${default_mips_abi} in
5368 32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_32" ;;
5369 o64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_O64" ;;
5370 n32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_N32" ;;
5371 64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_64" ;;
5372 eabi) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_EABI" ;;
5374 tmake_file="mips/t-mips $tmake_file"
5377 powerpc*-*-* | rs6000-*-*)
5378 # FIXME: The PowerPC port uses the value set at compile time,
5379 # although it's only cosmetic.
5380 if test "x$with_cpu" != x
5382 target_cpu_default2="\\\"$with_cpu\\\""
5384 out_file="${cpu_type}/${cpu_type}.c"
5385 c_target_objs="${c_target_objs} ${cpu_type}-c.o"
5386 cxx_target_objs="${cxx_target_objs} ${cpu_type}-c.o"
5387 d_target_objs="${d_target_objs} ${cpu_type}-d.o"
5388 tmake_file="${cpu_type}/t-${cpu_type} ${tmake_file}"
5391 sh[123456ble]*-*-* | sh-*-*)
5392 c_target_objs="${c_target_objs} sh-c.o"
5393 cxx_target_objs="${cxx_target_objs} sh-c.o"
5397 # Some standard aliases.
5402 xsparcv9 | xsparc64)
5407 if test x$with_tune = x ; then
5418 # The SPARC port checks this value at compile-time.
5419 target_cpu_default2="TARGET_CPU_$with_cpu"
5423 case "x$with_cpu" in
5426 xv850e | xv850e1 | xv850e2 | xv850e2v3 | xv850e3v5)
5427 target_cpu_default2="TARGET_CPU_$with_cpu"
5430 target_cpu_default2="TARGET_CPU_v850e1"
5435 target_cpu_default2="TARGET_CPU_$with_cpu"
5440 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"
5441 for option in $all_defaults
5443 eval "val=\$with_"`echo $option | sed s/-/_/g`
5444 if test -n "$val"; then
5445 case " $supported_defaults " in
5449 echo "This target does not support --with-$option." 2>&1
5450 echo "Valid --with options are: $supported_defaults" 2>&1
5457 t="{ \"$option\", \"$val\" }"
5459 t="${t}, { \"$option\", \"$val\" }"
5466 configure_default_options="{ { NULL, NULL} }"
5468 configure_default_options="{ ${t} }"
5471 if test "$target_cpu_default2" != ""
5473 if test "$target_cpu_default" != ""
5475 target_cpu_default="(${target_cpu_default}|${target_cpu_default2})"
5477 target_cpu_default=$target_cpu_default2
5482 i[34567]86-*-* | x86_64-*-*)
5483 if test x$enable_as_accelerator = xyes; then
5484 extra_programs="mkoffload\$(exeext)"