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