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