]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/config.gcc
Add AMD znver5 processor enablement with scheduler model
[thirdparty/gcc.git] / gcc / config.gcc
1 # SPDX-License-Identifier: GPL-3.0-or-later
2 # GCC target-specific configuration file.
3 # Copyright (C) 1997-2024 Free Software Foundation, Inc.
4
5 #This file is part of GCC.
6
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
10 #version.
11
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
15 #for more details.
16
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/>.
20
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.
26
27 # When you change the cases in the OS or target switches, consider
28 # updating ../libgcc/config.host also.
29
30 # This file switches on the shell variable ${target}, and also uses the
31 # following shell variables:
32 #
33 # with_* Various variables as set by configure.
34 #
35 # enable_threads Either the name, yes or no depending on whether
36 # threads support was requested.
37 #
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.
47 #
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.
57 #
58 # gas_flag Either yes or no depending on whether GNU as was
59 # requested.
60 #
61 # gnu_ld_flag Either yes or no depending on whether GNU ld was
62 # requested.
63
64 # This file sets the following shell variables for use by the
65 # autoconf-generated configure script:
66 #
67 # cpu_type The name of the cpu, if different from the first
68 # chunk of the canonical target name.
69 #
70 # tm_defines List of target macros to define for all compilations.
71 #
72 # tm_file A list of target macro files, if different from
73 # "$cpu_type/$cpu_type.h". Usually it's constructed
74 # per target in a way like this:
75 # tm_file="${tm_file} elfos.h ${cpu_type.h}/elf.h"
76 # Note that the preferred order is:
77 # - specific target header "${cpu_type}/${cpu_type.h}"
78 # - generic headers like elfos.h, etc.
79 # - specializing target headers like ${cpu_type.h}/elf.h
80 # This helps to keep OS specific stuff out of the CPU
81 # defining header ${cpu_type}/${cpu_type.h}.
82 #
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.
86 #
87 # tm_p_file Location of file with declarations for functions
88 # in $out_file.
89 #
90 # tm_d_file A list of headers with definitions of target hook
91 # macros for the D compiler.
92 #
93 # tm_rust_file list of headers with definitions of target hook
94 # macros for the Rust compiler.
95 #
96 # out_file The name of the machine description C support
97 # file, if different from "$cpu_type/$cpu_type.c".
98 #
99 # common_out_file The name of the source file for code shared between
100 # the compiler proper and the driver.
101 #
102 # md_file The name of the machine-description file, if
103 # different from "$cpu_type/$cpu_type.md".
104 #
105 # tmake_file A list of machine-description-specific
106 # makefile-fragments, if different from
107 # "$cpu_type/t-$cpu_type".
108 #
109 # extra_modes The name of the file containing a list of extra
110 # machine modes, if necessary and different from
111 # "$cpu_type/$cpu_type-modes.def".
112 #
113 # extra_objs List of extra objects that should be linked into
114 # the compiler proper (cc1, cc1obj, cc1plus)
115 # depending on target.
116 #
117 # extra_gcc_objs List of extra objects that should be linked into
118 # the compiler driver (gcc) depending on target.
119 #
120 # extra_headers List of used header files from the directory
121 # config/${cpu_type}.
122 #
123 # user_headers_inc_next_pre
124 # List of header file names of internal gcc header
125 # files, which should be prefixed by an include_next.
126 # user_headers_inc_next_post
127 # List of header file names of internal gcc header
128 # files, which should be postfixed by an include_next.
129 # use_gcc_tgmath If set, add tgmath.h to the list of used header
130 # files.
131 #
132 # use_gcc_stdint If "wrap", install a version of stdint.h that
133 # wraps the system's copy for hosted compilations;
134 # if "provide", provide a version of systems without
135 # such a system header; otherwise "none", do not
136 # provide such a header at all.
137 #
138 # extra_programs List of extra executables compiled for this target
139 # machine, used when linking.
140 #
141 # extra_options List of target-dependent .opt files.
142 #
143 # c_target_objs List of extra target-dependent objects that be
144 # linked into the C compiler only.
145 #
146 # cxx_target_objs List of extra target-dependent objects that be
147 # linked into the C++ compiler only.
148 #
149 # d_target_objs List of extra target-dependent objects that be
150 # linked into the D compiler only.
151 #
152 # fortran_target_objs List of extra target-dependent objects that be
153 # linked into the fortran compiler only.
154 #
155 # rust_target_objs List of extra target-dependent objects that be
156 # linked into the Rust compiler only.
157 #
158 # target_gtfiles List of extra source files with type information.
159 #
160 # xm_defines List of macros to define when compiling for the
161 # target machine.
162 #
163 # xm_file List of files to include when compiling for the
164 # target machine.
165 #
166 # use_collect2 Set to yes or no, depending on whether collect2
167 # will be used.
168 #
169 # target_cpu_default Set to override the default target model.
170 #
171 # gdb_needs_out_file_path
172 # Set to yes if gdb needs a dir command with
173 # `dirname $out_file`.
174 #
175 # thread_file Set to control which thread package to use.
176 #
177 # gas Set to yes or no depending on whether the target
178 # system normally uses GNU as.
179 #
180 # configure_default_options
181 # Set to an initializer for configure_default_options
182 # in configargs.h, based on --with-cpu et cetera.
183 #
184 # native_system_header_dir
185 # Where system header files are found for this
186 # target. This defaults to /usr/include. If
187 # the --with-sysroot configure option or the
188 # --sysroot command line option is used this
189 # will be relative to the sysroot.
190 # target_type_format_char
191 # The default character to be used for formatting
192 # the attribute in a
193 # .type symbol_name, ${t_t_f_c}<property>
194 # directive.
195
196 # The following variables are used in each case-construct to build up the
197 # outgoing variables:
198 #
199 # gnu_ld Set to yes or no depending on whether the target
200 # system normally uses GNU ld.
201 #
202 # target_has_targetcm Set to yes or no depending on whether the target
203 # has its own definition of targetcm.
204 #
205 # target_has_targetm_common Set to yes or no depending on whether the
206 # target has its own definition of targetm_common.
207 #
208 # target_has_targetdm Set to yes or no depending on whether the target
209 # has its own definition of targetdm.
210 #
211 # target_has_targetrustm Set to yes or no depending on whether the target
212 # has its own definition of targetrustm.
213
214 out_file=
215 common_out_file=
216 tmake_file=
217 extra_headers=
218 user_headers_inc_next_pre=
219 user_headers_inc_next_post=
220 use_gcc_tgmath=yes
221 use_gcc_stdint=none
222 extra_programs=
223 extra_objs=
224 extra_gcc_objs=
225 extra_options=
226 c_target_objs=
227 cxx_target_objs=
228 d_target_objs=
229 fortran_target_objs=
230 rust_target_objs=
231 target_has_targetcm=no
232 target_has_targetm_common=yes
233 target_has_targetdm=no
234 target_has_targetrustm=no
235 tm_defines=
236 xm_defines=
237 # Set this to force installation and use of collect2.
238 use_collect2=
239 # Set this to override the default target model.
240 target_cpu_default=
241 # Set this if gdb needs a dir command with `dirname $out_file`
242 gdb_needs_out_file_path=
243 # Set this to control which thread package will be used.
244 thread_file=
245 # Reinitialize these from the flag values every loop pass, since some
246 # configure entries modify them.
247 gas="$gas_flag"
248 gnu_ld="$gnu_ld_flag"
249 default_use_cxa_atexit=no
250 default_gnu_indirect_function=no
251 target_gtfiles=
252 need_64bit_isa=
253 native_system_header_dir=/usr/include
254 target_type_format_char='@'
255
256 # Don't carry these over build->host->target. Please.
257 xm_file=
258 md_file=
259
260 # Determine Solaris minor version
261 case ${target}:`uname -v` in
262 # Only do this on Solaris. Illumos uses illumos-* instead.
263 *-*-solaris2.11*:11.*)
264 # Restrict to native configurations.
265 if test x$host = x$target; then
266 uname_version="`uname -v`"
267 # Prepend dot as needed below.
268 target_min=".`expr "$uname_version" : '11\.\([0-9]*\)'`"
269 fi
270 ;;
271 esac
272
273 # Obsolete configurations.
274 case ${target}${target_min} in
275 *-*-solaris2.11.[0-3]* \
276 | ia64*-*-* \
277 )
278 if test "x$enable_obsolete" != xyes; then
279 echo "*** Configuration ${target}${target_min} is obsolete." >&2
280 echo "*** Specify --enable-obsolete to build it anyway." >&2
281 echo "*** Support will be REMOVED in the next major release of GCC," >&2
282 echo "*** unless a maintainer comes forward." >&2
283 exit 1
284 fi;;
285 esac
286
287 # Unsupported targets list. Do not put an entry in this list unless
288 # it would otherwise be caught by a more permissive pattern. The list
289 # should be in alphabetical order.
290 case ${target} in
291 # Avoid special cases that are not obsolete
292 arm*-*-*eabi* \
293 )
294 ;;
295 arm*-wince-pe* \
296 | arm*-*-ecos-elf \
297 | arm*-*-elf \
298 | arm*-*-linux* \
299 | arm*-*-uclinux* \
300 | cris-*-linux* \
301 | crisv32-*-* \
302 | i[34567]86-go32-* \
303 | i[34567]86-*-go32* \
304 | m32r-*-linux* \
305 | m32rle-*-linux* \
306 | m68k*-*-openbsd* \
307 | m68k-*-uclinuxoldabi* \
308 | mips64orion*-*-rtems* \
309 | pdp11-*-bsd \
310 | powerpc*-*-linux*paired* \
311 | powerpc*-*-*spe* \
312 | sparc-hal-solaris2* \
313 | spu*-*-* \
314 | thumb-*-* \
315 | *-*-freebsd[12] | *-*-freebsd[1234].* \
316 | *-*-freebsd*aout* \
317 | *-*-linux*aout* \
318 | *-*-linux*coff* \
319 | *-*-linux*libc1* \
320 | *-*-linux*oldld* \
321 | *-*-rtemsaout* \
322 | *-*-rtemscoff* \
323 | *-*-solaris2 \
324 | *-*-solaris2.[0-9] \
325 | *-*-solaris2.[0-9].* \
326 | *-*-solaris2.10* \
327 | *-*-sysv* \
328 | vax-*-vms* \
329 )
330 echo "*** Configuration ${target} not supported" 1>&2
331 exit 1
332 ;;
333 esac
334
335 # Set default cpu_type, tm_file, tm_p_file and xm_file so it can be
336 # updated in each machine entry. Also set default extra_headers for some
337 # machines.
338 tm_p_file=
339 cpu_type=`echo ${target} | sed 's/-.*$//'`
340 cpu_is_64bit=
341 case ${target} in
342 m32c*-*-*)
343 cpu_type=m32c
344 tmake_file=m32c/t-m32c
345 target_has_targetm_common=no
346 ;;
347 aarch64*-*-*)
348 cpu_type=aarch64
349 extra_headers="arm_fp16.h arm_neon.h arm_bf16.h arm_acle.h arm_sve.h arm_sme.h arm_neon_sve_bridge.h"
350 c_target_objs="aarch64-c.o"
351 cxx_target_objs="aarch64-c.o"
352 d_target_objs="aarch64-d.o"
353 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 aarch64-sve-builtins-sme.o cortex-a57-fma-steering.o aarch64-speculation.o falkor-tag-collision-avoidance.o aarch-bti-insert.o aarch64-cc-fusion.o aarch64-early-ra.o aarch64-ldp-fusion.o"
354 target_gtfiles="\$(srcdir)/config/aarch64/aarch64-builtins.h \$(srcdir)/config/aarch64/aarch64-builtins.cc \$(srcdir)/config/aarch64/aarch64-sve-builtins.h \$(srcdir)/config/aarch64/aarch64-sve-builtins.cc"
355 target_has_targetm_common=yes
356 ;;
357 alpha*-*-*)
358 cpu_type=alpha
359 extra_options="${extra_options} g.opt"
360 ;;
361 amdgcn*)
362 cpu_type=gcn
363 use_gcc_stdint=wrap
364 ;;
365 am33_2.0-*-linux*)
366 cpu_type=mn10300
367 ;;
368 arc*-*-*)
369 cpu_type=arc
370 c_target_objs="arc-c.o"
371 cxx_target_objs="arc-c.o"
372 extra_options="${extra_options} arc/arc-tables.opt g.opt"
373 extra_headers="arc-simd.h"
374 ;;
375 arm*-*-*)
376 cpu_type=arm
377 extra_objs="arm-builtins.o arm-mve-builtins.o arm-mve-builtins-shapes.o arm-mve-builtins-base.o aarch-common.o aarch-bti-insert.o"
378 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"
379 target_type_format_char='%'
380 c_target_objs="arm-c.o"
381 cxx_target_objs="arm-c.o"
382 d_target_objs="arm-d.o"
383 extra_options="${extra_options} arm/arm-tables.opt"
384 target_gtfiles="\$(srcdir)/config/arm/arm-builtins.cc \$(srcdir)/config/arm/arm-mve-builtins.h \$(srcdir)/config/arm/arm-mve-builtins.cc"
385 ;;
386 avr-*-*)
387 cpu_type=avr
388 c_target_objs="avr-c.o"
389 cxx_target_objs="avr-c.o"
390 ;;
391 bfin*-*)
392 cpu_type=bfin
393 ;;
394 bpf-*-*)
395 cpu_type=bpf
396 ;;
397 frv*) cpu_type=frv
398 extra_options="${extra_options} g.opt"
399 ;;
400 ft32*) cpu_type=ft32
401 target_has_targetm_common=no
402 ;;
403 moxie*) cpu_type=moxie
404 target_has_targetm_common=no
405 ;;
406 fido-*-*)
407 cpu_type=m68k
408 extra_headers=math-68881.h
409 extra_options="${extra_options} m68k/m68k-tables.opt"
410 ;;
411 i[34567]86-*-* | x86_64-*-*)
412 cpu_type=i386
413 c_target_objs="i386-c.o"
414 cxx_target_objs="i386-c.o"
415 d_target_objs="i386-d.o"
416 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"
417 target_gtfiles="\$(srcdir)/config/i386/i386-builtins.cc \$(srcdir)/config/i386/i386-expand.cc \$(srcdir)/config/i386/i386-options.cc"
418 extra_options="${extra_options} fused-madd.opt"
419 extra_headers="cpuid.h mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h
420 pmmintrin.h tmmintrin.h ammintrin.h smmintrin.h
421 nmmintrin.h bmmintrin.h fma4intrin.h wmmintrin.h
422 immintrin.h x86intrin.h avxintrin.h xopintrin.h
423 ia32intrin.h cross-stdarg.h lwpintrin.h popcntintrin.h
424 lzcntintrin.h bmiintrin.h bmi2intrin.h tbmintrin.h
425 avx2intrin.h avx512fintrin.h fmaintrin.h f16cintrin.h
426 rtmintrin.h xtestintrin.h rdseedintrin.h prfchwintrin.h
427 adxintrin.h fxsrintrin.h xsaveintrin.h xsaveoptintrin.h
428 avx512cdintrin.h avx512erintrin.h avx512pfintrin.h
429 shaintrin.h clflushoptintrin.h xsavecintrin.h
430 xsavesintrin.h avx512dqintrin.h avx512bwintrin.h
431 avx512vlintrin.h avx512vlbwintrin.h avx512vldqintrin.h
432 avx512ifmaintrin.h avx512ifmavlintrin.h avx512vbmiintrin.h
433 avx512vbmivlintrin.h avx5124fmapsintrin.h avx5124vnniwintrin.h
434 avx512vpopcntdqintrin.h clwbintrin.h mwaitxintrin.h
435 clzerointrin.h pkuintrin.h sgxintrin.h cetintrin.h
436 gfniintrin.h cet.h avx512vbmi2intrin.h
437 avx512vbmi2vlintrin.h avx512vnniintrin.h
438 avx512vnnivlintrin.h vaesintrin.h vpclmulqdqintrin.h
439 avx512vpopcntdqvlintrin.h avx512bitalgintrin.h
440 avx512bitalgvlintrin.h pconfigintrin.h wbnoinvdintrin.h
441 movdirintrin.h waitpkgintrin.h cldemoteintrin.h
442 avx512bf16vlintrin.h avx512bf16intrin.h enqcmdintrin.h
443 serializeintrin.h avx512vp2intersectintrin.h
444 avx512vp2intersectvlintrin.h tsxldtrkintrin.h
445 amxtileintrin.h amxint8intrin.h amxbf16intrin.h
446 x86gprintrin.h uintrintrin.h hresetintrin.h
447 keylockerintrin.h avxvnniintrin.h mwaitintrin.h
448 avx512fp16intrin.h avx512fp16vlintrin.h avxifmaintrin.h
449 avxvnniint8intrin.h avxneconvertintrin.h
450 cmpccxaddintrin.h amxfp16intrin.h prfchiintrin.h
451 raointintrin.h amxcomplexintrin.h avxvnniint16intrin.h
452 sm3intrin.h sha512intrin.h sm4intrin.h
453 usermsrintrin.h"
454 ;;
455 ia64-*-*)
456 extra_headers=ia64intrin.h
457 extra_options="${extra_options} g.opt fused-madd.opt"
458 ;;
459 hppa*-*-*)
460 cpu_type=pa
461 ;;
462 lm32*)
463 extra_options="${extra_options} g.opt"
464 ;;
465 m32r*-*-*)
466 cpu_type=m32r
467 extra_options="${extra_options} g.opt"
468 ;;
469 m68k-*-*)
470 extra_headers=math-68881.h
471 extra_options="${extra_options} m68k/m68k-tables.opt"
472 ;;
473 microblaze*-*-*)
474 cpu_type=microblaze
475 extra_options="${extra_options} g.opt"
476 ;;
477 mips*-*-*)
478 cpu_type=mips
479 d_target_objs="mips-d.o"
480 extra_headers="loongson.h loongson-mmiintrin.h msa.h"
481 extra_objs="frame-header-opt.o"
482 extra_options="${extra_options} g.opt fused-madd.opt mips/mips-tables.opt"
483 ;;
484 loongarch*-*-*)
485 cpu_type=loongarch
486 d_target_objs="loongarch-d.o"
487 extra_headers="larchintrin.h lsxintrin.h lasxintrin.h"
488 extra_objs="loongarch-c.o loongarch-builtins.o loongarch-cpu.o loongarch-opts.o loongarch-def.o"
489 extra_gcc_objs="loongarch-driver.o loongarch-cpu.o loongarch-opts.o loongarch-def.o"
490 extra_options="${extra_options} g.opt fused-madd.opt"
491 ;;
492 nds32*)
493 cpu_type=nds32
494 extra_headers="nds32_intrinsic.h nds32_isr.h nds32_init.inc"
495 case ${target} in
496 nds32*-*-linux*)
497 extra_options="${extra_options} nds32/nds32-linux.opt"
498 ;;
499 nds32*-*-elf*)
500 extra_options="${extra_options} nds32/nds32-elf.opt"
501 ;;
502 *)
503 ;;
504 esac
505 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"
506 ;;
507 nios2-*-*)
508 cpu_type=nios2
509 extra_options="${extra_options} g.opt"
510 ;;
511 nvptx-*-*)
512 cpu_type=nvptx
513 c_target_objs="nvptx-c.o"
514 cxx_target_objs="nvptx-c.o"
515 extra_options="${extra_options} nvptx/nvptx-gen.opt"
516 ;;
517 or1k*-*-*)
518 cpu_type=or1k
519 ;;
520 powerpc*-*-*)
521 cpu_type=rs6000
522 extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
523 extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o"
524 extra_objs="${extra_objs} rs6000-builtins.o rs6000-builtin.o"
525 extra_headers="ppc-asm.h altivec.h htmintrin.h htmxlintrin.h"
526 extra_headers="${extra_headers} bmi2intrin.h bmiintrin.h"
527 extra_headers="${extra_headers} xmmintrin.h mm_malloc.h emmintrin.h"
528 extra_headers="${extra_headers} mmintrin.h x86intrin.h"
529 extra_headers="${extra_headers} pmmintrin.h tmmintrin.h smmintrin.h"
530 extra_headers="${extra_headers} nmmintrin.h immintrin.h x86gprintrin.h"
531 extra_headers="${extra_headers} ppu_intrinsics.h spu2vmx.h vec_types.h si2vmx.h"
532 extra_headers="${extra_headers} amo.h"
533 case x$with_cpu in
534 xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[3456789]|xpower10|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|xe6500)
535 cpu_is_64bit=yes
536 ;;
537 esac
538 extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
539 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.cc \$(srcdir)/config/rs6000/rs6000-call.cc"
540 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-pcrel-opt.cc"
541 target_gtfiles="$target_gtfiles ./rs6000-builtins.h"
542 ;;
543 pru-*-*)
544 cpu_type=pru
545 ;;
546 riscv*)
547 cpu_type=riscv
548 extra_objs="riscv-builtins.o riscv-c.o riscv-sr.o riscv-shorten-memrefs.o riscv-selftests.o riscv-string.o"
549 extra_objs="${extra_objs} riscv-v.o riscv-vsetvl.o riscv-vector-costs.o riscv-avlprop.o"
550 extra_objs="${extra_objs} riscv-vector-builtins.o riscv-vector-builtins-shapes.o riscv-vector-builtins-bases.o"
551 extra_objs="${extra_objs} thead.o riscv-target-attr.o"
552 d_target_objs="riscv-d.o"
553 extra_headers="riscv_vector.h riscv_crypto.h riscv_bitmanip.h riscv_th_vector.h"
554 target_gtfiles="$target_gtfiles \$(srcdir)/config/riscv/riscv-vector-builtins.cc"
555 target_gtfiles="$target_gtfiles \$(srcdir)/config/riscv/riscv-vector-builtins.h"
556 ;;
557 rs6000*-*-*)
558 extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
559 extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
560 extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o"
561 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.cc \$(srcdir)/config/rs6000/rs6000-call.cc"
562 target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-pcrel-opt.cc"
563 ;;
564 sparc*-*-*)
565 cpu_type=sparc
566 c_target_objs="sparc-c.o"
567 cxx_target_objs="sparc-c.o"
568 d_target_objs="sparc-d.o"
569 extra_headers="visintrin.h"
570 ;;
571 s390*-*-*)
572 cpu_type=s390
573 d_target_objs="s390-d.o"
574 extra_options="${extra_options} fused-madd.opt"
575 extra_headers="s390intrin.h htmintrin.h htmxlintrin.h vecintrin.h"
576 target_gtfiles="./s390-gen-builtins.h"
577 ;;
578 # Note the 'l'; we need to be able to match e.g. "shle" or "shl".
579 sh[123456789lbe]*-*-* | sh-*-*)
580 cpu_type=sh
581 extra_options="${extra_options} fused-madd.opt"
582 extra_objs="${extra_objs} sh_treg_combine.o sh-mem.o sh_optimize_sett_clrt.o"
583 ;;
584 v850*-*-*)
585 cpu_type=v850
586 ;;
587 tic6x-*-*)
588 cpu_type=c6x
589 extra_headers="c6x_intrinsics.h"
590 extra_options="${extra_options} c6x/c6x-tables.opt"
591 ;;
592 xtensa*-*-*)
593 extra_options="${extra_options} fused-madd.opt"
594 extra_objs="xtensa-dynconfig.o"
595 ;;
596 esac
597
598 tm_file=${cpu_type}/${cpu_type}.h
599 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-protos.h
600 then
601 tm_p_file=${cpu_type}/${cpu_type}-protos.h
602 fi
603
604 tm_d_file=
605 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-d.h
606 then
607 tm_d_file="${tm_d_file} ${cpu_type}/${cpu_type}-d.h"
608 fi
609
610 tm_rust_file=
611 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-rust.h
612 then
613 tm_rust_file="${cpu_type}/${cpu_type}-rust.h"
614 fi
615 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-rust.cc
616 then
617 rust_target_objs="${rust_target_objs} ${cpu_type}-rust.o"
618 fi
619
620 extra_modes=
621 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-modes.def
622 then
623 extra_modes=${cpu_type}/${cpu_type}-modes.def
624 fi
625 if test -f ${srcdir}/config/${cpu_type}/${cpu_type}.opt
626 then
627 extra_options="${extra_options} ${cpu_type}/${cpu_type}.opt"
628 fi
629
630 case ${target} in
631 aarch64*-*-*)
632 tm_p_file="${tm_p_file} arm/aarch-common-protos.h"
633 case ${with_abi} in
634 "")
635 if test "x$with_multilib_list" = xilp32; then
636 tm_file="aarch64/biarchilp32.h ${tm_file}"
637 else
638 tm_file="aarch64/biarchlp64.h ${tm_file}"
639 fi
640 ;;
641 ilp32)
642 tm_file="aarch64/biarchilp32.h ${tm_file}"
643 ;;
644 lp64)
645 tm_file="aarch64/biarchlp64.h ${tm_file}"
646 ;;
647 *)
648 echo "Unknown ABI used in --with-abi=$with_abi"
649 exit 1
650 esac
651 ;;
652 i[34567]86-*-*)
653 if test "x$with_abi" != x; then
654 echo "This target does not support --with-abi."
655 exit 1
656 fi
657 ;;
658 x86_64-*-darwin*)
659 ;;
660 x86_64-*-*)
661 case ${with_abi} in
662 "")
663 if test "x$with_multilib_list" = xmx32; then
664 tm_file="i386/biarchx32.h ${tm_file}"
665 else
666 tm_file="i386/biarch64.h ${tm_file}"
667 fi
668 ;;
669 64 | m64)
670 tm_file="i386/biarch64.h ${tm_file}"
671 ;;
672 x32 | mx32)
673 tm_file="i386/biarchx32.h ${tm_file}"
674 ;;
675 *)
676 echo "Unknown ABI used in --with-abi=$with_abi"
677 exit 1
678 esac
679 ;;
680 arm*-*-*)
681 tm_p_file="arm/arm-flags.h ${tm_p_file} arm/aarch-common-protos.h"
682 ;;
683 esac
684
685 # On a.out targets, we need to use collect2.
686 case ${target} in
687 *-*-*aout*)
688 use_collect2=yes
689 ;;
690 esac
691
692 # Common C libraries.
693 tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
694
695 # 32-bit x86 processors supported by --with-arch=. Each processor
696 # MUST be separated by exactly one space.
697 x86_archs="athlon athlon-4 athlon-fx athlon-mp athlon-tbird \
698 athlon-xp k6 k6-2 k6-3 geode c3 c3-2 winchip-c6 winchip2 i386 i486 \
699 i586 i686 pentium pentium-m pentium-mmx pentium2 pentium3 pentium3m \
700 pentium4 pentium4m pentiumpro prescott lakemont samuel-2 nehemiah \
701 c7 esther"
702
703 # 64-bit x86 processors supported by --with-arch=. Each processor
704 # MUST be separated by exactly one space.
705 x86_64_archs="amdfam10 athlon64 athlon64-sse3 barcelona bdver1 bdver2 \
706 bdver3 bdver4 znver1 znver2 znver3 znver4 znver5 btver1 btver2 k8 k8-sse3 \
707 opteron opteron-sse3 nocona core2 corei7 corei7-avx core-avx-i core-avx2 \
708 atom slm nehalem westmere sandybridge ivybridge haswell broadwell bonnell \
709 silvermont knl knm skylake-avx512 cannonlake icelake-client icelake-server \
710 skylake goldmont goldmont-plus tremont cascadelake tigerlake cooperlake \
711 sapphirerapids alderlake rocketlake eden-x2 nano nano-1000 nano-2000 nano-3000 \
712 nano-x2 eden-x4 nano-x4 lujiazui yongfeng x86-64 x86-64-v2 x86-64-v3 x86-64-v4 \
713 sierraforest graniterapids graniterapids-d grandridge arrowlake arrowlake-s \
714 clearwaterforest pantherlake native"
715
716 # Additional x86 processors supported by --with-cpu=. Each processor
717 # MUST be separated by exactly one space.
718 x86_cpus="generic intel"
719
720 # Common parts for widely ported systems.
721 case ${target} in
722 *-*-darwin*)
723 tmake_file="t-darwin "
724 tm_file="${tm_file} darwin.h"
725 darwin_os=`echo ${target} | sed 's/.*darwin\([0-9.]*\).*$/\1/'`
726 darwin_maj=`expr "$darwin_os" : '\([0-9]*\).*'`
727 macos_min=`expr "$darwin_os" : '[0-9]*\.\([0-9]*\).*'`
728 macos_maj=10
729 if test x"${macos_min}" = x; then
730 macos_min=0
731 fi
732 def_ld64=85.2
733 # Tools hosted on earlier versions of Darwin constrained all object
734 # alignment to be 2^15 or smaller. From Darwin11 (macOS 10.7) the
735 # alignment of non-common is allowed to be up to 2^28. Note that the
736 # larger alignment is permitted when targeting 10.6 from 10.7 so that
737 # the constraint only need be applied per host (and only if the host
738 # is Darwin).
739 case ${host} in
740 *-*-darwin[4-9]* | *-*-darwin10*)
741 tm_defines="$tm_defines L2_MAX_OFILE_ALIGNMENT=15U"
742 ;;
743 *)
744 tm_defines="$tm_defines L2_MAX_OFILE_ALIGNMENT=28U"
745 ;;
746 esac
747 case ${target} in
748 # Darwin 4 to 19 correspond to macOS 10.0 to 10.15
749 *-*-darwin[4-9]* | *-*-darwin1[0-9]*)
750 macos_min=`expr $darwin_maj - 4`
751 ;;
752 *-*-darwin2*)
753 # Darwin 20 corresponds to macOS 11, Darwin 21 to macOS 12.
754 macos_maj=`expr $darwin_maj - 9`
755 def_ld64=609.0
756 ;;
757 *-*-darwin)
758 case ${cpu_type} in
759 aarch64) macos_maj=11 ;;
760 x86_64) macos_min=6 ;;
761 *) macos_min=5 ;;
762 esac
763 case ${host} in
764 *-*-darwin*) tm_defines="$tm_defines DARWIN_USE_KERNEL_VERS" ;;
765 *)
766 # If configuring a cross-compiler then we will have set some
767 # default above, but it is probably not what was intended.
768 echo "Warning: Using ${target} is only suitable for Darwin hosts" 1>&2
769 echo "configure with an explicit target version" 1>&2
770 ;;
771 esac
772 ;;
773 *)
774 echo "Error: configuring for an unreleased macOS version ${target}" 1>&2
775 exit 1
776 ;;
777 esac
778 tm_defines="$tm_defines DEF_MIN_OSX_VERSION=\\\"${macos_maj}.${macos_min}\\\""
779 tm_defines="$tm_defines DEF_LD64=\\\"${def_ld64}\\\""
780 tm_file="${tm_file} ${cpu_type}/darwin.h"
781 tm_p_file="${tm_p_file} darwin-protos.h"
782 target_gtfiles="$target_gtfiles \$(srcdir)/config/darwin.cc"
783 extra_options="${extra_options} rpath.opt darwin.opt"
784 c_target_objs="${c_target_objs} darwin-c.o"
785 cxx_target_objs="${cxx_target_objs} darwin-c.o"
786 d_target_objs="${d_target_objs} darwin-d.o"
787 fortran_target_objs="darwin-f.o"
788 rust_target_objs="${rust_target_objs} darwin-rust.o"
789 target_has_targetcm=yes
790 target_has_targetdm=yes
791 target_has_targetrustm=yes
792 extra_objs="${extra_objs} darwin.o"
793 extra_gcc_objs="darwin-driver.o"
794 default_use_cxa_atexit=yes
795 use_gcc_stdint=wrap
796 case ${enable_threads} in
797 "" | yes | posix) thread_file='posix' ;;
798 esac
799 ;;
800 *-*-dragonfly*)
801 gas=yes
802 gnu_ld=yes
803 tmake_file="t-slibgcc"
804 case ${enable_threads} in
805 "" | yes | posix)
806 thread_file='posix'
807 ;;
808 no | single)
809 # Let these non-posix thread selections fall through if requested
810 ;;
811 *)
812 echo 'Unknown thread configuration for DragonFly BSD'
813 exit 1
814 ;;
815 esac
816 extra_options="$extra_options rpath.opt dragonfly.opt"
817 default_use_cxa_atexit=yes
818 use_gcc_stdint=wrap
819 d_target_objs="${d_target_objs} dragonfly-d.o"
820 tmake_file="${tmake_file} t-dragonfly"
821 target_has_targetdm=yes
822 rust_target_objs="${rust_target_objs} dragonfly-rust.o"
823 target_has_targetrustm=yes
824 ;;
825 *-*-freebsd*)
826 # This is the generic ELF configuration of FreeBSD. Later
827 # machine-specific sections may refine and add to this
828 # configuration.
829 #
830 # Due to tm_file entry ordering issues that vary between cpu
831 # architectures, we only define fbsd_tm_file to allow the
832 # machine-specific section to dictate the final order of all
833 # entries of tm_file with the minor exception that components
834 # of the tm_file set here will always be of the form:
835 #
836 # freebsd<version_number>.h [freebsd-<conf_option>.h ...] freebsd-spec.h freebsd.h
837 #
838 # The machine-specific section should not tamper with this
839 # ordering but may order all other entries of tm_file as it
840 # pleases around the provided core setting.
841 gas=yes
842 gnu_ld=yes
843 fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
844 if test "$fbsd_major" = ""; then
845 echo "Specify the major version number of the targeted FreeBSD release"
846 echo "like this: --target=amd64-unknown-freebsd10.1"
847 exit 1
848 fi
849 tm_defines="${tm_defines} FBSD_MAJOR=${fbsd_major}"
850 tmake_file="t-slibgcc"
851 case ${enable_threads} in
852 no)
853 fbsd_tm_file="${fbsd_tm_file} freebsd-nthr.h"
854 ;;
855 "" | yes | posix)
856 thread_file='posix'
857 ;;
858 *)
859 echo 'Unknown thread configuration for FreeBSD'
860 exit 1
861 ;;
862 esac
863 fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h freebsd-stdint.h"
864 extra_options="$extra_options rpath.opt freebsd.opt"
865 case ${target} in
866 *-*-freebsd[345].*)
867 :;;
868 *)
869 default_use_cxa_atexit=yes;;
870 esac
871 use_gcc_stdint=wrap
872 d_target_objs="${d_target_objs} freebsd-d.o"
873 tmake_file="${tmake_file} t-freebsd"
874 target_has_targetdm=yes
875 rust_target_objs="${rust_target_objs} freebsd-rust.o"
876 target_has_targetrustm=yes
877 ;;
878 *-*-fuchsia*)
879 native_system_header_dir=/include
880 tmake_file="t-fuchsia"
881 rust_target_objs="${rust_target_objs} fuchsia-rust.o"
882 target_has_targetrustm=yes
883 ;;
884 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi)
885 extra_options="$extra_options gnu-user.opt"
886 gas=yes
887 gnu_ld=yes
888 case ${enable_threads} in
889 "" | yes | posix) thread_file='posix' ;;
890 esac
891 tmake_file="t-slibgcc"
892 case $target in
893 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
894 :;;
895 *-*-gnu*)
896 native_system_header_dir=/include
897 ;;
898 esac
899 # Linux C libraries selection switch: glibc / uclibc / bionic.
900 # uclibc and bionic aren't usable for GNU/Hurd and neither for GNU/k*BSD.
901 case $target in
902 *linux*)
903 tm_p_file="${tm_p_file} linux-protos.h"
904 tmake_file="${tmake_file} t-linux"
905 extra_objs="${extra_objs} linux.o"
906 extra_options="${extra_options} linux.opt"
907 ;;
908 esac
909 case $target in
910 *-*-*android*)
911 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC"
912 ;;
913 *-*-*uclibc* | *-*-uclinuxfdpiceabi)
914 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
915 ;;
916 *-*-*musl*)
917 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
918 ;;
919 *)
920 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
921 ;;
922 esac
923 # Assume that glibc or uClibc or Bionic are being used and so __cxa_atexit
924 # is provided.
925 default_use_cxa_atexit=yes
926 use_gcc_tgmath=no
927 use_gcc_stdint=wrap
928 # Enable compilation for Android by default for *android* targets.
929 case $target in
930 *-*-*android*)
931 tm_defines="$tm_defines ANDROID_DEFAULT=1"
932 ;;
933 *)
934 tm_defines="$tm_defines ANDROID_DEFAULT=0"
935 ;;
936 esac
937 c_target_objs="${c_target_objs} glibc-c.o"
938 cxx_target_objs="${cxx_target_objs} glibc-c.o"
939 tmake_file="${tmake_file} t-glibc"
940 target_has_targetcm=yes
941 case $target in
942 *-*-*uclibc* | *-*-uclinuxfdpiceabi)
943 ;;
944 *)
945 # Linux targets always support .init_array.
946 gcc_cv_initfini_array=yes
947 ;;
948 esac
949 case $target in
950 *-*-*linux*)
951 d_target_objs="${d_target_objs} linux-d.o"
952 target_has_targetdm=yes
953 rust_target_objs="${rust_target_objs} linux-rust.o"
954 target_has_targetrustm=yes
955 ;;
956 *-*-kfreebsd*-gnu)
957 d_target_objs="${d_target_objs} kfreebsd-d.o"
958 target_has_targetdm=yes
959 ;;
960 *-*-kopensolaris*-gnu)
961 d_target_objs="${d_target_objs} kopensolaris-d.o"
962 target_has_targetdm=yes
963 ;;
964 *-*-gnu*)
965 d_target_objs="${d_target_objs} gnu-d.o"
966 target_has_targetdm=yes
967 ;;
968 esac
969 ;;
970 *-*-netbsd*)
971 tm_p_file="${tm_p_file} netbsd-protos.h"
972 tmake_file="t-netbsd t-slibgcc"
973 extra_objs="${extra_objs} netbsd.o"
974 d_target_objs="${d_target_objs} netbsd-d.o"
975 gas=yes
976 gnu_ld=yes
977 use_gcc_stdint=wrap
978 case ${enable_threads} in
979 "" | yes | posix) thread_file='posix' ;;
980 esac
981 nbsd_tm_file="netbsd.h netbsd-stdint.h netbsd-elf.h"
982 default_use_cxa_atexit=yes
983 target_has_targetdm=yes
984 case ${target} in
985 arm*-* | i[34567]86-* | powerpc*-* | sparc*-* | x86_64-*)
986 default_gnu_indirect_function=yes
987 ;;
988 esac
989 rust_target_objs="${rust_target_objs} netbsd-rust.o"
990 target_has_targetrustm=yes
991 ;;
992 *-*-openbsd*)
993 tmake_file="t-openbsd"
994 case ${enable_threads} in
995 yes)
996 thread_file='posix'
997 ;;
998 esac
999 case ${target} in
1000 *-*-openbsd4.[3-9]|*-*-openbsd[5-9]*)
1001 default_use_cxa_atexit=yes
1002 ;;
1003 esac
1004 d_target_objs="${d_target_objs} openbsd-d.o"
1005 target_has_targetdm=yes
1006 rust_target_objs="${rust_target_objs} openbsd-rust.o"
1007 target_has_targetrustm=yes
1008 ;;
1009 *-*-phoenix*)
1010 gas=yes
1011 gnu_ld=yes
1012 default_use_cxa_atexit=yes
1013 ;;
1014 *-*-rtems*)
1015 case ${enable_threads} in
1016 "" | yes | rtems) thread_file='rtems' ;;
1017 posix) thread_file='posix' ;;
1018 no) ;;
1019 *)
1020 echo 'Unknown thread configuration for RTEMS'
1021 exit 1
1022 ;;
1023 esac
1024 tmake_file="${tmake_file} t-rtems"
1025 extra_options="${extra_options} rtems.opt"
1026 default_use_cxa_atexit=yes
1027 use_gcc_stdint=wrap
1028 ;;
1029 *-*-uclinux*)
1030 extra_options="$extra_options gnu-user.opt"
1031 use_gcc_stdint=wrap
1032 case ${enable_threads} in
1033 "" | yes | posix) thread_file='posix' ;;
1034 esac
1035 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC SINGLE_LIBC"
1036 ;;
1037 *-*-rdos*)
1038 use_gcc_stdint=wrap
1039 ;;
1040 *-*-solaris2*)
1041 # i?86-*-solaris2* needs to insert headers between cpu default and
1042 # Solaris 2 specific ones.
1043 sol2_tm_file_head="elfos.h ${cpu_type}/sysv4.h"
1044 sol2_tm_file_tail="${cpu_type}/sol2.h sol2.h"
1045 sol2_tm_file="${sol2_tm_file_head} ${sol2_tm_file_tail}"
1046 case ${target} in
1047 *-*-solaris2.1[1-9]*)
1048 # __cxa_atexit was introduced in Solaris 11.4.
1049 default_use_cxa_atexit=yes
1050 ;;
1051 esac
1052 use_gcc_stdint=wrap
1053 if test x$gnu_ld = xyes; then
1054 tm_file="usegld.h ${tm_file}"
1055 fi
1056 if test x$gas = xyes; then
1057 tm_file="usegas.h ${tm_file}"
1058 fi
1059 tm_p_file="${tm_p_file} sol2-protos.h"
1060 tmake_file="${tmake_file} t-sol2 t-slibgcc"
1061 c_target_objs="${c_target_objs} sol2-c.o"
1062 cxx_target_objs="${cxx_target_objs} sol2-c.o sol2-cxx.o"
1063 d_target_objs="${d_target_objs} sol2-d.o"
1064 extra_objs="${extra_objs} sol2.o sol2-stubs.o"
1065 extra_options="${extra_options} sol2.opt"
1066 case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
1067 "":yes:* | yes:yes:* )
1068 thread_file=posix
1069 ;;
1070 esac
1071 target_has_targetdm=yes
1072 rust_target_objs="${rust_target_objs} sol2-rust.o"
1073 target_has_targetrustm=yes
1074 ;;
1075 *-*-*vms*)
1076 extra_options="${extra_options} vms/vms.opt"
1077 xmake_file=vms/x-vms
1078 tmake_file="vms/t-vms t-slibgcc"
1079 extra_objs="vms.o"
1080 target_gtfiles="$target_gtfiles \$(srcdir)/config/vms/vms.cc"
1081 tm_p_file="${tm_p_file} vms/vms-protos.h"
1082 xm_file="vms/xm-vms.h"
1083 c_target_objs="vms-c.o"
1084 cxx_target_objs="vms-c.o"
1085 fortran_target_objs="vms-f.o"
1086 use_gcc_stdint=provide
1087 tm_file="${tm_file} vms/vms-stdint.h"
1088 if test x$gnu_ld != xyes; then
1089 # Build wrappers for native case.
1090 extra_programs="ld\$(exeext) ar\$(exeext)"
1091 tmake_file="$tmake_file vms/t-vmsnative"
1092 fi
1093 ;;
1094 *-*-vxworks*)
1095 tmake_file=t-vxworks
1096 xm_defines=POSIX
1097
1098 extra_options="${extra_options} vxworks.opt"
1099 extra_objs="$extra_objs vxworks.o"
1100
1101 c_target_objs="${c_target_objs} vxworks-c.o"
1102 cxx_target_objs="${cxx_target_objs} vxworks-c.o"
1103 extra_headers="${extra_headers} ../vxworks/vxworks-predef.h"
1104 target_has_targetcm="yes"
1105
1106 rust_target_objs="${rust_target_objs} vxworks-rust.o"
1107 target_has_targetrustm=yes
1108
1109 extra_gcc_objs="vxworks-driver.o"
1110
1111 # This private header exposes a consistent interface for checks on
1112 # the VxWorks version our runtime header files need to perform, based on
1113 # what the system headers adverstise:
1114
1115 extra_headers="${extra_headers} ../vxworks/_vxworks-versions.h"
1116
1117 # Starting from VxWorks 7, the system comes with a Dinkumware
1118 # environment which requires the inclusion of "yvals.h" before other
1119 # system headers. We provide wrapped versions of a few headers to
1120 # accomodate such constraints:
1121
1122 extra_headers="${extra_headers} ../vxworks/_yvals.h"
1123 extra_headers="${extra_headers} ../vxworks/_yvals-wrapper.h"
1124
1125 extra_headers="${extra_headers} ../vxworks/math.h ../vxworks/complex.h"
1126 extra_headers="${extra_headers} ../vxworks/inttypes.h ../vxworks/setjmp.h"
1127
1128 # We provide (a tailored version of) stdint.h
1129 tm_file="${tm_file} vxworks-stdint.h"
1130 use_gcc_stdint=provide
1131
1132 case ${enable_threads} in
1133 no) ;;
1134 "" | yes | vxworks) thread_file='vxworks' ;;
1135 *) echo 'Unknown thread configuration for VxWorks'; exit 1 ;;
1136 esac
1137
1138 # A few common macro definitions conveying general characteristics
1139 # of the configuration at hand. Note that by VxWorks 7, we mean the
1140 # the SR6xx major update or beyond in vendor parlance:
1141
1142 case $target in
1143 *-*-vxworks7*)
1144 tm_defines="$tm_defines TARGET_VXWORKS7=1"
1145 ;;
1146 esac
1147 case $target in
1148 *64-*-vxworks*)
1149 tm_defines="$tm_defines TARGET_VXWORKS64=1"
1150 ;;
1151 esac
1152
1153 # Then a few build configuration controls for VxWorks 7, which
1154 # has specificities on top of which we aim to provide more complete
1155 # C++ support:
1156
1157 case $target in
1158 *-*-vxworks7*)
1159 # VxWorks 7 always has init/fini_array support and it is simpler to
1160 # just leverage this, sticking to what the system toolchain does:
1161 gcc_cv_initfini_array=yes
1162 ;;
1163 esac
1164 ;;
1165 *-*-elf|arc*-*-elf*)
1166 # Assume that newlib is being used and so __cxa_atexit is provided.
1167 default_use_cxa_atexit=yes
1168 use_gcc_stdint=wrap
1169
1170 case "${with_newlib}-${with_headers}" in
1171 no-no) use_gcc_stdint=provide ;;
1172 *) ;;
1173 esac
1174 ;;
1175 esac
1176
1177 # Figure out if we need to enable heap trampolines by default
1178 case ${target} in
1179 *-*-darwin2*)
1180 # Currently, we do this for macOS 11 and above.
1181 tm_defines="$tm_defines HEAP_TRAMPOLINES_INIT=1"
1182 ;;
1183 *)
1184 tm_defines="$tm_defines HEAP_TRAMPOLINES_INIT=0"
1185 ;;
1186 esac
1187
1188 case ${target} in
1189 aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
1190 tm_file="${tm_file} elfos.h newlib-stdint.h"
1191 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-elf-raw.h"
1192 tmake_file="${tmake_file} aarch64/t-aarch64"
1193 case $target in
1194 aarch64-*-elf*)
1195 use_gcc_stdint=wrap
1196 ;;
1197 aarch64-*-fuchsia*)
1198 tm_file="${tm_file} fuchsia.h"
1199 ;;
1200 aarch64-*-rtems*)
1201 tm_file="${tm_file} aarch64/rtems.h rtems.h"
1202 ;;
1203 esac
1204 case $target in
1205 aarch64_be-*)
1206 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1207 ;;
1208 esac
1209 aarch64_multilibs="${with_multilib_list}"
1210 if test "$aarch64_multilibs" = "default"; then
1211 aarch64_multilibs="lp64,ilp32"
1212 fi
1213 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1214 for aarch64_multilib in ${aarch64_multilibs}; do
1215 case ${aarch64_multilib} in
1216 ilp32 | lp64 )
1217 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1218 ;;
1219 *)
1220 echo "--with-multilib-list=${aarch64_multilib} not supported."
1221 exit 1
1222 esac
1223 done
1224 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1225 ;;
1226 aarch64*-*-freebsd*)
1227 tm_file="${tm_file} elfos.h ${fbsd_tm_file}"
1228 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-freebsd.h"
1229 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
1230 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1231 ;;
1232 aarch64*-*-netbsd*)
1233 tm_file="${tm_file} elfos.h ${nbsd_tm_file}"
1234 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-netbsd.h"
1235 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-netbsd"
1236 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1237 ;;
1238 aarch64*-*-linux*)
1239 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h"
1240 tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-linux.h"
1241 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-linux"
1242 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
1243 case $target in
1244 aarch64_be-*)
1245 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1246 ;;
1247 esac
1248 aarch64_multilibs="${with_multilib_list}"
1249 if test "$aarch64_multilibs" = "default"; then
1250 # TODO: turn on ILP32 multilib build after its support is mature.
1251 # aarch64_multilibs="lp64,ilp32"
1252 aarch64_multilibs="lp64"
1253 fi
1254 aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
1255 for aarch64_multilib in ${aarch64_multilibs}; do
1256 case ${aarch64_multilib} in
1257 ilp32 | lp64 )
1258 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
1259 ;;
1260 *)
1261 echo "--with-multilib-list=${aarch64_multilib} not supported."
1262 exit 1
1263 esac
1264 done
1265 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
1266 ;;
1267 aarch64*-wrs-vxworks*)
1268 tm_file="${tm_file} elfos.h aarch64/aarch64-elf.h"
1269 tm_file="${tm_file} vx-common.h vxworks.h aarch64/aarch64-vxworks.h"
1270 tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-vxworks"
1271 ;;
1272 alpha*-*-linux*)
1273 tm_file="elfos.h ${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h glibc-stdint.h"
1274 tmake_file="${tmake_file} alpha/t-linux alpha/t-alpha"
1275 extra_options="${extra_options} alpha/elf.opt"
1276 ;;
1277 alpha*-*-netbsd*)
1278 tm_file="elfos.h ${tm_file} ${nbsd_tm_file} alpha/elf.h alpha/netbsd.h"
1279 tmake_file="${tmake_file} alpha/t-alpha"
1280 extra_options="${extra_options} netbsd.opt netbsd-elf.opt \
1281 alpha/elf.opt"
1282 ;;
1283 alpha*-*-openbsd*)
1284 tm_defines="${tm_defines} OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_FUNCTION_SIZE OBSD_HAS_DECLARE_OBJECT"
1285 tm_file="elfos.h alpha/alpha.h alpha/elf.h openbsd.h openbsd-stdint.h alpha/openbsd.h openbsd-libpthread.h"
1286 tmake_file="${tmake_file} alpha/t-alpha"
1287 extra_options="${extra_options} openbsd.opt alpha/elf.opt"
1288 # default x-alpha is only appropriate for dec-osf.
1289 ;;
1290 alpha*-dec-*vms*)
1291 tm_file="${tm_file} vms/vms.h alpha/vms.h"
1292 tmake_file="${tmake_file} alpha/t-vms alpha/t-alpha"
1293 ;;
1294 arc*-*-elf*)
1295 tm_file="arc/arc-arch.h elfos.h newlib-stdint.h arc/elf.h ${tm_file}"
1296 tmake_file="arc/t-multilib arc/t-arc"
1297 extra_gcc_objs="driver-arc.o"
1298 if test "x$with_cpu" != x; then
1299 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1300 fi
1301 if test x${with_endian} = x; then
1302 case ${target} in
1303 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1304 *) with_endian=little ;;
1305 esac
1306 fi
1307 case ${with_endian} in
1308 big|little) ;;
1309 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1310 esac
1311 case ${with_endian} in
1312 big*) tm_file="arc/big.h ${tm_file}"
1313 esac
1314 ;;
1315 arc*-*-linux*)
1316 tm_file="arc/arc-arch.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arc/linux.h ${tm_file}"
1317 tmake_file="${tmake_file} arc/t-multilib-linux arc/t-arc"
1318 extra_gcc_objs="driver-arc.o"
1319 if test "x$with_cpu" != x; then
1320 tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
1321 fi
1322 if test x${with_endian} = x; then
1323 case ${target} in
1324 arc*be-*-* | arc*eb-*-*) with_endian=big ;;
1325 *) with_endian=little ;;
1326 esac
1327 fi
1328 case ${with_endian} in
1329 big|little) ;;
1330 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
1331 esac
1332 case ${with_endian} in
1333 big*) tm_file="arc/big.h ${tm_file}"
1334 esac
1335 # Force .init_array support. The configure script cannot always
1336 # automatically detect that GAS supports it, yet we require it.
1337 gcc_cv_initfini_array=yes
1338 ;;
1339 arm-wrs-vxworks7*)
1340 # We only support VxWorks 7 now on ARM, post SR600. Pre SR600
1341 # VxWorks 7 was transitory and major versions prior to 7 were based
1342 # on long deprecated ABI, not supported at all any more regardless
1343 # of VxWorks.
1344 extra_options="${extra_options} arm/vxworks.opt"
1345 tmake_file="${tmake_file} arm/t-arm arm/t-vxworks arm/t-bpabi"
1346 tm_file="elfos.h arm/elf.h arm/bpabi.h arm/aout.h ${tm_file}"
1347 tm_file="${tm_file} vx-common.h vxworks.h arm/vxworks.h"
1348 target_cpu_cname="generic-armv7-a"
1349 need_64bit_hwint=yes
1350 ;;
1351 arm*-*-freebsd*) # ARM FreeBSD EABI
1352 tm_file="elfos.h ${fbsd_tm_file} arm/elf.h"
1353 case $target in
1354 arm*b-*-freebsd*)
1355 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1356 ;;
1357 esac
1358 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi"
1359 tm_file="${tm_file} arm/bpabi.h arm/freebsd.h arm/aout.h arm/arm.h"
1360 case $target in
1361 armv6*-*-freebsd*)
1362 target_cpu_cname="arm1176jzf-s"
1363 if test $fbsd_major -ge 11; then
1364 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1365 fi
1366 ;;
1367 armv7*-*-freebsd*)
1368 target_cpu_cname="generic-armv7-a"
1369 tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
1370 ;;
1371 *)
1372 target_cpu_cname="arm9"
1373 ;;
1374 esac
1375 with_tls=${with_tls:-gnu}
1376 ;;
1377 arm*-*-netbsdelf*)
1378 target_cpu_cname="strongarm"
1379 tmake_file="${tmake_file} arm/t-arm"
1380 tm_file="elfos.h ${nbsd_tm_file} arm/elf.h"
1381 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1382 case ${target} in
1383 arm*eb-*) tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" ;;
1384 esac
1385 case ${target} in
1386 arm*-*-netbsdelf-*eabi*)
1387 tm_file="$tm_file arm/bpabi.h arm/netbsd-elf.h arm/netbsd-eabi.h"
1388 tmake_file="$tmake_file arm/t-bpabi arm/t-netbsdeabi"
1389 ;;
1390 *)
1391 tm_file="$tm_file arm/netbsd-elf.h"
1392 tmake_file="$tmake_file arm/t-netbsd"
1393 ;;
1394 esac
1395 tm_file="${tm_file} arm/aout.h arm/arm.h"
1396 case ${target} in
1397 arm*-*-netbsdelf-*eabihf*)
1398 # Hard-float requires at least Arm v5te
1399 target_cpu_cname="arm10e"
1400 tm_defines="${tm_defines} TARGET_DEFAULT_FLOAT_ABI=ARM_FLOAT_ABI_HARD"
1401 ;;
1402 esac
1403 case ${target} in
1404 armv6*) target_cpu_cname="arm1176jzf-s";;
1405 armv7*) target_cpu_cname="generic-armv7-a";;
1406 esac
1407 ;;
1408 arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)
1409 tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
1410 extra_options="${extra_options} linux-android.opt"
1411 case $target in
1412 arm*b-*-linux*)
1413 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1414 ;;
1415 esac
1416 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
1417 tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h arm/aout.h arm/arm.h"
1418 case $target in
1419 arm*-*-uclinuxfdpiceabi)
1420 tm_file="$tm_file arm/uclinuxfdpiceabi.h"
1421 ;;
1422 esac
1423 # Define with_float to "hard" if not already defined and
1424 # target name ends with "hf"
1425 case $target:$with_float in
1426 arm*-*-*hf:)
1427 with_float=hard
1428 ;;
1429 esac
1430 # Generation of floating-point instructions requires at least ARMv5te.
1431 if [ "$with_float" = "hard" -o "$with_float" = "softfp" ] ; then
1432 target_cpu_cname="arm10e"
1433 else
1434 target_cpu_cname="arm10tdmi"
1435 fi
1436 # Define multilib configuration for arm-linux-androideabi.
1437 case ${target} in
1438 *-androideabi)
1439 tmake_file="$tmake_file arm/t-linux-androideabi"
1440 ;;
1441 esac
1442 # The EABI requires the use of __cxa_atexit.
1443 default_use_cxa_atexit=yes
1444 with_tls=${with_tls:-gnu}
1445 ;;
1446 arm*-*-uclinux*eabi*) # ARM ucLinux
1447 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
1448 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi"
1449 tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h arm/aout.h arm/arm.h"
1450 target_cpu_cname="arm7tdmi"
1451 # The EABI requires the use of __cxa_atexit.
1452 default_use_cxa_atexit=yes
1453 ;;
1454 arm*-*-phoenix*)
1455 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1456 tm_file="${tm_file} newlib-stdint.h phoenix.h"
1457 tm_file="${tm_file} arm/aout.h arm/arm.h"
1458 tmake_file="${tmake_file} arm/t-arm arm/t-bpabi arm/t-phoenix"
1459 target_cpu_cname="arm7tdmi"
1460 ;;
1461 arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
1462 case ${target} in
1463 arm*eb-*-eabi*)
1464 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
1465 esac
1466 default_use_cxa_atexit=yes
1467 tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
1468 tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf"
1469 target_cpu_cname="arm7tdmi"
1470 case ${target} in
1471 arm*-*-eabi*)
1472 tm_file="$tm_file newlib-stdint.h"
1473 tmake_file="${tmake_file} arm/t-bpabi"
1474 use_gcc_stdint=wrap
1475 ;;
1476 arm*-*-fuchsia*)
1477 tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h"
1478 tmake_file="${tmake_file} arm/t-bpabi arm/t-fuchsia"
1479 target_cpu_cname="generic-armv7-a"
1480 ;;
1481 arm*-*-rtems*)
1482 tm_file="${tm_file} arm/rtems.h rtems.h newlib-stdint.h"
1483 tmake_file="${tmake_file} arm/t-bpabi arm/t-rtems"
1484 ;;
1485 arm*-*-symbianelf*)
1486 tm_file="${tm_file} arm/symbian.h"
1487 # We do not include t-bpabi for Symbian OS because the system
1488 # provides its own implementation of the BPABI functions.
1489 tmake_file="${tmake_file} arm/t-symbian"
1490 target_cpu_cname="arm10tdmi"
1491 ;;
1492 esac
1493 tm_file="${tm_file} arm/aout.h arm/arm.h"
1494 ;;
1495 avr-*-*)
1496 tm_file="elfos.h avr/elf.h avr/avr-arch.h avr/avr.h avr/specs.h avr/avr-stdint.h"
1497 if test x${with_avrlibc} != xno; then
1498 tm_file="${tm_file} ${cpu_type}/avrlibc.h"
1499 tm_defines="${tm_defines} WITH_AVRLIBC"
1500 fi
1501 # Work out avr_double_comparison which is 2 or 3 and is used in
1502 # target hook FLOAT_LIB_COMPARE_RETURNS_BOOL to determine whether
1503 # DFmode comparisons return 3-state or 2-state results.
1504 case y${with_double_comparison} in
1505 y | ytristate)
1506 avr_double_comparison=3
1507 ;;
1508 ybool | ylibf7)
1509 avr_double_comparison=2
1510 ;;
1511 *)
1512 echo "Error: --with-double-comparison= can only be used with: 'tristate', 'bool', 'libf7'" 1>&2
1513 exit 1
1514 ;;
1515 esac
1516 case "y${with_libf7}" in
1517 yno)
1518 # avr_double_comparison as set above.
1519 ;;
1520 ylibgcc)
1521 avr_double_comparison=2
1522 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1523 ;;
1524 y | yyes | ymath-symbols)
1525 avr_double_comparison=2
1526 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1527 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1528 tm_defines="${tm_defines} WITH_LIBF7_MATH_SYMBOLS"
1529 ;;
1530 ymath)
1531 avr_double_comparison=2
1532 tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
1533 tm_defines="${tm_defines} WITH_LIBF7_MATH"
1534 ;;
1535 *)
1536 echo "Error: --with-libf7=${with_libf7} but can only be used with: 'libgcc', 'math', 'math-symbols', 'yes', 'no'" 1>&2
1537 exit 1
1538 ;;
1539 esac
1540 tm_defines="${tm_defines} WITH_DOUBLE_COMPARISON=${avr_double_comparison}"
1541 case y${with_double} in
1542 y32)
1543 avr_double=32
1544 tm_defines="${tm_defines} HAVE_DOUBLE32"
1545 ;;
1546 y64)
1547 avr_double=64
1548 tm_defines="${tm_defines} HAVE_DOUBLE64"
1549 ;;
1550 y64,32)
1551 avr_double=64
1552 avr_double_multilib=1
1553 tm_defines="${tm_defines} HAVE_DOUBLE32"
1554 tm_defines="${tm_defines} HAVE_DOUBLE64"
1555 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1556 ;;
1557 y | y32,64)
1558 avr_double=32
1559 avr_double_multilib=1
1560 tm_defines="${tm_defines} HAVE_DOUBLE32"
1561 tm_defines="${tm_defines} HAVE_DOUBLE64"
1562 tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
1563 ;;
1564 *)
1565 echo "Error: --with-double= can only be used with: '32', '32,64', '64,32', '64'" 1>&2
1566 exit 1
1567 ;;
1568 esac
1569 case y${with_long_double} in
1570 y32)
1571 avr_long_double=32
1572 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1573 ;;
1574 y64)
1575 avr_long_double=64
1576 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1577 ;;
1578 y | y64,32)
1579 avr_long_double=64
1580 avr_long_double_multilib=1
1581 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1582 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1583 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1584 ;;
1585 y32,64)
1586 avr_long_double=32
1587 avr_long_double_multilib=1
1588 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1589 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1590 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
1591 ;;
1592 ydouble)
1593 avr_long_double=${avr_double}
1594 tm_defines="${tm_defines} HAVE_LONG_DOUBLE_IS_DOUBLE"
1595 if test y${avr_double_multilib} = y1; then
1596 tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
1597 tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
1598 else
1599 tm_defines="${tm_defines} HAVE_LONG_DOUBLE${avr_long_double}"
1600 fi
1601 ;;
1602 *)
1603 echo "Error: --with-long_double= can only be used with: '32', '32,64', '64,32', '64', 'double'" 1>&2
1604 exit 1
1605 ;;
1606 esac
1607 if test ${avr_long_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 32xy1z; then
1608 if test y${with_long_double} != ydouble; then
1609 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
1610 exit 1
1611 fi
1612 fi
1613 if test ${avr_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 64x1yz; then
1614 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
1615 exit 1
1616 fi
1617 if test y${avr_double}${avr_long_double} = y6432; then
1618 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
1619 exit 1
1620 fi
1621 tm_defines="${tm_defines} WITH_DOUBLE${avr_double}"
1622 tm_defines="${tm_defines} WITH_LONG_DOUBLE${avr_long_double}"
1623 tmake_file="${tmake_file} avr/t-avr avr/t-multilib"
1624 use_gcc_stdint=wrap
1625 extra_gcc_objs="driver-avr.o avr-devices.o"
1626 extra_objs="avr-devices.o avr-log.o"
1627 ;;
1628 bfin*-elf*)
1629 tm_file="${tm_file} elfos.h newlib-stdint.h bfin/elf.h"
1630 tmake_file=bfin/t-bfin-elf
1631 use_collect2=no
1632 ;;
1633 bfin*-uclinux*)
1634 tm_file="${tm_file} elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/uclinux.h"
1635 tmake_file=bfin/t-bfin-uclinux
1636 use_collect2=no
1637 ;;
1638 bfin*-linux-uclibc*)
1639 tm_file="${tm_file} elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/linux.h ./linux-sysroot-suffix.h"
1640 tmake_file="${tmake_file} bfin/t-bfin-linux"
1641 use_collect2=no
1642 ;;
1643 bfin*-rtems*)
1644 tm_file="${tm_file} elfos.h bfin/elf.h bfin/rtems.h rtems.h newlib-stdint.h"
1645 tmake_file="${tmake_file} bfin/t-rtems"
1646 ;;
1647 bfin*-*)
1648 tm_file="${tm_file} elfos.h newlib-stdint.h bfin/elf.h"
1649 use_collect2=no
1650 use_gcc_stdint=wrap
1651 ;;
1652 bpf-*-*)
1653 tm_file="elfos.h ${tm_file}"
1654 tmake_file="${tmake_file} bpf/t-bpf"
1655 use_collect2=no
1656 use_gcc_stdint=provide
1657 extra_objs="btfext-out.o core-builtins.o"
1658 target_gtfiles="$target_gtfiles \$(srcdir)/config/bpf/btfext-out.cc \$(srcdir)/config/bpf/core-builtins.cc"
1659 ;;
1660 cris-*-elf | cris-*-none)
1661 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1662 tmake_file="cris/t-cris cris/t-elfmulti"
1663 gas=yes
1664 extra_options="${extra_options} cris/elf.opt"
1665 use_gcc_stdint=wrap
1666 ;;
1667 csky-*-*)
1668 if test x${with_endian} != x; then
1669 case ${with_endian} in
1670 big|little) ;;
1671 *)
1672 echo "with_endian=${with_endian} not supported."
1673 exit 1
1674 ;;
1675 esac
1676 fi
1677 if test x${with_float} != x; then
1678 case ${with_float} in
1679 soft | hard | softfp) ;;
1680 *) echo
1681 "Unknown floating point type used in --with-float=$with_float"
1682 exit 1
1683 ;;
1684 esac
1685 fi
1686 tm_file="csky/csky.h"
1687 md_file="csky/csky.md"
1688 out_file="csky/csky.cc"
1689 tm_p_file="${tm_p_file} csky/csky-protos.h"
1690 extra_options="${extra_options} csky/csky_tables.opt"
1691
1692 if test x${enable_tpf_debug} = xyes; then
1693 tm_defines="${tm_defines} ENABLE_TPF_DEBUG"
1694 fi
1695
1696 case ${target} in
1697 csky-*-elf*)
1698 tm_file="elfos.h newlib-stdint.h ${tm_file} csky/csky-elf.h"
1699 tmake_file="csky/t-csky csky/t-csky-elf"
1700 default_use_cxa_atexit=no
1701 use_gcc_stdint=wrap
1702 ;;
1703 csky-*-linux*)
1704 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} csky/csky-linux-elf.h"
1705 tmake_file="${tmake_file} csky/t-csky"
1706
1707 if test "x${enable_multilib}" = xyes ; then
1708 tm_defines="$tm_defines CSKY_ENABLE_MULTILIB"
1709 tmake_file="${tmake_file} csky/t-csky-linux"
1710 fi
1711
1712 case ${target} in
1713 csky-*-linux-gnu*)
1714 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
1715 # Force .init_array support. The configure script cannot always
1716 # automatically detect that GAS supports it, yet we require it.
1717 gcc_cv_initfini_array=yes
1718 ;;
1719 csky-*-linux-uclibc*)
1720 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
1721 default_use_cxa_atexit=no
1722 ;;
1723 *)
1724 echo "Unknown target $target"
1725 exit 1
1726 ;;
1727 esac
1728 ;;
1729 *)
1730 echo "Unknown target $target"
1731 exit 1
1732 ;;
1733 esac
1734 ;;
1735 epiphany-*-elf | epiphany-*-rtems*)
1736 tm_file="elfos.h ${tm_file}"
1737 tmake_file="${tmake_file} epiphany/t-epiphany"
1738 case ${target} in
1739 epiphany-*-rtems*)
1740 tm_file="${tm_file} epiphany/rtems.h rtems.h newlib-stdint.h"
1741 ;;
1742 *)
1743 tm_file="${tm_file} newlib-stdint.h"
1744 ;;
1745 esac
1746 extra_options="${extra_options} fused-madd.opt"
1747 extra_objs="${extra_objs} mode-switch-use.o resolve-sw-modes.o"
1748 tm_defines="${tm_defines} EPIPHANY_STACK_OFFSET=${with_stack_offset:-8}"
1749 extra_headers="epiphany_intrinsics.h"
1750 ;;
1751 fr30-*-elf)
1752 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1753 ;;
1754 frv-*-elf)
1755 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1756 tmake_file=frv/t-frv
1757 ;;
1758 frv-*-*linux*)
1759 tm_file="elfos.h ${tm_file} \
1760 gnu-user.h linux.h glibc-stdint.h frv/linux.h"
1761 tmake_file="${tmake_file} frv/t-frv frv/t-linux"
1762 ;;
1763 ft32-*-elf)
1764 gas=yes
1765 gnu_ld=yes
1766 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1767 tmake_file="${tmake_file} ft32/t-ft32"
1768 ;;
1769 amdgcn-*-amdhsa)
1770 tm_file="elfos.h gcn/gcn-hsa.h gcn/gcn.h newlib-stdint.h"
1771 tmake_file="gcn/t-gcn-hsa"
1772 native_system_header_dir=/include
1773 extra_modes=gcn/gcn-modes.def
1774 extra_objs="${extra_objs} gcn-tree.o"
1775 case "$host" in
1776 x86_64*-*-linux-gnu )
1777 if test "$ac_cv_search_dlopen" != no; then
1778 extra_programs="${extra_programs} gcn-run\$(exeext)"
1779 fi
1780 ;;
1781 esac
1782 if test x$enable_as_accelerator = xyes; then
1783 extra_programs="${extra_programs} mkoffload\$(exeext)"
1784 tm_file="${tm_file} gcn/offload.h"
1785 fi
1786 # Force .init_array support.
1787 gcc_cv_initfini_array=yes
1788 thread_file=gcn
1789 ;;
1790 moxie-*-elf)
1791 gas=yes
1792 gnu_ld=yes
1793 tm_file="elfos.h newlib-stdint.h ${tm_file}"
1794 tmake_file="${tmake_file} moxie/t-moxie"
1795 ;;
1796 moxie-*-uclinux*)
1797 gas=yes
1798 gnu_ld=yes
1799 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h moxie/uclinux.h"
1800 tmake_file="${tmake_file} moxie/t-moxie"
1801 ;;
1802 moxie-*-rtems*)
1803 tmake_file="${tmake_file} moxie/t-moxie"
1804 tm_file="moxie/moxie.h elfos.h moxie/rtems.h rtems.h newlib-stdint.h"
1805 ;;
1806 moxie-*-moxiebox*)
1807 gas=yes
1808 gnu_ld=yes
1809 tm_file="${tm_file} elfos.h moxie/moxiebox.h newlib-stdint.h"
1810 tmake_file="${tmake_file} moxie/t-moxiebox"
1811 ;;
1812 h8300-*-elf*)
1813 tmake_file="h8300/t-h8300"
1814 tm_file="h8300/h8300.h elfos.h newlib-stdint.h h8300/elf.h"
1815 ;;
1816 h8300-*-linux*)
1817 tmake_file="${tmake_file} h8300/t-h8300 h8300/t-linux"
1818 tm_file="h8300/h8300.h elfos.h gnu-user.h linux.h glibc-stdint.h h8300/linux.h"
1819 ;;
1820 hppa*64*-*-linux*)
1821 target_cpu_default="MASK_PA_11|MASK_PA_20"
1822 tm_file="pa/pa64-start.h ${tm_file} elfos.h gnu-user.h linux.h \
1823 glibc-stdint.h pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h \
1824 pa/pa64-linux.h"
1825 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1826 d_target_objs="${d_target_objs} pa-d.o"
1827 gas=yes gnu_ld=yes
1828 ;;
1829 hppa*-*-linux*)
1830 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS|MASK_CALLER_COPIES"
1831 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h pa/pa-linux.h \
1832 pa/pa32-regs.h pa/pa32-linux.h"
1833 tmake_file="${tmake_file} pa/t-pa pa/t-linux"
1834 d_target_objs="${d_target_objs} pa-d.o"
1835 ;;
1836 hppa*-*-openbsd*)
1837 target_cpu_default="MASK_PA_11"
1838 tm_file="${tm_file} elfos.h openbsd.h openbsd-stdint.h openbsd-libpthread.h \
1839 pa/pa-openbsd.h pa/pa32-regs.h pa/pa32-openbsd.h"
1840 extra_options="${extra_options} openbsd.opt"
1841 tmake_file="pa/t-pa"
1842 d_target_objs="${d_target_objs} pa-d.o"
1843 gas=yes
1844 gnu_ld=yes
1845 ;;
1846 hppa*-*-netbsd*)
1847 target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS"
1848 tm_file="${tm_file} elfos.h ${nbsd_tm_file} \
1849 pa/pa-netbsd.h pa/pa32-regs.h pa/pa32-netbsd.h"
1850 tmake_file="${tmake_file}"
1851 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
1852 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1853 ;;
1854 hppa*64*-*-hpux11*)
1855 target_cpu_default="MASK_PA_11|MASK_PA_20"
1856 if test x$gnu_ld = xyes
1857 then
1858 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
1859 fi
1860 tm_file="pa/pa64-start.h ${tm_file} elfos.h \
1861 pa/pa64-regs.h pa/pa-hpux.h pa/pa-hpux1010.h \
1862 pa/pa-hpux11.h"
1863 case ${target} in
1864 *-*-hpux11.[12]*)
1865 tm_file="${tm_file} pa/pa-hpux1111.h pa/pa-64.h pa/pa64-hpux.h"
1866 extra_options="${extra_options} pa/pa-hpux1111.opt"
1867 ;;
1868 *-*-hpux11.[3-9]*)
1869 tm_file="${tm_file} pa/pa-hpux1131.h pa/pa-64.h pa/pa64-hpux.h"
1870 extra_options="${extra_options} pa/pa-hpux1131.opt"
1871 ;;
1872 *)
1873 tm_file="${tm_file} pa/pa-64.h pa/pa64-hpux.h"
1874 ;;
1875 esac
1876 extra_options="${extra_options} pa/pa-hpux.opt \
1877 pa/pa-hpux1010.opt pa/pa64-hpux.opt hpux11.opt"
1878 tmake_file="pa/t-pa t-slibgcc"
1879 d_target_objs="${d_target_objs} pa-d.o"
1880 case x${enable_threads} in
1881 x | xyes | xposix )
1882 thread_file=posix
1883 ;;
1884 esac
1885 gas=yes
1886 case ${target} in
1887 *-*-hpux11.[01]*)
1888 use_gcc_stdint=provide
1889 tm_file="${tm_file} hpux-stdint.h"
1890 ;;
1891 *-*-hpux11.[23]*)
1892 use_gcc_stdint=wrap
1893 tm_file="${tm_file} hpux-stdint.h"
1894 ;;
1895 esac
1896 ;;
1897 i[34567]86-*-darwin1[89]* | i[34567]86-*-darwin2*)
1898 echo "Error: 32bit target is not supported after Darwin17" 1>&2
1899 ;;
1900 i[34567]86-*-darwin*)
1901 need_64bit_isa=yes
1902 # Baseline choice for a machine that allows m64 support.
1903 with_cpu=${with_cpu:-core2}
1904 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch t-slibgcc"
1905 tm_file="${cpu_type}/darwin32-biarch.h ${tm_file} "
1906 ;;
1907 x86_64-*-darwin1[89]* | x86_64-*-darwin2*)
1908 # Only 64b from now
1909 tm_defines="${tm_defines} TARGET_64BIT_DEFAULT=(OPTION_MASK_ISA_64BIT|OPTION_MASK_ABI_64)"
1910 tm_defines="${tm_defines} TARGET_BI_ARCH=0"
1911 with_cpu=${with_cpu:-core2}
1912 tmake_file="${tmake_file} t-slibgcc"
1913 ;;
1914 x86_64-*-darwin*)
1915 with_cpu=${with_cpu:-core2}
1916 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
1917 tm_file="${cpu_type}/darwin64-biarch.h ${tm_file} "
1918 ;;
1919 i[34567]86-*-elfiamcu)
1920 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/iamcu.h"
1921 ;;
1922 i[34567]86-*-elf*)
1923 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h"
1924 ;;
1925 x86_64-*-elf*)
1926 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h"
1927 ;;
1928 x86_64-*-rtems*)
1929 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h i386/rtemself.h rtems.h"
1930 ;;
1931 i[34567]86-*-rdos*)
1932 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/rdos.h"
1933 ;;
1934 x86_64-*-rdos*)
1935 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h i386/rdos.h i386/rdos64.h"
1936 tmake_file="i386/t-i386elf t-svr4"
1937 ;;
1938 i[34567]86-*-dragonfly*)
1939 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h dragonfly.h dragonfly-stdint.h i386/dragonfly.h"
1940 tmake_file="${tmake_file} i386/t-crtstuff"
1941 ;;
1942 x86_64-*-dragonfly*)
1943 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h dragonfly.h dragonfly-stdint.h i386/x86-64.h i386/dragonfly.h"
1944 tmake_file="${tmake_file} i386/t-crtstuff"
1945 ;;
1946 i[34567]86-*-freebsd*)
1947 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
1948 ;;
1949 x86_64-*-freebsd*)
1950 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h"
1951 ;;
1952 i[34567]86-*-netbsdelf*)
1953 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${nbsd_tm_file} i386/netbsd-elf.h"
1954 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1955 ;;
1956 x86_64-*-netbsd*)
1957 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h ${nbsd_tm_file} i386/x86-64.h i386/netbsd64.h"
1958 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
1959 ;;
1960 i[34567]86-*-openbsd*)
1961 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
1962 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/openbsdelf.h"
1963 extra_options="${extra_options} openbsd.opt"
1964 gas=yes
1965 gnu_ld=yes
1966 ;;
1967 x86_64-*-openbsd*)
1968 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
1969 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/x86-64.h i386/openbsdelf.h"
1970 extra_options="${extra_options} openbsd.opt"
1971 gas=yes
1972 gnu_ld=yes
1973 ;;
1974 i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu)
1975 # Intel 80386's running GNU/*
1976 # with ELF format using glibc 2
1977 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h gnu-user.h glibc-stdint.h"
1978 case ${target} in
1979 i[34567]86-*-linux*)
1980 tm_file="${tm_file} linux.h linux-android.h"
1981 extra_options="${extra_options} linux-android.opt"
1982 if test x$enable_targets = xall; then
1983 tm_file="${tm_file} i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h i386/linux-common.h i386/linux64.h"
1984 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
1985 tmake_file="${tmake_file} i386/t-linux64"
1986 x86_multilibs="${with_multilib_list}"
1987 if test "$x86_multilibs" = "default"; then
1988 x86_multilibs="m64,m32"
1989 fi
1990 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
1991 for x86_multilib in ${x86_multilibs}; do
1992 case ${x86_multilib} in
1993 m32 | m64 | mx32)
1994 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
1995 ;;
1996 *)
1997 echo "--with-multilib-list=${x86_with_multilib} not supported."
1998 exit 1
1999 esac
2000 done
2001 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2002 need_64bit_isa=yes
2003 if test x$with_cpu = x; then
2004 if test x$with_cpu_64 = x; then
2005 with_cpu_64=generic
2006 fi
2007 else
2008 case " $x86_cpus $x86_archs $x86_64_archs " in
2009 *" $with_cpu "*)
2010 ;;
2011 *)
2012 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2013 echo "$x86_cpus $x86_archs $x86_64_archs " 1>&2
2014 exit 1
2015 ;;
2016 esac
2017 fi
2018 else
2019 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h i386/linux-common.h i386/linux.h"
2020 fi
2021 ;;
2022 i[34567]86-*-kfreebsd*-gnu)
2023 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kfreebsd-gnu.h i386/kfreebsd-gnu.h"
2024 ;;
2025 i[34567]86-*-kopensolaris*-gnu)
2026 tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kopensolaris-gnu.h i386/kopensolaris-gnu.h"
2027 ;;
2028 i[34567]86-*-gnu*)
2029 tm_file="$tm_file i386/gnu-user-common.h i386/gnu-user.h gnu.h i386/gnu.h"
2030 ;;
2031 esac
2032 ;;
2033 x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-gnu*)
2034 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h gnu-user.h glibc-stdint.h \
2035 i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h"
2036 case ${target} in
2037 x86_64-*-linux*)
2038 tm_file="${tm_file} linux.h linux-android.h i386/linux-common.h i386/linux64.h"
2039 extra_options="${extra_options} linux-android.opt"
2040 ;;
2041 x86_64-*-kfreebsd*-gnu)
2042 tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu64.h"
2043 ;;
2044 x86_64-*-gnu*)
2045 tm_file="${tm_file} gnu.h i386/gnu64.h"
2046 ;;
2047 esac
2048 tmake_file="${tmake_file} i386/t-linux64"
2049 x86_multilibs="${with_multilib_list}"
2050 if test "$x86_multilibs" = "default"; then
2051 case ${with_abi} in
2052 x32 | mx32)
2053 x86_multilibs="mx32"
2054 ;;
2055 *)
2056 x86_multilibs="m64,m32"
2057 ;;
2058 esac
2059 fi
2060 x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
2061 for x86_multilib in ${x86_multilibs}; do
2062 case ${x86_multilib} in
2063 m32 | m64 | mx32)
2064 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
2065 ;;
2066 *)
2067 echo "--with-multilib-list=${x86_with_multilib} not supported."
2068 exit 1
2069 esac
2070 done
2071 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2072 ;;
2073 i[34567]86-pc-msdosdjgpp*)
2074 xm_file=i386/xm-djgpp.h
2075 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/djgpp.h i386/djgpp-stdint.h"
2076 native_system_header_dir=/dev/env/DJDIR/include
2077 extra_options="${extra_options} i386/djgpp.opt"
2078 gnu_ld=yes
2079 gas=yes
2080 use_gcc_stdint=wrap
2081 ;;
2082 i[34567]86-*-lynxos*)
2083 xm_defines=POSIX
2084 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h i386/lynx.h lynx.h"
2085 tmake_file="${tmake_file} t-lynx"
2086 extra_options="${extra_options} lynx.opt"
2087 thread_file=lynx
2088 gnu_ld=yes
2089 gas=yes
2090 ;;
2091 i[34567]86-*-nto-qnx*)
2092 tm_file="${tm_file} i386/att.h tm-dwarf2.h elfos.h i386/unix.h i386/nto.h"
2093 extra_options="${extra_options} i386/nto.opt"
2094 gnu_ld=yes
2095 gas=yes
2096 ;;
2097 i[34567]86-*-rtems*)
2098 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h i386/i386elf.h i386/rtemself.h rtems.h newlib-stdint.h"
2099 tmake_file="${tmake_file} i386/t-rtems"
2100 ;;
2101 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
2102 # Set default arch_32 to pentium4, tune_32 to generic like the other
2103 # i386 targets, although config.guess defaults to i386-pc-solaris2*.
2104 with_arch_32=${with_arch_32:-pentium4}
2105 with_tune_32=${with_tune_32:-generic}
2106 tm_file="${tm_file} i386/unix.h i386/att.h ${sol2_tm_file_head} i386/x86-64.h ${sol2_tm_file_tail}"
2107 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2108 tmake_file="$tmake_file i386/t-sol2"
2109 need_64bit_isa=yes
2110 if test x$with_cpu = x; then
2111 if test x$with_cpu_64 = x; then
2112 with_cpu_64=generic
2113 fi
2114 else
2115 case " $x86_cpus $x86_archs $x86_64_archs " in
2116 *" $with_cpu "*)
2117 ;;
2118 *)
2119 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2120 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2121 exit 1
2122 ;;
2123 esac
2124 fi
2125 ;;
2126 i[4567]86-wrs-vxworks*|x86_64-wrs-vxworks7*)
2127 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
2128 case ${target} in
2129 x86_64-*)
2130 need_64bit_isa=yes
2131 tm_file="${tm_file} i386/x86-64.h"
2132 ;;
2133 esac
2134 tm_file="${tm_file} vx-common.h"
2135 case ${target} in
2136 *-vxworksae*)
2137 tm_file="${tm_file} vxworksae.h i386/vxworks.h i386/vxworksae.h"
2138 tmake_file="${tmake_file} i386/t-vxworks i386/t-vxworksae"
2139 ;;
2140 *)
2141 tm_file="${tm_file} vxworks.h i386/vxworks.h"
2142 tmake_file="${tmake_file} i386/t-vxworks"
2143 ;;
2144 esac
2145 ;;
2146 i[34567]86-*-cygwin*)
2147 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h i386/cygwin.h i386/cygwin-stdint.h"
2148 xm_file=i386/xm-cygwin.h
2149 tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
2150 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2151 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
2152 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2153 c_target_objs="${c_target_objs} msformat-c.o"
2154 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2155 d_target_objs="${d_target_objs} cygwin-d.o"
2156 target_has_targetdm="yes"
2157 if test x$enable_threads = xyes; then
2158 thread_file='posix'
2159 fi
2160 default_use_cxa_atexit=yes
2161 use_gcc_stdint=wrap
2162 ;;
2163 x86_64-*-cygwin*)
2164 need_64bit_isa=yes
2165 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h i386/cygwin.h i386/cygwin-w64.h i386/cygwin-stdint.h"
2166 xm_file=i386/xm-cygwin.h
2167 tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
2168 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2169 extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
2170 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2171 c_target_objs="${c_target_objs} msformat-c.o"
2172 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2173 d_target_objs="${d_target_objs} cygwin-d.o"
2174 target_has_targetdm="yes"
2175 if test x$enable_threads = xyes; then
2176 thread_file='posix'
2177 fi
2178 default_use_cxa_atexit=yes
2179 use_gcc_stdint=wrap
2180 tm_defines="${tm_defines} TARGET_CYGWIN64=1"
2181 ;;
2182 i[34567]86-*-mingw* | x86_64-*-mingw*)
2183 tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h"
2184 xm_file=i386/xm-mingw32.h
2185 c_target_objs="${c_target_objs} winnt-c.o"
2186 cxx_target_objs="${cxx_target_objs} winnt-c.o"
2187 d_target_objs="${d_target_objs} winnt-d.o"
2188 target_has_targetcm="yes"
2189 target_has_targetdm="yes"
2190 rust_target_objs="${rust_target_objs} winnt-rust.o"
2191 target_has_targetrustm="yes"
2192 case ${target} in
2193 x86_64-*-* | *-w64-*)
2194 need_64bit_isa=yes
2195 ;;
2196 *)
2197 ;;
2198 esac
2199 if test x$enable_threads = xposix ; then
2200 tm_file="${tm_file} i386/mingw-pthread.h"
2201 fi
2202 if test x$enable_threads = xmcf ; then
2203 tm_file="${tm_file} i386/mingw-mcfgthread.h"
2204 fi
2205 tm_file="${tm_file} i386/mingw32.h"
2206 # This makes the logic if mingw's or the w64 feature set has to be used
2207 case ${target} in
2208 *-w64-*)
2209 user_headers_inc_next_post="${user_headers_inc_next_post} float.h"
2210 user_headers_inc_next_pre="${user_headers_inc_next_pre} stddef.h stdarg.h"
2211 tm_file="${tm_file} i386/mingw-w64.h"
2212 if test x$enable_targets = xall; then
2213 tm_defines="${tm_defines} TARGET_BI_ARCH=1"
2214 if test x$with_cpu = x; then
2215 if test x$with_cpu_64 = x; then
2216 with_cpu_64=generic
2217 fi
2218 else
2219 case " $x86_cpus $x86_archs $x86_64_archs " in
2220 *" $with_cpu "*)
2221 ;;
2222 *)
2223 echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
2224 echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
2225 exit 1
2226 ;;
2227 esac
2228 fi
2229 fi
2230 ;;
2231 *)
2232 ;;
2233 esac
2234 tm_file="${tm_file} i386/mingw-stdint.h"
2235 tmake_file="${tmake_file} t-winnt i386/t-cygming t-slibgcc"
2236 case ${target} in
2237 x86_64-w64-*)
2238 tmake_file="${tmake_file} i386/t-mingw-w64"
2239 ;;
2240 i[34567]86-w64-*)
2241 tmake_file="${tmake_file} i386/t-mingw-w32"
2242 ;;
2243 esac
2244 native_system_header_dir=/mingw/include
2245 target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.cc"
2246 extra_options="${extra_options} i386/cygming.opt i386/mingw.opt"
2247 case ${target} in
2248 *-w64-*)
2249 extra_options="${extra_options} i386/mingw-w64.opt"
2250 ;;
2251 *)
2252 ;;
2253 esac
2254 extra_objs="${extra_objs} winnt.o winnt-stubs.o"
2255 c_target_objs="${c_target_objs} msformat-c.o"
2256 cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
2257 gas=yes
2258 gnu_ld=yes
2259 default_use_cxa_atexit=yes
2260 use_gcc_stdint=wrap
2261 case ${enable_threads} in
2262 "" | yes | win32)
2263 thread_file='win32'
2264 ;;
2265 posix)
2266 thread_file='posix'
2267 ;;
2268 esac
2269 case ${target} in
2270 *mingw32crt*)
2271 tm_file="${tm_file} i386/crtdll.h"
2272 ;;
2273 *mingw32msv* | *mingw*)
2274 ;;
2275 esac
2276 ;;
2277 x86_64-*-fuchsia*)
2278 tmake_file="${tmake_file} i386/t-x86_64-elf"
2279 tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h fuchsia.h"
2280 ;;
2281 ia64*-*-elf*)
2282 tm_file="${tm_file} elfos.h newlib-stdint.h ia64/sysv4.h ia64/elf.h"
2283 tmake_file="ia64/t-ia64"
2284 target_cpu_default="0"
2285 if test x$gas = xyes
2286 then
2287 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2288 fi
2289 if test x$gnu_ld = xyes
2290 then
2291 target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
2292 fi
2293 ;;
2294 ia64*-*-freebsd*)
2295 tm_file="${tm_file} elfos.h ${fbsd_tm_file} ia64/sysv4.h ia64/freebsd.h"
2296 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2297 tmake_file="${tmake_file} ia64/t-ia64"
2298 ;;
2299 ia64*-*-linux*)
2300 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h ia64/sysv4.h ia64/linux.h"
2301 tmake_file="${tmake_file} ia64/t-ia64 ia64/t-linux t-libunwind"
2302 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
2303 ;;
2304 ia64*-*-hpux*)
2305 tm_file="${tm_file} elfos.h ia64/sysv4.h ia64/hpux.h"
2306 tmake_file="ia64/t-ia64 ia64/t-hpux t-slibgcc"
2307 target_cpu_default="MASK_GNU_AS"
2308 case x$enable_threads in
2309 x | xyes | xposix )
2310 thread_file=posix
2311 ;;
2312 esac
2313 use_collect2=no
2314 c_target_objs="ia64-c.o"
2315 cxx_target_objs="ia64-c.o"
2316 extra_options="${extra_options} ia64/ilp32.opt hpux11.opt"
2317 use_gcc_stdint=wrap
2318 tm_file="${tm_file} hpux-stdint.h"
2319 case ${target} in
2320 *-*-hpux11.3*)
2321 tm_file="${tm_file} ia64/hpux-unix2003.h"
2322 ;;
2323 esac
2324 ;;
2325 ia64-hp-*vms*)
2326 tm_file="${tm_file} elfos.h ia64/sysv4.h vms/vms.h ia64/vms.h"
2327 tmake_file="${tmake_file} ia64/t-ia64"
2328 target_cpu_default="0"
2329 if test x$gas = xyes
2330 then
2331 target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
2332 fi
2333 extra_options="${extra_options} ia64/vms.opt"
2334 ;;
2335 iq2000*-*-elf*)
2336 tm_file="elfos.h newlib-stdint.h iq2000/iq2000.h"
2337 out_file=iq2000/iq2000.cc
2338 md_file=iq2000/iq2000.md
2339 ;;
2340 lm32-*-elf*)
2341 tm_file="elfos.h ${tm_file} newlib-stdint.h"
2342 tmake_file="${tmake_file} lm32/t-lm32"
2343 ;;
2344 lm32-*-rtems*)
2345 tm_file="elfos.h ${tm_file} lm32/rtems.h rtems.h newlib-stdint.h"
2346 tmake_file="${tmake_file} lm32/t-lm32"
2347 tmake_file="${tmake_file} lm32/t-rtems"
2348 ;;
2349 lm32-*-uclinux*)
2350 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h lm32/uclinux-elf.h"
2351 tmake_file="${tmake_file} lm32/t-lm32"
2352 ;;
2353 m32r-*-elf*)
2354 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2355 ;;
2356 m32rle-*-elf*)
2357 tm_file="elfos.h newlib-stdint.h m32r/little.h ${tm_file}"
2358 ;;
2359 m68k-*-elf* | fido-*-elf*)
2360 case ${target} in
2361 fido-*-elf*)
2362 # Check that $with_cpu makes sense.
2363 case $with_cpu in
2364 "" | "fidoa")
2365 ;;
2366 *)
2367 echo "Cannot accept --with-cpu=$with_cpu"
2368 exit 1
2369 ;;
2370 esac
2371 with_cpu=fidoa
2372 ;;
2373 *)
2374 default_m68k_cpu=68020
2375 default_cf_cpu=5206
2376 ;;
2377 esac
2378 tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h elfos.h newlib-stdint.h m68k/m68kemb.h m68k/m68020-elf.h"
2379 tm_defines="${tm_defines} MOTOROLA=1"
2380 tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-m68kelf"
2381 # Add multilibs for targets other than fido.
2382 case ${target} in
2383 fido-*-elf*)
2384 ;;
2385 *)
2386 tmake_file="$tmake_file m68k/t-mlibs"
2387 ;;
2388 esac
2389 ;;
2390 m68k*-*-netbsdelf*)
2391 default_m68k_cpu=68020
2392 default_cf_cpu=5475
2393 tm_file="${tm_file} elfos.h ${nbsd_tm_file} m68k/netbsd-elf.h"
2394 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2395 tm_defines="${tm_defines} MOTOROLA=1 CHAR_FAST8=1 SHORT_FAST16=1"
2396 ;;
2397 m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux
2398 # with uClibc, using the new GNU/Linux-style
2399 # ABI.
2400 default_m68k_cpu=68020
2401 default_cf_cpu=5206
2402 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h flat.h m68k/linux.h m68k/uclinux.h ./sysroot-suffix.h"
2403 extra_options="${extra_options} m68k/uclinux.opt"
2404 tm_defines="${tm_defines} MOTOROLA=1"
2405 tmake_file="m68k/t-floatlib m68k/t-uclinux m68k/t-mlibs"
2406 ;;
2407 m68k-*-linux*) # Motorola m68k's running GNU/Linux
2408 # with ELF format using glibc 2
2409 # aka the GNU/Linux C library 6.
2410 default_m68k_cpu=68020
2411 default_cf_cpu=5475
2412 with_arch=${with_arch:-m68k}
2413 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h m68k/linux.h ./sysroot-suffix.h"
2414 extra_options="${extra_options} m68k/ieee.opt"
2415 tm_defines="${tm_defines} MOTOROLA=1"
2416 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-linux m68k/t-mlibs"
2417 ;;
2418 m68k-*-rtems*)
2419 default_m68k_cpu=68020
2420 default_cf_cpu=5206
2421 tmake_file="${tmake_file} m68k/t-floatlib m68k/t-m68kbare m68k/t-crtstuff m68k/t-rtems m68k/t-mlibs"
2422 tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h elfos.h m68k/m68kemb.h m68k/m68020-elf.h m68k/rtemself.h rtems.h newlib-stdint.h"
2423 tm_defines="${tm_defines} MOTOROLA=1"
2424 ;;
2425 mcore-*-elf)
2426 tm_file="elfos.h newlib-stdint.h ${tm_file} mcore/mcore-elf.h"
2427 tmake_file=mcore/t-mcore
2428 inhibit_libc=true
2429 ;;
2430 microblaze*-linux*)
2431 case $target in
2432 microblazeel-*)
2433 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2434 ;;
2435 microblaze-*)
2436 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2437 ;;
2438 esac
2439 tm_file="${tm_file} gnu-user.h linux.h microblaze/linux.h"
2440 tm_file="${tm_file} glibc-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"
2444 tmake_file="${tmake_file} microblaze/t-microblaze-linux"
2445 ;;
2446 microblaze*-*-rtems*)
2447 case $target in
2448 microblazeel-*)
2449 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2450 ;;
2451 microblaze-*)
2452 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2453 ;;
2454 esac
2455 tm_file="${tm_file}"
2456 tm_file="${tm_file} microblaze/rtems.h rtems.h newlib-stdint.h"
2457 c_target_objs="${c_target_objs} microblaze-c.o"
2458 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2459 tmake_file="${tmake_file} microblaze/t-microblaze"
2460 tmake_file="${tmake_file} microblaze/t-rtems"
2461 ;;
2462 microblaze*-*-elf)
2463 case $target in
2464 microblazeel-*)
2465 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
2466 ;;
2467 microblaze-*)
2468 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
2469 ;;
2470 esac
2471 tm_file="${tm_file} newlib-stdint.h"
2472 c_target_objs="${c_target_objs} microblaze-c.o"
2473 cxx_target_objs="${cxx_target_objs} microblaze-c.o"
2474 tmake_file="${tmake_file} microblaze/t-microblaze"
2475 ;;
2476 riscv*-*-linux*)
2477 tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} riscv/linux.h"
2478 case "x${enable_multilib}" in
2479 xno) ;;
2480 xyes) tmake_file="${tmake_file} riscv/t-linux-multilib" ;;
2481 *) echo "Unknown value for enable_multilib"; exit 1
2482 esac
2483 tmake_file="${tmake_file} riscv/t-riscv riscv/t-linux"
2484 tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
2485 gnu_ld=yes
2486 gas=yes
2487 case $target in
2488 riscv32be-*|riscv64be-*)
2489 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2490 ;;
2491 esac
2492 # Force .init_array support. The configure script cannot always
2493 # automatically detect that GAS supports it, yet we require it.
2494 gcc_cv_initfini_array=yes
2495 ;;
2496 riscv*-*-elf* | riscv*-*-rtems*)
2497 tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h"
2498 case ${target} in
2499 *-*-rtems*)
2500 tm_file="${tm_file} riscv/rtems.h rtems.h"
2501 tmake_file="${tmake_file} riscv/t-rtems"
2502 ;;
2503 *)
2504 if test "x${with_multilib_generator}" = xdefault; then
2505 case "x${enable_multilib}" in
2506 xno) ;;
2507 xyes) tmake_file="${tmake_file} riscv/t-elf-multilib" ;;
2508 *) echo "Unknown value for enable_multilib"; exit 1
2509 esac
2510 fi
2511 esac
2512 tmake_file="${tmake_file} riscv/t-riscv"
2513 gnu_ld=yes
2514 gas=yes
2515 case $target in
2516 riscv32be-*|riscv64be-*)
2517 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2518 ;;
2519 esac
2520 # Force .init_array support. The configure script cannot always
2521 # automatically detect that GAS supports it, yet we require it.
2522 gcc_cv_initfini_array=yes
2523 ;;
2524 riscv*-*-freebsd*)
2525 tm_file="${tm_file} elfos.h ${fbsd_tm_file} riscv/freebsd.h"
2526 tmake_file="${tmake_file} riscv/t-riscv"
2527 gnu_ld=yes
2528 gas=yes
2529 case $target in
2530 riscv32be-*|riscv64be-*)
2531 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2532 ;;
2533 esac
2534 # Force .init_array support. The configure script cannot always
2535 # automatically detect that GAS supports it, yet we require it.
2536 gcc_cv_initfini_array=yes
2537 ;;
2538
2539 loongarch*-*-linux*)
2540 tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file}"
2541 case ${target} in
2542 *-linux-musl*) tm_file="${tm_file} loongarch/musl.h"
2543 esac
2544 tm_file="${tm_file} loongarch/gnu-user.h loongarch/linux.h loongarch/loongarch-driver.h"
2545 extra_options="${extra_options} linux-android.opt"
2546 tmake_file="${tmake_file} loongarch/t-multilib loongarch/t-linux"
2547 gnu_ld=yes
2548 gas=yes
2549
2550 # Force .init_array support. The configure script cannot always
2551 # automatically detect that GAS supports it, yet we require it.
2552 gcc_cv_initfini_array=yes
2553 ;;
2554
2555 loongarch*-*-elf*)
2556 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2557 tm_file="${tm_file} loongarch/elf.h loongarch/linux.h loongarch/loongarch-driver.h"
2558 tmake_file="${tmake_file} loongarch/t-multilib loongarch/t-linux"
2559 gnu_ld=yes
2560 gas=yes
2561
2562 # For .init_array support. The configure script cannot always
2563 # automatically detect that GAS supports it, yet we require it.
2564 gcc_cv_initfini_array=yes
2565 ;;
2566
2567 mips*-*-netbsd*) # NetBSD/mips, either endian.
2568 target_cpu_default="MASK_ABICALLS"
2569 tm_file="elfos.h ${tm_file} mips/elf.h ${nbsd_tm_file} mips/netbsd.h"
2570 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2571 ;;
2572 mips*-img-linux*)
2573 tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h mips/linux-common.h mips/mti-linux.h"
2574 extra_options="${extra_options} linux-android.opt"
2575 tmake_file="${tmake_file} mips/t-img-linux"
2576 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2577 with_arch_32="mips32r6"
2578 with_arch_64="mips64r6"
2579 gnu_ld=yes
2580 gas=yes
2581 ;;
2582 mips*-mti-linux*)
2583 tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h mips/linux-common.h mips/mti-linux.h"
2584 extra_options="${extra_options} linux-android.opt"
2585 tmake_file="${tmake_file} mips/t-mti-linux"
2586 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2587 with_arch_32="mips32r2"
2588 with_arch_64="mips64r2"
2589 gnu_ld=yes
2590 gas=yes
2591 ;;
2592 mips*-*-linux*) # Linux MIPS, either endian.
2593 tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h mips/linux-common.h"
2594 extra_options="${extra_options} linux-android.opt"
2595 case ${target} in
2596 mipsisa32r6*)
2597 default_mips_arch=mips32r6
2598 ;;
2599 mipsisa32r2*)
2600 default_mips_arch=mips32r2
2601 ;;
2602 mipsisa32*)
2603 default_mips_arch=mips32
2604 ;;
2605 mips64el-st-linux-gnu)
2606 default_mips_abi=n32
2607 tm_file="${tm_file} mips/st.h"
2608 tmake_file="${tmake_file} mips/t-st"
2609 enable_mips_multilibs="yes"
2610 ;;
2611 mips64octeon*-*-linux*)
2612 default_mips_abi=n32
2613 tm_defines="${tm_defines} MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\""
2614 target_cpu_default=MASK_SOFT_FLOAT_ABI
2615 enable_mips_multilibs="yes"
2616 ;;
2617 mipsisa64r6*-*-linux-gnuabi64)
2618 default_mips_abi=64
2619 default_mips_arch=mips64r6
2620 enable_mips_multilibs="yes"
2621 ;;
2622 mipsisa64r6*-*-linux*)
2623 default_mips_abi=n32
2624 default_mips_arch=mips64r6
2625 enable_mips_multilibs="yes"
2626 ;;
2627 mipsisa64r2*-*-linux-gnuabi64)
2628 default_mips_abi=64
2629 default_mips_arch=mips64r2
2630 enable_mips_multilibs="yes"
2631 ;;
2632 mipsisa64r2*-*-linux*)
2633 default_mips_abi=n32
2634 default_mips_arch=mips64r2
2635 enable_mips_multilibs="yes"
2636 ;;
2637 mips64*-*-linux-gnuabi64 | mipsisa64*-*-linux-gnuabi64)
2638 default_mips_abi=64
2639 enable_mips_multilibs="yes"
2640 ;;
2641 mips64*-*-linux* | mipsisa64*-*-linux*)
2642 default_mips_abi=n32
2643 enable_mips_multilibs="yes"
2644 ;;
2645 esac
2646 if test x$enable_targets = xall; then
2647 enable_mips_multilibs="yes"
2648 fi
2649 if test x$enable_mips_multilibs = xyes; then
2650 tmake_file="${tmake_file} mips/t-linux64"
2651 fi
2652 ;;
2653 mips*-mti-elf*)
2654 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2655 tmake_file="mips/t-mti-elf"
2656 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2657 with_arch_32="mips32r2"
2658 with_arch_64="mips64r2"
2659 ;;
2660 mips*-img-elf*)
2661 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
2662 tmake_file="mips/t-img-elf"
2663 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2664 with_arch_32="mips32r6"
2665 with_arch_64="mips64r6"
2666 ;;
2667 mips*-sde-elf*)
2668 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h"
2669 tmake_file="mips/t-sde"
2670 extra_options="${extra_options} mips/sde.opt"
2671 case "${with_newlib}" in
2672 yes)
2673 # newlib / libgloss.
2674 ;;
2675 *)
2676 # MIPS toolkit libraries.
2677 tm_file="$tm_file mips/sdemtk.h"
2678 tmake_file="$tmake_file mips/t-sdemtk"
2679 case ${enable_threads} in
2680 "" | yes | mipssde)
2681 thread_file='mipssde'
2682 ;;
2683 esac
2684 ;;
2685 esac
2686 case ${target} in
2687 mipsisa32r6*)
2688 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
2689 ;;
2690 mipsisa32r2*)
2691 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
2692 ;;
2693 mipsisa32*)
2694 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32 MIPS_ABI_DEFAULT=ABI_32"
2695 ;;
2696 mipsisa64r6*)
2697 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6 MIPS_ABI_DEFAULT=ABI_N32"
2698 ;;
2699 mipsisa64r2*)
2700 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2 MIPS_ABI_DEFAULT=ABI_N32"
2701 ;;
2702 mipsisa64*)
2703 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_ABI_DEFAULT=ABI_N32"
2704 ;;
2705 esac
2706 ;;
2707 mipsisa32-*-elf* | mipsisa32el-*-elf* | \
2708 mipsisa32r2-*-elf* | mipsisa32r2el-*-elf* | \
2709 mipsisa32r6-*-elf* | mipsisa32r6el-*-elf* | \
2710 mipsisa64-*-elf* | mipsisa64el-*-elf* | \
2711 mipsisa64r2-*-elf* | mipsisa64r2el-*-elf* | \
2712 mipsisa64r6-*-elf* | mipsisa64r6el-*-elf*)
2713 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2714 tmake_file="mips/t-isa3264"
2715 case ${target} in
2716 mipsisa32r6*)
2717 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6"
2718 ;;
2719 mipsisa32r2*)
2720 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2"
2721 ;;
2722 mipsisa32*)
2723 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32"
2724 ;;
2725 mipsisa64r6*)
2726 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6"
2727 ;;
2728 mipsisa64r2*)
2729 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2"
2730 ;;
2731 mipsisa64*)
2732 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64"
2733 ;;
2734 esac
2735 case ${target} in
2736 mipsisa32*-*-elfoabi*)
2737 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_32"
2738 tm_file="${tm_file} mips/elfoabi.h"
2739 ;;
2740 mipsisa64*-*-elfoabi*)
2741 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_O64"
2742 tm_file="${tm_file} mips/elfoabi.h"
2743 ;;
2744 *-*-elf*)
2745 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2746 ;;
2747 esac
2748 ;;
2749 mipsisa64sr71k-*-elf*)
2750 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2751 tmake_file=mips/t-sr71k
2752 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sr71000\\\" MIPS_ABI_DEFAULT=ABI_EABI"
2753 ;;
2754 mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*)
2755 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2756 tmake_file="mips/t-elf mips/t-sb1"
2757 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64 MIPS_CPU_STRING_DEFAULT=\\\"sb1\\\" MIPS_ABI_DEFAULT=ABI_O64"
2758 ;;
2759 mips-*-elf* | mipsel-*-elf* | mipsr5900-*-elf* | mipsr5900el-*-elf*)
2760 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2761 tmake_file="mips/t-elf"
2762 ;;
2763 mips64r5900-*-elf* | mips64r5900el-*-elf*)
2764 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h"
2765 tmake_file="mips/t-elf"
2766 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_N32"
2767 ;;
2768 mips64-*-elf* | mips64el-*-elf*)
2769 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
2770 tmake_file="mips/t-elf"
2771 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_O64"
2772 ;;
2773 mips64vr-*-elf* | mips64vrel-*-elf*)
2774 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/vr.h mips/elf.h"
2775 tmake_file=mips/t-vr
2776 tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
2777 ;;
2778 mips64orion-*-elf* | mips64orionel-*-elf*)
2779 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elforion.h mips/elf.h"
2780 tmake_file="mips/t-elf"
2781 tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3 MIPS_ABI_DEFAULT=ABI_O64"
2782 ;;
2783 mips*-*-rtems*)
2784 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/rtems.h rtems.h"
2785 tmake_file="${tmake_file} mips/t-elf mips/t-rtems"
2786 ;;
2787 mips-wrs-vxworks)
2788 tm_file="elfos.h ${tm_file} mips/elf.h vx-common.h vxworks.h mips/vxworks.h"
2789 tmake_file="${tmake_file} mips/t-vxworks"
2790 ;;
2791 mipstx39-*-elf* | mipstx39el-*-elf*)
2792 tm_file="elfos.h newlib-stdint.h ${tm_file} mips/r3900.h mips/elf.h"
2793 tmake_file="mips/t-r3900"
2794 ;;
2795 mmix-knuth-mmixware)
2796 tm_file="${tm_file} newlib-stdint.h"
2797 use_gcc_stdint=wrap
2798 ;;
2799 mn10300-*-*)
2800 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2801 use_collect2=no
2802 use_gcc_stdint=wrap
2803 ;;
2804 msp430-*-*)
2805 tm_file="elfos.h newlib-stdint.h ${tm_file}"
2806 c_target_objs="msp430-c.o"
2807 cxx_target_objs="msp430-c.o"
2808 tmake_file="${tmake_file} msp430/t-msp430"
2809 extra_objs="${extra_objs} msp430-devices.o"
2810 extra_gcc_objs="driver-msp430.o msp430-devices.o"
2811 # Enable .init_array unless it has been explicitly disabled.
2812 # The MSP430 EABI mandates the use of .init_array, and the Newlib CRT
2813 # code since mid-2019 expects it.
2814 if test x${disable_initfini_array} != xyes; then
2815 gcc_cv_initfini_array=yes
2816 fi
2817 case ${target} in
2818 msp430-*-elfbare)
2819 # __cxa_atexit increases code size, and we don't need to support
2820 # dynamic shared objects on MSP430, so regular Newlib atexit is a
2821 # fine replacement as it also supports registration of more than 32
2822 # functions.
2823 default_use_cxa_atexit=no
2824 # This target does not match the generic *-*-elf case above which
2825 # sets use_gcc_stdint=wrap, so explicitly set it here.
2826 use_gcc_stdint=wrap
2827 ;;
2828 esac
2829 ;;
2830 nds32*-*-*)
2831 target_cpu_default="0"
2832 tm_defines="${tm_defines}"
2833 case ${target} in
2834 nds32le*-*-*)
2835 ;;
2836 nds32be-*-*)
2837 target_cpu_default="${target_cpu_default}|MASK_BIG_ENDIAN"
2838 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
2839 ;;
2840 esac
2841 case ${target} in
2842 nds32*-*-elf*)
2843 tm_file="elfos.h newlib-stdint.h ${tm_file} nds32/elf.h nds32/nds32_intrinsic.h"
2844 tmake_file="nds32/t-nds32 nds32/t-elf"
2845 ;;
2846 nds32*-*-linux*)
2847 tm_file="elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h nds32/linux.h nds32/nds32_intrinsic.h"
2848 tmake_file="${tmake_file} nds32/t-nds32 nds32/t-linux"
2849 gcc_cv_initfini_array=yes
2850 ;;
2851 esac
2852
2853 # Handle --enable-default-relax setting.
2854 if test x${enable_default_relax} = xyes; then
2855 tm_defines="${tm_defines} TARGET_DEFAULT_RELAX=1"
2856 fi
2857 # Handle --with-ext-dsp
2858 if test x${with_ext_dsp} = xyes; then
2859 tm_defines="${tm_defines} TARGET_DEFAULT_EXT_DSP=1"
2860 fi
2861 ;;
2862 nios2-*-*)
2863 tm_file="elfos.h ${tm_file}"
2864 tmake_file="${tmake_file} nios2/t-nios2"
2865 case ${target} in
2866 nios2-*-linux*)
2867 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h nios2/linux.h "
2868 ;;
2869 nios2-*-elf*)
2870 tm_file="${tm_file} newlib-stdint.h nios2/elf.h"
2871 extra_options="${extra_options} nios2/elf.opt"
2872 ;;
2873 nios2-*-rtems*)
2874 tm_file="${tm_file} newlib-stdint.h nios2/rtems.h rtems.h"
2875 tmake_file="${tmake_file} t-rtems nios2/t-rtems"
2876 ;;
2877 esac
2878 ;;
2879 nvptx-*)
2880 tm_file="${tm_file} newlib-stdint.h"
2881 use_gcc_stdint=wrap
2882 tmake_file="nvptx/t-nvptx"
2883 if test x$enable_as_accelerator = xyes; then
2884 extra_programs="${extra_programs} mkoffload\$(exeext)"
2885 tm_file="${tm_file} nvptx/offload.h"
2886 fi
2887 ;;
2888 or1k*-*-*)
2889 tm_file="elfos.h ${tm_file}"
2890 tmake_file="${tmake_file} or1k/t-or1k"
2891 # Force .init_array support. The configure script cannot always
2892 # automatically detect that GAS supports it, yet we require it.
2893 gcc_cv_initfini_array=yes
2894
2895 # Handle --with-multilib-list=...
2896 or1k_multilibs="${with_multilib_list}"
2897 if test "$or1k_multilibs" = "default"; then
2898 or1k_multilibs="mcmov,msoft-mul,msoft-div"
2899 fi
2900 or1k_multilibs=`echo $or1k_multilibs | sed -e 's/,/ /g'`
2901 for or1k_multilib in ${or1k_multilibs}; do
2902 case ${or1k_multilib} in
2903 mcmov | msext | msfimm | \
2904 mror | mrori | \
2905 mhard-float | mdouble-float | munordered-float | msoft-float | \
2906 mhard-div | mhard-mul | \
2907 msoft-div | msoft-mul )
2908 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${or1k_multilib}"
2909 ;;
2910 *)
2911 echo "--with-multilib-list=${with_multilib_list} not supported."
2912 exit 1
2913 esac
2914 done
2915 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
2916
2917 case ${target} in
2918 or1k*-*-linux*)
2919 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h"
2920 tm_file="${tm_file} or1k/linux.h"
2921 ;;
2922 or1k*-*-elf*)
2923 tm_file="${tm_file} newlib-stdint.h or1k/elf.h"
2924 extra_options="${extra_options} or1k/elf.opt"
2925 ;;
2926 or1k*-*-rtems*)
2927 tm_file="${tm_file} newlib-stdint.h or1k/rtems.h rtems.h"
2928 tmake_file="${tmake_file} or1k/t-rtems"
2929 ;;
2930 esac
2931 ;;
2932 pdp11-*-*)
2933 tm_file="${tm_file} newlib-stdint.h"
2934 use_gcc_stdint=wrap
2935 ;;
2936 # port not yet contributed
2937 #powerpc-*-openbsd*)
2938 # tmake_file="${tmake_file} rs6000/t-fprules"
2939 # extra_headers=
2940 # ;;
2941 powerpc-*-darwin*)
2942 extra_options="${extra_options} ${cpu_type}/darwin.opt"
2943 case ${target} in
2944 *-darwin1[0-9]* | *-darwin9*)
2945 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2946 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2947 ;;
2948 *-darwin8*)
2949 tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
2950 tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
2951 ;;
2952 *-darwin7*)
2953 tm_file="${tm_file} ${cpu_type}/darwin7.h"
2954 ;;
2955 *-darwin[456]*)
2956 # Earlier - ingle arch, with 32b only
2957 # OS X 10.0, the first edition is Darwin4
2958 ;;
2959 esac
2960 tmake_file="${tmake_file} t-slibgcc"
2961 ;;
2962 powerpc64-*-darwin*)
2963 extra_options="${extra_options} ${cpu_type}/darwin.opt"
2964 tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
2965 tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h"
2966 ;;
2967 powerpc*-*-freebsd*)
2968 tm_file="${tm_file} elfos.h gnu-user.h ${fbsd_tm_file} rs6000/sysv4.h"
2969 extra_options="${extra_options} rs6000/sysv4.opt"
2970 tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
2971 case ${target} in
2972 powerpc*le-*-*)
2973 tm_file="${tm_file} rs6000/sysv4le.h" ;;
2974 esac
2975 case ${target} in
2976 powerpc64*)
2977 tm_file="${tm_file} rs6000/default64.h rs6000/freebsd64.h"
2978 tmake_file="${tmake_file} rs6000/t-freebsd64"
2979 extra_options="${extra_options} rs6000/linux64.opt"
2980 if test $fbsd_major -ge 13; then
2981 tm_defines="${tm_defines} TARGET_FREEBSD32_SECURE_PLT=1"
2982 fi
2983 ;;
2984 *)
2985 if test $fbsd_major -ge 13; then
2986 tm_file="rs6000/secureplt.h ${tm_file}"
2987 fi
2988 tm_file="${tm_file} rs6000/freebsd.h"
2989 ;;
2990 esac
2991 ;;
2992 powerpc-*-netbsd*)
2993 tm_file="${tm_file} elfos.h gnu-user.h ${nbsd_tm_file} freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h"
2994 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
2995 tmake_file="${tmake_file} rs6000/t-netbsd"
2996 extra_options="${extra_options} rs6000/sysv4.opt"
2997 ;;
2998 powerpc-*-eabisimaltivec*)
2999 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabisim.h rs6000/eabialtivec.h"
3000 extra_options="${extra_options} rs6000/sysv4.opt"
3001 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
3002 use_gcc_stdint=wrap
3003 ;;
3004 powerpc-*-eabisim*)
3005 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabisim.h"
3006 extra_options="${extra_options} rs6000/sysv4.opt"
3007 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3008 use_gcc_stdint=wrap
3009 ;;
3010 powerpc-*-elf*)
3011 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h"
3012 extra_options="${extra_options} rs6000/sysv4.opt"
3013 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3014 ;;
3015 powerpc-*-eabialtivec*)
3016 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabialtivec.h"
3017 extra_options="${extra_options} rs6000/sysv4.opt"
3018 tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
3019 use_gcc_stdint=wrap
3020 ;;
3021 powerpc-*-eabi*)
3022 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h"
3023 extra_options="${extra_options} rs6000/sysv4.opt"
3024 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3025 use_gcc_stdint=wrap
3026 ;;
3027 powerpc-*-rtems*)
3028 tm_file="rs6000/biarch64.h ${tm_file} elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/rtems.h rtems.h"
3029 extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
3030 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-rtems rs6000/t-ppccomm"
3031 ;;
3032 powerpc*-*-linux*)
3033 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h rs6000/sysv4.h"
3034 extra_options="${extra_options} rs6000/sysv4.opt"
3035 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm"
3036 extra_objs="$extra_objs rs6000-linux.o"
3037 case ${target} in
3038 powerpc*le-*-*)
3039 tm_file="${tm_file} rs6000/sysv4le.h" ;;
3040 esac
3041 case ${target}:${with_cpu} in
3042 powerpc64*: | powerpc64*:native) cpu_is_64bit=yes ;;
3043 esac
3044 maybe_biarch=${cpu_is_64bit}
3045 case ${enable_targets} in
3046 *powerpc64*) maybe_biarch=yes ;;
3047 all) maybe_biarch=yes ;;
3048 esac
3049 case ${target}:${enable_targets}:${maybe_biarch} in
3050 powerpc64-* | powerpc-*:*:yes | *:*powerpc64-*:yes | *:all:yes \
3051 | powerpc64le*:*powerpcle* | powerpc64le*:*powerpc-* \
3052 | powerpcle-*:*powerpc64le*:yes)
3053 if test x$cpu_is_64bit = xyes; then
3054 tm_file="${tm_file} rs6000/default64.h"
3055 fi
3056 tm_file="rs6000/biarch64.h ${tm_file} rs6000/linux64.h glibc-stdint.h"
3057 tmake_file="$tmake_file rs6000/t-linux64"
3058 case ${target} in
3059 powerpc*le-*-*)
3060 tmake_file="$tmake_file rs6000/t-linux64le"
3061 case ${enable_targets} in
3062 all | *powerpc64-* | *powerpc-*)
3063 tmake_file="$tmake_file rs6000/t-linux64lebe" ;;
3064 esac ;;
3065 *)
3066 case ${enable_targets} in
3067 all | *powerpc64le-* | *powerpcle-*)
3068 tmake_file="$tmake_file rs6000/t-linux64bele" ;;
3069 esac ;;
3070 esac
3071 extra_options="${extra_options} rs6000/linux64.opt"
3072 ;;
3073 powerpc64*)
3074 tm_file="${tm_file} rs6000/default64.h rs6000/linux64.h glibc-stdint.h"
3075 extra_options="${extra_options} rs6000/linux64.opt"
3076 tmake_file="${tmake_file} rs6000/t-linux"
3077 ;;
3078 *)
3079 tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
3080 tmake_file="${tmake_file} rs6000/t-ppcos rs6000/t-linux"
3081 ;;
3082 esac
3083 case ${target} in
3084 powerpc*-*-linux*ppc476*)
3085 tm_file="${tm_file} rs6000/476.h"
3086 extra_options="${extra_options} rs6000/476.opt" ;;
3087 powerpc*-*-linux*altivec*)
3088 tm_file="${tm_file} rs6000/linuxaltivec.h" ;;
3089 esac
3090 case ${target} in
3091 *-linux*-musl*)
3092 enable_secureplt=yes ;;
3093 esac
3094 if test x${enable_secureplt} = xyes; then
3095 tm_file="rs6000/secureplt.h ${tm_file}"
3096 fi
3097 ;;
3098 powerpc*-wrs-vxworks7r*)
3099
3100 # Wind River 7 post SR0600 is mostly like Linux so we setup
3101 # our config in a very similar fashion and adjust to a few
3102 # specificities.
3103
3104 # The system compiler is configured with secureplt by default.
3105 tm_file="${tm_file} rs6000/secureplt.h"
3106
3107 tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h"
3108 tm_file="${tm_file} rs6000/sysv4.h rs6000/biarch64.h rs6000/default64.h rs6000/linux64.h"
3109 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3110
3111 extra_options="${extra_options} rs6000/sysv4.opt linux.opt rs6000/linux64.opt"
3112
3113 tmake_file="${tmake_file} t-linux rs6000/t-linux64 rs6000/t-fprules rs6000/t-ppccomm"
3114 tmake_file="${tmake_file} rs6000/t-vxworks"
3115
3116 tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
3117 extra_objs="$extra_objs linux.o rs6000-linux.o"
3118 ;;
3119 powerpc-wrs-vxworks*)
3120 tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h rs6000/sysv4.h"
3121 tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm rs6000/t-vxworks"
3122 extra_options="${extra_options} rs6000/sysv4.opt vxworks-smp.opt"
3123 extra_headers="${extra_headers} ppc-asm.h"
3124 case ${target} in
3125 *-vxworksmils*)
3126 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksmils.h"
3127 tmake_file="${tmake_file} rs6000/t-vxworksmils"
3128 ;;
3129 *-vxworksae*)
3130 tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksae.h"
3131 tmake_file="${tmake_file} rs6000/t-vxworksae"
3132 ;;
3133 *-vxworks*)
3134 tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
3135 ;;
3136 esac
3137 ;;
3138 powerpc-*-lynxos*)
3139 xm_defines=POSIX
3140 tm_file="${tm_file} elfos.h gnu-user.h rs6000/sysv4.h rs6000/lynx.h lynx.h"
3141 tmake_file="t-lynx rs6000/t-lynx"
3142 extra_options="${extra_options} rs6000/sysv4.opt lynx.opt"
3143 thread_file=lynx
3144 gnu_ld=yes
3145 gas=yes
3146 ;;
3147 powerpcle-*-elf*)
3148 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h"
3149 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3150 extra_options="${extra_options} rs6000/sysv4.opt"
3151 ;;
3152 powerpcle-*-eabisim*)
3153 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h rs6000/eabisim.h"
3154 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3155 extra_options="${extra_options} rs6000/sysv4.opt"
3156 use_gcc_stdint=wrap
3157 ;;
3158 powerpcle-*-eabi*)
3159 tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h"
3160 tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
3161 extra_options="${extra_options} rs6000/sysv4.opt"
3162 use_gcc_stdint=wrap
3163 ;;
3164 pru*-*-*)
3165 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3166 tmake_file="${tmake_file} pru/t-pru"
3167 extra_objs="pru-pragma.o pru-passes.o"
3168 use_gcc_stdint=wrap
3169 ;;
3170 rs6000-ibm-aix7.1.* | powerpc-ibm-aix7.1.*)
3171 tmake_file="rs6000/t-aix52 t-slibgcc"
3172 if test x$cpu_is_64bit = xyes; then
3173 tm_file="${tm_file} rs6000/biarch64.h"
3174 tmake_file="rs6000/t-aix64 t-slibgcc"
3175 fi
3176 tm_file="${tm_file} rs6000/aix.h rs6000/aix71.h rs6000/xcoff.h rs6000/aix-stdint.h"
3177 extra_options="${extra_options} rs6000/aix64.opt"
3178 use_collect2=yes
3179 thread_file='aix'
3180 use_gcc_stdint=wrap
3181 default_use_cxa_atexit=yes
3182 ;;
3183 rs6000-ibm-aix7.2.* | powerpc-ibm-aix7.2.*)
3184 tmake_file="rs6000/t-aix52 t-slibgcc"
3185 if test x$cpu_is_64bit = xyes; then
3186 tm_file="${tm_file} rs6000/biarch64.h"
3187 tmake_file="rs6000/t-aix64 t-slibgcc"
3188 fi
3189 tm_file="${tm_file} rs6000/aix.h rs6000/aix72.h rs6000/xcoff.h rs6000/aix-stdint.h"
3190 extra_options="${extra_options} rs6000/aix64.opt"
3191 use_collect2=yes
3192 thread_file='aix'
3193 use_gcc_stdint=wrap
3194 default_use_cxa_atexit=yes
3195 ;;
3196 rs6000-ibm-aix[789].* | powerpc-ibm-aix[789].*)
3197 tmake_file="rs6000/t-aix52 t-slibgcc"
3198 if test x$cpu_is_64bit = xyes; then
3199 tm_file="${tm_file} rs6000/biarch64.h"
3200 tmake_file="rs6000/t-aix64 t-slibgcc"
3201 fi
3202 tm_file="${tm_file} rs6000/aix.h rs6000/aix73.h rs6000/xcoff.h rs6000/aix-stdint.h"
3203 extra_options="${extra_options} rs6000/aix64.opt"
3204 use_collect2=yes
3205 thread_file='aix'
3206 use_gcc_stdint=wrap
3207 default_use_cxa_atexit=yes
3208 ;;
3209 rl78-*-elf*)
3210 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3211 target_has_targetm_common=no
3212 c_target_objs="rl78-c.o"
3213 cxx_target_objs="rl78-c.o"
3214 tmake_file="${tmake_file} rl78/t-rl78"
3215 ;;
3216 rx-*-elf*)
3217 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3218 tmake_file="${tmake_file} rx/t-rx"
3219 extra_options="${extra_options} rx/elf.opt"
3220 ;;
3221 rx-*-linux*)
3222 tm_file="elfos.h linux.h glibc-stdint.h rx/linux.h ../../libgcc/config/rx/rx-abi.h"
3223 tmake_file="${tmake_file} rx/t-linux"
3224 ;;
3225 s390-*-linux*)
3226 tm_file="s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3227 c_target_objs="${c_target_objs} s390-c.o"
3228 cxx_target_objs="${cxx_target_objs} s390-c.o"
3229 if test x$enable_targets = xall; then
3230 tmake_file="${tmake_file} s390/t-linux64"
3231 fi
3232 tmake_file="${tmake_file} s390/t-s390"
3233 ;;
3234 s390x-*-linux*)
3235 tm_file="s390/s390x.h s390/s390.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
3236 tm_p_file="linux-protos.h s390/s390-protos.h"
3237 c_target_objs="${c_target_objs} s390-c.o"
3238 cxx_target_objs="${cxx_target_objs} s390-c.o"
3239 md_file=s390/s390.md
3240 extra_modes=s390/s390-modes.def
3241 out_file=s390/s390.cc
3242 tmake_file="${tmake_file} s390/t-linux64 s390/t-s390"
3243 ;;
3244 s390x-ibm-tpf*)
3245 tm_file="s390/s390x.h s390/s390.h elfos.h glibc-stdint.h s390/tpf.h"
3246 tm_p_file=s390/s390-protos.h
3247 c_target_objs="${c_target_objs} s390-c.o"
3248 cxx_target_objs="${cxx_target_objs} s390-c.o"
3249 md_file=s390/s390.md
3250 extra_modes=s390/s390-modes.def
3251 out_file=s390/s390.cc
3252 thread_file='tpf'
3253 extra_options="${extra_options} s390/tpf.opt"
3254 tmake_file="${tmake_file} s390/t-s390"
3255 ;;
3256 sh-*-elf* | sh[12346l]*-*-elf* | \
3257 sh-*-linux* | sh[2346lbe]*-*-linux* | \
3258 sh-*-netbsdelf* | shl*-*-netbsdelf*)
3259 tmake_file="${tmake_file} sh/t-sh sh/t-elf"
3260 if test x${with_endian} = x; then
3261 case ${target} in
3262 sh[1234]*be-*-* | sh[1234]*eb-*-*) with_endian=big ;;
3263 shbe-*-* | sheb-*-*) with_endian=big,little ;;
3264 sh[1234]l* | sh[34]*-*-linux*) with_endian=little ;;
3265 shl* | sh*-*-linux* | \
3266 sh-superh-elf) with_endian=little,big ;;
3267 sh[1234]*-*-*) with_endian=big ;;
3268 *) with_endian=big,little ;;
3269 esac
3270 fi
3271 # TM_ENDIAN_CONFIG is used by t-sh to determine multilibs.
3272 # First word : the default endian.
3273 # Second word: the secondary endian (optional).
3274 case ${with_endian} in
3275 big) TM_ENDIAN_CONFIG=mb ;;
3276 little) TM_ENDIAN_CONFIG=ml ;;
3277 big,little) TM_ENDIAN_CONFIG="mb ml" ;;
3278 little,big) TM_ENDIAN_CONFIG="ml mb" ;;
3279 *) echo "with_endian=${with_endian} not supported."; exit 1 ;;
3280 esac
3281 case ${with_endian} in
3282 little*) tm_file="sh/little.h ${tm_file}" ;;
3283 esac
3284 tm_file="${tm_file} elfos.h sh/elf.h"
3285 case ${target} in
3286 sh*-*-linux*) tmake_file="${tmake_file} sh/t-linux"
3287 if test x$enable_fdpic = xyes; then
3288 tm_defines="$tm_defines FDPIC_DEFAULT=1"
3289 fi
3290 tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h sh/linux.h" ;;
3291 sh*-*-netbsd*)
3292 tm_file="${tm_file} ${nbsd_tm_file} sh/netbsd-elf.h"
3293 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3294
3295 ;;
3296 sh*-superh-elf) if test x$with_libgloss != xno; then
3297 with_libgloss=yes
3298 tm_file="${tm_file} sh/newlib.h"
3299 fi
3300 tm_file="${tm_file} sh/embed-elf.h"
3301 tm_file="${tm_file} sh/superh.h"
3302 extra_options="${extra_options} sh/superh.opt" ;;
3303 *) if test x$with_newlib = xyes \
3304 && test x$with_libgloss = xyes; then
3305 tm_file="${tm_file} sh/newlib.h"
3306 fi
3307 tm_file="${tm_file} sh/embed-elf.h" ;;
3308 esac
3309 case ${target} in
3310 *-*-netbsd)
3311 ;;
3312 *-*-elf*)
3313 tm_file="${tm_file} newlib-stdint.h"
3314 ;;
3315 esac
3316 # sed el/eb endian suffixes away to avoid confusion with sh[23]e
3317 case `echo ${target} | sed 's/e[lb]-/-/'` in
3318 sh4a_single_only*) sh_cpu_target=sh4a-single-only ;;
3319 sh4a_single*) sh_cpu_target=sh4a-single ;;
3320 sh4a_nofpu*) sh_cpu_target=sh4a-nofpu ;;
3321 sh4al) sh_cpu_target=sh4al ;;
3322 sh4a*) sh_cpu_target=sh4a ;;
3323 sh4_single_only*) sh_cpu_target=sh4-single-only ;;
3324 sh4_single*) sh_cpu_target=sh4-single ;;
3325 sh4_nofpu*) sh_cpu_target=sh4-nofpu ;;
3326 sh4* | sh-superh-*) sh_cpu_target=sh4 ;;
3327 sh3e*) sh_cpu_target=sh3e ;;
3328 sh*-*-netbsd* | sh3*) sh_cpu_target=sh3 ;;
3329 sh2a_single_only*) sh_cpu_target=sh2a-single-only ;;
3330 sh2a_single*) sh_cpu_target=sh2a-single ;;
3331 sh2a_nofpu*) sh_cpu_target=sh2a-nofpu ;;
3332 sh2a*) sh_cpu_target=sh2a ;;
3333 sh2e*) sh_cpu_target=sh2e ;;
3334 sh2*) sh_cpu_target=sh2 ;;
3335 *) sh_cpu_target=sh1 ;;
3336 esac
3337 # did the user say --without-fp ?
3338 if test x$with_fp = xno; then
3339 case ${sh_cpu_target} in
3340 sh4al | sh1) ;;
3341 sh4a* ) sh_cpu_target=sh4a-nofpu ;;
3342 sh4*) sh_cpu_target=sh4-nofpu ;;
3343 sh3*) sh_cpu_target=sh3 ;;
3344 sh2a*) sh_cpu_target=sh2a-nofpu ;;
3345 sh2*) sh_cpu_target=sh2 ;;
3346 *) echo --without-fp not available for $target: ignored
3347 esac
3348 tm_defines="$tm_defines STRICT_NOFPU=1"
3349 fi
3350 sh_cpu_default="`echo $with_cpu|sed s/^m/sh/|tr A-Z_ a-z-`"
3351 case $sh_cpu_default in
3352 sh2a-single-only | sh2a-single | sh2a-nofpu | sh2a | \
3353 sh4a-single-only | sh4a-single | sh4a-nofpu | sh4a | sh4al | \
3354 sh4-single-only | sh4-single | sh4-nofpu | sh4 | sh4-300 | \
3355 sh3e | sh3 | sh2e | sh2 | sh1) ;;
3356 "") sh_cpu_default=${sh_cpu_target} ;;
3357 *) echo "with_cpu=$with_cpu not supported"; exit 1 ;;
3358 esac
3359 sh_multilibs=${with_multilib_list}
3360 if test "$sh_multilibs" = "default" ; then
3361 case ${target} in
3362 sh[1234]*) sh_multilibs=${sh_cpu_target} ;;
3363 sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
3364 sh*-*-linux*) sh_multilibs=m1,m2,m2a,m3e,m4 ;;
3365 sh*-*-netbsd*) sh_multilibs=m3,m3e,m4 ;;
3366 *) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single ;;
3367 esac
3368 if test x$with_fp = xno; then
3369 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`"
3370 fi
3371 fi
3372 target_cpu_default=SELECT_`echo ${sh_cpu_default}|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`
3373 tm_defines=${tm_defines}' SH_MULTILIB_CPU_DEFAULT=\"'`echo $sh_cpu_default|sed s/sh/m/`'\"'
3374 tm_defines="$tm_defines SUPPORT_`echo $sh_cpu_default | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3375 sh_multilibs=`echo $sh_multilibs | sed -e 's/,/ /g' -e 's/^[Ss][Hh]/m/' -e 's/ [Ss][Hh]/ m/g' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-`
3376 for sh_multilib in ${sh_multilibs}; do
3377 case ${sh_multilib} in
3378 m1 | m2 | m2e | m3 | m3e | \
3379 m4 | m4-single | m4-single-only | m4-nofpu | m4-300 |\
3380 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al | \
3381 m2a | m2a-single | m2a-single-only | m2a-nofpu)
3382 # TM_MULTILIB_CONFIG is used by t-sh for the non-endian multilib definition
3383 # It is passed to MULTIILIB_OPTIONS verbatim.
3384 TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG}/${sh_multilib}"
3385 tm_defines="$tm_defines SUPPORT_`echo $sh_multilib | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
3386 ;;
3387 \!*) # TM_MULTILIB_EXCEPTIONS_CONFIG is used by t-sh
3388 # It is passed the MULTILIB_EXCEPTIONS verbatim.
3389 TM_MULTILIB_EXCEPTIONS_CONFIG="${TM_MULTILIB_EXCEPTIONS_CONFIG} `echo $sh_multilib | sed 's/^!//'`" ;;
3390 *)
3391 echo "with_multilib_list=${sh_multilib} not supported."
3392 exit 1
3393 ;;
3394 esac
3395 done
3396 TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's:^/::'`
3397 if test x${enable_incomplete_targets} = xyes ; then
3398 tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1"
3399 fi
3400 tm_file="$tm_file ./sysroot-suffix.h"
3401 tmake_file="$tmake_file t-sysroot-suffix"
3402 ;;
3403 sh-*-rtems*)
3404 tmake_file="${tmake_file} sh/t-sh sh/t-rtems"
3405 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h newlib-stdint.h"
3406 ;;
3407 sh-wrs-vxworks)
3408 tmake_file="$tmake_file sh/t-sh sh/t-vxworks"
3409 tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h vx-common.h vxworks.h sh/vxworks.h"
3410 ;;
3411 sparc-*-elf*)
3412 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp-elf.h"
3413 case ${target} in
3414 *-leon-*)
3415 tmake_file="sparc/t-sparc sparc/t-leon"
3416 ;;
3417 *-leon[3-9]*)
3418 tmake_file="sparc/t-sparc sparc/t-leon3"
3419 ;;
3420 *)
3421 tmake_file="sparc/t-sparc sparc/t-elf"
3422 ;;
3423 esac
3424 ;;
3425 sparc-*-rtems*)
3426 tm_file="${tm_file} elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
3427 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
3428 ;;
3429 sparc-*-linux*)
3430 tm_file="${tm_file} elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
3431 extra_options="${extra_options} sparc/long-double-switch.opt"
3432 case ${target} in
3433 *-leon-*)
3434 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon"
3435 ;;
3436 *-leon[3-9]*)
3437 tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon3"
3438 ;;
3439 *)
3440 tmake_file="${tmake_file} sparc/t-sparc"
3441 ;;
3442 esac
3443 if test x$enable_targets = xall; then
3444 tm_file="sparc/biarch64.h ${tm_file} sparc/linux64.h"
3445 tmake_file="${tmake_file} sparc/t-linux64"
3446 else
3447 tm_file="${tm_file} sparc/linux.h"
3448 tmake_file="${tmake_file} sparc/t-linux"
3449 fi
3450 ;;
3451 sparc-*-netbsdelf*)
3452 tm_file="${tm_file} elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3453 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3454 extra_options="${extra_options} sparc/long-double-switch.opt"
3455 tmake_file="${tmake_file} sparc/t-sparc"
3456 ;;
3457 sparc*-*-solaris2*)
3458 tm_file="sparc/biarch64.h ${tm_file} ${sol2_tm_file} sparc/tso.h"
3459 case ${target} in
3460 sparc64-*-* | sparcv9-*-*)
3461 tm_file="sparc/default64.h ${tm_file}"
3462 ;;
3463 *)
3464 test x$with_cpu != x || with_cpu=v9
3465 ;;
3466 esac
3467 tmake_file="${tmake_file} sparc/t-sparc sparc/t-sol2"
3468 ;;
3469 sparc-wrs-vxworks)
3470 tm_file="${tm_file} elfos.h sparc/sysv4.h vx-common.h vxworks.h sparc/vxworks.h"
3471 tmake_file="${tmake_file} sparc/t-sparc sparc/t-vxworks"
3472 ;;
3473 sparc64-*-elf*)
3474 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h"
3475 extra_options="${extra_options}"
3476 tmake_file="${tmake_file} sparc/t-sparc"
3477 ;;
3478 sparc64-*-rtems*)
3479 tm_file="${tm_file} elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h sparc/rtemself.h rtems.h"
3480 extra_options="${extra_options}"
3481 tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
3482 ;;
3483 sparc64-*-linux*)
3484 tm_file="sparc/biarch64.h ${tm_file} elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default64.h sparc/linux64.h sparc/tso.h"
3485 extra_options="${extra_options} sparc/long-double-switch.opt"
3486 tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
3487 ;;
3488 sparc64-*-freebsd*|ultrasparc-*-freebsd*)
3489 tm_file="${tm_file} ${fbsd_tm_file} elfos.h sparc/sysv4.h sparc/freebsd.h"
3490 extra_options="${extra_options} sparc/long-double-switch.opt"
3491 case "x$with_cpu" in
3492 xultrasparc) ;;
3493 x) with_cpu=ultrasparc ;;
3494 *) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
3495 esac
3496 tmake_file="${tmake_file} sparc/t-sparc"
3497 ;;
3498 sparc64-*-netbsd*)
3499 tm_file="sparc/biarch64.h ${tm_file}"
3500 tm_file="${tm_file} elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
3501 extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
3502 extra_options="${extra_options} sparc/long-double-switch.opt"
3503 tmake_file="${tmake_file} sparc/t-sparc sparc/t-netbsd64"
3504 ;;
3505 sparc64-*-openbsd*)
3506 tm_file="sparc/openbsd1-64.h ${tm_file} elfos.h sparc/sysv4.h sparc/sp64-elf.h"
3507 tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h sparc/openbsd64.h"
3508 extra_options="${extra_options} openbsd.opt"
3509 extra_options="${extra_options}"
3510 gas=yes gnu_ld=yes
3511 with_cpu=ultrasparc
3512 tmake_file="${tmake_file} sparc/t-sparc"
3513 ;;
3514 tic6x-*-elf)
3515 tm_file="elfos.h ${tm_file} c6x/elf-common.h c6x/elf.h"
3516 tm_file="${tm_file} tm-dwarf2.h newlib-stdint.h"
3517 tmake_file="c6x/t-c6x c6x/t-c6x-elf"
3518 use_collect2=no
3519 ;;
3520 tic6x-*-uclinux)
3521 tm_file="elfos.h ${tm_file} gnu-user.h linux.h c6x/elf-common.h c6x/uclinux-elf.h"
3522 tm_file="${tm_file} tm-dwarf2.h glibc-stdint.h"
3523 tm_file="${tm_file} ./sysroot-suffix.h"
3524 tmake_file="t-sysroot-suffix t-slibgcc"
3525 tmake_file="${tmake_file} c6x/t-c6x c6x/t-c6x-elf c6x/t-c6x-uclinux"
3526 use_collect2=no
3527 ;;
3528 v850-*-rtems*)
3529 target_cpu_default="TARGET_CPU_generic"
3530 tm_file="elfos.h v850/v850.h"
3531 tm_file="${tm_file} v850/rtems.h rtems.h newlib-stdint.h"
3532 tmake_file="${tmake_file} v850/t-v850"
3533 tmake_file="${tmake_file} v850/t-rtems"
3534 use_collect2=no
3535 c_target_objs="v850-c.o"
3536 cxx_target_objs="v850-c.o"
3537 ;;
3538 v850*-*-*)
3539 case ${target} in
3540 v850e3v5-*-*)
3541 target_cpu_default="TARGET_CPU_v850e3v5"
3542 ;;
3543 v850e2v3-*-*)
3544 target_cpu_default="TARGET_CPU_v850e2v3"
3545 ;;
3546 v850e2-*-*)
3547 target_cpu_default="TARGET_CPU_v850e2"
3548 ;;
3549 v850e1-*-* | v850es-*-*)
3550 target_cpu_default="TARGET_CPU_v850e1"
3551 ;;
3552 v850e-*-*)
3553 target_cpu_default="TARGET_CPU_v850e"
3554 ;;
3555 v850-*-*)
3556 target_cpu_default="TARGET_CPU_generic"
3557 ;;
3558 esac
3559 tm_file="elfos.h newlib-stdint.h v850/v850.h"
3560 use_collect2=no
3561 c_target_objs="v850-c.o"
3562 cxx_target_objs="v850-c.o"
3563 use_gcc_stdint=wrap
3564 ;;
3565 vax-*-linux*)
3566 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h vax/elf.h vax/linux.h"
3567 extra_options="${extra_options} vax/elf.opt"
3568 ;;
3569 vax-*-netbsdelf*)
3570 tm_file="${tm_file} elfos.h ${nbsd_tm_file} vax/elf.h vax/netbsd-elf.h"
3571 extra_options="${extra_options} netbsd.opt netbsd-elf.opt vax/elf.opt"
3572 tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
3573 ;;
3574 visium-*-elf*)
3575 tm_file="elfos.h ${tm_file} visium/elf.h newlib-stdint.h"
3576 tmake_file="visium/t-visium visium/t-crtstuff"
3577 ;;
3578 xstormy16-*-elf)
3579 # For historical reasons, the target files omit the 'x'.
3580 tm_file="elfos.h newlib-stdint.h stormy16/stormy16.h"
3581 tm_p_file=stormy16/stormy16-protos.h
3582 md_file=stormy16/stormy16.md
3583 out_file=stormy16/stormy16.cc
3584 extra_options=stormy16/stormy16.opt
3585 tmake_file="stormy16/t-stormy16"
3586 ;;
3587 xtensa*-*-elf*)
3588 tm_file="${tm_file} elfos.h newlib-stdint.h xtensa/elf.h"
3589 extra_options="${extra_options} xtensa/elf.opt"
3590 ;;
3591 xtensa*-*-linux*)
3592 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/linux.h"
3593 tmake_file="${tmake_file} xtensa/t-xtensa"
3594 ;;
3595 xtensa*-*-uclinux*)
3596 tm_file="${tm_file} elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/uclinux.h"
3597 tmake_file="${tmake_file} xtensa/t-xtensa"
3598 extra_options="${extra_options} xtensa/uclinux.opt"
3599 ;;
3600 am33_2.0-*-linux*)
3601 tm_file="mn10300/mn10300.h elfos.h gnu-user.h linux.h glibc-stdint.h mn10300/linux.h"
3602 gas=yes gnu_ld=yes
3603 use_collect2=no
3604 ;;
3605 m32c-*-elf*)
3606 tm_file="elfos.h newlib-stdint.h ${tm_file}"
3607 c_target_objs="m32c-pragma.o"
3608 cxx_target_objs="m32c-pragma.o"
3609 ;;
3610 *)
3611 echo "*** Configuration ${target} not supported" 1>&2
3612 exit 1
3613 ;;
3614 esac
3615
3616 case ${target} in
3617 i[34567]86-*-linux* | x86_64-*-linux*)
3618 tmake_file="${tmake_file} i386/t-pmm_malloc i386/t-i386"
3619 ;;
3620 i[34567]86-*-* | x86_64-*-*)
3621 tmake_file="${tmake_file} i386/t-gmm_malloc i386/t-i386"
3622 ;;
3623 powerpc*-*-* | rs6000-*-*)
3624 tm_file="${tm_file} ${cpu_type}/option-defaults.h"
3625 esac
3626
3627 # non-glibc systems
3628 case ${target} in
3629 *-linux-musl*)
3630 tmake_file="${tmake_file} t-musl"
3631 ;;
3632 *-linux-uclibc*)
3633 tmake_file="${tmake_file} t-uclibc"
3634 ;;
3635 esac
3636
3637 # Assume the existence of indirect function support and allow the use of the
3638 # resolver attribute.
3639 case ${target} in
3640 *-*-linux*android*|*-*-linux*uclibc*|*-*-linux*musl*)
3641 ;;
3642 *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
3643 ;;
3644 *-*-linux* | *-*-gnu*)
3645 case ${target} in
3646 aarch64*-* | arm*-* | i[34567]86-* | powerpc*-* | s390*-* | sparc*-* | x86_64-* | loongarch*-*)
3647 default_gnu_indirect_function=yes
3648 ;;
3649 esac
3650 ;;
3651 esac
3652
3653 if [ "$target_has_targetcm" = "no" ]; then
3654 c_target_objs="$c_target_objs default-c.o"
3655 cxx_target_objs="$cxx_target_objs default-c.o"
3656 fi
3657
3658 if [ "$common_out_file" = "" ]; then
3659 if [ "$target_has_targetm_common" = "yes" ]; then
3660 common_out_file="$cpu_type/$cpu_type-common.cc"
3661 else
3662 common_out_file="default-common.cc"
3663 fi
3664 fi
3665
3666 if [ "$target_has_targetdm" = "no" ]; then
3667 d_target_objs="$d_target_objs default-d.o"
3668 fi
3669
3670 if [ "$target_has_targetrustm" = "no" ]; then
3671 rust_target_objs="$rust_target_objs default-rust.o"
3672 fi
3673
3674 # Support for --with-cpu and related options (and a few unrelated options,
3675 # too).
3676 case ${with_cpu} in
3677 yes | no)
3678 echo "--with-cpu must be passed a value" 1>&2
3679 exit 1
3680 ;;
3681 esac
3682
3683 # Set arch and cpu from ${target} and ${target_noncanonical}. Set cpu
3684 # to generic if there is no processor scheduler model for the target.
3685 arch=
3686 cpu=
3687 arch_without_sse2=no
3688 arch_without_64bit=no
3689 case ${target} in
3690 i386-*-freebsd*)
3691 if test $fbsd_major -ge 6; then
3692 arch=i486
3693 else
3694 arch=i386
3695 fi
3696 cpu=generic
3697 arch_without_sse2=yes
3698 arch_without_64bit=yes
3699 ;;
3700 i386-*-netbsd*)
3701 arch=i486
3702 cpu=generic
3703 arch_without_sse2=yes
3704 arch_without_64bit=yes
3705 ;;
3706 i386-*-*)
3707 arch=i386
3708 cpu=i386
3709 arch_without_sse2=yes
3710 arch_without_64bit=yes
3711 ;;
3712 i486-*-*)
3713 arch=i486
3714 cpu=i486
3715 arch_without_sse2=yes
3716 arch_without_64bit=yes
3717 ;;
3718 i586-*-*)
3719 arch_without_sse2=yes
3720 arch_without_64bit=yes
3721 case ${target_noncanonical} in
3722 k6_2-*)
3723 arch=k6-2
3724 cpu=k6-2
3725 ;;
3726 k6_3-*)
3727 arch=k6-3
3728 cpu=k6-3
3729 ;;
3730 k6-*)
3731 arch=k6
3732 cpu=k6
3733 ;;
3734 pentium_mmx-*|winchip_c6-*|winchip2-*|c3-*)
3735 arch=pentium-mmx
3736 cpu=pentium-mmx
3737 ;;
3738 *)
3739 arch=pentium
3740 cpu=pentium
3741 ;;
3742 esac
3743 ;;
3744 i686-*-* | i786-*-*)
3745 case ${target_noncanonical} in
3746 znver1-*)
3747 arch=znver1
3748 cpu=znver1
3749 ;;
3750 znver2-*)
3751 arch=znver2
3752 cpu=znver2
3753 ;;
3754 znver3-*)
3755 arch=znver3
3756 cpu=znver3
3757 ;;
3758 znver4-*)
3759 arch=znver4
3760 cpu=znver4
3761 ;;
3762 znver5-*)
3763 arch=znver5
3764 cpu=znver5
3765 ;;
3766 bdver4-*)
3767 arch=bdver4
3768 cpu=bdver4
3769 ;;
3770 bdver3-*)
3771 arch=bdver3
3772 cpu=bdver3
3773 ;;
3774 bdver2-*)
3775 arch=bdver2
3776 cpu=bdver2
3777 ;;
3778 bdver1-*)
3779 arch=bdver1
3780 cpu=bdver1
3781 ;;
3782 btver1-*)
3783 arch=btver1
3784 cpu=btver1
3785 ;;
3786 btver2-*)
3787 arch=btver2
3788 cpu=btver2
3789 ;;
3790 amdfam10-*|barcelona-*)
3791 arch=amdfam10
3792 cpu=amdfam10
3793 ;;
3794 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3795 arch=k8-sse3
3796 cpu=k8-sse3
3797 ;;
3798 k8-*|opteron-*|athlon64-*|athlon_fx-*)
3799 arch=k8
3800 cpu=k8
3801 ;;
3802 athlon_xp-*|athlon_mp-*|athlon_4-*)
3803 arch=athlon-4
3804 cpu=athlon-4
3805 arch_without_sse2=yes
3806 arch_without_64bit=yes
3807 ;;
3808 athlon_tbird-*|athlon-*)
3809 arch=athlon
3810 cpu=athlon
3811 arch_without_sse2=yes
3812 ;;
3813 geode-*)
3814 arch=geode
3815 cpu=geode
3816 arch_without_sse2=yes
3817 ;;
3818 lujiazui-*)
3819 arch=lujiazui
3820 cpu=lujiazui
3821 ;;
3822 yongfeng-*)
3823 arch=yongfeng
3824 cpu=yongfeng
3825 ;;
3826 pentium2-*)
3827 arch=pentium2
3828 cpu=pentium2
3829 arch_without_sse2=yes
3830 ;;
3831 pentium3-*|pentium3m-*)
3832 arch=pentium3
3833 cpu=pentium3
3834 arch_without_sse2=yes
3835 ;;
3836 pentium4-*|pentium4m-*)
3837 arch=pentium4
3838 cpu=pentium4
3839 ;;
3840 prescott-*)
3841 arch=prescott
3842 cpu=prescott
3843 ;;
3844 nocona-*)
3845 arch=nocona
3846 cpu=nocona
3847 ;;
3848 atom-*)
3849 arch=atom
3850 cpu=atom
3851 ;;
3852 slm-*)
3853 arch=slm
3854 cpu=slm
3855 ;;
3856 core2-*)
3857 arch=core2
3858 cpu=core2
3859 ;;
3860 corei7-*)
3861 arch=corei7
3862 cpu=corei7
3863 ;;
3864 corei7_avx-*)
3865 arch=corei7-avx
3866 cpu=corei7-avx
3867 ;;
3868 pentium_m-*)
3869 arch=pentium-m
3870 cpu=pentium-m
3871 ;;
3872 pentiumpro-*)
3873 arch=pentiumpro
3874 cpu=pentiumpro
3875 arch_without_sse2=yes
3876 ;;
3877 *)
3878 arch=pentiumpro
3879 cpu=generic
3880 arch_without_sse2=yes
3881 arch_without_64bit=yes
3882 ;;
3883 esac
3884 ;;
3885 x86_64-*-*)
3886 case ${target_noncanonical} in
3887 znver1-*)
3888 arch=znver1
3889 cpu=znver1
3890 ;;
3891 znver2-*)
3892 arch=znver2
3893 cpu=znver2
3894 ;;
3895 znver3-*)
3896 arch=znver3
3897 cpu=znver3
3898 ;;
3899 znver4-*)
3900 arch=znver4
3901 cpu=znver4
3902 ;;
3903 znver5-*)
3904 arch=znver5
3905 cpu=znver5
3906 ;;
3907 bdver4-*)
3908 arch=bdver4
3909 cpu=bdver4
3910 ;;
3911 bdver3-*)
3912 arch=bdver3
3913 cpu=bdver3
3914 ;;
3915 bdver2-*)
3916 arch=bdver2
3917 cpu=bdver2
3918 ;;
3919 bdver1-*)
3920 arch=bdver1
3921 cpu=bdver1
3922 ;;
3923 btver1-*)
3924 arch=btver1
3925 cpu=btver1
3926 ;;
3927 btver2-*)
3928 arch=btver2
3929 cpu=btver2
3930 ;;
3931 amdfam10-*|barcelona-*)
3932 arch=amdfam10
3933 cpu=amdfam10
3934 ;;
3935 k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
3936 arch=k8-sse3
3937 cpu=k8-sse3
3938 ;;
3939 k8-*|opteron-*|athlon_64-*)
3940 arch=k8
3941 cpu=k8
3942 ;;
3943 lujiazui-*)
3944 arch=lujiazui
3945 cpu=lujiazui
3946 ;;
3947 yongfeng-*)
3948 arch=yongfeng
3949 cpu=yongfeng
3950 ;;
3951 nocona-*)
3952 arch=nocona
3953 cpu=nocona
3954 ;;
3955 atom-*)
3956 arch=atom
3957 cpu=atom
3958 ;;
3959 slm-*)
3960 arch=slm
3961 cpu=slm
3962 ;;
3963 core2-*)
3964 arch=core2
3965 cpu=core2
3966 ;;
3967 corei7-*)
3968 arch=corei7
3969 cpu=corei7
3970 ;;
3971 *)
3972 arch=x86-64
3973 cpu=generic
3974 ;;
3975 esac
3976 ;;
3977 esac
3978
3979 # If there is no $with_cpu option, try to infer one from ${target}.
3980 # This block sets nothing except for with_cpu.
3981 if test x$with_cpu = x ; then
3982 case ${target} in
3983 i[34567]86-*-elfiamcu)
3984 with_cpu=lakemont
3985 ;;
3986 i[34567]86-*-*|x86_64-*-*)
3987 with_cpu=$cpu
3988 ;;
3989 alphaev6[78]*-*-*)
3990 with_cpu=ev67
3991 ;;
3992 alphaev6*-*-*)
3993 with_cpu=ev6
3994 ;;
3995 alphapca56*-*-*)
3996 with_cpu=pca56
3997 ;;
3998 alphaev56*-*-*)
3999 with_cpu=ev56
4000 ;;
4001 alphaev5*-*-*)
4002 with_cpu=ev5
4003 ;;
4004 frv-*-*linux* | frv400-*-*linux*)
4005 with_cpu=fr400
4006 ;;
4007 frv550-*-*linux*)
4008 with_cpu=fr550
4009 ;;
4010 m68k*-*-*)
4011 case "$with_arch" in
4012 "cf")
4013 with_cpu=${default_cf_cpu}
4014 ;;
4015 "" | "m68k")
4016 with_cpu=m${default_m68k_cpu}
4017 ;;
4018 esac
4019 ;;
4020 sparc*-*-*)
4021 case ${target} in
4022 *-leon-*)
4023 with_cpu=leon
4024 ;;
4025 *-leon[3-9]*)
4026 with_cpu=leon3
4027 ;;
4028 *-leon[3-9]v7*)
4029 with_cpu=leon3v7
4030 ;;
4031 *)
4032 with_cpu="`echo ${target} | sed 's/-.*$//'`"
4033 ;;
4034 esac
4035 ;;
4036 visium-*-*)
4037 with_cpu=gr5
4038 ;;
4039 esac
4040
4041 # Avoid overriding --with-cpu-32 and --with-cpu-64 values.
4042 case ${target} in
4043 i[34567]86-*-*|x86_64-*-*)
4044 if test x$with_cpu_32 != x || test x$with_cpu_64 != x; then
4045 if test x$with_cpu_32 = x; then
4046 with_cpu_32=$with_cpu
4047 fi
4048 if test x$with_cpu_64 = x; then
4049 with_cpu_64=$with_cpu
4050 fi
4051 with_cpu=
4052 fi
4053 ;;
4054 esac
4055 fi
4056
4057 # Support for --with-arch and related options (and a few unrelated options,
4058 # too).
4059 case ${with_arch} in
4060 yes | no)
4061 echo "--with-arch must be passed a value" 1>&2
4062 exit 1
4063 ;;
4064 esac
4065
4066 # If there is no $with_arch option, try to infer one from ${target}.
4067 # This block sets nothing except for with_arch.
4068 if test x$with_arch = x ; then
4069 case ${target} in
4070 i[34567]86-*-darwin*|x86_64-*-darwin*)
4071 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
4072 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
4073 ;;
4074 i[34567]86-*-elfiamcu)
4075 with_arch=lakemont
4076 ;;
4077 i[34567]86-*-*)
4078 # --with-fpmath sets the default ISA to SSE2, which is the same
4079 # ISA supported by Pentium 4.
4080 if test x$with_fpmath = x || test $arch_without_sse2 = no; then
4081 with_arch=$arch
4082 else
4083 with_arch=pentium4
4084 fi
4085 ;;
4086 x86_64-*-*)
4087 with_arch=$arch
4088 ;;
4089 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4090 with_arch=r5900
4091 ;;
4092 mips*-*-vxworks)
4093 with_arch=mips2
4094 ;;
4095 nvptx-*)
4096 with_arch=sm_30
4097 ;;
4098 esac
4099
4100 # Avoid overriding --with-arch-32 and --with-arch-64 values.
4101 case ${target} in
4102 i[34567]86-*-darwin*|x86_64-*-darwin*)
4103 # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
4104 # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
4105 ;;
4106 i[34567]86-*-*|x86_64-*-*)
4107 if test x$with_arch_32 != x || test x$with_arch_64 != x; then
4108 if test x$with_arch_32 = x; then
4109 with_arch_32=$with_arch
4110 fi
4111 if test x$with_arch_64 = x; then
4112 if test $arch_without_64bit = yes; then
4113 # Set the default 64bit arch to x86-64 if the default arch
4114 # doesn't support 64bit.
4115 with_arch_64=x86-64
4116 else
4117 with_arch_64=$with_arch
4118 fi
4119 fi
4120 with_arch=
4121 elif test $arch_without_64bit$need_64bit_isa = yesyes; then
4122 # Set the default 64bit arch to x86-64 if the default arch
4123 # doesn't support 64bit and we need 64bit ISA.
4124 with_arch_32=$with_arch
4125 with_arch_64=x86-64
4126 with_arch=
4127 fi
4128 ;;
4129 esac
4130 fi
4131
4132 # Infer a default setting for --with-float.
4133 if test x$with_float = x; then
4134 case ${target} in
4135 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4136 # The R5900 doesn't support 64-bit float. 32-bit float doesn't
4137 # comply with IEEE 754.
4138 with_float=soft
4139 ;;
4140 esac
4141 fi
4142
4143 # Infer a default setting for --with-fpu.
4144 if test x$with_fpu = x; then
4145 case ${target} in
4146 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4147 # The R5900 FPU only supports single precision.
4148 with_fpu=single
4149 ;;
4150 esac
4151 fi
4152
4153 # Support --with-fpmath.
4154 if test x$with_fpmath != x; then
4155 case ${target} in
4156 i[34567]86-*-* | x86_64-*-*)
4157 case ${with_fpmath} in
4158 avx)
4159 tm_file="${tm_file} i386/avxmath.h"
4160 ;;
4161 sse)
4162 tm_file="${tm_file} i386/ssemath.h"
4163 ;;
4164 *)
4165 echo "Invalid --with-fpmath=$with_fpmath" 1>&2
4166 exit 1
4167 ;;
4168 esac
4169 ;;
4170 *)
4171 echo "--with-fpmath isn't supported for $target." 1>&2
4172 exit 1
4173 ;;
4174 esac
4175 fi
4176
4177 # Similarly for --with-schedule.
4178 if test x$with_schedule = x; then
4179 case ${target} in
4180 hppa1*)
4181 # Override default PA8000 scheduling model.
4182 with_schedule=7100LC
4183 ;;
4184 esac
4185 fi
4186
4187 # Infer a default setting for --with-llsc.
4188 if test x$with_llsc = x; then
4189 case ${target} in
4190 mips*-*-linux*)
4191 # The kernel emulates LL and SC where necessary.
4192 with_llsc=yes
4193 ;;
4194 mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
4195 # The R5900 doesn't support LL(D) and SC(D).
4196 with_llsc=no
4197 ;;
4198 esac
4199 fi
4200
4201 # Validate and mark as valid any --with options supported
4202 # by this target. In order to use a particular --with option
4203 # you must list it in supported_defaults; validating the value
4204 # is optional. This case statement should set nothing besides
4205 # supported_defaults.
4206
4207 supported_defaults=
4208 case "${target}" in
4209 aarch64*-*-*)
4210 supported_defaults="abi cpu cpu_64 arch arch_64 tune tune_64"
4211 if test x$with_cpu_64 != x && test x$with_cpu = x; then
4212 with_cpu=$with_cpu_64
4213 fi
4214 if test x$with_arch_64 != x && test x$with_arch = x; then
4215 with_arch=$with_arch_64
4216 fi
4217 if test x$with_tune_64 != x && test x$with_tune = x; then
4218 with_tune=$with_tune_64
4219 fi
4220 for which in cpu arch tune; do
4221 eval "val=\$with_$which"
4222 base_val=`echo $val | sed -E -e 's/\+.*//'`
4223 ext_val=`echo $val | sed -E -e 's/[a-z0-9.-]+//'`
4224
4225 if [ $which = arch ]; then
4226 def=aarch64-arches.def
4227 pattern=AARCH64_ARCH
4228 else
4229 def=aarch64-cores.def
4230 pattern=AARCH64_CORE
4231 fi
4232
4233 # Find the base CPU or ARCH id in aarch64-cores.def or
4234 # aarch64-arches.def
4235 if [ x"$base_val" = x ] \
4236 || grep "^$pattern(\"$base_val\"," \
4237 ${srcdir}/config/aarch64/$def \
4238 > /dev/null; then
4239
4240 # Disallow extensions in --with-tune=cortex-a53+crc.
4241 if [ $which = tune ] && [ x"$ext_val" != x ]; then
4242 echo "Architecture extensions not supported in --with-$which=$val" 1>&2
4243 exit 1
4244 fi
4245
4246 # Use the pre-processor to strip flatten the options.
4247 # This makes the format less rigid than if we use
4248 # grep and sed directly here.
4249 opt_macro="AARCH64_OPT_EXTENSION(A, B, C, D, E, F)=A, B, C, D, E, F"
4250 options_parsed="`$ac_cv_prog_CPP -D"$opt_macro" -x c \
4251 ${srcdir}/config/aarch64/aarch64-option-extensions.def`"
4252
4253 while [ x"$ext_val" != x ]
4254 do
4255 ext_val=`echo $ext_val | sed -E -e 's/\+//'`
4256 ext=`echo $ext_val | sed -E -e 's/\+.*//'`
4257 base_ext=`echo $ext | sed -E -e 's/^no//'`
4258 opt_line=`echo -e "$options_parsed" | \
4259 grep "^\"$base_ext\""`
4260
4261 if [ x"$base_ext" = x ] \
4262 || [ x"$opt_line" != x ]; then
4263 true
4264 else
4265 echo "Unknown extension used in --with-$which=$val" 1>&2
4266 exit 1
4267 fi
4268 ext_val=`echo $ext_val | sed -E -e 's/[a-z0-9]+//'`
4269 done
4270
4271 true
4272 else
4273 # Allow --with-$which=native.
4274 if [ "$val" = native ]; then
4275 true
4276 else
4277 echo "Unknown $which used in --with-$which=$val" 1>&2
4278 exit 1
4279 fi
4280 fi
4281 done
4282 ;;
4283
4284 alpha*-*-*)
4285 supported_defaults="cpu tune"
4286 for which in cpu tune; do
4287 eval "val=\$with_$which"
4288 case "$val" in
4289 "" \
4290 | ev4 | ev45 | 21064 | ev5 | 21164 | ev56 | 21164a \
4291 | pca56 | 21164PC | 21164pc | ev6 | 21264 | ev67 \
4292 | 21264a)
4293 ;;
4294 *)
4295 echo "Unknown CPU used in --with-$which=$val" 1>&2
4296 exit 1
4297 ;;
4298 esac
4299 done
4300 ;;
4301
4302 arc*-*-*)
4303 supported_defaults="cpu fpu"
4304
4305 new_cpu=hs38_linux
4306 if [ x"$with_cpu" = x ] \
4307 || grep -q -E "^ARC_CPU[[:blank:]]*\($with_cpu," \
4308 ${srcdir}/config/arc/arc-cpus.def
4309 then
4310 # Ok
4311 new_cpu=$with_cpu
4312 else
4313 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4314 exit 1
4315 fi
4316
4317 # see if --with-fpu matches any of the supported FPUs
4318 case "$with_fpu" in
4319 "")
4320 # OK
4321 ;;
4322 fpus | fpus_div | fpus_fma | fpus_all)
4323 # OK if em or hs
4324 flags_ok="[emhs]+"
4325 ;;
4326 fpuda | fpuda_div | fpuda_fma | fpuda_all)
4327 # OK only em
4328 flags_ok="em"
4329 ;;
4330 fpud | fpud_div | fpud_fma | fpud_all)
4331 # OK only hs
4332 flags_ok="hs"
4333 ;;
4334 *)
4335 echo "Unknown floating point type used in "\
4336 "--with-fpu=$with_fpu" 1>&2
4337 exit 1
4338 ;;
4339 esac
4340
4341 if [ -n "$flags_ok" ] \
4342 && ! grep -q -E "^ARC_CPU[[:blank:]]*\($new_cpu,[[:blank:]]*$flags_ok," \
4343 ${srcdir}/config/arc/arc-cpus.def
4344 then
4345 echo "Unknown floating point type used in "\
4346 "--with-fpu=$with_fpu for cpu $new_cpu" 1>&2
4347 exit 1
4348 fi
4349 ;;
4350
4351 avr-*-*)
4352 # Handle --with-multilib-list.
4353 if test "x${with_multilib_list}" != xdefault; then
4354 TM_MULTILIB_CONFIG="${with_multilib_list}"
4355 fi
4356 ;;
4357
4358 csky-*-*)
4359 supported_defaults="cpu endian float"
4360 ;;
4361
4362 arm*-*-*)
4363 supported_defaults="arch cpu float tune fpu abi mode tls"
4364 for which in cpu tune arch; do
4365 # See if it matches a supported value
4366 eval "val=\$with_$which"
4367 if [ x"$val" != x ]; then
4368 cpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4369 -v cmd="chk$which $val" \
4370 ${srcdir}/config/arm/arm-cpus.in`
4371 if [ "$cpu" = "error" ]; then
4372 echo "Unknown target in --with-$which=$val" 1>&2
4373 exit 1
4374 else
4375 new_val=$cpu
4376 eval "target_${which}_cname=$new_val"
4377 echo "For $val real value is $new_val"
4378 fi
4379 fi
4380 done
4381
4382 case "$with_float" in
4383 "" \
4384 | soft | hard | softfp)
4385 # OK
4386 ;;
4387 *)
4388 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4389 exit 1
4390 ;;
4391 esac
4392
4393 # see if --with-fpu matches any of the supported FPUs
4394 if [ x"$with_fpu" != x ] ; then
4395 val=$with_fpu
4396 fpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
4397 -v cmd="chkfpu $val" \
4398 ${srcdir}/config/arm/arm-cpus.in`
4399 if [ "$fpu" = "error" ]
4400 then
4401 echo "Unknown target in --with-fpu=$val" 1>&2
4402 exit 1
4403 fi
4404 fi
4405
4406 case "$with_abi" in
4407 "" \
4408 | apcs-gnu | atpcs | aapcs | iwmmxt | aapcs-linux )
4409 #OK
4410 ;;
4411 *)
4412 echo "Unknown ABI used in --with-abi=$with_abi"
4413 exit 1
4414 ;;
4415 esac
4416
4417 case "$with_mode" in
4418 "" \
4419 | arm | thumb )
4420 #OK
4421 ;;
4422 *)
4423 echo "Unknown mode used in --with-mode=$with_mode"
4424 exit 1
4425 ;;
4426 esac
4427
4428 case "$with_tls" in
4429 "" \
4430 | gnu | gnu2)
4431 # OK
4432 ;;
4433 *)
4434 echo "Unknown TLS method used in --with-tls=$with_tls" 1>&2
4435 exit 1
4436 ;;
4437 esac
4438
4439 if test "x$with_arch" != x && test "x$with_cpu" != x; then
4440 echo "Switch \"--with-arch\" may not be used with switch \"--with-cpu\"" 1>&2
4441 exit 1
4442 fi
4443
4444 if test "x$with_cpu" != x && test "x$with_tune" != x; then
4445 echo "Switch \"--with-tune\" may not be used with switch \"--with-cpu\"" 1>&2
4446 exit 1
4447 fi
4448
4449 # Add extra multilibs
4450 if test "x$with_multilib_list" != x; then
4451 ml=
4452 arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
4453 if test "x${arm_multilibs}" != xdefault ; then
4454 for arm_multilib in ${arm_multilibs}; do
4455 case ${arm_multilib} in
4456 aprofile|rmprofile)
4457 tmake_profile_file="arm/t-multilib"
4458 tm_mlib_file="arm/arm-mlib.h"
4459 ;;
4460 @*)
4461 ml=`echo "X$arm_multilib" | sed '1s,^X@,,'`
4462 if test -f "${srcdir}/config/arm/${ml}"; then
4463 tmake_file="${tmake_file} arm/${ml}"
4464 else
4465 echo "Error: ${ml} does not exist in ${srcdir}/config/arm" >&2
4466 exit 1
4467 fi
4468 ;;
4469 *)
4470 echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2
4471 exit 1
4472 ;;
4473 esac
4474 done
4475 fi
4476
4477 if test "x${tmake_profile_file}" != x ; then
4478 # arm/t-aprofile and arm/t-rmprofile are only
4479 # designed to work without any with-cpu,
4480 # with-arch, with-mode, with-fpu or with-float
4481 # options.
4482 if test "x$with_arch" != x \
4483 || test "x$with_cpu" != x \
4484 || test "x$with_float" != x \
4485 || test "x$with_fpu" != x \
4486 || test "x$with_mode" != x ; then
4487 echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=${with_multilib_list}" 1>&2
4488 exit 1
4489 elif test "x$ml" != x ; then
4490 echo "Error: You cannot use builtin multilib profiles along with custom ones" 1>&2
4491 exit 1
4492 fi
4493 # But pass the default value for float-abi
4494 # through to the multilib selector
4495 with_float="soft"
4496 tmake_file="${tmake_file} ${tmake_profile_file}"
4497 tm_file="$tm_file $tm_mlib_file"
4498 TM_MULTILIB_CONFIG="$with_multilib_list"
4499 fi
4500 fi
4501 target_cpu_cname=${target_cpu_cname:-arm7tdmi}
4502 with_cpu=${with_cpu:-$target_cpu_cname}
4503 ;;
4504
4505 fr*-*-*linux*)
4506 supported_defaults=cpu
4507 case "$with_cpu" in
4508 fr400) ;;
4509 fr550) ;;
4510 *)
4511 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
4512 exit 1
4513 ;;
4514 esac
4515 ;;
4516
4517 fido-*-* | m68k*-*-*)
4518 supported_defaults="arch cpu"
4519 case "$with_arch" in
4520 "" | "m68k"| "cf")
4521 m68k_arch_family="$with_arch"
4522 ;;
4523 *)
4524 echo "Invalid --with-arch=$with_arch" 1>&2
4525 exit 1
4526 ;;
4527 esac
4528
4529 # We always have a $with_cpu setting here.
4530 case "$with_cpu" in
4531 "m68000" | "m68010" | "m68020" | "m68030" | "m68040" | "m68060")
4532 m68k_cpu_ident=$with_cpu
4533 ;;
4534 "m68020-40")
4535 m68k_cpu_ident=m68020
4536 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_40"
4537 ;;
4538 "m68020-60")
4539 m68k_cpu_ident=m68020
4540 tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_60"
4541 ;;
4542 *)
4543 # We need the C identifier rather than the string.
4544 m68k_cpu_ident=`awk -v arg="\"$with_cpu\"" \
4545 'BEGIN { FS="[ \t]*[,()][ \t]*" }; \
4546 $1 == "M68K_DEVICE" && $2 == arg { print $3 }' \
4547 ${srcdir}/config/m68k/m68k-devices.def`
4548 if [ x"$m68k_cpu_ident" = x ] ; then
4549 echo "Unknown CPU used in --with-cpu=$with_cpu" 1>&2
4550 exit 1
4551 fi
4552 with_cpu="mcpu=$with_cpu"
4553 ;;
4554 esac
4555 ;;
4556
4557 amdgcn-*-*)
4558 supported_defaults="arch tune"
4559
4560 for which in arch tune; do
4561 eval "val=\$with_$which"
4562 case ${val} in
4563 "" | fiji | gfx900 | gfx906 | gfx908 | gfx90a | gfx1030 | gfx1100)
4564 # OK
4565 ;;
4566 *)
4567 echo "Unknown cpu used in --with-$which=$val." 1>&2
4568 exit 1
4569 ;;
4570 esac
4571 done
4572 [ "x$with_arch" = x ] && with_arch=gfx900
4573
4574 case "x${with_multilib_list}" in
4575 x | xno)
4576 TM_MULTILIB_CONFIG=
4577 ;;
4578 xdefault | xyes)
4579 TM_MULTILIB_CONFIG=`echo "gfx900,gfx906,gfx908,gfx90a,gfx1030,gfx1100" | sed "s/${with_arch},\?//;s/,$//"`
4580 ;;
4581 *)
4582 TM_MULTILIB_CONFIG="${with_multilib_list}"
4583 ;;
4584 esac
4585 ;;
4586
4587 hppa*-*-*)
4588 supported_defaults="arch schedule"
4589
4590 case "$with_arch" in
4591 "" | 1.0 | 1.1 | 2.0)
4592 # OK
4593 ;;
4594 *)
4595 echo "Unknown architecture used in --with-arch=$with_arch" 1>&2
4596 exit 1
4597 ;;
4598 esac
4599
4600 case "$with_schedule" in
4601 "" | 700 | 7100 | 7100LC | 7200 | 7300 | 8000)
4602 # OK
4603 ;;
4604 *)
4605 echo "Unknown processor used in --with-schedule=$with_schedule." 1>&2
4606 exit 1
4607 ;;
4608 esac
4609 ;;
4610
4611 i[34567]86-*-* | x86_64-*-*)
4612 supported_defaults="abi arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64"
4613 for which in arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64; do
4614 eval "val=\$with_$which"
4615 case " $x86_archs " in
4616 *" ${val} "*)
4617 case "${target}" in
4618 x86_64-*-*)
4619 case "x$which" in
4620 *_32)
4621 ;;
4622 *)
4623 echo "CPU given in --with-$which=$val doesn't support 64bit mode." 1>&2
4624 exit 1
4625 ;;
4626 esac
4627 ;;
4628 esac
4629 # OK
4630 ;;
4631 *)
4632 if test x${val} != x; then
4633 case " $x86_64_archs " in
4634 *" ${val} "*)
4635 # Disallow x86-64-v* for --with-cpu=/--with-tune=
4636 case "x$which$val" in
4637 xcpu*x86-64-v*|xtune*x86-64-v*)
4638 echo "Unknown CPU given in --with-$which=$val." 1>&2
4639 exit 1
4640 ;;
4641 *)
4642 ;;
4643 esac
4644 # OK
4645 ;;
4646 *)
4647 # Allow $x86_cpus --with-cpu=/--with-tune=
4648 case "x$which" in
4649 xcpu*|xtune*)
4650 case " $x86_cpus " in
4651 *" ${val} "*)
4652 # OK
4653 ;;
4654 *)
4655 echo "Unknown CPU given in --with-$which=$val." 1>&2
4656 exit 1
4657 ;;
4658 esac
4659 ;;
4660 *)
4661 echo "Unknown CPU given in --with-$which=$val." 1>&2
4662 exit 1
4663 ;;
4664 esac
4665 ;;
4666 esac
4667 fi
4668 ;;
4669 esac
4670 done
4671 ;;
4672
4673 riscv*-*-*)
4674 supported_defaults="abi arch tune riscv_attribute isa_spec"
4675
4676 case "${target}" in
4677 riscv-* | riscv32*) xlen=32 ;;
4678 riscv64*) xlen=64 ;;
4679 *) echo "Unsupported RISC-V target ${target}" 1>&2; exit 1 ;;
4680 esac
4681
4682 case "${with_isa_spec}" in
4683 ""|default|20191213|201912)
4684 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20191213"
4685 with_isa_spec=20191213
4686 ;;
4687 2.2)
4688 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_2P2"
4689 ;;
4690 20190608 | 201906)
4691 tm_defines="${tm_defines} TARGET_DEFAULT_ISA_SPEC=ISA_SPEC_CLASS_20190608"
4692 with_isa_spec=20190608
4693 ;;
4694 *)
4695 echo "--with-isa-spec only accept 2.2, 20191213, 201912, 20190608 or 201906" 1>&2
4696 exit 1
4697 esac
4698
4699 case "${with_riscv_attribute}" in
4700 yes)
4701 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4702 ;;
4703 no)
4704 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=0"
4705 ;;
4706 ""|default)
4707 tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
4708 ;;
4709 *)
4710 echo "--with-riscv-attribute=${with_riscv_attribute} is not supported. The argument must begin with yes, no or default." 1>&2
4711 exit 1
4712 ;;
4713 esac
4714
4715
4716 # Infer arch from --with-arch, --target, and --with-abi.
4717 case "${with_arch}" in
4718 rv32e* | rv32i* | rv32g* | rv64e* | rv64i* | rv64g*)
4719 # OK.
4720 ;;
4721 "")
4722 # Infer XLEN, but otherwise assume GC.
4723 case "${with_abi}" in
4724 ilp32e) with_arch="rv32e" ;;
4725 ilp32 | ilp32f | ilp32d) with_arch="rv32gc" ;;
4726 lp64 | lp64f | lp64d) with_arch="rv64gc" ;;
4727 lp64e) with_arch="rv64e" ;;
4728 *) with_arch="rv${xlen}gc" ;;
4729 esac
4730 ;;
4731 *)
4732 echo "--with-arch=${with_arch} is not supported. The argument must begin with rv32e, rv32i, rv32g, rv64e, rv64i, or rv64g." 1>&2
4733 exit 1
4734 ;;
4735 esac
4736 PYTHON=`which python || which python3 || which python2`
4737 if test "x${PYTHON}" != x; then
4738 with_arch=`${PYTHON} ${srcdir}/config/riscv/arch-canonicalize -misa-spec=${with_isa_spec} ${with_arch}`
4739 fi
4740 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ARCH=${with_arch}"
4741
4742 # Make sure --with-abi is valid. If it was not specified,
4743 # pick a default based on the ISA, preferring soft-float
4744 # unless the D extension is present.
4745 case "${with_abi}" in
4746 ilp32 | ilp32e | ilp32f | ilp32d | lp64 | lp64e | lp64f | lp64d)
4747 ;;
4748 "")
4749 case "${with_arch}" in
4750 rv32*d* | rv32g*) with_abi=ilp32d ;;
4751 rv32e*) with_abi=ilp32e ;;
4752 rv32*) with_abi=ilp32 ;;
4753 rv64*d* | rv64g*) with_abi=lp64d ;;
4754 rv64e*) with_abi=lp64e ;;
4755 rv64*) with_abi=lp64 ;;
4756 esac
4757 ;;
4758 *)
4759 echo "--with-abi=${with_abi} is not supported" 1>&2
4760 exit 1
4761 ;;
4762 esac
4763 tm_defines="${tm_defines} TARGET_RISCV_DEFAULT_ABI=${with_abi}"
4764
4765 # Make sure ABI and ISA are compatible.
4766 case "${with_abi},${with_arch}" in
4767 ilp32,rv32* | ilp32e,rv32e* \
4768 | ilp32f,rv32*f* | ilp32f,rv32g* \
4769 | ilp32d,rv32*d* | ilp32d,rv32g* \
4770 | lp64,rv64* | lp64e,rv64e* \
4771 | lp64f,rv64*f* | lp64f,rv64g* \
4772 | lp64d,rv64*d* | lp64d,rv64g*)
4773 ;;
4774 *)
4775 echo "--with-abi=${with_abi} is not supported for ISA ${with_arch}" 1>&2
4776 exit 1
4777 ;;
4778 esac
4779 # Handle --with-multilib-generator.
4780 if test "x${with_multilib_generator}" != xdefault; then
4781 if test "x${with_multilib_list}" != xdefault; then
4782 echo "--with-multilib-list= can't used with --with-multilib-generator= at same time" 1>&2
4783 exit 1
4784 fi
4785 case "${target}" in
4786 riscv*-*-elf*)
4787 if ${srcdir}/config/riscv/multilib-generator \
4788 -misa-spec=${with_isa_spec} \
4789 `echo ${with_multilib_generator} | sed 's/;/ /g'`\
4790 > t-multilib-config;
4791 then
4792 tmake_file="${tmake_file} riscv/t-withmultilib-generator"
4793 else
4794 echo "invalid option for --with-multilib-generator" 1>&2
4795 exit 1
4796 fi
4797 ;;
4798 *)
4799 echo "--with-multilib-generator= is not supported for ${target}, only supported for riscv*-*-elf*" 1>&2
4800 exit 1
4801 ;;
4802 esac
4803 fi
4804
4805 # Handle --with-multilib-list.
4806 if test "x${with_multilib_list}" != xdefault; then
4807 tmake_file="${tmake_file} riscv/t-withmultilib"
4808
4809 case ${with_multilib_list} in
4810 ilp32 | ilp32f | ilp32d \
4811 | lp64 | lp64f | lp64d )
4812 TM_MULTILIB_CONFIG="${with_arch},${with_multilib_list}"
4813 ;;
4814 *)
4815 echo "--with-multilib-list=${with_multilib_list} not supported."
4816 exit 1
4817 esac
4818 fi
4819 ;;
4820
4821 mips*-*-*)
4822 supported_defaults="abi arch arch_32 arch_64 float fpu nan fp_32 odd_spreg_32 tune tune_32 tune_64 divide llsc mips-plt synci lxc1-sxc1 madd4 compact-branches msa"
4823
4824 case ${with_float} in
4825 "" | soft | hard)
4826 # OK
4827 ;;
4828 *)
4829 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
4830 exit 1
4831 ;;
4832 esac
4833
4834 case ${with_fpu} in
4835 "" | single | double)
4836 # OK
4837 ;;
4838 *)
4839 echo "Unknown fpu type used in --with-fpu=$with_fpu" 1>&2
4840 exit 1
4841 ;;
4842 esac
4843
4844 case ${with_nan} in
4845 "" | 2008 | legacy)
4846 # OK
4847 ;;
4848 *)
4849 echo "Unknown NaN encoding used in --with-nan=$with_nan" 1>&2
4850 exit 1
4851 ;;
4852 esac
4853
4854 case ${with_fp_32} in
4855 "" | 32 | xx | 64)
4856 # OK
4857 ;;
4858 *)
4859 echo "Unknown FP mode used in --with-fp-32=$with_fp_32" 1>&2
4860 exit 1
4861 ;;
4862 esac
4863
4864 case ${with_odd_spreg_32} in
4865 yes)
4866 with_odd_spreg_32="odd-spreg"
4867 ;;
4868 no)
4869 with_odd_spreg_32="no-odd-spreg"
4870 ;;
4871 "")
4872 # OK
4873 ;;
4874 *)
4875 echo "Unknown odd-spreg-32 type used in --with-odd-spreg-32=$with_odd_spreg_32" 1>&2
4876 exit 1
4877 ;;
4878 esac
4879
4880 case ${with_abi} in
4881 "" | 32 | o64 | n32 | 64 | eabi)
4882 # OK
4883 ;;
4884 *)
4885 echo "Unknown ABI used in --with-abi=$with_abi" 1>&2
4886 exit 1
4887 ;;
4888 esac
4889
4890 case ${with_divide} in
4891 "" | breaks | traps)
4892 # OK
4893 ;;
4894 *)
4895 echo "Unknown division check type use in --with-divide=$with_divide" 1>&2
4896 exit 1
4897 ;;
4898 esac
4899
4900 case ${with_llsc} in
4901 yes)
4902 with_llsc=llsc
4903 ;;
4904 no)
4905 with_llsc="no-llsc"
4906 ;;
4907 "")
4908 # OK
4909 ;;
4910 *)
4911 echo "Unknown llsc type used in --with-llsc" 1>&2
4912 exit 1
4913 ;;
4914 esac
4915
4916 case ${with_mips_plt} in
4917 yes)
4918 with_mips_plt=plt
4919 ;;
4920 no)
4921 with_mips_plt=no-plt
4922 ;;
4923 "")
4924 ;;
4925 *)
4926 echo "Unknown --with-mips-plt argument: $with_mips_plt" 1>&2
4927 exit 1
4928 ;;
4929 esac
4930
4931 case ${with_synci} in
4932 yes)
4933 with_synci=synci
4934 ;;
4935 no)
4936 with_synci=no-synci
4937 ;;
4938 "")
4939 ;;
4940 *)
4941 echo "Unknown synci type used in --with-synci" 1>&2
4942 exit 1
4943 ;;
4944 esac
4945
4946 case ${with_lxc1_sxc1} in
4947 yes)
4948 with_lxc1_sxc1=lxc1-sxc1
4949 ;;
4950 no)
4951 with_lxc1_sxc1=no-lxc1-sxc1
4952 ;;
4953 "")
4954 ;;
4955 *)
4956 echo "Unknown lxc1-sxc1 type used in --with-lxc1-sxc1" 1>&2
4957 exit 1
4958 ;;
4959 esac
4960
4961 case ${with_madd4} in
4962 yes)
4963 with_madd4=madd4
4964 ;;
4965 no)
4966 with_madd4=no-madd4
4967 ;;
4968 "")
4969 ;;
4970 *)
4971 echo "Unknown madd4 type used in --with-madd4" 1>&2
4972 exit 1
4973 ;;
4974 esac
4975
4976 case ${with_compact_branches} in
4977 "" | never | always | optimal)
4978 ;;
4979 *)
4980 echo "Unknown compact-branches policy used in --with-compact-branches" 1>&2
4981 exit 1
4982 ;;
4983 esac
4984
4985 case ${with_msa} in
4986 yes)
4987 with_msa=msa
4988 ;;
4989 no)
4990 with_msa=no-msa
4991 ;;
4992 "")
4993 ;;
4994 *)
4995 echo "Unknown msa type used in --with-msa" 1>&2
4996 exit 1
4997 ;;
4998 esac
4999 ;;
5000
5001 loongarch*-*)
5002 supported_defaults="abi arch tune fpu simd multilib-default strict-align-lib"
5003
5004 # Local variables
5005 unset \
5006 abi_base abi_ext \
5007 arch_pattern arch_default \
5008 fpu_pattern fpu_default \
5009 triplet_os triplet_abi \
5010 strict_align_opt
5011
5012 # --with-abi is now obsolete, emit a warning if given.
5013 case ${with_abi} in
5014 "") ;;
5015 *)
5016 echo "warning: --with-abi= is now obsolete," \
5017 "the default ABI is derived from your target" \
5018 "triplet ${target}" 1>&2
5019 ;;
5020 esac
5021
5022 # Infer ABI from the triplet.
5023 case ${target} in
5024 loongarch64-*f64) abi_base="lp64d"; abi_ext="base" ;;
5025 loongarch64-*f32) abi_base="lp64f"; abi_ext="base" ;;
5026 loongarch64-*sf) abi_base="lp64s"; abi_ext="base" ;;
5027 loongarch64-*) abi_base="lp64d"; abi_ext="base" ;;
5028 *)
5029 echo "Unsupported target ${target}." 1>&2
5030 exit 1
5031 ;;
5032 esac
5033
5034 # Get the canonical triplet (multiarch specifier).
5035 case ${abi_base},${abi_ext} in
5036 lp64d,base) triplet_abi="";;
5037 lp64f,base) triplet_abi="f32";;
5038 lp64s,base) triplet_abi="sf";;
5039 esac
5040
5041 case ${target} in
5042 *-linux-gnu*) triplet_os="linux-gnu";;
5043 *-linux-musl*) triplet_os="linux-musl";;
5044 *-elf*) triplet_os="elf";;
5045 *)
5046 echo "Unsupported target ${target}." 1>&2
5047 exit 1
5048 ;;
5049 esac
5050 la_canonical_triplet="loongarch64-${triplet_os}${triplet_abi}"
5051
5052
5053 # Perform initial sanity checks on --with-* options.
5054 case ${with_arch} in
5055 "" | abi-default | loongarch64 | la[46]64) ;; # OK, append here.
5056 native)
5057 if test x${host} != x${target}; then
5058 echo "--with-arch=native is illegal for cross-compiler." 1>&2
5059 exit 1
5060 fi
5061 ;;
5062 *)
5063 echo "Unknown arch in --with-arch=$with_arch" 1>&2
5064 exit 1
5065 ;;
5066 esac
5067
5068
5069 case ${with_fpu} in
5070 "" | none | 32 | 64) ;; # OK, append here.
5071 0)
5072 # Convert "0" to "none" for upcoming checks.
5073 with_fpu="none"
5074 ;;
5075 *)
5076 echo "Unknown fpu type in --with-fpu=$with_fpu" 1>&2
5077 exit 1
5078 ;;
5079 esac
5080
5081 case ${with_simd} in
5082 "" | none) ;;
5083 lsx | lasx) # OK, append here.
5084 case ${with_fpu} in
5085 64) ;;
5086 "") with_fpu=64 ;;
5087 *)
5088 echo "--with-simd=${with_simd} conflicts with --with-fpu=${with_fpu}" 1>&2
5089 exit 1
5090 ;;
5091 esac
5092 ;;
5093
5094 *)
5095 echo "Unknown SIMD extension in --with-simd=$with_simd" 1>&2
5096 exit 1
5097 ;;
5098 esac
5099
5100 # Infer ISA-related default options from the ABI: pass 1
5101 case ${abi_base}/${abi_ext} in
5102 lp64*/base)
5103 # architectures that support lp64* ABI
5104 arch_pattern="native|abi-default|loongarch64|la[46]64"
5105 # default architecture for lp64* ABI
5106 arch_default="abi-default"
5107 ;;
5108 *)
5109 echo "Unsupported ABI type ${abi_base}/${abi_ext}." 1>&2
5110 exit 1
5111 ;;
5112 esac
5113
5114 # Infer ISA-related default options from the ABI: pass 2
5115 case ${abi_base}/${abi_ext} in
5116 lp64d/base)
5117 fpu_pattern="64"
5118 ;;
5119 lp64f/base)
5120 fpu_pattern="32|64"
5121 fpu_default="32"
5122 ;;
5123 lp64s/base)
5124 fpu_pattern="none|32|64"
5125 fpu_default="none"
5126 ;;
5127 *)
5128 echo "Unsupported ABI type ${abi_base}/${abi_ext}." 1>&2
5129 exit 1
5130 ;;
5131 esac
5132
5133 ## Set default value for with_arch.
5134 case ${with_arch} in
5135 "")
5136 if test x${arch_default} != x; then
5137 with_arch=${arch_default}
5138 else
5139 with_arch=${arch_pattern}
5140 fi
5141 ;;
5142
5143 *)
5144 if echo "${with_arch}" | grep -E "^${arch_pattern}$" > /dev/null; then
5145 : # OK
5146 else
5147 echo "${abi_base}/${abi_ext} ABI cannot be implemented with" \
5148 "--with-arch=${with_arch}." 1>&2
5149 exit 1
5150 fi
5151 ;;
5152 esac
5153
5154 ## Set default value for with_fpu.
5155 case ${with_fpu} in
5156 "")
5157 if test x${fpu_default} != x; then
5158 with_fpu=${fpu_default}
5159 else
5160 with_fpu=${fpu_pattern}
5161 fi
5162 ;;
5163
5164 *)
5165 if echo "${with_fpu}" | grep -E "^${fpu_pattern}$" > /dev/null; then
5166 : # OK
5167 else
5168 echo "${abi_base}/${abi_ext} ABI cannot be implemented with" \
5169 "--with-fpu=${with_fpu}." 1>&2
5170 exit 1
5171 fi
5172 ;;
5173 esac
5174
5175
5176 # Check default with_tune configuration using with_arch.
5177 case ${with_arch} in
5178 loongarch64)
5179 tune_pattern="native|abi-default|loongarch64|la[46]64"
5180 ;;
5181 *)
5182 # By default, $with_tune == $with_arch
5183 tune_pattern="*"
5184 ;;
5185 esac
5186
5187 case ${with_tune} in
5188 "") ;; # OK
5189 *)
5190 if echo "${with_tune}" | grep -E "^${tune_pattern}$" > /dev/null; then
5191 : # OK
5192 else
5193 echo "Incompatible options: --with-tune=${with_tune}" \
5194 "and --with-arch=${with_arch}." 1>&2
5195 exit 1
5196 fi
5197 ;;
5198 esac
5199
5200 # Build libraries with -mstrict-align if --with-strict-align-lib is given.
5201 case ${with_strict_align_lib} in
5202 yes) strict_align_opt="/mstrict-align" ;;
5203 ""|no) ;;
5204 *)
5205 echo "Unknown option: --with-strict-align-lib=${with_strict_align_lib}" 1>&2
5206 exit 1
5207 ;;
5208 esac
5209
5210
5211 # Handle --with-multilib-default
5212 if echo "${with_multilib_default}" \
5213 | grep -E -e '[[:space:]]' -e '//' -e '/$' -e '^/' > /dev/null 2>&1; then
5214 echo "Invalid argument to --with-multilib-default." 1>&2
5215 exit 1
5216 fi
5217
5218 if test x${with_multilib_default} = x; then
5219 # Use -march=abi-default by default when building libraries.
5220 with_multilib_default="/march=abi-default"
5221 else
5222 unset parse_state component
5223 parse_state=arch
5224 for component in $(echo "${with_multilib_default}" | tr '/' ' '); do
5225 case ${parse_state},${component} in
5226 arch,|arch,abi-default)
5227 # ABI-default: use the ABI's default ARCH configuration for
5228 # multilib library builds, unless otherwise specified
5229 # in --with-multilib-list.
5230 with_multilib_default="/march=abi-default" ;;
5231 arch,fixed)
5232 # Fixed: use the default gcc configuration for all multilib
5233 # builds by default.
5234 with_multilib_default="" ;;
5235 arch,native|arch,loongarch64|arch,la[46]64) # OK, append here.
5236 with_multilib_default="/march=${component}" ;;
5237 arch,*)
5238 with_multilib_default="/march=abi-default"
5239 with_multilib_default="${with_multilib_default}/${component}" ;;
5240 opts,*)
5241 with_multilib_default="${with_multilib_default}/${component}" ;;
5242 esac
5243
5244 if test x${parse_state} = xarch; then
5245 parse_state=opt;
5246 fi
5247 done
5248 unset parse_state component
5249 fi
5250
5251 # Handle --with-multilib-list.
5252 if test x"${with_multilib_list}" = x \
5253 || test x"${with_multilib_list}" = xno \
5254 || test x"${with_multilib_list}" = xdefault \
5255 || test x"${enable_multilib}" != xyes; then
5256
5257 with_multilib_list="${abi_base}/${abi_ext}"
5258 fi
5259
5260 # Check if the configured default ABI combination is included in
5261 # ${with_multilib_list}.
5262 loongarch_multilib_list_sane=no
5263
5264 # This one goes to TM_MULTILIB_CONFIG, for use in t-linux.
5265 loongarch_multilib_list_make="${abi_base},"
5266
5267 # This one goes to tm_defines, for use in loongarch-driver.c.
5268 loongarch_multilib_list_c=""
5269
5270 # ${with_multilib_list} should not contain whitespaces,
5271 # consecutive commas or slashes.
5272 if echo "${with_multilib_list}" \
5273 | grep -E -e "[[:space:]]" -e '[,/][,/]' -e '[,/]$' -e '^[,/]' > /dev/null 2>&1; then
5274 echo "Invalid argument to --with-multilib-list." 1>&2
5275 exit 1
5276 fi
5277
5278 unset component elem_abi_base elem_abi_ext elem_tmp parse_state all_abis
5279 for elem in $(echo "${with_multilib_list}" | tr ',' ' '); do
5280 unset elem_abi_base elem_abi_ext
5281 parse_state="abi-base"
5282
5283 for component in $(echo "${elem}" | tr '/' ' '); do
5284 if test x${parse_state} = x"abi-base"; then
5285 # Base ABI type
5286 case ${component} in
5287 lp64d | lp64f | lp64s) elem_tmp="ABI_BASE_$(echo ${component} | tr a-z A-Z),";;
5288 *)
5289 echo "Unknown base ABI \"${component}\" in --with-multilib-list." 1>&2
5290 exit 1
5291 ;;
5292 esac
5293 loongarch_multilib_list_c="${loongarch_multilib_list_c}${elem_tmp}"
5294 loongarch_multilib_list_make="${loongarch_multilib_list_make}mabi=${component}"
5295 elem_abi_base="${component}"
5296
5297 parse_state="abi-ext"
5298 continue
5299 fi
5300
5301 if test x${parse_state} = x"abi-ext"; then
5302 # ABI extension type
5303 case ${component} in
5304 base)
5305 elem_abi_ext="base"
5306 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5307 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5308 parse_state="arch"
5309 continue;
5310 ;;
5311 esac
5312
5313 # The default ABI extension is "base" if unspecified.
5314 elem_abi_ext="base"
5315 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5316 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5317 parse_state="arch"
5318 fi
5319
5320 if test x${parse_state} = x"arch"; then
5321 # -march option
5322 case ${component} in
5323 native | abi-default | loongarch64 | la[46]64) # OK, append here.
5324 # Append -march spec for each multilib variant.
5325 loongarch_multilib_list_make="${loongarch_multilib_list_make}/march=${component}"
5326 parse_state="opts"
5327 continue
5328 ;;
5329
5330 default)
5331 # "/default" is equivalent to --with-multilib-default=fixed
5332 parse_state="opts"
5333 continue
5334 ;;
5335 esac
5336
5337 # If ARCH is unspecified for this multilib variant, use ${with_multllib_default}.
5338 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5339 parse_state="opts"
5340 fi
5341
5342 if test x${parse_state} = x"opts"; then
5343 # Other compiler options for building libraries.
5344 # (no static sanity check performed)
5345 case ${component} in
5346 *)
5347 # Append other components as additional build options
5348 # (without the prepending dash).
5349 # Their validity should be examined by the compiler.
5350 loongarch_multilib_list_make="${loongarch_multilib_list_make}/${component}"
5351 ;;
5352 esac
5353 fi
5354 done
5355
5356 case ${parse_state} in
5357 "abi-ext")
5358 elem_abi_ext="base"
5359 loongarch_multilib_list_c="${loongarch_multilib_list_c}ABI_EXT_BASE,"
5360 loongarch_multilib_list_make="${loongarch_multilib_list_make}" # Add nothing for now.
5361 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5362 ;;
5363 "arch")
5364 # If ARCH is unspecified for this multilib variant, use ${with_multllib_default}.
5365 loongarch_multilib_list_make="${loongarch_multilib_list_make}${with_multilib_default}"
5366 ;;
5367 "opts")
5368 :
5369 ;;
5370 esac
5371
5372 # Use mstrict-align for building libraries if --with-strict-align-lib is given.
5373 loongarch_multilib_list_make="${loongarch_multilib_list_make}${strict_align_opt}"
5374
5375 # Check for repeated configuration of the same multilib variant.
5376 if echo "${elem_abi_base}/${elem_abi_ext}" \
5377 | grep -E "^(${all_abis%|})$" >/dev/null 2>&1; then
5378 echo "Repeated multilib config of \"${elem_abi_base}/${elem_abi_ext}\" in --with-multilib-list."
5379 exit 1
5380 fi
5381 all_abis="${all_abis}${elem_abi_base}/${elem_abi_ext}|"
5382
5383
5384 # Check if the default ABI configuration of the GCC binary
5385 # is included in the enabled multilib variants.
5386 if test x${elem_abi_base} = x${abi_base} \
5387 && test x${elem_abi_ext} = x${abi_ext}; then
5388 loongarch_multilib_list_sane=yes
5389 fi
5390 loongarch_multilib_list_make="${loongarch_multilib_list_make},"
5391 done
5392 unset component elem_abi_base elem_abi_ext elem_tmp parse_state all_abis
5393
5394
5395 # Check if the default ABI combination is in the default list.
5396 if test x${loongarch_multilib_list_sane} = xno; then
5397 if test x${abi_ext} = xbase; then
5398 abi_ext=""
5399 else
5400 abi_ext="/${abi_ext}"
5401 fi
5402
5403 echo "Default ABI combination (${abi_base}${abi_ext})" \
5404 "not found in --with-multilib-list." 1>&2
5405 exit 1
5406 fi
5407
5408 # Remove the excessive appending comma.
5409 loongarch_multilib_list_c=${loongarch_multilib_list_c%,}
5410 loongarch_multilib_list_make=${loongarch_multilib_list_make%,}
5411 ;;
5412
5413 nds32*-*-*)
5414 supported_defaults="arch cpu nds32_lib float fpu_config"
5415
5416 # process --with-arch
5417 case "${with_arch}" in
5418 "" | v3 )
5419 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5420 ;;
5421 v2 | v2j | v3m)
5422 # OK
5423 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
5424 ;;
5425 v3f)
5426 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=1"
5427 ;;
5428 v3s)
5429 tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=2"
5430
5431 ;;
5432 *)
5433 echo "Cannot accept --with-arch=$with_arch, available values are: v2 v2j v3 v3m v3f v3s" 1>&2
5434 exit 1
5435 ;;
5436 esac
5437
5438 case "${with_cpu}" in
5439 "")
5440 with_cpu=n9
5441 ;;
5442 n6 | n7 |n8 | e8 | s8 | n9 | n10 | d10 | n12 | n13 | n15)
5443 # OK
5444 ;;
5445 *)
5446 echo "Cannot accept --with-cpu=$with_cpu, available values are: n6 n7 n8 e8 s8 n9 n10 d10 n12 n13 n15" 1>&2
5447 exit 1
5448 ;;
5449 esac
5450
5451 # process --with-nds32-lib
5452 case "${with_nds32_lib}" in
5453 "")
5454 case ${target} in
5455 *-*-*uclibc*)
5456 with_nds32_lib=ulibc
5457 ;;
5458 *-*-linux*)
5459 with_nds32_lib=glibc
5460 ;;
5461 *)
5462 with_nds32_lib=newlib
5463 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5464 ;;
5465 esac
5466 ;;
5467 newlib)
5468 # OK
5469 tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
5470 ;;
5471 mculib)
5472 # OK
5473 # for the arch=v3f or arch=v3s under mculib toolchain,
5474 # we would like to set -fno-math-errno as default
5475 case "${with_arch}" in
5476 v3f | v3s)
5477 tm_defines="${tm_defines} TARGET_DEFAULT_NO_MATH_ERRNO=1"
5478 ;;
5479 esac
5480 ;;
5481 glibc | uclibc)
5482 # OK
5483 ;;
5484 *)
5485 echo "Cannot accept --with-nds32-lib=$with_nds32_lib, available values are: newlib mculib glibc uclibc" 1>&2
5486 exit 1
5487 ;;
5488 esac
5489
5490 # process --with-float
5491 case "${with_float}" in
5492 "" | soft | hard)
5493 # OK
5494 ;;
5495 *)
5496 echo "Cannot accept --with-float=$with_float, available values are: soft hard" 1>&2
5497 exit 1
5498 ;;
5499 esac
5500
5501 # process --with-config-fpu
5502 case "${with_config_fpu}" in
5503 "" | 0 | 1 | 2 | 3)
5504 # OK
5505 ;;
5506 *)
5507 echo "Cannot accept --with-config-fpu=$with_config_fpu, available values from 0 to 7" 1>&2
5508 exit 1
5509 ;;
5510 esac
5511
5512
5513 ;;
5514 nios2*-*-*)
5515 supported_defaults="arch"
5516 case "$with_arch" in
5517 "" | r1 | r2)
5518 # OK
5519 ;;
5520 *)
5521 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5522 exit 1
5523 ;;
5524 esac
5525 ;;
5526
5527 nvptx-*)
5528 supported_defaults=arch
5529 TM_MULTILIB_CONFIG=$with_arch
5530 #TODO 'sm_[...]' list per 'nvptx-sm.def'.
5531 case $with_arch in
5532 sm_30 )
5533 # OK; default.
5534 ;;
5535 sm_35 | sm_53 | sm_70 | sm_75 | sm_80 )
5536 # OK, but we'd like 'sm_30', too.
5537 TM_MULTILIB_CONFIG="$TM_MULTILIB_CONFIG sm_30"
5538 ;;
5539 * )
5540 echo "Unknown arch used in --with-arch=$with_arch" 1>&2
5541 exit 1
5542 ;;
5543 esac
5544 ;;
5545
5546 powerpc*-*-* | rs6000-*-*)
5547 supported_defaults="abi cpu cpu_32 cpu_64 float tune tune_32 tune_64 advance_toolchain"
5548
5549 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5550 eval "val=\$with_$which"
5551 case ${val} in
5552 default32 | default64)
5553 case $which in
5554 cpu | tune)
5555 ;;
5556 *)
5557 echo "$val only valid for --with-cpu and --with-tune." 1>&2
5558 exit 1
5559 ;;
5560 esac
5561 with_which="with_$which"
5562 eval $with_which=
5563 ;;
5564 405cr)
5565 tm_defines="${tm_defines} CONFIG_PPC405CR"
5566 eval "with_$which=405"
5567 ;;
5568 "" | common | native \
5569 | power[3456789] | power10 | power5+ | power6x \
5570 | powerpc | powerpc64 | powerpc64le \
5571 | rs64 \
5572 | 401 | 403 | 405 | 405fp | 440 | 440fp | 464 | 464fp \
5573 | 476 | 476fp | 505 | 601 | 602 | 603 | 603e | ec603e \
5574 | 604 | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 \
5575 | a2 | e300c[23] | 854[08] | e500mc | e500mc64 | e5500 | e6500 \
5576 | titan | 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5 | cell)
5577 # OK
5578 ;;
5579 *)
5580 echo "Unknown cpu used in --with-$which=$val." 1>&2
5581 exit 1
5582 ;;
5583 esac
5584 done
5585
5586 case "$with_abi" in
5587 "" | elfv1 | elfv2 )
5588 #OK
5589 ;;
5590 *)
5591 echo "Unknown ABI used in --with-abi=$with_abi"
5592 exit 1
5593 ;;
5594 esac
5595
5596 if test "x$with_advance_toolchain" != x; then
5597 if test -d "/opt/$with_advance_toolchain/." -a \
5598 -d "/opt/$with_advance_toolchain/bin/." -a \
5599 -d "/opt/$with_advance_toolchain/include/."; then
5600
5601 tm_file="$tm_file ./advance-toolchain.h"
5602 (at="/opt/$with_advance_toolchain"
5603 echo "/* Use Advance Toolchain $at */"
5604 echo
5605 echo "#undef LINK_OS_NEW_DTAGS_SPEC"
5606 echo "#define LINK_OS_NEW_DTAGS_SPEC" \
5607 "\"--enable-new-dtags\""
5608 echo
5609 echo "#undef DYNAMIC_LINKER_PREFIX"
5610 echo "#define DYNAMIC_LINKER_PREFIX \"$at\""
5611 echo
5612 echo "#undef MD_EXEC_PREFIX"
5613 echo "#define MD_EXEC_PREFIX \"$at/bin/\""
5614 echo
5615 echo "#undef MD_STARTFILE_PREFIX"
5616 echo "#define MD_STARTFILE_PREFIX \"$prefix/lib/\""
5617 echo
5618 echo "#undef MD_STARTFILE_PREFIX_1"
5619 echo "#define MD_STARTFILE_PREFIX_1 \"$at/lib/\"") \
5620 > advance-toolchain.h
5621 else
5622 echo "Unknown advance-toolchain $with_advance_toolchain"
5623 exit 1
5624 fi
5625 fi
5626
5627 # Set up the default long double format if the user changed it.
5628 if test x$with_long_double_format = xieee; then
5629 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=1"
5630
5631 elif test x$with_long_double_format = xibm; then
5632 tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=0"
5633 fi
5634 ;;
5635
5636 s390*-*-*)
5637 supported_defaults="arch mode tune"
5638
5639 for which in arch tune; do
5640 eval "val=\$with_$which"
5641 case ${val} in
5642 "" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | z15 | z16 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12 | arch13 | arch14 )
5643 # OK
5644 ;;
5645 *)
5646 echo "Unknown cpu used in --with-$which=$val." 1>&2
5647 exit 1
5648 ;;
5649 esac
5650 done
5651
5652 case ${with_mode} in
5653 "" | esa | zarch)
5654 # OK
5655 ;;
5656 *)
5657 echo "Unknown architecture mode used in --with-mode=$with_mode." 1>&2
5658 exit 1
5659 ;;
5660 esac
5661 ;;
5662
5663 sh[123456ble]*-*-* | sh-*-*)
5664 supported_defaults="cpu"
5665 case "`echo $with_cpu | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz- | sed s/sh/m/`" in
5666 "" | m1 | m2 | m2e | m3 | m3e | m4 | m4-single | m4-single-only | m4-nofpu )
5667 # OK
5668 ;;
5669 m2a | m2a-single | m2a-single-only | m2a-nofpu)
5670 ;;
5671 m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al)
5672 ;;
5673 *)
5674 echo "Unknown CPU used in --with-cpu=$with_cpu, known values:" 1>&2
5675 echo "m1 m2 m2e m3 m3e m4 m4-single m4-single-only m4-nofpu" 1>&2
5676 echo "m4a m4a-single m4a-single-only m4a-nofpu m4al" 1>&2
5677 echo "m2a m2a-single m2a-single-only m2a-nofpu" 1>&2
5678 exit 1
5679 ;;
5680 esac
5681 ;;
5682 sparc*-*-*)
5683 supported_defaults="cpu cpu_32 cpu_64 float tune tune_32 tune_64"
5684
5685 for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
5686 eval "val=\$with_$which"
5687 case ${val} in
5688 "" | sparc | sparcv9 | sparc64 \
5689 | v7 | cypress \
5690 | v8 | supersparc | hypersparc | leon | leon3 | leon3v7 \
5691 | sparclite | f930 | f934 | sparclite86x \
5692 | sparclet | tsc701 \
5693 | v9 | ultrasparc | ultrasparc3 | niagara | niagara2 \
5694 | niagara3 | niagara4 | niagara7 | m8)
5695 # OK
5696 ;;
5697 *)
5698 echo "Unknown cpu used in --with-$which=$val" 1>&2
5699 exit 1
5700 ;;
5701 esac
5702 done
5703
5704 case ${with_float} in
5705 "" | soft | hard)
5706 # OK
5707 ;;
5708 *)
5709 echo "Unknown floating point type used in --with-float=$with_float" 1>&2
5710 exit 1
5711 ;;
5712 esac
5713 ;;
5714
5715 tic6x-*-*)
5716 supported_defaults="arch"
5717
5718 case ${with_arch} in
5719 "" | c62x | c64x | c64x+ | c67x | c67x+ | c674x)
5720 # OK
5721 ;;
5722 *)
5723 echo "Unknown arch used in --with-arch=$with_arch." 1>&2
5724 exit 1
5725 ;;
5726 esac
5727 ;;
5728
5729 v850*-*-*)
5730 supported_defaults=cpu
5731 case ${with_cpu} in
5732 "" | v850e | v850e1 | v850e2 | v850es | v850e2v3 | v850e3v5)
5733 # OK
5734 ;;
5735 *)
5736 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5737 exit 1
5738 ;;
5739 esac
5740 ;;
5741 visium-*-*)
5742 supported_defaults="cpu"
5743 case $with_cpu in
5744 "" | gr5 | gr6)
5745 ;;
5746 *) echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
5747 exit 1
5748 ;;
5749 esac
5750 ;;
5751 esac
5752
5753 # VxWorks support for shared libraries has to be requested explicitly,
5754 # so we can factor this part here:
5755
5756 case "${target}-${enable_shared}" in
5757 *-*-vxworks*-yes)
5758 tmake_file="${tmake_file} t-slibgcc"
5759 ;;
5760 esac
5761
5762 # Targets for which there is at least one VxWorks port should include
5763 # vxworks-dummy.h to allow safe references to various TARGET_VXWORKS kinds
5764 # of markers from other files in the port, including the vxworks*.h files to
5765 # distinguish VxWorks variants such as VxWorks 7 or 64).
5766
5767 case ${target} in
5768 arm*-*-* | i[34567]86-*-* | mips*-*-* | powerpc*-*-* | sh*-*-* \
5769 | sparc*-*-* | x86_64-*-*)
5770 tm_file="vxworks-dummy.h ${tm_file}"
5771 ;;
5772 esac
5773
5774 # Set some miscellaneous flags for particular targets.
5775 target_cpu_default2=
5776 case ${target} in
5777 aarch64*-*-*)
5778 if test x"$target_cpu_cname" != x
5779 then
5780 target_cpu_default2=$target_cpu_cname
5781 fi
5782 ;;
5783
5784 arm*-*-*)
5785 if test x$with_cpu = x
5786 then
5787 echo "Don't know the target cpu" 1>&2
5788 exit 1
5789 else
5790 target_cpu_default2="\\\"$with_cpu\\\""
5791 fi
5792 ;;
5793
5794 hppa*-*-*)
5795 if test x$gas = xyes
5796 then
5797 target_cpu_default2="MASK_GAS"
5798 fi
5799 ;;
5800
5801 fido*-*-* | m68k*-*-*)
5802 target_cpu_default2=$m68k_cpu_ident
5803 tmake_file="m68k/t-opts $tmake_file"
5804 if [ x"$m68k_arch_family" != x ]; then
5805 tmake_file="m68k/t-$m68k_arch_family $tmake_file"
5806 fi
5807 ;;
5808
5809 i[34567]86-*-darwin* | x86_64-*-darwin*)
5810 ;;
5811 i[34567]86-*-linux* | x86_64-*-linux*)
5812 extra_objs="${extra_objs} gnu-property.o"
5813 tmake_file="$tmake_file i386/t-linux i386/t-gnu-property"
5814 ;;
5815 i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu)
5816 tmake_file="$tmake_file i386/t-kfreebsd"
5817 ;;
5818 i[34567]86-*-gnu*)
5819 tmake_file="$tmake_file i386/t-gnu"
5820 ;;
5821 i[34567]86-*-msdosdjgpp*)
5822 tmake_file="${tmake_file} i386/t-djgpp"
5823 ;;
5824 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
5825 ;;
5826 i[34567]86-*-cygwin* | x86_64-*-cygwin*)
5827 ;;
5828 i[34567]86-*-mingw* | x86_64-*-mingw*)
5829 ;;
5830 i[34567]86-*-dragonfly* | x86_64-*-dragonfly*)
5831 ;;
5832 i[34567]86-*-freebsd*)
5833 ;;
5834 x86_64-*-freebsd*)
5835 tmake_file="${tmake_file} i386/t-freebsd64"
5836 ;;
5837 ia64*-*-linux*)
5838 ;;
5839
5840 mips*-*-*)
5841 if test x$gnu_ld = xyes
5842 then
5843 target_cpu_default2="MASK_SPLIT_ADDRESSES"
5844 fi
5845 case ${target} in
5846 mips*el-*-*)
5847 tm_defines="TARGET_ENDIAN_DEFAULT=0 $tm_defines"
5848 ;;
5849 esac
5850 if test x$with_arch != x; then
5851 default_mips_arch=$with_arch
5852 else
5853 with_arch=$default_mips_arch
5854 fi
5855 if test x$with_abi != x; then
5856 default_mips_abi=$with_abi
5857 fi
5858 case ${default_mips_arch} in
5859 mips1) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS1" ;;
5860 mips2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS2" ;;
5861 mips3) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS3" ;;
5862 mips4) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS4" ;;
5863 mips32) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32" ;;
5864 mips32r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2" ;;
5865 mips32r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6" ;;
5866 mips64) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64" ;;
5867 mips64r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R2" ;;
5868 mips64r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=MIPS_ISA_MIPS64R6" ;;
5869 esac
5870 case ${default_mips_abi} in
5871 32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_32" ;;
5872 o64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_O64" ;;
5873 n32) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_N32" ;;
5874 64) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_64" ;;
5875 eabi) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_EABI" ;;
5876 esac
5877 tmake_file="mips/t-mips $tmake_file"
5878 ;;
5879
5880 loongarch*-*-*)
5881 # Export canonical triplet.
5882 tm_defines="${tm_defines} LA_MULTIARCH_TRIPLET=${la_canonical_triplet}"
5883
5884 # Define macro LA_DISABLE_MULTILIB if --disable-multilib
5885 tm_defines="${tm_defines} TM_MULTILIB_LIST=${loongarch_multilib_list_c}"
5886 if test x$enable_multilib = xyes; then
5887 TM_MULTILIB_CONFIG="${loongarch_multilib_list_make}"
5888 else
5889 tm_defines="${tm_defines} LA_DISABLE_MULTILIB"
5890 fi
5891
5892 # Let --with- flags initialize the enum variables from loongarch.opt.
5893 # See macro definitions from loongarch-opts.h and loongarch-cpu.h.
5894
5895 # Architecture
5896 tm_defines="${tm_defines} DEFAULT_CPU_ARCH=CPU_$(echo ${with_arch} | tr a-z- A-Z_)"
5897
5898 # Base ABI type
5899 tm_defines="${tm_defines} DEFAULT_ABI_BASE=ABI_BASE_$(echo ${abi_base} | tr a-z- A-Z_)"
5900
5901 # ABI Extension
5902 case ${abi_ext} in
5903 base) tm_defines="${tm_defines} DEFAULT_ABI_EXT=ABI_EXT_BASE" ;;
5904 esac
5905
5906 # Microarchitecture
5907 if test x${with_tune} != x; then
5908 tm_defines="${tm_defines} DEFAULT_CPU_TUNE=CPU_$(echo ${with_tune} | tr a-z- A-Z_)"
5909 fi
5910
5911 # FPU adjustment
5912 case ${with_fpu} in
5913 none) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_NONE" ;;
5914 32) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU32" ;;
5915 64) tm_defines="$tm_defines DEFAULT_ISA_EXT_FPU=ISA_EXT_FPU64" ;;
5916 esac
5917
5918 # SIMD extensions
5919 case ${with_simd} in
5920 none) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_NONE" ;;
5921 lsx) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_SIMD_LSX" ;;
5922 lasx) tm_defines="$tm_defines DEFAULT_ISA_EXT_SIMD=ISA_EXT_SIMD_LASX" ;;
5923 esac
5924
5925 tmake_file="loongarch/t-loongarch $tmake_file"
5926 ;;
5927
5928 powerpc*-*-* | rs6000-*-*)
5929 # FIXME: The PowerPC port uses the value set at compile time,
5930 # although it's only cosmetic.
5931 if test "x$with_cpu" != x
5932 then
5933 target_cpu_default2="\\\"$with_cpu\\\""
5934 fi
5935 out_file="${cpu_type}/${cpu_type}.cc"
5936 c_target_objs="${c_target_objs} ${cpu_type}-c.o"
5937 cxx_target_objs="${cxx_target_objs} ${cpu_type}-c.o"
5938 d_target_objs="${d_target_objs} ${cpu_type}-d.o"
5939 tmake_file="${cpu_type}/t-${cpu_type} ${tmake_file}"
5940 ;;
5941
5942 sh[123456ble]*-*-* | sh-*-*)
5943 c_target_objs="${c_target_objs} sh-c.o"
5944 cxx_target_objs="${cxx_target_objs} sh-c.o"
5945 ;;
5946
5947 sparc*-*-*)
5948 # Some standard aliases.
5949 case x$with_cpu in
5950 xsparc)
5951 with_cpu=v7
5952 ;;
5953 xsparcv9 | xsparc64)
5954 with_cpu=v9
5955 ;;
5956 esac
5957
5958 if test x$with_tune = x ; then
5959 case ${target} in
5960 *-leon-*)
5961 with_tune=leon
5962 ;;
5963 *-leon[3-9]*)
5964 with_tune=leon3
5965 ;;
5966 esac
5967 fi
5968
5969 # The SPARC port checks this value at compile-time.
5970 target_cpu_default2="TARGET_CPU_$with_cpu"
5971 ;;
5972
5973 v850*-*-*)
5974 case "x$with_cpu" in
5975 x)
5976 ;;
5977 xv850e | xv850e1 | xv850e2 | xv850e2v3 | xv850e3v5)
5978 target_cpu_default2="TARGET_CPU_$with_cpu"
5979 ;;
5980 xv850es)
5981 target_cpu_default2="TARGET_CPU_v850e1"
5982 ;;
5983 esac
5984 ;;
5985 visium-*-*)
5986 target_cpu_default2="TARGET_CPU_$with_cpu"
5987 ;;
5988 x86_64-*-gnu*)
5989 tmake_file="$tmake_file i386/t-gnu64"
5990 ;;
5991 esac
5992
5993 t=
5994 all_defaults="abi cpu cpu_32 cpu_64 arch arch_32 arch_64 tune tune_32 tune_64 schedule float mode fpu nan fp_32 odd_spreg_32 divide llsc mips-plt synci tls lxc1-sxc1 madd4 isa_spec compact-branches msa"
5995 for option in $all_defaults
5996 do
5997 eval "val=\$with_"`echo $option | sed s/-/_/g`
5998 if test -n "$val"; then
5999 case " $supported_defaults " in
6000 *" $option "*)
6001 ;;
6002 *)
6003 echo "This target does not support --with-$option." 2>&1
6004 echo "Valid --with options are: $supported_defaults" 2>&1
6005 exit 1
6006 ;;
6007 esac
6008
6009 if test "x$t" = x
6010 then
6011 t="{ \"$option\", \"$val\" }"
6012 else
6013 t="${t}, { \"$option\", \"$val\" }"
6014 fi
6015 fi
6016 done
6017
6018 if test "x$t" = x
6019 then
6020 configure_default_options="{ { NULL, NULL} }"
6021 else
6022 configure_default_options="{ ${t} }"
6023 fi
6024
6025 if test "$target_cpu_default2" != ""
6026 then
6027 if test "$target_cpu_default" != ""
6028 then
6029 target_cpu_default="(${target_cpu_default}|${target_cpu_default2})"
6030 else
6031 target_cpu_default=$target_cpu_default2
6032 fi
6033 fi
6034
6035 case ${target} in
6036 i[34567]86-*-* | x86_64-*-*)
6037 if test x$enable_as_accelerator = xyes; then
6038 extra_programs="mkoffload\$(exeext)"
6039 fi
6040 ;;
6041 esac