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