1b35cf2c0Smrg#! /bin/sh
2b35cf2c0Smrg# Configuration validation subroutine script.
3b35cf2c0Smrg#   Copyright 1992-2023 Free Software Foundation, Inc.
4b35cf2c0Smrg
5b35cf2c0Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale
6b35cf2c0Smrg
7b35cf2c0Smrgtimestamp='2023-01-21'
8b35cf2c0Smrg
9b35cf2c0Smrg# This file is free software; you can redistribute it and/or modify it
10b35cf2c0Smrg# under the terms of the GNU General Public License as published by
11b35cf2c0Smrg# the Free Software Foundation, either version 3 of the License, or
12b35cf2c0Smrg# (at your option) any later version.
13b35cf2c0Smrg#
14b35cf2c0Smrg# This program is distributed in the hope that it will be useful, but
15b35cf2c0Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
16b35cf2c0Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17b35cf2c0Smrg# General Public License for more details.
18b35cf2c0Smrg#
19b35cf2c0Smrg# You should have received a copy of the GNU General Public License
20b35cf2c0Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
21b35cf2c0Smrg#
22b35cf2c0Smrg# As a special exception to the GNU General Public License, if you
23b35cf2c0Smrg# distribute this file as part of a program that contains a
24b35cf2c0Smrg# configuration script generated by Autoconf, you may include it under
25b35cf2c0Smrg# the same distribution terms that you use for the rest of that
26b35cf2c0Smrg# program.  This Exception is an additional permission under section 7
27b35cf2c0Smrg# of the GNU General Public License, version 3 ("GPLv3").
28b35cf2c0Smrg
29b35cf2c0Smrg
30b35cf2c0Smrg# Please send patches to <config-patches@gnu.org>.
31b35cf2c0Smrg#
32b35cf2c0Smrg# Configuration subroutine to validate and canonicalize a configuration type.
33b35cf2c0Smrg# Supply the specified configuration type as an argument.
34b35cf2c0Smrg# If it is invalid, we print an error message on stderr and exit with code 1.
35b35cf2c0Smrg# Otherwise, we print the canonical config type on stdout and succeed.
36b35cf2c0Smrg
37b35cf2c0Smrg# You can get the latest version of this script from:
38b35cf2c0Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
39b35cf2c0Smrg
40b35cf2c0Smrg# This file is supposed to be the same for all GNU packages
41b35cf2c0Smrg# and recognize all the CPU types, system types and aliases
42b35cf2c0Smrg# that are meaningful with *any* GNU software.
43b35cf2c0Smrg# Each package is responsible for reporting which valid configurations
44b35cf2c0Smrg# it does not support.  The user should be able to distinguish
45b35cf2c0Smrg# a failure to support a valid configuration from a meaningless
46b35cf2c0Smrg# configuration.
47b35cf2c0Smrg
48b35cf2c0Smrg# The goal of this file is to map all the various variations of a given
49b35cf2c0Smrg# machine specification into a single specification in the form:
50b35cf2c0Smrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
51b35cf2c0Smrg# or in some cases, the newer four-part form:
52b35cf2c0Smrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
53b35cf2c0Smrg# It is wrong to echo any other type of specification.
54b35cf2c0Smrg
55b35cf2c0Smrg# The "shellcheck disable" line above the timestamp inhibits complaints
56b35cf2c0Smrg# about features and limitations of the classic Bourne shell that were
57b35cf2c0Smrg# superseded or lifted in POSIX.  However, this script identifies a wide
58b35cf2c0Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
59b35cf2c0Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still
60b35cf2c0Smrg# have a pre-POSIX /bin/sh.
61b35cf2c0Smrg
62b35cf2c0Smrgme=`echo "$0" | sed -e 's,.*/,,'`
63b35cf2c0Smrg
64b35cf2c0Smrgusage="\
65b35cf2c0SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
66b35cf2c0Smrg
67b35cf2c0SmrgCanonicalize a configuration name.
68b35cf2c0Smrg
69b35cf2c0SmrgOptions:
70b35cf2c0Smrg  -h, --help         print this help, then exit
71b35cf2c0Smrg  -t, --time-stamp   print date of last modification, then exit
72b35cf2c0Smrg  -v, --version      print version number, then exit
73b35cf2c0Smrg
74b35cf2c0SmrgReport bugs and patches to <config-patches@gnu.org>."
75b35cf2c0Smrg
76b35cf2c0Smrgversion="\
77b35cf2c0SmrgGNU config.sub ($timestamp)
78b35cf2c0Smrg
79b35cf2c0SmrgCopyright 1992-2023 Free Software Foundation, Inc.
80b35cf2c0Smrg
81b35cf2c0SmrgThis is free software; see the source for copying conditions.  There is NO
82b35cf2c0Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
83b35cf2c0Smrg
84b35cf2c0Smrghelp="
85b35cf2c0SmrgTry \`$me --help' for more information."
86b35cf2c0Smrg
87b35cf2c0Smrg# Parse command line
88b35cf2c0Smrgwhile test $# -gt 0 ; do
89b35cf2c0Smrg  case $1 in
90b35cf2c0Smrg    --time-stamp | --time* | -t )
91b35cf2c0Smrg       echo "$timestamp" ; exit ;;
92b35cf2c0Smrg    --version | -v )
93b35cf2c0Smrg       echo "$version" ; exit ;;
94b35cf2c0Smrg    --help | --h* | -h )
95b35cf2c0Smrg       echo "$usage"; exit ;;
96b35cf2c0Smrg    -- )     # Stop option processing
97b35cf2c0Smrg       shift; break ;;
98b35cf2c0Smrg    - )	# Use stdin as input.
99b35cf2c0Smrg       break ;;
100b35cf2c0Smrg    -* )
101b35cf2c0Smrg       echo "$me: invalid option $1$help" >&2
102b35cf2c0Smrg       exit 1 ;;
103b35cf2c0Smrg
104b35cf2c0Smrg    *local*)
105b35cf2c0Smrg       # First pass through any local machine types.
106b35cf2c0Smrg       echo "$1"
107b35cf2c0Smrg       exit ;;
108b35cf2c0Smrg
109b35cf2c0Smrg    * )
110b35cf2c0Smrg       break ;;
111b35cf2c0Smrg  esac
112b35cf2c0Smrgdone
113b35cf2c0Smrg
114b35cf2c0Smrgcase $# in
115b35cf2c0Smrg 0) echo "$me: missing argument$help" >&2
116b35cf2c0Smrg    exit 1;;
117b35cf2c0Smrg 1) ;;
118b35cf2c0Smrg *) echo "$me: too many arguments$help" >&2
119b35cf2c0Smrg    exit 1;;
120b35cf2c0Smrgesac
121b35cf2c0Smrg
122b35cf2c0Smrg# Split fields of configuration type
123b35cf2c0Smrg# shellcheck disable=SC2162
124b35cf2c0Smrgsaved_IFS=$IFS
125b35cf2c0SmrgIFS="-" read field1 field2 field3 field4 <<EOF
126b35cf2c0Smrg$1
127b35cf2c0SmrgEOF
128b35cf2c0SmrgIFS=$saved_IFS
129b35cf2c0Smrg
130b35cf2c0Smrg# Separate into logical components for further validation
131b35cf2c0Smrgcase $1 in
132b35cf2c0Smrg	*-*-*-*-*)
133b35cf2c0Smrg		echo Invalid configuration \`"$1"\': more than four components >&2
134b35cf2c0Smrg		exit 1
135b35cf2c0Smrg		;;
136b35cf2c0Smrg	*-*-*-*)
137b35cf2c0Smrg		basic_machine=$field1-$field2
138b35cf2c0Smrg		basic_os=$field3-$field4
139b35cf2c0Smrg		;;
140b35cf2c0Smrg	*-*-*)
141b35cf2c0Smrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
142b35cf2c0Smrg		# parts
143b35cf2c0Smrg		maybe_os=$field2-$field3
144b35cf2c0Smrg		case $maybe_os in
145b35cf2c0Smrg			nto-qnx* | linux-* | uclinux-uclibc* \
146b35cf2c0Smrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
147b35cf2c0Smrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
148b35cf2c0Smrg			| storm-chaos* | os2-emx* | rtmk-nova* | managarm-*)
149b35cf2c0Smrg				basic_machine=$field1
150b35cf2c0Smrg				basic_os=$maybe_os
151b35cf2c0Smrg				;;
152b35cf2c0Smrg			android-linux)
153b35cf2c0Smrg				basic_machine=$field1-unknown
154b35cf2c0Smrg				basic_os=linux-android
155b35cf2c0Smrg				;;
156b35cf2c0Smrg			*)
157b35cf2c0Smrg				basic_machine=$field1-$field2
158b35cf2c0Smrg				basic_os=$field3
159b35cf2c0Smrg				;;
160b35cf2c0Smrg		esac
161b35cf2c0Smrg		;;
162b35cf2c0Smrg	*-*)
163b35cf2c0Smrg		# A lone config we happen to match not fitting any pattern
164b35cf2c0Smrg		case $field1-$field2 in
165b35cf2c0Smrg			decstation-3100)
166b35cf2c0Smrg				basic_machine=mips-dec
167b35cf2c0Smrg				basic_os=
168b35cf2c0Smrg				;;
169b35cf2c0Smrg			*-*)
170b35cf2c0Smrg				# Second component is usually, but not always the OS
171b35cf2c0Smrg				case $field2 in
172b35cf2c0Smrg					# Prevent following clause from handling this valid os
173b35cf2c0Smrg					sun*os*)
174b35cf2c0Smrg						basic_machine=$field1
175b35cf2c0Smrg						basic_os=$field2
176b35cf2c0Smrg						;;
177b35cf2c0Smrg					zephyr*)
178b35cf2c0Smrg						basic_machine=$field1-unknown
179b35cf2c0Smrg						basic_os=$field2
180b35cf2c0Smrg						;;
181b35cf2c0Smrg					# Manufacturers
182b35cf2c0Smrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
183b35cf2c0Smrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
184b35cf2c0Smrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
185b35cf2c0Smrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
186b35cf2c0Smrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
187b35cf2c0Smrg					| ultra | tti* | harris | dolphin | highlevel | gould \
188b35cf2c0Smrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
189b35cf2c0Smrg					| microblaze* | sim | cisco \
190b35cf2c0Smrg					| oki | wec | wrs | winbond)
191b35cf2c0Smrg						basic_machine=$field1-$field2
192b35cf2c0Smrg						basic_os=
193b35cf2c0Smrg						;;
194b35cf2c0Smrg					*)
195b35cf2c0Smrg						basic_machine=$field1
196b35cf2c0Smrg						basic_os=$field2
197b35cf2c0Smrg						;;
198b35cf2c0Smrg				esac
199b35cf2c0Smrg			;;
200b35cf2c0Smrg		esac
201b35cf2c0Smrg		;;
202b35cf2c0Smrg	*)
203b35cf2c0Smrg		# Convert single-component short-hands not valid as part of
204b35cf2c0Smrg		# multi-component configurations.
205b35cf2c0Smrg		case $field1 in
206b35cf2c0Smrg			386bsd)
207b35cf2c0Smrg				basic_machine=i386-pc
208b35cf2c0Smrg				basic_os=bsd
209b35cf2c0Smrg				;;
210b35cf2c0Smrg			a29khif)
211b35cf2c0Smrg				basic_machine=a29k-amd
212b35cf2c0Smrg				basic_os=udi
213b35cf2c0Smrg				;;
214b35cf2c0Smrg			adobe68k)
215b35cf2c0Smrg				basic_machine=m68010-adobe
216b35cf2c0Smrg				basic_os=scout
217b35cf2c0Smrg				;;
218b35cf2c0Smrg			alliant)
219b35cf2c0Smrg				basic_machine=fx80-alliant
220b35cf2c0Smrg				basic_os=
221b35cf2c0Smrg				;;
222b35cf2c0Smrg			altos | altos3068)
223b35cf2c0Smrg				basic_machine=m68k-altos
224b35cf2c0Smrg				basic_os=
225b35cf2c0Smrg				;;
226b35cf2c0Smrg			am29k)
227b35cf2c0Smrg				basic_machine=a29k-none
228b35cf2c0Smrg				basic_os=bsd
229b35cf2c0Smrg				;;
230b35cf2c0Smrg			amdahl)
231b35cf2c0Smrg				basic_machine=580-amdahl
232b35cf2c0Smrg				basic_os=sysv
233b35cf2c0Smrg				;;
234b35cf2c0Smrg			amiga)
235b35cf2c0Smrg				basic_machine=m68k-unknown
236b35cf2c0Smrg				basic_os=
237b35cf2c0Smrg				;;
238b35cf2c0Smrg			amigaos | amigados)
239b35cf2c0Smrg				basic_machine=m68k-unknown
240b35cf2c0Smrg				basic_os=amigaos
241b35cf2c0Smrg				;;
242b35cf2c0Smrg			amigaunix | amix)
243b35cf2c0Smrg				basic_machine=m68k-unknown
244b35cf2c0Smrg				basic_os=sysv4
245b35cf2c0Smrg				;;
246b35cf2c0Smrg			apollo68)
247b35cf2c0Smrg				basic_machine=m68k-apollo
248b35cf2c0Smrg				basic_os=sysv
249b35cf2c0Smrg				;;
250b35cf2c0Smrg			apollo68bsd)
251b35cf2c0Smrg				basic_machine=m68k-apollo
252b35cf2c0Smrg				basic_os=bsd
253b35cf2c0Smrg				;;
254b35cf2c0Smrg			aros)
255b35cf2c0Smrg				basic_machine=i386-pc
256b35cf2c0Smrg				basic_os=aros
257b35cf2c0Smrg				;;
258b35cf2c0Smrg			aux)
259b35cf2c0Smrg				basic_machine=m68k-apple
260b35cf2c0Smrg				basic_os=aux
261b35cf2c0Smrg				;;
262b35cf2c0Smrg			balance)
263b35cf2c0Smrg				basic_machine=ns32k-sequent
264b35cf2c0Smrg				basic_os=dynix
265b35cf2c0Smrg				;;
266b35cf2c0Smrg			blackfin)
267b35cf2c0Smrg				basic_machine=bfin-unknown
268b35cf2c0Smrg				basic_os=linux
269b35cf2c0Smrg				;;
270b35cf2c0Smrg			cegcc)
271b35cf2c0Smrg				basic_machine=arm-unknown
272b35cf2c0Smrg				basic_os=cegcc
273b35cf2c0Smrg				;;
274b35cf2c0Smrg			convex-c1)
275b35cf2c0Smrg				basic_machine=c1-convex
276b35cf2c0Smrg				basic_os=bsd
277b35cf2c0Smrg				;;
278b35cf2c0Smrg			convex-c2)
279b35cf2c0Smrg				basic_machine=c2-convex
280b35cf2c0Smrg				basic_os=bsd
281b35cf2c0Smrg				;;
282b35cf2c0Smrg			convex-c32)
283b35cf2c0Smrg				basic_machine=c32-convex
284b35cf2c0Smrg				basic_os=bsd
285b35cf2c0Smrg				;;
286b35cf2c0Smrg			convex-c34)
287b35cf2c0Smrg				basic_machine=c34-convex
288b35cf2c0Smrg				basic_os=bsd
289b35cf2c0Smrg				;;
290b35cf2c0Smrg			convex-c38)
291b35cf2c0Smrg				basic_machine=c38-convex
292b35cf2c0Smrg				basic_os=bsd
293b35cf2c0Smrg				;;
294b35cf2c0Smrg			cray)
295b35cf2c0Smrg				basic_machine=j90-cray
296b35cf2c0Smrg				basic_os=unicos
297b35cf2c0Smrg				;;
298b35cf2c0Smrg			crds | unos)
299b35cf2c0Smrg				basic_machine=m68k-crds
300b35cf2c0Smrg				basic_os=
301b35cf2c0Smrg				;;
302b35cf2c0Smrg			da30)
303b35cf2c0Smrg				basic_machine=m68k-da30
304b35cf2c0Smrg				basic_os=
305b35cf2c0Smrg				;;
306b35cf2c0Smrg			decstation | pmax | pmin | dec3100 | decstatn)
307b35cf2c0Smrg				basic_machine=mips-dec
308b35cf2c0Smrg				basic_os=
309b35cf2c0Smrg				;;
310b35cf2c0Smrg			delta88)
311b35cf2c0Smrg				basic_machine=m88k-motorola
312b35cf2c0Smrg				basic_os=sysv3
313b35cf2c0Smrg				;;
314b35cf2c0Smrg			dicos)
315b35cf2c0Smrg				basic_machine=i686-pc
316b35cf2c0Smrg				basic_os=dicos
317b35cf2c0Smrg				;;
318b35cf2c0Smrg			djgpp)
319b35cf2c0Smrg				basic_machine=i586-pc
320b35cf2c0Smrg				basic_os=msdosdjgpp
321b35cf2c0Smrg				;;
322b35cf2c0Smrg			ebmon29k)
323b35cf2c0Smrg				basic_machine=a29k-amd
324b35cf2c0Smrg				basic_os=ebmon
325b35cf2c0Smrg				;;
326b35cf2c0Smrg			es1800 | OSE68k | ose68k | ose | OSE)
327b35cf2c0Smrg				basic_machine=m68k-ericsson
328b35cf2c0Smrg				basic_os=ose
329b35cf2c0Smrg				;;
330b35cf2c0Smrg			gmicro)
331b35cf2c0Smrg				basic_machine=tron-gmicro
332b35cf2c0Smrg				basic_os=sysv
333b35cf2c0Smrg				;;
334b35cf2c0Smrg			go32)
335b35cf2c0Smrg				basic_machine=i386-pc
336b35cf2c0Smrg				basic_os=go32
337b35cf2c0Smrg				;;
338b35cf2c0Smrg			h8300hms)
339b35cf2c0Smrg				basic_machine=h8300-hitachi
340b35cf2c0Smrg				basic_os=hms
341b35cf2c0Smrg				;;
342b35cf2c0Smrg			h8300xray)
343b35cf2c0Smrg				basic_machine=h8300-hitachi
344b35cf2c0Smrg				basic_os=xray
345b35cf2c0Smrg				;;
346b35cf2c0Smrg			h8500hms)
347b35cf2c0Smrg				basic_machine=h8500-hitachi
348b35cf2c0Smrg				basic_os=hms
349b35cf2c0Smrg				;;
350b35cf2c0Smrg			harris)
351b35cf2c0Smrg				basic_machine=m88k-harris
352b35cf2c0Smrg				basic_os=sysv3
353b35cf2c0Smrg				;;
354b35cf2c0Smrg			hp300 | hp300hpux)
355b35cf2c0Smrg				basic_machine=m68k-hp
356b35cf2c0Smrg				basic_os=hpux
357b35cf2c0Smrg				;;
358b35cf2c0Smrg			hp300bsd)
359b35cf2c0Smrg				basic_machine=m68k-hp
360b35cf2c0Smrg				basic_os=bsd
361b35cf2c0Smrg				;;
362b35cf2c0Smrg			hppaosf)
363b35cf2c0Smrg				basic_machine=hppa1.1-hp
364b35cf2c0Smrg				basic_os=osf
365b35cf2c0Smrg				;;
366b35cf2c0Smrg			hppro)
367b35cf2c0Smrg				basic_machine=hppa1.1-hp
368b35cf2c0Smrg				basic_os=proelf
369b35cf2c0Smrg				;;
370b35cf2c0Smrg			i386mach)
371b35cf2c0Smrg				basic_machine=i386-mach
372b35cf2c0Smrg				basic_os=mach
373b35cf2c0Smrg				;;
374b35cf2c0Smrg			isi68 | isi)
375b35cf2c0Smrg				basic_machine=m68k-isi
376b35cf2c0Smrg				basic_os=sysv
377b35cf2c0Smrg				;;
378b35cf2c0Smrg			m68knommu)
379b35cf2c0Smrg				basic_machine=m68k-unknown
380b35cf2c0Smrg				basic_os=linux
381b35cf2c0Smrg				;;
382b35cf2c0Smrg			magnum | m3230)
383b35cf2c0Smrg				basic_machine=mips-mips
384b35cf2c0Smrg				basic_os=sysv
385b35cf2c0Smrg				;;
386b35cf2c0Smrg			merlin)
387b35cf2c0Smrg				basic_machine=ns32k-utek
388b35cf2c0Smrg				basic_os=sysv
389b35cf2c0Smrg				;;
390b35cf2c0Smrg			mingw64)
391b35cf2c0Smrg				basic_machine=x86_64-pc
392b35cf2c0Smrg				basic_os=mingw64
393b35cf2c0Smrg				;;
394b35cf2c0Smrg			mingw32)
395b35cf2c0Smrg				basic_machine=i686-pc
396b35cf2c0Smrg				basic_os=mingw32
397b35cf2c0Smrg				;;
398b35cf2c0Smrg			mingw32ce)
399b35cf2c0Smrg				basic_machine=arm-unknown
400b35cf2c0Smrg				basic_os=mingw32ce
401b35cf2c0Smrg				;;
402b35cf2c0Smrg			monitor)
403b35cf2c0Smrg				basic_machine=m68k-rom68k
404b35cf2c0Smrg				basic_os=coff
405b35cf2c0Smrg				;;
406b35cf2c0Smrg			morphos)
407b35cf2c0Smrg				basic_machine=powerpc-unknown
408b35cf2c0Smrg				basic_os=morphos
409b35cf2c0Smrg				;;
410b35cf2c0Smrg			moxiebox)
411b35cf2c0Smrg				basic_machine=moxie-unknown
412b35cf2c0Smrg				basic_os=moxiebox
413b35cf2c0Smrg				;;
414b35cf2c0Smrg			msdos)
415b35cf2c0Smrg				basic_machine=i386-pc
416b35cf2c0Smrg				basic_os=msdos
417b35cf2c0Smrg				;;
418b35cf2c0Smrg			msys)
419b35cf2c0Smrg				basic_machine=i686-pc
420b35cf2c0Smrg				basic_os=msys
421b35cf2c0Smrg				;;
422b35cf2c0Smrg			mvs)
423b35cf2c0Smrg				basic_machine=i370-ibm
424b35cf2c0Smrg				basic_os=mvs
425b35cf2c0Smrg				;;
426b35cf2c0Smrg			nacl)
427b35cf2c0Smrg				basic_machine=le32-unknown
428b35cf2c0Smrg				basic_os=nacl
429b35cf2c0Smrg				;;
430b35cf2c0Smrg			ncr3000)
431b35cf2c0Smrg				basic_machine=i486-ncr
432b35cf2c0Smrg				basic_os=sysv4
433b35cf2c0Smrg				;;
434b35cf2c0Smrg			netbsd386)
435b35cf2c0Smrg				basic_machine=i386-pc
436b35cf2c0Smrg				basic_os=netbsd
437b35cf2c0Smrg				;;
438b35cf2c0Smrg			netwinder)
439b35cf2c0Smrg				basic_machine=armv4l-rebel
440b35cf2c0Smrg				basic_os=linux
441b35cf2c0Smrg				;;
442b35cf2c0Smrg			news | news700 | news800 | news900)
443b35cf2c0Smrg				basic_machine=m68k-sony
444b35cf2c0Smrg				basic_os=newsos
445b35cf2c0Smrg				;;
446b35cf2c0Smrg			news1000)
447b35cf2c0Smrg				basic_machine=m68030-sony
448b35cf2c0Smrg				basic_os=newsos
449b35cf2c0Smrg				;;
450b35cf2c0Smrg			necv70)
451b35cf2c0Smrg				basic_machine=v70-nec
452b35cf2c0Smrg				basic_os=sysv
453b35cf2c0Smrg				;;
454b35cf2c0Smrg			nh3000)
455b35cf2c0Smrg				basic_machine=m68k-harris
456b35cf2c0Smrg				basic_os=cxux
457b35cf2c0Smrg				;;
458b35cf2c0Smrg			nh[45]000)
459b35cf2c0Smrg				basic_machine=m88k-harris
460b35cf2c0Smrg				basic_os=cxux
461b35cf2c0Smrg				;;
462b35cf2c0Smrg			nindy960)
463b35cf2c0Smrg				basic_machine=i960-intel
464b35cf2c0Smrg				basic_os=nindy
465b35cf2c0Smrg				;;
466b35cf2c0Smrg			mon960)
467b35cf2c0Smrg				basic_machine=i960-intel
468b35cf2c0Smrg				basic_os=mon960
469b35cf2c0Smrg				;;
470b35cf2c0Smrg			nonstopux)
471b35cf2c0Smrg				basic_machine=mips-compaq
472b35cf2c0Smrg				basic_os=nonstopux
473b35cf2c0Smrg				;;
474b35cf2c0Smrg			os400)
475b35cf2c0Smrg				basic_machine=powerpc-ibm
476b35cf2c0Smrg				basic_os=os400
477b35cf2c0Smrg				;;
478b35cf2c0Smrg			OSE68000 | ose68000)
479b35cf2c0Smrg				basic_machine=m68000-ericsson
480b35cf2c0Smrg				basic_os=ose
481b35cf2c0Smrg				;;
482b35cf2c0Smrg			os68k)
483b35cf2c0Smrg				basic_machine=m68k-none
484b35cf2c0Smrg				basic_os=os68k
485b35cf2c0Smrg				;;
486b35cf2c0Smrg			paragon)
487b35cf2c0Smrg				basic_machine=i860-intel
488b35cf2c0Smrg				basic_os=osf
489b35cf2c0Smrg				;;
490b35cf2c0Smrg			parisc)
491b35cf2c0Smrg				basic_machine=hppa-unknown
492b35cf2c0Smrg				basic_os=linux
493b35cf2c0Smrg				;;
494b35cf2c0Smrg			psp)
495b35cf2c0Smrg				basic_machine=mipsallegrexel-sony
496b35cf2c0Smrg				basic_os=psp
497b35cf2c0Smrg				;;
498b35cf2c0Smrg			pw32)
499b35cf2c0Smrg				basic_machine=i586-unknown
500b35cf2c0Smrg				basic_os=pw32
501b35cf2c0Smrg				;;
502b35cf2c0Smrg			rdos | rdos64)
503b35cf2c0Smrg				basic_machine=x86_64-pc
504b35cf2c0Smrg				basic_os=rdos
505b35cf2c0Smrg				;;
506b35cf2c0Smrg			rdos32)
507b35cf2c0Smrg				basic_machine=i386-pc
508b35cf2c0Smrg				basic_os=rdos
509b35cf2c0Smrg				;;
510b35cf2c0Smrg			rom68k)
511b35cf2c0Smrg				basic_machine=m68k-rom68k
512b35cf2c0Smrg				basic_os=coff
513b35cf2c0Smrg				;;
514b35cf2c0Smrg			sa29200)
515b35cf2c0Smrg				basic_machine=a29k-amd
516b35cf2c0Smrg				basic_os=udi
517b35cf2c0Smrg				;;
518b35cf2c0Smrg			sei)
519b35cf2c0Smrg				basic_machine=mips-sei
520b35cf2c0Smrg				basic_os=seiux
521b35cf2c0Smrg				;;
522b35cf2c0Smrg			sequent)
523b35cf2c0Smrg				basic_machine=i386-sequent
524b35cf2c0Smrg				basic_os=
525b35cf2c0Smrg				;;
526b35cf2c0Smrg			sps7)
527b35cf2c0Smrg				basic_machine=m68k-bull
528b35cf2c0Smrg				basic_os=sysv2
529b35cf2c0Smrg				;;
530b35cf2c0Smrg			st2000)
531b35cf2c0Smrg				basic_machine=m68k-tandem
532b35cf2c0Smrg				basic_os=
533b35cf2c0Smrg				;;
534b35cf2c0Smrg			stratus)
535b35cf2c0Smrg				basic_machine=i860-stratus
536b35cf2c0Smrg				basic_os=sysv4
537b35cf2c0Smrg				;;
538b35cf2c0Smrg			sun2)
539b35cf2c0Smrg				basic_machine=m68000-sun
540b35cf2c0Smrg				basic_os=
541b35cf2c0Smrg				;;
542b35cf2c0Smrg			sun2os3)
543b35cf2c0Smrg				basic_machine=m68000-sun
544b35cf2c0Smrg				basic_os=sunos3
545b35cf2c0Smrg				;;
546b35cf2c0Smrg			sun2os4)
547b35cf2c0Smrg				basic_machine=m68000-sun
548b35cf2c0Smrg				basic_os=sunos4
549b35cf2c0Smrg				;;
550b35cf2c0Smrg			sun3)
551b35cf2c0Smrg				basic_machine=m68k-sun
552b35cf2c0Smrg				basic_os=
553b35cf2c0Smrg				;;
554b35cf2c0Smrg			sun3os3)
555b35cf2c0Smrg				basic_machine=m68k-sun
556b35cf2c0Smrg				basic_os=sunos3
557b35cf2c0Smrg				;;
558b35cf2c0Smrg			sun3os4)
559b35cf2c0Smrg				basic_machine=m68k-sun
560b35cf2c0Smrg				basic_os=sunos4
561b35cf2c0Smrg				;;
562b35cf2c0Smrg			sun4)
563b35cf2c0Smrg				basic_machine=sparc-sun
564b35cf2c0Smrg				basic_os=
565b35cf2c0Smrg				;;
566b35cf2c0Smrg			sun4os3)
567b35cf2c0Smrg				basic_machine=sparc-sun
568b35cf2c0Smrg				basic_os=sunos3
569b35cf2c0Smrg				;;
570b35cf2c0Smrg			sun4os4)
571b35cf2c0Smrg				basic_machine=sparc-sun
572b35cf2c0Smrg				basic_os=sunos4
573b35cf2c0Smrg				;;
574b35cf2c0Smrg			sun4sol2)
575b35cf2c0Smrg				basic_machine=sparc-sun
576b35cf2c0Smrg				basic_os=solaris2
577b35cf2c0Smrg				;;
578b35cf2c0Smrg			sun386 | sun386i | roadrunner)
579b35cf2c0Smrg				basic_machine=i386-sun
580b35cf2c0Smrg				basic_os=
581b35cf2c0Smrg				;;
582b35cf2c0Smrg			sv1)
583b35cf2c0Smrg				basic_machine=sv1-cray
584b35cf2c0Smrg				basic_os=unicos
585b35cf2c0Smrg				;;
586b35cf2c0Smrg			symmetry)
587b35cf2c0Smrg				basic_machine=i386-sequent
588b35cf2c0Smrg				basic_os=dynix
589b35cf2c0Smrg				;;
590b35cf2c0Smrg			t3e)
591b35cf2c0Smrg				basic_machine=alphaev5-cray
592b35cf2c0Smrg				basic_os=unicos
593b35cf2c0Smrg				;;
594b35cf2c0Smrg			t90)
595b35cf2c0Smrg				basic_machine=t90-cray
596b35cf2c0Smrg				basic_os=unicos
597b35cf2c0Smrg				;;
598b35cf2c0Smrg			toad1)
599b35cf2c0Smrg				basic_machine=pdp10-xkl
600b35cf2c0Smrg				basic_os=tops20
601b35cf2c0Smrg				;;
602b35cf2c0Smrg			tpf)
603b35cf2c0Smrg				basic_machine=s390x-ibm
604b35cf2c0Smrg				basic_os=tpf
605b35cf2c0Smrg				;;
606b35cf2c0Smrg			udi29k)
607b35cf2c0Smrg				basic_machine=a29k-amd
608b35cf2c0Smrg				basic_os=udi
609b35cf2c0Smrg				;;
610b35cf2c0Smrg			ultra3)
611b35cf2c0Smrg				basic_machine=a29k-nyu
612b35cf2c0Smrg				basic_os=sym1
613b35cf2c0Smrg				;;
614b35cf2c0Smrg			v810 | necv810)
615b35cf2c0Smrg				basic_machine=v810-nec
616b35cf2c0Smrg				basic_os=none
617b35cf2c0Smrg				;;
618b35cf2c0Smrg			vaxv)
619b35cf2c0Smrg				basic_machine=vax-dec
620b35cf2c0Smrg				basic_os=sysv
621b35cf2c0Smrg				;;
622b35cf2c0Smrg			vms)
623b35cf2c0Smrg				basic_machine=vax-dec
624b35cf2c0Smrg				basic_os=vms
625b35cf2c0Smrg				;;
626b35cf2c0Smrg			vsta)
627b35cf2c0Smrg				basic_machine=i386-pc
628b35cf2c0Smrg				basic_os=vsta
629b35cf2c0Smrg				;;
630b35cf2c0Smrg			vxworks960)
631b35cf2c0Smrg				basic_machine=i960-wrs
632b35cf2c0Smrg				basic_os=vxworks
633b35cf2c0Smrg				;;
634b35cf2c0Smrg			vxworks68)
635b35cf2c0Smrg				basic_machine=m68k-wrs
636b35cf2c0Smrg				basic_os=vxworks
637b35cf2c0Smrg				;;
638b35cf2c0Smrg			vxworks29k)
639b35cf2c0Smrg				basic_machine=a29k-wrs
640b35cf2c0Smrg				basic_os=vxworks
641b35cf2c0Smrg				;;
642b35cf2c0Smrg			xbox)
643b35cf2c0Smrg				basic_machine=i686-pc
644b35cf2c0Smrg				basic_os=mingw32
645b35cf2c0Smrg				;;
646b35cf2c0Smrg			ymp)
647b35cf2c0Smrg				basic_machine=ymp-cray
648b35cf2c0Smrg				basic_os=unicos
649b35cf2c0Smrg				;;
650b35cf2c0Smrg			*)
651b35cf2c0Smrg				basic_machine=$1
652b35cf2c0Smrg				basic_os=
653b35cf2c0Smrg				;;
654b35cf2c0Smrg		esac
655b35cf2c0Smrg		;;
656b35cf2c0Smrgesac
657b35cf2c0Smrg
658b35cf2c0Smrg# Decode 1-component or ad-hoc basic machines
659b35cf2c0Smrgcase $basic_machine in
660b35cf2c0Smrg	# Here we handle the default manufacturer of certain CPU types.  It is in
661b35cf2c0Smrg	# some cases the only manufacturer, in others, it is the most popular.
662b35cf2c0Smrg	w89k)
663b35cf2c0Smrg		cpu=hppa1.1
664b35cf2c0Smrg		vendor=winbond
665b35cf2c0Smrg		;;
666b35cf2c0Smrg	op50n)
667b35cf2c0Smrg		cpu=hppa1.1
668b35cf2c0Smrg		vendor=oki
669b35cf2c0Smrg		;;
670b35cf2c0Smrg	op60c)
671b35cf2c0Smrg		cpu=hppa1.1
672b35cf2c0Smrg		vendor=oki
673b35cf2c0Smrg		;;
674b35cf2c0Smrg	ibm*)
675b35cf2c0Smrg		cpu=i370
676b35cf2c0Smrg		vendor=ibm
677b35cf2c0Smrg		;;
678b35cf2c0Smrg	orion105)
679b35cf2c0Smrg		cpu=clipper
680b35cf2c0Smrg		vendor=highlevel
681b35cf2c0Smrg		;;
682b35cf2c0Smrg	mac | mpw | mac-mpw)
683b35cf2c0Smrg		cpu=m68k
684b35cf2c0Smrg		vendor=apple
685b35cf2c0Smrg		;;
686b35cf2c0Smrg	pmac | pmac-mpw)
687b35cf2c0Smrg		cpu=powerpc
688b35cf2c0Smrg		vendor=apple
689b35cf2c0Smrg		;;
690b35cf2c0Smrg
691b35cf2c0Smrg	# Recognize the various machine names and aliases which stand
692b35cf2c0Smrg	# for a CPU type and a company and sometimes even an OS.
693b35cf2c0Smrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
694b35cf2c0Smrg		cpu=m68000
695b35cf2c0Smrg		vendor=att
696b35cf2c0Smrg		;;
697b35cf2c0Smrg	3b*)
698b35cf2c0Smrg		cpu=we32k
699b35cf2c0Smrg		vendor=att
700b35cf2c0Smrg		;;
701b35cf2c0Smrg	bluegene*)
702b35cf2c0Smrg		cpu=powerpc
703b35cf2c0Smrg		vendor=ibm
704b35cf2c0Smrg		basic_os=cnk
705b35cf2c0Smrg		;;
706b35cf2c0Smrg	decsystem10* | dec10*)
707b35cf2c0Smrg		cpu=pdp10
708b35cf2c0Smrg		vendor=dec
709b35cf2c0Smrg		basic_os=tops10
710b35cf2c0Smrg		;;
711b35cf2c0Smrg	decsystem20* | dec20*)
712b35cf2c0Smrg		cpu=pdp10
713b35cf2c0Smrg		vendor=dec
714b35cf2c0Smrg		basic_os=tops20
715b35cf2c0Smrg		;;
716b35cf2c0Smrg	delta | 3300 | motorola-3300 | motorola-delta \
717b35cf2c0Smrg	      | 3300-motorola | delta-motorola)
718b35cf2c0Smrg		cpu=m68k
719b35cf2c0Smrg		vendor=motorola
720b35cf2c0Smrg		;;
721b35cf2c0Smrg	dpx2*)
722b35cf2c0Smrg		cpu=m68k
723b35cf2c0Smrg		vendor=bull
724b35cf2c0Smrg		basic_os=sysv3
725b35cf2c0Smrg		;;
726b35cf2c0Smrg	encore | umax | mmax)
727b35cf2c0Smrg		cpu=ns32k
728b35cf2c0Smrg		vendor=encore
729b35cf2c0Smrg		;;
730b35cf2c0Smrg	elxsi)
731b35cf2c0Smrg		cpu=elxsi
732b35cf2c0Smrg		vendor=elxsi
733b35cf2c0Smrg		basic_os=${basic_os:-bsd}
734b35cf2c0Smrg		;;
735b35cf2c0Smrg	fx2800)
736b35cf2c0Smrg		cpu=i860
737b35cf2c0Smrg		vendor=alliant
738b35cf2c0Smrg		;;
739b35cf2c0Smrg	genix)
740b35cf2c0Smrg		cpu=ns32k
741b35cf2c0Smrg		vendor=ns
742b35cf2c0Smrg		;;
743b35cf2c0Smrg	h3050r* | hiux*)
744b35cf2c0Smrg		cpu=hppa1.1
745b35cf2c0Smrg		vendor=hitachi
746b35cf2c0Smrg		basic_os=hiuxwe2
747b35cf2c0Smrg		;;
748b35cf2c0Smrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
749b35cf2c0Smrg		cpu=hppa1.0
750b35cf2c0Smrg		vendor=hp
751b35cf2c0Smrg		;;
752b35cf2c0Smrg	hp9k2[0-9][0-9] | hp9k31[0-9])
753b35cf2c0Smrg		cpu=m68000
754b35cf2c0Smrg		vendor=hp
755b35cf2c0Smrg		;;
756b35cf2c0Smrg	hp9k3[2-9][0-9])
757b35cf2c0Smrg		cpu=m68k
758b35cf2c0Smrg		vendor=hp
759b35cf2c0Smrg		;;
760b35cf2c0Smrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
761b35cf2c0Smrg		cpu=hppa1.0
762b35cf2c0Smrg		vendor=hp
763b35cf2c0Smrg		;;
764b35cf2c0Smrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
765b35cf2c0Smrg		cpu=hppa1.1
766b35cf2c0Smrg		vendor=hp
767b35cf2c0Smrg		;;
768b35cf2c0Smrg	hp9k78[0-9] | hp78[0-9])
769b35cf2c0Smrg		# FIXME: really hppa2.0-hp
770b35cf2c0Smrg		cpu=hppa1.1
771b35cf2c0Smrg		vendor=hp
772b35cf2c0Smrg		;;
773b35cf2c0Smrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
774b35cf2c0Smrg		# FIXME: really hppa2.0-hp
775b35cf2c0Smrg		cpu=hppa1.1
776b35cf2c0Smrg		vendor=hp
777b35cf2c0Smrg		;;
778b35cf2c0Smrg	hp9k8[0-9][13679] | hp8[0-9][13679])
779b35cf2c0Smrg		cpu=hppa1.1
780b35cf2c0Smrg		vendor=hp
781b35cf2c0Smrg		;;
782b35cf2c0Smrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
783b35cf2c0Smrg		cpu=hppa1.0
784b35cf2c0Smrg		vendor=hp
785b35cf2c0Smrg		;;
786b35cf2c0Smrg	i*86v32)
787b35cf2c0Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
788b35cf2c0Smrg		vendor=pc
789b35cf2c0Smrg		basic_os=sysv32
790b35cf2c0Smrg		;;
791b35cf2c0Smrg	i*86v4*)
792b35cf2c0Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
793b35cf2c0Smrg		vendor=pc
794b35cf2c0Smrg		basic_os=sysv4
795b35cf2c0Smrg		;;
796b35cf2c0Smrg	i*86v)
797b35cf2c0Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
798b35cf2c0Smrg		vendor=pc
799b35cf2c0Smrg		basic_os=sysv
800b35cf2c0Smrg		;;
801b35cf2c0Smrg	i*86sol2)
802b35cf2c0Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
803b35cf2c0Smrg		vendor=pc
804b35cf2c0Smrg		basic_os=solaris2
805b35cf2c0Smrg		;;
806b35cf2c0Smrg	j90 | j90-cray)
807b35cf2c0Smrg		cpu=j90
808b35cf2c0Smrg		vendor=cray
809b35cf2c0Smrg		basic_os=${basic_os:-unicos}
810b35cf2c0Smrg		;;
811b35cf2c0Smrg	iris | iris4d)
812b35cf2c0Smrg		cpu=mips
813b35cf2c0Smrg		vendor=sgi
814b35cf2c0Smrg		case $basic_os in
815b35cf2c0Smrg		    irix*)
816b35cf2c0Smrg			;;
817b35cf2c0Smrg		    *)
818b35cf2c0Smrg			basic_os=irix4
819b35cf2c0Smrg			;;
820b35cf2c0Smrg		esac
821b35cf2c0Smrg		;;
822b35cf2c0Smrg	miniframe)
823b35cf2c0Smrg		cpu=m68000
824b35cf2c0Smrg		vendor=convergent
825b35cf2c0Smrg		;;
826b35cf2c0Smrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
827b35cf2c0Smrg		cpu=m68k
828b35cf2c0Smrg		vendor=atari
829b35cf2c0Smrg		basic_os=mint
830b35cf2c0Smrg		;;
831b35cf2c0Smrg	news-3600 | risc-news)
832b35cf2c0Smrg		cpu=mips
833b35cf2c0Smrg		vendor=sony
834b35cf2c0Smrg		basic_os=newsos
835b35cf2c0Smrg		;;
836b35cf2c0Smrg	next | m*-next)
837b35cf2c0Smrg		cpu=m68k
838b35cf2c0Smrg		vendor=next
839b35cf2c0Smrg		case $basic_os in
840b35cf2c0Smrg		    openstep*)
841b35cf2c0Smrg		        ;;
842b35cf2c0Smrg		    nextstep*)
843b35cf2c0Smrg			;;
844b35cf2c0Smrg		    ns2*)
845b35cf2c0Smrg		      basic_os=nextstep2
846b35cf2c0Smrg			;;
847b35cf2c0Smrg		    *)
848b35cf2c0Smrg		      basic_os=nextstep3
849b35cf2c0Smrg			;;
850b35cf2c0Smrg		esac
851b35cf2c0Smrg		;;
852b35cf2c0Smrg	np1)
853b35cf2c0Smrg		cpu=np1
854b35cf2c0Smrg		vendor=gould
855b35cf2c0Smrg		;;
856b35cf2c0Smrg	op50n-* | op60c-*)
857b35cf2c0Smrg		cpu=hppa1.1
858b35cf2c0Smrg		vendor=oki
859b35cf2c0Smrg		basic_os=proelf
860b35cf2c0Smrg		;;
861b35cf2c0Smrg	pa-hitachi)
862b35cf2c0Smrg		cpu=hppa1.1
863b35cf2c0Smrg		vendor=hitachi
864b35cf2c0Smrg		basic_os=hiuxwe2
865b35cf2c0Smrg		;;
866b35cf2c0Smrg	pbd)
867b35cf2c0Smrg		cpu=sparc
868b35cf2c0Smrg		vendor=tti
869b35cf2c0Smrg		;;
870b35cf2c0Smrg	pbb)
871b35cf2c0Smrg		cpu=m68k
872b35cf2c0Smrg		vendor=tti
873b35cf2c0Smrg		;;
874b35cf2c0Smrg	pc532)
875b35cf2c0Smrg		cpu=ns32k
876b35cf2c0Smrg		vendor=pc532
877b35cf2c0Smrg		;;
878b35cf2c0Smrg	pn)
879b35cf2c0Smrg		cpu=pn
880b35cf2c0Smrg		vendor=gould
881b35cf2c0Smrg		;;
882b35cf2c0Smrg	power)
883b35cf2c0Smrg		cpu=power
884b35cf2c0Smrg		vendor=ibm
885b35cf2c0Smrg		;;
886b35cf2c0Smrg	ps2)
887b35cf2c0Smrg		cpu=i386
888b35cf2c0Smrg		vendor=ibm
889b35cf2c0Smrg		;;
890b35cf2c0Smrg	rm[46]00)
891b35cf2c0Smrg		cpu=mips
892b35cf2c0Smrg		vendor=siemens
893b35cf2c0Smrg		;;
894b35cf2c0Smrg	rtpc | rtpc-*)
895b35cf2c0Smrg		cpu=romp
896b35cf2c0Smrg		vendor=ibm
897b35cf2c0Smrg		;;
898b35cf2c0Smrg	sde)
899b35cf2c0Smrg		cpu=mipsisa32
900b35cf2c0Smrg		vendor=sde
901b35cf2c0Smrg		basic_os=${basic_os:-elf}
902b35cf2c0Smrg		;;
903b35cf2c0Smrg	simso-wrs)
904b35cf2c0Smrg		cpu=sparclite
905b35cf2c0Smrg		vendor=wrs
906b35cf2c0Smrg		basic_os=vxworks
907b35cf2c0Smrg		;;
908b35cf2c0Smrg	tower | tower-32)
909b35cf2c0Smrg		cpu=m68k
910b35cf2c0Smrg		vendor=ncr
911b35cf2c0Smrg		;;
912b35cf2c0Smrg	vpp*|vx|vx-*)
913b35cf2c0Smrg		cpu=f301
914b35cf2c0Smrg		vendor=fujitsu
915b35cf2c0Smrg		;;
916b35cf2c0Smrg	w65)
917b35cf2c0Smrg		cpu=w65
918b35cf2c0Smrg		vendor=wdc
919b35cf2c0Smrg		;;
920b35cf2c0Smrg	w89k-*)
921b35cf2c0Smrg		cpu=hppa1.1
922b35cf2c0Smrg		vendor=winbond
923b35cf2c0Smrg		basic_os=proelf
924b35cf2c0Smrg		;;
925b35cf2c0Smrg	none)
926b35cf2c0Smrg		cpu=none
927b35cf2c0Smrg		vendor=none
928b35cf2c0Smrg		;;
929b35cf2c0Smrg	leon|leon[3-9])
930b35cf2c0Smrg		cpu=sparc
931b35cf2c0Smrg		vendor=$basic_machine
932b35cf2c0Smrg		;;
933b35cf2c0Smrg	leon-*|leon[3-9]-*)
934b35cf2c0Smrg		cpu=sparc
935b35cf2c0Smrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
936b35cf2c0Smrg		;;
937b35cf2c0Smrg
938b35cf2c0Smrg	*-*)
939b35cf2c0Smrg		# shellcheck disable=SC2162
940b35cf2c0Smrg		saved_IFS=$IFS
941b35cf2c0Smrg		IFS="-" read cpu vendor <<EOF
942b35cf2c0Smrg$basic_machine
943b35cf2c0SmrgEOF
944b35cf2c0Smrg		IFS=$saved_IFS
945b35cf2c0Smrg		;;
946b35cf2c0Smrg	# We use `pc' rather than `unknown'
947b35cf2c0Smrg	# because (1) that's what they normally are, and
948b35cf2c0Smrg	# (2) the word "unknown" tends to confuse beginning users.
949b35cf2c0Smrg	i*86 | x86_64)
950b35cf2c0Smrg		cpu=$basic_machine
951b35cf2c0Smrg		vendor=pc
952b35cf2c0Smrg		;;
953b35cf2c0Smrg	# These rules are duplicated from below for sake of the special case above;
954b35cf2c0Smrg	# i.e. things that normalized to x86 arches should also default to "pc"
955b35cf2c0Smrg	pc98)
956b35cf2c0Smrg		cpu=i386
957b35cf2c0Smrg		vendor=pc
958b35cf2c0Smrg		;;
959b35cf2c0Smrg	x64 | amd64)
960b35cf2c0Smrg		cpu=x86_64
961b35cf2c0Smrg		vendor=pc
962b35cf2c0Smrg		;;
963b35cf2c0Smrg	# Recognize the basic CPU types without company name.
964b35cf2c0Smrg	*)
965b35cf2c0Smrg		cpu=$basic_machine
966b35cf2c0Smrg		vendor=unknown
967b35cf2c0Smrg		;;
968b35cf2c0Smrgesac
969b35cf2c0Smrg
970b35cf2c0Smrgunset -v basic_machine
971b35cf2c0Smrg
972b35cf2c0Smrg# Decode basic machines in the full and proper CPU-Company form.
973b35cf2c0Smrgcase $cpu-$vendor in
974b35cf2c0Smrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
975b35cf2c0Smrg	# some cases the only manufacturer, in others, it is the most popular.
976b35cf2c0Smrg	craynv-unknown)
977b35cf2c0Smrg		vendor=cray
978b35cf2c0Smrg		basic_os=${basic_os:-unicosmp}
979b35cf2c0Smrg		;;
980b35cf2c0Smrg	c90-unknown | c90-cray)
981b35cf2c0Smrg		vendor=cray
982b35cf2c0Smrg		basic_os=${Basic_os:-unicos}
983b35cf2c0Smrg		;;
984b35cf2c0Smrg	fx80-unknown)
985b35cf2c0Smrg		vendor=alliant
986b35cf2c0Smrg		;;
987b35cf2c0Smrg	romp-unknown)
988b35cf2c0Smrg		vendor=ibm
989b35cf2c0Smrg		;;
990b35cf2c0Smrg	mmix-unknown)
991b35cf2c0Smrg		vendor=knuth
992b35cf2c0Smrg		;;
993b35cf2c0Smrg	microblaze-unknown | microblazeel-unknown)
994b35cf2c0Smrg		vendor=xilinx
995b35cf2c0Smrg		;;
996b35cf2c0Smrg	rs6000-unknown)
997b35cf2c0Smrg		vendor=ibm
998b35cf2c0Smrg		;;
999b35cf2c0Smrg	vax-unknown)
1000b35cf2c0Smrg		vendor=dec
1001b35cf2c0Smrg		;;
1002b35cf2c0Smrg	pdp11-unknown)
1003b35cf2c0Smrg		vendor=dec
1004b35cf2c0Smrg		;;
1005b35cf2c0Smrg	we32k-unknown)
1006b35cf2c0Smrg		vendor=att
1007b35cf2c0Smrg		;;
1008b35cf2c0Smrg	cydra-unknown)
1009b35cf2c0Smrg		vendor=cydrome
1010b35cf2c0Smrg		;;
1011b35cf2c0Smrg	i370-ibm*)
1012b35cf2c0Smrg		vendor=ibm
1013b35cf2c0Smrg		;;
1014b35cf2c0Smrg	orion-unknown)
1015b35cf2c0Smrg		vendor=highlevel
1016b35cf2c0Smrg		;;
1017b35cf2c0Smrg	xps-unknown | xps100-unknown)
1018b35cf2c0Smrg		cpu=xps100
1019b35cf2c0Smrg		vendor=honeywell
1020b35cf2c0Smrg		;;
1021b35cf2c0Smrg
1022b35cf2c0Smrg	# Here we normalize CPU types with a missing or matching vendor
1023b35cf2c0Smrg	armh-unknown | armh-alt)
1024b35cf2c0Smrg		cpu=armv7l
1025b35cf2c0Smrg		vendor=alt
1026b35cf2c0Smrg		basic_os=${basic_os:-linux-gnueabihf}
1027b35cf2c0Smrg		;;
1028b35cf2c0Smrg	dpx20-unknown | dpx20-bull)
1029b35cf2c0Smrg		cpu=rs6000
1030b35cf2c0Smrg		vendor=bull
1031b35cf2c0Smrg		basic_os=${basic_os:-bosx}
1032b35cf2c0Smrg		;;
1033b35cf2c0Smrg
1034b35cf2c0Smrg	# Here we normalize CPU types irrespective of the vendor
1035b35cf2c0Smrg	amd64-*)
1036b35cf2c0Smrg		cpu=x86_64
1037b35cf2c0Smrg		;;
1038b35cf2c0Smrg	blackfin-*)
1039b35cf2c0Smrg		cpu=bfin
1040b35cf2c0Smrg		basic_os=linux
1041b35cf2c0Smrg		;;
1042b35cf2c0Smrg	c54x-*)
1043b35cf2c0Smrg		cpu=tic54x
1044b35cf2c0Smrg		;;
1045b35cf2c0Smrg	c55x-*)
1046b35cf2c0Smrg		cpu=tic55x
1047b35cf2c0Smrg		;;
1048b35cf2c0Smrg	c6x-*)
1049b35cf2c0Smrg		cpu=tic6x
1050b35cf2c0Smrg		;;
1051b35cf2c0Smrg	e500v[12]-*)
1052b35cf2c0Smrg		cpu=powerpc
1053b35cf2c0Smrg		basic_os=${basic_os}"spe"
1054b35cf2c0Smrg		;;
1055b35cf2c0Smrg	mips3*-*)
1056b35cf2c0Smrg		cpu=mips64
1057b35cf2c0Smrg		;;
1058b35cf2c0Smrg	ms1-*)
1059b35cf2c0Smrg		cpu=mt
1060b35cf2c0Smrg		;;
1061b35cf2c0Smrg	m68knommu-*)
1062b35cf2c0Smrg		cpu=m68k
1063b35cf2c0Smrg		basic_os=linux
1064b35cf2c0Smrg		;;
1065b35cf2c0Smrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
1066b35cf2c0Smrg		cpu=s12z
1067b35cf2c0Smrg		;;
1068b35cf2c0Smrg	openrisc-*)
1069b35cf2c0Smrg		cpu=or32
1070b35cf2c0Smrg		;;
1071b35cf2c0Smrg	parisc-*)
1072b35cf2c0Smrg		cpu=hppa
1073b35cf2c0Smrg		basic_os=linux
1074b35cf2c0Smrg		;;
1075b35cf2c0Smrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
1076b35cf2c0Smrg		cpu=i586
1077b35cf2c0Smrg		;;
1078b35cf2c0Smrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
1079b35cf2c0Smrg		cpu=i686
1080b35cf2c0Smrg		;;
1081b35cf2c0Smrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
1082b35cf2c0Smrg		cpu=i686
1083b35cf2c0Smrg		;;
1084b35cf2c0Smrg	pentium4-*)
1085b35cf2c0Smrg		cpu=i786
1086b35cf2c0Smrg		;;
1087b35cf2c0Smrg	pc98-*)
1088b35cf2c0Smrg		cpu=i386
1089b35cf2c0Smrg		;;
1090b35cf2c0Smrg	ppc-* | ppcbe-*)
1091b35cf2c0Smrg		cpu=powerpc
1092b35cf2c0Smrg		;;
1093b35cf2c0Smrg	ppcle-* | powerpclittle-*)
1094b35cf2c0Smrg		cpu=powerpcle
1095b35cf2c0Smrg		;;
1096b35cf2c0Smrg	ppc64-*)
1097b35cf2c0Smrg		cpu=powerpc64
1098b35cf2c0Smrg		;;
1099b35cf2c0Smrg	ppc64le-* | powerpc64little-*)
1100b35cf2c0Smrg		cpu=powerpc64le
1101b35cf2c0Smrg		;;
1102b35cf2c0Smrg	sb1-*)
1103b35cf2c0Smrg		cpu=mipsisa64sb1
1104b35cf2c0Smrg		;;
1105b35cf2c0Smrg	sb1el-*)
1106b35cf2c0Smrg		cpu=mipsisa64sb1el
1107b35cf2c0Smrg		;;
1108b35cf2c0Smrg	sh5e[lb]-*)
1109b35cf2c0Smrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
1110b35cf2c0Smrg		;;
1111b35cf2c0Smrg	spur-*)
1112b35cf2c0Smrg		cpu=spur
1113b35cf2c0Smrg		;;
1114b35cf2c0Smrg	strongarm-* | thumb-*)
1115b35cf2c0Smrg		cpu=arm
1116b35cf2c0Smrg		;;
1117b35cf2c0Smrg	tx39-*)
1118b35cf2c0Smrg		cpu=mipstx39
1119b35cf2c0Smrg		;;
1120b35cf2c0Smrg	tx39el-*)
1121b35cf2c0Smrg		cpu=mipstx39el
1122b35cf2c0Smrg		;;
1123b35cf2c0Smrg	x64-*)
1124b35cf2c0Smrg		cpu=x86_64
1125b35cf2c0Smrg		;;
1126b35cf2c0Smrg	xscale-* | xscalee[bl]-*)
1127b35cf2c0Smrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
1128b35cf2c0Smrg		;;
1129b35cf2c0Smrg	arm64-* | aarch64le-*)
1130b35cf2c0Smrg		cpu=aarch64
1131b35cf2c0Smrg		;;
1132b35cf2c0Smrg
1133b35cf2c0Smrg	# Recognize the canonical CPU Types that limit and/or modify the
1134b35cf2c0Smrg	# company names they are paired with.
1135b35cf2c0Smrg	cr16-*)
1136b35cf2c0Smrg		basic_os=${basic_os:-elf}
1137b35cf2c0Smrg		;;
1138b35cf2c0Smrg	crisv32-* | etraxfs*-*)
1139b35cf2c0Smrg		cpu=crisv32
1140b35cf2c0Smrg		vendor=axis
1141b35cf2c0Smrg		;;
1142b35cf2c0Smrg	cris-* | etrax*-*)
1143b35cf2c0Smrg		cpu=cris
1144b35cf2c0Smrg		vendor=axis
1145b35cf2c0Smrg		;;
1146b35cf2c0Smrg	crx-*)
1147b35cf2c0Smrg		basic_os=${basic_os:-elf}
1148b35cf2c0Smrg		;;
1149b35cf2c0Smrg	neo-tandem)
1150b35cf2c0Smrg		cpu=neo
1151b35cf2c0Smrg		vendor=tandem
1152b35cf2c0Smrg		;;
1153b35cf2c0Smrg	nse-tandem)
1154b35cf2c0Smrg		cpu=nse
1155b35cf2c0Smrg		vendor=tandem
1156b35cf2c0Smrg		;;
1157b35cf2c0Smrg	nsr-tandem)
1158b35cf2c0Smrg		cpu=nsr
1159b35cf2c0Smrg		vendor=tandem
1160b35cf2c0Smrg		;;
1161b35cf2c0Smrg	nsv-tandem)
1162b35cf2c0Smrg		cpu=nsv
1163b35cf2c0Smrg		vendor=tandem
1164b35cf2c0Smrg		;;
1165b35cf2c0Smrg	nsx-tandem)
1166b35cf2c0Smrg		cpu=nsx
1167b35cf2c0Smrg		vendor=tandem
1168b35cf2c0Smrg		;;
1169b35cf2c0Smrg	mipsallegrexel-sony)
1170b35cf2c0Smrg		cpu=mipsallegrexel
1171b35cf2c0Smrg		vendor=sony
1172b35cf2c0Smrg		;;
1173b35cf2c0Smrg	tile*-*)
1174b35cf2c0Smrg		basic_os=${basic_os:-linux-gnu}
1175b35cf2c0Smrg		;;
1176b35cf2c0Smrg
1177b35cf2c0Smrg	*)
1178b35cf2c0Smrg		# Recognize the canonical CPU types that are allowed with any
1179b35cf2c0Smrg		# company name.
1180b35cf2c0Smrg		case $cpu in
1181b35cf2c0Smrg			1750a | 580 \
1182b35cf2c0Smrg			| a29k \
1183b35cf2c0Smrg			| aarch64 | aarch64_be \
1184b35cf2c0Smrg			| abacus \
1185b35cf2c0Smrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
1186b35cf2c0Smrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
1187b35cf2c0Smrg			| alphapca5[67] | alpha64pca5[67] \
1188b35cf2c0Smrg			| am33_2.0 \
1189b35cf2c0Smrg			| amdgcn \
1190b35cf2c0Smrg			| arc | arceb | arc32 | arc64 \
1191b35cf2c0Smrg			| arm | arm[lb]e | arme[lb] | armv* \
1192b35cf2c0Smrg			| avr | avr32 \
1193b35cf2c0Smrg			| asmjs \
1194b35cf2c0Smrg			| ba \
1195b35cf2c0Smrg			| be32 | be64 \
1196b35cf2c0Smrg			| bfin | bpf | bs2000 \
1197b35cf2c0Smrg			| c[123]* | c30 | [cjt]90 | c4x \
1198b35cf2c0Smrg			| c8051 | clipper | craynv | csky | cydra \
1199b35cf2c0Smrg			| d10v | d30v | dlx | dsp16xx \
1200b35cf2c0Smrg			| e2k | elxsi | epiphany \
1201b35cf2c0Smrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
1202b35cf2c0Smrg			| h8300 | h8500 \
1203b35cf2c0Smrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
1204b35cf2c0Smrg			| hexagon \
1205b35cf2c0Smrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
1206b35cf2c0Smrg			| ip2k | iq2000 \
1207b35cf2c0Smrg			| k1om \
1208b35cf2c0Smrg			| le32 | le64 \
1209b35cf2c0Smrg			| lm32 \
1210b35cf2c0Smrg			| loongarch32 | loongarch64 \
1211b35cf2c0Smrg			| m32c | m32r | m32rle \
1212b35cf2c0Smrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
1213b35cf2c0Smrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
1214b35cf2c0Smrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
1215b35cf2c0Smrg			| microblaze | microblazeel \
1216b35cf2c0Smrg			| mips | mipsbe | mipseb | mipsel | mipsle \
1217b35cf2c0Smrg			| mips16 \
1218b35cf2c0Smrg			| mips64 | mips64eb | mips64el \
1219b35cf2c0Smrg			| mips64octeon | mips64octeonel \
1220b35cf2c0Smrg			| mips64orion | mips64orionel \
1221b35cf2c0Smrg			| mips64r5900 | mips64r5900el \
1222b35cf2c0Smrg			| mips64vr | mips64vrel \
1223b35cf2c0Smrg			| mips64vr4100 | mips64vr4100el \
1224b35cf2c0Smrg			| mips64vr4300 | mips64vr4300el \
1225b35cf2c0Smrg			| mips64vr5000 | mips64vr5000el \
1226b35cf2c0Smrg			| mips64vr5900 | mips64vr5900el \
1227b35cf2c0Smrg			| mipsisa32 | mipsisa32el \
1228b35cf2c0Smrg			| mipsisa32r2 | mipsisa32r2el \
1229b35cf2c0Smrg			| mipsisa32r3 | mipsisa32r3el \
1230b35cf2c0Smrg			| mipsisa32r5 | mipsisa32r5el \
1231b35cf2c0Smrg			| mipsisa32r6 | mipsisa32r6el \
1232b35cf2c0Smrg			| mipsisa64 | mipsisa64el \
1233b35cf2c0Smrg			| mipsisa64r2 | mipsisa64r2el \
1234b35cf2c0Smrg			| mipsisa64r3 | mipsisa64r3el \
1235b35cf2c0Smrg			| mipsisa64r5 | mipsisa64r5el \
1236b35cf2c0Smrg			| mipsisa64r6 | mipsisa64r6el \
1237b35cf2c0Smrg			| mipsisa64sb1 | mipsisa64sb1el \
1238b35cf2c0Smrg			| mipsisa64sr71k | mipsisa64sr71kel \
1239b35cf2c0Smrg			| mipsr5900 | mipsr5900el \
1240b35cf2c0Smrg			| mipstx39 | mipstx39el \
1241b35cf2c0Smrg			| mmix \
1242b35cf2c0Smrg			| mn10200 | mn10300 \
1243b35cf2c0Smrg			| moxie \
1244b35cf2c0Smrg			| mt \
1245b35cf2c0Smrg			| msp430 \
1246b35cf2c0Smrg			| nds32 | nds32le | nds32be \
1247b35cf2c0Smrg			| nfp \
1248b35cf2c0Smrg			| nios | nios2 | nios2eb | nios2el \
1249b35cf2c0Smrg			| none | np1 | ns16k | ns32k | nvptx \
1250b35cf2c0Smrg			| open8 \
1251b35cf2c0Smrg			| or1k* \
1252b35cf2c0Smrg			| or32 \
1253b35cf2c0Smrg			| orion \
1254b35cf2c0Smrg			| picochip \
1255b35cf2c0Smrg			| pdp10 | pdp11 | pj | pjl | pn | power \
1256b35cf2c0Smrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
1257b35cf2c0Smrg			| pru \
1258b35cf2c0Smrg			| pyramid \
1259b35cf2c0Smrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
1260b35cf2c0Smrg			| rl78 | romp | rs6000 | rx \
1261b35cf2c0Smrg			| s390 | s390x \
1262b35cf2c0Smrg			| score \
1263b35cf2c0Smrg			| sh | shl \
1264b35cf2c0Smrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
1265b35cf2c0Smrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
1266b35cf2c0Smrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
1267b35cf2c0Smrg			| sparclite \
1268b35cf2c0Smrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
1269b35cf2c0Smrg			| spu \
1270b35cf2c0Smrg			| tahoe \
1271b35cf2c0Smrg			| thumbv7* \
1272b35cf2c0Smrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
1273b35cf2c0Smrg			| tron \
1274b35cf2c0Smrg			| ubicom32 \
1275b35cf2c0Smrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
1276b35cf2c0Smrg			| vax \
1277b35cf2c0Smrg			| visium \
1278b35cf2c0Smrg			| w65 \
1279b35cf2c0Smrg			| wasm32 | wasm64 \
1280b35cf2c0Smrg			| we32k \
1281b35cf2c0Smrg			| x86 | x86_64 | xc16x | xgate | xps100 \
1282b35cf2c0Smrg			| xstormy16 | xtensa* \
1283b35cf2c0Smrg			| ymp \
1284b35cf2c0Smrg			| z8k | z80)
1285b35cf2c0Smrg				;;
1286b35cf2c0Smrg
1287b35cf2c0Smrg			*)
1288b35cf2c0Smrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
1289b35cf2c0Smrg				exit 1
1290b35cf2c0Smrg				;;
1291b35cf2c0Smrg		esac
1292b35cf2c0Smrg		;;
1293b35cf2c0Smrgesac
1294b35cf2c0Smrg
1295b35cf2c0Smrg# Here we canonicalize certain aliases for manufacturers.
1296b35cf2c0Smrgcase $vendor in
1297b35cf2c0Smrg	digital*)
1298b35cf2c0Smrg		vendor=dec
1299b35cf2c0Smrg		;;
1300b35cf2c0Smrg	commodore*)
1301b35cf2c0Smrg		vendor=cbm
1302b35cf2c0Smrg		;;
1303b35cf2c0Smrg	*)
1304b35cf2c0Smrg		;;
1305b35cf2c0Smrgesac
1306b35cf2c0Smrg
1307b35cf2c0Smrg# Decode manufacturer-specific aliases for certain operating systems.
1308b35cf2c0Smrg
1309b35cf2c0Smrgif test x$basic_os != x
1310b35cf2c0Smrgthen
1311b35cf2c0Smrg
1312b35cf2c0Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
1313b35cf2c0Smrg# set os.
1314b35cf2c0Smrgcase $basic_os in
1315b35cf2c0Smrg	gnu/linux*)
1316b35cf2c0Smrg		kernel=linux
1317b35cf2c0Smrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
1318b35cf2c0Smrg		;;
1319b35cf2c0Smrg	os2-emx)
1320b35cf2c0Smrg		kernel=os2
1321b35cf2c0Smrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
1322b35cf2c0Smrg		;;
1323b35cf2c0Smrg	nto-qnx*)
1324b35cf2c0Smrg		kernel=nto
1325b35cf2c0Smrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
1326b35cf2c0Smrg		;;
1327b35cf2c0Smrg	*-*)
1328b35cf2c0Smrg		# shellcheck disable=SC2162
1329b35cf2c0Smrg		saved_IFS=$IFS
1330b35cf2c0Smrg		IFS="-" read kernel os <<EOF
1331b35cf2c0Smrg$basic_os
1332b35cf2c0SmrgEOF
1333b35cf2c0Smrg		IFS=$saved_IFS
1334b35cf2c0Smrg		;;
1335b35cf2c0Smrg	# Default OS when just kernel was specified
1336b35cf2c0Smrg	nto*)
1337b35cf2c0Smrg		kernel=nto
1338b35cf2c0Smrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
1339b35cf2c0Smrg		;;
1340b35cf2c0Smrg	linux*)
1341b35cf2c0Smrg		kernel=linux
1342b35cf2c0Smrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
1343b35cf2c0Smrg		;;
1344b35cf2c0Smrg	managarm*)
1345b35cf2c0Smrg		kernel=managarm
1346b35cf2c0Smrg		os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
1347b35cf2c0Smrg		;;
1348b35cf2c0Smrg	*)
1349b35cf2c0Smrg		kernel=
1350b35cf2c0Smrg		os=$basic_os
1351b35cf2c0Smrg		;;
1352b35cf2c0Smrgesac
1353b35cf2c0Smrg
1354b35cf2c0Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
1355b35cf2c0Smrg# etc.)
1356b35cf2c0Smrgcase $os in
1357b35cf2c0Smrg	# First match some system type aliases that might get confused
1358b35cf2c0Smrg	# with valid system types.
1359b35cf2c0Smrg	# solaris* is a basic system type, with this one exception.
1360b35cf2c0Smrg	auroraux)
1361b35cf2c0Smrg		os=auroraux
1362b35cf2c0Smrg		;;
1363b35cf2c0Smrg	bluegene*)
1364b35cf2c0Smrg		os=cnk
1365b35cf2c0Smrg		;;
1366b35cf2c0Smrg	solaris1 | solaris1.*)
1367b35cf2c0Smrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
1368b35cf2c0Smrg		;;
1369b35cf2c0Smrg	solaris)
1370b35cf2c0Smrg		os=solaris2
1371b35cf2c0Smrg		;;
1372b35cf2c0Smrg	unixware*)
1373b35cf2c0Smrg		os=sysv4.2uw
1374b35cf2c0Smrg		;;
1375b35cf2c0Smrg	# es1800 is here to avoid being matched by es* (a different OS)
1376b35cf2c0Smrg	es1800*)
1377b35cf2c0Smrg		os=ose
1378b35cf2c0Smrg		;;
1379b35cf2c0Smrg	# Some version numbers need modification
1380b35cf2c0Smrg	chorusos*)
1381b35cf2c0Smrg		os=chorusos
1382b35cf2c0Smrg		;;
1383b35cf2c0Smrg	isc)
1384b35cf2c0Smrg		os=isc2.2
1385b35cf2c0Smrg		;;
1386b35cf2c0Smrg	sco6)
1387b35cf2c0Smrg		os=sco5v6
1388b35cf2c0Smrg		;;
1389b35cf2c0Smrg	sco5)
1390b35cf2c0Smrg		os=sco3.2v5
1391b35cf2c0Smrg		;;
1392b35cf2c0Smrg	sco4)
1393b35cf2c0Smrg		os=sco3.2v4
1394b35cf2c0Smrg		;;
1395b35cf2c0Smrg	sco3.2.[4-9]*)
1396b35cf2c0Smrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
1397b35cf2c0Smrg		;;
1398b35cf2c0Smrg	sco*v* | scout)
1399b35cf2c0Smrg		# Don't match below
1400b35cf2c0Smrg		;;
1401b35cf2c0Smrg	sco*)
1402b35cf2c0Smrg		os=sco3.2v2
1403b35cf2c0Smrg		;;
1404b35cf2c0Smrg	psos*)
1405b35cf2c0Smrg		os=psos
1406b35cf2c0Smrg		;;
1407b35cf2c0Smrg	qnx*)
1408b35cf2c0Smrg		os=qnx
1409b35cf2c0Smrg		;;
1410b35cf2c0Smrg	hiux*)
1411b35cf2c0Smrg		os=hiuxwe2
1412b35cf2c0Smrg		;;
1413b35cf2c0Smrg	lynx*178)
1414b35cf2c0Smrg		os=lynxos178
1415b35cf2c0Smrg		;;
1416b35cf2c0Smrg	lynx*5)
1417b35cf2c0Smrg		os=lynxos5
1418b35cf2c0Smrg		;;
1419b35cf2c0Smrg	lynxos*)
1420b35cf2c0Smrg		# don't get caught up in next wildcard
1421b35cf2c0Smrg		;;
1422b35cf2c0Smrg	lynx*)
1423b35cf2c0Smrg		os=lynxos
1424b35cf2c0Smrg		;;
1425b35cf2c0Smrg	mac[0-9]*)
1426b35cf2c0Smrg		os=`echo "$os" | sed -e 's|mac|macos|'`
1427b35cf2c0Smrg		;;
1428b35cf2c0Smrg	opened*)
1429b35cf2c0Smrg		os=openedition
1430b35cf2c0Smrg		;;
1431b35cf2c0Smrg	os400*)
1432b35cf2c0Smrg		os=os400
1433b35cf2c0Smrg		;;
1434b35cf2c0Smrg	sunos5*)
1435b35cf2c0Smrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
1436b35cf2c0Smrg		;;
1437b35cf2c0Smrg	sunos6*)
1438b35cf2c0Smrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
1439b35cf2c0Smrg		;;
1440b35cf2c0Smrg	wince*)
1441b35cf2c0Smrg		os=wince
1442b35cf2c0Smrg		;;
1443b35cf2c0Smrg	utek*)
1444b35cf2c0Smrg		os=bsd
1445b35cf2c0Smrg		;;
1446b35cf2c0Smrg	dynix*)
1447b35cf2c0Smrg		os=bsd
1448b35cf2c0Smrg		;;
1449b35cf2c0Smrg	acis*)
1450b35cf2c0Smrg		os=aos
1451b35cf2c0Smrg		;;
1452b35cf2c0Smrg	atheos*)
1453b35cf2c0Smrg		os=atheos
1454b35cf2c0Smrg		;;
1455b35cf2c0Smrg	syllable*)
1456b35cf2c0Smrg		os=syllable
1457b35cf2c0Smrg		;;
1458b35cf2c0Smrg	386bsd)
1459b35cf2c0Smrg		os=bsd
1460b35cf2c0Smrg		;;
1461b35cf2c0Smrg	ctix* | uts*)
1462b35cf2c0Smrg		os=sysv
1463b35cf2c0Smrg		;;
1464b35cf2c0Smrg	nova*)
1465b35cf2c0Smrg		os=rtmk-nova
1466b35cf2c0Smrg		;;
1467b35cf2c0Smrg	ns2)
1468b35cf2c0Smrg		os=nextstep2
1469b35cf2c0Smrg		;;
1470b35cf2c0Smrg	# Preserve the version number of sinix5.
1471b35cf2c0Smrg	sinix5.*)
1472b35cf2c0Smrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
1473b35cf2c0Smrg		;;
1474b35cf2c0Smrg	sinix*)
1475b35cf2c0Smrg		os=sysv4
1476b35cf2c0Smrg		;;
1477b35cf2c0Smrg	tpf*)
1478b35cf2c0Smrg		os=tpf
1479b35cf2c0Smrg		;;
1480b35cf2c0Smrg	triton*)
1481b35cf2c0Smrg		os=sysv3
1482b35cf2c0Smrg		;;
1483b35cf2c0Smrg	oss*)
1484b35cf2c0Smrg		os=sysv3
1485b35cf2c0Smrg		;;
1486b35cf2c0Smrg	svr4*)
1487b35cf2c0Smrg		os=sysv4
1488b35cf2c0Smrg		;;
1489b35cf2c0Smrg	svr3)
1490b35cf2c0Smrg		os=sysv3
1491b35cf2c0Smrg		;;
1492b35cf2c0Smrg	sysvr4)
1493b35cf2c0Smrg		os=sysv4
1494b35cf2c0Smrg		;;
1495b35cf2c0Smrg	ose*)
1496b35cf2c0Smrg		os=ose
1497b35cf2c0Smrg		;;
1498b35cf2c0Smrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
1499b35cf2c0Smrg		os=mint
1500b35cf2c0Smrg		;;
1501b35cf2c0Smrg	dicos*)
1502b35cf2c0Smrg		os=dicos
1503b35cf2c0Smrg		;;
1504b35cf2c0Smrg	pikeos*)
1505b35cf2c0Smrg		# Until real need of OS specific support for
1506b35cf2c0Smrg		# particular features comes up, bare metal
1507b35cf2c0Smrg		# configurations are quite functional.
1508b35cf2c0Smrg		case $cpu in
1509b35cf2c0Smrg		    arm*)
1510b35cf2c0Smrg			os=eabi
1511b35cf2c0Smrg			;;
1512b35cf2c0Smrg		    *)
1513b35cf2c0Smrg			os=elf
1514b35cf2c0Smrg			;;
1515b35cf2c0Smrg		esac
1516b35cf2c0Smrg		;;
1517b35cf2c0Smrg	*)
1518b35cf2c0Smrg		# No normalization, but not necessarily accepted, that comes below.
1519b35cf2c0Smrg		;;
1520b35cf2c0Smrgesac
1521b35cf2c0Smrg
1522b35cf2c0Smrgelse
1523b35cf2c0Smrg
1524b35cf2c0Smrg# Here we handle the default operating systems that come with various machines.
1525b35cf2c0Smrg# The value should be what the vendor currently ships out the door with their
1526b35cf2c0Smrg# machine or put another way, the most popular os provided with the machine.
1527b35cf2c0Smrg
1528b35cf2c0Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
1529b35cf2c0Smrg# "-sun"), then you have to tell the case statement up towards the top
1530b35cf2c0Smrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
1531b35cf2c0Smrg# will signal an error saying that MANUFACTURER isn't an operating
1532b35cf2c0Smrg# system, and we'll never get to this point.
1533b35cf2c0Smrg
1534b35cf2c0Smrgkernel=
1535b35cf2c0Smrgcase $cpu-$vendor in
1536b35cf2c0Smrg	score-*)
1537b35cf2c0Smrg		os=elf
1538b35cf2c0Smrg		;;
1539b35cf2c0Smrg	spu-*)
1540b35cf2c0Smrg		os=elf
1541b35cf2c0Smrg		;;
1542b35cf2c0Smrg	*-acorn)
1543b35cf2c0Smrg		os=riscix1.2
1544b35cf2c0Smrg		;;
1545b35cf2c0Smrg	arm*-rebel)
1546b35cf2c0Smrg		kernel=linux
1547b35cf2c0Smrg		os=gnu
1548b35cf2c0Smrg		;;
1549b35cf2c0Smrg	arm*-semi)
1550b35cf2c0Smrg		os=aout
1551b35cf2c0Smrg		;;
1552b35cf2c0Smrg	c4x-* | tic4x-*)
1553b35cf2c0Smrg		os=coff
1554b35cf2c0Smrg		;;
1555b35cf2c0Smrg	c8051-*)
1556b35cf2c0Smrg		os=elf
1557b35cf2c0Smrg		;;
1558b35cf2c0Smrg	clipper-intergraph)
1559b35cf2c0Smrg		os=clix
1560b35cf2c0Smrg		;;
1561b35cf2c0Smrg	hexagon-*)
1562b35cf2c0Smrg		os=elf
1563b35cf2c0Smrg		;;
1564b35cf2c0Smrg	tic54x-*)
1565b35cf2c0Smrg		os=coff
1566b35cf2c0Smrg		;;
1567b35cf2c0Smrg	tic55x-*)
1568b35cf2c0Smrg		os=coff
1569b35cf2c0Smrg		;;
1570b35cf2c0Smrg	tic6x-*)
1571b35cf2c0Smrg		os=coff
1572b35cf2c0Smrg		;;
1573b35cf2c0Smrg	# This must come before the *-dec entry.
1574b35cf2c0Smrg	pdp10-*)
1575b35cf2c0Smrg		os=tops20
1576b35cf2c0Smrg		;;
1577b35cf2c0Smrg	pdp11-*)
1578b35cf2c0Smrg		os=none
1579b35cf2c0Smrg		;;
1580b35cf2c0Smrg	*-dec | vax-*)
1581b35cf2c0Smrg		os=ultrix4.2
1582b35cf2c0Smrg		;;
1583b35cf2c0Smrg	m68*-apollo)
1584b35cf2c0Smrg		os=domain
1585b35cf2c0Smrg		;;
1586b35cf2c0Smrg	i386-sun)
1587b35cf2c0Smrg		os=sunos4.0.2
1588b35cf2c0Smrg		;;
1589b35cf2c0Smrg	m68000-sun)
1590b35cf2c0Smrg		os=sunos3
1591b35cf2c0Smrg		;;
1592b35cf2c0Smrg	m68*-cisco)
1593b35cf2c0Smrg		os=aout
1594b35cf2c0Smrg		;;
1595b35cf2c0Smrg	mep-*)
1596b35cf2c0Smrg		os=elf
1597b35cf2c0Smrg		;;
1598b35cf2c0Smrg	mips*-cisco)
1599b35cf2c0Smrg		os=elf
1600b35cf2c0Smrg		;;
1601b35cf2c0Smrg	mips*-*)
1602b35cf2c0Smrg		os=elf
1603b35cf2c0Smrg		;;
1604b35cf2c0Smrg	or32-*)
1605b35cf2c0Smrg		os=coff
1606b35cf2c0Smrg		;;
1607b35cf2c0Smrg	*-tti)	# must be before sparc entry or we get the wrong os.
1608b35cf2c0Smrg		os=sysv3
1609b35cf2c0Smrg		;;
1610b35cf2c0Smrg	sparc-* | *-sun)
1611b35cf2c0Smrg		os=sunos4.1.1
1612b35cf2c0Smrg		;;
1613b35cf2c0Smrg	pru-*)
1614b35cf2c0Smrg		os=elf
1615b35cf2c0Smrg		;;
1616b35cf2c0Smrg	*-be)
1617b35cf2c0Smrg		os=beos
1618b35cf2c0Smrg		;;
1619b35cf2c0Smrg	*-ibm)
1620b35cf2c0Smrg		os=aix
1621b35cf2c0Smrg		;;
1622b35cf2c0Smrg	*-knuth)
1623b35cf2c0Smrg		os=mmixware
1624b35cf2c0Smrg		;;
1625b35cf2c0Smrg	*-wec)
1626b35cf2c0Smrg		os=proelf
1627b35cf2c0Smrg		;;
1628b35cf2c0Smrg	*-winbond)
1629b35cf2c0Smrg		os=proelf
1630b35cf2c0Smrg		;;
1631b35cf2c0Smrg	*-oki)
1632b35cf2c0Smrg		os=proelf
1633b35cf2c0Smrg		;;
1634b35cf2c0Smrg	*-hp)
1635b35cf2c0Smrg		os=hpux
1636b35cf2c0Smrg		;;
1637b35cf2c0Smrg	*-hitachi)
1638b35cf2c0Smrg		os=hiux
1639b35cf2c0Smrg		;;
1640b35cf2c0Smrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
1641b35cf2c0Smrg		os=sysv
1642b35cf2c0Smrg		;;
1643b35cf2c0Smrg	*-cbm)
1644b35cf2c0Smrg		os=amigaos
1645b35cf2c0Smrg		;;
1646b35cf2c0Smrg	*-dg)
1647b35cf2c0Smrg		os=dgux
1648b35cf2c0Smrg		;;
1649b35cf2c0Smrg	*-dolphin)
1650b35cf2c0Smrg		os=sysv3
1651b35cf2c0Smrg		;;
1652b35cf2c0Smrg	m68k-ccur)
1653b35cf2c0Smrg		os=rtu
1654b35cf2c0Smrg		;;
1655b35cf2c0Smrg	m88k-omron*)
1656b35cf2c0Smrg		os=luna
1657b35cf2c0Smrg		;;
1658b35cf2c0Smrg	*-next)
1659b35cf2c0Smrg		os=nextstep
1660b35cf2c0Smrg		;;
1661b35cf2c0Smrg	*-sequent)
1662b35cf2c0Smrg		os=ptx
1663b35cf2c0Smrg		;;
1664b35cf2c0Smrg	*-crds)
1665b35cf2c0Smrg		os=unos
1666b35cf2c0Smrg		;;
1667b35cf2c0Smrg	*-ns)
1668b35cf2c0Smrg		os=genix
1669b35cf2c0Smrg		;;
1670b35cf2c0Smrg	i370-*)
1671b35cf2c0Smrg		os=mvs
1672b35cf2c0Smrg		;;
1673b35cf2c0Smrg	*-gould)
1674b35cf2c0Smrg		os=sysv
1675b35cf2c0Smrg		;;
1676b35cf2c0Smrg	*-highlevel)
1677b35cf2c0Smrg		os=bsd
1678b35cf2c0Smrg		;;
1679b35cf2c0Smrg	*-encore)
1680b35cf2c0Smrg		os=bsd
1681b35cf2c0Smrg		;;
1682b35cf2c0Smrg	*-sgi)
1683b35cf2c0Smrg		os=irix
1684b35cf2c0Smrg		;;
1685b35cf2c0Smrg	*-siemens)
1686b35cf2c0Smrg		os=sysv4
1687b35cf2c0Smrg		;;
1688b35cf2c0Smrg	*-masscomp)
1689b35cf2c0Smrg		os=rtu
1690b35cf2c0Smrg		;;
1691b35cf2c0Smrg	f30[01]-fujitsu | f700-fujitsu)
1692b35cf2c0Smrg		os=uxpv
1693b35cf2c0Smrg		;;
1694b35cf2c0Smrg	*-rom68k)
1695b35cf2c0Smrg		os=coff
1696b35cf2c0Smrg		;;
1697b35cf2c0Smrg	*-*bug)
1698b35cf2c0Smrg		os=coff
1699b35cf2c0Smrg		;;
1700b35cf2c0Smrg	*-apple)
1701b35cf2c0Smrg		os=macos
1702b35cf2c0Smrg		;;
1703b35cf2c0Smrg	*-atari*)
1704b35cf2c0Smrg		os=mint
1705b35cf2c0Smrg		;;
1706b35cf2c0Smrg	*-wrs)
1707b35cf2c0Smrg		os=vxworks
1708b35cf2c0Smrg		;;
1709b35cf2c0Smrg	*)
1710b35cf2c0Smrg		os=none
1711b35cf2c0Smrg		;;
1712b35cf2c0Smrgesac
1713b35cf2c0Smrg
1714b35cf2c0Smrgfi
1715b35cf2c0Smrg
1716b35cf2c0Smrg# Now, validate our (potentially fixed-up) OS.
1717b35cf2c0Smrgcase $os in
1718b35cf2c0Smrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
1719b35cf2c0Smrg	musl* | newlib* | relibc* | uclibc*)
1720b35cf2c0Smrg		;;
1721b35cf2c0Smrg	# Likewise for "kernel-abi"
1722b35cf2c0Smrg	eabi* | gnueabi*)
1723b35cf2c0Smrg		;;
1724b35cf2c0Smrg	# VxWorks passes extra cpu info in the 4th filed.
1725b35cf2c0Smrg	simlinux | simwindows | spe)
1726b35cf2c0Smrg		;;
1727b35cf2c0Smrg	# Now accept the basic system types.
1728b35cf2c0Smrg	# The portable systems comes first.
1729b35cf2c0Smrg	# Each alternative MUST end in a * to match a version number.
1730b35cf2c0Smrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
1731b35cf2c0Smrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
1732b35cf2c0Smrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
1733b35cf2c0Smrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
1734b35cf2c0Smrg	     | hiux* | abug | nacl* | netware* | windows* \
1735b35cf2c0Smrg	     | os9* | macos* | osx* | ios* \
1736b35cf2c0Smrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
1737b35cf2c0Smrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
1738b35cf2c0Smrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
1739b35cf2c0Smrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
1740b35cf2c0Smrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
1741b35cf2c0Smrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
1742b35cf2c0Smrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
1743b35cf2c0Smrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
1744b35cf2c0Smrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
1745b35cf2c0Smrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
1746b35cf2c0Smrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
1747b35cf2c0Smrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
1748b35cf2c0Smrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
1749b35cf2c0Smrg	     | midipix* | mingw32* | mingw64* | mint* \
1750b35cf2c0Smrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
1751b35cf2c0Smrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
1752b35cf2c0Smrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
1753b35cf2c0Smrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
1754b35cf2c0Smrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
1755b35cf2c0Smrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
1756b35cf2c0Smrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
1757b35cf2c0Smrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
1758b35cf2c0Smrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
1759b35cf2c0Smrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
1760b35cf2c0Smrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
1761b35cf2c0Smrg	     | fiwix* | mlibc* )
1762b35cf2c0Smrg		;;
1763b35cf2c0Smrg	# This one is extra strict with allowed versions
1764b35cf2c0Smrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
1765b35cf2c0Smrg		# Don't forget version if it is 3.2v4 or newer.
1766b35cf2c0Smrg		;;
1767b35cf2c0Smrg	none)
1768b35cf2c0Smrg		;;
1769b35cf2c0Smrg	kernel* )
1770b35cf2c0Smrg		# Restricted further below
1771b35cf2c0Smrg		;;
1772b35cf2c0Smrg	*)
1773b35cf2c0Smrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
1774b35cf2c0Smrg		exit 1
1775b35cf2c0Smrg		;;
1776b35cf2c0Smrgesac
1777b35cf2c0Smrg
1778b35cf2c0Smrg# As a final step for OS-related things, validate the OS-kernel combination
1779b35cf2c0Smrg# (given a valid OS), if there is a kernel.
1780b35cf2c0Smrgcase $kernel-$os in
1781b35cf2c0Smrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
1782b35cf2c0Smrg		   | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* )
1783b35cf2c0Smrg		;;
1784b35cf2c0Smrg	uclinux-uclibc* )
1785b35cf2c0Smrg		;;
1786b35cf2c0Smrg	managarm-mlibc* | managarm-kernel* )
1787b35cf2c0Smrg		;;
1788b35cf2c0Smrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* )
1789b35cf2c0Smrg		# These are just libc implementations, not actual OSes, and thus
1790b35cf2c0Smrg		# require a kernel.
1791b35cf2c0Smrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
1792b35cf2c0Smrg		exit 1
1793b35cf2c0Smrg		;;
1794b35cf2c0Smrg	-kernel* )
1795b35cf2c0Smrg		echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2
1796b35cf2c0Smrg		exit 1
1797b35cf2c0Smrg		;;
1798b35cf2c0Smrg	*-kernel* )
1799b35cf2c0Smrg		echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2
1800b35cf2c0Smrg		exit 1
1801b35cf2c0Smrg		;;
1802b35cf2c0Smrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
1803b35cf2c0Smrg		;;
1804b35cf2c0Smrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
1805b35cf2c0Smrg		;;
1806b35cf2c0Smrg	nto-qnx*)
1807b35cf2c0Smrg		;;
1808b35cf2c0Smrg	os2-emx)
1809b35cf2c0Smrg		;;
1810b35cf2c0Smrg	*-eabi* | *-gnueabi*)
1811b35cf2c0Smrg		;;
1812b35cf2c0Smrg	-*)
1813b35cf2c0Smrg		# Blank kernel with real OS is always fine.
1814b35cf2c0Smrg		;;
1815b35cf2c0Smrg	*-*)
1816b35cf2c0Smrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
1817b35cf2c0Smrg		exit 1
1818b35cf2c0Smrg		;;
1819b35cf2c0Smrgesac
1820b35cf2c0Smrg
1821b35cf2c0Smrg# Here we handle the case where we know the os, and the CPU type, but not the
1822b35cf2c0Smrg# manufacturer.  We pick the logical manufacturer.
1823b35cf2c0Smrgcase $vendor in
1824b35cf2c0Smrg	unknown)
1825b35cf2c0Smrg		case $cpu-$os in
1826b35cf2c0Smrg			*-riscix*)
1827b35cf2c0Smrg				vendor=acorn
1828b35cf2c0Smrg				;;
1829b35cf2c0Smrg			*-sunos*)
1830b35cf2c0Smrg				vendor=sun
1831b35cf2c0Smrg				;;
1832b35cf2c0Smrg			*-cnk* | *-aix*)
1833b35cf2c0Smrg				vendor=ibm
1834b35cf2c0Smrg				;;
1835b35cf2c0Smrg			*-beos*)
1836b35cf2c0Smrg				vendor=be
1837b35cf2c0Smrg				;;
1838b35cf2c0Smrg			*-hpux*)
1839b35cf2c0Smrg				vendor=hp
1840b35cf2c0Smrg				;;
1841b35cf2c0Smrg			*-mpeix*)
1842b35cf2c0Smrg				vendor=hp
1843b35cf2c0Smrg				;;
1844b35cf2c0Smrg			*-hiux*)
1845b35cf2c0Smrg				vendor=hitachi
1846b35cf2c0Smrg				;;
1847b35cf2c0Smrg			*-unos*)
1848b35cf2c0Smrg				vendor=crds
1849b35cf2c0Smrg				;;
1850b35cf2c0Smrg			*-dgux*)
1851b35cf2c0Smrg				vendor=dg
1852b35cf2c0Smrg				;;
1853b35cf2c0Smrg			*-luna*)
1854b35cf2c0Smrg				vendor=omron
1855b35cf2c0Smrg				;;
1856b35cf2c0Smrg			*-genix*)
1857b35cf2c0Smrg				vendor=ns
1858b35cf2c0Smrg				;;
1859b35cf2c0Smrg			*-clix*)
1860b35cf2c0Smrg				vendor=intergraph
1861b35cf2c0Smrg				;;
1862b35cf2c0Smrg			*-mvs* | *-opened*)
1863b35cf2c0Smrg				vendor=ibm
1864b35cf2c0Smrg				;;
1865b35cf2c0Smrg			*-os400*)
1866b35cf2c0Smrg				vendor=ibm
1867b35cf2c0Smrg				;;
1868b35cf2c0Smrg			s390-* | s390x-*)
1869b35cf2c0Smrg				vendor=ibm
1870b35cf2c0Smrg				;;
1871b35cf2c0Smrg			*-ptx*)
1872b35cf2c0Smrg				vendor=sequent
1873b35cf2c0Smrg				;;
1874b35cf2c0Smrg			*-tpf*)
1875b35cf2c0Smrg				vendor=ibm
1876b35cf2c0Smrg				;;
1877b35cf2c0Smrg			*-vxsim* | *-vxworks* | *-windiss*)
1878b35cf2c0Smrg				vendor=wrs
1879b35cf2c0Smrg				;;
1880b35cf2c0Smrg			*-aux*)
1881b35cf2c0Smrg				vendor=apple
1882b35cf2c0Smrg				;;
1883b35cf2c0Smrg			*-hms*)
1884b35cf2c0Smrg				vendor=hitachi
1885b35cf2c0Smrg				;;
1886b35cf2c0Smrg			*-mpw* | *-macos*)
1887b35cf2c0Smrg				vendor=apple
1888b35cf2c0Smrg				;;
1889b35cf2c0Smrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
1890b35cf2c0Smrg				vendor=atari
1891b35cf2c0Smrg				;;
1892b35cf2c0Smrg			*-vos*)
1893b35cf2c0Smrg				vendor=stratus
1894b35cf2c0Smrg				;;
1895b35cf2c0Smrg		esac
1896b35cf2c0Smrg		;;
1897b35cf2c0Smrgesac
1898b35cf2c0Smrg
1899b35cf2c0Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
1900b35cf2c0Smrgexit
1901b35cf2c0Smrg
1902b35cf2c0Smrg# Local variables:
1903b35cf2c0Smrg# eval: (add-hook 'before-save-hook 'time-stamp)
1904b35cf2c0Smrg# time-stamp-start: "timestamp='"
1905b35cf2c0Smrg# time-stamp-format: "%:y-%02m-%02d"
1906b35cf2c0Smrg# time-stamp-end: "'"
1907b35cf2c0Smrg# End:
1908