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