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