config.sub revision e39ce84c
19aa228fdSmrg#! /bin/sh
29aa228fdSmrg# Configuration validation subroutine script.
3e39ce84cSmrg#   Copyright 1992-2021 Free Software Foundation, Inc.
49aa228fdSmrg
5e39ce84cSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
6e39ce84cSmrg
7e39ce84cSmrgtimestamp='2021-08-14'
89aa228fdSmrg
90c7e83b2Smrg# This file is free software; you can redistribute it and/or modify it
100c7e83b2Smrg# under the terms of the GNU General Public License as published by
110c7e83b2Smrg# the Free Software Foundation; either version 3 of the License, or
129aa228fdSmrg# (at your option) any later version.
139aa228fdSmrg#
140c7e83b2Smrg# This program is distributed in the hope that it will be useful, but
150c7e83b2Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
160c7e83b2Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
170c7e83b2Smrg# General Public License for more details.
189aa228fdSmrg#
199aa228fdSmrg# You should have received a copy of the GNU General Public License
20e39ce84cSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
219aa228fdSmrg#
229aa228fdSmrg# As a special exception to the GNU General Public License, if you
239aa228fdSmrg# distribute this file as part of a program that contains a
249aa228fdSmrg# configuration script generated by Autoconf, you may include it under
250c7e83b2Smrg# the same distribution terms that you use for the rest of that
260c7e83b2Smrg# program.  This Exception is an additional permission under section 7
270c7e83b2Smrg# of the GNU General Public License, version 3 ("GPLv3").
289aa228fdSmrg
299aa228fdSmrg
300c7e83b2Smrg# Please send patches to <config-patches@gnu.org>.
319aa228fdSmrg#
329aa228fdSmrg# Configuration subroutine to validate and canonicalize a configuration type.
339aa228fdSmrg# Supply the specified configuration type as an argument.
349aa228fdSmrg# If it is invalid, we print an error message on stderr and exit with code 1.
359aa228fdSmrg# Otherwise, we print the canonical config type on stdout and succeed.
369aa228fdSmrg
378f65982aSmrg# You can get the latest version of this script from:
38e39ce84cSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
398f65982aSmrg
409aa228fdSmrg# This file is supposed to be the same for all GNU packages
419aa228fdSmrg# and recognize all the CPU types, system types and aliases
429aa228fdSmrg# that are meaningful with *any* GNU software.
439aa228fdSmrg# Each package is responsible for reporting which valid configurations
449aa228fdSmrg# it does not support.  The user should be able to distinguish
459aa228fdSmrg# a failure to support a valid configuration from a meaningless
469aa228fdSmrg# configuration.
479aa228fdSmrg
489aa228fdSmrg# The goal of this file is to map all the various variations of a given
499aa228fdSmrg# machine specification into a single specification in the form:
509aa228fdSmrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
519aa228fdSmrg# or in some cases, the newer four-part form:
529aa228fdSmrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
539aa228fdSmrg# It is wrong to echo any other type of specification.
549aa228fdSmrg
55e39ce84cSmrg# The "shellcheck disable" line above the timestamp inhibits complaints
56e39ce84cSmrg# about features and limitations of the classic Bourne shell that were
57e39ce84cSmrg# superseded or lifted in POSIX.  However, this script identifies a wide
58e39ce84cSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
59e39ce84cSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still
60e39ce84cSmrg# have a pre-POSIX /bin/sh.
61e39ce84cSmrg
629aa228fdSmrgme=`echo "$0" | sed -e 's,.*/,,'`
639aa228fdSmrg
649aa228fdSmrgusage="\
65e39ce84cSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
669aa228fdSmrg
679aa228fdSmrgCanonicalize a configuration name.
689aa228fdSmrg
69e39ce84cSmrgOptions:
709aa228fdSmrg  -h, --help         print this help, then exit
719aa228fdSmrg  -t, --time-stamp   print date of last modification, then exit
729aa228fdSmrg  -v, --version      print version number, then exit
739aa228fdSmrg
749aa228fdSmrgReport bugs and patches to <config-patches@gnu.org>."
759aa228fdSmrg
769aa228fdSmrgversion="\
779aa228fdSmrgGNU config.sub ($timestamp)
789aa228fdSmrg
79e39ce84cSmrgCopyright 1992-2021 Free Software Foundation, Inc.
809aa228fdSmrg
819aa228fdSmrgThis is free software; see the source for copying conditions.  There is NO
829aa228fdSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
839aa228fdSmrg
849aa228fdSmrghelp="
859aa228fdSmrgTry \`$me --help' for more information."
869aa228fdSmrg
879aa228fdSmrg# Parse command line
889aa228fdSmrgwhile test $# -gt 0 ; do
899aa228fdSmrg  case $1 in
909aa228fdSmrg    --time-stamp | --time* | -t )
919aa228fdSmrg       echo "$timestamp" ; exit ;;
929aa228fdSmrg    --version | -v )
939aa228fdSmrg       echo "$version" ; exit ;;
949aa228fdSmrg    --help | --h* | -h )
959aa228fdSmrg       echo "$usage"; exit ;;
969aa228fdSmrg    -- )     # Stop option processing
979aa228fdSmrg       shift; break ;;
989aa228fdSmrg    - )	# Use stdin as input.
999aa228fdSmrg       break ;;
1009aa228fdSmrg    -* )
101e39ce84cSmrg       echo "$me: invalid option $1$help" >&2
1029aa228fdSmrg       exit 1 ;;
1039aa228fdSmrg
1049aa228fdSmrg    *local*)
1059aa228fdSmrg       # First pass through any local machine types.
106e39ce84cSmrg       echo "$1"
1079aa228fdSmrg       exit ;;
1089aa228fdSmrg
1099aa228fdSmrg    * )
1109aa228fdSmrg       break ;;
1119aa228fdSmrg  esac
1129aa228fdSmrgdone
1139aa228fdSmrg
1149aa228fdSmrgcase $# in
1159aa228fdSmrg 0) echo "$me: missing argument$help" >&2
1169aa228fdSmrg    exit 1;;
1179aa228fdSmrg 1) ;;
1189aa228fdSmrg *) echo "$me: too many arguments$help" >&2
1199aa228fdSmrg    exit 1;;
1209aa228fdSmrgesac
1219aa228fdSmrg
122e39ce84cSmrg# Split fields of configuration type
123e39ce84cSmrg# shellcheck disable=SC2162
124e39ce84cSmrgsaved_IFS=$IFS
125e39ce84cSmrgIFS="-" read field1 field2 field3 field4 <<EOF
126e39ce84cSmrg$1
127e39ce84cSmrgEOF
128e39ce84cSmrgIFS=$saved_IFS
1299aa228fdSmrg
130e39ce84cSmrg# Separate into logical components for further validation
131e39ce84cSmrgcase $1 in
132e39ce84cSmrg	*-*-*-*-*)
133e39ce84cSmrg		echo Invalid configuration \`"$1"\': more than four components >&2
134e39ce84cSmrg		exit 1
1359aa228fdSmrg		;;
136e39ce84cSmrg	*-*-*-*)
137e39ce84cSmrg		basic_machine=$field1-$field2
138e39ce84cSmrg		basic_os=$field3-$field4
1399aa228fdSmrg		;;
140e39ce84cSmrg	*-*-*)
141e39ce84cSmrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
142e39ce84cSmrg		# parts
143e39ce84cSmrg		maybe_os=$field2-$field3
144e39ce84cSmrg		case $maybe_os in
145e39ce84cSmrg			nto-qnx* | linux-* | uclinux-uclibc* \
146e39ce84cSmrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
147e39ce84cSmrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
148e39ce84cSmrg			| storm-chaos* | os2-emx* | rtmk-nova*)
149e39ce84cSmrg				basic_machine=$field1
150e39ce84cSmrg				basic_os=$maybe_os
151e39ce84cSmrg				;;
152e39ce84cSmrg			android-linux)
153e39ce84cSmrg				basic_machine=$field1-unknown
154e39ce84cSmrg				basic_os=linux-android
155e39ce84cSmrg				;;
156e39ce84cSmrg			*)
157e39ce84cSmrg				basic_machine=$field1-$field2
158e39ce84cSmrg				basic_os=$field3
159e39ce84cSmrg				;;
160e39ce84cSmrg		esac
1619aa228fdSmrg		;;
162e39ce84cSmrg	*-*)
163e39ce84cSmrg		# A lone config we happen to match not fitting any pattern
164e39ce84cSmrg		case $field1-$field2 in
165e39ce84cSmrg			decstation-3100)
166e39ce84cSmrg				basic_machine=mips-dec
167e39ce84cSmrg				basic_os=
168e39ce84cSmrg				;;
169e39ce84cSmrg			*-*)
170e39ce84cSmrg				# Second component is usually, but not always the OS
171e39ce84cSmrg				case $field2 in
172e39ce84cSmrg					# Prevent following clause from handling this valid os
173e39ce84cSmrg					sun*os*)
174e39ce84cSmrg						basic_machine=$field1
175e39ce84cSmrg						basic_os=$field2
176e39ce84cSmrg						;;
177e39ce84cSmrg					zephyr*)
178e39ce84cSmrg						basic_machine=$field1-unknown
179e39ce84cSmrg						basic_os=$field2
180e39ce84cSmrg						;;
181e39ce84cSmrg					# Manufacturers
182e39ce84cSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
183e39ce84cSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
184e39ce84cSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
185e39ce84cSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
186e39ce84cSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
187e39ce84cSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
188e39ce84cSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
189e39ce84cSmrg					| microblaze* | sim | cisco \
190e39ce84cSmrg					| oki | wec | wrs | winbond)
191e39ce84cSmrg						basic_machine=$field1-$field2
192e39ce84cSmrg						basic_os=
193e39ce84cSmrg						;;
194e39ce84cSmrg					*)
195e39ce84cSmrg						basic_machine=$field1
196e39ce84cSmrg						basic_os=$field2
197e39ce84cSmrg						;;
198e39ce84cSmrg				esac
199e39ce84cSmrg			;;
200e39ce84cSmrg		esac
2019aa228fdSmrg		;;
202e39ce84cSmrg	*)
203e39ce84cSmrg		# Convert single-component short-hands not valid as part of
204e39ce84cSmrg		# multi-component configurations.
205e39ce84cSmrg		case $field1 in
206e39ce84cSmrg			386bsd)
207e39ce84cSmrg				basic_machine=i386-pc
208e39ce84cSmrg				basic_os=bsd
209e39ce84cSmrg				;;
210e39ce84cSmrg			a29khif)
211e39ce84cSmrg				basic_machine=a29k-amd
212e39ce84cSmrg				basic_os=udi
213e39ce84cSmrg				;;
214e39ce84cSmrg			adobe68k)
215e39ce84cSmrg				basic_machine=m68010-adobe
216e39ce84cSmrg				basic_os=scout
217e39ce84cSmrg				;;
218e39ce84cSmrg			alliant)
219e39ce84cSmrg				basic_machine=fx80-alliant
220e39ce84cSmrg				basic_os=
221e39ce84cSmrg				;;
222e39ce84cSmrg			altos | altos3068)
223e39ce84cSmrg				basic_machine=m68k-altos
224e39ce84cSmrg				basic_os=
225e39ce84cSmrg				;;
226e39ce84cSmrg			am29k)
227e39ce84cSmrg				basic_machine=a29k-none
228e39ce84cSmrg				basic_os=bsd
229e39ce84cSmrg				;;
230e39ce84cSmrg			amdahl)
231e39ce84cSmrg				basic_machine=580-amdahl
232e39ce84cSmrg				basic_os=sysv
233e39ce84cSmrg				;;
234e39ce84cSmrg			amiga)
235e39ce84cSmrg				basic_machine=m68k-unknown
236e39ce84cSmrg				basic_os=
237e39ce84cSmrg				;;
238e39ce84cSmrg			amigaos | amigados)
239e39ce84cSmrg				basic_machine=m68k-unknown
240e39ce84cSmrg				basic_os=amigaos
241e39ce84cSmrg				;;
242e39ce84cSmrg			amigaunix | amix)
243e39ce84cSmrg				basic_machine=m68k-unknown
244e39ce84cSmrg				basic_os=sysv4
245e39ce84cSmrg				;;
246e39ce84cSmrg			apollo68)
247e39ce84cSmrg				basic_machine=m68k-apollo
248e39ce84cSmrg				basic_os=sysv
249e39ce84cSmrg				;;
250e39ce84cSmrg			apollo68bsd)
251e39ce84cSmrg				basic_machine=m68k-apollo
252e39ce84cSmrg				basic_os=bsd
253e39ce84cSmrg				;;
254e39ce84cSmrg			aros)
255e39ce84cSmrg				basic_machine=i386-pc
256e39ce84cSmrg				basic_os=aros
257e39ce84cSmrg				;;
258e39ce84cSmrg			aux)
259e39ce84cSmrg				basic_machine=m68k-apple
260e39ce84cSmrg				basic_os=aux
261e39ce84cSmrg				;;
262e39ce84cSmrg			balance)
263e39ce84cSmrg				basic_machine=ns32k-sequent
264e39ce84cSmrg				basic_os=dynix
265e39ce84cSmrg				;;
266e39ce84cSmrg			blackfin)
267e39ce84cSmrg				basic_machine=bfin-unknown
268e39ce84cSmrg				basic_os=linux
269e39ce84cSmrg				;;
270e39ce84cSmrg			cegcc)
271e39ce84cSmrg				basic_machine=arm-unknown
272e39ce84cSmrg				basic_os=cegcc
273e39ce84cSmrg				;;
274e39ce84cSmrg			convex-c1)
275e39ce84cSmrg				basic_machine=c1-convex
276e39ce84cSmrg				basic_os=bsd
277e39ce84cSmrg				;;
278e39ce84cSmrg			convex-c2)
279e39ce84cSmrg				basic_machine=c2-convex
280e39ce84cSmrg				basic_os=bsd
281e39ce84cSmrg				;;
282e39ce84cSmrg			convex-c32)
283e39ce84cSmrg				basic_machine=c32-convex
284e39ce84cSmrg				basic_os=bsd
285e39ce84cSmrg				;;
286e39ce84cSmrg			convex-c34)
287e39ce84cSmrg				basic_machine=c34-convex
288e39ce84cSmrg				basic_os=bsd
289e39ce84cSmrg				;;
290e39ce84cSmrg			convex-c38)
291e39ce84cSmrg				basic_machine=c38-convex
292e39ce84cSmrg				basic_os=bsd
293e39ce84cSmrg				;;
294e39ce84cSmrg			cray)
295e39ce84cSmrg				basic_machine=j90-cray
296e39ce84cSmrg				basic_os=unicos
297e39ce84cSmrg				;;
298e39ce84cSmrg			crds | unos)
299e39ce84cSmrg				basic_machine=m68k-crds
300e39ce84cSmrg				basic_os=
301e39ce84cSmrg				;;
302e39ce84cSmrg			da30)
303e39ce84cSmrg				basic_machine=m68k-da30
304e39ce84cSmrg				basic_os=
305e39ce84cSmrg				;;
306e39ce84cSmrg			decstation | pmax | pmin | dec3100 | decstatn)
307e39ce84cSmrg				basic_machine=mips-dec
308e39ce84cSmrg				basic_os=
309e39ce84cSmrg				;;
310e39ce84cSmrg			delta88)
311e39ce84cSmrg				basic_machine=m88k-motorola
312e39ce84cSmrg				basic_os=sysv3
313e39ce84cSmrg				;;
314e39ce84cSmrg			dicos)
315e39ce84cSmrg				basic_machine=i686-pc
316e39ce84cSmrg				basic_os=dicos
317e39ce84cSmrg				;;
318e39ce84cSmrg			djgpp)
319e39ce84cSmrg				basic_machine=i586-pc
320e39ce84cSmrg				basic_os=msdosdjgpp
321e39ce84cSmrg				;;
322e39ce84cSmrg			ebmon29k)
323e39ce84cSmrg				basic_machine=a29k-amd
324e39ce84cSmrg				basic_os=ebmon
325e39ce84cSmrg				;;
326e39ce84cSmrg			es1800 | OSE68k | ose68k | ose | OSE)
327e39ce84cSmrg				basic_machine=m68k-ericsson
328e39ce84cSmrg				basic_os=ose
329e39ce84cSmrg				;;
330e39ce84cSmrg			gmicro)
331e39ce84cSmrg				basic_machine=tron-gmicro
332e39ce84cSmrg				basic_os=sysv
333e39ce84cSmrg				;;
334e39ce84cSmrg			go32)
335e39ce84cSmrg				basic_machine=i386-pc
336e39ce84cSmrg				basic_os=go32
337e39ce84cSmrg				;;
338e39ce84cSmrg			h8300hms)
339e39ce84cSmrg				basic_machine=h8300-hitachi
340e39ce84cSmrg				basic_os=hms
341e39ce84cSmrg				;;
342e39ce84cSmrg			h8300xray)
343e39ce84cSmrg				basic_machine=h8300-hitachi
344e39ce84cSmrg				basic_os=xray
345e39ce84cSmrg				;;
346e39ce84cSmrg			h8500hms)
347e39ce84cSmrg				basic_machine=h8500-hitachi
348e39ce84cSmrg				basic_os=hms
349e39ce84cSmrg				;;
350e39ce84cSmrg			harris)
351e39ce84cSmrg				basic_machine=m88k-harris
352e39ce84cSmrg				basic_os=sysv3
353e39ce84cSmrg				;;
354e39ce84cSmrg			hp300 | hp300hpux)
355e39ce84cSmrg				basic_machine=m68k-hp
356e39ce84cSmrg				basic_os=hpux
357e39ce84cSmrg				;;
358e39ce84cSmrg			hp300bsd)
359e39ce84cSmrg				basic_machine=m68k-hp
360e39ce84cSmrg				basic_os=bsd
361e39ce84cSmrg				;;
362e39ce84cSmrg			hppaosf)
363e39ce84cSmrg				basic_machine=hppa1.1-hp
364e39ce84cSmrg				basic_os=osf
365e39ce84cSmrg				;;
366e39ce84cSmrg			hppro)
367e39ce84cSmrg				basic_machine=hppa1.1-hp
368e39ce84cSmrg				basic_os=proelf
369e39ce84cSmrg				;;
370e39ce84cSmrg			i386mach)
371e39ce84cSmrg				basic_machine=i386-mach
372e39ce84cSmrg				basic_os=mach
373e39ce84cSmrg				;;
374e39ce84cSmrg			isi68 | isi)
375e39ce84cSmrg				basic_machine=m68k-isi
376e39ce84cSmrg				basic_os=sysv
377e39ce84cSmrg				;;
378e39ce84cSmrg			m68knommu)
379e39ce84cSmrg				basic_machine=m68k-unknown
380e39ce84cSmrg				basic_os=linux
381e39ce84cSmrg				;;
382e39ce84cSmrg			magnum | m3230)
383e39ce84cSmrg				basic_machine=mips-mips
384e39ce84cSmrg				basic_os=sysv
385e39ce84cSmrg				;;
386e39ce84cSmrg			merlin)
387e39ce84cSmrg				basic_machine=ns32k-utek
388e39ce84cSmrg				basic_os=sysv
389e39ce84cSmrg				;;
390e39ce84cSmrg			mingw64)
391e39ce84cSmrg				basic_machine=x86_64-pc
392e39ce84cSmrg				basic_os=mingw64
393e39ce84cSmrg				;;
394e39ce84cSmrg			mingw32)
395e39ce84cSmrg				basic_machine=i686-pc
396e39ce84cSmrg				basic_os=mingw32
397e39ce84cSmrg				;;
398e39ce84cSmrg			mingw32ce)
399e39ce84cSmrg				basic_machine=arm-unknown
400e39ce84cSmrg				basic_os=mingw32ce
401e39ce84cSmrg				;;
402e39ce84cSmrg			monitor)
403e39ce84cSmrg				basic_machine=m68k-rom68k
404e39ce84cSmrg				basic_os=coff
405e39ce84cSmrg				;;
406e39ce84cSmrg			morphos)
407e39ce84cSmrg				basic_machine=powerpc-unknown
408e39ce84cSmrg				basic_os=morphos
409e39ce84cSmrg				;;
410e39ce84cSmrg			moxiebox)
411e39ce84cSmrg				basic_machine=moxie-unknown
412e39ce84cSmrg				basic_os=moxiebox
413e39ce84cSmrg				;;
414e39ce84cSmrg			msdos)
415e39ce84cSmrg				basic_machine=i386-pc
416e39ce84cSmrg				basic_os=msdos
417e39ce84cSmrg				;;
418e39ce84cSmrg			msys)
419e39ce84cSmrg				basic_machine=i686-pc
420e39ce84cSmrg				basic_os=msys
421e39ce84cSmrg				;;
422e39ce84cSmrg			mvs)
423e39ce84cSmrg				basic_machine=i370-ibm
424e39ce84cSmrg				basic_os=mvs
425e39ce84cSmrg				;;
426e39ce84cSmrg			nacl)
427e39ce84cSmrg				basic_machine=le32-unknown
428e39ce84cSmrg				basic_os=nacl
429e39ce84cSmrg				;;
430e39ce84cSmrg			ncr3000)
431e39ce84cSmrg				basic_machine=i486-ncr
432e39ce84cSmrg				basic_os=sysv4
433e39ce84cSmrg				;;
434e39ce84cSmrg			netbsd386)
435e39ce84cSmrg				basic_machine=i386-pc
436e39ce84cSmrg				basic_os=netbsd
437e39ce84cSmrg				;;
438e39ce84cSmrg			netwinder)
439e39ce84cSmrg				basic_machine=armv4l-rebel
440e39ce84cSmrg				basic_os=linux
441e39ce84cSmrg				;;
442e39ce84cSmrg			news | news700 | news800 | news900)
443e39ce84cSmrg				basic_machine=m68k-sony
444e39ce84cSmrg				basic_os=newsos
445e39ce84cSmrg				;;
446e39ce84cSmrg			news1000)
447e39ce84cSmrg				basic_machine=m68030-sony
448e39ce84cSmrg				basic_os=newsos
449e39ce84cSmrg				;;
450e39ce84cSmrg			necv70)
451e39ce84cSmrg				basic_machine=v70-nec
452e39ce84cSmrg				basic_os=sysv
453e39ce84cSmrg				;;
454e39ce84cSmrg			nh3000)
455e39ce84cSmrg				basic_machine=m68k-harris
456e39ce84cSmrg				basic_os=cxux
457e39ce84cSmrg				;;
458e39ce84cSmrg			nh[45]000)
459e39ce84cSmrg				basic_machine=m88k-harris
460e39ce84cSmrg				basic_os=cxux
461e39ce84cSmrg				;;
462e39ce84cSmrg			nindy960)
463e39ce84cSmrg				basic_machine=i960-intel
464e39ce84cSmrg				basic_os=nindy
465e39ce84cSmrg				;;
466e39ce84cSmrg			mon960)
467e39ce84cSmrg				basic_machine=i960-intel
468e39ce84cSmrg				basic_os=mon960
469e39ce84cSmrg				;;
470e39ce84cSmrg			nonstopux)
471e39ce84cSmrg				basic_machine=mips-compaq
472e39ce84cSmrg				basic_os=nonstopux
473e39ce84cSmrg				;;
474e39ce84cSmrg			os400)
475e39ce84cSmrg				basic_machine=powerpc-ibm
476e39ce84cSmrg				basic_os=os400
477e39ce84cSmrg				;;
478e39ce84cSmrg			OSE68000 | ose68000)
479e39ce84cSmrg				basic_machine=m68000-ericsson
480e39ce84cSmrg				basic_os=ose
481e39ce84cSmrg				;;
482e39ce84cSmrg			os68k)
483e39ce84cSmrg				basic_machine=m68k-none
484e39ce84cSmrg				basic_os=os68k
485e39ce84cSmrg				;;
486e39ce84cSmrg			paragon)
487e39ce84cSmrg				basic_machine=i860-intel
488e39ce84cSmrg				basic_os=osf
489e39ce84cSmrg				;;
490e39ce84cSmrg			parisc)
491e39ce84cSmrg				basic_machine=hppa-unknown
492e39ce84cSmrg				basic_os=linux
493e39ce84cSmrg				;;
494e39ce84cSmrg			psp)
495e39ce84cSmrg				basic_machine=mipsallegrexel-sony
496e39ce84cSmrg				basic_os=psp
497e39ce84cSmrg				;;
498e39ce84cSmrg			pw32)
499e39ce84cSmrg				basic_machine=i586-unknown
500e39ce84cSmrg				basic_os=pw32
501e39ce84cSmrg				;;
502e39ce84cSmrg			rdos | rdos64)
503e39ce84cSmrg				basic_machine=x86_64-pc
504e39ce84cSmrg				basic_os=rdos
505e39ce84cSmrg				;;
506e39ce84cSmrg			rdos32)
507e39ce84cSmrg				basic_machine=i386-pc
508e39ce84cSmrg				basic_os=rdos
509e39ce84cSmrg				;;
510e39ce84cSmrg			rom68k)
511e39ce84cSmrg				basic_machine=m68k-rom68k
512e39ce84cSmrg				basic_os=coff
513e39ce84cSmrg				;;
514e39ce84cSmrg			sa29200)
515e39ce84cSmrg				basic_machine=a29k-amd
516e39ce84cSmrg				basic_os=udi
517e39ce84cSmrg				;;
518e39ce84cSmrg			sei)
519e39ce84cSmrg				basic_machine=mips-sei
520e39ce84cSmrg				basic_os=seiux
521e39ce84cSmrg				;;
522e39ce84cSmrg			sequent)
523e39ce84cSmrg				basic_machine=i386-sequent
524e39ce84cSmrg				basic_os=
525e39ce84cSmrg				;;
526e39ce84cSmrg			sps7)
527e39ce84cSmrg				basic_machine=m68k-bull
528e39ce84cSmrg				basic_os=sysv2
529e39ce84cSmrg				;;
530e39ce84cSmrg			st2000)
531e39ce84cSmrg				basic_machine=m68k-tandem
532e39ce84cSmrg				basic_os=
533e39ce84cSmrg				;;
534e39ce84cSmrg			stratus)
535e39ce84cSmrg				basic_machine=i860-stratus
536e39ce84cSmrg				basic_os=sysv4
537e39ce84cSmrg				;;
538e39ce84cSmrg			sun2)
539e39ce84cSmrg				basic_machine=m68000-sun
540e39ce84cSmrg				basic_os=
541e39ce84cSmrg				;;
542e39ce84cSmrg			sun2os3)
543e39ce84cSmrg				basic_machine=m68000-sun
544e39ce84cSmrg				basic_os=sunos3
545e39ce84cSmrg				;;
546e39ce84cSmrg			sun2os4)
547e39ce84cSmrg				basic_machine=m68000-sun
548e39ce84cSmrg				basic_os=sunos4
549e39ce84cSmrg				;;
550e39ce84cSmrg			sun3)
551e39ce84cSmrg				basic_machine=m68k-sun
552e39ce84cSmrg				basic_os=
553e39ce84cSmrg				;;
554e39ce84cSmrg			sun3os3)
555e39ce84cSmrg				basic_machine=m68k-sun
556e39ce84cSmrg				basic_os=sunos3
557e39ce84cSmrg				;;
558e39ce84cSmrg			sun3os4)
559e39ce84cSmrg				basic_machine=m68k-sun
560e39ce84cSmrg				basic_os=sunos4
561e39ce84cSmrg				;;
562e39ce84cSmrg			sun4)
563e39ce84cSmrg				basic_machine=sparc-sun
564e39ce84cSmrg				basic_os=
565e39ce84cSmrg				;;
566e39ce84cSmrg			sun4os3)
567e39ce84cSmrg				basic_machine=sparc-sun
568e39ce84cSmrg				basic_os=sunos3
569e39ce84cSmrg				;;
570e39ce84cSmrg			sun4os4)
571e39ce84cSmrg				basic_machine=sparc-sun
572e39ce84cSmrg				basic_os=sunos4
573e39ce84cSmrg				;;
574e39ce84cSmrg			sun4sol2)
575e39ce84cSmrg				basic_machine=sparc-sun
576e39ce84cSmrg				basic_os=solaris2
577e39ce84cSmrg				;;
578e39ce84cSmrg			sun386 | sun386i | roadrunner)
579e39ce84cSmrg				basic_machine=i386-sun
580e39ce84cSmrg				basic_os=
581e39ce84cSmrg				;;
582e39ce84cSmrg			sv1)
583e39ce84cSmrg				basic_machine=sv1-cray
584e39ce84cSmrg				basic_os=unicos
585e39ce84cSmrg				;;
586e39ce84cSmrg			symmetry)
587e39ce84cSmrg				basic_machine=i386-sequent
588e39ce84cSmrg				basic_os=dynix
589e39ce84cSmrg				;;
590e39ce84cSmrg			t3e)
591e39ce84cSmrg				basic_machine=alphaev5-cray
592e39ce84cSmrg				basic_os=unicos
593e39ce84cSmrg				;;
594e39ce84cSmrg			t90)
595e39ce84cSmrg				basic_machine=t90-cray
596e39ce84cSmrg				basic_os=unicos
597e39ce84cSmrg				;;
598e39ce84cSmrg			toad1)
599e39ce84cSmrg				basic_machine=pdp10-xkl
600e39ce84cSmrg				basic_os=tops20
601e39ce84cSmrg				;;
602e39ce84cSmrg			tpf)
603e39ce84cSmrg				basic_machine=s390x-ibm
604e39ce84cSmrg				basic_os=tpf
605e39ce84cSmrg				;;
606e39ce84cSmrg			udi29k)
607e39ce84cSmrg				basic_machine=a29k-amd
608e39ce84cSmrg				basic_os=udi
609e39ce84cSmrg				;;
610e39ce84cSmrg			ultra3)
611e39ce84cSmrg				basic_machine=a29k-nyu
612e39ce84cSmrg				basic_os=sym1
613e39ce84cSmrg				;;
614e39ce84cSmrg			v810 | necv810)
615e39ce84cSmrg				basic_machine=v810-nec
616e39ce84cSmrg				basic_os=none
617e39ce84cSmrg				;;
618e39ce84cSmrg			vaxv)
619e39ce84cSmrg				basic_machine=vax-dec
620e39ce84cSmrg				basic_os=sysv
621e39ce84cSmrg				;;
622e39ce84cSmrg			vms)
623e39ce84cSmrg				basic_machine=vax-dec
624e39ce84cSmrg				basic_os=vms
625e39ce84cSmrg				;;
626e39ce84cSmrg			vsta)
627e39ce84cSmrg				basic_machine=i386-pc
628e39ce84cSmrg				basic_os=vsta
629e39ce84cSmrg				;;
630e39ce84cSmrg			vxworks960)
631e39ce84cSmrg				basic_machine=i960-wrs
632e39ce84cSmrg				basic_os=vxworks
633e39ce84cSmrg				;;
634e39ce84cSmrg			vxworks68)
635e39ce84cSmrg				basic_machine=m68k-wrs
636e39ce84cSmrg				basic_os=vxworks
637e39ce84cSmrg				;;
638e39ce84cSmrg			vxworks29k)
639e39ce84cSmrg				basic_machine=a29k-wrs
640e39ce84cSmrg				basic_os=vxworks
641e39ce84cSmrg				;;
642e39ce84cSmrg			xbox)
643e39ce84cSmrg				basic_machine=i686-pc
644e39ce84cSmrg				basic_os=mingw32
645e39ce84cSmrg				;;
646e39ce84cSmrg			ymp)
647e39ce84cSmrg				basic_machine=ymp-cray
648e39ce84cSmrg				basic_os=unicos
649e39ce84cSmrg				;;
650e39ce84cSmrg			*)
651e39ce84cSmrg				basic_machine=$1
652e39ce84cSmrg				basic_os=
653e39ce84cSmrg				;;
654e39ce84cSmrg		esac
6559aa228fdSmrg		;;
6569aa228fdSmrgesac
6579aa228fdSmrg
658e39ce84cSmrg# Decode 1-component or ad-hoc basic machines
6599aa228fdSmrgcase $basic_machine in
660e39ce84cSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
661e39ce84cSmrg	# some cases the only manufacturer, in others, it is the most popular.
662e39ce84cSmrg	w89k)
663e39ce84cSmrg		cpu=hppa1.1
664e39ce84cSmrg		vendor=winbond
6650c7e83b2Smrg		;;
666e39ce84cSmrg	op50n)
667e39ce84cSmrg		cpu=hppa1.1
668e39ce84cSmrg		vendor=oki
6699aa228fdSmrg		;;
670e39ce84cSmrg	op60c)
671e39ce84cSmrg		cpu=hppa1.1
672e39ce84cSmrg		vendor=oki
6739aa228fdSmrg		;;
674e39ce84cSmrg	ibm*)
675e39ce84cSmrg		cpu=i370
676e39ce84cSmrg		vendor=ibm
6779aa228fdSmrg		;;
678e39ce84cSmrg	orion105)
679e39ce84cSmrg		cpu=clipper
680e39ce84cSmrg		vendor=highlevel
6810c7e83b2Smrg		;;
682e39ce84cSmrg	mac | mpw | mac-mpw)
683e39ce84cSmrg		cpu=m68k
684e39ce84cSmrg		vendor=apple
68580b026c6Smrg		;;
686e39ce84cSmrg	pmac | pmac-mpw)
687e39ce84cSmrg		cpu=powerpc
688e39ce84cSmrg		vendor=apple
68980b026c6Smrg		;;
69080b026c6Smrg
6919aa228fdSmrg	# Recognize the various machine names and aliases which stand
6929aa228fdSmrg	# for a CPU type and a company and sometimes even an OS.
6939aa228fdSmrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
694e39ce84cSmrg		cpu=m68000
695e39ce84cSmrg		vendor=att
6969aa228fdSmrg		;;
6979aa228fdSmrg	3b*)
698e39ce84cSmrg		cpu=we32k
699e39ce84cSmrg		vendor=att
7008f65982aSmrg		;;
7018f65982aSmrg	bluegene*)
702e39ce84cSmrg		cpu=powerpc
703e39ce84cSmrg		vendor=ibm
704e39ce84cSmrg		basic_os=cnk
7059aa228fdSmrg		;;
7069aa228fdSmrg	decsystem10* | dec10*)
707e39ce84cSmrg		cpu=pdp10
708e39ce84cSmrg		vendor=dec
709e39ce84cSmrg		basic_os=tops10
7109aa228fdSmrg		;;
7119aa228fdSmrg	decsystem20* | dec20*)
712e39ce84cSmrg		cpu=pdp10
713e39ce84cSmrg		vendor=dec
714e39ce84cSmrg		basic_os=tops20
7159aa228fdSmrg		;;
7169aa228fdSmrg	delta | 3300 | motorola-3300 | motorola-delta \
7179aa228fdSmrg	      | 3300-motorola | delta-motorola)
718e39ce84cSmrg		cpu=m68k
719e39ce84cSmrg		vendor=motorola
7209aa228fdSmrg		;;
721e39ce84cSmrg	dpx2*)
722e39ce84cSmrg		cpu=m68k
723e39ce84cSmrg		vendor=bull
724e39ce84cSmrg		basic_os=sysv3
7259aa228fdSmrg		;;
7269aa228fdSmrg	encore | umax | mmax)
727e39ce84cSmrg		cpu=ns32k
728e39ce84cSmrg		vendor=encore
7299aa228fdSmrg		;;
730e39ce84cSmrg	elxsi)
731e39ce84cSmrg		cpu=elxsi
732e39ce84cSmrg		vendor=elxsi
733e39ce84cSmrg		basic_os=${basic_os:-bsd}
7349aa228fdSmrg		;;
7359aa228fdSmrg	fx2800)
736e39ce84cSmrg		cpu=i860
737e39ce84cSmrg		vendor=alliant
7389aa228fdSmrg		;;
7399aa228fdSmrg	genix)
740e39ce84cSmrg		cpu=ns32k
741e39ce84cSmrg		vendor=ns
7429aa228fdSmrg		;;
7439aa228fdSmrg	h3050r* | hiux*)
744e39ce84cSmrg		cpu=hppa1.1
745e39ce84cSmrg		vendor=hitachi
746e39ce84cSmrg		basic_os=hiuxwe2
7479aa228fdSmrg		;;
7489aa228fdSmrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
749e39ce84cSmrg		cpu=hppa1.0
750e39ce84cSmrg		vendor=hp
7519aa228fdSmrg		;;
7529aa228fdSmrg	hp9k2[0-9][0-9] | hp9k31[0-9])
753e39ce84cSmrg		cpu=m68000
754e39ce84cSmrg		vendor=hp
7559aa228fdSmrg		;;
7569aa228fdSmrg	hp9k3[2-9][0-9])
757e39ce84cSmrg		cpu=m68k
758e39ce84cSmrg		vendor=hp
7599aa228fdSmrg		;;
7609aa228fdSmrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
761e39ce84cSmrg		cpu=hppa1.0
762e39ce84cSmrg		vendor=hp
7639aa228fdSmrg		;;
7649aa228fdSmrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
765e39ce84cSmrg		cpu=hppa1.1
766e39ce84cSmrg		vendor=hp
7679aa228fdSmrg		;;
7689aa228fdSmrg	hp9k78[0-9] | hp78[0-9])
7699aa228fdSmrg		# FIXME: really hppa2.0-hp
770e39ce84cSmrg		cpu=hppa1.1
771e39ce84cSmrg		vendor=hp
7729aa228fdSmrg		;;
7739aa228fdSmrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
7749aa228fdSmrg		# FIXME: really hppa2.0-hp
775e39ce84cSmrg		cpu=hppa1.1
776e39ce84cSmrg		vendor=hp
7779aa228fdSmrg		;;
7789aa228fdSmrg	hp9k8[0-9][13679] | hp8[0-9][13679])
779e39ce84cSmrg		cpu=hppa1.1
780e39ce84cSmrg		vendor=hp
7819aa228fdSmrg		;;
7829aa228fdSmrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
783e39ce84cSmrg		cpu=hppa1.0
784e39ce84cSmrg		vendor=hp
7859aa228fdSmrg		;;
7869aa228fdSmrg	i*86v32)
787e39ce84cSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
788e39ce84cSmrg		vendor=pc
789e39ce84cSmrg		basic_os=sysv32
7909aa228fdSmrg		;;
7919aa228fdSmrg	i*86v4*)
792e39ce84cSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
793e39ce84cSmrg		vendor=pc
794e39ce84cSmrg		basic_os=sysv4
7959aa228fdSmrg		;;
7969aa228fdSmrg	i*86v)
797e39ce84cSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
798e39ce84cSmrg		vendor=pc
799e39ce84cSmrg		basic_os=sysv
8009aa228fdSmrg		;;
8019aa228fdSmrg	i*86sol2)
802e39ce84cSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
803e39ce84cSmrg		vendor=pc
804e39ce84cSmrg		basic_os=solaris2
8059aa228fdSmrg		;;
806e39ce84cSmrg	j90 | j90-cray)
807e39ce84cSmrg		cpu=j90
808e39ce84cSmrg		vendor=cray
809e39ce84cSmrg		basic_os=${basic_os:-unicos}
8109aa228fdSmrg		;;
8119aa228fdSmrg	iris | iris4d)
812e39ce84cSmrg		cpu=mips
813e39ce84cSmrg		vendor=sgi
814e39ce84cSmrg		case $basic_os in
815e39ce84cSmrg		    irix*)
8169aa228fdSmrg			;;
8179aa228fdSmrg		    *)
818e39ce84cSmrg			basic_os=irix4
8199aa228fdSmrg			;;
8209aa228fdSmrg		esac
8219aa228fdSmrg		;;
8229aa228fdSmrg	miniframe)
823e39ce84cSmrg		cpu=m68000
824e39ce84cSmrg		vendor=convergent
82580b026c6Smrg		;;
826e39ce84cSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
827e39ce84cSmrg		cpu=m68k
828e39ce84cSmrg		vendor=atari
829e39ce84cSmrg		basic_os=mint
8309aa228fdSmrg		;;
8319aa228fdSmrg	news-3600 | risc-news)
832e39ce84cSmrg		cpu=mips
833e39ce84cSmrg		vendor=sony
834e39ce84cSmrg		basic_os=newsos
835e39ce84cSmrg		;;
836e39ce84cSmrg	next | m*-next)
837e39ce84cSmrg		cpu=m68k
838e39ce84cSmrg		vendor=next
839e39ce84cSmrg		case $basic_os in
840e39ce84cSmrg		    openstep*)
841e39ce84cSmrg		        ;;
842e39ce84cSmrg		    nextstep*)
8439aa228fdSmrg			;;
844e39ce84cSmrg		    ns2*)
845e39ce84cSmrg		      basic_os=nextstep2
8469aa228fdSmrg			;;
8479aa228fdSmrg		    *)
848e39ce84cSmrg		      basic_os=nextstep3
8499aa228fdSmrg			;;
8509aa228fdSmrg		esac
8519aa228fdSmrg		;;
8529aa228fdSmrg	np1)
853e39ce84cSmrg		cpu=np1
854e39ce84cSmrg		vendor=gould
8559aa228fdSmrg		;;
8569aa228fdSmrg	op50n-* | op60c-*)
857e39ce84cSmrg		cpu=hppa1.1
858e39ce84cSmrg		vendor=oki
859e39ce84cSmrg		basic_os=proelf
8609aa228fdSmrg		;;
8619aa228fdSmrg	pa-hitachi)
862e39ce84cSmrg		cpu=hppa1.1
863e39ce84cSmrg		vendor=hitachi
864e39ce84cSmrg		basic_os=hiuxwe2
8658f65982aSmrg		;;
8669aa228fdSmrg	pbd)
867e39ce84cSmrg		cpu=sparc
868e39ce84cSmrg		vendor=tti
8699aa228fdSmrg		;;
8709aa228fdSmrg	pbb)
871e39ce84cSmrg		cpu=m68k
872e39ce84cSmrg		vendor=tti
8739aa228fdSmrg		;;
874e39ce84cSmrg	pc532)
875e39ce84cSmrg		cpu=ns32k
876e39ce84cSmrg		vendor=pc532
8779aa228fdSmrg		;;
8789aa228fdSmrg	pn)
879e39ce84cSmrg		cpu=pn
880e39ce84cSmrg		vendor=gould
8819aa228fdSmrg		;;
882e39ce84cSmrg	power)
883e39ce84cSmrg		cpu=power
884e39ce84cSmrg		vendor=ibm
8859aa228fdSmrg		;;
8869aa228fdSmrg	ps2)
887e39ce84cSmrg		cpu=i386
888e39ce84cSmrg		vendor=ibm
8899aa228fdSmrg		;;
8909aa228fdSmrg	rm[46]00)
891e39ce84cSmrg		cpu=mips
892e39ce84cSmrg		vendor=siemens
8939aa228fdSmrg		;;
8949aa228fdSmrg	rtpc | rtpc-*)
895e39ce84cSmrg		cpu=romp
896e39ce84cSmrg		vendor=ibm
8979aa228fdSmrg		;;
898e39ce84cSmrg	sde)
899e39ce84cSmrg		cpu=mipsisa32
900e39ce84cSmrg		vendor=sde
901e39ce84cSmrg		basic_os=${basic_os:-elf}
9029aa228fdSmrg		;;
903e39ce84cSmrg	simso-wrs)
904e39ce84cSmrg		cpu=sparclite
905e39ce84cSmrg		vendor=wrs
906e39ce84cSmrg		basic_os=vxworks
9079aa228fdSmrg		;;
908e39ce84cSmrg	tower | tower-32)
909e39ce84cSmrg		cpu=m68k
910e39ce84cSmrg		vendor=ncr
9119aa228fdSmrg		;;
912e39ce84cSmrg	vpp*|vx|vx-*)
913e39ce84cSmrg		cpu=f301
914e39ce84cSmrg		vendor=fujitsu
9159aa228fdSmrg		;;
916e39ce84cSmrg	w65)
917e39ce84cSmrg		cpu=w65
918e39ce84cSmrg		vendor=wdc
9199aa228fdSmrg		;;
920e39ce84cSmrg	w89k-*)
921e39ce84cSmrg		cpu=hppa1.1
922e39ce84cSmrg		vendor=winbond
923e39ce84cSmrg		basic_os=proelf
9249aa228fdSmrg		;;
925e39ce84cSmrg	none)
926e39ce84cSmrg		cpu=none
927e39ce84cSmrg		vendor=none
9288f65982aSmrg		;;
929e39ce84cSmrg	leon|leon[3-9])
930e39ce84cSmrg		cpu=sparc
931e39ce84cSmrg		vendor=$basic_machine
9329aa228fdSmrg		;;
933e39ce84cSmrg	leon-*|leon[3-9]-*)
934e39ce84cSmrg		cpu=sparc
935e39ce84cSmrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
9369aa228fdSmrg		;;
937e39ce84cSmrg
938e39ce84cSmrg	*-*)
939e39ce84cSmrg		# shellcheck disable=SC2162
940e39ce84cSmrg		saved_IFS=$IFS
941e39ce84cSmrg		IFS="-" read cpu vendor <<EOF
942e39ce84cSmrg$basic_machine
943e39ce84cSmrgEOF
944e39ce84cSmrg		IFS=$saved_IFS
9459aa228fdSmrg		;;
946e39ce84cSmrg	# We use `pc' rather than `unknown'
947e39ce84cSmrg	# because (1) that's what they normally are, and
948e39ce84cSmrg	# (2) the word "unknown" tends to confuse beginning users.
949e39ce84cSmrg	i*86 | x86_64)
950e39ce84cSmrg		cpu=$basic_machine
951e39ce84cSmrg		vendor=pc
9529aa228fdSmrg		;;
953e39ce84cSmrg	# These rules are duplicated from below for sake of the special case above;
954e39ce84cSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
955e39ce84cSmrg	pc98)
956e39ce84cSmrg		cpu=i386
957e39ce84cSmrg		vendor=pc
9589aa228fdSmrg		;;
959e39ce84cSmrg	x64 | amd64)
960e39ce84cSmrg		cpu=x86_64
961e39ce84cSmrg		vendor=pc
9629aa228fdSmrg		;;
963e39ce84cSmrg	# Recognize the basic CPU types without company name.
964e39ce84cSmrg	*)
965e39ce84cSmrg		cpu=$basic_machine
966e39ce84cSmrg		vendor=unknown
96780b026c6Smrg		;;
968e39ce84cSmrgesac
969e39ce84cSmrg
970e39ce84cSmrgunset -v basic_machine
971e39ce84cSmrg
972e39ce84cSmrg# Decode basic machines in the full and proper CPU-Company form.
973e39ce84cSmrgcase $cpu-$vendor in
974e39ce84cSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
975e39ce84cSmrg	# some cases the only manufacturer, in others, it is the most popular.
976e39ce84cSmrg	craynv-unknown)
977e39ce84cSmrg		vendor=cray
978e39ce84cSmrg		basic_os=${basic_os:-unicosmp}
9799aa228fdSmrg		;;
980e39ce84cSmrg	c90-unknown | c90-cray)
981e39ce84cSmrg		vendor=cray
982e39ce84cSmrg		basic_os=${Basic_os:-unicos}
9839aa228fdSmrg		;;
984e39ce84cSmrg	fx80-unknown)
985e39ce84cSmrg		vendor=alliant
9869aa228fdSmrg		;;
987e39ce84cSmrg	romp-unknown)
988e39ce84cSmrg		vendor=ibm
9899aa228fdSmrg		;;
990e39ce84cSmrg	mmix-unknown)
991e39ce84cSmrg		vendor=knuth
9929aa228fdSmrg		;;
993e39ce84cSmrg	microblaze-unknown | microblazeel-unknown)
994e39ce84cSmrg		vendor=xilinx
9959aa228fdSmrg		;;
996e39ce84cSmrg	rs6000-unknown)
997e39ce84cSmrg		vendor=ibm
9989aa228fdSmrg		;;
999e39ce84cSmrg	vax-unknown)
1000e39ce84cSmrg		vendor=dec
10019aa228fdSmrg		;;
1002e39ce84cSmrg	pdp11-unknown)
1003e39ce84cSmrg		vendor=dec
10049aa228fdSmrg		;;
1005e39ce84cSmrg	we32k-unknown)
1006e39ce84cSmrg		vendor=att
10079aa228fdSmrg		;;
1008e39ce84cSmrg	cydra-unknown)
1009e39ce84cSmrg		vendor=cydrome
10109aa228fdSmrg		;;
1011e39ce84cSmrg	i370-ibm*)
1012e39ce84cSmrg		vendor=ibm
10139aa228fdSmrg		;;
1014e39ce84cSmrg	orion-unknown)
1015e39ce84cSmrg		vendor=highlevel
10169aa228fdSmrg		;;
1017e39ce84cSmrg	xps-unknown | xps100-unknown)
1018e39ce84cSmrg		cpu=xps100
1019e39ce84cSmrg		vendor=honeywell
10209aa228fdSmrg		;;
1021e39ce84cSmrg
1022e39ce84cSmrg	# Here we normalize CPU types with a missing or matching vendor
1023e39ce84cSmrg	dpx20-unknown | dpx20-bull)
1024e39ce84cSmrg		cpu=rs6000
1025e39ce84cSmrg		vendor=bull
1026e39ce84cSmrg		basic_os=${basic_os:-bosx}
10279aa228fdSmrg		;;
1028e39ce84cSmrg
1029e39ce84cSmrg	# Here we normalize CPU types irrespective of the vendor
1030e39ce84cSmrg	amd64-*)
1031e39ce84cSmrg		cpu=x86_64
10329aa228fdSmrg		;;
1033e39ce84cSmrg	blackfin-*)
1034e39ce84cSmrg		cpu=bfin
1035e39ce84cSmrg		basic_os=linux
10369aa228fdSmrg		;;
1037e39ce84cSmrg	c54x-*)
1038e39ce84cSmrg		cpu=tic54x
10399aa228fdSmrg		;;
1040e39ce84cSmrg	c55x-*)
1041e39ce84cSmrg		cpu=tic55x
10429aa228fdSmrg		;;
1043e39ce84cSmrg	c6x-*)
1044e39ce84cSmrg		cpu=tic6x
10459aa228fdSmrg		;;
1046e39ce84cSmrg	e500v[12]-*)
1047e39ce84cSmrg		cpu=powerpc
1048e39ce84cSmrg		basic_os=${basic_os}"spe"
10499aa228fdSmrg		;;
1050e39ce84cSmrg	mips3*-*)
1051e39ce84cSmrg		cpu=mips64
10529aa228fdSmrg		;;
1053e39ce84cSmrg	ms1-*)
1054e39ce84cSmrg		cpu=mt
10559aa228fdSmrg		;;
1056e39ce84cSmrg	m68knommu-*)
1057e39ce84cSmrg		cpu=m68k
1058e39ce84cSmrg		basic_os=linux
10599aa228fdSmrg		;;
1060e39ce84cSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
1061e39ce84cSmrg		cpu=s12z
10629aa228fdSmrg		;;
1063e39ce84cSmrg	openrisc-*)
1064e39ce84cSmrg		cpu=or32
10659aa228fdSmrg		;;
1066e39ce84cSmrg	parisc-*)
1067e39ce84cSmrg		cpu=hppa
1068e39ce84cSmrg		basic_os=linux
10699aa228fdSmrg		;;
1070e39ce84cSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
1071e39ce84cSmrg		cpu=i586
10729aa228fdSmrg		;;
1073e39ce84cSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
1074e39ce84cSmrg		cpu=i686
10759aa228fdSmrg		;;
1076e39ce84cSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
1077e39ce84cSmrg		cpu=i686
10789aa228fdSmrg		;;
1079e39ce84cSmrg	pentium4-*)
1080e39ce84cSmrg		cpu=i786
10819aa228fdSmrg		;;
1082e39ce84cSmrg	pc98-*)
1083e39ce84cSmrg		cpu=i386
10849aa228fdSmrg		;;
1085e39ce84cSmrg	ppc-* | ppcbe-*)
1086e39ce84cSmrg		cpu=powerpc
10879aa228fdSmrg		;;
1088e39ce84cSmrg	ppcle-* | powerpclittle-*)
1089e39ce84cSmrg		cpu=powerpcle
10909aa228fdSmrg		;;
1091e39ce84cSmrg	ppc64-*)
1092e39ce84cSmrg		cpu=powerpc64
109380b026c6Smrg		;;
1094e39ce84cSmrg	ppc64le-* | powerpc64little-*)
1095e39ce84cSmrg		cpu=powerpc64le
10969aa228fdSmrg		;;
1097e39ce84cSmrg	sb1-*)
1098e39ce84cSmrg		cpu=mipsisa64sb1
10999aa228fdSmrg		;;
1100e39ce84cSmrg	sb1el-*)
1101e39ce84cSmrg		cpu=mipsisa64sb1el
11028f65982aSmrg		;;
1103e39ce84cSmrg	sh5e[lb]-*)
1104e39ce84cSmrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
11059aa228fdSmrg		;;
1106e39ce84cSmrg	spur-*)
1107e39ce84cSmrg		cpu=spur
11089aa228fdSmrg		;;
1109e39ce84cSmrg	strongarm-* | thumb-*)
1110e39ce84cSmrg		cpu=arm
11119aa228fdSmrg		;;
1112e39ce84cSmrg	tx39-*)
1113e39ce84cSmrg		cpu=mipstx39
11149aa228fdSmrg		;;
1115e39ce84cSmrg	tx39el-*)
1116e39ce84cSmrg		cpu=mipstx39el
11179aa228fdSmrg		;;
1118e39ce84cSmrg	x64-*)
1119e39ce84cSmrg		cpu=x86_64
11209aa228fdSmrg		;;
1121e39ce84cSmrg	xscale-* | xscalee[bl]-*)
1122e39ce84cSmrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
11239aa228fdSmrg		;;
1124e39ce84cSmrg	arm64-*)
1125e39ce84cSmrg		cpu=aarch64
11269aa228fdSmrg		;;
1127e39ce84cSmrg
1128e39ce84cSmrg	# Recognize the canonical CPU Types that limit and/or modify the
1129e39ce84cSmrg	# company names they are paired with.
1130e39ce84cSmrg	cr16-*)
1131e39ce84cSmrg		basic_os=${basic_os:-elf}
11329aa228fdSmrg		;;
1133e39ce84cSmrg	crisv32-* | etraxfs*-*)
1134e39ce84cSmrg		cpu=crisv32
1135e39ce84cSmrg		vendor=axis
11369aa228fdSmrg		;;
1137e39ce84cSmrg	cris-* | etrax*-*)
1138e39ce84cSmrg		cpu=cris
1139e39ce84cSmrg		vendor=axis
11409aa228fdSmrg		;;
1141e39ce84cSmrg	crx-*)
1142e39ce84cSmrg		basic_os=${basic_os:-elf}
11439aa228fdSmrg		;;
1144e39ce84cSmrg	neo-tandem)
1145e39ce84cSmrg		cpu=neo
1146e39ce84cSmrg		vendor=tandem
11479aa228fdSmrg		;;
1148e39ce84cSmrg	nse-tandem)
1149e39ce84cSmrg		cpu=nse
1150e39ce84cSmrg		vendor=tandem
11519aa228fdSmrg		;;
1152e39ce84cSmrg	nsr-tandem)
1153e39ce84cSmrg		cpu=nsr
1154e39ce84cSmrg		vendor=tandem
11559aa228fdSmrg		;;
1156e39ce84cSmrg	nsv-tandem)
1157e39ce84cSmrg		cpu=nsv
1158e39ce84cSmrg		vendor=tandem
11599aa228fdSmrg		;;
1160e39ce84cSmrg	nsx-tandem)
1161e39ce84cSmrg		cpu=nsx
1162e39ce84cSmrg		vendor=tandem
11639aa228fdSmrg		;;
1164e39ce84cSmrg	mipsallegrexel-sony)
1165e39ce84cSmrg		cpu=mipsallegrexel
1166e39ce84cSmrg		vendor=sony
11679aa228fdSmrg		;;
1168e39ce84cSmrg	tile*-*)
1169e39ce84cSmrg		basic_os=${basic_os:-linux-gnu}
11709aa228fdSmrg		;;
1171e39ce84cSmrg
11729aa228fdSmrg	*)
1173e39ce84cSmrg		# Recognize the canonical CPU types that are allowed with any
1174e39ce84cSmrg		# company name.
1175e39ce84cSmrg		case $cpu in
1176e39ce84cSmrg			1750a | 580 \
1177e39ce84cSmrg			| a29k \
1178e39ce84cSmrg			| aarch64 | aarch64_be \
1179e39ce84cSmrg			| abacus \
1180e39ce84cSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
1181e39ce84cSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
1182e39ce84cSmrg			| alphapca5[67] | alpha64pca5[67] \
1183e39ce84cSmrg			| am33_2.0 \
1184e39ce84cSmrg			| amdgcn \
1185e39ce84cSmrg			| arc | arceb | arc32 | arc64 \
1186e39ce84cSmrg			| arm | arm[lb]e | arme[lb] | armv* \
1187e39ce84cSmrg			| avr | avr32 \
1188e39ce84cSmrg			| asmjs \
1189e39ce84cSmrg			| ba \
1190e39ce84cSmrg			| be32 | be64 \
1191e39ce84cSmrg			| bfin | bpf | bs2000 \
1192e39ce84cSmrg			| c[123]* | c30 | [cjt]90 | c4x \
1193e39ce84cSmrg			| c8051 | clipper | craynv | csky | cydra \
1194e39ce84cSmrg			| d10v | d30v | dlx | dsp16xx \
1195e39ce84cSmrg			| e2k | elxsi | epiphany \
1196e39ce84cSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
1197e39ce84cSmrg			| h8300 | h8500 \
1198e39ce84cSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
1199e39ce84cSmrg			| hexagon \
1200e39ce84cSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
1201e39ce84cSmrg			| ip2k | iq2000 \
1202e39ce84cSmrg			| k1om \
1203e39ce84cSmrg			| le32 | le64 \
1204e39ce84cSmrg			| lm32 \
1205e39ce84cSmrg			| loongarch32 | loongarch64 | loongarchx32 \
1206e39ce84cSmrg			| m32c | m32r | m32rle \
1207e39ce84cSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
1208e39ce84cSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
1209e39ce84cSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
1210e39ce84cSmrg			| microblaze | microblazeel \
1211e39ce84cSmrg			| mips | mipsbe | mipseb | mipsel | mipsle \
1212e39ce84cSmrg			| mips16 \
1213e39ce84cSmrg			| mips64 | mips64eb | mips64el \
1214e39ce84cSmrg			| mips64octeon | mips64octeonel \
1215e39ce84cSmrg			| mips64orion | mips64orionel \
1216e39ce84cSmrg			| mips64r5900 | mips64r5900el \
1217e39ce84cSmrg			| mips64vr | mips64vrel \
1218e39ce84cSmrg			| mips64vr4100 | mips64vr4100el \
1219e39ce84cSmrg			| mips64vr4300 | mips64vr4300el \
1220e39ce84cSmrg			| mips64vr5000 | mips64vr5000el \
1221e39ce84cSmrg			| mips64vr5900 | mips64vr5900el \
1222e39ce84cSmrg			| mipsisa32 | mipsisa32el \
1223e39ce84cSmrg			| mipsisa32r2 | mipsisa32r2el \
1224e39ce84cSmrg			| mipsisa32r3 | mipsisa32r3el \
1225e39ce84cSmrg			| mipsisa32r5 | mipsisa32r5el \
1226e39ce84cSmrg			| mipsisa32r6 | mipsisa32r6el \
1227e39ce84cSmrg			| mipsisa64 | mipsisa64el \
1228e39ce84cSmrg			| mipsisa64r2 | mipsisa64r2el \
1229e39ce84cSmrg			| mipsisa64r3 | mipsisa64r3el \
1230e39ce84cSmrg			| mipsisa64r5 | mipsisa64r5el \
1231e39ce84cSmrg			| mipsisa64r6 | mipsisa64r6el \
1232e39ce84cSmrg			| mipsisa64sb1 | mipsisa64sb1el \
1233e39ce84cSmrg			| mipsisa64sr71k | mipsisa64sr71kel \
1234e39ce84cSmrg			| mipsr5900 | mipsr5900el \
1235e39ce84cSmrg			| mipstx39 | mipstx39el \
1236e39ce84cSmrg			| mmix \
1237e39ce84cSmrg			| mn10200 | mn10300 \
1238e39ce84cSmrg			| moxie \
1239e39ce84cSmrg			| mt \
1240e39ce84cSmrg			| msp430 \
1241e39ce84cSmrg			| nds32 | nds32le | nds32be \
1242e39ce84cSmrg			| nfp \
1243e39ce84cSmrg			| nios | nios2 | nios2eb | nios2el \
1244e39ce84cSmrg			| none | np1 | ns16k | ns32k | nvptx \
1245e39ce84cSmrg			| open8 \
1246e39ce84cSmrg			| or1k* \
1247e39ce84cSmrg			| or32 \
1248e39ce84cSmrg			| orion \
1249e39ce84cSmrg			| picochip \
1250e39ce84cSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
1251e39ce84cSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
1252e39ce84cSmrg			| pru \
1253e39ce84cSmrg			| pyramid \
1254e39ce84cSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
1255e39ce84cSmrg			| rl78 | romp | rs6000 | rx \
1256e39ce84cSmrg			| s390 | s390x \
1257e39ce84cSmrg			| score \
1258e39ce84cSmrg			| sh | shl \
1259e39ce84cSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
1260e39ce84cSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
1261e39ce84cSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
1262e39ce84cSmrg			| sparclite \
1263e39ce84cSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
1264e39ce84cSmrg			| spu \
1265e39ce84cSmrg			| tahoe \
1266e39ce84cSmrg			| thumbv7* \
1267e39ce84cSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
1268e39ce84cSmrg			| tron \
1269e39ce84cSmrg			| ubicom32 \
1270e39ce84cSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
1271e39ce84cSmrg			| vax \
1272e39ce84cSmrg			| visium \
1273e39ce84cSmrg			| w65 \
1274e39ce84cSmrg			| wasm32 | wasm64 \
1275e39ce84cSmrg			| we32k \
1276e39ce84cSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
1277e39ce84cSmrg			| xstormy16 | xtensa* \
1278e39ce84cSmrg			| ymp \
1279e39ce84cSmrg			| z8k | z80)
1280e39ce84cSmrg				;;
1281e39ce84cSmrg
1282e39ce84cSmrg			*)
1283e39ce84cSmrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
1284e39ce84cSmrg				exit 1
1285e39ce84cSmrg				;;
1286e39ce84cSmrg		esac
12879aa228fdSmrg		;;
12889aa228fdSmrgesac
12899aa228fdSmrg
12909aa228fdSmrg# Here we canonicalize certain aliases for manufacturers.
1291e39ce84cSmrgcase $vendor in
1292e39ce84cSmrg	digital*)
1293e39ce84cSmrg		vendor=dec
12949aa228fdSmrg		;;
1295e39ce84cSmrg	commodore*)
1296e39ce84cSmrg		vendor=cbm
12979aa228fdSmrg		;;
12989aa228fdSmrg	*)
12999aa228fdSmrg		;;
13009aa228fdSmrgesac
13019aa228fdSmrg
13029aa228fdSmrg# Decode manufacturer-specific aliases for certain operating systems.
13039aa228fdSmrg
1304e39ce84cSmrgif test x$basic_os != x
13059aa228fdSmrgthen
1306e39ce84cSmrg
1307e39ce84cSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
1308e39ce84cSmrg# set os.
1309e39ce84cSmrgcase $basic_os in
1310e39ce84cSmrg	gnu/linux*)
1311e39ce84cSmrg		kernel=linux
1312e39ce84cSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
1313e39ce84cSmrg		;;
1314e39ce84cSmrg	os2-emx)
1315e39ce84cSmrg		kernel=os2
1316e39ce84cSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
1317e39ce84cSmrg		;;
1318e39ce84cSmrg	nto-qnx*)
1319e39ce84cSmrg		kernel=nto
1320e39ce84cSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
1321e39ce84cSmrg		;;
1322e39ce84cSmrg	*-*)
1323e39ce84cSmrg		# shellcheck disable=SC2162
1324e39ce84cSmrg		saved_IFS=$IFS
1325e39ce84cSmrg		IFS="-" read kernel os <<EOF
1326e39ce84cSmrg$basic_os
1327e39ce84cSmrgEOF
1328e39ce84cSmrg		IFS=$saved_IFS
1329e39ce84cSmrg		;;
1330e39ce84cSmrg	# Default OS when just kernel was specified
1331e39ce84cSmrg	nto*)
1332e39ce84cSmrg		kernel=nto
1333e39ce84cSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
1334e39ce84cSmrg		;;
1335e39ce84cSmrg	linux*)
1336e39ce84cSmrg		kernel=linux
1337e39ce84cSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
1338e39ce84cSmrg		;;
1339e39ce84cSmrg	*)
1340e39ce84cSmrg		kernel=
1341e39ce84cSmrg		os=$basic_os
1342e39ce84cSmrg		;;
1343e39ce84cSmrgesac
1344e39ce84cSmrg
1345e39ce84cSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
1346e39ce84cSmrg# etc.)
13479aa228fdSmrgcase $os in
1348e39ce84cSmrg	# First match some system type aliases that might get confused
1349e39ce84cSmrg	# with valid system types.
1350e39ce84cSmrg	# solaris* is a basic system type, with this one exception.
1351e39ce84cSmrg	auroraux)
1352e39ce84cSmrg		os=auroraux
13538f65982aSmrg		;;
1354e39ce84cSmrg	bluegene*)
1355e39ce84cSmrg		os=cnk
13569aa228fdSmrg		;;
1357e39ce84cSmrg	solaris1 | solaris1.*)
1358e39ce84cSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
13599aa228fdSmrg		;;
1360e39ce84cSmrg	solaris)
1361e39ce84cSmrg		os=solaris2
13629aa228fdSmrg		;;
1363e39ce84cSmrg	unixware*)
1364e39ce84cSmrg		os=sysv4.2uw
13659aa228fdSmrg		;;
1366e39ce84cSmrg	# es1800 is here to avoid being matched by es* (a different OS)
1367e39ce84cSmrg	es1800*)
1368e39ce84cSmrg		os=ose
13699aa228fdSmrg		;;
1370e39ce84cSmrg	# Some version numbers need modification
1371e39ce84cSmrg	chorusos*)
1372e39ce84cSmrg		os=chorusos
13739aa228fdSmrg		;;
1374e39ce84cSmrg	isc)
1375e39ce84cSmrg		os=isc2.2
13769aa228fdSmrg		;;
1377e39ce84cSmrg	sco6)
1378e39ce84cSmrg		os=sco5v6
13799aa228fdSmrg		;;
1380e39ce84cSmrg	sco5)
1381e39ce84cSmrg		os=sco3.2v5
13829aa228fdSmrg		;;
1383e39ce84cSmrg	sco4)
1384e39ce84cSmrg		os=sco3.2v4
13859aa228fdSmrg		;;
1386e39ce84cSmrg	sco3.2.[4-9]*)
1387e39ce84cSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
13889aa228fdSmrg		;;
1389e39ce84cSmrg	sco*v* | scout)
1390e39ce84cSmrg		# Don't match below
13919aa228fdSmrg		;;
1392e39ce84cSmrg	sco*)
1393e39ce84cSmrg		os=sco3.2v2
13949aa228fdSmrg		;;
1395e39ce84cSmrg	psos*)
1396e39ce84cSmrg		os=psos
13979aa228fdSmrg		;;
1398e39ce84cSmrg	qnx*)
1399e39ce84cSmrg		os=qnx
14009aa228fdSmrg		;;
1401e39ce84cSmrg	hiux*)
1402e39ce84cSmrg		os=hiuxwe2
14039aa228fdSmrg		;;
1404e39ce84cSmrg	lynx*178)
1405e39ce84cSmrg		os=lynxos178
14069aa228fdSmrg		;;
1407e39ce84cSmrg	lynx*5)
1408e39ce84cSmrg		os=lynxos5
14099aa228fdSmrg		;;
1410e39ce84cSmrg	lynxos*)
1411e39ce84cSmrg		# don't get caught up in next wildcard
14129aa228fdSmrg		;;
1413e39ce84cSmrg	lynx*)
1414e39ce84cSmrg		os=lynxos
14159aa228fdSmrg		;;
1416e39ce84cSmrg	mac[0-9]*)
1417e39ce84cSmrg		os=`echo "$os" | sed -e 's|mac|macos|'`
14189aa228fdSmrg		;;
1419e39ce84cSmrg	opened*)
1420e39ce84cSmrg		os=openedition
14219aa228fdSmrg		;;
1422e39ce84cSmrg	os400*)
1423e39ce84cSmrg		os=os400
14249aa228fdSmrg		;;
1425e39ce84cSmrg	sunos5*)
1426e39ce84cSmrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
14279aa228fdSmrg		;;
1428e39ce84cSmrg	sunos6*)
1429e39ce84cSmrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
14309aa228fdSmrg		;;
1431e39ce84cSmrg	wince*)
1432e39ce84cSmrg		os=wince
14339aa228fdSmrg		;;
1434e39ce84cSmrg	utek*)
1435e39ce84cSmrg		os=bsd
14369aa228fdSmrg		;;
1437e39ce84cSmrg	dynix*)
1438e39ce84cSmrg		os=bsd
14399aa228fdSmrg		;;
1440e39ce84cSmrg	acis*)
1441e39ce84cSmrg		os=aos
14429aa228fdSmrg		;;
1443e39ce84cSmrg	atheos*)
1444e39ce84cSmrg		os=atheos
14459aa228fdSmrg		;;
1446e39ce84cSmrg	syllable*)
1447e39ce84cSmrg		os=syllable
14489aa228fdSmrg		;;
1449e39ce84cSmrg	386bsd)
1450e39ce84cSmrg		os=bsd
14519aa228fdSmrg		;;
1452e39ce84cSmrg	ctix* | uts*)
1453e39ce84cSmrg		os=sysv
14549aa228fdSmrg		;;
1455e39ce84cSmrg	nova*)
1456e39ce84cSmrg		os=rtmk-nova
14579aa228fdSmrg		;;
1458e39ce84cSmrg	ns2)
1459e39ce84cSmrg		os=nextstep2
14609aa228fdSmrg		;;
1461e39ce84cSmrg	# Preserve the version number of sinix5.
1462e39ce84cSmrg	sinix5.*)
1463e39ce84cSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
14649aa228fdSmrg		;;
1465e39ce84cSmrg	sinix*)
1466e39ce84cSmrg		os=sysv4
14679aa228fdSmrg		;;
1468e39ce84cSmrg	tpf*)
1469e39ce84cSmrg		os=tpf
14709aa228fdSmrg		;;
1471e39ce84cSmrg	triton*)
1472e39ce84cSmrg		os=sysv3
14739aa228fdSmrg		;;
1474e39ce84cSmrg	oss*)
1475e39ce84cSmrg		os=sysv3
14769aa228fdSmrg		;;
1477e39ce84cSmrg	svr4*)
1478e39ce84cSmrg		os=sysv4
14799aa228fdSmrg		;;
1480e39ce84cSmrg	svr3)
1481e39ce84cSmrg		os=sysv3
14829aa228fdSmrg		;;
1483e39ce84cSmrg	sysvr4)
1484e39ce84cSmrg		os=sysv4
14859aa228fdSmrg		;;
1486e39ce84cSmrg	ose*)
1487e39ce84cSmrg		os=ose
14889aa228fdSmrg		;;
1489e39ce84cSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
1490e39ce84cSmrg		os=mint
14918f65982aSmrg		;;
1492e39ce84cSmrg	dicos*)
1493e39ce84cSmrg		os=dicos
149480b026c6Smrg		;;
1495e39ce84cSmrg	pikeos*)
1496e39ce84cSmrg		# Until real need of OS specific support for
1497e39ce84cSmrg		# particular features comes up, bare metal
1498e39ce84cSmrg		# configurations are quite functional.
1499e39ce84cSmrg		case $cpu in
1500e39ce84cSmrg		    arm*)
1501e39ce84cSmrg			os=eabi
1502e39ce84cSmrg			;;
1503e39ce84cSmrg		    *)
1504e39ce84cSmrg			os=elf
1505e39ce84cSmrg			;;
1506e39ce84cSmrg		esac
15079aa228fdSmrg		;;
15089aa228fdSmrg	*)
1509e39ce84cSmrg		# No normalization, but not necessarily accepted, that comes below.
15109aa228fdSmrg		;;
15119aa228fdSmrgesac
1512e39ce84cSmrg
15139aa228fdSmrgelse
15149aa228fdSmrg
15159aa228fdSmrg# Here we handle the default operating systems that come with various machines.
15169aa228fdSmrg# The value should be what the vendor currently ships out the door with their
15179aa228fdSmrg# machine or put another way, the most popular os provided with the machine.
15189aa228fdSmrg
15199aa228fdSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
15209aa228fdSmrg# "-sun"), then you have to tell the case statement up towards the top
15219aa228fdSmrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
15229aa228fdSmrg# will signal an error saying that MANUFACTURER isn't an operating
15239aa228fdSmrg# system, and we'll never get to this point.
15249aa228fdSmrg
1525e39ce84cSmrgkernel=
1526e39ce84cSmrgcase $cpu-$vendor in
152780b026c6Smrg	score-*)
1528e39ce84cSmrg		os=elf
15299aa228fdSmrg		;;
153080b026c6Smrg	spu-*)
1531e39ce84cSmrg		os=elf
15329aa228fdSmrg		;;
15339aa228fdSmrg	*-acorn)
1534e39ce84cSmrg		os=riscix1.2
15359aa228fdSmrg		;;
15369aa228fdSmrg	arm*-rebel)
1537e39ce84cSmrg		kernel=linux
1538e39ce84cSmrg		os=gnu
15399aa228fdSmrg		;;
15409aa228fdSmrg	arm*-semi)
1541e39ce84cSmrg		os=aout
15429aa228fdSmrg		;;
154380b026c6Smrg	c4x-* | tic4x-*)
1544e39ce84cSmrg		os=coff
15459aa228fdSmrg		;;
15460c7e83b2Smrg	c8051-*)
1547e39ce84cSmrg		os=elf
1548e39ce84cSmrg		;;
1549e39ce84cSmrg	clipper-intergraph)
1550e39ce84cSmrg		os=clix
15510c7e83b2Smrg		;;
15520c7e83b2Smrg	hexagon-*)
1553e39ce84cSmrg		os=elf
15540c7e83b2Smrg		;;
15558f65982aSmrg	tic54x-*)
1556e39ce84cSmrg		os=coff
15578f65982aSmrg		;;
15588f65982aSmrg	tic55x-*)
1559e39ce84cSmrg		os=coff
15608f65982aSmrg		;;
15618f65982aSmrg	tic6x-*)
1562e39ce84cSmrg		os=coff
15638f65982aSmrg		;;
15649aa228fdSmrg	# This must come before the *-dec entry.
15659aa228fdSmrg	pdp10-*)
1566e39ce84cSmrg		os=tops20
15679aa228fdSmrg		;;
15689aa228fdSmrg	pdp11-*)
1569e39ce84cSmrg		os=none
15709aa228fdSmrg		;;
15719aa228fdSmrg	*-dec | vax-*)
1572e39ce84cSmrg		os=ultrix4.2
15739aa228fdSmrg		;;
15749aa228fdSmrg	m68*-apollo)
1575e39ce84cSmrg		os=domain
15769aa228fdSmrg		;;
15779aa228fdSmrg	i386-sun)
1578e39ce84cSmrg		os=sunos4.0.2
15799aa228fdSmrg		;;
15809aa228fdSmrg	m68000-sun)
1581e39ce84cSmrg		os=sunos3
15829aa228fdSmrg		;;
15839aa228fdSmrg	m68*-cisco)
1584e39ce84cSmrg		os=aout
15859aa228fdSmrg		;;
158680b026c6Smrg	mep-*)
1587e39ce84cSmrg		os=elf
15888f65982aSmrg		;;
15899aa228fdSmrg	mips*-cisco)
1590e39ce84cSmrg		os=elf
15919aa228fdSmrg		;;
15929aa228fdSmrg	mips*-*)
1593e39ce84cSmrg		os=elf
15949aa228fdSmrg		;;
15959aa228fdSmrg	or32-*)
1596e39ce84cSmrg		os=coff
15979aa228fdSmrg		;;
15989aa228fdSmrg	*-tti)	# must be before sparc entry or we get the wrong os.
1599e39ce84cSmrg		os=sysv3
16009aa228fdSmrg		;;
16019aa228fdSmrg	sparc-* | *-sun)
1602e39ce84cSmrg		os=sunos4.1.1
16039aa228fdSmrg		;;
1604e39ce84cSmrg	pru-*)
1605e39ce84cSmrg		os=elf
16069aa228fdSmrg		;;
1607e39ce84cSmrg	*-be)
1608e39ce84cSmrg		os=beos
16099aa228fdSmrg		;;
16109aa228fdSmrg	*-ibm)
1611e39ce84cSmrg		os=aix
16129aa228fdSmrg		;;
161380b026c6Smrg	*-knuth)
1614e39ce84cSmrg		os=mmixware
16159aa228fdSmrg		;;
16169aa228fdSmrg	*-wec)
1617e39ce84cSmrg		os=proelf
16189aa228fdSmrg		;;
16199aa228fdSmrg	*-winbond)
1620e39ce84cSmrg		os=proelf
16219aa228fdSmrg		;;
16229aa228fdSmrg	*-oki)
1623e39ce84cSmrg		os=proelf
16249aa228fdSmrg		;;
16259aa228fdSmrg	*-hp)
1626e39ce84cSmrg		os=hpux
16279aa228fdSmrg		;;
16289aa228fdSmrg	*-hitachi)
1629e39ce84cSmrg		os=hiux
16309aa228fdSmrg		;;
16319aa228fdSmrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
1632e39ce84cSmrg		os=sysv
16339aa228fdSmrg		;;
16349aa228fdSmrg	*-cbm)
1635e39ce84cSmrg		os=amigaos
16369aa228fdSmrg		;;
16379aa228fdSmrg	*-dg)
1638e39ce84cSmrg		os=dgux
16399aa228fdSmrg		;;
16409aa228fdSmrg	*-dolphin)
1641e39ce84cSmrg		os=sysv3
16429aa228fdSmrg		;;
16439aa228fdSmrg	m68k-ccur)
1644e39ce84cSmrg		os=rtu
16459aa228fdSmrg		;;
16469aa228fdSmrg	m88k-omron*)
1647e39ce84cSmrg		os=luna
16489aa228fdSmrg		;;
1649e39ce84cSmrg	*-next)
1650e39ce84cSmrg		os=nextstep
16519aa228fdSmrg		;;
16529aa228fdSmrg	*-sequent)
1653e39ce84cSmrg		os=ptx
16549aa228fdSmrg		;;
16559aa228fdSmrg	*-crds)
1656e39ce84cSmrg		os=unos
16579aa228fdSmrg		;;
16589aa228fdSmrg	*-ns)
1659e39ce84cSmrg		os=genix
16609aa228fdSmrg		;;
16619aa228fdSmrg	i370-*)
1662e39ce84cSmrg		os=mvs
16639aa228fdSmrg		;;
16649aa228fdSmrg	*-gould)
1665e39ce84cSmrg		os=sysv
16669aa228fdSmrg		;;
16679aa228fdSmrg	*-highlevel)
1668e39ce84cSmrg		os=bsd
16699aa228fdSmrg		;;
16709aa228fdSmrg	*-encore)
1671e39ce84cSmrg		os=bsd
16729aa228fdSmrg		;;
16739aa228fdSmrg	*-sgi)
1674e39ce84cSmrg		os=irix
16759aa228fdSmrg		;;
16769aa228fdSmrg	*-siemens)
1677e39ce84cSmrg		os=sysv4
16789aa228fdSmrg		;;
16799aa228fdSmrg	*-masscomp)
1680e39ce84cSmrg		os=rtu
16819aa228fdSmrg		;;
16829aa228fdSmrg	f30[01]-fujitsu | f700-fujitsu)
1683e39ce84cSmrg		os=uxpv
16849aa228fdSmrg		;;
16859aa228fdSmrg	*-rom68k)
1686e39ce84cSmrg		os=coff
16879aa228fdSmrg		;;
16889aa228fdSmrg	*-*bug)
1689e39ce84cSmrg		os=coff
16909aa228fdSmrg		;;
16919aa228fdSmrg	*-apple)
1692e39ce84cSmrg		os=macos
16939aa228fdSmrg		;;
16949aa228fdSmrg	*-atari*)
1695e39ce84cSmrg		os=mint
1696e39ce84cSmrg		;;
1697e39ce84cSmrg	*-wrs)
1698e39ce84cSmrg		os=vxworks
16999aa228fdSmrg		;;
17009aa228fdSmrg	*)
1701e39ce84cSmrg		os=none
17029aa228fdSmrg		;;
17039aa228fdSmrgesac
1704e39ce84cSmrg
17059aa228fdSmrgfi
17069aa228fdSmrg
1707e39ce84cSmrg# Now, validate our (potentially fixed-up) OS.
1708e39ce84cSmrgcase $os in
1709e39ce84cSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
1710e39ce84cSmrg	musl* | newlib* | relibc* | uclibc*)
1711e39ce84cSmrg		;;
1712e39ce84cSmrg	# Likewise for "kernel-abi"
1713e39ce84cSmrg	eabi* | gnueabi*)
1714e39ce84cSmrg		;;
1715e39ce84cSmrg	# VxWorks passes extra cpu info in the 4th filed.
1716e39ce84cSmrg	simlinux | simwindows | spe)
1717e39ce84cSmrg		;;
1718e39ce84cSmrg	# Now accept the basic system types.
1719e39ce84cSmrg	# The portable systems comes first.
1720e39ce84cSmrg	# Each alternative MUST end in a * to match a version number.
1721e39ce84cSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
1722e39ce84cSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
1723e39ce84cSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
1724e39ce84cSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
1725e39ce84cSmrg	     | hiux* | abug | nacl* | netware* | windows* \
1726e39ce84cSmrg	     | os9* | macos* | osx* | ios* \
1727e39ce84cSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
1728e39ce84cSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
1729e39ce84cSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
1730e39ce84cSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
1731e39ce84cSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
1732e39ce84cSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
1733e39ce84cSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
1734e39ce84cSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
1735e39ce84cSmrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
1736e39ce84cSmrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
1737e39ce84cSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
1738e39ce84cSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
1739e39ce84cSmrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
1740e39ce84cSmrg	     | midipix* | mingw32* | mingw64* | mint* \
1741e39ce84cSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
1742e39ce84cSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
1743e39ce84cSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
1744e39ce84cSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
1745e39ce84cSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
1746e39ce84cSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
1747e39ce84cSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
1748e39ce84cSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
1749e39ce84cSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
1750e39ce84cSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
1751e39ce84cSmrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*)
1752e39ce84cSmrg		;;
1753e39ce84cSmrg	# This one is extra strict with allowed versions
1754e39ce84cSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
1755e39ce84cSmrg		# Don't forget version if it is 3.2v4 or newer.
1756e39ce84cSmrg		;;
1757e39ce84cSmrg	none)
1758e39ce84cSmrg		;;
1759e39ce84cSmrg	*)
1760e39ce84cSmrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
1761e39ce84cSmrg		exit 1
1762e39ce84cSmrg		;;
1763e39ce84cSmrgesac
1764e39ce84cSmrg
1765e39ce84cSmrg# As a final step for OS-related things, validate the OS-kernel combination
1766e39ce84cSmrg# (given a valid OS), if there is a kernel.
1767e39ce84cSmrgcase $kernel-$os in
1768e39ce84cSmrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
1769e39ce84cSmrg		   | linux-musl* | linux-relibc* | linux-uclibc* )
1770e39ce84cSmrg		;;
1771e39ce84cSmrg	uclinux-uclibc* )
1772e39ce84cSmrg		;;
1773e39ce84cSmrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
1774e39ce84cSmrg		# These are just libc implementations, not actual OSes, and thus
1775e39ce84cSmrg		# require a kernel.
1776e39ce84cSmrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
1777e39ce84cSmrg		exit 1
1778e39ce84cSmrg		;;
1779e39ce84cSmrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
1780e39ce84cSmrg		;;
1781e39ce84cSmrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
1782e39ce84cSmrg		;;
1783e39ce84cSmrg	nto-qnx*)
1784e39ce84cSmrg		;;
1785e39ce84cSmrg	os2-emx)
1786e39ce84cSmrg		;;
1787e39ce84cSmrg	*-eabi* | *-gnueabi*)
1788e39ce84cSmrg		;;
1789e39ce84cSmrg	-*)
1790e39ce84cSmrg		# Blank kernel with real OS is always fine.
1791e39ce84cSmrg		;;
1792e39ce84cSmrg	*-*)
1793e39ce84cSmrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
1794e39ce84cSmrg		exit 1
1795e39ce84cSmrg		;;
1796e39ce84cSmrgesac
1797e39ce84cSmrg
17989aa228fdSmrg# Here we handle the case where we know the os, and the CPU type, but not the
17999aa228fdSmrg# manufacturer.  We pick the logical manufacturer.
1800e39ce84cSmrgcase $vendor in
1801e39ce84cSmrg	unknown)
1802e39ce84cSmrg		case $cpu-$os in
1803e39ce84cSmrg			*-riscix*)
18049aa228fdSmrg				vendor=acorn
18059aa228fdSmrg				;;
1806e39ce84cSmrg			*-sunos*)
18079aa228fdSmrg				vendor=sun
18089aa228fdSmrg				;;
1809e39ce84cSmrg			*-cnk* | *-aix*)
18109aa228fdSmrg				vendor=ibm
18119aa228fdSmrg				;;
1812e39ce84cSmrg			*-beos*)
18139aa228fdSmrg				vendor=be
18149aa228fdSmrg				;;
1815e39ce84cSmrg			*-hpux*)
18169aa228fdSmrg				vendor=hp
18179aa228fdSmrg				;;
1818e39ce84cSmrg			*-mpeix*)
18199aa228fdSmrg				vendor=hp
18209aa228fdSmrg				;;
1821e39ce84cSmrg			*-hiux*)
18229aa228fdSmrg				vendor=hitachi
18239aa228fdSmrg				;;
1824e39ce84cSmrg			*-unos*)
18259aa228fdSmrg				vendor=crds
18269aa228fdSmrg				;;
1827e39ce84cSmrg			*-dgux*)
18289aa228fdSmrg				vendor=dg
18299aa228fdSmrg				;;
1830e39ce84cSmrg			*-luna*)
18319aa228fdSmrg				vendor=omron
18329aa228fdSmrg				;;
1833e39ce84cSmrg			*-genix*)
18349aa228fdSmrg				vendor=ns
18359aa228fdSmrg				;;
1836e39ce84cSmrg			*-clix*)
1837e39ce84cSmrg				vendor=intergraph
1838e39ce84cSmrg				;;
1839e39ce84cSmrg			*-mvs* | *-opened*)
1840e39ce84cSmrg				vendor=ibm
1841e39ce84cSmrg				;;
1842e39ce84cSmrg			*-os400*)
18439aa228fdSmrg				vendor=ibm
18449aa228fdSmrg				;;
1845e39ce84cSmrg			s390-* | s390x-*)
18469aa228fdSmrg				vendor=ibm
18479aa228fdSmrg				;;
1848e39ce84cSmrg			*-ptx*)
18499aa228fdSmrg				vendor=sequent
18509aa228fdSmrg				;;
1851e39ce84cSmrg			*-tpf*)
18529aa228fdSmrg				vendor=ibm
18539aa228fdSmrg				;;
1854e39ce84cSmrg			*-vxsim* | *-vxworks* | *-windiss*)
18559aa228fdSmrg				vendor=wrs
18569aa228fdSmrg				;;
1857e39ce84cSmrg			*-aux*)
18589aa228fdSmrg				vendor=apple
18599aa228fdSmrg				;;
1860e39ce84cSmrg			*-hms*)
18619aa228fdSmrg				vendor=hitachi
18629aa228fdSmrg				;;
1863e39ce84cSmrg			*-mpw* | *-macos*)
18649aa228fdSmrg				vendor=apple
18659aa228fdSmrg				;;
1866e39ce84cSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
18679aa228fdSmrg				vendor=atari
18689aa228fdSmrg				;;
1869e39ce84cSmrg			*-vos*)
18709aa228fdSmrg				vendor=stratus
18719aa228fdSmrg				;;
18729aa228fdSmrg		esac
18739aa228fdSmrg		;;
18749aa228fdSmrgesac
18759aa228fdSmrg
1876e39ce84cSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
18779aa228fdSmrgexit
18789aa228fdSmrg
18799aa228fdSmrg# Local variables:
1880e39ce84cSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
18819aa228fdSmrg# time-stamp-start: "timestamp='"
18829aa228fdSmrg# time-stamp-format: "%:y-%02m-%02d"
18839aa228fdSmrg# time-stamp-end: "'"
18849aa228fdSmrg# End:
1885