145bc899bSmrg#! /bin/sh
245bc899bSmrg# Configuration validation subroutine script.
3e8b4ed9fSmrg#   Copyright 1992-2021 Free Software Foundation, Inc.
445bc899bSmrg
5e8b4ed9fSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
6e8b4ed9fSmrg
7e8b4ed9fSmrgtimestamp='2021-08-14'
845bc899bSmrg
9c97b1c41Smrg# This file is free software; you can redistribute it and/or modify it
10c97b1c41Smrg# under the terms of the GNU General Public License as published by
11c97b1c41Smrg# the Free Software Foundation; either version 3 of the License, or
1245bc899bSmrg# (at your option) any later version.
1345bc899bSmrg#
14c97b1c41Smrg# This program is distributed in the hope that it will be useful, but
15c97b1c41Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
16c97b1c41Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17c97b1c41Smrg# General Public License for more details.
1845bc899bSmrg#
1945bc899bSmrg# You should have received a copy of the GNU General Public License
20a0c41156Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
2150f2e948Smrg#
2245bc899bSmrg# As a special exception to the GNU General Public License, if you
2345bc899bSmrg# distribute this file as part of a program that contains a
2445bc899bSmrg# configuration script generated by Autoconf, you may include it under
25c97b1c41Smrg# the same distribution terms that you use for the rest of that
26c97b1c41Smrg# program.  This Exception is an additional permission under section 7
27c97b1c41Smrg# of the GNU General Public License, version 3 ("GPLv3").
2845bc899bSmrg
2950f2e948Smrg
3057ba8e8bSmrg# Please send patches to <config-patches@gnu.org>.
3145bc899bSmrg#
3245bc899bSmrg# Configuration subroutine to validate and canonicalize a configuration type.
3345bc899bSmrg# Supply the specified configuration type as an argument.
3445bc899bSmrg# If it is invalid, we print an error message on stderr and exit with code 1.
3545bc899bSmrg# Otherwise, we print the canonical config type on stdout and succeed.
3645bc899bSmrg
37b40a6198Smrg# You can get the latest version of this script from:
38e8b4ed9fSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
39b40a6198Smrg
4045bc899bSmrg# This file is supposed to be the same for all GNU packages
4145bc899bSmrg# and recognize all the CPU types, system types and aliases
4245bc899bSmrg# that are meaningful with *any* GNU software.
4345bc899bSmrg# Each package is responsible for reporting which valid configurations
4445bc899bSmrg# it does not support.  The user should be able to distinguish
4545bc899bSmrg# a failure to support a valid configuration from a meaningless
4645bc899bSmrg# configuration.
4745bc899bSmrg
4845bc899bSmrg# The goal of this file is to map all the various variations of a given
4945bc899bSmrg# machine specification into a single specification in the form:
5045bc899bSmrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
5145bc899bSmrg# or in some cases, the newer four-part form:
5245bc899bSmrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
5345bc899bSmrg# It is wrong to echo any other type of specification.
5445bc899bSmrg
55e8b4ed9fSmrg# The "shellcheck disable" line above the timestamp inhibits complaints
56e8b4ed9fSmrg# about features and limitations of the classic Bourne shell that were
57e8b4ed9fSmrg# superseded or lifted in POSIX.  However, this script identifies a wide
58e8b4ed9fSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
59e8b4ed9fSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still
60e8b4ed9fSmrg# have a pre-POSIX /bin/sh.
61e8b4ed9fSmrg
6245bc899bSmrgme=`echo "$0" | sed -e 's,.*/,,'`
6345bc899bSmrg
6445bc899bSmrgusage="\
65f2408745SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
6645bc899bSmrg
6745bc899bSmrgCanonicalize a configuration name.
6845bc899bSmrg
69a0c41156SmrgOptions:
7045bc899bSmrg  -h, --help         print this help, then exit
7145bc899bSmrg  -t, --time-stamp   print date of last modification, then exit
7245bc899bSmrg  -v, --version      print version number, then exit
7345bc899bSmrg
7445bc899bSmrgReport bugs and patches to <config-patches@gnu.org>."
7545bc899bSmrg
7645bc899bSmrgversion="\
7745bc899bSmrgGNU config.sub ($timestamp)
7845bc899bSmrg
79e8b4ed9fSmrgCopyright 1992-2021 Free Software Foundation, Inc.
8045bc899bSmrg
8145bc899bSmrgThis is free software; see the source for copying conditions.  There is NO
8245bc899bSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
8345bc899bSmrg
8445bc899bSmrghelp="
8545bc899bSmrgTry \`$me --help' for more information."
8645bc899bSmrg
8745bc899bSmrg# Parse command line
8845bc899bSmrgwhile test $# -gt 0 ; do
8945bc899bSmrg  case $1 in
9045bc899bSmrg    --time-stamp | --time* | -t )
9150f2e948Smrg       echo "$timestamp" ; exit ;;
9245bc899bSmrg    --version | -v )
9350f2e948Smrg       echo "$version" ; exit ;;
9445bc899bSmrg    --help | --h* | -h )
9550f2e948Smrg       echo "$usage"; exit ;;
9645bc899bSmrg    -- )     # Stop option processing
9745bc899bSmrg       shift; break ;;
9845bc899bSmrg    - )	# Use stdin as input.
9945bc899bSmrg       break ;;
10045bc899bSmrg    -* )
101e8b4ed9fSmrg       echo "$me: invalid option $1$help" >&2
10245bc899bSmrg       exit 1 ;;
10345bc899bSmrg
10445bc899bSmrg    *local*)
10545bc899bSmrg       # First pass through any local machine types.
106a0c41156Smrg       echo "$1"
10750f2e948Smrg       exit ;;
10845bc899bSmrg
10945bc899bSmrg    * )
11045bc899bSmrg       break ;;
11145bc899bSmrg  esac
11245bc899bSmrgdone
11345bc899bSmrg
11445bc899bSmrgcase $# in
11545bc899bSmrg 0) echo "$me: missing argument$help" >&2
11645bc899bSmrg    exit 1;;
11745bc899bSmrg 1) ;;
11845bc899bSmrg *) echo "$me: too many arguments$help" >&2
11945bc899bSmrg    exit 1;;
12045bc899bSmrgesac
12145bc899bSmrg
122a0c41156Smrg# Split fields of configuration type
123e8b4ed9fSmrg# shellcheck disable=SC2162
124e8b4ed9fSmrgsaved_IFS=$IFS
125e8b4ed9fSmrgIFS="-" read field1 field2 field3 field4 <<EOF
126a0c41156Smrg$1
127a0c41156SmrgEOF
128e8b4ed9fSmrgIFS=$saved_IFS
12945bc899bSmrg
130a0c41156Smrg# Separate into logical components for further validation
131a0c41156Smrgcase $1 in
132a0c41156Smrg	*-*-*-*-*)
133a0c41156Smrg		echo Invalid configuration \`"$1"\': more than four components >&2
134a0c41156Smrg		exit 1
13545bc899bSmrg		;;
136a0c41156Smrg	*-*-*-*)
137a0c41156Smrg		basic_machine=$field1-$field2
138e8b4ed9fSmrg		basic_os=$field3-$field4
13945bc899bSmrg		;;
140a0c41156Smrg	*-*-*)
141a0c41156Smrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
142a0c41156Smrg		# parts
143a0c41156Smrg		maybe_os=$field2-$field3
144a0c41156Smrg		case $maybe_os in
145e8b4ed9fSmrg			nto-qnx* | linux-* | uclinux-uclibc* \
146a0c41156Smrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
147a0c41156Smrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
148a0c41156Smrg			| storm-chaos* | os2-emx* | rtmk-nova*)
149a0c41156Smrg				basic_machine=$field1
150e8b4ed9fSmrg				basic_os=$maybe_os
151a0c41156Smrg				;;
152a0c41156Smrg			android-linux)
153a0c41156Smrg				basic_machine=$field1-unknown
154e8b4ed9fSmrg				basic_os=linux-android
155a0c41156Smrg				;;
156a0c41156Smrg			*)
157a0c41156Smrg				basic_machine=$field1-$field2
158e8b4ed9fSmrg				basic_os=$field3
159a0c41156Smrg				;;
160a0c41156Smrg		esac
16145bc899bSmrg		;;
162a0c41156Smrg	*-*)
163e8b4ed9fSmrg		# A lone config we happen to match not fitting any pattern
164a0c41156Smrg		case $field1-$field2 in
165a0c41156Smrg			decstation-3100)
166a0c41156Smrg				basic_machine=mips-dec
167e8b4ed9fSmrg				basic_os=
168a0c41156Smrg				;;
169a0c41156Smrg			*-*)
170a0c41156Smrg				# Second component is usually, but not always the OS
171a0c41156Smrg				case $field2 in
172a0c41156Smrg					# Prevent following clause from handling this valid os
173a0c41156Smrg					sun*os*)
174a0c41156Smrg						basic_machine=$field1
175e8b4ed9fSmrg						basic_os=$field2
176e8b4ed9fSmrg						;;
177e8b4ed9fSmrg					zephyr*)
178e8b4ed9fSmrg						basic_machine=$field1-unknown
179e8b4ed9fSmrg						basic_os=$field2
180a0c41156Smrg						;;
181a0c41156Smrg					# Manufacturers
182a0c41156Smrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
183a0c41156Smrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
184a0c41156Smrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
185a0c41156Smrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
186a0c41156Smrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
187a0c41156Smrg					| ultra | tti* | harris | dolphin | highlevel | gould \
188a0c41156Smrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
189a0c41156Smrg					| microblaze* | sim | cisco \
190a0c41156Smrg					| oki | wec | wrs | winbond)
191a0c41156Smrg						basic_machine=$field1-$field2
192e8b4ed9fSmrg						basic_os=
193a0c41156Smrg						;;
194a0c41156Smrg					*)
195a0c41156Smrg						basic_machine=$field1
196e8b4ed9fSmrg						basic_os=$field2
197a0c41156Smrg						;;
198a0c41156Smrg				esac
199a0c41156Smrg			;;
200a0c41156Smrg		esac
20145bc899bSmrg		;;
202a0c41156Smrg	*)
203a0c41156Smrg		# Convert single-component short-hands not valid as part of
204a0c41156Smrg		# multi-component configurations.
205a0c41156Smrg		case $field1 in
206a0c41156Smrg			386bsd)
207a0c41156Smrg				basic_machine=i386-pc
208e8b4ed9fSmrg				basic_os=bsd
209a0c41156Smrg				;;
210a0c41156Smrg			a29khif)
211a0c41156Smrg				basic_machine=a29k-amd
212e8b4ed9fSmrg				basic_os=udi
213a0c41156Smrg				;;
214a0c41156Smrg			adobe68k)
215a0c41156Smrg				basic_machine=m68010-adobe
216e8b4ed9fSmrg				basic_os=scout
217a0c41156Smrg				;;
218a0c41156Smrg			alliant)
219a0c41156Smrg				basic_machine=fx80-alliant
220e8b4ed9fSmrg				basic_os=
221a0c41156Smrg				;;
222a0c41156Smrg			altos | altos3068)
223a0c41156Smrg				basic_machine=m68k-altos
224e8b4ed9fSmrg				basic_os=
225a0c41156Smrg				;;
226a0c41156Smrg			am29k)
227a0c41156Smrg				basic_machine=a29k-none
228e8b4ed9fSmrg				basic_os=bsd
229a0c41156Smrg				;;
230a0c41156Smrg			amdahl)
231a0c41156Smrg				basic_machine=580-amdahl
232e8b4ed9fSmrg				basic_os=sysv
233a0c41156Smrg				;;
234a0c41156Smrg			amiga)
235a0c41156Smrg				basic_machine=m68k-unknown
236e8b4ed9fSmrg				basic_os=
237a0c41156Smrg				;;
238a0c41156Smrg			amigaos | amigados)
239a0c41156Smrg				basic_machine=m68k-unknown
240e8b4ed9fSmrg				basic_os=amigaos
241a0c41156Smrg				;;
242a0c41156Smrg			amigaunix | amix)
243a0c41156Smrg				basic_machine=m68k-unknown
244e8b4ed9fSmrg				basic_os=sysv4
245a0c41156Smrg				;;
246a0c41156Smrg			apollo68)
247a0c41156Smrg				basic_machine=m68k-apollo
248e8b4ed9fSmrg				basic_os=sysv
249a0c41156Smrg				;;
250a0c41156Smrg			apollo68bsd)
251a0c41156Smrg				basic_machine=m68k-apollo
252e8b4ed9fSmrg				basic_os=bsd
253a0c41156Smrg				;;
254a0c41156Smrg			aros)
255a0c41156Smrg				basic_machine=i386-pc
256e8b4ed9fSmrg				basic_os=aros
257a0c41156Smrg				;;
258a0c41156Smrg			aux)
259a0c41156Smrg				basic_machine=m68k-apple
260e8b4ed9fSmrg				basic_os=aux
261a0c41156Smrg				;;
262a0c41156Smrg			balance)
263a0c41156Smrg				basic_machine=ns32k-sequent
264e8b4ed9fSmrg				basic_os=dynix
265a0c41156Smrg				;;
266a0c41156Smrg			blackfin)
267a0c41156Smrg				basic_machine=bfin-unknown
268e8b4ed9fSmrg				basic_os=linux
269a0c41156Smrg				;;
270a0c41156Smrg			cegcc)
271a0c41156Smrg				basic_machine=arm-unknown
272e8b4ed9fSmrg				basic_os=cegcc
273a0c41156Smrg				;;
274a0c41156Smrg			convex-c1)
275a0c41156Smrg				basic_machine=c1-convex
276e8b4ed9fSmrg				basic_os=bsd
277a0c41156Smrg				;;
278a0c41156Smrg			convex-c2)
279a0c41156Smrg				basic_machine=c2-convex
280e8b4ed9fSmrg				basic_os=bsd
281a0c41156Smrg				;;
282a0c41156Smrg			convex-c32)
283a0c41156Smrg				basic_machine=c32-convex
284e8b4ed9fSmrg				basic_os=bsd
285a0c41156Smrg				;;
286a0c41156Smrg			convex-c34)
287a0c41156Smrg				basic_machine=c34-convex
288e8b4ed9fSmrg				basic_os=bsd
289a0c41156Smrg				;;
290a0c41156Smrg			convex-c38)
291a0c41156Smrg				basic_machine=c38-convex
292e8b4ed9fSmrg				basic_os=bsd
293a0c41156Smrg				;;
294a0c41156Smrg			cray)
295a0c41156Smrg				basic_machine=j90-cray
296e8b4ed9fSmrg				basic_os=unicos
297a0c41156Smrg				;;
298a0c41156Smrg			crds | unos)
299a0c41156Smrg				basic_machine=m68k-crds
300e8b4ed9fSmrg				basic_os=
301a0c41156Smrg				;;
302a0c41156Smrg			da30)
303a0c41156Smrg				basic_machine=m68k-da30
304e8b4ed9fSmrg				basic_os=
305a0c41156Smrg				;;
306a0c41156Smrg			decstation | pmax | pmin | dec3100 | decstatn)
307a0c41156Smrg				basic_machine=mips-dec
308e8b4ed9fSmrg				basic_os=
309a0c41156Smrg				;;
310a0c41156Smrg			delta88)
311a0c41156Smrg				basic_machine=m88k-motorola
312e8b4ed9fSmrg				basic_os=sysv3
313a0c41156Smrg				;;
314a0c41156Smrg			dicos)
315a0c41156Smrg				basic_machine=i686-pc
316e8b4ed9fSmrg				basic_os=dicos
317a0c41156Smrg				;;
318a0c41156Smrg			djgpp)
319a0c41156Smrg				basic_machine=i586-pc
320e8b4ed9fSmrg				basic_os=msdosdjgpp
321a0c41156Smrg				;;
322a0c41156Smrg			ebmon29k)
323a0c41156Smrg				basic_machine=a29k-amd
324e8b4ed9fSmrg				basic_os=ebmon
325a0c41156Smrg				;;
326a0c41156Smrg			es1800 | OSE68k | ose68k | ose | OSE)
327a0c41156Smrg				basic_machine=m68k-ericsson
328e8b4ed9fSmrg				basic_os=ose
329a0c41156Smrg				;;
330a0c41156Smrg			gmicro)
331a0c41156Smrg				basic_machine=tron-gmicro
332e8b4ed9fSmrg				basic_os=sysv
333a0c41156Smrg				;;
334a0c41156Smrg			go32)
335a0c41156Smrg				basic_machine=i386-pc
336e8b4ed9fSmrg				basic_os=go32
337a0c41156Smrg				;;
338a0c41156Smrg			h8300hms)
339a0c41156Smrg				basic_machine=h8300-hitachi
340e8b4ed9fSmrg				basic_os=hms
341a0c41156Smrg				;;
342a0c41156Smrg			h8300xray)
343a0c41156Smrg				basic_machine=h8300-hitachi
344e8b4ed9fSmrg				basic_os=xray
345a0c41156Smrg				;;
346a0c41156Smrg			h8500hms)
347a0c41156Smrg				basic_machine=h8500-hitachi
348e8b4ed9fSmrg				basic_os=hms
349a0c41156Smrg				;;
350a0c41156Smrg			harris)
351a0c41156Smrg				basic_machine=m88k-harris
352e8b4ed9fSmrg				basic_os=sysv3
353a0c41156Smrg				;;
354e8b4ed9fSmrg			hp300 | hp300hpux)
355a0c41156Smrg				basic_machine=m68k-hp
356e8b4ed9fSmrg				basic_os=hpux
357a0c41156Smrg				;;
358a0c41156Smrg			hp300bsd)
359a0c41156Smrg				basic_machine=m68k-hp
360e8b4ed9fSmrg				basic_os=bsd
361a0c41156Smrg				;;
362a0c41156Smrg			hppaosf)
363a0c41156Smrg				basic_machine=hppa1.1-hp
364e8b4ed9fSmrg				basic_os=osf
365a0c41156Smrg				;;
366a0c41156Smrg			hppro)
367a0c41156Smrg				basic_machine=hppa1.1-hp
368e8b4ed9fSmrg				basic_os=proelf
369a0c41156Smrg				;;
370a0c41156Smrg			i386mach)
371a0c41156Smrg				basic_machine=i386-mach
372e8b4ed9fSmrg				basic_os=mach
373a0c41156Smrg				;;
374a0c41156Smrg			isi68 | isi)
375a0c41156Smrg				basic_machine=m68k-isi
376e8b4ed9fSmrg				basic_os=sysv
377a0c41156Smrg				;;
378a0c41156Smrg			m68knommu)
379a0c41156Smrg				basic_machine=m68k-unknown
380e8b4ed9fSmrg				basic_os=linux
381a0c41156Smrg				;;
382a0c41156Smrg			magnum | m3230)
383a0c41156Smrg				basic_machine=mips-mips
384e8b4ed9fSmrg				basic_os=sysv
385a0c41156Smrg				;;
386a0c41156Smrg			merlin)
387a0c41156Smrg				basic_machine=ns32k-utek
388e8b4ed9fSmrg				basic_os=sysv
389a0c41156Smrg				;;
390a0c41156Smrg			mingw64)
391a0c41156Smrg				basic_machine=x86_64-pc
392e8b4ed9fSmrg				basic_os=mingw64
393a0c41156Smrg				;;
394a0c41156Smrg			mingw32)
395a0c41156Smrg				basic_machine=i686-pc
396e8b4ed9fSmrg				basic_os=mingw32
397a0c41156Smrg				;;
398a0c41156Smrg			mingw32ce)
399a0c41156Smrg				basic_machine=arm-unknown
400e8b4ed9fSmrg				basic_os=mingw32ce
401a0c41156Smrg				;;
402a0c41156Smrg			monitor)
403a0c41156Smrg				basic_machine=m68k-rom68k
404e8b4ed9fSmrg				basic_os=coff
405a0c41156Smrg				;;
406a0c41156Smrg			morphos)
407a0c41156Smrg				basic_machine=powerpc-unknown
408e8b4ed9fSmrg				basic_os=morphos
409a0c41156Smrg				;;
410a0c41156Smrg			moxiebox)
411a0c41156Smrg				basic_machine=moxie-unknown
412e8b4ed9fSmrg				basic_os=moxiebox
413a0c41156Smrg				;;
414a0c41156Smrg			msdos)
415a0c41156Smrg				basic_machine=i386-pc
416e8b4ed9fSmrg				basic_os=msdos
417a0c41156Smrg				;;
418a0c41156Smrg			msys)
419a0c41156Smrg				basic_machine=i686-pc
420e8b4ed9fSmrg				basic_os=msys
421a0c41156Smrg				;;
422a0c41156Smrg			mvs)
423a0c41156Smrg				basic_machine=i370-ibm
424e8b4ed9fSmrg				basic_os=mvs
425a0c41156Smrg				;;
426a0c41156Smrg			nacl)
427a0c41156Smrg				basic_machine=le32-unknown
428e8b4ed9fSmrg				basic_os=nacl
429a0c41156Smrg				;;
430a0c41156Smrg			ncr3000)
431a0c41156Smrg				basic_machine=i486-ncr
432e8b4ed9fSmrg				basic_os=sysv4
433a0c41156Smrg				;;
434a0c41156Smrg			netbsd386)
435a0c41156Smrg				basic_machine=i386-pc
436e8b4ed9fSmrg				basic_os=netbsd
437a0c41156Smrg				;;
438a0c41156Smrg			netwinder)
439a0c41156Smrg				basic_machine=armv4l-rebel
440e8b4ed9fSmrg				basic_os=linux
441a0c41156Smrg				;;
442a0c41156Smrg			news | news700 | news800 | news900)
443a0c41156Smrg				basic_machine=m68k-sony
444e8b4ed9fSmrg				basic_os=newsos
445a0c41156Smrg				;;
446a0c41156Smrg			news1000)
447a0c41156Smrg				basic_machine=m68030-sony
448e8b4ed9fSmrg				basic_os=newsos
449a0c41156Smrg				;;
450a0c41156Smrg			necv70)
451a0c41156Smrg				basic_machine=v70-nec
452e8b4ed9fSmrg				basic_os=sysv
453a0c41156Smrg				;;
454a0c41156Smrg			nh3000)
455a0c41156Smrg				basic_machine=m68k-harris
456e8b4ed9fSmrg				basic_os=cxux
457a0c41156Smrg				;;
458a0c41156Smrg			nh[45]000)
459a0c41156Smrg				basic_machine=m88k-harris
460e8b4ed9fSmrg				basic_os=cxux
461a0c41156Smrg				;;
462a0c41156Smrg			nindy960)
463a0c41156Smrg				basic_machine=i960-intel
464e8b4ed9fSmrg				basic_os=nindy
465a0c41156Smrg				;;
466a0c41156Smrg			mon960)
467a0c41156Smrg				basic_machine=i960-intel
468e8b4ed9fSmrg				basic_os=mon960
469a0c41156Smrg				;;
470a0c41156Smrg			nonstopux)
471a0c41156Smrg				basic_machine=mips-compaq
472e8b4ed9fSmrg				basic_os=nonstopux
473a0c41156Smrg				;;
474a0c41156Smrg			os400)
475a0c41156Smrg				basic_machine=powerpc-ibm
476e8b4ed9fSmrg				basic_os=os400
477a0c41156Smrg				;;
478a0c41156Smrg			OSE68000 | ose68000)
479a0c41156Smrg				basic_machine=m68000-ericsson
480e8b4ed9fSmrg				basic_os=ose
481a0c41156Smrg				;;
482a0c41156Smrg			os68k)
483a0c41156Smrg				basic_machine=m68k-none
484e8b4ed9fSmrg				basic_os=os68k
485a0c41156Smrg				;;
486a0c41156Smrg			paragon)
487a0c41156Smrg				basic_machine=i860-intel
488e8b4ed9fSmrg				basic_os=osf
489a0c41156Smrg				;;
490a0c41156Smrg			parisc)
491a0c41156Smrg				basic_machine=hppa-unknown
492e8b4ed9fSmrg				basic_os=linux
493e8b4ed9fSmrg				;;
494e8b4ed9fSmrg			psp)
495e8b4ed9fSmrg				basic_machine=mipsallegrexel-sony
496e8b4ed9fSmrg				basic_os=psp
497a0c41156Smrg				;;
498a0c41156Smrg			pw32)
499a0c41156Smrg				basic_machine=i586-unknown
500e8b4ed9fSmrg				basic_os=pw32
501a0c41156Smrg				;;
502a0c41156Smrg			rdos | rdos64)
503a0c41156Smrg				basic_machine=x86_64-pc
504e8b4ed9fSmrg				basic_os=rdos
505a0c41156Smrg				;;
506a0c41156Smrg			rdos32)
507a0c41156Smrg				basic_machine=i386-pc
508e8b4ed9fSmrg				basic_os=rdos
509a0c41156Smrg				;;
510a0c41156Smrg			rom68k)
511a0c41156Smrg				basic_machine=m68k-rom68k
512e8b4ed9fSmrg				basic_os=coff
513a0c41156Smrg				;;
514a0c41156Smrg			sa29200)
515a0c41156Smrg				basic_machine=a29k-amd
516e8b4ed9fSmrg				basic_os=udi
517a0c41156Smrg				;;
518a0c41156Smrg			sei)
519a0c41156Smrg				basic_machine=mips-sei
520e8b4ed9fSmrg				basic_os=seiux
521a0c41156Smrg				;;
522a0c41156Smrg			sequent)
523a0c41156Smrg				basic_machine=i386-sequent
524e8b4ed9fSmrg				basic_os=
525a0c41156Smrg				;;
526a0c41156Smrg			sps7)
527a0c41156Smrg				basic_machine=m68k-bull
528e8b4ed9fSmrg				basic_os=sysv2
529a0c41156Smrg				;;
530a0c41156Smrg			st2000)
531a0c41156Smrg				basic_machine=m68k-tandem
532e8b4ed9fSmrg				basic_os=
533a0c41156Smrg				;;
534a0c41156Smrg			stratus)
535a0c41156Smrg				basic_machine=i860-stratus
536e8b4ed9fSmrg				basic_os=sysv4
537a0c41156Smrg				;;
538a0c41156Smrg			sun2)
539a0c41156Smrg				basic_machine=m68000-sun
540e8b4ed9fSmrg				basic_os=
541a0c41156Smrg				;;
542a0c41156Smrg			sun2os3)
543a0c41156Smrg				basic_machine=m68000-sun
544e8b4ed9fSmrg				basic_os=sunos3
545a0c41156Smrg				;;
546a0c41156Smrg			sun2os4)
547a0c41156Smrg				basic_machine=m68000-sun
548e8b4ed9fSmrg				basic_os=sunos4
549a0c41156Smrg				;;
550a0c41156Smrg			sun3)
551a0c41156Smrg				basic_machine=m68k-sun
552e8b4ed9fSmrg				basic_os=
553a0c41156Smrg				;;
554a0c41156Smrg			sun3os3)
555a0c41156Smrg				basic_machine=m68k-sun
556e8b4ed9fSmrg				basic_os=sunos3
557a0c41156Smrg				;;
558a0c41156Smrg			sun3os4)
559a0c41156Smrg				basic_machine=m68k-sun
560e8b4ed9fSmrg				basic_os=sunos4
561a0c41156Smrg				;;
562a0c41156Smrg			sun4)
563a0c41156Smrg				basic_machine=sparc-sun
564e8b4ed9fSmrg				basic_os=
565a0c41156Smrg				;;
566a0c41156Smrg			sun4os3)
567a0c41156Smrg				basic_machine=sparc-sun
568e8b4ed9fSmrg				basic_os=sunos3
569a0c41156Smrg				;;
570a0c41156Smrg			sun4os4)
571a0c41156Smrg				basic_machine=sparc-sun
572e8b4ed9fSmrg				basic_os=sunos4
573a0c41156Smrg				;;
574a0c41156Smrg			sun4sol2)
575a0c41156Smrg				basic_machine=sparc-sun
576e8b4ed9fSmrg				basic_os=solaris2
577a0c41156Smrg				;;
578a0c41156Smrg			sun386 | sun386i | roadrunner)
579a0c41156Smrg				basic_machine=i386-sun
580e8b4ed9fSmrg				basic_os=
581a0c41156Smrg				;;
582a0c41156Smrg			sv1)
583a0c41156Smrg				basic_machine=sv1-cray
584e8b4ed9fSmrg				basic_os=unicos
585a0c41156Smrg				;;
586a0c41156Smrg			symmetry)
587a0c41156Smrg				basic_machine=i386-sequent
588e8b4ed9fSmrg				basic_os=dynix
589a0c41156Smrg				;;
590a0c41156Smrg			t3e)
591a0c41156Smrg				basic_machine=alphaev5-cray
592e8b4ed9fSmrg				basic_os=unicos
593a0c41156Smrg				;;
594a0c41156Smrg			t90)
595a0c41156Smrg				basic_machine=t90-cray
596e8b4ed9fSmrg				basic_os=unicos
597a0c41156Smrg				;;
598a0c41156Smrg			toad1)
599a0c41156Smrg				basic_machine=pdp10-xkl
600e8b4ed9fSmrg				basic_os=tops20
601a0c41156Smrg				;;
602a0c41156Smrg			tpf)
603a0c41156Smrg				basic_machine=s390x-ibm
604e8b4ed9fSmrg				basic_os=tpf
605a0c41156Smrg				;;
606a0c41156Smrg			udi29k)
607a0c41156Smrg				basic_machine=a29k-amd
608e8b4ed9fSmrg				basic_os=udi
609a0c41156Smrg				;;
610a0c41156Smrg			ultra3)
611a0c41156Smrg				basic_machine=a29k-nyu
612e8b4ed9fSmrg				basic_os=sym1
613a0c41156Smrg				;;
614a0c41156Smrg			v810 | necv810)
615a0c41156Smrg				basic_machine=v810-nec
616e8b4ed9fSmrg				basic_os=none
617a0c41156Smrg				;;
618a0c41156Smrg			vaxv)
619a0c41156Smrg				basic_machine=vax-dec
620e8b4ed9fSmrg				basic_os=sysv
621a0c41156Smrg				;;
622a0c41156Smrg			vms)
623a0c41156Smrg				basic_machine=vax-dec
624e8b4ed9fSmrg				basic_os=vms
625e8b4ed9fSmrg				;;
626e8b4ed9fSmrg			vsta)
627e8b4ed9fSmrg				basic_machine=i386-pc
628e8b4ed9fSmrg				basic_os=vsta
629a0c41156Smrg				;;
630a0c41156Smrg			vxworks960)
631a0c41156Smrg				basic_machine=i960-wrs
632e8b4ed9fSmrg				basic_os=vxworks
633a0c41156Smrg				;;
634a0c41156Smrg			vxworks68)
635a0c41156Smrg				basic_machine=m68k-wrs
636e8b4ed9fSmrg				basic_os=vxworks
637a0c41156Smrg				;;
638a0c41156Smrg			vxworks29k)
639a0c41156Smrg				basic_machine=a29k-wrs
640e8b4ed9fSmrg				basic_os=vxworks
641a0c41156Smrg				;;
642a0c41156Smrg			xbox)
643a0c41156Smrg				basic_machine=i686-pc
644e8b4ed9fSmrg				basic_os=mingw32
645a0c41156Smrg				;;
646a0c41156Smrg			ymp)
647a0c41156Smrg				basic_machine=ymp-cray
648e8b4ed9fSmrg				basic_os=unicos
649a0c41156Smrg				;;
650a0c41156Smrg			*)
651a0c41156Smrg				basic_machine=$1
652e8b4ed9fSmrg				basic_os=
653a0c41156Smrg				;;
654a0c41156Smrg		esac
65545bc899bSmrg		;;
65645bc899bSmrgesac
65745bc899bSmrg
658a0c41156Smrg# Decode 1-component or ad-hoc basic machines
65945bc899bSmrgcase $basic_machine in
660a0c41156Smrg	# Here we handle the default manufacturer of certain CPU types.  It is in
661a0c41156Smrg	# some cases the only manufacturer, in others, it is the most popular.
662a0c41156Smrg	w89k)
663a0c41156Smrg		cpu=hppa1.1
664a0c41156Smrg		vendor=winbond
66545bc899bSmrg		;;
666a0c41156Smrg	op50n)
667a0c41156Smrg		cpu=hppa1.1
668a0c41156Smrg		vendor=oki
66945bc899bSmrg		;;
670a0c41156Smrg	op60c)
671a0c41156Smrg		cpu=hppa1.1
672a0c41156Smrg		vendor=oki
67350f2e948Smrg		;;
674a0c41156Smrg	ibm*)
675a0c41156Smrg		cpu=i370
676a0c41156Smrg		vendor=ibm
677b40a6198Smrg		;;
678a0c41156Smrg	orion105)
679a0c41156Smrg		cpu=clipper
680a0c41156Smrg		vendor=highlevel
681c97b1c41Smrg		;;
682a0c41156Smrg	mac | mpw | mac-mpw)
683a0c41156Smrg		cpu=m68k
684a0c41156Smrg		vendor=apple
685b40a6198Smrg		;;
686a0c41156Smrg	pmac | pmac-mpw)
687a0c41156Smrg		cpu=powerpc
688a0c41156Smrg		vendor=apple
689b40a6198Smrg		;;
690b40a6198Smrg
69145bc899bSmrg	# Recognize the various machine names and aliases which stand
69245bc899bSmrg	# for a CPU type and a company and sometimes even an OS.
69345bc899bSmrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
694a0c41156Smrg		cpu=m68000
695a0c41156Smrg		vendor=att
69645bc899bSmrg		;;
69745bc899bSmrg	3b*)
698a0c41156Smrg		cpu=we32k
699a0c41156Smrg		vendor=att
70050f2e948Smrg		;;
701b40a6198Smrg	bluegene*)
702a0c41156Smrg		cpu=powerpc
703a0c41156Smrg		vendor=ibm
704e8b4ed9fSmrg		basic_os=cnk
70545bc899bSmrg		;;
70645bc899bSmrg	decsystem10* | dec10*)
707a0c41156Smrg		cpu=pdp10
708a0c41156Smrg		vendor=dec
709e8b4ed9fSmrg		basic_os=tops10
71045bc899bSmrg		;;
71145bc899bSmrg	decsystem20* | dec20*)
712a0c41156Smrg		cpu=pdp10
713a0c41156Smrg		vendor=dec
714e8b4ed9fSmrg		basic_os=tops20
71545bc899bSmrg		;;
71645bc899bSmrg	delta | 3300 | motorola-3300 | motorola-delta \
71745bc899bSmrg	      | 3300-motorola | delta-motorola)
718a0c41156Smrg		cpu=m68k
719a0c41156Smrg		vendor=motorola
72045bc899bSmrg		;;
721a0c41156Smrg	dpx2*)
722a0c41156Smrg		cpu=m68k
723a0c41156Smrg		vendor=bull
724e8b4ed9fSmrg		basic_os=sysv3
72545bc899bSmrg		;;
72645bc899bSmrg	encore | umax | mmax)
727a0c41156Smrg		cpu=ns32k
728a0c41156Smrg		vendor=encore
72945bc899bSmrg		;;
730a0c41156Smrg	elxsi)
731a0c41156Smrg		cpu=elxsi
732a0c41156Smrg		vendor=elxsi
733e8b4ed9fSmrg		basic_os=${basic_os:-bsd}
73445bc899bSmrg		;;
73545bc899bSmrg	fx2800)
736a0c41156Smrg		cpu=i860
737a0c41156Smrg		vendor=alliant
73845bc899bSmrg		;;
73945bc899bSmrg	genix)
740a0c41156Smrg		cpu=ns32k
741a0c41156Smrg		vendor=ns
74245bc899bSmrg		;;
74345bc899bSmrg	h3050r* | hiux*)
744a0c41156Smrg		cpu=hppa1.1
745a0c41156Smrg		vendor=hitachi
746e8b4ed9fSmrg		basic_os=hiuxwe2
74745bc899bSmrg		;;
74845bc899bSmrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
749a0c41156Smrg		cpu=hppa1.0
750a0c41156Smrg		vendor=hp
75145bc899bSmrg		;;
75245bc899bSmrg	hp9k2[0-9][0-9] | hp9k31[0-9])
753a0c41156Smrg		cpu=m68000
754a0c41156Smrg		vendor=hp
75545bc899bSmrg		;;
75645bc899bSmrg	hp9k3[2-9][0-9])
757a0c41156Smrg		cpu=m68k
758a0c41156Smrg		vendor=hp
75945bc899bSmrg		;;
76045bc899bSmrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
761a0c41156Smrg		cpu=hppa1.0
762a0c41156Smrg		vendor=hp
76345bc899bSmrg		;;
76445bc899bSmrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
765a0c41156Smrg		cpu=hppa1.1
766a0c41156Smrg		vendor=hp
76745bc899bSmrg		;;
76845bc899bSmrg	hp9k78[0-9] | hp78[0-9])
76945bc899bSmrg		# FIXME: really hppa2.0-hp
770a0c41156Smrg		cpu=hppa1.1
771a0c41156Smrg		vendor=hp
77245bc899bSmrg		;;
77345bc899bSmrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
77445bc899bSmrg		# FIXME: really hppa2.0-hp
775a0c41156Smrg		cpu=hppa1.1
776a0c41156Smrg		vendor=hp
77745bc899bSmrg		;;
77845bc899bSmrg	hp9k8[0-9][13679] | hp8[0-9][13679])
779a0c41156Smrg		cpu=hppa1.1
780a0c41156Smrg		vendor=hp
78145bc899bSmrg		;;
78245bc899bSmrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
783a0c41156Smrg		cpu=hppa1.0
784a0c41156Smrg		vendor=hp
78545bc899bSmrg		;;
78645bc899bSmrg	i*86v32)
787a0c41156Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
788a0c41156Smrg		vendor=pc
789e8b4ed9fSmrg		basic_os=sysv32
79045bc899bSmrg		;;
79145bc899bSmrg	i*86v4*)
792a0c41156Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
793a0c41156Smrg		vendor=pc
794e8b4ed9fSmrg		basic_os=sysv4
79545bc899bSmrg		;;
79645bc899bSmrg	i*86v)
797a0c41156Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
798a0c41156Smrg		vendor=pc
799e8b4ed9fSmrg		basic_os=sysv
80045bc899bSmrg		;;
80145bc899bSmrg	i*86sol2)
802a0c41156Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
803a0c41156Smrg		vendor=pc
804e8b4ed9fSmrg		basic_os=solaris2
80545bc899bSmrg		;;
806a0c41156Smrg	j90 | j90-cray)
807a0c41156Smrg		cpu=j90
808a0c41156Smrg		vendor=cray
809e8b4ed9fSmrg		basic_os=${basic_os:-unicos}
81045bc899bSmrg		;;
81145bc899bSmrg	iris | iris4d)
812a0c41156Smrg		cpu=mips
813a0c41156Smrg		vendor=sgi
814e8b4ed9fSmrg		case $basic_os in
815a0c41156Smrg		    irix*)
81645bc899bSmrg			;;
81745bc899bSmrg		    *)
818e8b4ed9fSmrg			basic_os=irix4
81945bc899bSmrg			;;
82045bc899bSmrg		esac
82145bc899bSmrg		;;
82245bc899bSmrg	miniframe)
823a0c41156Smrg		cpu=m68000
824a0c41156Smrg		vendor=convergent
825b40a6198Smrg		;;
826a0c41156Smrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
827a0c41156Smrg		cpu=m68k
828a0c41156Smrg		vendor=atari
829e8b4ed9fSmrg		basic_os=mint
83045bc899bSmrg		;;
83145bc899bSmrg	news-3600 | risc-news)
832a0c41156Smrg		cpu=mips
833a0c41156Smrg		vendor=sony
834e8b4ed9fSmrg		basic_os=newsos
83545bc899bSmrg		;;
836a0c41156Smrg	next | m*-next)
837a0c41156Smrg		cpu=m68k
838a0c41156Smrg		vendor=next
839e8b4ed9fSmrg		case $basic_os in
840e8b4ed9fSmrg		    openstep*)
841e8b4ed9fSmrg		        ;;
842e8b4ed9fSmrg		    nextstep*)
84345bc899bSmrg			;;
844a0c41156Smrg		    ns2*)
845e8b4ed9fSmrg		      basic_os=nextstep2
84645bc899bSmrg			;;
84745bc899bSmrg		    *)
848e8b4ed9fSmrg		      basic_os=nextstep3
84945bc899bSmrg			;;
85045bc899bSmrg		esac
85145bc899bSmrg		;;
85245bc899bSmrg	np1)
853a0c41156Smrg		cpu=np1
854a0c41156Smrg		vendor=gould
855f2408745Smrg		;;
85645bc899bSmrg	op50n-* | op60c-*)
857a0c41156Smrg		cpu=hppa1.1
858a0c41156Smrg		vendor=oki
859e8b4ed9fSmrg		basic_os=proelf
86045bc899bSmrg		;;
86145bc899bSmrg	pa-hitachi)
862a0c41156Smrg		cpu=hppa1.1
863a0c41156Smrg		vendor=hitachi
864e8b4ed9fSmrg		basic_os=hiuxwe2
86550f2e948Smrg		;;
86645bc899bSmrg	pbd)
867a0c41156Smrg		cpu=sparc
868a0c41156Smrg		vendor=tti
86945bc899bSmrg		;;
87045bc899bSmrg	pbb)
871a0c41156Smrg		cpu=m68k
872a0c41156Smrg		vendor=tti
87345bc899bSmrg		;;
874a0c41156Smrg	pc532)
875a0c41156Smrg		cpu=ns32k
876a0c41156Smrg		vendor=pc532
87745bc899bSmrg		;;
87845bc899bSmrg	pn)
879a0c41156Smrg		cpu=pn
880a0c41156Smrg		vendor=gould
88145bc899bSmrg		;;
882a0c41156Smrg	power)
883a0c41156Smrg		cpu=power
884a0c41156Smrg		vendor=ibm
88545bc899bSmrg		;;
88645bc899bSmrg	ps2)
887a0c41156Smrg		cpu=i386
888a0c41156Smrg		vendor=ibm
88945bc899bSmrg		;;
89045bc899bSmrg	rm[46]00)
891a0c41156Smrg		cpu=mips
892a0c41156Smrg		vendor=siemens
89345bc899bSmrg		;;
89445bc899bSmrg	rtpc | rtpc-*)
895a0c41156Smrg		cpu=romp
896a0c41156Smrg		vendor=ibm
89745bc899bSmrg		;;
89850f2e948Smrg	sde)
899a0c41156Smrg		cpu=mipsisa32
900a0c41156Smrg		vendor=sde
901e8b4ed9fSmrg		basic_os=${basic_os:-elf}
90250f2e948Smrg		;;
903a0c41156Smrg	simso-wrs)
904a0c41156Smrg		cpu=sparclite
905a0c41156Smrg		vendor=wrs
906e8b4ed9fSmrg		basic_os=vxworks
90745bc899bSmrg		;;
908a0c41156Smrg	tower | tower-32)
909a0c41156Smrg		cpu=m68k
910a0c41156Smrg		vendor=ncr
91145bc899bSmrg		;;
912a0c41156Smrg	vpp*|vx|vx-*)
913a0c41156Smrg		cpu=f301
914a0c41156Smrg		vendor=fujitsu
91545bc899bSmrg		;;
916a0c41156Smrg	w65)
917a0c41156Smrg		cpu=w65
918a0c41156Smrg		vendor=wdc
91950f2e948Smrg		;;
920a0c41156Smrg	w89k-*)
921a0c41156Smrg		cpu=hppa1.1
922a0c41156Smrg		vendor=winbond
923e8b4ed9fSmrg		basic_os=proelf
92445bc899bSmrg		;;
925a0c41156Smrg	none)
926a0c41156Smrg		cpu=none
927a0c41156Smrg		vendor=none
92845bc899bSmrg		;;
929a0c41156Smrg	leon|leon[3-9])
930a0c41156Smrg		cpu=sparc
931a0c41156Smrg		vendor=$basic_machine
93245bc899bSmrg		;;
933a0c41156Smrg	leon-*|leon[3-9]-*)
934a0c41156Smrg		cpu=sparc
935a0c41156Smrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
93645bc899bSmrg		;;
937a0c41156Smrg
938a0c41156Smrg	*-*)
939e8b4ed9fSmrg		# shellcheck disable=SC2162
940e8b4ed9fSmrg		saved_IFS=$IFS
941e8b4ed9fSmrg		IFS="-" read cpu vendor <<EOF
942a0c41156Smrg$basic_machine
943a0c41156SmrgEOF
944e8b4ed9fSmrg		IFS=$saved_IFS
94545bc899bSmrg		;;
946a0c41156Smrg	# We use `pc' rather than `unknown'
947a0c41156Smrg	# because (1) that's what they normally are, and
948a0c41156Smrg	# (2) the word "unknown" tends to confuse beginning users.
949a0c41156Smrg	i*86 | x86_64)
950a0c41156Smrg		cpu=$basic_machine
951a0c41156Smrg		vendor=pc
95245bc899bSmrg		;;
953a0c41156Smrg	# These rules are duplicated from below for sake of the special case above;
954a0c41156Smrg	# i.e. things that normalized to x86 arches should also default to "pc"
955a0c41156Smrg	pc98)
956a0c41156Smrg		cpu=i386
957a0c41156Smrg		vendor=pc
958b40a6198Smrg		;;
959a0c41156Smrg	x64 | amd64)
960a0c41156Smrg		cpu=x86_64
961a0c41156Smrg		vendor=pc
96245bc899bSmrg		;;
963a0c41156Smrg	# Recognize the basic CPU types without company name.
964a0c41156Smrg	*)
965a0c41156Smrg		cpu=$basic_machine
966a0c41156Smrg		vendor=unknown
96745bc899bSmrg		;;
968a0c41156Smrgesac
969a0c41156Smrg
970a0c41156Smrgunset -v basic_machine
971a0c41156Smrg
972a0c41156Smrg# Decode basic machines in the full and proper CPU-Company form.
973a0c41156Smrgcase $cpu-$vendor in
974e8b4ed9fSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
975a0c41156Smrg	# some cases the only manufacturer, in others, it is the most popular.
976a0c41156Smrg	craynv-unknown)
977a0c41156Smrg		vendor=cray
978e8b4ed9fSmrg		basic_os=${basic_os:-unicosmp}
97945bc899bSmrg		;;
980a0c41156Smrg	c90-unknown | c90-cray)
981a0c41156Smrg		vendor=cray
982e8b4ed9fSmrg		basic_os=${Basic_os:-unicos}
98345bc899bSmrg		;;
984a0c41156Smrg	fx80-unknown)
985a0c41156Smrg		vendor=alliant
98645bc899bSmrg		;;
987a0c41156Smrg	romp-unknown)
988a0c41156Smrg		vendor=ibm
98945bc899bSmrg		;;
990a0c41156Smrg	mmix-unknown)
991a0c41156Smrg		vendor=knuth
99245bc899bSmrg		;;
993a0c41156Smrg	microblaze-unknown | microblazeel-unknown)
994a0c41156Smrg		vendor=xilinx
99545bc899bSmrg		;;
996a0c41156Smrg	rs6000-unknown)
997a0c41156Smrg		vendor=ibm
99845bc899bSmrg		;;
999a0c41156Smrg	vax-unknown)
1000a0c41156Smrg		vendor=dec
100145bc899bSmrg		;;
1002a0c41156Smrg	pdp11-unknown)
1003a0c41156Smrg		vendor=dec
100445bc899bSmrg		;;
1005a0c41156Smrg	we32k-unknown)
1006a0c41156Smrg		vendor=att
100745bc899bSmrg		;;
1008a0c41156Smrg	cydra-unknown)
1009a0c41156Smrg		vendor=cydrome
101045bc899bSmrg		;;
1011a0c41156Smrg	i370-ibm*)
1012a0c41156Smrg		vendor=ibm
101345bc899bSmrg		;;
1014a0c41156Smrg	orion-unknown)
1015a0c41156Smrg		vendor=highlevel
101645bc899bSmrg		;;
1017a0c41156Smrg	xps-unknown | xps100-unknown)
1018a0c41156Smrg		cpu=xps100
1019a0c41156Smrg		vendor=honeywell
102050f2e948Smrg		;;
1021a0c41156Smrg
1022a0c41156Smrg	# Here we normalize CPU types with a missing or matching vendor
1023a0c41156Smrg	dpx20-unknown | dpx20-bull)
1024a0c41156Smrg		cpu=rs6000
1025a0c41156Smrg		vendor=bull
1026e8b4ed9fSmrg		basic_os=${basic_os:-bosx}
102745bc899bSmrg		;;
1028a0c41156Smrg
1029a0c41156Smrg	# Here we normalize CPU types irrespective of the vendor
1030a0c41156Smrg	amd64-*)
1031a0c41156Smrg		cpu=x86_64
103245bc899bSmrg		;;
1033a0c41156Smrg	blackfin-*)
1034a0c41156Smrg		cpu=bfin
1035e8b4ed9fSmrg		basic_os=linux
103645bc899bSmrg		;;
1037a0c41156Smrg	c54x-*)
1038a0c41156Smrg		cpu=tic54x
103945bc899bSmrg		;;
1040a0c41156Smrg	c55x-*)
1041a0c41156Smrg		cpu=tic55x
104250f2e948Smrg		;;
1043a0c41156Smrg	c6x-*)
1044a0c41156Smrg		cpu=tic6x
104545bc899bSmrg		;;
1046a0c41156Smrg	e500v[12]-*)
1047a0c41156Smrg		cpu=powerpc
1048e8b4ed9fSmrg		basic_os=${basic_os}"spe"
104945bc899bSmrg		;;
1050a0c41156Smrg	mips3*-*)
1051a0c41156Smrg		cpu=mips64
105245bc899bSmrg		;;
1053a0c41156Smrg	ms1-*)
1054a0c41156Smrg		cpu=mt
105545bc899bSmrg		;;
1056a0c41156Smrg	m68knommu-*)
1057a0c41156Smrg		cpu=m68k
1058e8b4ed9fSmrg		basic_os=linux
105945bc899bSmrg		;;
1060a0c41156Smrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
1061a0c41156Smrg		cpu=s12z
106245bc899bSmrg		;;
1063a0c41156Smrg	openrisc-*)
1064a0c41156Smrg		cpu=or32
106545bc899bSmrg		;;
1066a0c41156Smrg	parisc-*)
1067a0c41156Smrg		cpu=hppa
1068e8b4ed9fSmrg		basic_os=linux
106945bc899bSmrg		;;
1070a0c41156Smrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
1071a0c41156Smrg		cpu=i586
107245bc899bSmrg		;;
1073a0c41156Smrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
1074a0c41156Smrg		cpu=i686
1075f2408745Smrg		;;
1076a0c41156Smrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
1077a0c41156Smrg		cpu=i686
107845bc899bSmrg		;;
1079a0c41156Smrg	pentium4-*)
1080a0c41156Smrg		cpu=i786
108145bc899bSmrg		;;
1082a0c41156Smrg	pc98-*)
1083a0c41156Smrg		cpu=i386
108450f2e948Smrg		;;
1085a0c41156Smrg	ppc-* | ppcbe-*)
1086a0c41156Smrg		cpu=powerpc
108745bc899bSmrg		;;
1088a0c41156Smrg	ppcle-* | powerpclittle-*)
1089a0c41156Smrg		cpu=powerpcle
1090b40a6198Smrg		;;
1091a0c41156Smrg	ppc64-*)
1092a0c41156Smrg		cpu=powerpc64
109345bc899bSmrg		;;
1094a0c41156Smrg	ppc64le-* | powerpc64little-*)
1095a0c41156Smrg		cpu=powerpc64le
109645bc899bSmrg		;;
1097a0c41156Smrg	sb1-*)
1098a0c41156Smrg		cpu=mipsisa64sb1
1099b40a6198Smrg		;;
1100a0c41156Smrg	sb1el-*)
1101a0c41156Smrg		cpu=mipsisa64sb1el
110245bc899bSmrg		;;
1103a0c41156Smrg	sh5e[lb]-*)
1104a0c41156Smrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
110545bc899bSmrg		;;
1106a0c41156Smrg	spur-*)
1107a0c41156Smrg		cpu=spur
110845bc899bSmrg		;;
1109a0c41156Smrg	strongarm-* | thumb-*)
1110a0c41156Smrg		cpu=arm
111145bc899bSmrg		;;
1112a0c41156Smrg	tx39-*)
1113a0c41156Smrg		cpu=mipstx39
111445bc899bSmrg		;;
1115a0c41156Smrg	tx39el-*)
1116a0c41156Smrg		cpu=mipstx39el
111750f2e948Smrg		;;
1118a0c41156Smrg	x64-*)
1119a0c41156Smrg		cpu=x86_64
112045bc899bSmrg		;;
1121a0c41156Smrg	xscale-* | xscalee[bl]-*)
1122a0c41156Smrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
112345bc899bSmrg		;;
1124e8b4ed9fSmrg	arm64-*)
1125e8b4ed9fSmrg		cpu=aarch64
1126e8b4ed9fSmrg		;;
1127a0c41156Smrg
1128e8b4ed9fSmrg	# Recognize the canonical CPU Types that limit and/or modify the
1129a0c41156Smrg	# company names they are paired with.
1130a0c41156Smrg	cr16-*)
1131e8b4ed9fSmrg		basic_os=${basic_os:-elf}
113245bc899bSmrg		;;
1133a0c41156Smrg	crisv32-* | etraxfs*-*)
1134a0c41156Smrg		cpu=crisv32
1135a0c41156Smrg		vendor=axis
113645bc899bSmrg		;;
1137a0c41156Smrg	cris-* | etrax*-*)
1138a0c41156Smrg		cpu=cris
1139a0c41156Smrg		vendor=axis
114045bc899bSmrg		;;
1141a0c41156Smrg	crx-*)
1142e8b4ed9fSmrg		basic_os=${basic_os:-elf}
114345bc899bSmrg		;;
1144a0c41156Smrg	neo-tandem)
1145a0c41156Smrg		cpu=neo
1146a0c41156Smrg		vendor=tandem
114745bc899bSmrg		;;
1148a0c41156Smrg	nse-tandem)
1149a0c41156Smrg		cpu=nse
1150a0c41156Smrg		vendor=tandem
115145bc899bSmrg		;;
1152a0c41156Smrg	nsr-tandem)
1153a0c41156Smrg		cpu=nsr
1154a0c41156Smrg		vendor=tandem
115545bc899bSmrg		;;
1156a0c41156Smrg	nsv-tandem)
1157a0c41156Smrg		cpu=nsv
1158a0c41156Smrg		vendor=tandem
115945bc899bSmrg		;;
1160a0c41156Smrg	nsx-tandem)
1161a0c41156Smrg		cpu=nsx
1162a0c41156Smrg		vendor=tandem
116345bc899bSmrg		;;
1164e8b4ed9fSmrg	mipsallegrexel-sony)
1165e8b4ed9fSmrg		cpu=mipsallegrexel
1166e8b4ed9fSmrg		vendor=sony
116745bc899bSmrg		;;
1168a0c41156Smrg	tile*-*)
1169e8b4ed9fSmrg		basic_os=${basic_os:-linux-gnu}
117045bc899bSmrg		;;
1171a0c41156Smrg
117245bc899bSmrg	*)
1173e8b4ed9fSmrg		# Recognize the canonical CPU types that are allowed with any
1174a0c41156Smrg		# company name.
1175a0c41156Smrg		case $cpu in
1176a0c41156Smrg			1750a | 580 \
1177a0c41156Smrg			| a29k \
1178a0c41156Smrg			| aarch64 | aarch64_be \
1179a0c41156Smrg			| abacus \
1180a0c41156Smrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
1181a0c41156Smrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
1182a0c41156Smrg			| alphapca5[67] | alpha64pca5[67] \
1183a0c41156Smrg			| am33_2.0 \
1184e8b4ed9fSmrg			| amdgcn \
1185e8b4ed9fSmrg			| arc | arceb | arc32 | arc64 \
1186e8b4ed9fSmrg			| arm | arm[lb]e | arme[lb] | armv* \
1187a0c41156Smrg			| avr | avr32 \
1188a0c41156Smrg			| asmjs \
1189a0c41156Smrg			| ba \
1190a0c41156Smrg			| be32 | be64 \
1191e8b4ed9fSmrg			| bfin | bpf | bs2000 \
1192a0c41156Smrg			| c[123]* | c30 | [cjt]90 | c4x \
1193a0c41156Smrg			| c8051 | clipper | craynv | csky | cydra \
1194a0c41156Smrg			| d10v | d30v | dlx | dsp16xx \
1195a0c41156Smrg			| e2k | elxsi | epiphany \
1196a0c41156Smrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
1197a0c41156Smrg			| h8300 | h8500 \
1198a0c41156Smrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
1199a0c41156Smrg			| hexagon \
1200a0c41156Smrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
1201a0c41156Smrg			| ip2k | iq2000 \
1202a0c41156Smrg			| k1om \
1203a0c41156Smrg			| le32 | le64 \
1204a0c41156Smrg			| lm32 \
1205e8b4ed9fSmrg			| loongarch32 | loongarch64 | loongarchx32 \
1206a0c41156Smrg			| m32c | m32r | m32rle \
1207e8b4ed9fSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
1208e8b4ed9fSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
1209a0c41156Smrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
1210a0c41156Smrg			| microblaze | microblazeel \
1211a0c41156Smrg			| mips | mipsbe | mipseb | mipsel | mipsle \
1212a0c41156Smrg			| mips16 \
1213e8b4ed9fSmrg			| mips64 | mips64eb | mips64el \
1214a0c41156Smrg			| mips64octeon | mips64octeonel \
1215a0c41156Smrg			| mips64orion | mips64orionel \
1216a0c41156Smrg			| mips64r5900 | mips64r5900el \
1217a0c41156Smrg			| mips64vr | mips64vrel \
1218a0c41156Smrg			| mips64vr4100 | mips64vr4100el \
1219a0c41156Smrg			| mips64vr4300 | mips64vr4300el \
1220a0c41156Smrg			| mips64vr5000 | mips64vr5000el \
1221a0c41156Smrg			| mips64vr5900 | mips64vr5900el \
1222a0c41156Smrg			| mipsisa32 | mipsisa32el \
1223a0c41156Smrg			| mipsisa32r2 | mipsisa32r2el \
1224e8b4ed9fSmrg			| mipsisa32r3 | mipsisa32r3el \
1225e8b4ed9fSmrg			| mipsisa32r5 | mipsisa32r5el \
1226a0c41156Smrg			| mipsisa32r6 | mipsisa32r6el \
1227a0c41156Smrg			| mipsisa64 | mipsisa64el \
1228a0c41156Smrg			| mipsisa64r2 | mipsisa64r2el \
1229e8b4ed9fSmrg			| mipsisa64r3 | mipsisa64r3el \
1230e8b4ed9fSmrg			| mipsisa64r5 | mipsisa64r5el \
1231a0c41156Smrg			| mipsisa64r6 | mipsisa64r6el \
1232a0c41156Smrg			| mipsisa64sb1 | mipsisa64sb1el \
1233a0c41156Smrg			| mipsisa64sr71k | mipsisa64sr71kel \
1234a0c41156Smrg			| mipsr5900 | mipsr5900el \
1235a0c41156Smrg			| mipstx39 | mipstx39el \
1236a0c41156Smrg			| mmix \
1237a0c41156Smrg			| mn10200 | mn10300 \
1238a0c41156Smrg			| moxie \
1239a0c41156Smrg			| mt \
1240a0c41156Smrg			| msp430 \
1241a0c41156Smrg			| nds32 | nds32le | nds32be \
1242a0c41156Smrg			| nfp \
1243a0c41156Smrg			| nios | nios2 | nios2eb | nios2el \
1244e8b4ed9fSmrg			| none | np1 | ns16k | ns32k | nvptx \
1245a0c41156Smrg			| open8 \
1246a0c41156Smrg			| or1k* \
1247a0c41156Smrg			| or32 \
1248a0c41156Smrg			| orion \
1249e8b4ed9fSmrg			| picochip \
1250a0c41156Smrg			| pdp10 | pdp11 | pj | pjl | pn | power \
1251a0c41156Smrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
1252a0c41156Smrg			| pru \
1253a0c41156Smrg			| pyramid \
1254e8b4ed9fSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
1255a0c41156Smrg			| rl78 | romp | rs6000 | rx \
1256e8b4ed9fSmrg			| s390 | s390x \
1257a0c41156Smrg			| score \
1258e8b4ed9fSmrg			| sh | shl \
1259e8b4ed9fSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
1260a0c41156Smrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
1261a0c41156Smrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
1262a0c41156Smrg			| sparclite \
1263a0c41156Smrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
1264a0c41156Smrg			| spu \
1265a0c41156Smrg			| tahoe \
1266e8b4ed9fSmrg			| thumbv7* \
1267a0c41156Smrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
1268a0c41156Smrg			| tron \
1269a0c41156Smrg			| ubicom32 \
1270e8b4ed9fSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
1271a0c41156Smrg			| vax \
1272a0c41156Smrg			| visium \
1273e8b4ed9fSmrg			| w65 \
1274e8b4ed9fSmrg			| wasm32 | wasm64 \
1275a0c41156Smrg			| we32k \
1276a0c41156Smrg			| x86 | x86_64 | xc16x | xgate | xps100 \
1277a0c41156Smrg			| xstormy16 | xtensa* \
1278a0c41156Smrg			| ymp \
1279a0c41156Smrg			| z8k | z80)
1280a0c41156Smrg				;;
1281a0c41156Smrg
1282a0c41156Smrg			*)
1283a0c41156Smrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
1284a0c41156Smrg				exit 1
1285a0c41156Smrg				;;
1286a0c41156Smrg		esac
128745bc899bSmrg		;;
128845bc899bSmrgesac
128945bc899bSmrg
129045bc899bSmrg# Here we canonicalize certain aliases for manufacturers.
1291a0c41156Smrgcase $vendor in
1292a0c41156Smrg	digital*)
1293a0c41156Smrg		vendor=dec
129445bc899bSmrg		;;
1295a0c41156Smrg	commodore*)
1296a0c41156Smrg		vendor=cbm
129745bc899bSmrg		;;
129845bc899bSmrg	*)
129945bc899bSmrg		;;
130045bc899bSmrgesac
130145bc899bSmrg
130245bc899bSmrg# Decode manufacturer-specific aliases for certain operating systems.
130345bc899bSmrg
1304e8b4ed9fSmrgif test x$basic_os != x
130545bc899bSmrgthen
1306e8b4ed9fSmrg
1307e8b4ed9fSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
1308e8b4ed9fSmrg# set os.
1309e8b4ed9fSmrgcase $basic_os in
1310e8b4ed9fSmrg	gnu/linux*)
1311e8b4ed9fSmrg		kernel=linux
1312e8b4ed9fSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
1313e8b4ed9fSmrg		;;
1314e8b4ed9fSmrg	os2-emx)
1315e8b4ed9fSmrg		kernel=os2
1316e8b4ed9fSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
1317e8b4ed9fSmrg		;;
1318e8b4ed9fSmrg	nto-qnx*)
1319e8b4ed9fSmrg		kernel=nto
1320e8b4ed9fSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
1321e8b4ed9fSmrg		;;
1322e8b4ed9fSmrg	*-*)
1323e8b4ed9fSmrg		# shellcheck disable=SC2162
1324e8b4ed9fSmrg		saved_IFS=$IFS
1325e8b4ed9fSmrg		IFS="-" read kernel os <<EOF
1326e8b4ed9fSmrg$basic_os
1327e8b4ed9fSmrgEOF
1328e8b4ed9fSmrg		IFS=$saved_IFS
1329e8b4ed9fSmrg		;;
1330e8b4ed9fSmrg	# Default OS when just kernel was specified
1331e8b4ed9fSmrg	nto*)
1332e8b4ed9fSmrg		kernel=nto
1333e8b4ed9fSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
1334e8b4ed9fSmrg		;;
1335e8b4ed9fSmrg	linux*)
1336e8b4ed9fSmrg		kernel=linux
1337e8b4ed9fSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
1338e8b4ed9fSmrg		;;
1339e8b4ed9fSmrg	*)
1340e8b4ed9fSmrg		kernel=
1341e8b4ed9fSmrg		os=$basic_os
1342e8b4ed9fSmrg		;;
1343e8b4ed9fSmrgesac
1344e8b4ed9fSmrg
1345e8b4ed9fSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
1346e8b4ed9fSmrg# etc.)
134745bc899bSmrgcase $os in
1348a0c41156Smrg	# First match some system type aliases that might get confused
1349a0c41156Smrg	# with valid system types.
1350a0c41156Smrg	# solaris* is a basic system type, with this one exception.
1351a0c41156Smrg	auroraux)
1352a0c41156Smrg		os=auroraux
1353b40a6198Smrg		;;
1354a0c41156Smrg	bluegene*)
1355a0c41156Smrg		os=cnk
135645bc899bSmrg		;;
1357a0c41156Smrg	solaris1 | solaris1.*)
1358e8b4ed9fSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
135945bc899bSmrg		;;
1360a0c41156Smrg	solaris)
1361a0c41156Smrg		os=solaris2
136245bc899bSmrg		;;
1363a0c41156Smrg	unixware*)
1364a0c41156Smrg		os=sysv4.2uw
136545bc899bSmrg		;;
1366a0c41156Smrg	# es1800 is here to avoid being matched by es* (a different OS)
1367a0c41156Smrg	es1800*)
1368a0c41156Smrg		os=ose
1369a0c41156Smrg		;;
1370a0c41156Smrg	# Some version numbers need modification
1371a0c41156Smrg	chorusos*)
1372a0c41156Smrg		os=chorusos
1373a0c41156Smrg		;;
1374a0c41156Smrg	isc)
1375a0c41156Smrg		os=isc2.2
1376a0c41156Smrg		;;
1377a0c41156Smrg	sco6)
1378a0c41156Smrg		os=sco5v6
1379a0c41156Smrg		;;
1380a0c41156Smrg	sco5)
1381a0c41156Smrg		os=sco3.2v5
1382a0c41156Smrg		;;
1383a0c41156Smrg	sco4)
1384a0c41156Smrg		os=sco3.2v4
1385a0c41156Smrg		;;
1386a0c41156Smrg	sco3.2.[4-9]*)
1387e8b4ed9fSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
1388a0c41156Smrg		;;
1389e8b4ed9fSmrg	sco*v* | scout)
1390a0c41156Smrg		# Don't match below
1391a0c41156Smrg		;;
1392a0c41156Smrg	sco*)
1393a0c41156Smrg		os=sco3.2v2
1394a0c41156Smrg		;;
1395a0c41156Smrg	psos*)
1396a0c41156Smrg		os=psos
1397a0c41156Smrg		;;
1398a0c41156Smrg	qnx*)
1399e8b4ed9fSmrg		os=qnx
140045bc899bSmrg		;;
1401a0c41156Smrg	hiux*)
1402a0c41156Smrg		os=hiuxwe2
140345bc899bSmrg		;;
1404a0c41156Smrg	lynx*178)
1405a0c41156Smrg		os=lynxos178
140645bc899bSmrg		;;
1407a0c41156Smrg	lynx*5)
1408a0c41156Smrg		os=lynxos5
140945bc899bSmrg		;;
1410e8b4ed9fSmrg	lynxos*)
1411e8b4ed9fSmrg		# don't get caught up in next wildcard
1412e8b4ed9fSmrg		;;
1413a0c41156Smrg	lynx*)
1414a0c41156Smrg		os=lynxos
141545bc899bSmrg		;;
1416e8b4ed9fSmrg	mac[0-9]*)
1417a0c41156Smrg		os=`echo "$os" | sed -e 's|mac|macos|'`
141850f2e948Smrg		;;
1419a0c41156Smrg	opened*)
1420a0c41156Smrg		os=openedition
142145bc899bSmrg		;;
1422a0c41156Smrg	os400*)
1423a0c41156Smrg		os=os400
142445bc899bSmrg		;;
1425a0c41156Smrg	sunos5*)
1426a0c41156Smrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
142745bc899bSmrg		;;
1428a0c41156Smrg	sunos6*)
1429a0c41156Smrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
143045bc899bSmrg		;;
1431a0c41156Smrg	wince*)
1432a0c41156Smrg		os=wince
143345bc899bSmrg		;;
1434a0c41156Smrg	utek*)
1435a0c41156Smrg		os=bsd
143645bc899bSmrg		;;
1437a0c41156Smrg	dynix*)
1438a0c41156Smrg		os=bsd
143945bc899bSmrg		;;
1440a0c41156Smrg	acis*)
1441a0c41156Smrg		os=aos
144250f2e948Smrg		;;
1443a0c41156Smrg	atheos*)
1444a0c41156Smrg		os=atheos
144545bc899bSmrg		;;
1446a0c41156Smrg	syllable*)
1447a0c41156Smrg		os=syllable
1448a0c41156Smrg		;;
1449a0c41156Smrg	386bsd)
1450a0c41156Smrg		os=bsd
145145bc899bSmrg		;;
1452a0c41156Smrg	ctix* | uts*)
1453a0c41156Smrg		os=sysv
145445bc899bSmrg		;;
1455a0c41156Smrg	nova*)
1456a0c41156Smrg		os=rtmk-nova
145745bc899bSmrg		;;
1458a0c41156Smrg	ns2)
1459a0c41156Smrg		os=nextstep2
1460a0c41156Smrg		;;
146145bc899bSmrg	# Preserve the version number of sinix5.
1462a0c41156Smrg	sinix5.*)
1463e8b4ed9fSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
146445bc899bSmrg		;;
1465a0c41156Smrg	sinix*)
1466a0c41156Smrg		os=sysv4
146750f2e948Smrg		;;
1468a0c41156Smrg	tpf*)
1469a0c41156Smrg		os=tpf
147045bc899bSmrg		;;
1471a0c41156Smrg	triton*)
1472a0c41156Smrg		os=sysv3
147345bc899bSmrg		;;
1474a0c41156Smrg	oss*)
1475a0c41156Smrg		os=sysv3
147645bc899bSmrg		;;
1477a0c41156Smrg	svr4*)
1478a0c41156Smrg		os=sysv4
147945bc899bSmrg		;;
1480a0c41156Smrg	svr3)
1481a0c41156Smrg		os=sysv3
148245bc899bSmrg		;;
1483a0c41156Smrg	sysvr4)
1484a0c41156Smrg		os=sysv4
148545bc899bSmrg		;;
1486a0c41156Smrg	ose*)
1487a0c41156Smrg		os=ose
148845bc899bSmrg		;;
1489a0c41156Smrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
1490a0c41156Smrg		os=mint
149145bc899bSmrg		;;
1492a0c41156Smrg	dicos*)
1493a0c41156Smrg		os=dicos
149445bc899bSmrg		;;
1495a0c41156Smrg	pikeos*)
1496a0c41156Smrg		# Until real need of OS specific support for
1497a0c41156Smrg		# particular features comes up, bare metal
1498a0c41156Smrg		# configurations are quite functional.
1499a0c41156Smrg		case $cpu in
1500a0c41156Smrg		    arm*)
1501a0c41156Smrg			os=eabi
1502a0c41156Smrg			;;
1503a0c41156Smrg		    *)
1504a0c41156Smrg			os=elf
1505a0c41156Smrg			;;
1506a0c41156Smrg		esac
150750f2e948Smrg		;;
150845bc899bSmrg	*)
1509e8b4ed9fSmrg		# No normalization, but not necessarily accepted, that comes below.
151045bc899bSmrg		;;
151145bc899bSmrgesac
1512e8b4ed9fSmrg
151345bc899bSmrgelse
151445bc899bSmrg
151545bc899bSmrg# Here we handle the default operating systems that come with various machines.
151645bc899bSmrg# The value should be what the vendor currently ships out the door with their
151745bc899bSmrg# machine or put another way, the most popular os provided with the machine.
151845bc899bSmrg
151945bc899bSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
152045bc899bSmrg# "-sun"), then you have to tell the case statement up towards the top
152145bc899bSmrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
152245bc899bSmrg# will signal an error saying that MANUFACTURER isn't an operating
152345bc899bSmrg# system, and we'll never get to this point.
152445bc899bSmrg
1525e8b4ed9fSmrgkernel=
1526a0c41156Smrgcase $cpu-$vendor in
1527b40a6198Smrg	score-*)
1528a0c41156Smrg		os=elf
152950f2e948Smrg		;;
1530b40a6198Smrg	spu-*)
1531a0c41156Smrg		os=elf
153250f2e948Smrg		;;
153345bc899bSmrg	*-acorn)
1534a0c41156Smrg		os=riscix1.2
153545bc899bSmrg		;;
153645bc899bSmrg	arm*-rebel)
1537e8b4ed9fSmrg		kernel=linux
1538e8b4ed9fSmrg		os=gnu
153945bc899bSmrg		;;
154045bc899bSmrg	arm*-semi)
1541a0c41156Smrg		os=aout
154245bc899bSmrg		;;
1543b40a6198Smrg	c4x-* | tic4x-*)
1544a0c41156Smrg		os=coff
1545b40a6198Smrg		;;
1546c97b1c41Smrg	c8051-*)
1547a0c41156Smrg		os=elf
1548a0c41156Smrg		;;
1549a0c41156Smrg	clipper-intergraph)
1550a0c41156Smrg		os=clix
1551c97b1c41Smrg		;;
1552c97b1c41Smrg	hexagon-*)
1553a0c41156Smrg		os=elf
1554c97b1c41Smrg		;;
1555b40a6198Smrg	tic54x-*)
1556a0c41156Smrg		os=coff
1557b40a6198Smrg		;;
1558b40a6198Smrg	tic55x-*)
1559a0c41156Smrg		os=coff
1560b40a6198Smrg		;;
1561b40a6198Smrg	tic6x-*)
1562a0c41156Smrg		os=coff
156345bc899bSmrg		;;
156445bc899bSmrg	# This must come before the *-dec entry.
156545bc899bSmrg	pdp10-*)
1566a0c41156Smrg		os=tops20
156745bc899bSmrg		;;
156845bc899bSmrg	pdp11-*)
1569a0c41156Smrg		os=none
157045bc899bSmrg		;;
157145bc899bSmrg	*-dec | vax-*)
1572a0c41156Smrg		os=ultrix4.2
157345bc899bSmrg		;;
157445bc899bSmrg	m68*-apollo)
1575a0c41156Smrg		os=domain
157645bc899bSmrg		;;
157745bc899bSmrg	i386-sun)
1578a0c41156Smrg		os=sunos4.0.2
157945bc899bSmrg		;;
158045bc899bSmrg	m68000-sun)
1581a0c41156Smrg		os=sunos3
158245bc899bSmrg		;;
158345bc899bSmrg	m68*-cisco)
1584a0c41156Smrg		os=aout
158545bc899bSmrg		;;
1586b40a6198Smrg	mep-*)
1587a0c41156Smrg		os=elf
158850f2e948Smrg		;;
158945bc899bSmrg	mips*-cisco)
1590a0c41156Smrg		os=elf
159145bc899bSmrg		;;
159245bc899bSmrg	mips*-*)
1593a0c41156Smrg		os=elf
159445bc899bSmrg		;;
159545bc899bSmrg	or32-*)
1596a0c41156Smrg		os=coff
159745bc899bSmrg		;;
159845bc899bSmrg	*-tti)	# must be before sparc entry or we get the wrong os.
1599a0c41156Smrg		os=sysv3
160045bc899bSmrg		;;
160145bc899bSmrg	sparc-* | *-sun)
1602a0c41156Smrg		os=sunos4.1.1
160345bc899bSmrg		;;
1604f2408745Smrg	pru-*)
1605a0c41156Smrg		os=elf
1606f2408745Smrg		;;
160745bc899bSmrg	*-be)
1608a0c41156Smrg		os=beos
160950f2e948Smrg		;;
161045bc899bSmrg	*-ibm)
1611a0c41156Smrg		os=aix
161245bc899bSmrg		;;
1613b40a6198Smrg	*-knuth)
1614a0c41156Smrg		os=mmixware
161550f2e948Smrg		;;
161645bc899bSmrg	*-wec)
1617a0c41156Smrg		os=proelf
161845bc899bSmrg		;;
161945bc899bSmrg	*-winbond)
1620a0c41156Smrg		os=proelf
162145bc899bSmrg		;;
162245bc899bSmrg	*-oki)
1623a0c41156Smrg		os=proelf
162445bc899bSmrg		;;
162545bc899bSmrg	*-hp)
1626a0c41156Smrg		os=hpux
162745bc899bSmrg		;;
162845bc899bSmrg	*-hitachi)
1629a0c41156Smrg		os=hiux
163045bc899bSmrg		;;
163145bc899bSmrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
1632a0c41156Smrg		os=sysv
163345bc899bSmrg		;;
163445bc899bSmrg	*-cbm)
1635a0c41156Smrg		os=amigaos
163645bc899bSmrg		;;
163745bc899bSmrg	*-dg)
1638a0c41156Smrg		os=dgux
163945bc899bSmrg		;;
164045bc899bSmrg	*-dolphin)
1641a0c41156Smrg		os=sysv3
164245bc899bSmrg		;;
164345bc899bSmrg	m68k-ccur)
1644a0c41156Smrg		os=rtu
164545bc899bSmrg		;;
164645bc899bSmrg	m88k-omron*)
1647a0c41156Smrg		os=luna
164845bc899bSmrg		;;
1649a0c41156Smrg	*-next)
1650a0c41156Smrg		os=nextstep
165145bc899bSmrg		;;
165245bc899bSmrg	*-sequent)
1653a0c41156Smrg		os=ptx
165445bc899bSmrg		;;
165545bc899bSmrg	*-crds)
1656a0c41156Smrg		os=unos
165745bc899bSmrg		;;
165845bc899bSmrg	*-ns)
1659a0c41156Smrg		os=genix
166045bc899bSmrg		;;
166145bc899bSmrg	i370-*)
1662a0c41156Smrg		os=mvs
166345bc899bSmrg		;;
166445bc899bSmrg	*-gould)
1665a0c41156Smrg		os=sysv
166645bc899bSmrg		;;
166745bc899bSmrg	*-highlevel)
1668a0c41156Smrg		os=bsd
166945bc899bSmrg		;;
167045bc899bSmrg	*-encore)
1671a0c41156Smrg		os=bsd
167245bc899bSmrg		;;
167345bc899bSmrg	*-sgi)
1674a0c41156Smrg		os=irix
167545bc899bSmrg		;;
167645bc899bSmrg	*-siemens)
1677a0c41156Smrg		os=sysv4
167845bc899bSmrg		;;
167945bc899bSmrg	*-masscomp)
1680a0c41156Smrg		os=rtu
168145bc899bSmrg		;;
168245bc899bSmrg	f30[01]-fujitsu | f700-fujitsu)
1683a0c41156Smrg		os=uxpv
168445bc899bSmrg		;;
168545bc899bSmrg	*-rom68k)
1686a0c41156Smrg		os=coff
168745bc899bSmrg		;;
168845bc899bSmrg	*-*bug)
1689a0c41156Smrg		os=coff
169045bc899bSmrg		;;
169145bc899bSmrg	*-apple)
1692a0c41156Smrg		os=macos
169345bc899bSmrg		;;
169445bc899bSmrg	*-atari*)
1695a0c41156Smrg		os=mint
1696a0c41156Smrg		;;
1697a0c41156Smrg	*-wrs)
1698a0c41156Smrg		os=vxworks
169945bc899bSmrg		;;
170045bc899bSmrg	*)
1701a0c41156Smrg		os=none
170245bc899bSmrg		;;
170345bc899bSmrgesac
1704e8b4ed9fSmrg
170545bc899bSmrgfi
170645bc899bSmrg
1707e8b4ed9fSmrg# Now, validate our (potentially fixed-up) OS.
1708e8b4ed9fSmrgcase $os in
1709e8b4ed9fSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
1710e8b4ed9fSmrg	musl* | newlib* | relibc* | uclibc*)
1711e8b4ed9fSmrg		;;
1712e8b4ed9fSmrg	# Likewise for "kernel-abi"
1713e8b4ed9fSmrg	eabi* | gnueabi*)
1714e8b4ed9fSmrg		;;
1715e8b4ed9fSmrg	# VxWorks passes extra cpu info in the 4th filed.
1716e8b4ed9fSmrg	simlinux | simwindows | spe)
1717e8b4ed9fSmrg		;;
1718e8b4ed9fSmrg	# Now accept the basic system types.
1719e8b4ed9fSmrg	# The portable systems comes first.
1720e8b4ed9fSmrg	# Each alternative MUST end in a * to match a version number.
1721e8b4ed9fSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
1722e8b4ed9fSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
1723e8b4ed9fSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
1724e8b4ed9fSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
1725e8b4ed9fSmrg	     | hiux* | abug | nacl* | netware* | windows* \
1726e8b4ed9fSmrg	     | os9* | macos* | osx* | ios* \
1727e8b4ed9fSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
1728e8b4ed9fSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
1729e8b4ed9fSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
1730e8b4ed9fSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
1731e8b4ed9fSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
1732e8b4ed9fSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
1733e8b4ed9fSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
1734e8b4ed9fSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
1735e8b4ed9fSmrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
1736e8b4ed9fSmrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
1737e8b4ed9fSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
1738e8b4ed9fSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
1739e8b4ed9fSmrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
1740e8b4ed9fSmrg	     | midipix* | mingw32* | mingw64* | mint* \
1741e8b4ed9fSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
1742e8b4ed9fSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
1743e8b4ed9fSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
1744e8b4ed9fSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
1745e8b4ed9fSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
1746e8b4ed9fSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
1747e8b4ed9fSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
1748e8b4ed9fSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
1749e8b4ed9fSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
1750e8b4ed9fSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
1751e8b4ed9fSmrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*)
1752e8b4ed9fSmrg		;;
1753e8b4ed9fSmrg	# This one is extra strict with allowed versions
1754e8b4ed9fSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
1755e8b4ed9fSmrg		# Don't forget version if it is 3.2v4 or newer.
1756e8b4ed9fSmrg		;;
1757e8b4ed9fSmrg	none)
1758e8b4ed9fSmrg		;;
1759e8b4ed9fSmrg	*)
1760e8b4ed9fSmrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
1761e8b4ed9fSmrg		exit 1
1762e8b4ed9fSmrg		;;
1763e8b4ed9fSmrgesac
1764e8b4ed9fSmrg
1765e8b4ed9fSmrg# As a final step for OS-related things, validate the OS-kernel combination
1766e8b4ed9fSmrg# (given a valid OS), if there is a kernel.
1767e8b4ed9fSmrgcase $kernel-$os in
1768e8b4ed9fSmrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
1769e8b4ed9fSmrg		   | linux-musl* | linux-relibc* | linux-uclibc* )
1770e8b4ed9fSmrg		;;
1771e8b4ed9fSmrg	uclinux-uclibc* )
1772e8b4ed9fSmrg		;;
1773e8b4ed9fSmrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
1774e8b4ed9fSmrg		# These are just libc implementations, not actual OSes, and thus
1775e8b4ed9fSmrg		# require a kernel.
1776e8b4ed9fSmrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
1777e8b4ed9fSmrg		exit 1
1778e8b4ed9fSmrg		;;
1779e8b4ed9fSmrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
1780e8b4ed9fSmrg		;;
1781e8b4ed9fSmrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
1782e8b4ed9fSmrg		;;
1783e8b4ed9fSmrg	nto-qnx*)
1784e8b4ed9fSmrg		;;
1785e8b4ed9fSmrg	os2-emx)
1786e8b4ed9fSmrg		;;
1787e8b4ed9fSmrg	*-eabi* | *-gnueabi*)
1788e8b4ed9fSmrg		;;
1789e8b4ed9fSmrg	-*)
1790e8b4ed9fSmrg		# Blank kernel with real OS is always fine.
1791e8b4ed9fSmrg		;;
1792e8b4ed9fSmrg	*-*)
1793e8b4ed9fSmrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
1794e8b4ed9fSmrg		exit 1
1795e8b4ed9fSmrg		;;
1796e8b4ed9fSmrgesac
1797e8b4ed9fSmrg
179845bc899bSmrg# Here we handle the case where we know the os, and the CPU type, but not the
179945bc899bSmrg# manufacturer.  We pick the logical manufacturer.
1800a0c41156Smrgcase $vendor in
1801a0c41156Smrg	unknown)
1802e8b4ed9fSmrg		case $cpu-$os in
1803e8b4ed9fSmrg			*-riscix*)
180445bc899bSmrg				vendor=acorn
180545bc899bSmrg				;;
1806e8b4ed9fSmrg			*-sunos*)
180745bc899bSmrg				vendor=sun
180845bc899bSmrg				;;
1809e8b4ed9fSmrg			*-cnk* | *-aix*)
181045bc899bSmrg				vendor=ibm
181145bc899bSmrg				;;
1812e8b4ed9fSmrg			*-beos*)
181345bc899bSmrg				vendor=be
181445bc899bSmrg				;;
1815e8b4ed9fSmrg			*-hpux*)
181645bc899bSmrg				vendor=hp
181745bc899bSmrg				;;
1818e8b4ed9fSmrg			*-mpeix*)
181945bc899bSmrg				vendor=hp
182045bc899bSmrg				;;
1821e8b4ed9fSmrg			*-hiux*)
182245bc899bSmrg				vendor=hitachi
182345bc899bSmrg				;;
1824e8b4ed9fSmrg			*-unos*)
182545bc899bSmrg				vendor=crds
182645bc899bSmrg				;;
1827e8b4ed9fSmrg			*-dgux*)
182845bc899bSmrg				vendor=dg
182945bc899bSmrg				;;
1830e8b4ed9fSmrg			*-luna*)
183145bc899bSmrg				vendor=omron
183245bc899bSmrg				;;
1833e8b4ed9fSmrg			*-genix*)
183445bc899bSmrg				vendor=ns
183545bc899bSmrg				;;
1836e8b4ed9fSmrg			*-clix*)
1837a0c41156Smrg				vendor=intergraph
1838a0c41156Smrg				;;
1839e8b4ed9fSmrg			*-mvs* | *-opened*)
1840e8b4ed9fSmrg				vendor=ibm
1841e8b4ed9fSmrg				;;
1842e8b4ed9fSmrg			*-os400*)
184345bc899bSmrg				vendor=ibm
184445bc899bSmrg				;;
1845e8b4ed9fSmrg			s390-* | s390x-*)
184650f2e948Smrg				vendor=ibm
184750f2e948Smrg				;;
1848e8b4ed9fSmrg			*-ptx*)
184945bc899bSmrg				vendor=sequent
185045bc899bSmrg				;;
1851e8b4ed9fSmrg			*-tpf*)
185250f2e948Smrg				vendor=ibm
185350f2e948Smrg				;;
1854e8b4ed9fSmrg			*-vxsim* | *-vxworks* | *-windiss*)
185545bc899bSmrg				vendor=wrs
185645bc899bSmrg				;;
1857e8b4ed9fSmrg			*-aux*)
185845bc899bSmrg				vendor=apple
185945bc899bSmrg				;;
1860e8b4ed9fSmrg			*-hms*)
186145bc899bSmrg				vendor=hitachi
186245bc899bSmrg				;;
1863e8b4ed9fSmrg			*-mpw* | *-macos*)
186445bc899bSmrg				vendor=apple
186545bc899bSmrg				;;
1866e8b4ed9fSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
186745bc899bSmrg				vendor=atari
186845bc899bSmrg				;;
1869e8b4ed9fSmrg			*-vos*)
187045bc899bSmrg				vendor=stratus
187145bc899bSmrg				;;
187245bc899bSmrg		esac
187345bc899bSmrg		;;
187445bc899bSmrgesac
187545bc899bSmrg
1876e8b4ed9fSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
187750f2e948Smrgexit
187845bc899bSmrg
187945bc899bSmrg# Local variables:
1880a0c41156Smrg# eval: (add-hook 'before-save-hook 'time-stamp)
188145bc899bSmrg# time-stamp-start: "timestamp='"
188245bc899bSmrg# time-stamp-format: "%:y-%02m-%02d"
188345bc899bSmrg# time-stamp-end: "'"
188445bc899bSmrg# End:
1885