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