config.sub revision 46374b8d
19aa228fdSmrg#! /bin/sh
29aa228fdSmrg# Configuration validation subroutine script.
346374b8dSmrg#   Copyright 1992-2024 Free Software Foundation, Inc.
49aa228fdSmrg
5e39ce84cSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
6e39ce84cSmrg
746374b8dSmrgtimestamp='2024-01-01'
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
1146374b8dSmrg# 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
7946374b8dSmrgCopyright 1992-2024 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="
8546374b8dSmrgTry '$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	*-*-*-*-*)
13346374b8dSmrg		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* \
14846374b8dSmrg			| storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \
14946374b8dSmrg			| windows-* )
150e39ce84cSmrg				basic_machine=$field1
151e39ce84cSmrg				basic_os=$maybe_os
152e39ce84cSmrg				;;
153e39ce84cSmrg			android-linux)
154e39ce84cSmrg				basic_machine=$field1-unknown
155e39ce84cSmrg				basic_os=linux-android
156e39ce84cSmrg				;;
157e39ce84cSmrg			*)
158e39ce84cSmrg				basic_machine=$field1-$field2
159e39ce84cSmrg				basic_os=$field3
160e39ce84cSmrg				;;
161e39ce84cSmrg		esac
1629aa228fdSmrg		;;
163e39ce84cSmrg	*-*)
164e39ce84cSmrg		# A lone config we happen to match not fitting any pattern
165e39ce84cSmrg		case $field1-$field2 in
166e39ce84cSmrg			decstation-3100)
167e39ce84cSmrg				basic_machine=mips-dec
168e39ce84cSmrg				basic_os=
169e39ce84cSmrg				;;
170e39ce84cSmrg			*-*)
171e39ce84cSmrg				# Second component is usually, but not always the OS
172e39ce84cSmrg				case $field2 in
173e39ce84cSmrg					# Prevent following clause from handling this valid os
174e39ce84cSmrg					sun*os*)
175e39ce84cSmrg						basic_machine=$field1
176e39ce84cSmrg						basic_os=$field2
177e39ce84cSmrg						;;
178e39ce84cSmrg					zephyr*)
179e39ce84cSmrg						basic_machine=$field1-unknown
180e39ce84cSmrg						basic_os=$field2
181e39ce84cSmrg						;;
182e39ce84cSmrg					# Manufacturers
183e39ce84cSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
184e39ce84cSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
185e39ce84cSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
186e39ce84cSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
187e39ce84cSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
188e39ce84cSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
189e39ce84cSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
190e39ce84cSmrg					| microblaze* | sim | cisco \
191e39ce84cSmrg					| oki | wec | wrs | winbond)
192e39ce84cSmrg						basic_machine=$field1-$field2
193e39ce84cSmrg						basic_os=
194e39ce84cSmrg						;;
195e39ce84cSmrg					*)
196e39ce84cSmrg						basic_machine=$field1
197e39ce84cSmrg						basic_os=$field2
198e39ce84cSmrg						;;
199e39ce84cSmrg				esac
200e39ce84cSmrg			;;
201e39ce84cSmrg		esac
2029aa228fdSmrg		;;
203e39ce84cSmrg	*)
204e39ce84cSmrg		# Convert single-component short-hands not valid as part of
205e39ce84cSmrg		# multi-component configurations.
206e39ce84cSmrg		case $field1 in
207e39ce84cSmrg			386bsd)
208e39ce84cSmrg				basic_machine=i386-pc
209e39ce84cSmrg				basic_os=bsd
210e39ce84cSmrg				;;
211e39ce84cSmrg			a29khif)
212e39ce84cSmrg				basic_machine=a29k-amd
213e39ce84cSmrg				basic_os=udi
214e39ce84cSmrg				;;
215e39ce84cSmrg			adobe68k)
216e39ce84cSmrg				basic_machine=m68010-adobe
217e39ce84cSmrg				basic_os=scout
218e39ce84cSmrg				;;
219e39ce84cSmrg			alliant)
220e39ce84cSmrg				basic_machine=fx80-alliant
221e39ce84cSmrg				basic_os=
222e39ce84cSmrg				;;
223e39ce84cSmrg			altos | altos3068)
224e39ce84cSmrg				basic_machine=m68k-altos
225e39ce84cSmrg				basic_os=
226e39ce84cSmrg				;;
227e39ce84cSmrg			am29k)
228e39ce84cSmrg				basic_machine=a29k-none
229e39ce84cSmrg				basic_os=bsd
230e39ce84cSmrg				;;
231e39ce84cSmrg			amdahl)
232e39ce84cSmrg				basic_machine=580-amdahl
233e39ce84cSmrg				basic_os=sysv
234e39ce84cSmrg				;;
235e39ce84cSmrg			amiga)
236e39ce84cSmrg				basic_machine=m68k-unknown
237e39ce84cSmrg				basic_os=
238e39ce84cSmrg				;;
239e39ce84cSmrg			amigaos | amigados)
240e39ce84cSmrg				basic_machine=m68k-unknown
241e39ce84cSmrg				basic_os=amigaos
242e39ce84cSmrg				;;
243e39ce84cSmrg			amigaunix | amix)
244e39ce84cSmrg				basic_machine=m68k-unknown
245e39ce84cSmrg				basic_os=sysv4
246e39ce84cSmrg				;;
247e39ce84cSmrg			apollo68)
248e39ce84cSmrg				basic_machine=m68k-apollo
249e39ce84cSmrg				basic_os=sysv
250e39ce84cSmrg				;;
251e39ce84cSmrg			apollo68bsd)
252e39ce84cSmrg				basic_machine=m68k-apollo
253e39ce84cSmrg				basic_os=bsd
254e39ce84cSmrg				;;
255e39ce84cSmrg			aros)
256e39ce84cSmrg				basic_machine=i386-pc
257e39ce84cSmrg				basic_os=aros
258e39ce84cSmrg				;;
259e39ce84cSmrg			aux)
260e39ce84cSmrg				basic_machine=m68k-apple
261e39ce84cSmrg				basic_os=aux
262e39ce84cSmrg				;;
263e39ce84cSmrg			balance)
264e39ce84cSmrg				basic_machine=ns32k-sequent
265e39ce84cSmrg				basic_os=dynix
266e39ce84cSmrg				;;
267e39ce84cSmrg			blackfin)
268e39ce84cSmrg				basic_machine=bfin-unknown
269e39ce84cSmrg				basic_os=linux
270e39ce84cSmrg				;;
271e39ce84cSmrg			cegcc)
272e39ce84cSmrg				basic_machine=arm-unknown
273e39ce84cSmrg				basic_os=cegcc
274e39ce84cSmrg				;;
275e39ce84cSmrg			convex-c1)
276e39ce84cSmrg				basic_machine=c1-convex
277e39ce84cSmrg				basic_os=bsd
278e39ce84cSmrg				;;
279e39ce84cSmrg			convex-c2)
280e39ce84cSmrg				basic_machine=c2-convex
281e39ce84cSmrg				basic_os=bsd
282e39ce84cSmrg				;;
283e39ce84cSmrg			convex-c32)
284e39ce84cSmrg				basic_machine=c32-convex
285e39ce84cSmrg				basic_os=bsd
286e39ce84cSmrg				;;
287e39ce84cSmrg			convex-c34)
288e39ce84cSmrg				basic_machine=c34-convex
289e39ce84cSmrg				basic_os=bsd
290e39ce84cSmrg				;;
291e39ce84cSmrg			convex-c38)
292e39ce84cSmrg				basic_machine=c38-convex
293e39ce84cSmrg				basic_os=bsd
294e39ce84cSmrg				;;
295e39ce84cSmrg			cray)
296e39ce84cSmrg				basic_machine=j90-cray
297e39ce84cSmrg				basic_os=unicos
298e39ce84cSmrg				;;
299e39ce84cSmrg			crds | unos)
300e39ce84cSmrg				basic_machine=m68k-crds
301e39ce84cSmrg				basic_os=
302e39ce84cSmrg				;;
303e39ce84cSmrg			da30)
304e39ce84cSmrg				basic_machine=m68k-da30
305e39ce84cSmrg				basic_os=
306e39ce84cSmrg				;;
307e39ce84cSmrg			decstation | pmax | pmin | dec3100 | decstatn)
308e39ce84cSmrg				basic_machine=mips-dec
309e39ce84cSmrg				basic_os=
310e39ce84cSmrg				;;
311e39ce84cSmrg			delta88)
312e39ce84cSmrg				basic_machine=m88k-motorola
313e39ce84cSmrg				basic_os=sysv3
314e39ce84cSmrg				;;
315e39ce84cSmrg			dicos)
316e39ce84cSmrg				basic_machine=i686-pc
317e39ce84cSmrg				basic_os=dicos
318e39ce84cSmrg				;;
319e39ce84cSmrg			djgpp)
320e39ce84cSmrg				basic_machine=i586-pc
321e39ce84cSmrg				basic_os=msdosdjgpp
322e39ce84cSmrg				;;
323e39ce84cSmrg			ebmon29k)
324e39ce84cSmrg				basic_machine=a29k-amd
325e39ce84cSmrg				basic_os=ebmon
326e39ce84cSmrg				;;
327e39ce84cSmrg			es1800 | OSE68k | ose68k | ose | OSE)
328e39ce84cSmrg				basic_machine=m68k-ericsson
329e39ce84cSmrg				basic_os=ose
330e39ce84cSmrg				;;
331e39ce84cSmrg			gmicro)
332e39ce84cSmrg				basic_machine=tron-gmicro
333e39ce84cSmrg				basic_os=sysv
334e39ce84cSmrg				;;
335e39ce84cSmrg			go32)
336e39ce84cSmrg				basic_machine=i386-pc
337e39ce84cSmrg				basic_os=go32
338e39ce84cSmrg				;;
339e39ce84cSmrg			h8300hms)
340e39ce84cSmrg				basic_machine=h8300-hitachi
341e39ce84cSmrg				basic_os=hms
342e39ce84cSmrg				;;
343e39ce84cSmrg			h8300xray)
344e39ce84cSmrg				basic_machine=h8300-hitachi
345e39ce84cSmrg				basic_os=xray
346e39ce84cSmrg				;;
347e39ce84cSmrg			h8500hms)
348e39ce84cSmrg				basic_machine=h8500-hitachi
349e39ce84cSmrg				basic_os=hms
350e39ce84cSmrg				;;
351e39ce84cSmrg			harris)
352e39ce84cSmrg				basic_machine=m88k-harris
353e39ce84cSmrg				basic_os=sysv3
354e39ce84cSmrg				;;
355e39ce84cSmrg			hp300 | hp300hpux)
356e39ce84cSmrg				basic_machine=m68k-hp
357e39ce84cSmrg				basic_os=hpux
358e39ce84cSmrg				;;
359e39ce84cSmrg			hp300bsd)
360e39ce84cSmrg				basic_machine=m68k-hp
361e39ce84cSmrg				basic_os=bsd
362e39ce84cSmrg				;;
363e39ce84cSmrg			hppaosf)
364e39ce84cSmrg				basic_machine=hppa1.1-hp
365e39ce84cSmrg				basic_os=osf
366e39ce84cSmrg				;;
367e39ce84cSmrg			hppro)
368e39ce84cSmrg				basic_machine=hppa1.1-hp
369e39ce84cSmrg				basic_os=proelf
370e39ce84cSmrg				;;
371e39ce84cSmrg			i386mach)
372e39ce84cSmrg				basic_machine=i386-mach
373e39ce84cSmrg				basic_os=mach
374e39ce84cSmrg				;;
375e39ce84cSmrg			isi68 | isi)
376e39ce84cSmrg				basic_machine=m68k-isi
377e39ce84cSmrg				basic_os=sysv
378e39ce84cSmrg				;;
379e39ce84cSmrg			m68knommu)
380e39ce84cSmrg				basic_machine=m68k-unknown
381e39ce84cSmrg				basic_os=linux
382e39ce84cSmrg				;;
383e39ce84cSmrg			magnum | m3230)
384e39ce84cSmrg				basic_machine=mips-mips
385e39ce84cSmrg				basic_os=sysv
386e39ce84cSmrg				;;
387e39ce84cSmrg			merlin)
388e39ce84cSmrg				basic_machine=ns32k-utek
389e39ce84cSmrg				basic_os=sysv
390e39ce84cSmrg				;;
391e39ce84cSmrg			mingw64)
392e39ce84cSmrg				basic_machine=x86_64-pc
393e39ce84cSmrg				basic_os=mingw64
394e39ce84cSmrg				;;
395e39ce84cSmrg			mingw32)
396e39ce84cSmrg				basic_machine=i686-pc
397e39ce84cSmrg				basic_os=mingw32
398e39ce84cSmrg				;;
399e39ce84cSmrg			mingw32ce)
400e39ce84cSmrg				basic_machine=arm-unknown
401e39ce84cSmrg				basic_os=mingw32ce
402e39ce84cSmrg				;;
403e39ce84cSmrg			monitor)
404e39ce84cSmrg				basic_machine=m68k-rom68k
405e39ce84cSmrg				basic_os=coff
406e39ce84cSmrg				;;
407e39ce84cSmrg			morphos)
408e39ce84cSmrg				basic_machine=powerpc-unknown
409e39ce84cSmrg				basic_os=morphos
410e39ce84cSmrg				;;
411e39ce84cSmrg			moxiebox)
412e39ce84cSmrg				basic_machine=moxie-unknown
413e39ce84cSmrg				basic_os=moxiebox
414e39ce84cSmrg				;;
415e39ce84cSmrg			msdos)
416e39ce84cSmrg				basic_machine=i386-pc
417e39ce84cSmrg				basic_os=msdos
418e39ce84cSmrg				;;
419e39ce84cSmrg			msys)
420e39ce84cSmrg				basic_machine=i686-pc
421e39ce84cSmrg				basic_os=msys
422e39ce84cSmrg				;;
423e39ce84cSmrg			mvs)
424e39ce84cSmrg				basic_machine=i370-ibm
425e39ce84cSmrg				basic_os=mvs
426e39ce84cSmrg				;;
427e39ce84cSmrg			nacl)
428e39ce84cSmrg				basic_machine=le32-unknown
429e39ce84cSmrg				basic_os=nacl
430e39ce84cSmrg				;;
431e39ce84cSmrg			ncr3000)
432e39ce84cSmrg				basic_machine=i486-ncr
433e39ce84cSmrg				basic_os=sysv4
434e39ce84cSmrg				;;
435e39ce84cSmrg			netbsd386)
436e39ce84cSmrg				basic_machine=i386-pc
437e39ce84cSmrg				basic_os=netbsd
438e39ce84cSmrg				;;
439e39ce84cSmrg			netwinder)
440e39ce84cSmrg				basic_machine=armv4l-rebel
441e39ce84cSmrg				basic_os=linux
442e39ce84cSmrg				;;
443e39ce84cSmrg			news | news700 | news800 | news900)
444e39ce84cSmrg				basic_machine=m68k-sony
445e39ce84cSmrg				basic_os=newsos
446e39ce84cSmrg				;;
447e39ce84cSmrg			news1000)
448e39ce84cSmrg				basic_machine=m68030-sony
449e39ce84cSmrg				basic_os=newsos
450e39ce84cSmrg				;;
451e39ce84cSmrg			necv70)
452e39ce84cSmrg				basic_machine=v70-nec
453e39ce84cSmrg				basic_os=sysv
454e39ce84cSmrg				;;
455e39ce84cSmrg			nh3000)
456e39ce84cSmrg				basic_machine=m68k-harris
457e39ce84cSmrg				basic_os=cxux
458e39ce84cSmrg				;;
459e39ce84cSmrg			nh[45]000)
460e39ce84cSmrg				basic_machine=m88k-harris
461e39ce84cSmrg				basic_os=cxux
462e39ce84cSmrg				;;
463e39ce84cSmrg			nindy960)
464e39ce84cSmrg				basic_machine=i960-intel
465e39ce84cSmrg				basic_os=nindy
466e39ce84cSmrg				;;
467e39ce84cSmrg			mon960)
468e39ce84cSmrg				basic_machine=i960-intel
469e39ce84cSmrg				basic_os=mon960
470e39ce84cSmrg				;;
471e39ce84cSmrg			nonstopux)
472e39ce84cSmrg				basic_machine=mips-compaq
473e39ce84cSmrg				basic_os=nonstopux
474e39ce84cSmrg				;;
475e39ce84cSmrg			os400)
476e39ce84cSmrg				basic_machine=powerpc-ibm
477e39ce84cSmrg				basic_os=os400
478e39ce84cSmrg				;;
479e39ce84cSmrg			OSE68000 | ose68000)
480e39ce84cSmrg				basic_machine=m68000-ericsson
481e39ce84cSmrg				basic_os=ose
482e39ce84cSmrg				;;
483e39ce84cSmrg			os68k)
484e39ce84cSmrg				basic_machine=m68k-none
485e39ce84cSmrg				basic_os=os68k
486e39ce84cSmrg				;;
487e39ce84cSmrg			paragon)
488e39ce84cSmrg				basic_machine=i860-intel
489e39ce84cSmrg				basic_os=osf
490e39ce84cSmrg				;;
491e39ce84cSmrg			parisc)
492e39ce84cSmrg				basic_machine=hppa-unknown
493e39ce84cSmrg				basic_os=linux
494e39ce84cSmrg				;;
495e39ce84cSmrg			psp)
496e39ce84cSmrg				basic_machine=mipsallegrexel-sony
497e39ce84cSmrg				basic_os=psp
498e39ce84cSmrg				;;
499e39ce84cSmrg			pw32)
500e39ce84cSmrg				basic_machine=i586-unknown
501e39ce84cSmrg				basic_os=pw32
502e39ce84cSmrg				;;
503e39ce84cSmrg			rdos | rdos64)
504e39ce84cSmrg				basic_machine=x86_64-pc
505e39ce84cSmrg				basic_os=rdos
506e39ce84cSmrg				;;
507e39ce84cSmrg			rdos32)
508e39ce84cSmrg				basic_machine=i386-pc
509e39ce84cSmrg				basic_os=rdos
510e39ce84cSmrg				;;
511e39ce84cSmrg			rom68k)
512e39ce84cSmrg				basic_machine=m68k-rom68k
513e39ce84cSmrg				basic_os=coff
514e39ce84cSmrg				;;
515e39ce84cSmrg			sa29200)
516e39ce84cSmrg				basic_machine=a29k-amd
517e39ce84cSmrg				basic_os=udi
518e39ce84cSmrg				;;
519e39ce84cSmrg			sei)
520e39ce84cSmrg				basic_machine=mips-sei
521e39ce84cSmrg				basic_os=seiux
522e39ce84cSmrg				;;
523e39ce84cSmrg			sequent)
524e39ce84cSmrg				basic_machine=i386-sequent
525e39ce84cSmrg				basic_os=
526e39ce84cSmrg				;;
527e39ce84cSmrg			sps7)
528e39ce84cSmrg				basic_machine=m68k-bull
529e39ce84cSmrg				basic_os=sysv2
530e39ce84cSmrg				;;
531e39ce84cSmrg			st2000)
532e39ce84cSmrg				basic_machine=m68k-tandem
533e39ce84cSmrg				basic_os=
534e39ce84cSmrg				;;
535e39ce84cSmrg			stratus)
536e39ce84cSmrg				basic_machine=i860-stratus
537e39ce84cSmrg				basic_os=sysv4
538e39ce84cSmrg				;;
539e39ce84cSmrg			sun2)
540e39ce84cSmrg				basic_machine=m68000-sun
541e39ce84cSmrg				basic_os=
542e39ce84cSmrg				;;
543e39ce84cSmrg			sun2os3)
544e39ce84cSmrg				basic_machine=m68000-sun
545e39ce84cSmrg				basic_os=sunos3
546e39ce84cSmrg				;;
547e39ce84cSmrg			sun2os4)
548e39ce84cSmrg				basic_machine=m68000-sun
549e39ce84cSmrg				basic_os=sunos4
550e39ce84cSmrg				;;
551e39ce84cSmrg			sun3)
552e39ce84cSmrg				basic_machine=m68k-sun
553e39ce84cSmrg				basic_os=
554e39ce84cSmrg				;;
555e39ce84cSmrg			sun3os3)
556e39ce84cSmrg				basic_machine=m68k-sun
557e39ce84cSmrg				basic_os=sunos3
558e39ce84cSmrg				;;
559e39ce84cSmrg			sun3os4)
560e39ce84cSmrg				basic_machine=m68k-sun
561e39ce84cSmrg				basic_os=sunos4
562e39ce84cSmrg				;;
563e39ce84cSmrg			sun4)
564e39ce84cSmrg				basic_machine=sparc-sun
565e39ce84cSmrg				basic_os=
566e39ce84cSmrg				;;
567e39ce84cSmrg			sun4os3)
568e39ce84cSmrg				basic_machine=sparc-sun
569e39ce84cSmrg				basic_os=sunos3
570e39ce84cSmrg				;;
571e39ce84cSmrg			sun4os4)
572e39ce84cSmrg				basic_machine=sparc-sun
573e39ce84cSmrg				basic_os=sunos4
574e39ce84cSmrg				;;
575e39ce84cSmrg			sun4sol2)
576e39ce84cSmrg				basic_machine=sparc-sun
577e39ce84cSmrg				basic_os=solaris2
578e39ce84cSmrg				;;
579e39ce84cSmrg			sun386 | sun386i | roadrunner)
580e39ce84cSmrg				basic_machine=i386-sun
581e39ce84cSmrg				basic_os=
582e39ce84cSmrg				;;
583e39ce84cSmrg			sv1)
584e39ce84cSmrg				basic_machine=sv1-cray
585e39ce84cSmrg				basic_os=unicos
586e39ce84cSmrg				;;
587e39ce84cSmrg			symmetry)
588e39ce84cSmrg				basic_machine=i386-sequent
589e39ce84cSmrg				basic_os=dynix
590e39ce84cSmrg				;;
591e39ce84cSmrg			t3e)
592e39ce84cSmrg				basic_machine=alphaev5-cray
593e39ce84cSmrg				basic_os=unicos
594e39ce84cSmrg				;;
595e39ce84cSmrg			t90)
596e39ce84cSmrg				basic_machine=t90-cray
597e39ce84cSmrg				basic_os=unicos
598e39ce84cSmrg				;;
599e39ce84cSmrg			toad1)
600e39ce84cSmrg				basic_machine=pdp10-xkl
601e39ce84cSmrg				basic_os=tops20
602e39ce84cSmrg				;;
603e39ce84cSmrg			tpf)
604e39ce84cSmrg				basic_machine=s390x-ibm
605e39ce84cSmrg				basic_os=tpf
606e39ce84cSmrg				;;
607e39ce84cSmrg			udi29k)
608e39ce84cSmrg				basic_machine=a29k-amd
609e39ce84cSmrg				basic_os=udi
610e39ce84cSmrg				;;
611e39ce84cSmrg			ultra3)
612e39ce84cSmrg				basic_machine=a29k-nyu
613e39ce84cSmrg				basic_os=sym1
614e39ce84cSmrg				;;
615e39ce84cSmrg			v810 | necv810)
616e39ce84cSmrg				basic_machine=v810-nec
617e39ce84cSmrg				basic_os=none
618e39ce84cSmrg				;;
619e39ce84cSmrg			vaxv)
620e39ce84cSmrg				basic_machine=vax-dec
621e39ce84cSmrg				basic_os=sysv
622e39ce84cSmrg				;;
623e39ce84cSmrg			vms)
624e39ce84cSmrg				basic_machine=vax-dec
625e39ce84cSmrg				basic_os=vms
626e39ce84cSmrg				;;
627e39ce84cSmrg			vsta)
628e39ce84cSmrg				basic_machine=i386-pc
629e39ce84cSmrg				basic_os=vsta
630e39ce84cSmrg				;;
631e39ce84cSmrg			vxworks960)
632e39ce84cSmrg				basic_machine=i960-wrs
633e39ce84cSmrg				basic_os=vxworks
634e39ce84cSmrg				;;
635e39ce84cSmrg			vxworks68)
636e39ce84cSmrg				basic_machine=m68k-wrs
637e39ce84cSmrg				basic_os=vxworks
638e39ce84cSmrg				;;
639e39ce84cSmrg			vxworks29k)
640e39ce84cSmrg				basic_machine=a29k-wrs
641e39ce84cSmrg				basic_os=vxworks
642e39ce84cSmrg				;;
643e39ce84cSmrg			xbox)
644e39ce84cSmrg				basic_machine=i686-pc
645e39ce84cSmrg				basic_os=mingw32
646e39ce84cSmrg				;;
647e39ce84cSmrg			ymp)
648e39ce84cSmrg				basic_machine=ymp-cray
649e39ce84cSmrg				basic_os=unicos
650e39ce84cSmrg				;;
651e39ce84cSmrg			*)
652e39ce84cSmrg				basic_machine=$1
653e39ce84cSmrg				basic_os=
654e39ce84cSmrg				;;
655e39ce84cSmrg		esac
6569aa228fdSmrg		;;
6579aa228fdSmrgesac
6589aa228fdSmrg
659e39ce84cSmrg# Decode 1-component or ad-hoc basic machines
6609aa228fdSmrgcase $basic_machine in
661e39ce84cSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
662e39ce84cSmrg	# some cases the only manufacturer, in others, it is the most popular.
663e39ce84cSmrg	w89k)
664e39ce84cSmrg		cpu=hppa1.1
665e39ce84cSmrg		vendor=winbond
6660c7e83b2Smrg		;;
667e39ce84cSmrg	op50n)
668e39ce84cSmrg		cpu=hppa1.1
669e39ce84cSmrg		vendor=oki
6709aa228fdSmrg		;;
671e39ce84cSmrg	op60c)
672e39ce84cSmrg		cpu=hppa1.1
673e39ce84cSmrg		vendor=oki
6749aa228fdSmrg		;;
675e39ce84cSmrg	ibm*)
676e39ce84cSmrg		cpu=i370
677e39ce84cSmrg		vendor=ibm
6789aa228fdSmrg		;;
679e39ce84cSmrg	orion105)
680e39ce84cSmrg		cpu=clipper
681e39ce84cSmrg		vendor=highlevel
6820c7e83b2Smrg		;;
683e39ce84cSmrg	mac | mpw | mac-mpw)
684e39ce84cSmrg		cpu=m68k
685e39ce84cSmrg		vendor=apple
68680b026c6Smrg		;;
687e39ce84cSmrg	pmac | pmac-mpw)
688e39ce84cSmrg		cpu=powerpc
689e39ce84cSmrg		vendor=apple
69080b026c6Smrg		;;
69180b026c6Smrg
6929aa228fdSmrg	# Recognize the various machine names and aliases which stand
6939aa228fdSmrg	# for a CPU type and a company and sometimes even an OS.
6949aa228fdSmrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
695e39ce84cSmrg		cpu=m68000
696e39ce84cSmrg		vendor=att
6979aa228fdSmrg		;;
6989aa228fdSmrg	3b*)
699e39ce84cSmrg		cpu=we32k
700e39ce84cSmrg		vendor=att
7018f65982aSmrg		;;
7028f65982aSmrg	bluegene*)
703e39ce84cSmrg		cpu=powerpc
704e39ce84cSmrg		vendor=ibm
705e39ce84cSmrg		basic_os=cnk
7069aa228fdSmrg		;;
7079aa228fdSmrg	decsystem10* | dec10*)
708e39ce84cSmrg		cpu=pdp10
709e39ce84cSmrg		vendor=dec
710e39ce84cSmrg		basic_os=tops10
7119aa228fdSmrg		;;
7129aa228fdSmrg	decsystem20* | dec20*)
713e39ce84cSmrg		cpu=pdp10
714e39ce84cSmrg		vendor=dec
715e39ce84cSmrg		basic_os=tops20
7169aa228fdSmrg		;;
7179aa228fdSmrg	delta | 3300 | motorola-3300 | motorola-delta \
7189aa228fdSmrg	      | 3300-motorola | delta-motorola)
719e39ce84cSmrg		cpu=m68k
720e39ce84cSmrg		vendor=motorola
7219aa228fdSmrg		;;
722e39ce84cSmrg	dpx2*)
723e39ce84cSmrg		cpu=m68k
724e39ce84cSmrg		vendor=bull
725e39ce84cSmrg		basic_os=sysv3
7269aa228fdSmrg		;;
7279aa228fdSmrg	encore | umax | mmax)
728e39ce84cSmrg		cpu=ns32k
729e39ce84cSmrg		vendor=encore
7309aa228fdSmrg		;;
731e39ce84cSmrg	elxsi)
732e39ce84cSmrg		cpu=elxsi
733e39ce84cSmrg		vendor=elxsi
734e39ce84cSmrg		basic_os=${basic_os:-bsd}
7359aa228fdSmrg		;;
7369aa228fdSmrg	fx2800)
737e39ce84cSmrg		cpu=i860
738e39ce84cSmrg		vendor=alliant
7399aa228fdSmrg		;;
7409aa228fdSmrg	genix)
741e39ce84cSmrg		cpu=ns32k
742e39ce84cSmrg		vendor=ns
7439aa228fdSmrg		;;
7449aa228fdSmrg	h3050r* | hiux*)
745e39ce84cSmrg		cpu=hppa1.1
746e39ce84cSmrg		vendor=hitachi
747e39ce84cSmrg		basic_os=hiuxwe2
7489aa228fdSmrg		;;
7499aa228fdSmrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
750e39ce84cSmrg		cpu=hppa1.0
751e39ce84cSmrg		vendor=hp
7529aa228fdSmrg		;;
7539aa228fdSmrg	hp9k2[0-9][0-9] | hp9k31[0-9])
754e39ce84cSmrg		cpu=m68000
755e39ce84cSmrg		vendor=hp
7569aa228fdSmrg		;;
7579aa228fdSmrg	hp9k3[2-9][0-9])
758e39ce84cSmrg		cpu=m68k
759e39ce84cSmrg		vendor=hp
7609aa228fdSmrg		;;
7619aa228fdSmrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
762e39ce84cSmrg		cpu=hppa1.0
763e39ce84cSmrg		vendor=hp
7649aa228fdSmrg		;;
7659aa228fdSmrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
766e39ce84cSmrg		cpu=hppa1.1
767e39ce84cSmrg		vendor=hp
7689aa228fdSmrg		;;
7699aa228fdSmrg	hp9k78[0-9] | hp78[0-9])
7709aa228fdSmrg		# FIXME: really hppa2.0-hp
771e39ce84cSmrg		cpu=hppa1.1
772e39ce84cSmrg		vendor=hp
7739aa228fdSmrg		;;
7749aa228fdSmrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
7759aa228fdSmrg		# FIXME: really hppa2.0-hp
776e39ce84cSmrg		cpu=hppa1.1
777e39ce84cSmrg		vendor=hp
7789aa228fdSmrg		;;
7799aa228fdSmrg	hp9k8[0-9][13679] | hp8[0-9][13679])
780e39ce84cSmrg		cpu=hppa1.1
781e39ce84cSmrg		vendor=hp
7829aa228fdSmrg		;;
7839aa228fdSmrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
784e39ce84cSmrg		cpu=hppa1.0
785e39ce84cSmrg		vendor=hp
7869aa228fdSmrg		;;
7879aa228fdSmrg	i*86v32)
788e39ce84cSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
789e39ce84cSmrg		vendor=pc
790e39ce84cSmrg		basic_os=sysv32
7919aa228fdSmrg		;;
7929aa228fdSmrg	i*86v4*)
793e39ce84cSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
794e39ce84cSmrg		vendor=pc
795e39ce84cSmrg		basic_os=sysv4
7969aa228fdSmrg		;;
7979aa228fdSmrg	i*86v)
798e39ce84cSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
799e39ce84cSmrg		vendor=pc
800e39ce84cSmrg		basic_os=sysv
8019aa228fdSmrg		;;
8029aa228fdSmrg	i*86sol2)
803e39ce84cSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
804e39ce84cSmrg		vendor=pc
805e39ce84cSmrg		basic_os=solaris2
8069aa228fdSmrg		;;
807e39ce84cSmrg	j90 | j90-cray)
808e39ce84cSmrg		cpu=j90
809e39ce84cSmrg		vendor=cray
810e39ce84cSmrg		basic_os=${basic_os:-unicos}
8119aa228fdSmrg		;;
8129aa228fdSmrg	iris | iris4d)
813e39ce84cSmrg		cpu=mips
814e39ce84cSmrg		vendor=sgi
815e39ce84cSmrg		case $basic_os in
816e39ce84cSmrg		    irix*)
8179aa228fdSmrg			;;
8189aa228fdSmrg		    *)
819e39ce84cSmrg			basic_os=irix4
8209aa228fdSmrg			;;
8219aa228fdSmrg		esac
8229aa228fdSmrg		;;
8239aa228fdSmrg	miniframe)
824e39ce84cSmrg		cpu=m68000
825e39ce84cSmrg		vendor=convergent
82680b026c6Smrg		;;
827e39ce84cSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
828e39ce84cSmrg		cpu=m68k
829e39ce84cSmrg		vendor=atari
830e39ce84cSmrg		basic_os=mint
8319aa228fdSmrg		;;
8329aa228fdSmrg	news-3600 | risc-news)
833e39ce84cSmrg		cpu=mips
834e39ce84cSmrg		vendor=sony
835e39ce84cSmrg		basic_os=newsos
836e39ce84cSmrg		;;
837e39ce84cSmrg	next | m*-next)
838e39ce84cSmrg		cpu=m68k
839e39ce84cSmrg		vendor=next
840e39ce84cSmrg		case $basic_os in
841e39ce84cSmrg		    openstep*)
842e39ce84cSmrg		        ;;
843e39ce84cSmrg		    nextstep*)
8449aa228fdSmrg			;;
845e39ce84cSmrg		    ns2*)
846e39ce84cSmrg		      basic_os=nextstep2
8479aa228fdSmrg			;;
8489aa228fdSmrg		    *)
849e39ce84cSmrg		      basic_os=nextstep3
8509aa228fdSmrg			;;
8519aa228fdSmrg		esac
8529aa228fdSmrg		;;
8539aa228fdSmrg	np1)
854e39ce84cSmrg		cpu=np1
855e39ce84cSmrg		vendor=gould
8569aa228fdSmrg		;;
8579aa228fdSmrg	op50n-* | op60c-*)
858e39ce84cSmrg		cpu=hppa1.1
859e39ce84cSmrg		vendor=oki
860e39ce84cSmrg		basic_os=proelf
8619aa228fdSmrg		;;
8629aa228fdSmrg	pa-hitachi)
863e39ce84cSmrg		cpu=hppa1.1
864e39ce84cSmrg		vendor=hitachi
865e39ce84cSmrg		basic_os=hiuxwe2
8668f65982aSmrg		;;
8679aa228fdSmrg	pbd)
868e39ce84cSmrg		cpu=sparc
869e39ce84cSmrg		vendor=tti
8709aa228fdSmrg		;;
8719aa228fdSmrg	pbb)
872e39ce84cSmrg		cpu=m68k
873e39ce84cSmrg		vendor=tti
8749aa228fdSmrg		;;
875e39ce84cSmrg	pc532)
876e39ce84cSmrg		cpu=ns32k
877e39ce84cSmrg		vendor=pc532
8789aa228fdSmrg		;;
8799aa228fdSmrg	pn)
880e39ce84cSmrg		cpu=pn
881e39ce84cSmrg		vendor=gould
8829aa228fdSmrg		;;
883e39ce84cSmrg	power)
884e39ce84cSmrg		cpu=power
885e39ce84cSmrg		vendor=ibm
8869aa228fdSmrg		;;
8879aa228fdSmrg	ps2)
888e39ce84cSmrg		cpu=i386
889e39ce84cSmrg		vendor=ibm
8909aa228fdSmrg		;;
8919aa228fdSmrg	rm[46]00)
892e39ce84cSmrg		cpu=mips
893e39ce84cSmrg		vendor=siemens
8949aa228fdSmrg		;;
8959aa228fdSmrg	rtpc | rtpc-*)
896e39ce84cSmrg		cpu=romp
897e39ce84cSmrg		vendor=ibm
8989aa228fdSmrg		;;
899e39ce84cSmrg	sde)
900e39ce84cSmrg		cpu=mipsisa32
901e39ce84cSmrg		vendor=sde
902e39ce84cSmrg		basic_os=${basic_os:-elf}
9039aa228fdSmrg		;;
904e39ce84cSmrg	simso-wrs)
905e39ce84cSmrg		cpu=sparclite
906e39ce84cSmrg		vendor=wrs
907e39ce84cSmrg		basic_os=vxworks
9089aa228fdSmrg		;;
909e39ce84cSmrg	tower | tower-32)
910e39ce84cSmrg		cpu=m68k
911e39ce84cSmrg		vendor=ncr
9129aa228fdSmrg		;;
913e39ce84cSmrg	vpp*|vx|vx-*)
914e39ce84cSmrg		cpu=f301
915e39ce84cSmrg		vendor=fujitsu
9169aa228fdSmrg		;;
917e39ce84cSmrg	w65)
918e39ce84cSmrg		cpu=w65
919e39ce84cSmrg		vendor=wdc
9209aa228fdSmrg		;;
921e39ce84cSmrg	w89k-*)
922e39ce84cSmrg		cpu=hppa1.1
923e39ce84cSmrg		vendor=winbond
924e39ce84cSmrg		basic_os=proelf
9259aa228fdSmrg		;;
926e39ce84cSmrg	none)
927e39ce84cSmrg		cpu=none
928e39ce84cSmrg		vendor=none
9298f65982aSmrg		;;
930e39ce84cSmrg	leon|leon[3-9])
931e39ce84cSmrg		cpu=sparc
932e39ce84cSmrg		vendor=$basic_machine
9339aa228fdSmrg		;;
934e39ce84cSmrg	leon-*|leon[3-9]-*)
935e39ce84cSmrg		cpu=sparc
936e39ce84cSmrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
9379aa228fdSmrg		;;
938e39ce84cSmrg
939e39ce84cSmrg	*-*)
940e39ce84cSmrg		# shellcheck disable=SC2162
941e39ce84cSmrg		saved_IFS=$IFS
942e39ce84cSmrg		IFS="-" read cpu vendor <<EOF
943e39ce84cSmrg$basic_machine
944e39ce84cSmrgEOF
945e39ce84cSmrg		IFS=$saved_IFS
9469aa228fdSmrg		;;
94746374b8dSmrg	# We use 'pc' rather than 'unknown'
948e39ce84cSmrg	# because (1) that's what they normally are, and
949e39ce84cSmrg	# (2) the word "unknown" tends to confuse beginning users.
950e39ce84cSmrg	i*86 | x86_64)
951e39ce84cSmrg		cpu=$basic_machine
952e39ce84cSmrg		vendor=pc
9539aa228fdSmrg		;;
954e39ce84cSmrg	# These rules are duplicated from below for sake of the special case above;
955e39ce84cSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
956e39ce84cSmrg	pc98)
957e39ce84cSmrg		cpu=i386
958e39ce84cSmrg		vendor=pc
9599aa228fdSmrg		;;
960e39ce84cSmrg	x64 | amd64)
961e39ce84cSmrg		cpu=x86_64
962e39ce84cSmrg		vendor=pc
9639aa228fdSmrg		;;
964e39ce84cSmrg	# Recognize the basic CPU types without company name.
965e39ce84cSmrg	*)
966e39ce84cSmrg		cpu=$basic_machine
967e39ce84cSmrg		vendor=unknown
96880b026c6Smrg		;;
969e39ce84cSmrgesac
970e39ce84cSmrg
971e39ce84cSmrgunset -v basic_machine
972e39ce84cSmrg
973e39ce84cSmrg# Decode basic machines in the full and proper CPU-Company form.
974e39ce84cSmrgcase $cpu-$vendor in
975e39ce84cSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
976e39ce84cSmrg	# some cases the only manufacturer, in others, it is the most popular.
977e39ce84cSmrg	craynv-unknown)
978e39ce84cSmrg		vendor=cray
979e39ce84cSmrg		basic_os=${basic_os:-unicosmp}
9809aa228fdSmrg		;;
981e39ce84cSmrg	c90-unknown | c90-cray)
982e39ce84cSmrg		vendor=cray
983e39ce84cSmrg		basic_os=${Basic_os:-unicos}
9849aa228fdSmrg		;;
985e39ce84cSmrg	fx80-unknown)
986e39ce84cSmrg		vendor=alliant
9879aa228fdSmrg		;;
988e39ce84cSmrg	romp-unknown)
989e39ce84cSmrg		vendor=ibm
9909aa228fdSmrg		;;
991e39ce84cSmrg	mmix-unknown)
992e39ce84cSmrg		vendor=knuth
9939aa228fdSmrg		;;
994e39ce84cSmrg	microblaze-unknown | microblazeel-unknown)
995e39ce84cSmrg		vendor=xilinx
9969aa228fdSmrg		;;
997e39ce84cSmrg	rs6000-unknown)
998e39ce84cSmrg		vendor=ibm
9999aa228fdSmrg		;;
1000e39ce84cSmrg	vax-unknown)
1001e39ce84cSmrg		vendor=dec
10029aa228fdSmrg		;;
1003e39ce84cSmrg	pdp11-unknown)
1004e39ce84cSmrg		vendor=dec
10059aa228fdSmrg		;;
1006e39ce84cSmrg	we32k-unknown)
1007e39ce84cSmrg		vendor=att
10089aa228fdSmrg		;;
1009e39ce84cSmrg	cydra-unknown)
1010e39ce84cSmrg		vendor=cydrome
10119aa228fdSmrg		;;
1012e39ce84cSmrg	i370-ibm*)
1013e39ce84cSmrg		vendor=ibm
10149aa228fdSmrg		;;
1015e39ce84cSmrg	orion-unknown)
1016e39ce84cSmrg		vendor=highlevel
10179aa228fdSmrg		;;
1018e39ce84cSmrg	xps-unknown | xps100-unknown)
1019e39ce84cSmrg		cpu=xps100
1020e39ce84cSmrg		vendor=honeywell
10219aa228fdSmrg		;;
1022e39ce84cSmrg
1023e39ce84cSmrg	# Here we normalize CPU types with a missing or matching vendor
102446374b8dSmrg	armh-unknown | armh-alt)
102546374b8dSmrg		cpu=armv7l
102646374b8dSmrg		vendor=alt
102746374b8dSmrg		basic_os=${basic_os:-linux-gnueabihf}
102846374b8dSmrg		;;
1029e39ce84cSmrg	dpx20-unknown | dpx20-bull)
1030e39ce84cSmrg		cpu=rs6000
1031e39ce84cSmrg		vendor=bull
1032e39ce84cSmrg		basic_os=${basic_os:-bosx}
10339aa228fdSmrg		;;
1034e39ce84cSmrg
1035e39ce84cSmrg	# Here we normalize CPU types irrespective of the vendor
1036e39ce84cSmrg	amd64-*)
1037e39ce84cSmrg		cpu=x86_64
10389aa228fdSmrg		;;
1039e39ce84cSmrg	blackfin-*)
1040e39ce84cSmrg		cpu=bfin
1041e39ce84cSmrg		basic_os=linux
10429aa228fdSmrg		;;
1043e39ce84cSmrg	c54x-*)
1044e39ce84cSmrg		cpu=tic54x
10459aa228fdSmrg		;;
1046e39ce84cSmrg	c55x-*)
1047e39ce84cSmrg		cpu=tic55x
10489aa228fdSmrg		;;
1049e39ce84cSmrg	c6x-*)
1050e39ce84cSmrg		cpu=tic6x
10519aa228fdSmrg		;;
1052e39ce84cSmrg	e500v[12]-*)
1053e39ce84cSmrg		cpu=powerpc
1054e39ce84cSmrg		basic_os=${basic_os}"spe"
10559aa228fdSmrg		;;
1056e39ce84cSmrg	mips3*-*)
1057e39ce84cSmrg		cpu=mips64
10589aa228fdSmrg		;;
1059e39ce84cSmrg	ms1-*)
1060e39ce84cSmrg		cpu=mt
10619aa228fdSmrg		;;
1062e39ce84cSmrg	m68knommu-*)
1063e39ce84cSmrg		cpu=m68k
1064e39ce84cSmrg		basic_os=linux
10659aa228fdSmrg		;;
1066e39ce84cSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
1067e39ce84cSmrg		cpu=s12z
10689aa228fdSmrg		;;
1069e39ce84cSmrg	openrisc-*)
1070e39ce84cSmrg		cpu=or32
10719aa228fdSmrg		;;
1072e39ce84cSmrg	parisc-*)
1073e39ce84cSmrg		cpu=hppa
1074e39ce84cSmrg		basic_os=linux
10759aa228fdSmrg		;;
1076e39ce84cSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
1077e39ce84cSmrg		cpu=i586
10789aa228fdSmrg		;;
107946374b8dSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
1080e39ce84cSmrg		cpu=i686
10819aa228fdSmrg		;;
1082e39ce84cSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
1083e39ce84cSmrg		cpu=i686
10849aa228fdSmrg		;;
1085e39ce84cSmrg	pentium4-*)
1086e39ce84cSmrg		cpu=i786
10879aa228fdSmrg		;;
1088e39ce84cSmrg	pc98-*)
1089e39ce84cSmrg		cpu=i386
10909aa228fdSmrg		;;
1091e39ce84cSmrg	ppc-* | ppcbe-*)
1092e39ce84cSmrg		cpu=powerpc
10939aa228fdSmrg		;;
1094e39ce84cSmrg	ppcle-* | powerpclittle-*)
1095e39ce84cSmrg		cpu=powerpcle
10969aa228fdSmrg		;;
1097e39ce84cSmrg	ppc64-*)
1098e39ce84cSmrg		cpu=powerpc64
109980b026c6Smrg		;;
1100e39ce84cSmrg	ppc64le-* | powerpc64little-*)
1101e39ce84cSmrg		cpu=powerpc64le
11029aa228fdSmrg		;;
1103e39ce84cSmrg	sb1-*)
1104e39ce84cSmrg		cpu=mipsisa64sb1
11059aa228fdSmrg		;;
1106e39ce84cSmrg	sb1el-*)
1107e39ce84cSmrg		cpu=mipsisa64sb1el
11088f65982aSmrg		;;
1109e39ce84cSmrg	sh5e[lb]-*)
1110e39ce84cSmrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
11119aa228fdSmrg		;;
1112e39ce84cSmrg	spur-*)
1113e39ce84cSmrg		cpu=spur
11149aa228fdSmrg		;;
1115e39ce84cSmrg	strongarm-* | thumb-*)
1116e39ce84cSmrg		cpu=arm
11179aa228fdSmrg		;;
1118e39ce84cSmrg	tx39-*)
1119e39ce84cSmrg		cpu=mipstx39
11209aa228fdSmrg		;;
1121e39ce84cSmrg	tx39el-*)
1122e39ce84cSmrg		cpu=mipstx39el
11239aa228fdSmrg		;;
1124e39ce84cSmrg	x64-*)
1125e39ce84cSmrg		cpu=x86_64
11269aa228fdSmrg		;;
1127e39ce84cSmrg	xscale-* | xscalee[bl]-*)
1128e39ce84cSmrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
11299aa228fdSmrg		;;
113046374b8dSmrg	arm64-* | aarch64le-*)
1131e39ce84cSmrg		cpu=aarch64
11329aa228fdSmrg		;;
1133e39ce84cSmrg
1134e39ce84cSmrg	# Recognize the canonical CPU Types that limit and/or modify the
1135e39ce84cSmrg	# company names they are paired with.
1136e39ce84cSmrg	cr16-*)
1137e39ce84cSmrg		basic_os=${basic_os:-elf}
11389aa228fdSmrg		;;
1139e39ce84cSmrg	crisv32-* | etraxfs*-*)
1140e39ce84cSmrg		cpu=crisv32
1141e39ce84cSmrg		vendor=axis
11429aa228fdSmrg		;;
1143e39ce84cSmrg	cris-* | etrax*-*)
1144e39ce84cSmrg		cpu=cris
1145e39ce84cSmrg		vendor=axis
11469aa228fdSmrg		;;
1147e39ce84cSmrg	crx-*)
1148e39ce84cSmrg		basic_os=${basic_os:-elf}
11499aa228fdSmrg		;;
1150e39ce84cSmrg	neo-tandem)
1151e39ce84cSmrg		cpu=neo
1152e39ce84cSmrg		vendor=tandem
11539aa228fdSmrg		;;
1154e39ce84cSmrg	nse-tandem)
1155e39ce84cSmrg		cpu=nse
1156e39ce84cSmrg		vendor=tandem
11579aa228fdSmrg		;;
1158e39ce84cSmrg	nsr-tandem)
1159e39ce84cSmrg		cpu=nsr
1160e39ce84cSmrg		vendor=tandem
11619aa228fdSmrg		;;
1162e39ce84cSmrg	nsv-tandem)
1163e39ce84cSmrg		cpu=nsv
1164e39ce84cSmrg		vendor=tandem
11659aa228fdSmrg		;;
1166e39ce84cSmrg	nsx-tandem)
1167e39ce84cSmrg		cpu=nsx
1168e39ce84cSmrg		vendor=tandem
11699aa228fdSmrg		;;
1170e39ce84cSmrg	mipsallegrexel-sony)
1171e39ce84cSmrg		cpu=mipsallegrexel
1172e39ce84cSmrg		vendor=sony
11739aa228fdSmrg		;;
1174e39ce84cSmrg	tile*-*)
1175e39ce84cSmrg		basic_os=${basic_os:-linux-gnu}
11769aa228fdSmrg		;;
1177e39ce84cSmrg
11789aa228fdSmrg	*)
1179e39ce84cSmrg		# Recognize the canonical CPU types that are allowed with any
1180e39ce84cSmrg		# company name.
1181e39ce84cSmrg		case $cpu in
1182e39ce84cSmrg			1750a | 580 \
1183e39ce84cSmrg			| a29k \
118446374b8dSmrg			| aarch64 | aarch64_be | aarch64c | arm64ec \
1185e39ce84cSmrg			| abacus \
1186e39ce84cSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
1187e39ce84cSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
1188e39ce84cSmrg			| alphapca5[67] | alpha64pca5[67] \
1189e39ce84cSmrg			| am33_2.0 \
1190e39ce84cSmrg			| amdgcn \
1191e39ce84cSmrg			| arc | arceb | arc32 | arc64 \
1192e39ce84cSmrg			| arm | arm[lb]e | arme[lb] | armv* \
1193e39ce84cSmrg			| avr | avr32 \
1194e39ce84cSmrg			| asmjs \
1195e39ce84cSmrg			| ba \
1196e39ce84cSmrg			| be32 | be64 \
1197e39ce84cSmrg			| bfin | bpf | bs2000 \
1198e39ce84cSmrg			| c[123]* | c30 | [cjt]90 | c4x \
1199e39ce84cSmrg			| c8051 | clipper | craynv | csky | cydra \
1200e39ce84cSmrg			| d10v | d30v | dlx | dsp16xx \
1201e39ce84cSmrg			| e2k | elxsi | epiphany \
1202e39ce84cSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
120346374b8dSmrg			| javascript \
1204e39ce84cSmrg			| h8300 | h8500 \
1205e39ce84cSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
1206e39ce84cSmrg			| hexagon \
1207e39ce84cSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
1208e39ce84cSmrg			| ip2k | iq2000 \
1209e39ce84cSmrg			| k1om \
121046374b8dSmrg			| kvx \
1211e39ce84cSmrg			| le32 | le64 \
1212e39ce84cSmrg			| lm32 \
121346374b8dSmrg			| loongarch32 | loongarch64 \
1214e39ce84cSmrg			| m32c | m32r | m32rle \
1215e39ce84cSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
1216e39ce84cSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
1217e39ce84cSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
1218e39ce84cSmrg			| microblaze | microblazeel \
121946374b8dSmrg			| mips* \
1220e39ce84cSmrg			| mmix \
1221e39ce84cSmrg			| mn10200 | mn10300 \
1222e39ce84cSmrg			| moxie \
1223e39ce84cSmrg			| mt \
1224e39ce84cSmrg			| msp430 \
122546374b8dSmrg			| nanomips* \
1226e39ce84cSmrg			| nds32 | nds32le | nds32be \
1227e39ce84cSmrg			| nfp \
1228e39ce84cSmrg			| nios | nios2 | nios2eb | nios2el \
1229e39ce84cSmrg			| none | np1 | ns16k | ns32k | nvptx \
1230e39ce84cSmrg			| open8 \
1231e39ce84cSmrg			| or1k* \
1232e39ce84cSmrg			| or32 \
1233e39ce84cSmrg			| orion \
1234e39ce84cSmrg			| picochip \
1235e39ce84cSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
1236e39ce84cSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
1237e39ce84cSmrg			| pru \
1238e39ce84cSmrg			| pyramid \
1239e39ce84cSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
1240e39ce84cSmrg			| rl78 | romp | rs6000 | rx \
1241e39ce84cSmrg			| s390 | s390x \
1242e39ce84cSmrg			| score \
1243e39ce84cSmrg			| sh | shl \
1244e39ce84cSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
1245e39ce84cSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
1246e39ce84cSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
1247e39ce84cSmrg			| sparclite \
1248e39ce84cSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
1249e39ce84cSmrg			| spu \
1250e39ce84cSmrg			| tahoe \
1251e39ce84cSmrg			| thumbv7* \
1252e39ce84cSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
1253e39ce84cSmrg			| tron \
1254e39ce84cSmrg			| ubicom32 \
1255e39ce84cSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
1256e39ce84cSmrg			| vax \
125746374b8dSmrg			| vc4 \
1258e39ce84cSmrg			| visium \
1259e39ce84cSmrg			| w65 \
1260e39ce84cSmrg			| wasm32 | wasm64 \
1261e39ce84cSmrg			| we32k \
1262e39ce84cSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
1263e39ce84cSmrg			| xstormy16 | xtensa* \
1264e39ce84cSmrg			| ymp \
1265e39ce84cSmrg			| z8k | z80)
1266e39ce84cSmrg				;;
1267e39ce84cSmrg
1268e39ce84cSmrg			*)
126946374b8dSmrg				echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
1270e39ce84cSmrg				exit 1
1271e39ce84cSmrg				;;
1272e39ce84cSmrg		esac
12739aa228fdSmrg		;;
12749aa228fdSmrgesac
12759aa228fdSmrg
12769aa228fdSmrg# Here we canonicalize certain aliases for manufacturers.
1277e39ce84cSmrgcase $vendor in
1278e39ce84cSmrg	digital*)
1279e39ce84cSmrg		vendor=dec
12809aa228fdSmrg		;;
1281e39ce84cSmrg	commodore*)
1282e39ce84cSmrg		vendor=cbm
12839aa228fdSmrg		;;
12849aa228fdSmrg	*)
12859aa228fdSmrg		;;
12869aa228fdSmrgesac
12879aa228fdSmrg
12889aa228fdSmrg# Decode manufacturer-specific aliases for certain operating systems.
12899aa228fdSmrg
129046374b8dSmrgif test x"$basic_os" != x
12919aa228fdSmrgthen
1292e39ce84cSmrg
129346374b8dSmrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
1294e39ce84cSmrg# set os.
129546374b8dSmrgobj=
1296e39ce84cSmrgcase $basic_os in
1297e39ce84cSmrg	gnu/linux*)
1298e39ce84cSmrg		kernel=linux
1299e39ce84cSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
1300e39ce84cSmrg		;;
1301e39ce84cSmrg	os2-emx)
1302e39ce84cSmrg		kernel=os2
1303e39ce84cSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
1304e39ce84cSmrg		;;
1305e39ce84cSmrg	nto-qnx*)
1306e39ce84cSmrg		kernel=nto
1307e39ce84cSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
1308e39ce84cSmrg		;;
1309e39ce84cSmrg	*-*)
1310e39ce84cSmrg		# shellcheck disable=SC2162
1311e39ce84cSmrg		saved_IFS=$IFS
1312e39ce84cSmrg		IFS="-" read kernel os <<EOF
1313e39ce84cSmrg$basic_os
1314e39ce84cSmrgEOF
1315e39ce84cSmrg		IFS=$saved_IFS
1316e39ce84cSmrg		;;
1317e39ce84cSmrg	# Default OS when just kernel was specified
1318e39ce84cSmrg	nto*)
1319e39ce84cSmrg		kernel=nto
1320e39ce84cSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
1321e39ce84cSmrg		;;
1322e39ce84cSmrg	linux*)
1323e39ce84cSmrg		kernel=linux
1324e39ce84cSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
1325e39ce84cSmrg		;;
132646374b8dSmrg	managarm*)
132746374b8dSmrg		kernel=managarm
132846374b8dSmrg		os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
132946374b8dSmrg		;;
1330e39ce84cSmrg	*)
1331e39ce84cSmrg		kernel=
1332e39ce84cSmrg		os=$basic_os
1333e39ce84cSmrg		;;
1334e39ce84cSmrgesac
1335e39ce84cSmrg
1336e39ce84cSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
1337e39ce84cSmrg# etc.)
13389aa228fdSmrgcase $os in
1339e39ce84cSmrg	# First match some system type aliases that might get confused
1340e39ce84cSmrg	# with valid system types.
1341e39ce84cSmrg	# solaris* is a basic system type, with this one exception.
1342e39ce84cSmrg	auroraux)
1343e39ce84cSmrg		os=auroraux
13448f65982aSmrg		;;
1345e39ce84cSmrg	bluegene*)
1346e39ce84cSmrg		os=cnk
13479aa228fdSmrg		;;
1348e39ce84cSmrg	solaris1 | solaris1.*)
1349e39ce84cSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
13509aa228fdSmrg		;;
1351e39ce84cSmrg	solaris)
1352e39ce84cSmrg		os=solaris2
13539aa228fdSmrg		;;
1354e39ce84cSmrg	unixware*)
1355e39ce84cSmrg		os=sysv4.2uw
13569aa228fdSmrg		;;
1357e39ce84cSmrg	# es1800 is here to avoid being matched by es* (a different OS)
1358e39ce84cSmrg	es1800*)
1359e39ce84cSmrg		os=ose
13609aa228fdSmrg		;;
1361e39ce84cSmrg	# Some version numbers need modification
1362e39ce84cSmrg	chorusos*)
1363e39ce84cSmrg		os=chorusos
13649aa228fdSmrg		;;
1365e39ce84cSmrg	isc)
1366e39ce84cSmrg		os=isc2.2
13679aa228fdSmrg		;;
1368e39ce84cSmrg	sco6)
1369e39ce84cSmrg		os=sco5v6
13709aa228fdSmrg		;;
1371e39ce84cSmrg	sco5)
1372e39ce84cSmrg		os=sco3.2v5
13739aa228fdSmrg		;;
1374e39ce84cSmrg	sco4)
1375e39ce84cSmrg		os=sco3.2v4
13769aa228fdSmrg		;;
1377e39ce84cSmrg	sco3.2.[4-9]*)
1378e39ce84cSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
13799aa228fdSmrg		;;
1380e39ce84cSmrg	sco*v* | scout)
1381e39ce84cSmrg		# Don't match below
13829aa228fdSmrg		;;
1383e39ce84cSmrg	sco*)
1384e39ce84cSmrg		os=sco3.2v2
13859aa228fdSmrg		;;
1386e39ce84cSmrg	psos*)
1387e39ce84cSmrg		os=psos
13889aa228fdSmrg		;;
1389e39ce84cSmrg	qnx*)
1390e39ce84cSmrg		os=qnx
13919aa228fdSmrg		;;
1392e39ce84cSmrg	hiux*)
1393e39ce84cSmrg		os=hiuxwe2
13949aa228fdSmrg		;;
1395e39ce84cSmrg	lynx*178)
1396e39ce84cSmrg		os=lynxos178
13979aa228fdSmrg		;;
1398e39ce84cSmrg	lynx*5)
1399e39ce84cSmrg		os=lynxos5
14009aa228fdSmrg		;;
1401e39ce84cSmrg	lynxos*)
1402e39ce84cSmrg		# don't get caught up in next wildcard
14039aa228fdSmrg		;;
1404e39ce84cSmrg	lynx*)
1405e39ce84cSmrg		os=lynxos
14069aa228fdSmrg		;;
1407e39ce84cSmrg	mac[0-9]*)
1408e39ce84cSmrg		os=`echo "$os" | sed -e 's|mac|macos|'`
14099aa228fdSmrg		;;
1410e39ce84cSmrg	opened*)
1411e39ce84cSmrg		os=openedition
14129aa228fdSmrg		;;
1413e39ce84cSmrg	os400*)
1414e39ce84cSmrg		os=os400
14159aa228fdSmrg		;;
1416e39ce84cSmrg	sunos5*)
1417e39ce84cSmrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
14189aa228fdSmrg		;;
1419e39ce84cSmrg	sunos6*)
1420e39ce84cSmrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
14219aa228fdSmrg		;;
1422e39ce84cSmrg	wince*)
1423e39ce84cSmrg		os=wince
14249aa228fdSmrg		;;
1425e39ce84cSmrg	utek*)
1426e39ce84cSmrg		os=bsd
14279aa228fdSmrg		;;
1428e39ce84cSmrg	dynix*)
1429e39ce84cSmrg		os=bsd
14309aa228fdSmrg		;;
1431e39ce84cSmrg	acis*)
1432e39ce84cSmrg		os=aos
14339aa228fdSmrg		;;
1434e39ce84cSmrg	atheos*)
1435e39ce84cSmrg		os=atheos
14369aa228fdSmrg		;;
1437e39ce84cSmrg	syllable*)
1438e39ce84cSmrg		os=syllable
14399aa228fdSmrg		;;
1440e39ce84cSmrg	386bsd)
1441e39ce84cSmrg		os=bsd
14429aa228fdSmrg		;;
1443e39ce84cSmrg	ctix* | uts*)
1444e39ce84cSmrg		os=sysv
14459aa228fdSmrg		;;
1446e39ce84cSmrg	nova*)
1447e39ce84cSmrg		os=rtmk-nova
14489aa228fdSmrg		;;
1449e39ce84cSmrg	ns2)
1450e39ce84cSmrg		os=nextstep2
14519aa228fdSmrg		;;
1452e39ce84cSmrg	# Preserve the version number of sinix5.
1453e39ce84cSmrg	sinix5.*)
1454e39ce84cSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
14559aa228fdSmrg		;;
1456e39ce84cSmrg	sinix*)
1457e39ce84cSmrg		os=sysv4
14589aa228fdSmrg		;;
1459e39ce84cSmrg	tpf*)
1460e39ce84cSmrg		os=tpf
14619aa228fdSmrg		;;
1462e39ce84cSmrg	triton*)
1463e39ce84cSmrg		os=sysv3
14649aa228fdSmrg		;;
1465e39ce84cSmrg	oss*)
1466e39ce84cSmrg		os=sysv3
14679aa228fdSmrg		;;
1468e39ce84cSmrg	svr4*)
1469e39ce84cSmrg		os=sysv4
14709aa228fdSmrg		;;
1471e39ce84cSmrg	svr3)
1472e39ce84cSmrg		os=sysv3
14739aa228fdSmrg		;;
1474e39ce84cSmrg	sysvr4)
1475e39ce84cSmrg		os=sysv4
14769aa228fdSmrg		;;
1477e39ce84cSmrg	ose*)
1478e39ce84cSmrg		os=ose
14799aa228fdSmrg		;;
1480e39ce84cSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
1481e39ce84cSmrg		os=mint
14828f65982aSmrg		;;
1483e39ce84cSmrg	dicos*)
1484e39ce84cSmrg		os=dicos
148580b026c6Smrg		;;
1486e39ce84cSmrg	pikeos*)
1487e39ce84cSmrg		# Until real need of OS specific support for
1488e39ce84cSmrg		# particular features comes up, bare metal
1489e39ce84cSmrg		# configurations are quite functional.
1490e39ce84cSmrg		case $cpu in
1491e39ce84cSmrg		    arm*)
1492e39ce84cSmrg			os=eabi
1493e39ce84cSmrg			;;
1494e39ce84cSmrg		    *)
149546374b8dSmrg			os=
149646374b8dSmrg			obj=elf
1497e39ce84cSmrg			;;
1498e39ce84cSmrg		esac
14999aa228fdSmrg		;;
150046374b8dSmrg	aout* | coff* | elf* | pe*)
150146374b8dSmrg		# These are machine code file formats, not OSes
150246374b8dSmrg		obj=$os
150346374b8dSmrg		os=
150446374b8dSmrg		;;
15059aa228fdSmrg	*)
1506e39ce84cSmrg		# No normalization, but not necessarily accepted, that comes below.
15079aa228fdSmrg		;;
15089aa228fdSmrgesac
1509e39ce84cSmrg
15109aa228fdSmrgelse
15119aa228fdSmrg
15129aa228fdSmrg# Here we handle the default operating systems that come with various machines.
15139aa228fdSmrg# The value should be what the vendor currently ships out the door with their
15149aa228fdSmrg# machine or put another way, the most popular os provided with the machine.
15159aa228fdSmrg
15169aa228fdSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
15179aa228fdSmrg# "-sun"), then you have to tell the case statement up towards the top
15189aa228fdSmrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
15199aa228fdSmrg# will signal an error saying that MANUFACTURER isn't an operating
15209aa228fdSmrg# system, and we'll never get to this point.
15219aa228fdSmrg
1522e39ce84cSmrgkernel=
152346374b8dSmrgobj=
1524e39ce84cSmrgcase $cpu-$vendor in
152580b026c6Smrg	score-*)
152646374b8dSmrg		os=
152746374b8dSmrg		obj=elf
15289aa228fdSmrg		;;
152980b026c6Smrg	spu-*)
153046374b8dSmrg		os=
153146374b8dSmrg		obj=elf
15329aa228fdSmrg		;;
15339aa228fdSmrg	*-acorn)
1534e39ce84cSmrg		os=riscix1.2
15359aa228fdSmrg		;;
15369aa228fdSmrg	arm*-rebel)
1537e39ce84cSmrg		kernel=linux
1538e39ce84cSmrg		os=gnu
15399aa228fdSmrg		;;
15409aa228fdSmrg	arm*-semi)
154146374b8dSmrg		os=
154246374b8dSmrg		obj=aout
15439aa228fdSmrg		;;
154480b026c6Smrg	c4x-* | tic4x-*)
154546374b8dSmrg		os=
154646374b8dSmrg		obj=coff
15479aa228fdSmrg		;;
15480c7e83b2Smrg	c8051-*)
154946374b8dSmrg		os=
155046374b8dSmrg		obj=elf
1551e39ce84cSmrg		;;
1552e39ce84cSmrg	clipper-intergraph)
1553e39ce84cSmrg		os=clix
15540c7e83b2Smrg		;;
15550c7e83b2Smrg	hexagon-*)
155646374b8dSmrg		os=
155746374b8dSmrg		obj=elf
15580c7e83b2Smrg		;;
15598f65982aSmrg	tic54x-*)
156046374b8dSmrg		os=
156146374b8dSmrg		obj=coff
15628f65982aSmrg		;;
15638f65982aSmrg	tic55x-*)
156446374b8dSmrg		os=
156546374b8dSmrg		obj=coff
15668f65982aSmrg		;;
15678f65982aSmrg	tic6x-*)
156846374b8dSmrg		os=
156946374b8dSmrg		obj=coff
15708f65982aSmrg		;;
15719aa228fdSmrg	# This must come before the *-dec entry.
15729aa228fdSmrg	pdp10-*)
1573e39ce84cSmrg		os=tops20
15749aa228fdSmrg		;;
15759aa228fdSmrg	pdp11-*)
1576e39ce84cSmrg		os=none
15779aa228fdSmrg		;;
15789aa228fdSmrg	*-dec | vax-*)
1579e39ce84cSmrg		os=ultrix4.2
15809aa228fdSmrg		;;
15819aa228fdSmrg	m68*-apollo)
1582e39ce84cSmrg		os=domain
15839aa228fdSmrg		;;
15849aa228fdSmrg	i386-sun)
1585e39ce84cSmrg		os=sunos4.0.2
15869aa228fdSmrg		;;
15879aa228fdSmrg	m68000-sun)
1588e39ce84cSmrg		os=sunos3
15899aa228fdSmrg		;;
15909aa228fdSmrg	m68*-cisco)
159146374b8dSmrg		os=
159246374b8dSmrg		obj=aout
15939aa228fdSmrg		;;
159480b026c6Smrg	mep-*)
159546374b8dSmrg		os=
159646374b8dSmrg		obj=elf
15978f65982aSmrg		;;
15989aa228fdSmrg	mips*-cisco)
159946374b8dSmrg		os=
160046374b8dSmrg		obj=elf
16019aa228fdSmrg		;;
160246374b8dSmrg	mips*-*|nanomips*-*)
160346374b8dSmrg		os=
160446374b8dSmrg		obj=elf
16059aa228fdSmrg		;;
16069aa228fdSmrg	or32-*)
160746374b8dSmrg		os=
160846374b8dSmrg		obj=coff
16099aa228fdSmrg		;;
16109aa228fdSmrg	*-tti)	# must be before sparc entry or we get the wrong os.
1611e39ce84cSmrg		os=sysv3
16129aa228fdSmrg		;;
16139aa228fdSmrg	sparc-* | *-sun)
1614e39ce84cSmrg		os=sunos4.1.1
16159aa228fdSmrg		;;
1616e39ce84cSmrg	pru-*)
161746374b8dSmrg		os=
161846374b8dSmrg		obj=elf
16199aa228fdSmrg		;;
1620e39ce84cSmrg	*-be)
1621e39ce84cSmrg		os=beos
16229aa228fdSmrg		;;
16239aa228fdSmrg	*-ibm)
1624e39ce84cSmrg		os=aix
16259aa228fdSmrg		;;
162680b026c6Smrg	*-knuth)
1627e39ce84cSmrg		os=mmixware
16289aa228fdSmrg		;;
16299aa228fdSmrg	*-wec)
1630e39ce84cSmrg		os=proelf
16319aa228fdSmrg		;;
16329aa228fdSmrg	*-winbond)
1633e39ce84cSmrg		os=proelf
16349aa228fdSmrg		;;
16359aa228fdSmrg	*-oki)
1636e39ce84cSmrg		os=proelf
16379aa228fdSmrg		;;
16389aa228fdSmrg	*-hp)
1639e39ce84cSmrg		os=hpux
16409aa228fdSmrg		;;
16419aa228fdSmrg	*-hitachi)
1642e39ce84cSmrg		os=hiux
16439aa228fdSmrg		;;
16449aa228fdSmrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
1645e39ce84cSmrg		os=sysv
16469aa228fdSmrg		;;
16479aa228fdSmrg	*-cbm)
1648e39ce84cSmrg		os=amigaos
16499aa228fdSmrg		;;
16509aa228fdSmrg	*-dg)
1651e39ce84cSmrg		os=dgux
16529aa228fdSmrg		;;
16539aa228fdSmrg	*-dolphin)
1654e39ce84cSmrg		os=sysv3
16559aa228fdSmrg		;;
16569aa228fdSmrg	m68k-ccur)
1657e39ce84cSmrg		os=rtu
16589aa228fdSmrg		;;
16599aa228fdSmrg	m88k-omron*)
1660e39ce84cSmrg		os=luna
16619aa228fdSmrg		;;
1662e39ce84cSmrg	*-next)
1663e39ce84cSmrg		os=nextstep
16649aa228fdSmrg		;;
16659aa228fdSmrg	*-sequent)
1666e39ce84cSmrg		os=ptx
16679aa228fdSmrg		;;
16689aa228fdSmrg	*-crds)
1669e39ce84cSmrg		os=unos
16709aa228fdSmrg		;;
16719aa228fdSmrg	*-ns)
1672e39ce84cSmrg		os=genix
16739aa228fdSmrg		;;
16749aa228fdSmrg	i370-*)
1675e39ce84cSmrg		os=mvs
16769aa228fdSmrg		;;
16779aa228fdSmrg	*-gould)
1678e39ce84cSmrg		os=sysv
16799aa228fdSmrg		;;
16809aa228fdSmrg	*-highlevel)
1681e39ce84cSmrg		os=bsd
16829aa228fdSmrg		;;
16839aa228fdSmrg	*-encore)
1684e39ce84cSmrg		os=bsd
16859aa228fdSmrg		;;
16869aa228fdSmrg	*-sgi)
1687e39ce84cSmrg		os=irix
16889aa228fdSmrg		;;
16899aa228fdSmrg	*-siemens)
1690e39ce84cSmrg		os=sysv4
16919aa228fdSmrg		;;
16929aa228fdSmrg	*-masscomp)
1693e39ce84cSmrg		os=rtu
16949aa228fdSmrg		;;
16959aa228fdSmrg	f30[01]-fujitsu | f700-fujitsu)
1696e39ce84cSmrg		os=uxpv
16979aa228fdSmrg		;;
16989aa228fdSmrg	*-rom68k)
169946374b8dSmrg		os=
170046374b8dSmrg		obj=coff
17019aa228fdSmrg		;;
17029aa228fdSmrg	*-*bug)
170346374b8dSmrg		os=
170446374b8dSmrg		obj=coff
17059aa228fdSmrg		;;
17069aa228fdSmrg	*-apple)
1707e39ce84cSmrg		os=macos
17089aa228fdSmrg		;;
17099aa228fdSmrg	*-atari*)
1710e39ce84cSmrg		os=mint
1711e39ce84cSmrg		;;
1712e39ce84cSmrg	*-wrs)
1713e39ce84cSmrg		os=vxworks
17149aa228fdSmrg		;;
17159aa228fdSmrg	*)
1716e39ce84cSmrg		os=none
17179aa228fdSmrg		;;
17189aa228fdSmrgesac
1719e39ce84cSmrg
17209aa228fdSmrgfi
17219aa228fdSmrg
172246374b8dSmrg# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ).
172346374b8dSmrg
1724e39ce84cSmrgcase $os in
1725e39ce84cSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
172646374b8dSmrg	llvm* | musl* | newlib* | relibc* | uclibc*)
1727e39ce84cSmrg		;;
1728e39ce84cSmrg	# Likewise for "kernel-abi"
1729e39ce84cSmrg	eabi* | gnueabi*)
1730e39ce84cSmrg		;;
1731e39ce84cSmrg	# VxWorks passes extra cpu info in the 4th filed.
1732e39ce84cSmrg	simlinux | simwindows | spe)
1733e39ce84cSmrg		;;
173446374b8dSmrg	# See `case $cpu-$os` validation below
173546374b8dSmrg	ghcjs)
173646374b8dSmrg		;;
1737e39ce84cSmrg	# Now accept the basic system types.
1738e39ce84cSmrg	# The portable systems comes first.
1739e39ce84cSmrg	# Each alternative MUST end in a * to match a version number.
1740e39ce84cSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
1741e39ce84cSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
1742e39ce84cSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
1743e39ce84cSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
1744e39ce84cSmrg	     | hiux* | abug | nacl* | netware* | windows* \
174546374b8dSmrg	     | os9* | macos* | osx* | ios* | tvos* | watchos* \
1746e39ce84cSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
1747e39ce84cSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
1748e39ce84cSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
1749e39ce84cSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
1750e39ce84cSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
1751e39ce84cSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
1752e39ce84cSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
1753e39ce84cSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
175446374b8dSmrg	     | bosx* | nextstep* | cxux* | oabi* \
175546374b8dSmrg	     | ptx* | ecoff* | winnt* | domain* | vsta* \
1756e39ce84cSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
1757e39ce84cSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
175846374b8dSmrg	     | cygwin* | msys* | moss* | proelf* | rtems* \
1759e39ce84cSmrg	     | midipix* | mingw32* | mingw64* | mint* \
1760e39ce84cSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
1761e39ce84cSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
1762e39ce84cSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
1763e39ce84cSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
1764e39ce84cSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
1765e39ce84cSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
1766e39ce84cSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
1767e39ce84cSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
1768e39ce84cSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
1769e39ce84cSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
177046374b8dSmrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
177146374b8dSmrg	     | fiwix* | mlibc* | cos* | mbr* | ironclad* )
1772e39ce84cSmrg		;;
1773e39ce84cSmrg	# This one is extra strict with allowed versions
1774e39ce84cSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
1775e39ce84cSmrg		# Don't forget version if it is 3.2v4 or newer.
1776e39ce84cSmrg		;;
177746374b8dSmrg	# This refers to builds using the UEFI calling convention
177846374b8dSmrg	# (which depends on the architecture) and PE file format.
177946374b8dSmrg	# Note that this is both a different calling convention and
178046374b8dSmrg	# different file format than that of GNU-EFI
178146374b8dSmrg	# (x86_64-w64-mingw32).
178246374b8dSmrg	uefi)
178346374b8dSmrg		;;
1784e39ce84cSmrg	none)
1785e39ce84cSmrg		;;
178646374b8dSmrg	kernel* | msvc* )
178746374b8dSmrg		# Restricted further below
178846374b8dSmrg		;;
178946374b8dSmrg	'')
179046374b8dSmrg		if test x"$obj" = x
179146374b8dSmrg		then
179246374b8dSmrg			echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
179346374b8dSmrg		fi
179446374b8dSmrg		;;
1795e39ce84cSmrg	*)
179646374b8dSmrg		echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
179746374b8dSmrg		exit 1
179846374b8dSmrg		;;
179946374b8dSmrgesac
180046374b8dSmrg
180146374b8dSmrgcase $obj in
180246374b8dSmrg	aout* | coff* | elf* | pe*)
180346374b8dSmrg		;;
180446374b8dSmrg	'')
180546374b8dSmrg		# empty is fine
180646374b8dSmrg		;;
180746374b8dSmrg	*)
180846374b8dSmrg		echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
180946374b8dSmrg		exit 1
181046374b8dSmrg		;;
181146374b8dSmrgesac
181246374b8dSmrg
181346374b8dSmrg# Here we handle the constraint that a (synthetic) cpu and os are
181446374b8dSmrg# valid only in combination with each other and nowhere else.
181546374b8dSmrgcase $cpu-$os in
181646374b8dSmrg	# The "javascript-unknown-ghcjs" triple is used by GHC; we
181746374b8dSmrg	# accept it here in order to tolerate that, but reject any
181846374b8dSmrg	# variations.
181946374b8dSmrg	javascript-ghcjs)
182046374b8dSmrg		;;
182146374b8dSmrg	javascript-* | *-ghcjs)
182246374b8dSmrg		echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
1823e39ce84cSmrg		exit 1
1824e39ce84cSmrg		;;
1825e39ce84cSmrgesac
1826e39ce84cSmrg
1827e39ce84cSmrg# As a final step for OS-related things, validate the OS-kernel combination
1828e39ce84cSmrg# (given a valid OS), if there is a kernel.
182946374b8dSmrgcase $kernel-$os-$obj in
183046374b8dSmrg	linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
183146374b8dSmrg		    | linux-mlibc*- | linux-musl*- | linux-newlib*- \
183246374b8dSmrg		    | linux-relibc*- | linux-uclibc*- )
183346374b8dSmrg		;;
183446374b8dSmrg	uclinux-uclibc*- )
183546374b8dSmrg		;;
183646374b8dSmrg	managarm-mlibc*- | managarm-kernel*- )
1837e39ce84cSmrg		;;
183846374b8dSmrg	windows*-msvc*-)
1839e39ce84cSmrg		;;
184046374b8dSmrg	-dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
184146374b8dSmrg		    | -uclibc*- )
1842e39ce84cSmrg		# These are just libc implementations, not actual OSes, and thus
1843e39ce84cSmrg		# require a kernel.
184446374b8dSmrg		echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
1845e39ce84cSmrg		exit 1
1846e39ce84cSmrg		;;
184746374b8dSmrg	-kernel*- )
184846374b8dSmrg		echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
184946374b8dSmrg		exit 1
1850e39ce84cSmrg		;;
185146374b8dSmrg	*-kernel*- )
185246374b8dSmrg		echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
185346374b8dSmrg		exit 1
1854e39ce84cSmrg		;;
185546374b8dSmrg	*-msvc*- )
185646374b8dSmrg		echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
185746374b8dSmrg		exit 1
1858e39ce84cSmrg		;;
185946374b8dSmrg	kfreebsd*-gnu*- | kopensolaris*-gnu*-)
186046374b8dSmrg		;;
186146374b8dSmrg	vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
186246374b8dSmrg		;;
186346374b8dSmrg	nto-qnx*-)
186446374b8dSmrg		;;
186546374b8dSmrg	os2-emx-)
1866e39ce84cSmrg		;;
186746374b8dSmrg	*-eabi*- | *-gnueabi*-)
1868e39ce84cSmrg		;;
186946374b8dSmrg	none--*)
187046374b8dSmrg		# None (no kernel, i.e. freestanding / bare metal),
187146374b8dSmrg		# can be paired with an machine code file format
187246374b8dSmrg		;;
187346374b8dSmrg	-*-)
1874e39ce84cSmrg		# Blank kernel with real OS is always fine.
1875e39ce84cSmrg		;;
187646374b8dSmrg	--*)
187746374b8dSmrg		# Blank kernel and OS with real machine code file format is always fine.
187846374b8dSmrg		;;
187946374b8dSmrg	*-*-*)
188046374b8dSmrg		echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
1881e39ce84cSmrg		exit 1
1882e39ce84cSmrg		;;
1883e39ce84cSmrgesac
1884e39ce84cSmrg
18859aa228fdSmrg# Here we handle the case where we know the os, and the CPU type, but not the
18869aa228fdSmrg# manufacturer.  We pick the logical manufacturer.
1887e39ce84cSmrgcase $vendor in
1888e39ce84cSmrg	unknown)
1889e39ce84cSmrg		case $cpu-$os in
1890e39ce84cSmrg			*-riscix*)
18919aa228fdSmrg				vendor=acorn
18929aa228fdSmrg				;;
1893e39ce84cSmrg			*-sunos*)
18949aa228fdSmrg				vendor=sun
18959aa228fdSmrg				;;
1896e39ce84cSmrg			*-cnk* | *-aix*)
18979aa228fdSmrg				vendor=ibm
18989aa228fdSmrg				;;
1899e39ce84cSmrg			*-beos*)
19009aa228fdSmrg				vendor=be
19019aa228fdSmrg				;;
1902e39ce84cSmrg			*-hpux*)
19039aa228fdSmrg				vendor=hp
19049aa228fdSmrg				;;
1905e39ce84cSmrg			*-mpeix*)
19069aa228fdSmrg				vendor=hp
19079aa228fdSmrg				;;
1908e39ce84cSmrg			*-hiux*)
19099aa228fdSmrg				vendor=hitachi
19109aa228fdSmrg				;;
1911e39ce84cSmrg			*-unos*)
19129aa228fdSmrg				vendor=crds
19139aa228fdSmrg				;;
1914e39ce84cSmrg			*-dgux*)
19159aa228fdSmrg				vendor=dg
19169aa228fdSmrg				;;
1917e39ce84cSmrg			*-luna*)
19189aa228fdSmrg				vendor=omron
19199aa228fdSmrg				;;
1920e39ce84cSmrg			*-genix*)
19219aa228fdSmrg				vendor=ns
19229aa228fdSmrg				;;
1923e39ce84cSmrg			*-clix*)
1924e39ce84cSmrg				vendor=intergraph
1925e39ce84cSmrg				;;
1926e39ce84cSmrg			*-mvs* | *-opened*)
1927e39ce84cSmrg				vendor=ibm
1928e39ce84cSmrg				;;
1929e39ce84cSmrg			*-os400*)
19309aa228fdSmrg				vendor=ibm
19319aa228fdSmrg				;;
1932e39ce84cSmrg			s390-* | s390x-*)
19339aa228fdSmrg				vendor=ibm
19349aa228fdSmrg				;;
1935e39ce84cSmrg			*-ptx*)
19369aa228fdSmrg				vendor=sequent
19379aa228fdSmrg				;;
1938e39ce84cSmrg			*-tpf*)
19399aa228fdSmrg				vendor=ibm
19409aa228fdSmrg				;;
1941e39ce84cSmrg			*-vxsim* | *-vxworks* | *-windiss*)
19429aa228fdSmrg				vendor=wrs
19439aa228fdSmrg				;;
1944e39ce84cSmrg			*-aux*)
19459aa228fdSmrg				vendor=apple
19469aa228fdSmrg				;;
1947e39ce84cSmrg			*-hms*)
19489aa228fdSmrg				vendor=hitachi
19499aa228fdSmrg				;;
1950e39ce84cSmrg			*-mpw* | *-macos*)
19519aa228fdSmrg				vendor=apple
19529aa228fdSmrg				;;
1953e39ce84cSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
19549aa228fdSmrg				vendor=atari
19559aa228fdSmrg				;;
1956e39ce84cSmrg			*-vos*)
19579aa228fdSmrg				vendor=stratus
19589aa228fdSmrg				;;
19599aa228fdSmrg		esac
19609aa228fdSmrg		;;
19619aa228fdSmrgesac
19629aa228fdSmrg
196346374b8dSmrgecho "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
19649aa228fdSmrgexit
19659aa228fdSmrg
19669aa228fdSmrg# Local variables:
1967e39ce84cSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
19689aa228fdSmrg# time-stamp-start: "timestamp='"
19699aa228fdSmrg# time-stamp-format: "%:y-%02m-%02d"
19709aa228fdSmrg# time-stamp-end: "'"
19719aa228fdSmrg# End:
1972