10ed7c580Smrg#! /bin/sh
20ed7c580Smrg# Configuration validation subroutine script.
3a0cd246fSmrg#   Copyright 1992-2024 Free Software Foundation, Inc.
40ed7c580Smrg
51a28b98bSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
61a28b98bSmrg
7a0cd246fSmrgtimestamp='2024-01-01'
80ed7c580Smrg
90ed7c580Smrg# This file is free software; you can redistribute it and/or modify it
100ed7c580Smrg# under the terms of the GNU General Public License as published by
11a0cd246fSmrg# the Free Software Foundation, either version 3 of the License, or
120ed7c580Smrg# (at your option) any later version.
130ed7c580Smrg#
140ed7c580Smrg# This program is distributed in the hope that it will be useful, but
150ed7c580Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
160ed7c580Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
170ed7c580Smrg# General Public License for more details.
180ed7c580Smrg#
190ed7c580Smrg# You should have received a copy of the GNU General Public License
201a28b98bSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
210ed7c580Smrg#
220ed7c580Smrg# As a special exception to the GNU General Public License, if you
230ed7c580Smrg# distribute this file as part of a program that contains a
240ed7c580Smrg# configuration script generated by Autoconf, you may include it under
250ed7c580Smrg# the same distribution terms that you use for the rest of that
260ed7c580Smrg# program.  This Exception is an additional permission under section 7
270ed7c580Smrg# of the GNU General Public License, version 3 ("GPLv3").
280ed7c580Smrg
290ed7c580Smrg
301a28b98bSmrg# Please send patches to <config-patches@gnu.org>.
310ed7c580Smrg#
320ed7c580Smrg# Configuration subroutine to validate and canonicalize a configuration type.
330ed7c580Smrg# Supply the specified configuration type as an argument.
340ed7c580Smrg# If it is invalid, we print an error message on stderr and exit with code 1.
350ed7c580Smrg# Otherwise, we print the canonical config type on stdout and succeed.
360ed7c580Smrg
370ed7c580Smrg# You can get the latest version of this script from:
381a28b98bSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
390ed7c580Smrg
400ed7c580Smrg# This file is supposed to be the same for all GNU packages
410ed7c580Smrg# and recognize all the CPU types, system types and aliases
420ed7c580Smrg# that are meaningful with *any* GNU software.
430ed7c580Smrg# Each package is responsible for reporting which valid configurations
440ed7c580Smrg# it does not support.  The user should be able to distinguish
450ed7c580Smrg# a failure to support a valid configuration from a meaningless
460ed7c580Smrg# configuration.
470ed7c580Smrg
480ed7c580Smrg# The goal of this file is to map all the various variations of a given
490ed7c580Smrg# machine specification into a single specification in the form:
500ed7c580Smrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
510ed7c580Smrg# or in some cases, the newer four-part form:
520ed7c580Smrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
530ed7c580Smrg# It is wrong to echo any other type of specification.
540ed7c580Smrg
551a28b98bSmrg# The "shellcheck disable" line above the timestamp inhibits complaints
561a28b98bSmrg# about features and limitations of the classic Bourne shell that were
571a28b98bSmrg# superseded or lifted in POSIX.  However, this script identifies a wide
581a28b98bSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
591a28b98bSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still
601a28b98bSmrg# have a pre-POSIX /bin/sh.
611a28b98bSmrg
620ed7c580Smrgme=`echo "$0" | sed -e 's,.*/,,'`
630ed7c580Smrg
640ed7c580Smrgusage="\
651a28b98bSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
660ed7c580Smrg
670ed7c580SmrgCanonicalize a configuration name.
680ed7c580Smrg
691a28b98bSmrgOptions:
700ed7c580Smrg  -h, --help         print this help, then exit
710ed7c580Smrg  -t, --time-stamp   print date of last modification, then exit
720ed7c580Smrg  -v, --version      print version number, then exit
730ed7c580Smrg
740ed7c580SmrgReport bugs and patches to <config-patches@gnu.org>."
750ed7c580Smrg
760ed7c580Smrgversion="\
770ed7c580SmrgGNU config.sub ($timestamp)
780ed7c580Smrg
79a0cd246fSmrgCopyright 1992-2024 Free Software Foundation, Inc.
800ed7c580Smrg
810ed7c580SmrgThis is free software; see the source for copying conditions.  There is NO
820ed7c580Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
830ed7c580Smrg
840ed7c580Smrghelp="
85a0cd246fSmrgTry '$me --help' for more information."
860ed7c580Smrg
870ed7c580Smrg# Parse command line
880ed7c580Smrgwhile test $# -gt 0 ; do
890ed7c580Smrg  case $1 in
900ed7c580Smrg    --time-stamp | --time* | -t )
910ed7c580Smrg       echo "$timestamp" ; exit ;;
920ed7c580Smrg    --version | -v )
930ed7c580Smrg       echo "$version" ; exit ;;
940ed7c580Smrg    --help | --h* | -h )
950ed7c580Smrg       echo "$usage"; exit ;;
960ed7c580Smrg    -- )     # Stop option processing
970ed7c580Smrg       shift; break ;;
980ed7c580Smrg    - )	# Use stdin as input.
990ed7c580Smrg       break ;;
1000ed7c580Smrg    -* )
1011a28b98bSmrg       echo "$me: invalid option $1$help" >&2
1020ed7c580Smrg       exit 1 ;;
1030ed7c580Smrg
1040ed7c580Smrg    *local*)
1050ed7c580Smrg       # First pass through any local machine types.
1061a28b98bSmrg       echo "$1"
1070ed7c580Smrg       exit ;;
1080ed7c580Smrg
1090ed7c580Smrg    * )
1100ed7c580Smrg       break ;;
1110ed7c580Smrg  esac
1120ed7c580Smrgdone
1130ed7c580Smrg
1140ed7c580Smrgcase $# in
1150ed7c580Smrg 0) echo "$me: missing argument$help" >&2
1160ed7c580Smrg    exit 1;;
1170ed7c580Smrg 1) ;;
1180ed7c580Smrg *) echo "$me: too many arguments$help" >&2
1190ed7c580Smrg    exit 1;;
1200ed7c580Smrgesac
1210ed7c580Smrg
1221a28b98bSmrg# Split fields of configuration type
1231a28b98bSmrg# shellcheck disable=SC2162
1241a28b98bSmrgsaved_IFS=$IFS
1251a28b98bSmrgIFS="-" read field1 field2 field3 field4 <<EOF
1261a28b98bSmrg$1
1271a28b98bSmrgEOF
1281a28b98bSmrgIFS=$saved_IFS
1290ed7c580Smrg
1301a28b98bSmrg# Separate into logical components for further validation
1311a28b98bSmrgcase $1 in
1321a28b98bSmrg	*-*-*-*-*)
133a0cd246fSmrg		echo "Invalid configuration '$1': more than four components" >&2
1341a28b98bSmrg		exit 1
1350ed7c580Smrg		;;
1361a28b98bSmrg	*-*-*-*)
1371a28b98bSmrg		basic_machine=$field1-$field2
1381a28b98bSmrg		basic_os=$field3-$field4
1390ed7c580Smrg		;;
1401a28b98bSmrg	*-*-*)
1411a28b98bSmrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
1421a28b98bSmrg		# parts
1431a28b98bSmrg		maybe_os=$field2-$field3
1441a28b98bSmrg		case $maybe_os in
1451a28b98bSmrg			nto-qnx* | linux-* | uclinux-uclibc* \
1461a28b98bSmrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
1471a28b98bSmrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
148a0cd246fSmrg			| storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \
149a0cd246fSmrg			| windows-* )
1501a28b98bSmrg				basic_machine=$field1
1511a28b98bSmrg				basic_os=$maybe_os
1521a28b98bSmrg				;;
1531a28b98bSmrg			android-linux)
1541a28b98bSmrg				basic_machine=$field1-unknown
1551a28b98bSmrg				basic_os=linux-android
1561a28b98bSmrg				;;
1571a28b98bSmrg			*)
1581a28b98bSmrg				basic_machine=$field1-$field2
1591a28b98bSmrg				basic_os=$field3
1601a28b98bSmrg				;;
1611a28b98bSmrg		esac
1620ed7c580Smrg		;;
1631a28b98bSmrg	*-*)
1641a28b98bSmrg		# A lone config we happen to match not fitting any pattern
1651a28b98bSmrg		case $field1-$field2 in
1661a28b98bSmrg			decstation-3100)
1671a28b98bSmrg				basic_machine=mips-dec
1681a28b98bSmrg				basic_os=
1691a28b98bSmrg				;;
1701a28b98bSmrg			*-*)
1711a28b98bSmrg				# Second component is usually, but not always the OS
1721a28b98bSmrg				case $field2 in
1731a28b98bSmrg					# Prevent following clause from handling this valid os
1741a28b98bSmrg					sun*os*)
1751a28b98bSmrg						basic_machine=$field1
1761a28b98bSmrg						basic_os=$field2
1771a28b98bSmrg						;;
1781a28b98bSmrg					zephyr*)
1791a28b98bSmrg						basic_machine=$field1-unknown
1801a28b98bSmrg						basic_os=$field2
1811a28b98bSmrg						;;
1821a28b98bSmrg					# Manufacturers
1831a28b98bSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
1841a28b98bSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
1851a28b98bSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
1861a28b98bSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
1871a28b98bSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
1881a28b98bSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
1891a28b98bSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
1901a28b98bSmrg					| microblaze* | sim | cisco \
1911a28b98bSmrg					| oki | wec | wrs | winbond)
1921a28b98bSmrg						basic_machine=$field1-$field2
1931a28b98bSmrg						basic_os=
1941a28b98bSmrg						;;
1951a28b98bSmrg					*)
1961a28b98bSmrg						basic_machine=$field1
1971a28b98bSmrg						basic_os=$field2
1981a28b98bSmrg						;;
1991a28b98bSmrg				esac
2001a28b98bSmrg			;;
2011a28b98bSmrg		esac
2020ed7c580Smrg		;;
2031a28b98bSmrg	*)
2041a28b98bSmrg		# Convert single-component short-hands not valid as part of
2051a28b98bSmrg		# multi-component configurations.
2061a28b98bSmrg		case $field1 in
2071a28b98bSmrg			386bsd)
2081a28b98bSmrg				basic_machine=i386-pc
2091a28b98bSmrg				basic_os=bsd
2101a28b98bSmrg				;;
2111a28b98bSmrg			a29khif)
2121a28b98bSmrg				basic_machine=a29k-amd
2131a28b98bSmrg				basic_os=udi
2141a28b98bSmrg				;;
2151a28b98bSmrg			adobe68k)
2161a28b98bSmrg				basic_machine=m68010-adobe
2171a28b98bSmrg				basic_os=scout
2181a28b98bSmrg				;;
2191a28b98bSmrg			alliant)
2201a28b98bSmrg				basic_machine=fx80-alliant
2211a28b98bSmrg				basic_os=
2221a28b98bSmrg				;;
2231a28b98bSmrg			altos | altos3068)
2241a28b98bSmrg				basic_machine=m68k-altos
2251a28b98bSmrg				basic_os=
2261a28b98bSmrg				;;
2271a28b98bSmrg			am29k)
2281a28b98bSmrg				basic_machine=a29k-none
2291a28b98bSmrg				basic_os=bsd
2301a28b98bSmrg				;;
2311a28b98bSmrg			amdahl)
2321a28b98bSmrg				basic_machine=580-amdahl
2331a28b98bSmrg				basic_os=sysv
2341a28b98bSmrg				;;
2351a28b98bSmrg			amiga)
2361a28b98bSmrg				basic_machine=m68k-unknown
2371a28b98bSmrg				basic_os=
2381a28b98bSmrg				;;
2391a28b98bSmrg			amigaos | amigados)
2401a28b98bSmrg				basic_machine=m68k-unknown
2411a28b98bSmrg				basic_os=amigaos
2421a28b98bSmrg				;;
2431a28b98bSmrg			amigaunix | amix)
2441a28b98bSmrg				basic_machine=m68k-unknown
2451a28b98bSmrg				basic_os=sysv4
2461a28b98bSmrg				;;
2471a28b98bSmrg			apollo68)
2481a28b98bSmrg				basic_machine=m68k-apollo
2491a28b98bSmrg				basic_os=sysv
2501a28b98bSmrg				;;
2511a28b98bSmrg			apollo68bsd)
2521a28b98bSmrg				basic_machine=m68k-apollo
2531a28b98bSmrg				basic_os=bsd
2541a28b98bSmrg				;;
2551a28b98bSmrg			aros)
2561a28b98bSmrg				basic_machine=i386-pc
2571a28b98bSmrg				basic_os=aros
2581a28b98bSmrg				;;
2591a28b98bSmrg			aux)
2601a28b98bSmrg				basic_machine=m68k-apple
2611a28b98bSmrg				basic_os=aux
2621a28b98bSmrg				;;
2631a28b98bSmrg			balance)
2641a28b98bSmrg				basic_machine=ns32k-sequent
2651a28b98bSmrg				basic_os=dynix
2661a28b98bSmrg				;;
2671a28b98bSmrg			blackfin)
2681a28b98bSmrg				basic_machine=bfin-unknown
2691a28b98bSmrg				basic_os=linux
2701a28b98bSmrg				;;
2711a28b98bSmrg			cegcc)
2721a28b98bSmrg				basic_machine=arm-unknown
2731a28b98bSmrg				basic_os=cegcc
2741a28b98bSmrg				;;
2751a28b98bSmrg			convex-c1)
2761a28b98bSmrg				basic_machine=c1-convex
2771a28b98bSmrg				basic_os=bsd
2781a28b98bSmrg				;;
2791a28b98bSmrg			convex-c2)
2801a28b98bSmrg				basic_machine=c2-convex
2811a28b98bSmrg				basic_os=bsd
2821a28b98bSmrg				;;
2831a28b98bSmrg			convex-c32)
2841a28b98bSmrg				basic_machine=c32-convex
2851a28b98bSmrg				basic_os=bsd
2861a28b98bSmrg				;;
2871a28b98bSmrg			convex-c34)
2881a28b98bSmrg				basic_machine=c34-convex
2891a28b98bSmrg				basic_os=bsd
2901a28b98bSmrg				;;
2911a28b98bSmrg			convex-c38)
2921a28b98bSmrg				basic_machine=c38-convex
2931a28b98bSmrg				basic_os=bsd
2941a28b98bSmrg				;;
2951a28b98bSmrg			cray)
2961a28b98bSmrg				basic_machine=j90-cray
2971a28b98bSmrg				basic_os=unicos
2981a28b98bSmrg				;;
2991a28b98bSmrg			crds | unos)
3001a28b98bSmrg				basic_machine=m68k-crds
3011a28b98bSmrg				basic_os=
3021a28b98bSmrg				;;
3031a28b98bSmrg			da30)
3041a28b98bSmrg				basic_machine=m68k-da30
3051a28b98bSmrg				basic_os=
3061a28b98bSmrg				;;
3071a28b98bSmrg			decstation | pmax | pmin | dec3100 | decstatn)
3081a28b98bSmrg				basic_machine=mips-dec
3091a28b98bSmrg				basic_os=
3101a28b98bSmrg				;;
3111a28b98bSmrg			delta88)
3121a28b98bSmrg				basic_machine=m88k-motorola
3131a28b98bSmrg				basic_os=sysv3
3141a28b98bSmrg				;;
3151a28b98bSmrg			dicos)
3161a28b98bSmrg				basic_machine=i686-pc
3171a28b98bSmrg				basic_os=dicos
3181a28b98bSmrg				;;
3191a28b98bSmrg			djgpp)
3201a28b98bSmrg				basic_machine=i586-pc
3211a28b98bSmrg				basic_os=msdosdjgpp
3221a28b98bSmrg				;;
3231a28b98bSmrg			ebmon29k)
3241a28b98bSmrg				basic_machine=a29k-amd
3251a28b98bSmrg				basic_os=ebmon
3261a28b98bSmrg				;;
3271a28b98bSmrg			es1800 | OSE68k | ose68k | ose | OSE)
3281a28b98bSmrg				basic_machine=m68k-ericsson
3291a28b98bSmrg				basic_os=ose
3301a28b98bSmrg				;;
3311a28b98bSmrg			gmicro)
3321a28b98bSmrg				basic_machine=tron-gmicro
3331a28b98bSmrg				basic_os=sysv
3341a28b98bSmrg				;;
3351a28b98bSmrg			go32)
3361a28b98bSmrg				basic_machine=i386-pc
3371a28b98bSmrg				basic_os=go32
3381a28b98bSmrg				;;
3391a28b98bSmrg			h8300hms)
3401a28b98bSmrg				basic_machine=h8300-hitachi
3411a28b98bSmrg				basic_os=hms
3421a28b98bSmrg				;;
3431a28b98bSmrg			h8300xray)
3441a28b98bSmrg				basic_machine=h8300-hitachi
3451a28b98bSmrg				basic_os=xray
3461a28b98bSmrg				;;
3471a28b98bSmrg			h8500hms)
3481a28b98bSmrg				basic_machine=h8500-hitachi
3491a28b98bSmrg				basic_os=hms
3501a28b98bSmrg				;;
3511a28b98bSmrg			harris)
3521a28b98bSmrg				basic_machine=m88k-harris
3531a28b98bSmrg				basic_os=sysv3
3541a28b98bSmrg				;;
3551a28b98bSmrg			hp300 | hp300hpux)
3561a28b98bSmrg				basic_machine=m68k-hp
3571a28b98bSmrg				basic_os=hpux
3581a28b98bSmrg				;;
3591a28b98bSmrg			hp300bsd)
3601a28b98bSmrg				basic_machine=m68k-hp
3611a28b98bSmrg				basic_os=bsd
3621a28b98bSmrg				;;
3631a28b98bSmrg			hppaosf)
3641a28b98bSmrg				basic_machine=hppa1.1-hp
3651a28b98bSmrg				basic_os=osf
3661a28b98bSmrg				;;
3671a28b98bSmrg			hppro)
3681a28b98bSmrg				basic_machine=hppa1.1-hp
3691a28b98bSmrg				basic_os=proelf
3701a28b98bSmrg				;;
3711a28b98bSmrg			i386mach)
3721a28b98bSmrg				basic_machine=i386-mach
3731a28b98bSmrg				basic_os=mach
3741a28b98bSmrg				;;
3751a28b98bSmrg			isi68 | isi)
3761a28b98bSmrg				basic_machine=m68k-isi
3771a28b98bSmrg				basic_os=sysv
3781a28b98bSmrg				;;
3791a28b98bSmrg			m68knommu)
3801a28b98bSmrg				basic_machine=m68k-unknown
3811a28b98bSmrg				basic_os=linux
3821a28b98bSmrg				;;
3831a28b98bSmrg			magnum | m3230)
3841a28b98bSmrg				basic_machine=mips-mips
3851a28b98bSmrg				basic_os=sysv
3861a28b98bSmrg				;;
3871a28b98bSmrg			merlin)
3881a28b98bSmrg				basic_machine=ns32k-utek
3891a28b98bSmrg				basic_os=sysv
3901a28b98bSmrg				;;
3911a28b98bSmrg			mingw64)
3921a28b98bSmrg				basic_machine=x86_64-pc
3931a28b98bSmrg				basic_os=mingw64
3941a28b98bSmrg				;;
3951a28b98bSmrg			mingw32)
3961a28b98bSmrg				basic_machine=i686-pc
3971a28b98bSmrg				basic_os=mingw32
3981a28b98bSmrg				;;
3991a28b98bSmrg			mingw32ce)
4001a28b98bSmrg				basic_machine=arm-unknown
4011a28b98bSmrg				basic_os=mingw32ce
4021a28b98bSmrg				;;
4031a28b98bSmrg			monitor)
4041a28b98bSmrg				basic_machine=m68k-rom68k
4051a28b98bSmrg				basic_os=coff
4061a28b98bSmrg				;;
4071a28b98bSmrg			morphos)
4081a28b98bSmrg				basic_machine=powerpc-unknown
4091a28b98bSmrg				basic_os=morphos
4101a28b98bSmrg				;;
4111a28b98bSmrg			moxiebox)
4121a28b98bSmrg				basic_machine=moxie-unknown
4131a28b98bSmrg				basic_os=moxiebox
4141a28b98bSmrg				;;
4151a28b98bSmrg			msdos)
4161a28b98bSmrg				basic_machine=i386-pc
4171a28b98bSmrg				basic_os=msdos
4181a28b98bSmrg				;;
4191a28b98bSmrg			msys)
4201a28b98bSmrg				basic_machine=i686-pc
4211a28b98bSmrg				basic_os=msys
4221a28b98bSmrg				;;
4231a28b98bSmrg			mvs)
4241a28b98bSmrg				basic_machine=i370-ibm
4251a28b98bSmrg				basic_os=mvs
4261a28b98bSmrg				;;
4271a28b98bSmrg			nacl)
4281a28b98bSmrg				basic_machine=le32-unknown
4291a28b98bSmrg				basic_os=nacl
4301a28b98bSmrg				;;
4311a28b98bSmrg			ncr3000)
4321a28b98bSmrg				basic_machine=i486-ncr
4331a28b98bSmrg				basic_os=sysv4
4341a28b98bSmrg				;;
4351a28b98bSmrg			netbsd386)
4361a28b98bSmrg				basic_machine=i386-pc
4371a28b98bSmrg				basic_os=netbsd
4381a28b98bSmrg				;;
4391a28b98bSmrg			netwinder)
4401a28b98bSmrg				basic_machine=armv4l-rebel
4411a28b98bSmrg				basic_os=linux
4421a28b98bSmrg				;;
4431a28b98bSmrg			news | news700 | news800 | news900)
4441a28b98bSmrg				basic_machine=m68k-sony
4451a28b98bSmrg				basic_os=newsos
4461a28b98bSmrg				;;
4471a28b98bSmrg			news1000)
4481a28b98bSmrg				basic_machine=m68030-sony
4491a28b98bSmrg				basic_os=newsos
4501a28b98bSmrg				;;
4511a28b98bSmrg			necv70)
4521a28b98bSmrg				basic_machine=v70-nec
4531a28b98bSmrg				basic_os=sysv
4541a28b98bSmrg				;;
4551a28b98bSmrg			nh3000)
4561a28b98bSmrg				basic_machine=m68k-harris
4571a28b98bSmrg				basic_os=cxux
4581a28b98bSmrg				;;
4591a28b98bSmrg			nh[45]000)
4601a28b98bSmrg				basic_machine=m88k-harris
4611a28b98bSmrg				basic_os=cxux
4621a28b98bSmrg				;;
4631a28b98bSmrg			nindy960)
4641a28b98bSmrg				basic_machine=i960-intel
4651a28b98bSmrg				basic_os=nindy
4661a28b98bSmrg				;;
4671a28b98bSmrg			mon960)
4681a28b98bSmrg				basic_machine=i960-intel
4691a28b98bSmrg				basic_os=mon960
4701a28b98bSmrg				;;
4711a28b98bSmrg			nonstopux)
4721a28b98bSmrg				basic_machine=mips-compaq
4731a28b98bSmrg				basic_os=nonstopux
4741a28b98bSmrg				;;
4751a28b98bSmrg			os400)
4761a28b98bSmrg				basic_machine=powerpc-ibm
4771a28b98bSmrg				basic_os=os400
4781a28b98bSmrg				;;
4791a28b98bSmrg			OSE68000 | ose68000)
4801a28b98bSmrg				basic_machine=m68000-ericsson
4811a28b98bSmrg				basic_os=ose
4821a28b98bSmrg				;;
4831a28b98bSmrg			os68k)
4841a28b98bSmrg				basic_machine=m68k-none
4851a28b98bSmrg				basic_os=os68k
4861a28b98bSmrg				;;
4871a28b98bSmrg			paragon)
4881a28b98bSmrg				basic_machine=i860-intel
4891a28b98bSmrg				basic_os=osf
4901a28b98bSmrg				;;
4911a28b98bSmrg			parisc)
4921a28b98bSmrg				basic_machine=hppa-unknown
4931a28b98bSmrg				basic_os=linux
4941a28b98bSmrg				;;
4951a28b98bSmrg			psp)
4961a28b98bSmrg				basic_machine=mipsallegrexel-sony
4971a28b98bSmrg				basic_os=psp
4981a28b98bSmrg				;;
4991a28b98bSmrg			pw32)
5001a28b98bSmrg				basic_machine=i586-unknown
5011a28b98bSmrg				basic_os=pw32
5021a28b98bSmrg				;;
5031a28b98bSmrg			rdos | rdos64)
5041a28b98bSmrg				basic_machine=x86_64-pc
5051a28b98bSmrg				basic_os=rdos
5061a28b98bSmrg				;;
5071a28b98bSmrg			rdos32)
5081a28b98bSmrg				basic_machine=i386-pc
5091a28b98bSmrg				basic_os=rdos
5101a28b98bSmrg				;;
5111a28b98bSmrg			rom68k)
5121a28b98bSmrg				basic_machine=m68k-rom68k
5131a28b98bSmrg				basic_os=coff
5141a28b98bSmrg				;;
5151a28b98bSmrg			sa29200)
5161a28b98bSmrg				basic_machine=a29k-amd
5171a28b98bSmrg				basic_os=udi
5181a28b98bSmrg				;;
5191a28b98bSmrg			sei)
5201a28b98bSmrg				basic_machine=mips-sei
5211a28b98bSmrg				basic_os=seiux
5221a28b98bSmrg				;;
5231a28b98bSmrg			sequent)
5241a28b98bSmrg				basic_machine=i386-sequent
5251a28b98bSmrg				basic_os=
5261a28b98bSmrg				;;
5271a28b98bSmrg			sps7)
5281a28b98bSmrg				basic_machine=m68k-bull
5291a28b98bSmrg				basic_os=sysv2
5301a28b98bSmrg				;;
5311a28b98bSmrg			st2000)
5321a28b98bSmrg				basic_machine=m68k-tandem
5331a28b98bSmrg				basic_os=
5341a28b98bSmrg				;;
5351a28b98bSmrg			stratus)
5361a28b98bSmrg				basic_machine=i860-stratus
5371a28b98bSmrg				basic_os=sysv4
5381a28b98bSmrg				;;
5391a28b98bSmrg			sun2)
5401a28b98bSmrg				basic_machine=m68000-sun
5411a28b98bSmrg				basic_os=
5421a28b98bSmrg				;;
5431a28b98bSmrg			sun2os3)
5441a28b98bSmrg				basic_machine=m68000-sun
5451a28b98bSmrg				basic_os=sunos3
5461a28b98bSmrg				;;
5471a28b98bSmrg			sun2os4)
5481a28b98bSmrg				basic_machine=m68000-sun
5491a28b98bSmrg				basic_os=sunos4
5501a28b98bSmrg				;;
5511a28b98bSmrg			sun3)
5521a28b98bSmrg				basic_machine=m68k-sun
5531a28b98bSmrg				basic_os=
5541a28b98bSmrg				;;
5551a28b98bSmrg			sun3os3)
5561a28b98bSmrg				basic_machine=m68k-sun
5571a28b98bSmrg				basic_os=sunos3
5581a28b98bSmrg				;;
5591a28b98bSmrg			sun3os4)
5601a28b98bSmrg				basic_machine=m68k-sun
5611a28b98bSmrg				basic_os=sunos4
5621a28b98bSmrg				;;
5631a28b98bSmrg			sun4)
5641a28b98bSmrg				basic_machine=sparc-sun
5651a28b98bSmrg				basic_os=
5661a28b98bSmrg				;;
5671a28b98bSmrg			sun4os3)
5681a28b98bSmrg				basic_machine=sparc-sun
5691a28b98bSmrg				basic_os=sunos3
5701a28b98bSmrg				;;
5711a28b98bSmrg			sun4os4)
5721a28b98bSmrg				basic_machine=sparc-sun
5731a28b98bSmrg				basic_os=sunos4
5741a28b98bSmrg				;;
5751a28b98bSmrg			sun4sol2)
5761a28b98bSmrg				basic_machine=sparc-sun
5771a28b98bSmrg				basic_os=solaris2
5781a28b98bSmrg				;;
5791a28b98bSmrg			sun386 | sun386i | roadrunner)
5801a28b98bSmrg				basic_machine=i386-sun
5811a28b98bSmrg				basic_os=
5821a28b98bSmrg				;;
5831a28b98bSmrg			sv1)
5841a28b98bSmrg				basic_machine=sv1-cray
5851a28b98bSmrg				basic_os=unicos
5861a28b98bSmrg				;;
5871a28b98bSmrg			symmetry)
5881a28b98bSmrg				basic_machine=i386-sequent
5891a28b98bSmrg				basic_os=dynix
5901a28b98bSmrg				;;
5911a28b98bSmrg			t3e)
5921a28b98bSmrg				basic_machine=alphaev5-cray
5931a28b98bSmrg				basic_os=unicos
5941a28b98bSmrg				;;
5951a28b98bSmrg			t90)
5961a28b98bSmrg				basic_machine=t90-cray
5971a28b98bSmrg				basic_os=unicos
5981a28b98bSmrg				;;
5991a28b98bSmrg			toad1)
6001a28b98bSmrg				basic_machine=pdp10-xkl
6011a28b98bSmrg				basic_os=tops20
6021a28b98bSmrg				;;
6031a28b98bSmrg			tpf)
6041a28b98bSmrg				basic_machine=s390x-ibm
6051a28b98bSmrg				basic_os=tpf
6061a28b98bSmrg				;;
6071a28b98bSmrg			udi29k)
6081a28b98bSmrg				basic_machine=a29k-amd
6091a28b98bSmrg				basic_os=udi
6101a28b98bSmrg				;;
6111a28b98bSmrg			ultra3)
6121a28b98bSmrg				basic_machine=a29k-nyu
6131a28b98bSmrg				basic_os=sym1
6141a28b98bSmrg				;;
6151a28b98bSmrg			v810 | necv810)
6161a28b98bSmrg				basic_machine=v810-nec
6171a28b98bSmrg				basic_os=none
6181a28b98bSmrg				;;
6191a28b98bSmrg			vaxv)
6201a28b98bSmrg				basic_machine=vax-dec
6211a28b98bSmrg				basic_os=sysv
6221a28b98bSmrg				;;
6231a28b98bSmrg			vms)
6241a28b98bSmrg				basic_machine=vax-dec
6251a28b98bSmrg				basic_os=vms
6261a28b98bSmrg				;;
6271a28b98bSmrg			vsta)
6281a28b98bSmrg				basic_machine=i386-pc
6291a28b98bSmrg				basic_os=vsta
6301a28b98bSmrg				;;
6311a28b98bSmrg			vxworks960)
6321a28b98bSmrg				basic_machine=i960-wrs
6331a28b98bSmrg				basic_os=vxworks
6341a28b98bSmrg				;;
6351a28b98bSmrg			vxworks68)
6361a28b98bSmrg				basic_machine=m68k-wrs
6371a28b98bSmrg				basic_os=vxworks
6381a28b98bSmrg				;;
6391a28b98bSmrg			vxworks29k)
6401a28b98bSmrg				basic_machine=a29k-wrs
6411a28b98bSmrg				basic_os=vxworks
6421a28b98bSmrg				;;
6431a28b98bSmrg			xbox)
6441a28b98bSmrg				basic_machine=i686-pc
6451a28b98bSmrg				basic_os=mingw32
6461a28b98bSmrg				;;
6471a28b98bSmrg			ymp)
6481a28b98bSmrg				basic_machine=ymp-cray
6491a28b98bSmrg				basic_os=unicos
6501a28b98bSmrg				;;
6511a28b98bSmrg			*)
6521a28b98bSmrg				basic_machine=$1
6531a28b98bSmrg				basic_os=
6541a28b98bSmrg				;;
6551a28b98bSmrg		esac
6560ed7c580Smrg		;;
6570ed7c580Smrgesac
6580ed7c580Smrg
6591a28b98bSmrg# Decode 1-component or ad-hoc basic machines
6600ed7c580Smrgcase $basic_machine in
6611a28b98bSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
6621a28b98bSmrg	# some cases the only manufacturer, in others, it is the most popular.
6631a28b98bSmrg	w89k)
6641a28b98bSmrg		cpu=hppa1.1
6651a28b98bSmrg		vendor=winbond
6660ed7c580Smrg		;;
6671a28b98bSmrg	op50n)
6681a28b98bSmrg		cpu=hppa1.1
6691a28b98bSmrg		vendor=oki
6700ed7c580Smrg		;;
6711a28b98bSmrg	op60c)
6721a28b98bSmrg		cpu=hppa1.1
6731a28b98bSmrg		vendor=oki
6740ed7c580Smrg		;;
6751a28b98bSmrg	ibm*)
6761a28b98bSmrg		cpu=i370
6771a28b98bSmrg		vendor=ibm
6780ed7c580Smrg		;;
6791a28b98bSmrg	orion105)
6801a28b98bSmrg		cpu=clipper
6811a28b98bSmrg		vendor=highlevel
6820ed7c580Smrg		;;
6831a28b98bSmrg	mac | mpw | mac-mpw)
6841a28b98bSmrg		cpu=m68k
6851a28b98bSmrg		vendor=apple
6860ed7c580Smrg		;;
6871a28b98bSmrg	pmac | pmac-mpw)
6881a28b98bSmrg		cpu=powerpc
6891a28b98bSmrg		vendor=apple
6900ed7c580Smrg		;;
6911a28b98bSmrg
6920ed7c580Smrg	# Recognize the various machine names and aliases which stand
6930ed7c580Smrg	# for a CPU type and a company and sometimes even an OS.
6940ed7c580Smrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
6951a28b98bSmrg		cpu=m68000
6961a28b98bSmrg		vendor=att
6970ed7c580Smrg		;;
6980ed7c580Smrg	3b*)
6991a28b98bSmrg		cpu=we32k
7001a28b98bSmrg		vendor=att
7010ed7c580Smrg		;;
7020ed7c580Smrg	bluegene*)
7031a28b98bSmrg		cpu=powerpc
7041a28b98bSmrg		vendor=ibm
7051a28b98bSmrg		basic_os=cnk
7060ed7c580Smrg		;;
7070ed7c580Smrg	decsystem10* | dec10*)
7081a28b98bSmrg		cpu=pdp10
7091a28b98bSmrg		vendor=dec
7101a28b98bSmrg		basic_os=tops10
7110ed7c580Smrg		;;
7120ed7c580Smrg	decsystem20* | dec20*)
7131a28b98bSmrg		cpu=pdp10
7141a28b98bSmrg		vendor=dec
7151a28b98bSmrg		basic_os=tops20
7160ed7c580Smrg		;;
7170ed7c580Smrg	delta | 3300 | motorola-3300 | motorola-delta \
7180ed7c580Smrg	      | 3300-motorola | delta-motorola)
7191a28b98bSmrg		cpu=m68k
7201a28b98bSmrg		vendor=motorola
7210ed7c580Smrg		;;
7221a28b98bSmrg	dpx2*)
7231a28b98bSmrg		cpu=m68k
7241a28b98bSmrg		vendor=bull
7251a28b98bSmrg		basic_os=sysv3
7260ed7c580Smrg		;;
7270ed7c580Smrg	encore | umax | mmax)
7281a28b98bSmrg		cpu=ns32k
7291a28b98bSmrg		vendor=encore
7300ed7c580Smrg		;;
7311a28b98bSmrg	elxsi)
7321a28b98bSmrg		cpu=elxsi
7331a28b98bSmrg		vendor=elxsi
7341a28b98bSmrg		basic_os=${basic_os:-bsd}
7350ed7c580Smrg		;;
7360ed7c580Smrg	fx2800)
7371a28b98bSmrg		cpu=i860
7381a28b98bSmrg		vendor=alliant
7390ed7c580Smrg		;;
7400ed7c580Smrg	genix)
7411a28b98bSmrg		cpu=ns32k
7421a28b98bSmrg		vendor=ns
7430ed7c580Smrg		;;
7440ed7c580Smrg	h3050r* | hiux*)
7451a28b98bSmrg		cpu=hppa1.1
7461a28b98bSmrg		vendor=hitachi
7471a28b98bSmrg		basic_os=hiuxwe2
7480ed7c580Smrg		;;
7490ed7c580Smrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
7501a28b98bSmrg		cpu=hppa1.0
7511a28b98bSmrg		vendor=hp
7520ed7c580Smrg		;;
7530ed7c580Smrg	hp9k2[0-9][0-9] | hp9k31[0-9])
7541a28b98bSmrg		cpu=m68000
7551a28b98bSmrg		vendor=hp
7560ed7c580Smrg		;;
7570ed7c580Smrg	hp9k3[2-9][0-9])
7581a28b98bSmrg		cpu=m68k
7591a28b98bSmrg		vendor=hp
7600ed7c580Smrg		;;
7610ed7c580Smrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
7621a28b98bSmrg		cpu=hppa1.0
7631a28b98bSmrg		vendor=hp
7640ed7c580Smrg		;;
7650ed7c580Smrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
7661a28b98bSmrg		cpu=hppa1.1
7671a28b98bSmrg		vendor=hp
7680ed7c580Smrg		;;
7690ed7c580Smrg	hp9k78[0-9] | hp78[0-9])
7700ed7c580Smrg		# FIXME: really hppa2.0-hp
7711a28b98bSmrg		cpu=hppa1.1
7721a28b98bSmrg		vendor=hp
7730ed7c580Smrg		;;
7740ed7c580Smrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
7750ed7c580Smrg		# FIXME: really hppa2.0-hp
7761a28b98bSmrg		cpu=hppa1.1
7771a28b98bSmrg		vendor=hp
7780ed7c580Smrg		;;
7790ed7c580Smrg	hp9k8[0-9][13679] | hp8[0-9][13679])
7801a28b98bSmrg		cpu=hppa1.1
7811a28b98bSmrg		vendor=hp
7820ed7c580Smrg		;;
7830ed7c580Smrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
7841a28b98bSmrg		cpu=hppa1.0
7851a28b98bSmrg		vendor=hp
7860ed7c580Smrg		;;
7870ed7c580Smrg	i*86v32)
7881a28b98bSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7891a28b98bSmrg		vendor=pc
7901a28b98bSmrg		basic_os=sysv32
7910ed7c580Smrg		;;
7920ed7c580Smrg	i*86v4*)
7931a28b98bSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7941a28b98bSmrg		vendor=pc
7951a28b98bSmrg		basic_os=sysv4
7960ed7c580Smrg		;;
7970ed7c580Smrg	i*86v)
7981a28b98bSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7991a28b98bSmrg		vendor=pc
8001a28b98bSmrg		basic_os=sysv
8010ed7c580Smrg		;;
8020ed7c580Smrg	i*86sol2)
8031a28b98bSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
8041a28b98bSmrg		vendor=pc
8051a28b98bSmrg		basic_os=solaris2
8060ed7c580Smrg		;;
8071a28b98bSmrg	j90 | j90-cray)
8081a28b98bSmrg		cpu=j90
8091a28b98bSmrg		vendor=cray
8101a28b98bSmrg		basic_os=${basic_os:-unicos}
8110ed7c580Smrg		;;
8120ed7c580Smrg	iris | iris4d)
8131a28b98bSmrg		cpu=mips
8141a28b98bSmrg		vendor=sgi
8151a28b98bSmrg		case $basic_os in
8161a28b98bSmrg		    irix*)
8170ed7c580Smrg			;;
8180ed7c580Smrg		    *)
8191a28b98bSmrg			basic_os=irix4
8200ed7c580Smrg			;;
8210ed7c580Smrg		esac
8220ed7c580Smrg		;;
8230ed7c580Smrg	miniframe)
8241a28b98bSmrg		cpu=m68000
8251a28b98bSmrg		vendor=convergent
8260ed7c580Smrg		;;
8271a28b98bSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
8281a28b98bSmrg		cpu=m68k
8291a28b98bSmrg		vendor=atari
8301a28b98bSmrg		basic_os=mint
8310ed7c580Smrg		;;
8320ed7c580Smrg	news-3600 | risc-news)
8331a28b98bSmrg		cpu=mips
8341a28b98bSmrg		vendor=sony
8351a28b98bSmrg		basic_os=newsos
8361a28b98bSmrg		;;
8371a28b98bSmrg	next | m*-next)
8381a28b98bSmrg		cpu=m68k
8391a28b98bSmrg		vendor=next
8401a28b98bSmrg		case $basic_os in
8411a28b98bSmrg		    openstep*)
8421a28b98bSmrg		        ;;
8431a28b98bSmrg		    nextstep*)
8440ed7c580Smrg			;;
8451a28b98bSmrg		    ns2*)
8461a28b98bSmrg		      basic_os=nextstep2
8470ed7c580Smrg			;;
8480ed7c580Smrg		    *)
8491a28b98bSmrg		      basic_os=nextstep3
8500ed7c580Smrg			;;
8510ed7c580Smrg		esac
8520ed7c580Smrg		;;
8530ed7c580Smrg	np1)
8541a28b98bSmrg		cpu=np1
8551a28b98bSmrg		vendor=gould
8560ed7c580Smrg		;;
8570ed7c580Smrg	op50n-* | op60c-*)
8581a28b98bSmrg		cpu=hppa1.1
8591a28b98bSmrg		vendor=oki
8601a28b98bSmrg		basic_os=proelf
8610ed7c580Smrg		;;
8620ed7c580Smrg	pa-hitachi)
8631a28b98bSmrg		cpu=hppa1.1
8641a28b98bSmrg		vendor=hitachi
8651a28b98bSmrg		basic_os=hiuxwe2
8660ed7c580Smrg		;;
8670ed7c580Smrg	pbd)
8681a28b98bSmrg		cpu=sparc
8691a28b98bSmrg		vendor=tti
8700ed7c580Smrg		;;
8710ed7c580Smrg	pbb)
8721a28b98bSmrg		cpu=m68k
8731a28b98bSmrg		vendor=tti
8740ed7c580Smrg		;;
8751a28b98bSmrg	pc532)
8761a28b98bSmrg		cpu=ns32k
8771a28b98bSmrg		vendor=pc532
8780ed7c580Smrg		;;
8790ed7c580Smrg	pn)
8801a28b98bSmrg		cpu=pn
8811a28b98bSmrg		vendor=gould
8820ed7c580Smrg		;;
8831a28b98bSmrg	power)
8841a28b98bSmrg		cpu=power
8851a28b98bSmrg		vendor=ibm
8860ed7c580Smrg		;;
8870ed7c580Smrg	ps2)
8881a28b98bSmrg		cpu=i386
8891a28b98bSmrg		vendor=ibm
8900ed7c580Smrg		;;
8910ed7c580Smrg	rm[46]00)
8921a28b98bSmrg		cpu=mips
8931a28b98bSmrg		vendor=siemens
8940ed7c580Smrg		;;
8950ed7c580Smrg	rtpc | rtpc-*)
8961a28b98bSmrg		cpu=romp
8971a28b98bSmrg		vendor=ibm
8980ed7c580Smrg		;;
8991a28b98bSmrg	sde)
9001a28b98bSmrg		cpu=mipsisa32
9011a28b98bSmrg		vendor=sde
9021a28b98bSmrg		basic_os=${basic_os:-elf}
9030ed7c580Smrg		;;
9041a28b98bSmrg	simso-wrs)
9051a28b98bSmrg		cpu=sparclite
9061a28b98bSmrg		vendor=wrs
9071a28b98bSmrg		basic_os=vxworks
9080ed7c580Smrg		;;
9091a28b98bSmrg	tower | tower-32)
9101a28b98bSmrg		cpu=m68k
9111a28b98bSmrg		vendor=ncr
9120ed7c580Smrg		;;
9131a28b98bSmrg	vpp*|vx|vx-*)
9141a28b98bSmrg		cpu=f301
9151a28b98bSmrg		vendor=fujitsu
9160ed7c580Smrg		;;
9171a28b98bSmrg	w65)
9181a28b98bSmrg		cpu=w65
9191a28b98bSmrg		vendor=wdc
9200ed7c580Smrg		;;
9211a28b98bSmrg	w89k-*)
9221a28b98bSmrg		cpu=hppa1.1
9231a28b98bSmrg		vendor=winbond
9241a28b98bSmrg		basic_os=proelf
9250ed7c580Smrg		;;
9261a28b98bSmrg	none)
9271a28b98bSmrg		cpu=none
9281a28b98bSmrg		vendor=none
9290ed7c580Smrg		;;
9301a28b98bSmrg	leon|leon[3-9])
9311a28b98bSmrg		cpu=sparc
9321a28b98bSmrg		vendor=$basic_machine
9330ed7c580Smrg		;;
9341a28b98bSmrg	leon-*|leon[3-9]-*)
9351a28b98bSmrg		cpu=sparc
9361a28b98bSmrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
9370ed7c580Smrg		;;
9381a28b98bSmrg
9391a28b98bSmrg	*-*)
9401a28b98bSmrg		# shellcheck disable=SC2162
9411a28b98bSmrg		saved_IFS=$IFS
9421a28b98bSmrg		IFS="-" read cpu vendor <<EOF
9431a28b98bSmrg$basic_machine
9441a28b98bSmrgEOF
9451a28b98bSmrg		IFS=$saved_IFS
9460ed7c580Smrg		;;
947a0cd246fSmrg	# We use 'pc' rather than 'unknown'
9481a28b98bSmrg	# because (1) that's what they normally are, and
9491a28b98bSmrg	# (2) the word "unknown" tends to confuse beginning users.
9501a28b98bSmrg	i*86 | x86_64)
9511a28b98bSmrg		cpu=$basic_machine
9521a28b98bSmrg		vendor=pc
9530ed7c580Smrg		;;
9541a28b98bSmrg	# These rules are duplicated from below for sake of the special case above;
9551a28b98bSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
9561a28b98bSmrg	pc98)
9571a28b98bSmrg		cpu=i386
9581a28b98bSmrg		vendor=pc
9590ed7c580Smrg		;;
9601a28b98bSmrg	x64 | amd64)
9611a28b98bSmrg		cpu=x86_64
9621a28b98bSmrg		vendor=pc
9630ed7c580Smrg		;;
9641a28b98bSmrg	# Recognize the basic CPU types without company name.
9651a28b98bSmrg	*)
9661a28b98bSmrg		cpu=$basic_machine
9671a28b98bSmrg		vendor=unknown
9680ed7c580Smrg		;;
9691a28b98bSmrgesac
9701a28b98bSmrg
9711a28b98bSmrgunset -v basic_machine
9721a28b98bSmrg
9731a28b98bSmrg# Decode basic machines in the full and proper CPU-Company form.
9741a28b98bSmrgcase $cpu-$vendor in
9751a28b98bSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
9761a28b98bSmrg	# some cases the only manufacturer, in others, it is the most popular.
9771a28b98bSmrg	craynv-unknown)
9781a28b98bSmrg		vendor=cray
9791a28b98bSmrg		basic_os=${basic_os:-unicosmp}
9800ed7c580Smrg		;;
9811a28b98bSmrg	c90-unknown | c90-cray)
9821a28b98bSmrg		vendor=cray
9831a28b98bSmrg		basic_os=${Basic_os:-unicos}
9840ed7c580Smrg		;;
9851a28b98bSmrg	fx80-unknown)
9861a28b98bSmrg		vendor=alliant
9870ed7c580Smrg		;;
9881a28b98bSmrg	romp-unknown)
9891a28b98bSmrg		vendor=ibm
9900ed7c580Smrg		;;
9911a28b98bSmrg	mmix-unknown)
9921a28b98bSmrg		vendor=knuth
9930ed7c580Smrg		;;
9941a28b98bSmrg	microblaze-unknown | microblazeel-unknown)
9951a28b98bSmrg		vendor=xilinx
9960ed7c580Smrg		;;
9971a28b98bSmrg	rs6000-unknown)
9981a28b98bSmrg		vendor=ibm
9990ed7c580Smrg		;;
10001a28b98bSmrg	vax-unknown)
10011a28b98bSmrg		vendor=dec
10020ed7c580Smrg		;;
10031a28b98bSmrg	pdp11-unknown)
10041a28b98bSmrg		vendor=dec
10050ed7c580Smrg		;;
10061a28b98bSmrg	we32k-unknown)
10071a28b98bSmrg		vendor=att
10080ed7c580Smrg		;;
10091a28b98bSmrg	cydra-unknown)
10101a28b98bSmrg		vendor=cydrome
10110ed7c580Smrg		;;
10121a28b98bSmrg	i370-ibm*)
10131a28b98bSmrg		vendor=ibm
10140ed7c580Smrg		;;
10151a28b98bSmrg	orion-unknown)
10161a28b98bSmrg		vendor=highlevel
10170ed7c580Smrg		;;
10181a28b98bSmrg	xps-unknown | xps100-unknown)
10191a28b98bSmrg		cpu=xps100
10201a28b98bSmrg		vendor=honeywell
10210ed7c580Smrg		;;
10221a28b98bSmrg
10231a28b98bSmrg	# Here we normalize CPU types with a missing or matching vendor
1024a0cd246fSmrg	armh-unknown | armh-alt)
1025a0cd246fSmrg		cpu=armv7l
1026a0cd246fSmrg		vendor=alt
1027a0cd246fSmrg		basic_os=${basic_os:-linux-gnueabihf}
1028a0cd246fSmrg		;;
10291a28b98bSmrg	dpx20-unknown | dpx20-bull)
10301a28b98bSmrg		cpu=rs6000
10311a28b98bSmrg		vendor=bull
10321a28b98bSmrg		basic_os=${basic_os:-bosx}
10330ed7c580Smrg		;;
10341a28b98bSmrg
10351a28b98bSmrg	# Here we normalize CPU types irrespective of the vendor
10361a28b98bSmrg	amd64-*)
10371a28b98bSmrg		cpu=x86_64
10380ed7c580Smrg		;;
10391a28b98bSmrg	blackfin-*)
10401a28b98bSmrg		cpu=bfin
10411a28b98bSmrg		basic_os=linux
10420ed7c580Smrg		;;
10431a28b98bSmrg	c54x-*)
10441a28b98bSmrg		cpu=tic54x
10450ed7c580Smrg		;;
10461a28b98bSmrg	c55x-*)
10471a28b98bSmrg		cpu=tic55x
10480ed7c580Smrg		;;
10491a28b98bSmrg	c6x-*)
10501a28b98bSmrg		cpu=tic6x
10510ed7c580Smrg		;;
10521a28b98bSmrg	e500v[12]-*)
10531a28b98bSmrg		cpu=powerpc
10541a28b98bSmrg		basic_os=${basic_os}"spe"
10550ed7c580Smrg		;;
10561a28b98bSmrg	mips3*-*)
10571a28b98bSmrg		cpu=mips64
10580ed7c580Smrg		;;
10591a28b98bSmrg	ms1-*)
10601a28b98bSmrg		cpu=mt
10610ed7c580Smrg		;;
10621a28b98bSmrg	m68knommu-*)
10631a28b98bSmrg		cpu=m68k
10641a28b98bSmrg		basic_os=linux
10650ed7c580Smrg		;;
10661a28b98bSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
10671a28b98bSmrg		cpu=s12z
10680ed7c580Smrg		;;
10691a28b98bSmrg	openrisc-*)
10701a28b98bSmrg		cpu=or32
10710ed7c580Smrg		;;
10721a28b98bSmrg	parisc-*)
10731a28b98bSmrg		cpu=hppa
10741a28b98bSmrg		basic_os=linux
10750ed7c580Smrg		;;
10761a28b98bSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
10771a28b98bSmrg		cpu=i586
10780ed7c580Smrg		;;
1079a0cd246fSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
10801a28b98bSmrg		cpu=i686
10810ed7c580Smrg		;;
10821a28b98bSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
10831a28b98bSmrg		cpu=i686
10840ed7c580Smrg		;;
10851a28b98bSmrg	pentium4-*)
10861a28b98bSmrg		cpu=i786
10870ed7c580Smrg		;;
10881a28b98bSmrg	pc98-*)
10891a28b98bSmrg		cpu=i386
10900ed7c580Smrg		;;
10911a28b98bSmrg	ppc-* | ppcbe-*)
10921a28b98bSmrg		cpu=powerpc
10930ed7c580Smrg		;;
10941a28b98bSmrg	ppcle-* | powerpclittle-*)
10951a28b98bSmrg		cpu=powerpcle
10960ed7c580Smrg		;;
10971a28b98bSmrg	ppc64-*)
10981a28b98bSmrg		cpu=powerpc64
10990ed7c580Smrg		;;
11001a28b98bSmrg	ppc64le-* | powerpc64little-*)
11011a28b98bSmrg		cpu=powerpc64le
11020ed7c580Smrg		;;
11031a28b98bSmrg	sb1-*)
11041a28b98bSmrg		cpu=mipsisa64sb1
11050ed7c580Smrg		;;
11061a28b98bSmrg	sb1el-*)
11071a28b98bSmrg		cpu=mipsisa64sb1el
11080ed7c580Smrg		;;
11091a28b98bSmrg	sh5e[lb]-*)
11101a28b98bSmrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
11110ed7c580Smrg		;;
11121a28b98bSmrg	spur-*)
11131a28b98bSmrg		cpu=spur
11140ed7c580Smrg		;;
11151a28b98bSmrg	strongarm-* | thumb-*)
11161a28b98bSmrg		cpu=arm
11170ed7c580Smrg		;;
11181a28b98bSmrg	tx39-*)
11191a28b98bSmrg		cpu=mipstx39
11200ed7c580Smrg		;;
11211a28b98bSmrg	tx39el-*)
11221a28b98bSmrg		cpu=mipstx39el
11230ed7c580Smrg		;;
11241a28b98bSmrg	x64-*)
11251a28b98bSmrg		cpu=x86_64
11260ed7c580Smrg		;;
11271a28b98bSmrg	xscale-* | xscalee[bl]-*)
11281a28b98bSmrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
11290ed7c580Smrg		;;
1130a0cd246fSmrg	arm64-* | aarch64le-*)
11311a28b98bSmrg		cpu=aarch64
11320ed7c580Smrg		;;
11331a28b98bSmrg
11341a28b98bSmrg	# Recognize the canonical CPU Types that limit and/or modify the
11351a28b98bSmrg	# company names they are paired with.
11361a28b98bSmrg	cr16-*)
11371a28b98bSmrg		basic_os=${basic_os:-elf}
11380ed7c580Smrg		;;
11391a28b98bSmrg	crisv32-* | etraxfs*-*)
11401a28b98bSmrg		cpu=crisv32
11411a28b98bSmrg		vendor=axis
11420ed7c580Smrg		;;
11431a28b98bSmrg	cris-* | etrax*-*)
11441a28b98bSmrg		cpu=cris
11451a28b98bSmrg		vendor=axis
11460ed7c580Smrg		;;
11471a28b98bSmrg	crx-*)
11481a28b98bSmrg		basic_os=${basic_os:-elf}
11490ed7c580Smrg		;;
11501a28b98bSmrg	neo-tandem)
11511a28b98bSmrg		cpu=neo
11521a28b98bSmrg		vendor=tandem
11530ed7c580Smrg		;;
11541a28b98bSmrg	nse-tandem)
11551a28b98bSmrg		cpu=nse
11561a28b98bSmrg		vendor=tandem
11570ed7c580Smrg		;;
11581a28b98bSmrg	nsr-tandem)
11591a28b98bSmrg		cpu=nsr
11601a28b98bSmrg		vendor=tandem
11610ed7c580Smrg		;;
11621a28b98bSmrg	nsv-tandem)
11631a28b98bSmrg		cpu=nsv
11641a28b98bSmrg		vendor=tandem
11650ed7c580Smrg		;;
11661a28b98bSmrg	nsx-tandem)
11671a28b98bSmrg		cpu=nsx
11681a28b98bSmrg		vendor=tandem
11690ed7c580Smrg		;;
11701a28b98bSmrg	mipsallegrexel-sony)
11711a28b98bSmrg		cpu=mipsallegrexel
11721a28b98bSmrg		vendor=sony
11730ed7c580Smrg		;;
11741a28b98bSmrg	tile*-*)
11751a28b98bSmrg		basic_os=${basic_os:-linux-gnu}
11760ed7c580Smrg		;;
11771a28b98bSmrg
11780ed7c580Smrg	*)
11791a28b98bSmrg		# Recognize the canonical CPU types that are allowed with any
11801a28b98bSmrg		# company name.
11811a28b98bSmrg		case $cpu in
11821a28b98bSmrg			1750a | 580 \
11831a28b98bSmrg			| a29k \
1184a0cd246fSmrg			| aarch64 | aarch64_be | aarch64c | arm64ec \
11851a28b98bSmrg			| abacus \
11861a28b98bSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
11871a28b98bSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
11881a28b98bSmrg			| alphapca5[67] | alpha64pca5[67] \
11891a28b98bSmrg			| am33_2.0 \
11901a28b98bSmrg			| amdgcn \
11911a28b98bSmrg			| arc | arceb | arc32 | arc64 \
11921a28b98bSmrg			| arm | arm[lb]e | arme[lb] | armv* \
11931a28b98bSmrg			| avr | avr32 \
11941a28b98bSmrg			| asmjs \
11951a28b98bSmrg			| ba \
11961a28b98bSmrg			| be32 | be64 \
11971a28b98bSmrg			| bfin | bpf | bs2000 \
11981a28b98bSmrg			| c[123]* | c30 | [cjt]90 | c4x \
11991a28b98bSmrg			| c8051 | clipper | craynv | csky | cydra \
12001a28b98bSmrg			| d10v | d30v | dlx | dsp16xx \
12011a28b98bSmrg			| e2k | elxsi | epiphany \
12021a28b98bSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
1203a0cd246fSmrg			| javascript \
12041a28b98bSmrg			| h8300 | h8500 \
12051a28b98bSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
12061a28b98bSmrg			| hexagon \
12071a28b98bSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
12081a28b98bSmrg			| ip2k | iq2000 \
12091a28b98bSmrg			| k1om \
1210a0cd246fSmrg			| kvx \
12111a28b98bSmrg			| le32 | le64 \
12121a28b98bSmrg			| lm32 \
1213a0cd246fSmrg			| loongarch32 | loongarch64 \
12141a28b98bSmrg			| m32c | m32r | m32rle \
12151a28b98bSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
12161a28b98bSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
12171a28b98bSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
12181a28b98bSmrg			| microblaze | microblazeel \
1219a0cd246fSmrg			| mips* \
12201a28b98bSmrg			| mmix \
12211a28b98bSmrg			| mn10200 | mn10300 \
12221a28b98bSmrg			| moxie \
12231a28b98bSmrg			| mt \
12241a28b98bSmrg			| msp430 \
1225a0cd246fSmrg			| nanomips* \
12261a28b98bSmrg			| nds32 | nds32le | nds32be \
12271a28b98bSmrg			| nfp \
12281a28b98bSmrg			| nios | nios2 | nios2eb | nios2el \
12291a28b98bSmrg			| none | np1 | ns16k | ns32k | nvptx \
12301a28b98bSmrg			| open8 \
12311a28b98bSmrg			| or1k* \
12321a28b98bSmrg			| or32 \
12331a28b98bSmrg			| orion \
12341a28b98bSmrg			| picochip \
12351a28b98bSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
12361a28b98bSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
12371a28b98bSmrg			| pru \
12381a28b98bSmrg			| pyramid \
12391a28b98bSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
12401a28b98bSmrg			| rl78 | romp | rs6000 | rx \
12411a28b98bSmrg			| s390 | s390x \
12421a28b98bSmrg			| score \
12431a28b98bSmrg			| sh | shl \
12441a28b98bSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
12451a28b98bSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
12461a28b98bSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
12471a28b98bSmrg			| sparclite \
12481a28b98bSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
12491a28b98bSmrg			| spu \
12501a28b98bSmrg			| tahoe \
12511a28b98bSmrg			| thumbv7* \
12521a28b98bSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
12531a28b98bSmrg			| tron \
12541a28b98bSmrg			| ubicom32 \
12551a28b98bSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
12561a28b98bSmrg			| vax \
1257a0cd246fSmrg			| vc4 \
12581a28b98bSmrg			| visium \
12591a28b98bSmrg			| w65 \
12601a28b98bSmrg			| wasm32 | wasm64 \
12611a28b98bSmrg			| we32k \
12621a28b98bSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
12631a28b98bSmrg			| xstormy16 | xtensa* \
12641a28b98bSmrg			| ymp \
12651a28b98bSmrg			| z8k | z80)
12661a28b98bSmrg				;;
12671a28b98bSmrg
12681a28b98bSmrg			*)
1269a0cd246fSmrg				echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
12701a28b98bSmrg				exit 1
12711a28b98bSmrg				;;
12721a28b98bSmrg		esac
12730ed7c580Smrg		;;
12740ed7c580Smrgesac
12750ed7c580Smrg
12760ed7c580Smrg# Here we canonicalize certain aliases for manufacturers.
12771a28b98bSmrgcase $vendor in
12781a28b98bSmrg	digital*)
12791a28b98bSmrg		vendor=dec
12800ed7c580Smrg		;;
12811a28b98bSmrg	commodore*)
12821a28b98bSmrg		vendor=cbm
12830ed7c580Smrg		;;
12840ed7c580Smrg	*)
12850ed7c580Smrg		;;
12860ed7c580Smrgesac
12870ed7c580Smrg
12880ed7c580Smrg# Decode manufacturer-specific aliases for certain operating systems.
12890ed7c580Smrg
1290a0cd246fSmrgif test x"$basic_os" != x
12910ed7c580Smrgthen
12921a28b98bSmrg
1293a0cd246fSmrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
12941a28b98bSmrg# set os.
1295a0cd246fSmrgobj=
12961a28b98bSmrgcase $basic_os in
12971a28b98bSmrg	gnu/linux*)
12981a28b98bSmrg		kernel=linux
12991a28b98bSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
13001a28b98bSmrg		;;
13011a28b98bSmrg	os2-emx)
13021a28b98bSmrg		kernel=os2
13031a28b98bSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
13041a28b98bSmrg		;;
13051a28b98bSmrg	nto-qnx*)
13061a28b98bSmrg		kernel=nto
13071a28b98bSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
13081a28b98bSmrg		;;
13091a28b98bSmrg	*-*)
13101a28b98bSmrg		# shellcheck disable=SC2162
13111a28b98bSmrg		saved_IFS=$IFS
13121a28b98bSmrg		IFS="-" read kernel os <<EOF
13131a28b98bSmrg$basic_os
13141a28b98bSmrgEOF
13151a28b98bSmrg		IFS=$saved_IFS
13161a28b98bSmrg		;;
13171a28b98bSmrg	# Default OS when just kernel was specified
13181a28b98bSmrg	nto*)
13191a28b98bSmrg		kernel=nto
13201a28b98bSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
13211a28b98bSmrg		;;
13221a28b98bSmrg	linux*)
13231a28b98bSmrg		kernel=linux
13241a28b98bSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
13251a28b98bSmrg		;;
1326a0cd246fSmrg	managarm*)
1327a0cd246fSmrg		kernel=managarm
1328a0cd246fSmrg		os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
1329a0cd246fSmrg		;;
13301a28b98bSmrg	*)
13311a28b98bSmrg		kernel=
13321a28b98bSmrg		os=$basic_os
13331a28b98bSmrg		;;
13341a28b98bSmrgesac
13351a28b98bSmrg
13361a28b98bSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
13371a28b98bSmrg# etc.)
13380ed7c580Smrgcase $os in
13391a28b98bSmrg	# First match some system type aliases that might get confused
13401a28b98bSmrg	# with valid system types.
13411a28b98bSmrg	# solaris* is a basic system type, with this one exception.
13421a28b98bSmrg	auroraux)
13431a28b98bSmrg		os=auroraux
13440ed7c580Smrg		;;
13451a28b98bSmrg	bluegene*)
13461a28b98bSmrg		os=cnk
13470ed7c580Smrg		;;
13481a28b98bSmrg	solaris1 | solaris1.*)
13491a28b98bSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
13500ed7c580Smrg		;;
13511a28b98bSmrg	solaris)
13521a28b98bSmrg		os=solaris2
13530ed7c580Smrg		;;
13541a28b98bSmrg	unixware*)
13551a28b98bSmrg		os=sysv4.2uw
13560ed7c580Smrg		;;
13571a28b98bSmrg	# es1800 is here to avoid being matched by es* (a different OS)
13581a28b98bSmrg	es1800*)
13591a28b98bSmrg		os=ose
13600ed7c580Smrg		;;
13611a28b98bSmrg	# Some version numbers need modification
13621a28b98bSmrg	chorusos*)
13631a28b98bSmrg		os=chorusos
13640ed7c580Smrg		;;
13651a28b98bSmrg	isc)
13661a28b98bSmrg		os=isc2.2
13670ed7c580Smrg		;;
13681a28b98bSmrg	sco6)
13691a28b98bSmrg		os=sco5v6
13700ed7c580Smrg		;;
13711a28b98bSmrg	sco5)
13721a28b98bSmrg		os=sco3.2v5
13730ed7c580Smrg		;;
13741a28b98bSmrg	sco4)
13751a28b98bSmrg		os=sco3.2v4
13760ed7c580Smrg		;;
13771a28b98bSmrg	sco3.2.[4-9]*)
13781a28b98bSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
13790ed7c580Smrg		;;
13801a28b98bSmrg	sco*v* | scout)
13811a28b98bSmrg		# Don't match below
13820ed7c580Smrg		;;
13831a28b98bSmrg	sco*)
13841a28b98bSmrg		os=sco3.2v2
13850ed7c580Smrg		;;
13861a28b98bSmrg	psos*)
13871a28b98bSmrg		os=psos
13880ed7c580Smrg		;;
13891a28b98bSmrg	qnx*)
13901a28b98bSmrg		os=qnx
13910ed7c580Smrg		;;
13921a28b98bSmrg	hiux*)
13931a28b98bSmrg		os=hiuxwe2
13940ed7c580Smrg		;;
13951a28b98bSmrg	lynx*178)
13961a28b98bSmrg		os=lynxos178
13970ed7c580Smrg		;;
13981a28b98bSmrg	lynx*5)
13991a28b98bSmrg		os=lynxos5
14000ed7c580Smrg		;;
14011a28b98bSmrg	lynxos*)
14021a28b98bSmrg		# don't get caught up in next wildcard
14030ed7c580Smrg		;;
14041a28b98bSmrg	lynx*)
14051a28b98bSmrg		os=lynxos
14060ed7c580Smrg		;;
14071a28b98bSmrg	mac[0-9]*)
14081a28b98bSmrg		os=`echo "$os" | sed -e 's|mac|macos|'`
14090ed7c580Smrg		;;
14101a28b98bSmrg	opened*)
14111a28b98bSmrg		os=openedition
14120ed7c580Smrg		;;
14131a28b98bSmrg	os400*)
14141a28b98bSmrg		os=os400
14150ed7c580Smrg		;;
14161a28b98bSmrg	sunos5*)
14171a28b98bSmrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
14180ed7c580Smrg		;;
14191a28b98bSmrg	sunos6*)
14201a28b98bSmrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
14210ed7c580Smrg		;;
14221a28b98bSmrg	wince*)
14231a28b98bSmrg		os=wince
14240ed7c580Smrg		;;
14251a28b98bSmrg	utek*)
14261a28b98bSmrg		os=bsd
14270ed7c580Smrg		;;
14281a28b98bSmrg	dynix*)
14291a28b98bSmrg		os=bsd
14300ed7c580Smrg		;;
14311a28b98bSmrg	acis*)
14321a28b98bSmrg		os=aos
14330ed7c580Smrg		;;
14341a28b98bSmrg	atheos*)
14351a28b98bSmrg		os=atheos
14360ed7c580Smrg		;;
14371a28b98bSmrg	syllable*)
14381a28b98bSmrg		os=syllable
14390ed7c580Smrg		;;
14401a28b98bSmrg	386bsd)
14411a28b98bSmrg		os=bsd
14420ed7c580Smrg		;;
14431a28b98bSmrg	ctix* | uts*)
14441a28b98bSmrg		os=sysv
14450ed7c580Smrg		;;
14461a28b98bSmrg	nova*)
14471a28b98bSmrg		os=rtmk-nova
14480ed7c580Smrg		;;
14491a28b98bSmrg	ns2)
14501a28b98bSmrg		os=nextstep2
14510ed7c580Smrg		;;
14521a28b98bSmrg	# Preserve the version number of sinix5.
14531a28b98bSmrg	sinix5.*)
14541a28b98bSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
14550ed7c580Smrg		;;
14561a28b98bSmrg	sinix*)
14571a28b98bSmrg		os=sysv4
14580ed7c580Smrg		;;
14591a28b98bSmrg	tpf*)
14601a28b98bSmrg		os=tpf
14610ed7c580Smrg		;;
14621a28b98bSmrg	triton*)
14631a28b98bSmrg		os=sysv3
14640ed7c580Smrg		;;
14651a28b98bSmrg	oss*)
14661a28b98bSmrg		os=sysv3
14670ed7c580Smrg		;;
14681a28b98bSmrg	svr4*)
14691a28b98bSmrg		os=sysv4
14700ed7c580Smrg		;;
14711a28b98bSmrg	svr3)
14721a28b98bSmrg		os=sysv3
14730ed7c580Smrg		;;
14741a28b98bSmrg	sysvr4)
14751a28b98bSmrg		os=sysv4
14760ed7c580Smrg		;;
14771a28b98bSmrg	ose*)
14781a28b98bSmrg		os=ose
14790ed7c580Smrg		;;
14801a28b98bSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
14811a28b98bSmrg		os=mint
14820ed7c580Smrg		;;
14831a28b98bSmrg	dicos*)
14841a28b98bSmrg		os=dicos
14850ed7c580Smrg		;;
14861a28b98bSmrg	pikeos*)
14871a28b98bSmrg		# Until real need of OS specific support for
14881a28b98bSmrg		# particular features comes up, bare metal
14891a28b98bSmrg		# configurations are quite functional.
14901a28b98bSmrg		case $cpu in
14911a28b98bSmrg		    arm*)
14921a28b98bSmrg			os=eabi
14931a28b98bSmrg			;;
14941a28b98bSmrg		    *)
1495a0cd246fSmrg			os=
1496a0cd246fSmrg			obj=elf
14971a28b98bSmrg			;;
14981a28b98bSmrg		esac
14990ed7c580Smrg		;;
1500a0cd246fSmrg	aout* | coff* | elf* | pe*)
1501a0cd246fSmrg		# These are machine code file formats, not OSes
1502a0cd246fSmrg		obj=$os
1503a0cd246fSmrg		os=
1504a0cd246fSmrg		;;
15050ed7c580Smrg	*)
15061a28b98bSmrg		# No normalization, but not necessarily accepted, that comes below.
15070ed7c580Smrg		;;
15080ed7c580Smrgesac
15091a28b98bSmrg
15100ed7c580Smrgelse
15110ed7c580Smrg
15120ed7c580Smrg# Here we handle the default operating systems that come with various machines.
15130ed7c580Smrg# The value should be what the vendor currently ships out the door with their
15140ed7c580Smrg# machine or put another way, the most popular os provided with the machine.
15150ed7c580Smrg
15160ed7c580Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
15170ed7c580Smrg# "-sun"), then you have to tell the case statement up towards the top
15180ed7c580Smrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
15190ed7c580Smrg# will signal an error saying that MANUFACTURER isn't an operating
15200ed7c580Smrg# system, and we'll never get to this point.
15210ed7c580Smrg
15221a28b98bSmrgkernel=
1523a0cd246fSmrgobj=
15241a28b98bSmrgcase $cpu-$vendor in
15250ed7c580Smrg	score-*)
1526a0cd246fSmrg		os=
1527a0cd246fSmrg		obj=elf
15280ed7c580Smrg		;;
15290ed7c580Smrg	spu-*)
1530a0cd246fSmrg		os=
1531a0cd246fSmrg		obj=elf
15320ed7c580Smrg		;;
15330ed7c580Smrg	*-acorn)
15341a28b98bSmrg		os=riscix1.2
15350ed7c580Smrg		;;
15360ed7c580Smrg	arm*-rebel)
15371a28b98bSmrg		kernel=linux
15381a28b98bSmrg		os=gnu
15390ed7c580Smrg		;;
15400ed7c580Smrg	arm*-semi)
1541a0cd246fSmrg		os=
1542a0cd246fSmrg		obj=aout
15430ed7c580Smrg		;;
15440ed7c580Smrg	c4x-* | tic4x-*)
1545a0cd246fSmrg		os=
1546a0cd246fSmrg		obj=coff
15470ed7c580Smrg		;;
15480ed7c580Smrg	c8051-*)
1549a0cd246fSmrg		os=
1550a0cd246fSmrg		obj=elf
15511a28b98bSmrg		;;
15521a28b98bSmrg	clipper-intergraph)
15531a28b98bSmrg		os=clix
15540ed7c580Smrg		;;
15550ed7c580Smrg	hexagon-*)
1556a0cd246fSmrg		os=
1557a0cd246fSmrg		obj=elf
15580ed7c580Smrg		;;
15590ed7c580Smrg	tic54x-*)
1560a0cd246fSmrg		os=
1561a0cd246fSmrg		obj=coff
15620ed7c580Smrg		;;
15630ed7c580Smrg	tic55x-*)
1564a0cd246fSmrg		os=
1565a0cd246fSmrg		obj=coff
15660ed7c580Smrg		;;
15670ed7c580Smrg	tic6x-*)
1568a0cd246fSmrg		os=
1569a0cd246fSmrg		obj=coff
15700ed7c580Smrg		;;
15710ed7c580Smrg	# This must come before the *-dec entry.
15720ed7c580Smrg	pdp10-*)
15731a28b98bSmrg		os=tops20
15740ed7c580Smrg		;;
15750ed7c580Smrg	pdp11-*)
15761a28b98bSmrg		os=none
15770ed7c580Smrg		;;
15780ed7c580Smrg	*-dec | vax-*)
15791a28b98bSmrg		os=ultrix4.2
15800ed7c580Smrg		;;
15810ed7c580Smrg	m68*-apollo)
15821a28b98bSmrg		os=domain
15830ed7c580Smrg		;;
15840ed7c580Smrg	i386-sun)
15851a28b98bSmrg		os=sunos4.0.2
15860ed7c580Smrg		;;
15870ed7c580Smrg	m68000-sun)
15881a28b98bSmrg		os=sunos3
15890ed7c580Smrg		;;
15900ed7c580Smrg	m68*-cisco)
1591a0cd246fSmrg		os=
1592a0cd246fSmrg		obj=aout
15930ed7c580Smrg		;;
15940ed7c580Smrg	mep-*)
1595a0cd246fSmrg		os=
1596a0cd246fSmrg		obj=elf
15970ed7c580Smrg		;;
15980ed7c580Smrg	mips*-cisco)
1599a0cd246fSmrg		os=
1600a0cd246fSmrg		obj=elf
16010ed7c580Smrg		;;
1602a0cd246fSmrg	mips*-*|nanomips*-*)
1603a0cd246fSmrg		os=
1604a0cd246fSmrg		obj=elf
16050ed7c580Smrg		;;
16060ed7c580Smrg	or32-*)
1607a0cd246fSmrg		os=
1608a0cd246fSmrg		obj=coff
16090ed7c580Smrg		;;
16100ed7c580Smrg	*-tti)	# must be before sparc entry or we get the wrong os.
16111a28b98bSmrg		os=sysv3
16120ed7c580Smrg		;;
16130ed7c580Smrg	sparc-* | *-sun)
16141a28b98bSmrg		os=sunos4.1.1
16150ed7c580Smrg		;;
16161a28b98bSmrg	pru-*)
1617a0cd246fSmrg		os=
1618a0cd246fSmrg		obj=elf
16190ed7c580Smrg		;;
16201a28b98bSmrg	*-be)
16211a28b98bSmrg		os=beos
16220ed7c580Smrg		;;
16230ed7c580Smrg	*-ibm)
16241a28b98bSmrg		os=aix
16250ed7c580Smrg		;;
16260ed7c580Smrg	*-knuth)
16271a28b98bSmrg		os=mmixware
16280ed7c580Smrg		;;
16290ed7c580Smrg	*-wec)
16301a28b98bSmrg		os=proelf
16310ed7c580Smrg		;;
16320ed7c580Smrg	*-winbond)
16331a28b98bSmrg		os=proelf
16340ed7c580Smrg		;;
16350ed7c580Smrg	*-oki)
16361a28b98bSmrg		os=proelf
16370ed7c580Smrg		;;
16380ed7c580Smrg	*-hp)
16391a28b98bSmrg		os=hpux
16400ed7c580Smrg		;;
16410ed7c580Smrg	*-hitachi)
16421a28b98bSmrg		os=hiux
16430ed7c580Smrg		;;
16440ed7c580Smrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
16451a28b98bSmrg		os=sysv
16460ed7c580Smrg		;;
16470ed7c580Smrg	*-cbm)
16481a28b98bSmrg		os=amigaos
16490ed7c580Smrg		;;
16500ed7c580Smrg	*-dg)
16511a28b98bSmrg		os=dgux
16520ed7c580Smrg		;;
16530ed7c580Smrg	*-dolphin)
16541a28b98bSmrg		os=sysv3
16550ed7c580Smrg		;;
16560ed7c580Smrg	m68k-ccur)
16571a28b98bSmrg		os=rtu
16580ed7c580Smrg		;;
16590ed7c580Smrg	m88k-omron*)
16601a28b98bSmrg		os=luna
16610ed7c580Smrg		;;
16621a28b98bSmrg	*-next)
16631a28b98bSmrg		os=nextstep
16640ed7c580Smrg		;;
16650ed7c580Smrg	*-sequent)
16661a28b98bSmrg		os=ptx
16670ed7c580Smrg		;;
16680ed7c580Smrg	*-crds)
16691a28b98bSmrg		os=unos
16700ed7c580Smrg		;;
16710ed7c580Smrg	*-ns)
16721a28b98bSmrg		os=genix
16730ed7c580Smrg		;;
16740ed7c580Smrg	i370-*)
16751a28b98bSmrg		os=mvs
16760ed7c580Smrg		;;
16770ed7c580Smrg	*-gould)
16781a28b98bSmrg		os=sysv
16790ed7c580Smrg		;;
16800ed7c580Smrg	*-highlevel)
16811a28b98bSmrg		os=bsd
16820ed7c580Smrg		;;
16830ed7c580Smrg	*-encore)
16841a28b98bSmrg		os=bsd
16850ed7c580Smrg		;;
16860ed7c580Smrg	*-sgi)
16871a28b98bSmrg		os=irix
16880ed7c580Smrg		;;
16890ed7c580Smrg	*-siemens)
16901a28b98bSmrg		os=sysv4
16910ed7c580Smrg		;;
16920ed7c580Smrg	*-masscomp)
16931a28b98bSmrg		os=rtu
16940ed7c580Smrg		;;
16950ed7c580Smrg	f30[01]-fujitsu | f700-fujitsu)
16961a28b98bSmrg		os=uxpv
16970ed7c580Smrg		;;
16980ed7c580Smrg	*-rom68k)
1699a0cd246fSmrg		os=
1700a0cd246fSmrg		obj=coff
17010ed7c580Smrg		;;
17020ed7c580Smrg	*-*bug)
1703a0cd246fSmrg		os=
1704a0cd246fSmrg		obj=coff
17050ed7c580Smrg		;;
17060ed7c580Smrg	*-apple)
17071a28b98bSmrg		os=macos
17080ed7c580Smrg		;;
17090ed7c580Smrg	*-atari*)
17101a28b98bSmrg		os=mint
17111a28b98bSmrg		;;
17121a28b98bSmrg	*-wrs)
17131a28b98bSmrg		os=vxworks
17140ed7c580Smrg		;;
17150ed7c580Smrg	*)
17161a28b98bSmrg		os=none
17170ed7c580Smrg		;;
17180ed7c580Smrgesac
17191a28b98bSmrg
17200ed7c580Smrgfi
17210ed7c580Smrg
1722a0cd246fSmrg# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ).
1723a0cd246fSmrg
17241a28b98bSmrgcase $os in
17251a28b98bSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
1726a0cd246fSmrg	llvm* | musl* | newlib* | relibc* | uclibc*)
17271a28b98bSmrg		;;
17281a28b98bSmrg	# Likewise for "kernel-abi"
17291a28b98bSmrg	eabi* | gnueabi*)
17301a28b98bSmrg		;;
17311a28b98bSmrg	# VxWorks passes extra cpu info in the 4th filed.
17321a28b98bSmrg	simlinux | simwindows | spe)
17331a28b98bSmrg		;;
1734a0cd246fSmrg	# See `case $cpu-$os` validation below
1735a0cd246fSmrg	ghcjs)
1736a0cd246fSmrg		;;
17371a28b98bSmrg	# Now accept the basic system types.
17381a28b98bSmrg	# The portable systems comes first.
17391a28b98bSmrg	# Each alternative MUST end in a * to match a version number.
17401a28b98bSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
17411a28b98bSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
17421a28b98bSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
17431a28b98bSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
17441a28b98bSmrg	     | hiux* | abug | nacl* | netware* | windows* \
1745a0cd246fSmrg	     | os9* | macos* | osx* | ios* | tvos* | watchos* \
17461a28b98bSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
17471a28b98bSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
17481a28b98bSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
17491a28b98bSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
17501a28b98bSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
17511a28b98bSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
17521a28b98bSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
17531a28b98bSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
1754a0cd246fSmrg	     | bosx* | nextstep* | cxux* | oabi* \
1755a0cd246fSmrg	     | ptx* | ecoff* | winnt* | domain* | vsta* \
17561a28b98bSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
17571a28b98bSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
1758a0cd246fSmrg	     | cygwin* | msys* | moss* | proelf* | rtems* \
17591a28b98bSmrg	     | midipix* | mingw32* | mingw64* | mint* \
17601a28b98bSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
17611a28b98bSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
17621a28b98bSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
17631a28b98bSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
17641a28b98bSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
17651a28b98bSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
17661a28b98bSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
17671a28b98bSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
17681a28b98bSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
17691a28b98bSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
1770a0cd246fSmrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
1771a0cd246fSmrg	     | fiwix* | mlibc* | cos* | mbr* | ironclad* )
17721a28b98bSmrg		;;
17731a28b98bSmrg	# This one is extra strict with allowed versions
17741a28b98bSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
17751a28b98bSmrg		# Don't forget version if it is 3.2v4 or newer.
17761a28b98bSmrg		;;
1777a0cd246fSmrg	# This refers to builds using the UEFI calling convention
1778a0cd246fSmrg	# (which depends on the architecture) and PE file format.
1779a0cd246fSmrg	# Note that this is both a different calling convention and
1780a0cd246fSmrg	# different file format than that of GNU-EFI
1781a0cd246fSmrg	# (x86_64-w64-mingw32).
1782a0cd246fSmrg	uefi)
1783a0cd246fSmrg		;;
17841a28b98bSmrg	none)
17851a28b98bSmrg		;;
1786a0cd246fSmrg	kernel* | msvc* )
1787a0cd246fSmrg		# Restricted further below
1788a0cd246fSmrg		;;
1789a0cd246fSmrg	'')
1790a0cd246fSmrg		if test x"$obj" = x
1791a0cd246fSmrg		then
1792a0cd246fSmrg			echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
1793a0cd246fSmrg		fi
1794a0cd246fSmrg		;;
17951a28b98bSmrg	*)
1796a0cd246fSmrg		echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
1797a0cd246fSmrg		exit 1
1798a0cd246fSmrg		;;
1799a0cd246fSmrgesac
1800a0cd246fSmrg
1801a0cd246fSmrgcase $obj in
1802a0cd246fSmrg	aout* | coff* | elf* | pe*)
1803a0cd246fSmrg		;;
1804a0cd246fSmrg	'')
1805a0cd246fSmrg		# empty is fine
1806a0cd246fSmrg		;;
1807a0cd246fSmrg	*)
1808a0cd246fSmrg		echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
1809a0cd246fSmrg		exit 1
1810a0cd246fSmrg		;;
1811a0cd246fSmrgesac
1812a0cd246fSmrg
1813a0cd246fSmrg# Here we handle the constraint that a (synthetic) cpu and os are
1814a0cd246fSmrg# valid only in combination with each other and nowhere else.
1815a0cd246fSmrgcase $cpu-$os in
1816a0cd246fSmrg	# The "javascript-unknown-ghcjs" triple is used by GHC; we
1817a0cd246fSmrg	# accept it here in order to tolerate that, but reject any
1818a0cd246fSmrg	# variations.
1819a0cd246fSmrg	javascript-ghcjs)
1820a0cd246fSmrg		;;
1821a0cd246fSmrg	javascript-* | *-ghcjs)
1822a0cd246fSmrg		echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
18231a28b98bSmrg		exit 1
18241a28b98bSmrg		;;
18251a28b98bSmrgesac
18261a28b98bSmrg
18271a28b98bSmrg# As a final step for OS-related things, validate the OS-kernel combination
18281a28b98bSmrg# (given a valid OS), if there is a kernel.
1829a0cd246fSmrgcase $kernel-$os-$obj in
1830a0cd246fSmrg	linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
1831a0cd246fSmrg		    | linux-mlibc*- | linux-musl*- | linux-newlib*- \
1832a0cd246fSmrg		    | linux-relibc*- | linux-uclibc*- )
1833a0cd246fSmrg		;;
1834a0cd246fSmrg	uclinux-uclibc*- )
1835a0cd246fSmrg		;;
1836a0cd246fSmrg	managarm-mlibc*- | managarm-kernel*- )
18371a28b98bSmrg		;;
1838a0cd246fSmrg	windows*-msvc*-)
18391a28b98bSmrg		;;
1840a0cd246fSmrg	-dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
1841a0cd246fSmrg		    | -uclibc*- )
18421a28b98bSmrg		# These are just libc implementations, not actual OSes, and thus
18431a28b98bSmrg		# require a kernel.
1844a0cd246fSmrg		echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
18451a28b98bSmrg		exit 1
18461a28b98bSmrg		;;
1847a0cd246fSmrg	-kernel*- )
1848a0cd246fSmrg		echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
1849a0cd246fSmrg		exit 1
18501a28b98bSmrg		;;
1851a0cd246fSmrg	*-kernel*- )
1852a0cd246fSmrg		echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
1853a0cd246fSmrg		exit 1
18541a28b98bSmrg		;;
1855a0cd246fSmrg	*-msvc*- )
1856a0cd246fSmrg		echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
1857a0cd246fSmrg		exit 1
18581a28b98bSmrg		;;
1859a0cd246fSmrg	kfreebsd*-gnu*- | kopensolaris*-gnu*-)
1860a0cd246fSmrg		;;
1861a0cd246fSmrg	vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
1862a0cd246fSmrg		;;
1863a0cd246fSmrg	nto-qnx*-)
1864a0cd246fSmrg		;;
1865a0cd246fSmrg	os2-emx-)
18661a28b98bSmrg		;;
1867a0cd246fSmrg	*-eabi*- | *-gnueabi*-)
18681a28b98bSmrg		;;
1869a0cd246fSmrg	none--*)
1870a0cd246fSmrg		# None (no kernel, i.e. freestanding / bare metal),
1871a0cd246fSmrg		# can be paired with an machine code file format
1872a0cd246fSmrg		;;
1873a0cd246fSmrg	-*-)
18741a28b98bSmrg		# Blank kernel with real OS is always fine.
18751a28b98bSmrg		;;
1876a0cd246fSmrg	--*)
1877a0cd246fSmrg		# Blank kernel and OS with real machine code file format is always fine.
1878a0cd246fSmrg		;;
1879a0cd246fSmrg	*-*-*)
1880a0cd246fSmrg		echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
18811a28b98bSmrg		exit 1
18821a28b98bSmrg		;;
18831a28b98bSmrgesac
18841a28b98bSmrg
18850ed7c580Smrg# Here we handle the case where we know the os, and the CPU type, but not the
18860ed7c580Smrg# manufacturer.  We pick the logical manufacturer.
18871a28b98bSmrgcase $vendor in
18881a28b98bSmrg	unknown)
18891a28b98bSmrg		case $cpu-$os in
18901a28b98bSmrg			*-riscix*)
18910ed7c580Smrg				vendor=acorn
18920ed7c580Smrg				;;
18931a28b98bSmrg			*-sunos*)
18940ed7c580Smrg				vendor=sun
18950ed7c580Smrg				;;
18961a28b98bSmrg			*-cnk* | *-aix*)
18970ed7c580Smrg				vendor=ibm
18980ed7c580Smrg				;;
18991a28b98bSmrg			*-beos*)
19000ed7c580Smrg				vendor=be
19010ed7c580Smrg				;;
19021a28b98bSmrg			*-hpux*)
19030ed7c580Smrg				vendor=hp
19040ed7c580Smrg				;;
19051a28b98bSmrg			*-mpeix*)
19060ed7c580Smrg				vendor=hp
19070ed7c580Smrg				;;
19081a28b98bSmrg			*-hiux*)
19090ed7c580Smrg				vendor=hitachi
19100ed7c580Smrg				;;
19111a28b98bSmrg			*-unos*)
19120ed7c580Smrg				vendor=crds
19130ed7c580Smrg				;;
19141a28b98bSmrg			*-dgux*)
19150ed7c580Smrg				vendor=dg
19160ed7c580Smrg				;;
19171a28b98bSmrg			*-luna*)
19180ed7c580Smrg				vendor=omron
19190ed7c580Smrg				;;
19201a28b98bSmrg			*-genix*)
19210ed7c580Smrg				vendor=ns
19220ed7c580Smrg				;;
19231a28b98bSmrg			*-clix*)
19241a28b98bSmrg				vendor=intergraph
19251a28b98bSmrg				;;
19261a28b98bSmrg			*-mvs* | *-opened*)
19271a28b98bSmrg				vendor=ibm
19281a28b98bSmrg				;;
19291a28b98bSmrg			*-os400*)
19300ed7c580Smrg				vendor=ibm
19310ed7c580Smrg				;;
19321a28b98bSmrg			s390-* | s390x-*)
19330ed7c580Smrg				vendor=ibm
19340ed7c580Smrg				;;
19351a28b98bSmrg			*-ptx*)
19360ed7c580Smrg				vendor=sequent
19370ed7c580Smrg				;;
19381a28b98bSmrg			*-tpf*)
19390ed7c580Smrg				vendor=ibm
19400ed7c580Smrg				;;
19411a28b98bSmrg			*-vxsim* | *-vxworks* | *-windiss*)
19420ed7c580Smrg				vendor=wrs
19430ed7c580Smrg				;;
19441a28b98bSmrg			*-aux*)
19450ed7c580Smrg				vendor=apple
19460ed7c580Smrg				;;
19471a28b98bSmrg			*-hms*)
19480ed7c580Smrg				vendor=hitachi
19490ed7c580Smrg				;;
19501a28b98bSmrg			*-mpw* | *-macos*)
19510ed7c580Smrg				vendor=apple
19520ed7c580Smrg				;;
19531a28b98bSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
19540ed7c580Smrg				vendor=atari
19550ed7c580Smrg				;;
19561a28b98bSmrg			*-vos*)
19570ed7c580Smrg				vendor=stratus
19580ed7c580Smrg				;;
19590ed7c580Smrg		esac
19600ed7c580Smrg		;;
19610ed7c580Smrgesac
19620ed7c580Smrg
1963a0cd246fSmrgecho "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
19640ed7c580Smrgexit
19650ed7c580Smrg
19660ed7c580Smrg# Local variables:
19671a28b98bSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
19680ed7c580Smrg# time-stamp-start: "timestamp='"
19690ed7c580Smrg# time-stamp-format: "%:y-%02m-%02d"
19700ed7c580Smrg# time-stamp-end: "'"
19710ed7c580Smrg# End:
1972