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