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