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