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