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