config.sub revision 1a28b98b
10ed7c580Smrg#! /bin/sh
20ed7c580Smrg# Configuration validation subroutine script.
31a28b98bSmrg#   Copyright 1992-2021 Free Software Foundation, Inc.
40ed7c580Smrg
51a28b98bSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
61a28b98bSmrg
71a28b98bSmrgtimestamp='2021-08-14'
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
110ed7c580Smrg# 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
791a28b98bSmrgCopyright 1992-2021 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="
850ed7c580SmrgTry \`$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	*-*-*-*-*)
1331a28b98bSmrg		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* \
1481a28b98bSmrg			| storm-chaos* | os2-emx* | rtmk-nova*)
1491a28b98bSmrg				basic_machine=$field1
1501a28b98bSmrg				basic_os=$maybe_os
1511a28b98bSmrg				;;
1521a28b98bSmrg			android-linux)
1531a28b98bSmrg				basic_machine=$field1-unknown
1541a28b98bSmrg				basic_os=linux-android
1551a28b98bSmrg				;;
1561a28b98bSmrg			*)
1571a28b98bSmrg				basic_machine=$field1-$field2
1581a28b98bSmrg				basic_os=$field3
1591a28b98bSmrg				;;
1601a28b98bSmrg		esac
1610ed7c580Smrg		;;
1621a28b98bSmrg	*-*)
1631a28b98bSmrg		# A lone config we happen to match not fitting any pattern
1641a28b98bSmrg		case $field1-$field2 in
1651a28b98bSmrg			decstation-3100)
1661a28b98bSmrg				basic_machine=mips-dec
1671a28b98bSmrg				basic_os=
1681a28b98bSmrg				;;
1691a28b98bSmrg			*-*)
1701a28b98bSmrg				# Second component is usually, but not always the OS
1711a28b98bSmrg				case $field2 in
1721a28b98bSmrg					# Prevent following clause from handling this valid os
1731a28b98bSmrg					sun*os*)
1741a28b98bSmrg						basic_machine=$field1
1751a28b98bSmrg						basic_os=$field2
1761a28b98bSmrg						;;
1771a28b98bSmrg					zephyr*)
1781a28b98bSmrg						basic_machine=$field1-unknown
1791a28b98bSmrg						basic_os=$field2
1801a28b98bSmrg						;;
1811a28b98bSmrg					# Manufacturers
1821a28b98bSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
1831a28b98bSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
1841a28b98bSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
1851a28b98bSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
1861a28b98bSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
1871a28b98bSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
1881a28b98bSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
1891a28b98bSmrg					| microblaze* | sim | cisco \
1901a28b98bSmrg					| oki | wec | wrs | winbond)
1911a28b98bSmrg						basic_machine=$field1-$field2
1921a28b98bSmrg						basic_os=
1931a28b98bSmrg						;;
1941a28b98bSmrg					*)
1951a28b98bSmrg						basic_machine=$field1
1961a28b98bSmrg						basic_os=$field2
1971a28b98bSmrg						;;
1981a28b98bSmrg				esac
1991a28b98bSmrg			;;
2001a28b98bSmrg		esac
2010ed7c580Smrg		;;
2021a28b98bSmrg	*)
2031a28b98bSmrg		# Convert single-component short-hands not valid as part of
2041a28b98bSmrg		# multi-component configurations.
2051a28b98bSmrg		case $field1 in
2061a28b98bSmrg			386bsd)
2071a28b98bSmrg				basic_machine=i386-pc
2081a28b98bSmrg				basic_os=bsd
2091a28b98bSmrg				;;
2101a28b98bSmrg			a29khif)
2111a28b98bSmrg				basic_machine=a29k-amd
2121a28b98bSmrg				basic_os=udi
2131a28b98bSmrg				;;
2141a28b98bSmrg			adobe68k)
2151a28b98bSmrg				basic_machine=m68010-adobe
2161a28b98bSmrg				basic_os=scout
2171a28b98bSmrg				;;
2181a28b98bSmrg			alliant)
2191a28b98bSmrg				basic_machine=fx80-alliant
2201a28b98bSmrg				basic_os=
2211a28b98bSmrg				;;
2221a28b98bSmrg			altos | altos3068)
2231a28b98bSmrg				basic_machine=m68k-altos
2241a28b98bSmrg				basic_os=
2251a28b98bSmrg				;;
2261a28b98bSmrg			am29k)
2271a28b98bSmrg				basic_machine=a29k-none
2281a28b98bSmrg				basic_os=bsd
2291a28b98bSmrg				;;
2301a28b98bSmrg			amdahl)
2311a28b98bSmrg				basic_machine=580-amdahl
2321a28b98bSmrg				basic_os=sysv
2331a28b98bSmrg				;;
2341a28b98bSmrg			amiga)
2351a28b98bSmrg				basic_machine=m68k-unknown
2361a28b98bSmrg				basic_os=
2371a28b98bSmrg				;;
2381a28b98bSmrg			amigaos | amigados)
2391a28b98bSmrg				basic_machine=m68k-unknown
2401a28b98bSmrg				basic_os=amigaos
2411a28b98bSmrg				;;
2421a28b98bSmrg			amigaunix | amix)
2431a28b98bSmrg				basic_machine=m68k-unknown
2441a28b98bSmrg				basic_os=sysv4
2451a28b98bSmrg				;;
2461a28b98bSmrg			apollo68)
2471a28b98bSmrg				basic_machine=m68k-apollo
2481a28b98bSmrg				basic_os=sysv
2491a28b98bSmrg				;;
2501a28b98bSmrg			apollo68bsd)
2511a28b98bSmrg				basic_machine=m68k-apollo
2521a28b98bSmrg				basic_os=bsd
2531a28b98bSmrg				;;
2541a28b98bSmrg			aros)
2551a28b98bSmrg				basic_machine=i386-pc
2561a28b98bSmrg				basic_os=aros
2571a28b98bSmrg				;;
2581a28b98bSmrg			aux)
2591a28b98bSmrg				basic_machine=m68k-apple
2601a28b98bSmrg				basic_os=aux
2611a28b98bSmrg				;;
2621a28b98bSmrg			balance)
2631a28b98bSmrg				basic_machine=ns32k-sequent
2641a28b98bSmrg				basic_os=dynix
2651a28b98bSmrg				;;
2661a28b98bSmrg			blackfin)
2671a28b98bSmrg				basic_machine=bfin-unknown
2681a28b98bSmrg				basic_os=linux
2691a28b98bSmrg				;;
2701a28b98bSmrg			cegcc)
2711a28b98bSmrg				basic_machine=arm-unknown
2721a28b98bSmrg				basic_os=cegcc
2731a28b98bSmrg				;;
2741a28b98bSmrg			convex-c1)
2751a28b98bSmrg				basic_machine=c1-convex
2761a28b98bSmrg				basic_os=bsd
2771a28b98bSmrg				;;
2781a28b98bSmrg			convex-c2)
2791a28b98bSmrg				basic_machine=c2-convex
2801a28b98bSmrg				basic_os=bsd
2811a28b98bSmrg				;;
2821a28b98bSmrg			convex-c32)
2831a28b98bSmrg				basic_machine=c32-convex
2841a28b98bSmrg				basic_os=bsd
2851a28b98bSmrg				;;
2861a28b98bSmrg			convex-c34)
2871a28b98bSmrg				basic_machine=c34-convex
2881a28b98bSmrg				basic_os=bsd
2891a28b98bSmrg				;;
2901a28b98bSmrg			convex-c38)
2911a28b98bSmrg				basic_machine=c38-convex
2921a28b98bSmrg				basic_os=bsd
2931a28b98bSmrg				;;
2941a28b98bSmrg			cray)
2951a28b98bSmrg				basic_machine=j90-cray
2961a28b98bSmrg				basic_os=unicos
2971a28b98bSmrg				;;
2981a28b98bSmrg			crds | unos)
2991a28b98bSmrg				basic_machine=m68k-crds
3001a28b98bSmrg				basic_os=
3011a28b98bSmrg				;;
3021a28b98bSmrg			da30)
3031a28b98bSmrg				basic_machine=m68k-da30
3041a28b98bSmrg				basic_os=
3051a28b98bSmrg				;;
3061a28b98bSmrg			decstation | pmax | pmin | dec3100 | decstatn)
3071a28b98bSmrg				basic_machine=mips-dec
3081a28b98bSmrg				basic_os=
3091a28b98bSmrg				;;
3101a28b98bSmrg			delta88)
3111a28b98bSmrg				basic_machine=m88k-motorola
3121a28b98bSmrg				basic_os=sysv3
3131a28b98bSmrg				;;
3141a28b98bSmrg			dicos)
3151a28b98bSmrg				basic_machine=i686-pc
3161a28b98bSmrg				basic_os=dicos
3171a28b98bSmrg				;;
3181a28b98bSmrg			djgpp)
3191a28b98bSmrg				basic_machine=i586-pc
3201a28b98bSmrg				basic_os=msdosdjgpp
3211a28b98bSmrg				;;
3221a28b98bSmrg			ebmon29k)
3231a28b98bSmrg				basic_machine=a29k-amd
3241a28b98bSmrg				basic_os=ebmon
3251a28b98bSmrg				;;
3261a28b98bSmrg			es1800 | OSE68k | ose68k | ose | OSE)
3271a28b98bSmrg				basic_machine=m68k-ericsson
3281a28b98bSmrg				basic_os=ose
3291a28b98bSmrg				;;
3301a28b98bSmrg			gmicro)
3311a28b98bSmrg				basic_machine=tron-gmicro
3321a28b98bSmrg				basic_os=sysv
3331a28b98bSmrg				;;
3341a28b98bSmrg			go32)
3351a28b98bSmrg				basic_machine=i386-pc
3361a28b98bSmrg				basic_os=go32
3371a28b98bSmrg				;;
3381a28b98bSmrg			h8300hms)
3391a28b98bSmrg				basic_machine=h8300-hitachi
3401a28b98bSmrg				basic_os=hms
3411a28b98bSmrg				;;
3421a28b98bSmrg			h8300xray)
3431a28b98bSmrg				basic_machine=h8300-hitachi
3441a28b98bSmrg				basic_os=xray
3451a28b98bSmrg				;;
3461a28b98bSmrg			h8500hms)
3471a28b98bSmrg				basic_machine=h8500-hitachi
3481a28b98bSmrg				basic_os=hms
3491a28b98bSmrg				;;
3501a28b98bSmrg			harris)
3511a28b98bSmrg				basic_machine=m88k-harris
3521a28b98bSmrg				basic_os=sysv3
3531a28b98bSmrg				;;
3541a28b98bSmrg			hp300 | hp300hpux)
3551a28b98bSmrg				basic_machine=m68k-hp
3561a28b98bSmrg				basic_os=hpux
3571a28b98bSmrg				;;
3581a28b98bSmrg			hp300bsd)
3591a28b98bSmrg				basic_machine=m68k-hp
3601a28b98bSmrg				basic_os=bsd
3611a28b98bSmrg				;;
3621a28b98bSmrg			hppaosf)
3631a28b98bSmrg				basic_machine=hppa1.1-hp
3641a28b98bSmrg				basic_os=osf
3651a28b98bSmrg				;;
3661a28b98bSmrg			hppro)
3671a28b98bSmrg				basic_machine=hppa1.1-hp
3681a28b98bSmrg				basic_os=proelf
3691a28b98bSmrg				;;
3701a28b98bSmrg			i386mach)
3711a28b98bSmrg				basic_machine=i386-mach
3721a28b98bSmrg				basic_os=mach
3731a28b98bSmrg				;;
3741a28b98bSmrg			isi68 | isi)
3751a28b98bSmrg				basic_machine=m68k-isi
3761a28b98bSmrg				basic_os=sysv
3771a28b98bSmrg				;;
3781a28b98bSmrg			m68knommu)
3791a28b98bSmrg				basic_machine=m68k-unknown
3801a28b98bSmrg				basic_os=linux
3811a28b98bSmrg				;;
3821a28b98bSmrg			magnum | m3230)
3831a28b98bSmrg				basic_machine=mips-mips
3841a28b98bSmrg				basic_os=sysv
3851a28b98bSmrg				;;
3861a28b98bSmrg			merlin)
3871a28b98bSmrg				basic_machine=ns32k-utek
3881a28b98bSmrg				basic_os=sysv
3891a28b98bSmrg				;;
3901a28b98bSmrg			mingw64)
3911a28b98bSmrg				basic_machine=x86_64-pc
3921a28b98bSmrg				basic_os=mingw64
3931a28b98bSmrg				;;
3941a28b98bSmrg			mingw32)
3951a28b98bSmrg				basic_machine=i686-pc
3961a28b98bSmrg				basic_os=mingw32
3971a28b98bSmrg				;;
3981a28b98bSmrg			mingw32ce)
3991a28b98bSmrg				basic_machine=arm-unknown
4001a28b98bSmrg				basic_os=mingw32ce
4011a28b98bSmrg				;;
4021a28b98bSmrg			monitor)
4031a28b98bSmrg				basic_machine=m68k-rom68k
4041a28b98bSmrg				basic_os=coff
4051a28b98bSmrg				;;
4061a28b98bSmrg			morphos)
4071a28b98bSmrg				basic_machine=powerpc-unknown
4081a28b98bSmrg				basic_os=morphos
4091a28b98bSmrg				;;
4101a28b98bSmrg			moxiebox)
4111a28b98bSmrg				basic_machine=moxie-unknown
4121a28b98bSmrg				basic_os=moxiebox
4131a28b98bSmrg				;;
4141a28b98bSmrg			msdos)
4151a28b98bSmrg				basic_machine=i386-pc
4161a28b98bSmrg				basic_os=msdos
4171a28b98bSmrg				;;
4181a28b98bSmrg			msys)
4191a28b98bSmrg				basic_machine=i686-pc
4201a28b98bSmrg				basic_os=msys
4211a28b98bSmrg				;;
4221a28b98bSmrg			mvs)
4231a28b98bSmrg				basic_machine=i370-ibm
4241a28b98bSmrg				basic_os=mvs
4251a28b98bSmrg				;;
4261a28b98bSmrg			nacl)
4271a28b98bSmrg				basic_machine=le32-unknown
4281a28b98bSmrg				basic_os=nacl
4291a28b98bSmrg				;;
4301a28b98bSmrg			ncr3000)
4311a28b98bSmrg				basic_machine=i486-ncr
4321a28b98bSmrg				basic_os=sysv4
4331a28b98bSmrg				;;
4341a28b98bSmrg			netbsd386)
4351a28b98bSmrg				basic_machine=i386-pc
4361a28b98bSmrg				basic_os=netbsd
4371a28b98bSmrg				;;
4381a28b98bSmrg			netwinder)
4391a28b98bSmrg				basic_machine=armv4l-rebel
4401a28b98bSmrg				basic_os=linux
4411a28b98bSmrg				;;
4421a28b98bSmrg			news | news700 | news800 | news900)
4431a28b98bSmrg				basic_machine=m68k-sony
4441a28b98bSmrg				basic_os=newsos
4451a28b98bSmrg				;;
4461a28b98bSmrg			news1000)
4471a28b98bSmrg				basic_machine=m68030-sony
4481a28b98bSmrg				basic_os=newsos
4491a28b98bSmrg				;;
4501a28b98bSmrg			necv70)
4511a28b98bSmrg				basic_machine=v70-nec
4521a28b98bSmrg				basic_os=sysv
4531a28b98bSmrg				;;
4541a28b98bSmrg			nh3000)
4551a28b98bSmrg				basic_machine=m68k-harris
4561a28b98bSmrg				basic_os=cxux
4571a28b98bSmrg				;;
4581a28b98bSmrg			nh[45]000)
4591a28b98bSmrg				basic_machine=m88k-harris
4601a28b98bSmrg				basic_os=cxux
4611a28b98bSmrg				;;
4621a28b98bSmrg			nindy960)
4631a28b98bSmrg				basic_machine=i960-intel
4641a28b98bSmrg				basic_os=nindy
4651a28b98bSmrg				;;
4661a28b98bSmrg			mon960)
4671a28b98bSmrg				basic_machine=i960-intel
4681a28b98bSmrg				basic_os=mon960
4691a28b98bSmrg				;;
4701a28b98bSmrg			nonstopux)
4711a28b98bSmrg				basic_machine=mips-compaq
4721a28b98bSmrg				basic_os=nonstopux
4731a28b98bSmrg				;;
4741a28b98bSmrg			os400)
4751a28b98bSmrg				basic_machine=powerpc-ibm
4761a28b98bSmrg				basic_os=os400
4771a28b98bSmrg				;;
4781a28b98bSmrg			OSE68000 | ose68000)
4791a28b98bSmrg				basic_machine=m68000-ericsson
4801a28b98bSmrg				basic_os=ose
4811a28b98bSmrg				;;
4821a28b98bSmrg			os68k)
4831a28b98bSmrg				basic_machine=m68k-none
4841a28b98bSmrg				basic_os=os68k
4851a28b98bSmrg				;;
4861a28b98bSmrg			paragon)
4871a28b98bSmrg				basic_machine=i860-intel
4881a28b98bSmrg				basic_os=osf
4891a28b98bSmrg				;;
4901a28b98bSmrg			parisc)
4911a28b98bSmrg				basic_machine=hppa-unknown
4921a28b98bSmrg				basic_os=linux
4931a28b98bSmrg				;;
4941a28b98bSmrg			psp)
4951a28b98bSmrg				basic_machine=mipsallegrexel-sony
4961a28b98bSmrg				basic_os=psp
4971a28b98bSmrg				;;
4981a28b98bSmrg			pw32)
4991a28b98bSmrg				basic_machine=i586-unknown
5001a28b98bSmrg				basic_os=pw32
5011a28b98bSmrg				;;
5021a28b98bSmrg			rdos | rdos64)
5031a28b98bSmrg				basic_machine=x86_64-pc
5041a28b98bSmrg				basic_os=rdos
5051a28b98bSmrg				;;
5061a28b98bSmrg			rdos32)
5071a28b98bSmrg				basic_machine=i386-pc
5081a28b98bSmrg				basic_os=rdos
5091a28b98bSmrg				;;
5101a28b98bSmrg			rom68k)
5111a28b98bSmrg				basic_machine=m68k-rom68k
5121a28b98bSmrg				basic_os=coff
5131a28b98bSmrg				;;
5141a28b98bSmrg			sa29200)
5151a28b98bSmrg				basic_machine=a29k-amd
5161a28b98bSmrg				basic_os=udi
5171a28b98bSmrg				;;
5181a28b98bSmrg			sei)
5191a28b98bSmrg				basic_machine=mips-sei
5201a28b98bSmrg				basic_os=seiux
5211a28b98bSmrg				;;
5221a28b98bSmrg			sequent)
5231a28b98bSmrg				basic_machine=i386-sequent
5241a28b98bSmrg				basic_os=
5251a28b98bSmrg				;;
5261a28b98bSmrg			sps7)
5271a28b98bSmrg				basic_machine=m68k-bull
5281a28b98bSmrg				basic_os=sysv2
5291a28b98bSmrg				;;
5301a28b98bSmrg			st2000)
5311a28b98bSmrg				basic_machine=m68k-tandem
5321a28b98bSmrg				basic_os=
5331a28b98bSmrg				;;
5341a28b98bSmrg			stratus)
5351a28b98bSmrg				basic_machine=i860-stratus
5361a28b98bSmrg				basic_os=sysv4
5371a28b98bSmrg				;;
5381a28b98bSmrg			sun2)
5391a28b98bSmrg				basic_machine=m68000-sun
5401a28b98bSmrg				basic_os=
5411a28b98bSmrg				;;
5421a28b98bSmrg			sun2os3)
5431a28b98bSmrg				basic_machine=m68000-sun
5441a28b98bSmrg				basic_os=sunos3
5451a28b98bSmrg				;;
5461a28b98bSmrg			sun2os4)
5471a28b98bSmrg				basic_machine=m68000-sun
5481a28b98bSmrg				basic_os=sunos4
5491a28b98bSmrg				;;
5501a28b98bSmrg			sun3)
5511a28b98bSmrg				basic_machine=m68k-sun
5521a28b98bSmrg				basic_os=
5531a28b98bSmrg				;;
5541a28b98bSmrg			sun3os3)
5551a28b98bSmrg				basic_machine=m68k-sun
5561a28b98bSmrg				basic_os=sunos3
5571a28b98bSmrg				;;
5581a28b98bSmrg			sun3os4)
5591a28b98bSmrg				basic_machine=m68k-sun
5601a28b98bSmrg				basic_os=sunos4
5611a28b98bSmrg				;;
5621a28b98bSmrg			sun4)
5631a28b98bSmrg				basic_machine=sparc-sun
5641a28b98bSmrg				basic_os=
5651a28b98bSmrg				;;
5661a28b98bSmrg			sun4os3)
5671a28b98bSmrg				basic_machine=sparc-sun
5681a28b98bSmrg				basic_os=sunos3
5691a28b98bSmrg				;;
5701a28b98bSmrg			sun4os4)
5711a28b98bSmrg				basic_machine=sparc-sun
5721a28b98bSmrg				basic_os=sunos4
5731a28b98bSmrg				;;
5741a28b98bSmrg			sun4sol2)
5751a28b98bSmrg				basic_machine=sparc-sun
5761a28b98bSmrg				basic_os=solaris2
5771a28b98bSmrg				;;
5781a28b98bSmrg			sun386 | sun386i | roadrunner)
5791a28b98bSmrg				basic_machine=i386-sun
5801a28b98bSmrg				basic_os=
5811a28b98bSmrg				;;
5821a28b98bSmrg			sv1)
5831a28b98bSmrg				basic_machine=sv1-cray
5841a28b98bSmrg				basic_os=unicos
5851a28b98bSmrg				;;
5861a28b98bSmrg			symmetry)
5871a28b98bSmrg				basic_machine=i386-sequent
5881a28b98bSmrg				basic_os=dynix
5891a28b98bSmrg				;;
5901a28b98bSmrg			t3e)
5911a28b98bSmrg				basic_machine=alphaev5-cray
5921a28b98bSmrg				basic_os=unicos
5931a28b98bSmrg				;;
5941a28b98bSmrg			t90)
5951a28b98bSmrg				basic_machine=t90-cray
5961a28b98bSmrg				basic_os=unicos
5971a28b98bSmrg				;;
5981a28b98bSmrg			toad1)
5991a28b98bSmrg				basic_machine=pdp10-xkl
6001a28b98bSmrg				basic_os=tops20
6011a28b98bSmrg				;;
6021a28b98bSmrg			tpf)
6031a28b98bSmrg				basic_machine=s390x-ibm
6041a28b98bSmrg				basic_os=tpf
6051a28b98bSmrg				;;
6061a28b98bSmrg			udi29k)
6071a28b98bSmrg				basic_machine=a29k-amd
6081a28b98bSmrg				basic_os=udi
6091a28b98bSmrg				;;
6101a28b98bSmrg			ultra3)
6111a28b98bSmrg				basic_machine=a29k-nyu
6121a28b98bSmrg				basic_os=sym1
6131a28b98bSmrg				;;
6141a28b98bSmrg			v810 | necv810)
6151a28b98bSmrg				basic_machine=v810-nec
6161a28b98bSmrg				basic_os=none
6171a28b98bSmrg				;;
6181a28b98bSmrg			vaxv)
6191a28b98bSmrg				basic_machine=vax-dec
6201a28b98bSmrg				basic_os=sysv
6211a28b98bSmrg				;;
6221a28b98bSmrg			vms)
6231a28b98bSmrg				basic_machine=vax-dec
6241a28b98bSmrg				basic_os=vms
6251a28b98bSmrg				;;
6261a28b98bSmrg			vsta)
6271a28b98bSmrg				basic_machine=i386-pc
6281a28b98bSmrg				basic_os=vsta
6291a28b98bSmrg				;;
6301a28b98bSmrg			vxworks960)
6311a28b98bSmrg				basic_machine=i960-wrs
6321a28b98bSmrg				basic_os=vxworks
6331a28b98bSmrg				;;
6341a28b98bSmrg			vxworks68)
6351a28b98bSmrg				basic_machine=m68k-wrs
6361a28b98bSmrg				basic_os=vxworks
6371a28b98bSmrg				;;
6381a28b98bSmrg			vxworks29k)
6391a28b98bSmrg				basic_machine=a29k-wrs
6401a28b98bSmrg				basic_os=vxworks
6411a28b98bSmrg				;;
6421a28b98bSmrg			xbox)
6431a28b98bSmrg				basic_machine=i686-pc
6441a28b98bSmrg				basic_os=mingw32
6451a28b98bSmrg				;;
6461a28b98bSmrg			ymp)
6471a28b98bSmrg				basic_machine=ymp-cray
6481a28b98bSmrg				basic_os=unicos
6491a28b98bSmrg				;;
6501a28b98bSmrg			*)
6511a28b98bSmrg				basic_machine=$1
6521a28b98bSmrg				basic_os=
6531a28b98bSmrg				;;
6541a28b98bSmrg		esac
6550ed7c580Smrg		;;
6560ed7c580Smrgesac
6570ed7c580Smrg
6581a28b98bSmrg# Decode 1-component or ad-hoc basic machines
6590ed7c580Smrgcase $basic_machine in
6601a28b98bSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
6611a28b98bSmrg	# some cases the only manufacturer, in others, it is the most popular.
6621a28b98bSmrg	w89k)
6631a28b98bSmrg		cpu=hppa1.1
6641a28b98bSmrg		vendor=winbond
6650ed7c580Smrg		;;
6661a28b98bSmrg	op50n)
6671a28b98bSmrg		cpu=hppa1.1
6681a28b98bSmrg		vendor=oki
6690ed7c580Smrg		;;
6701a28b98bSmrg	op60c)
6711a28b98bSmrg		cpu=hppa1.1
6721a28b98bSmrg		vendor=oki
6730ed7c580Smrg		;;
6741a28b98bSmrg	ibm*)
6751a28b98bSmrg		cpu=i370
6761a28b98bSmrg		vendor=ibm
6770ed7c580Smrg		;;
6781a28b98bSmrg	orion105)
6791a28b98bSmrg		cpu=clipper
6801a28b98bSmrg		vendor=highlevel
6810ed7c580Smrg		;;
6821a28b98bSmrg	mac | mpw | mac-mpw)
6831a28b98bSmrg		cpu=m68k
6841a28b98bSmrg		vendor=apple
6850ed7c580Smrg		;;
6861a28b98bSmrg	pmac | pmac-mpw)
6871a28b98bSmrg		cpu=powerpc
6881a28b98bSmrg		vendor=apple
6890ed7c580Smrg		;;
6901a28b98bSmrg
6910ed7c580Smrg	# Recognize the various machine names and aliases which stand
6920ed7c580Smrg	# for a CPU type and a company and sometimes even an OS.
6930ed7c580Smrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
6941a28b98bSmrg		cpu=m68000
6951a28b98bSmrg		vendor=att
6960ed7c580Smrg		;;
6970ed7c580Smrg	3b*)
6981a28b98bSmrg		cpu=we32k
6991a28b98bSmrg		vendor=att
7000ed7c580Smrg		;;
7010ed7c580Smrg	bluegene*)
7021a28b98bSmrg		cpu=powerpc
7031a28b98bSmrg		vendor=ibm
7041a28b98bSmrg		basic_os=cnk
7050ed7c580Smrg		;;
7060ed7c580Smrg	decsystem10* | dec10*)
7071a28b98bSmrg		cpu=pdp10
7081a28b98bSmrg		vendor=dec
7091a28b98bSmrg		basic_os=tops10
7100ed7c580Smrg		;;
7110ed7c580Smrg	decsystem20* | dec20*)
7121a28b98bSmrg		cpu=pdp10
7131a28b98bSmrg		vendor=dec
7141a28b98bSmrg		basic_os=tops20
7150ed7c580Smrg		;;
7160ed7c580Smrg	delta | 3300 | motorola-3300 | motorola-delta \
7170ed7c580Smrg	      | 3300-motorola | delta-motorola)
7181a28b98bSmrg		cpu=m68k
7191a28b98bSmrg		vendor=motorola
7200ed7c580Smrg		;;
7211a28b98bSmrg	dpx2*)
7221a28b98bSmrg		cpu=m68k
7231a28b98bSmrg		vendor=bull
7241a28b98bSmrg		basic_os=sysv3
7250ed7c580Smrg		;;
7260ed7c580Smrg	encore | umax | mmax)
7271a28b98bSmrg		cpu=ns32k
7281a28b98bSmrg		vendor=encore
7290ed7c580Smrg		;;
7301a28b98bSmrg	elxsi)
7311a28b98bSmrg		cpu=elxsi
7321a28b98bSmrg		vendor=elxsi
7331a28b98bSmrg		basic_os=${basic_os:-bsd}
7340ed7c580Smrg		;;
7350ed7c580Smrg	fx2800)
7361a28b98bSmrg		cpu=i860
7371a28b98bSmrg		vendor=alliant
7380ed7c580Smrg		;;
7390ed7c580Smrg	genix)
7401a28b98bSmrg		cpu=ns32k
7411a28b98bSmrg		vendor=ns
7420ed7c580Smrg		;;
7430ed7c580Smrg	h3050r* | hiux*)
7441a28b98bSmrg		cpu=hppa1.1
7451a28b98bSmrg		vendor=hitachi
7461a28b98bSmrg		basic_os=hiuxwe2
7470ed7c580Smrg		;;
7480ed7c580Smrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
7491a28b98bSmrg		cpu=hppa1.0
7501a28b98bSmrg		vendor=hp
7510ed7c580Smrg		;;
7520ed7c580Smrg	hp9k2[0-9][0-9] | hp9k31[0-9])
7531a28b98bSmrg		cpu=m68000
7541a28b98bSmrg		vendor=hp
7550ed7c580Smrg		;;
7560ed7c580Smrg	hp9k3[2-9][0-9])
7571a28b98bSmrg		cpu=m68k
7581a28b98bSmrg		vendor=hp
7590ed7c580Smrg		;;
7600ed7c580Smrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
7611a28b98bSmrg		cpu=hppa1.0
7621a28b98bSmrg		vendor=hp
7630ed7c580Smrg		;;
7640ed7c580Smrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
7651a28b98bSmrg		cpu=hppa1.1
7661a28b98bSmrg		vendor=hp
7670ed7c580Smrg		;;
7680ed7c580Smrg	hp9k78[0-9] | hp78[0-9])
7690ed7c580Smrg		# FIXME: really hppa2.0-hp
7701a28b98bSmrg		cpu=hppa1.1
7711a28b98bSmrg		vendor=hp
7720ed7c580Smrg		;;
7730ed7c580Smrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
7740ed7c580Smrg		# FIXME: really hppa2.0-hp
7751a28b98bSmrg		cpu=hppa1.1
7761a28b98bSmrg		vendor=hp
7770ed7c580Smrg		;;
7780ed7c580Smrg	hp9k8[0-9][13679] | hp8[0-9][13679])
7791a28b98bSmrg		cpu=hppa1.1
7801a28b98bSmrg		vendor=hp
7810ed7c580Smrg		;;
7820ed7c580Smrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
7831a28b98bSmrg		cpu=hppa1.0
7841a28b98bSmrg		vendor=hp
7850ed7c580Smrg		;;
7860ed7c580Smrg	i*86v32)
7871a28b98bSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7881a28b98bSmrg		vendor=pc
7891a28b98bSmrg		basic_os=sysv32
7900ed7c580Smrg		;;
7910ed7c580Smrg	i*86v4*)
7921a28b98bSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7931a28b98bSmrg		vendor=pc
7941a28b98bSmrg		basic_os=sysv4
7950ed7c580Smrg		;;
7960ed7c580Smrg	i*86v)
7971a28b98bSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7981a28b98bSmrg		vendor=pc
7991a28b98bSmrg		basic_os=sysv
8000ed7c580Smrg		;;
8010ed7c580Smrg	i*86sol2)
8021a28b98bSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
8031a28b98bSmrg		vendor=pc
8041a28b98bSmrg		basic_os=solaris2
8050ed7c580Smrg		;;
8061a28b98bSmrg	j90 | j90-cray)
8071a28b98bSmrg		cpu=j90
8081a28b98bSmrg		vendor=cray
8091a28b98bSmrg		basic_os=${basic_os:-unicos}
8100ed7c580Smrg		;;
8110ed7c580Smrg	iris | iris4d)
8121a28b98bSmrg		cpu=mips
8131a28b98bSmrg		vendor=sgi
8141a28b98bSmrg		case $basic_os in
8151a28b98bSmrg		    irix*)
8160ed7c580Smrg			;;
8170ed7c580Smrg		    *)
8181a28b98bSmrg			basic_os=irix4
8190ed7c580Smrg			;;
8200ed7c580Smrg		esac
8210ed7c580Smrg		;;
8220ed7c580Smrg	miniframe)
8231a28b98bSmrg		cpu=m68000
8241a28b98bSmrg		vendor=convergent
8250ed7c580Smrg		;;
8261a28b98bSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
8271a28b98bSmrg		cpu=m68k
8281a28b98bSmrg		vendor=atari
8291a28b98bSmrg		basic_os=mint
8300ed7c580Smrg		;;
8310ed7c580Smrg	news-3600 | risc-news)
8321a28b98bSmrg		cpu=mips
8331a28b98bSmrg		vendor=sony
8341a28b98bSmrg		basic_os=newsos
8351a28b98bSmrg		;;
8361a28b98bSmrg	next | m*-next)
8371a28b98bSmrg		cpu=m68k
8381a28b98bSmrg		vendor=next
8391a28b98bSmrg		case $basic_os in
8401a28b98bSmrg		    openstep*)
8411a28b98bSmrg		        ;;
8421a28b98bSmrg		    nextstep*)
8430ed7c580Smrg			;;
8441a28b98bSmrg		    ns2*)
8451a28b98bSmrg		      basic_os=nextstep2
8460ed7c580Smrg			;;
8470ed7c580Smrg		    *)
8481a28b98bSmrg		      basic_os=nextstep3
8490ed7c580Smrg			;;
8500ed7c580Smrg		esac
8510ed7c580Smrg		;;
8520ed7c580Smrg	np1)
8531a28b98bSmrg		cpu=np1
8541a28b98bSmrg		vendor=gould
8550ed7c580Smrg		;;
8560ed7c580Smrg	op50n-* | op60c-*)
8571a28b98bSmrg		cpu=hppa1.1
8581a28b98bSmrg		vendor=oki
8591a28b98bSmrg		basic_os=proelf
8600ed7c580Smrg		;;
8610ed7c580Smrg	pa-hitachi)
8621a28b98bSmrg		cpu=hppa1.1
8631a28b98bSmrg		vendor=hitachi
8641a28b98bSmrg		basic_os=hiuxwe2
8650ed7c580Smrg		;;
8660ed7c580Smrg	pbd)
8671a28b98bSmrg		cpu=sparc
8681a28b98bSmrg		vendor=tti
8690ed7c580Smrg		;;
8700ed7c580Smrg	pbb)
8711a28b98bSmrg		cpu=m68k
8721a28b98bSmrg		vendor=tti
8730ed7c580Smrg		;;
8741a28b98bSmrg	pc532)
8751a28b98bSmrg		cpu=ns32k
8761a28b98bSmrg		vendor=pc532
8770ed7c580Smrg		;;
8780ed7c580Smrg	pn)
8791a28b98bSmrg		cpu=pn
8801a28b98bSmrg		vendor=gould
8810ed7c580Smrg		;;
8821a28b98bSmrg	power)
8831a28b98bSmrg		cpu=power
8841a28b98bSmrg		vendor=ibm
8850ed7c580Smrg		;;
8860ed7c580Smrg	ps2)
8871a28b98bSmrg		cpu=i386
8881a28b98bSmrg		vendor=ibm
8890ed7c580Smrg		;;
8900ed7c580Smrg	rm[46]00)
8911a28b98bSmrg		cpu=mips
8921a28b98bSmrg		vendor=siemens
8930ed7c580Smrg		;;
8940ed7c580Smrg	rtpc | rtpc-*)
8951a28b98bSmrg		cpu=romp
8961a28b98bSmrg		vendor=ibm
8970ed7c580Smrg		;;
8981a28b98bSmrg	sde)
8991a28b98bSmrg		cpu=mipsisa32
9001a28b98bSmrg		vendor=sde
9011a28b98bSmrg		basic_os=${basic_os:-elf}
9020ed7c580Smrg		;;
9031a28b98bSmrg	simso-wrs)
9041a28b98bSmrg		cpu=sparclite
9051a28b98bSmrg		vendor=wrs
9061a28b98bSmrg		basic_os=vxworks
9070ed7c580Smrg		;;
9081a28b98bSmrg	tower | tower-32)
9091a28b98bSmrg		cpu=m68k
9101a28b98bSmrg		vendor=ncr
9110ed7c580Smrg		;;
9121a28b98bSmrg	vpp*|vx|vx-*)
9131a28b98bSmrg		cpu=f301
9141a28b98bSmrg		vendor=fujitsu
9150ed7c580Smrg		;;
9161a28b98bSmrg	w65)
9171a28b98bSmrg		cpu=w65
9181a28b98bSmrg		vendor=wdc
9190ed7c580Smrg		;;
9201a28b98bSmrg	w89k-*)
9211a28b98bSmrg		cpu=hppa1.1
9221a28b98bSmrg		vendor=winbond
9231a28b98bSmrg		basic_os=proelf
9240ed7c580Smrg		;;
9251a28b98bSmrg	none)
9261a28b98bSmrg		cpu=none
9271a28b98bSmrg		vendor=none
9280ed7c580Smrg		;;
9291a28b98bSmrg	leon|leon[3-9])
9301a28b98bSmrg		cpu=sparc
9311a28b98bSmrg		vendor=$basic_machine
9320ed7c580Smrg		;;
9331a28b98bSmrg	leon-*|leon[3-9]-*)
9341a28b98bSmrg		cpu=sparc
9351a28b98bSmrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
9360ed7c580Smrg		;;
9371a28b98bSmrg
9381a28b98bSmrg	*-*)
9391a28b98bSmrg		# shellcheck disable=SC2162
9401a28b98bSmrg		saved_IFS=$IFS
9411a28b98bSmrg		IFS="-" read cpu vendor <<EOF
9421a28b98bSmrg$basic_machine
9431a28b98bSmrgEOF
9441a28b98bSmrg		IFS=$saved_IFS
9450ed7c580Smrg		;;
9461a28b98bSmrg	# We use `pc' rather than `unknown'
9471a28b98bSmrg	# because (1) that's what they normally are, and
9481a28b98bSmrg	# (2) the word "unknown" tends to confuse beginning users.
9491a28b98bSmrg	i*86 | x86_64)
9501a28b98bSmrg		cpu=$basic_machine
9511a28b98bSmrg		vendor=pc
9520ed7c580Smrg		;;
9531a28b98bSmrg	# These rules are duplicated from below for sake of the special case above;
9541a28b98bSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
9551a28b98bSmrg	pc98)
9561a28b98bSmrg		cpu=i386
9571a28b98bSmrg		vendor=pc
9580ed7c580Smrg		;;
9591a28b98bSmrg	x64 | amd64)
9601a28b98bSmrg		cpu=x86_64
9611a28b98bSmrg		vendor=pc
9620ed7c580Smrg		;;
9631a28b98bSmrg	# Recognize the basic CPU types without company name.
9641a28b98bSmrg	*)
9651a28b98bSmrg		cpu=$basic_machine
9661a28b98bSmrg		vendor=unknown
9670ed7c580Smrg		;;
9681a28b98bSmrgesac
9691a28b98bSmrg
9701a28b98bSmrgunset -v basic_machine
9711a28b98bSmrg
9721a28b98bSmrg# Decode basic machines in the full and proper CPU-Company form.
9731a28b98bSmrgcase $cpu-$vendor in
9741a28b98bSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
9751a28b98bSmrg	# some cases the only manufacturer, in others, it is the most popular.
9761a28b98bSmrg	craynv-unknown)
9771a28b98bSmrg		vendor=cray
9781a28b98bSmrg		basic_os=${basic_os:-unicosmp}
9790ed7c580Smrg		;;
9801a28b98bSmrg	c90-unknown | c90-cray)
9811a28b98bSmrg		vendor=cray
9821a28b98bSmrg		basic_os=${Basic_os:-unicos}
9830ed7c580Smrg		;;
9841a28b98bSmrg	fx80-unknown)
9851a28b98bSmrg		vendor=alliant
9860ed7c580Smrg		;;
9871a28b98bSmrg	romp-unknown)
9881a28b98bSmrg		vendor=ibm
9890ed7c580Smrg		;;
9901a28b98bSmrg	mmix-unknown)
9911a28b98bSmrg		vendor=knuth
9920ed7c580Smrg		;;
9931a28b98bSmrg	microblaze-unknown | microblazeel-unknown)
9941a28b98bSmrg		vendor=xilinx
9950ed7c580Smrg		;;
9961a28b98bSmrg	rs6000-unknown)
9971a28b98bSmrg		vendor=ibm
9980ed7c580Smrg		;;
9991a28b98bSmrg	vax-unknown)
10001a28b98bSmrg		vendor=dec
10010ed7c580Smrg		;;
10021a28b98bSmrg	pdp11-unknown)
10031a28b98bSmrg		vendor=dec
10040ed7c580Smrg		;;
10051a28b98bSmrg	we32k-unknown)
10061a28b98bSmrg		vendor=att
10070ed7c580Smrg		;;
10081a28b98bSmrg	cydra-unknown)
10091a28b98bSmrg		vendor=cydrome
10100ed7c580Smrg		;;
10111a28b98bSmrg	i370-ibm*)
10121a28b98bSmrg		vendor=ibm
10130ed7c580Smrg		;;
10141a28b98bSmrg	orion-unknown)
10151a28b98bSmrg		vendor=highlevel
10160ed7c580Smrg		;;
10171a28b98bSmrg	xps-unknown | xps100-unknown)
10181a28b98bSmrg		cpu=xps100
10191a28b98bSmrg		vendor=honeywell
10200ed7c580Smrg		;;
10211a28b98bSmrg
10221a28b98bSmrg	# Here we normalize CPU types with a missing or matching vendor
10231a28b98bSmrg	dpx20-unknown | dpx20-bull)
10241a28b98bSmrg		cpu=rs6000
10251a28b98bSmrg		vendor=bull
10261a28b98bSmrg		basic_os=${basic_os:-bosx}
10270ed7c580Smrg		;;
10281a28b98bSmrg
10291a28b98bSmrg	# Here we normalize CPU types irrespective of the vendor
10301a28b98bSmrg	amd64-*)
10311a28b98bSmrg		cpu=x86_64
10320ed7c580Smrg		;;
10331a28b98bSmrg	blackfin-*)
10341a28b98bSmrg		cpu=bfin
10351a28b98bSmrg		basic_os=linux
10360ed7c580Smrg		;;
10371a28b98bSmrg	c54x-*)
10381a28b98bSmrg		cpu=tic54x
10390ed7c580Smrg		;;
10401a28b98bSmrg	c55x-*)
10411a28b98bSmrg		cpu=tic55x
10420ed7c580Smrg		;;
10431a28b98bSmrg	c6x-*)
10441a28b98bSmrg		cpu=tic6x
10450ed7c580Smrg		;;
10461a28b98bSmrg	e500v[12]-*)
10471a28b98bSmrg		cpu=powerpc
10481a28b98bSmrg		basic_os=${basic_os}"spe"
10490ed7c580Smrg		;;
10501a28b98bSmrg	mips3*-*)
10511a28b98bSmrg		cpu=mips64
10520ed7c580Smrg		;;
10531a28b98bSmrg	ms1-*)
10541a28b98bSmrg		cpu=mt
10550ed7c580Smrg		;;
10561a28b98bSmrg	m68knommu-*)
10571a28b98bSmrg		cpu=m68k
10581a28b98bSmrg		basic_os=linux
10590ed7c580Smrg		;;
10601a28b98bSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
10611a28b98bSmrg		cpu=s12z
10620ed7c580Smrg		;;
10631a28b98bSmrg	openrisc-*)
10641a28b98bSmrg		cpu=or32
10650ed7c580Smrg		;;
10661a28b98bSmrg	parisc-*)
10671a28b98bSmrg		cpu=hppa
10681a28b98bSmrg		basic_os=linux
10690ed7c580Smrg		;;
10701a28b98bSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
10711a28b98bSmrg		cpu=i586
10720ed7c580Smrg		;;
10731a28b98bSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
10741a28b98bSmrg		cpu=i686
10750ed7c580Smrg		;;
10761a28b98bSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
10771a28b98bSmrg		cpu=i686
10780ed7c580Smrg		;;
10791a28b98bSmrg	pentium4-*)
10801a28b98bSmrg		cpu=i786
10810ed7c580Smrg		;;
10821a28b98bSmrg	pc98-*)
10831a28b98bSmrg		cpu=i386
10840ed7c580Smrg		;;
10851a28b98bSmrg	ppc-* | ppcbe-*)
10861a28b98bSmrg		cpu=powerpc
10870ed7c580Smrg		;;
10881a28b98bSmrg	ppcle-* | powerpclittle-*)
10891a28b98bSmrg		cpu=powerpcle
10900ed7c580Smrg		;;
10911a28b98bSmrg	ppc64-*)
10921a28b98bSmrg		cpu=powerpc64
10930ed7c580Smrg		;;
10941a28b98bSmrg	ppc64le-* | powerpc64little-*)
10951a28b98bSmrg		cpu=powerpc64le
10960ed7c580Smrg		;;
10971a28b98bSmrg	sb1-*)
10981a28b98bSmrg		cpu=mipsisa64sb1
10990ed7c580Smrg		;;
11001a28b98bSmrg	sb1el-*)
11011a28b98bSmrg		cpu=mipsisa64sb1el
11020ed7c580Smrg		;;
11031a28b98bSmrg	sh5e[lb]-*)
11041a28b98bSmrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
11050ed7c580Smrg		;;
11061a28b98bSmrg	spur-*)
11071a28b98bSmrg		cpu=spur
11080ed7c580Smrg		;;
11091a28b98bSmrg	strongarm-* | thumb-*)
11101a28b98bSmrg		cpu=arm
11110ed7c580Smrg		;;
11121a28b98bSmrg	tx39-*)
11131a28b98bSmrg		cpu=mipstx39
11140ed7c580Smrg		;;
11151a28b98bSmrg	tx39el-*)
11161a28b98bSmrg		cpu=mipstx39el
11170ed7c580Smrg		;;
11181a28b98bSmrg	x64-*)
11191a28b98bSmrg		cpu=x86_64
11200ed7c580Smrg		;;
11211a28b98bSmrg	xscale-* | xscalee[bl]-*)
11221a28b98bSmrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
11230ed7c580Smrg		;;
11241a28b98bSmrg	arm64-*)
11251a28b98bSmrg		cpu=aarch64
11260ed7c580Smrg		;;
11271a28b98bSmrg
11281a28b98bSmrg	# Recognize the canonical CPU Types that limit and/or modify the
11291a28b98bSmrg	# company names they are paired with.
11301a28b98bSmrg	cr16-*)
11311a28b98bSmrg		basic_os=${basic_os:-elf}
11320ed7c580Smrg		;;
11331a28b98bSmrg	crisv32-* | etraxfs*-*)
11341a28b98bSmrg		cpu=crisv32
11351a28b98bSmrg		vendor=axis
11360ed7c580Smrg		;;
11371a28b98bSmrg	cris-* | etrax*-*)
11381a28b98bSmrg		cpu=cris
11391a28b98bSmrg		vendor=axis
11400ed7c580Smrg		;;
11411a28b98bSmrg	crx-*)
11421a28b98bSmrg		basic_os=${basic_os:-elf}
11430ed7c580Smrg		;;
11441a28b98bSmrg	neo-tandem)
11451a28b98bSmrg		cpu=neo
11461a28b98bSmrg		vendor=tandem
11470ed7c580Smrg		;;
11481a28b98bSmrg	nse-tandem)
11491a28b98bSmrg		cpu=nse
11501a28b98bSmrg		vendor=tandem
11510ed7c580Smrg		;;
11521a28b98bSmrg	nsr-tandem)
11531a28b98bSmrg		cpu=nsr
11541a28b98bSmrg		vendor=tandem
11550ed7c580Smrg		;;
11561a28b98bSmrg	nsv-tandem)
11571a28b98bSmrg		cpu=nsv
11581a28b98bSmrg		vendor=tandem
11590ed7c580Smrg		;;
11601a28b98bSmrg	nsx-tandem)
11611a28b98bSmrg		cpu=nsx
11621a28b98bSmrg		vendor=tandem
11630ed7c580Smrg		;;
11641a28b98bSmrg	mipsallegrexel-sony)
11651a28b98bSmrg		cpu=mipsallegrexel
11661a28b98bSmrg		vendor=sony
11670ed7c580Smrg		;;
11681a28b98bSmrg	tile*-*)
11691a28b98bSmrg		basic_os=${basic_os:-linux-gnu}
11700ed7c580Smrg		;;
11711a28b98bSmrg
11720ed7c580Smrg	*)
11731a28b98bSmrg		# Recognize the canonical CPU types that are allowed with any
11741a28b98bSmrg		# company name.
11751a28b98bSmrg		case $cpu in
11761a28b98bSmrg			1750a | 580 \
11771a28b98bSmrg			| a29k \
11781a28b98bSmrg			| aarch64 | aarch64_be \
11791a28b98bSmrg			| abacus \
11801a28b98bSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
11811a28b98bSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
11821a28b98bSmrg			| alphapca5[67] | alpha64pca5[67] \
11831a28b98bSmrg			| am33_2.0 \
11841a28b98bSmrg			| amdgcn \
11851a28b98bSmrg			| arc | arceb | arc32 | arc64 \
11861a28b98bSmrg			| arm | arm[lb]e | arme[lb] | armv* \
11871a28b98bSmrg			| avr | avr32 \
11881a28b98bSmrg			| asmjs \
11891a28b98bSmrg			| ba \
11901a28b98bSmrg			| be32 | be64 \
11911a28b98bSmrg			| bfin | bpf | bs2000 \
11921a28b98bSmrg			| c[123]* | c30 | [cjt]90 | c4x \
11931a28b98bSmrg			| c8051 | clipper | craynv | csky | cydra \
11941a28b98bSmrg			| d10v | d30v | dlx | dsp16xx \
11951a28b98bSmrg			| e2k | elxsi | epiphany \
11961a28b98bSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
11971a28b98bSmrg			| h8300 | h8500 \
11981a28b98bSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
11991a28b98bSmrg			| hexagon \
12001a28b98bSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
12011a28b98bSmrg			| ip2k | iq2000 \
12021a28b98bSmrg			| k1om \
12031a28b98bSmrg			| le32 | le64 \
12041a28b98bSmrg			| lm32 \
12051a28b98bSmrg			| loongarch32 | loongarch64 | loongarchx32 \
12061a28b98bSmrg			| m32c | m32r | m32rle \
12071a28b98bSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
12081a28b98bSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
12091a28b98bSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
12101a28b98bSmrg			| microblaze | microblazeel \
12111a28b98bSmrg			| mips | mipsbe | mipseb | mipsel | mipsle \
12121a28b98bSmrg			| mips16 \
12131a28b98bSmrg			| mips64 | mips64eb | mips64el \
12141a28b98bSmrg			| mips64octeon | mips64octeonel \
12151a28b98bSmrg			| mips64orion | mips64orionel \
12161a28b98bSmrg			| mips64r5900 | mips64r5900el \
12171a28b98bSmrg			| mips64vr | mips64vrel \
12181a28b98bSmrg			| mips64vr4100 | mips64vr4100el \
12191a28b98bSmrg			| mips64vr4300 | mips64vr4300el \
12201a28b98bSmrg			| mips64vr5000 | mips64vr5000el \
12211a28b98bSmrg			| mips64vr5900 | mips64vr5900el \
12221a28b98bSmrg			| mipsisa32 | mipsisa32el \
12231a28b98bSmrg			| mipsisa32r2 | mipsisa32r2el \
12241a28b98bSmrg			| mipsisa32r3 | mipsisa32r3el \
12251a28b98bSmrg			| mipsisa32r5 | mipsisa32r5el \
12261a28b98bSmrg			| mipsisa32r6 | mipsisa32r6el \
12271a28b98bSmrg			| mipsisa64 | mipsisa64el \
12281a28b98bSmrg			| mipsisa64r2 | mipsisa64r2el \
12291a28b98bSmrg			| mipsisa64r3 | mipsisa64r3el \
12301a28b98bSmrg			| mipsisa64r5 | mipsisa64r5el \
12311a28b98bSmrg			| mipsisa64r6 | mipsisa64r6el \
12321a28b98bSmrg			| mipsisa64sb1 | mipsisa64sb1el \
12331a28b98bSmrg			| mipsisa64sr71k | mipsisa64sr71kel \
12341a28b98bSmrg			| mipsr5900 | mipsr5900el \
12351a28b98bSmrg			| mipstx39 | mipstx39el \
12361a28b98bSmrg			| mmix \
12371a28b98bSmrg			| mn10200 | mn10300 \
12381a28b98bSmrg			| moxie \
12391a28b98bSmrg			| mt \
12401a28b98bSmrg			| msp430 \
12411a28b98bSmrg			| nds32 | nds32le | nds32be \
12421a28b98bSmrg			| nfp \
12431a28b98bSmrg			| nios | nios2 | nios2eb | nios2el \
12441a28b98bSmrg			| none | np1 | ns16k | ns32k | nvptx \
12451a28b98bSmrg			| open8 \
12461a28b98bSmrg			| or1k* \
12471a28b98bSmrg			| or32 \
12481a28b98bSmrg			| orion \
12491a28b98bSmrg			| picochip \
12501a28b98bSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
12511a28b98bSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
12521a28b98bSmrg			| pru \
12531a28b98bSmrg			| pyramid \
12541a28b98bSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
12551a28b98bSmrg			| rl78 | romp | rs6000 | rx \
12561a28b98bSmrg			| s390 | s390x \
12571a28b98bSmrg			| score \
12581a28b98bSmrg			| sh | shl \
12591a28b98bSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
12601a28b98bSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
12611a28b98bSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
12621a28b98bSmrg			| sparclite \
12631a28b98bSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
12641a28b98bSmrg			| spu \
12651a28b98bSmrg			| tahoe \
12661a28b98bSmrg			| thumbv7* \
12671a28b98bSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
12681a28b98bSmrg			| tron \
12691a28b98bSmrg			| ubicom32 \
12701a28b98bSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
12711a28b98bSmrg			| vax \
12721a28b98bSmrg			| visium \
12731a28b98bSmrg			| w65 \
12741a28b98bSmrg			| wasm32 | wasm64 \
12751a28b98bSmrg			| we32k \
12761a28b98bSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
12771a28b98bSmrg			| xstormy16 | xtensa* \
12781a28b98bSmrg			| ymp \
12791a28b98bSmrg			| z8k | z80)
12801a28b98bSmrg				;;
12811a28b98bSmrg
12821a28b98bSmrg			*)
12831a28b98bSmrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
12841a28b98bSmrg				exit 1
12851a28b98bSmrg				;;
12861a28b98bSmrg		esac
12870ed7c580Smrg		;;
12880ed7c580Smrgesac
12890ed7c580Smrg
12900ed7c580Smrg# Here we canonicalize certain aliases for manufacturers.
12911a28b98bSmrgcase $vendor in
12921a28b98bSmrg	digital*)
12931a28b98bSmrg		vendor=dec
12940ed7c580Smrg		;;
12951a28b98bSmrg	commodore*)
12961a28b98bSmrg		vendor=cbm
12970ed7c580Smrg		;;
12980ed7c580Smrg	*)
12990ed7c580Smrg		;;
13000ed7c580Smrgesac
13010ed7c580Smrg
13020ed7c580Smrg# Decode manufacturer-specific aliases for certain operating systems.
13030ed7c580Smrg
13041a28b98bSmrgif test x$basic_os != x
13050ed7c580Smrgthen
13061a28b98bSmrg
13071a28b98bSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
13081a28b98bSmrg# set os.
13091a28b98bSmrgcase $basic_os in
13101a28b98bSmrg	gnu/linux*)
13111a28b98bSmrg		kernel=linux
13121a28b98bSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
13131a28b98bSmrg		;;
13141a28b98bSmrg	os2-emx)
13151a28b98bSmrg		kernel=os2
13161a28b98bSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
13171a28b98bSmrg		;;
13181a28b98bSmrg	nto-qnx*)
13191a28b98bSmrg		kernel=nto
13201a28b98bSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
13211a28b98bSmrg		;;
13221a28b98bSmrg	*-*)
13231a28b98bSmrg		# shellcheck disable=SC2162
13241a28b98bSmrg		saved_IFS=$IFS
13251a28b98bSmrg		IFS="-" read kernel os <<EOF
13261a28b98bSmrg$basic_os
13271a28b98bSmrgEOF
13281a28b98bSmrg		IFS=$saved_IFS
13291a28b98bSmrg		;;
13301a28b98bSmrg	# Default OS when just kernel was specified
13311a28b98bSmrg	nto*)
13321a28b98bSmrg		kernel=nto
13331a28b98bSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
13341a28b98bSmrg		;;
13351a28b98bSmrg	linux*)
13361a28b98bSmrg		kernel=linux
13371a28b98bSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
13381a28b98bSmrg		;;
13391a28b98bSmrg	*)
13401a28b98bSmrg		kernel=
13411a28b98bSmrg		os=$basic_os
13421a28b98bSmrg		;;
13431a28b98bSmrgesac
13441a28b98bSmrg
13451a28b98bSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
13461a28b98bSmrg# etc.)
13470ed7c580Smrgcase $os in
13481a28b98bSmrg	# First match some system type aliases that might get confused
13491a28b98bSmrg	# with valid system types.
13501a28b98bSmrg	# solaris* is a basic system type, with this one exception.
13511a28b98bSmrg	auroraux)
13521a28b98bSmrg		os=auroraux
13530ed7c580Smrg		;;
13541a28b98bSmrg	bluegene*)
13551a28b98bSmrg		os=cnk
13560ed7c580Smrg		;;
13571a28b98bSmrg	solaris1 | solaris1.*)
13581a28b98bSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
13590ed7c580Smrg		;;
13601a28b98bSmrg	solaris)
13611a28b98bSmrg		os=solaris2
13620ed7c580Smrg		;;
13631a28b98bSmrg	unixware*)
13641a28b98bSmrg		os=sysv4.2uw
13650ed7c580Smrg		;;
13661a28b98bSmrg	# es1800 is here to avoid being matched by es* (a different OS)
13671a28b98bSmrg	es1800*)
13681a28b98bSmrg		os=ose
13690ed7c580Smrg		;;
13701a28b98bSmrg	# Some version numbers need modification
13711a28b98bSmrg	chorusos*)
13721a28b98bSmrg		os=chorusos
13730ed7c580Smrg		;;
13741a28b98bSmrg	isc)
13751a28b98bSmrg		os=isc2.2
13760ed7c580Smrg		;;
13771a28b98bSmrg	sco6)
13781a28b98bSmrg		os=sco5v6
13790ed7c580Smrg		;;
13801a28b98bSmrg	sco5)
13811a28b98bSmrg		os=sco3.2v5
13820ed7c580Smrg		;;
13831a28b98bSmrg	sco4)
13841a28b98bSmrg		os=sco3.2v4
13850ed7c580Smrg		;;
13861a28b98bSmrg	sco3.2.[4-9]*)
13871a28b98bSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
13880ed7c580Smrg		;;
13891a28b98bSmrg	sco*v* | scout)
13901a28b98bSmrg		# Don't match below
13910ed7c580Smrg		;;
13921a28b98bSmrg	sco*)
13931a28b98bSmrg		os=sco3.2v2
13940ed7c580Smrg		;;
13951a28b98bSmrg	psos*)
13961a28b98bSmrg		os=psos
13970ed7c580Smrg		;;
13981a28b98bSmrg	qnx*)
13991a28b98bSmrg		os=qnx
14000ed7c580Smrg		;;
14011a28b98bSmrg	hiux*)
14021a28b98bSmrg		os=hiuxwe2
14030ed7c580Smrg		;;
14041a28b98bSmrg	lynx*178)
14051a28b98bSmrg		os=lynxos178
14060ed7c580Smrg		;;
14071a28b98bSmrg	lynx*5)
14081a28b98bSmrg		os=lynxos5
14090ed7c580Smrg		;;
14101a28b98bSmrg	lynxos*)
14111a28b98bSmrg		# don't get caught up in next wildcard
14120ed7c580Smrg		;;
14131a28b98bSmrg	lynx*)
14141a28b98bSmrg		os=lynxos
14150ed7c580Smrg		;;
14161a28b98bSmrg	mac[0-9]*)
14171a28b98bSmrg		os=`echo "$os" | sed -e 's|mac|macos|'`
14180ed7c580Smrg		;;
14191a28b98bSmrg	opened*)
14201a28b98bSmrg		os=openedition
14210ed7c580Smrg		;;
14221a28b98bSmrg	os400*)
14231a28b98bSmrg		os=os400
14240ed7c580Smrg		;;
14251a28b98bSmrg	sunos5*)
14261a28b98bSmrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
14270ed7c580Smrg		;;
14281a28b98bSmrg	sunos6*)
14291a28b98bSmrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
14300ed7c580Smrg		;;
14311a28b98bSmrg	wince*)
14321a28b98bSmrg		os=wince
14330ed7c580Smrg		;;
14341a28b98bSmrg	utek*)
14351a28b98bSmrg		os=bsd
14360ed7c580Smrg		;;
14371a28b98bSmrg	dynix*)
14381a28b98bSmrg		os=bsd
14390ed7c580Smrg		;;
14401a28b98bSmrg	acis*)
14411a28b98bSmrg		os=aos
14420ed7c580Smrg		;;
14431a28b98bSmrg	atheos*)
14441a28b98bSmrg		os=atheos
14450ed7c580Smrg		;;
14461a28b98bSmrg	syllable*)
14471a28b98bSmrg		os=syllable
14480ed7c580Smrg		;;
14491a28b98bSmrg	386bsd)
14501a28b98bSmrg		os=bsd
14510ed7c580Smrg		;;
14521a28b98bSmrg	ctix* | uts*)
14531a28b98bSmrg		os=sysv
14540ed7c580Smrg		;;
14551a28b98bSmrg	nova*)
14561a28b98bSmrg		os=rtmk-nova
14570ed7c580Smrg		;;
14581a28b98bSmrg	ns2)
14591a28b98bSmrg		os=nextstep2
14600ed7c580Smrg		;;
14611a28b98bSmrg	# Preserve the version number of sinix5.
14621a28b98bSmrg	sinix5.*)
14631a28b98bSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
14640ed7c580Smrg		;;
14651a28b98bSmrg	sinix*)
14661a28b98bSmrg		os=sysv4
14670ed7c580Smrg		;;
14681a28b98bSmrg	tpf*)
14691a28b98bSmrg		os=tpf
14700ed7c580Smrg		;;
14711a28b98bSmrg	triton*)
14721a28b98bSmrg		os=sysv3
14730ed7c580Smrg		;;
14741a28b98bSmrg	oss*)
14751a28b98bSmrg		os=sysv3
14760ed7c580Smrg		;;
14771a28b98bSmrg	svr4*)
14781a28b98bSmrg		os=sysv4
14790ed7c580Smrg		;;
14801a28b98bSmrg	svr3)
14811a28b98bSmrg		os=sysv3
14820ed7c580Smrg		;;
14831a28b98bSmrg	sysvr4)
14841a28b98bSmrg		os=sysv4
14850ed7c580Smrg		;;
14861a28b98bSmrg	ose*)
14871a28b98bSmrg		os=ose
14880ed7c580Smrg		;;
14891a28b98bSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
14901a28b98bSmrg		os=mint
14910ed7c580Smrg		;;
14921a28b98bSmrg	dicos*)
14931a28b98bSmrg		os=dicos
14940ed7c580Smrg		;;
14951a28b98bSmrg	pikeos*)
14961a28b98bSmrg		# Until real need of OS specific support for
14971a28b98bSmrg		# particular features comes up, bare metal
14981a28b98bSmrg		# configurations are quite functional.
14991a28b98bSmrg		case $cpu in
15001a28b98bSmrg		    arm*)
15011a28b98bSmrg			os=eabi
15021a28b98bSmrg			;;
15031a28b98bSmrg		    *)
15041a28b98bSmrg			os=elf
15051a28b98bSmrg			;;
15061a28b98bSmrg		esac
15070ed7c580Smrg		;;
15080ed7c580Smrg	*)
15091a28b98bSmrg		# No normalization, but not necessarily accepted, that comes below.
15100ed7c580Smrg		;;
15110ed7c580Smrgesac
15121a28b98bSmrg
15130ed7c580Smrgelse
15140ed7c580Smrg
15150ed7c580Smrg# Here we handle the default operating systems that come with various machines.
15160ed7c580Smrg# The value should be what the vendor currently ships out the door with their
15170ed7c580Smrg# machine or put another way, the most popular os provided with the machine.
15180ed7c580Smrg
15190ed7c580Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
15200ed7c580Smrg# "-sun"), then you have to tell the case statement up towards the top
15210ed7c580Smrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
15220ed7c580Smrg# will signal an error saying that MANUFACTURER isn't an operating
15230ed7c580Smrg# system, and we'll never get to this point.
15240ed7c580Smrg
15251a28b98bSmrgkernel=
15261a28b98bSmrgcase $cpu-$vendor in
15270ed7c580Smrg	score-*)
15281a28b98bSmrg		os=elf
15290ed7c580Smrg		;;
15300ed7c580Smrg	spu-*)
15311a28b98bSmrg		os=elf
15320ed7c580Smrg		;;
15330ed7c580Smrg	*-acorn)
15341a28b98bSmrg		os=riscix1.2
15350ed7c580Smrg		;;
15360ed7c580Smrg	arm*-rebel)
15371a28b98bSmrg		kernel=linux
15381a28b98bSmrg		os=gnu
15390ed7c580Smrg		;;
15400ed7c580Smrg	arm*-semi)
15411a28b98bSmrg		os=aout
15420ed7c580Smrg		;;
15430ed7c580Smrg	c4x-* | tic4x-*)
15441a28b98bSmrg		os=coff
15450ed7c580Smrg		;;
15460ed7c580Smrg	c8051-*)
15471a28b98bSmrg		os=elf
15481a28b98bSmrg		;;
15491a28b98bSmrg	clipper-intergraph)
15501a28b98bSmrg		os=clix
15510ed7c580Smrg		;;
15520ed7c580Smrg	hexagon-*)
15531a28b98bSmrg		os=elf
15540ed7c580Smrg		;;
15550ed7c580Smrg	tic54x-*)
15561a28b98bSmrg		os=coff
15570ed7c580Smrg		;;
15580ed7c580Smrg	tic55x-*)
15591a28b98bSmrg		os=coff
15600ed7c580Smrg		;;
15610ed7c580Smrg	tic6x-*)
15621a28b98bSmrg		os=coff
15630ed7c580Smrg		;;
15640ed7c580Smrg	# This must come before the *-dec entry.
15650ed7c580Smrg	pdp10-*)
15661a28b98bSmrg		os=tops20
15670ed7c580Smrg		;;
15680ed7c580Smrg	pdp11-*)
15691a28b98bSmrg		os=none
15700ed7c580Smrg		;;
15710ed7c580Smrg	*-dec | vax-*)
15721a28b98bSmrg		os=ultrix4.2
15730ed7c580Smrg		;;
15740ed7c580Smrg	m68*-apollo)
15751a28b98bSmrg		os=domain
15760ed7c580Smrg		;;
15770ed7c580Smrg	i386-sun)
15781a28b98bSmrg		os=sunos4.0.2
15790ed7c580Smrg		;;
15800ed7c580Smrg	m68000-sun)
15811a28b98bSmrg		os=sunos3
15820ed7c580Smrg		;;
15830ed7c580Smrg	m68*-cisco)
15841a28b98bSmrg		os=aout
15850ed7c580Smrg		;;
15860ed7c580Smrg	mep-*)
15871a28b98bSmrg		os=elf
15880ed7c580Smrg		;;
15890ed7c580Smrg	mips*-cisco)
15901a28b98bSmrg		os=elf
15910ed7c580Smrg		;;
15920ed7c580Smrg	mips*-*)
15931a28b98bSmrg		os=elf
15940ed7c580Smrg		;;
15950ed7c580Smrg	or32-*)
15961a28b98bSmrg		os=coff
15970ed7c580Smrg		;;
15980ed7c580Smrg	*-tti)	# must be before sparc entry or we get the wrong os.
15991a28b98bSmrg		os=sysv3
16000ed7c580Smrg		;;
16010ed7c580Smrg	sparc-* | *-sun)
16021a28b98bSmrg		os=sunos4.1.1
16030ed7c580Smrg		;;
16041a28b98bSmrg	pru-*)
16051a28b98bSmrg		os=elf
16060ed7c580Smrg		;;
16071a28b98bSmrg	*-be)
16081a28b98bSmrg		os=beos
16090ed7c580Smrg		;;
16100ed7c580Smrg	*-ibm)
16111a28b98bSmrg		os=aix
16120ed7c580Smrg		;;
16130ed7c580Smrg	*-knuth)
16141a28b98bSmrg		os=mmixware
16150ed7c580Smrg		;;
16160ed7c580Smrg	*-wec)
16171a28b98bSmrg		os=proelf
16180ed7c580Smrg		;;
16190ed7c580Smrg	*-winbond)
16201a28b98bSmrg		os=proelf
16210ed7c580Smrg		;;
16220ed7c580Smrg	*-oki)
16231a28b98bSmrg		os=proelf
16240ed7c580Smrg		;;
16250ed7c580Smrg	*-hp)
16261a28b98bSmrg		os=hpux
16270ed7c580Smrg		;;
16280ed7c580Smrg	*-hitachi)
16291a28b98bSmrg		os=hiux
16300ed7c580Smrg		;;
16310ed7c580Smrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
16321a28b98bSmrg		os=sysv
16330ed7c580Smrg		;;
16340ed7c580Smrg	*-cbm)
16351a28b98bSmrg		os=amigaos
16360ed7c580Smrg		;;
16370ed7c580Smrg	*-dg)
16381a28b98bSmrg		os=dgux
16390ed7c580Smrg		;;
16400ed7c580Smrg	*-dolphin)
16411a28b98bSmrg		os=sysv3
16420ed7c580Smrg		;;
16430ed7c580Smrg	m68k-ccur)
16441a28b98bSmrg		os=rtu
16450ed7c580Smrg		;;
16460ed7c580Smrg	m88k-omron*)
16471a28b98bSmrg		os=luna
16480ed7c580Smrg		;;
16491a28b98bSmrg	*-next)
16501a28b98bSmrg		os=nextstep
16510ed7c580Smrg		;;
16520ed7c580Smrg	*-sequent)
16531a28b98bSmrg		os=ptx
16540ed7c580Smrg		;;
16550ed7c580Smrg	*-crds)
16561a28b98bSmrg		os=unos
16570ed7c580Smrg		;;
16580ed7c580Smrg	*-ns)
16591a28b98bSmrg		os=genix
16600ed7c580Smrg		;;
16610ed7c580Smrg	i370-*)
16621a28b98bSmrg		os=mvs
16630ed7c580Smrg		;;
16640ed7c580Smrg	*-gould)
16651a28b98bSmrg		os=sysv
16660ed7c580Smrg		;;
16670ed7c580Smrg	*-highlevel)
16681a28b98bSmrg		os=bsd
16690ed7c580Smrg		;;
16700ed7c580Smrg	*-encore)
16711a28b98bSmrg		os=bsd
16720ed7c580Smrg		;;
16730ed7c580Smrg	*-sgi)
16741a28b98bSmrg		os=irix
16750ed7c580Smrg		;;
16760ed7c580Smrg	*-siemens)
16771a28b98bSmrg		os=sysv4
16780ed7c580Smrg		;;
16790ed7c580Smrg	*-masscomp)
16801a28b98bSmrg		os=rtu
16810ed7c580Smrg		;;
16820ed7c580Smrg	f30[01]-fujitsu | f700-fujitsu)
16831a28b98bSmrg		os=uxpv
16840ed7c580Smrg		;;
16850ed7c580Smrg	*-rom68k)
16861a28b98bSmrg		os=coff
16870ed7c580Smrg		;;
16880ed7c580Smrg	*-*bug)
16891a28b98bSmrg		os=coff
16900ed7c580Smrg		;;
16910ed7c580Smrg	*-apple)
16921a28b98bSmrg		os=macos
16930ed7c580Smrg		;;
16940ed7c580Smrg	*-atari*)
16951a28b98bSmrg		os=mint
16961a28b98bSmrg		;;
16971a28b98bSmrg	*-wrs)
16981a28b98bSmrg		os=vxworks
16990ed7c580Smrg		;;
17000ed7c580Smrg	*)
17011a28b98bSmrg		os=none
17020ed7c580Smrg		;;
17030ed7c580Smrgesac
17041a28b98bSmrg
17050ed7c580Smrgfi
17060ed7c580Smrg
17071a28b98bSmrg# Now, validate our (potentially fixed-up) OS.
17081a28b98bSmrgcase $os in
17091a28b98bSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
17101a28b98bSmrg	musl* | newlib* | relibc* | uclibc*)
17111a28b98bSmrg		;;
17121a28b98bSmrg	# Likewise for "kernel-abi"
17131a28b98bSmrg	eabi* | gnueabi*)
17141a28b98bSmrg		;;
17151a28b98bSmrg	# VxWorks passes extra cpu info in the 4th filed.
17161a28b98bSmrg	simlinux | simwindows | spe)
17171a28b98bSmrg		;;
17181a28b98bSmrg	# Now accept the basic system types.
17191a28b98bSmrg	# The portable systems comes first.
17201a28b98bSmrg	# Each alternative MUST end in a * to match a version number.
17211a28b98bSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
17221a28b98bSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
17231a28b98bSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
17241a28b98bSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
17251a28b98bSmrg	     | hiux* | abug | nacl* | netware* | windows* \
17261a28b98bSmrg	     | os9* | macos* | osx* | ios* \
17271a28b98bSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
17281a28b98bSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
17291a28b98bSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
17301a28b98bSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
17311a28b98bSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
17321a28b98bSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
17331a28b98bSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
17341a28b98bSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
17351a28b98bSmrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
17361a28b98bSmrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
17371a28b98bSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
17381a28b98bSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
17391a28b98bSmrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
17401a28b98bSmrg	     | midipix* | mingw32* | mingw64* | mint* \
17411a28b98bSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
17421a28b98bSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
17431a28b98bSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
17441a28b98bSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
17451a28b98bSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
17461a28b98bSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
17471a28b98bSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
17481a28b98bSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
17491a28b98bSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
17501a28b98bSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
17511a28b98bSmrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*)
17521a28b98bSmrg		;;
17531a28b98bSmrg	# This one is extra strict with allowed versions
17541a28b98bSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
17551a28b98bSmrg		# Don't forget version if it is 3.2v4 or newer.
17561a28b98bSmrg		;;
17571a28b98bSmrg	none)
17581a28b98bSmrg		;;
17591a28b98bSmrg	*)
17601a28b98bSmrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
17611a28b98bSmrg		exit 1
17621a28b98bSmrg		;;
17631a28b98bSmrgesac
17641a28b98bSmrg
17651a28b98bSmrg# As a final step for OS-related things, validate the OS-kernel combination
17661a28b98bSmrg# (given a valid OS), if there is a kernel.
17671a28b98bSmrgcase $kernel-$os in
17681a28b98bSmrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
17691a28b98bSmrg		   | linux-musl* | linux-relibc* | linux-uclibc* )
17701a28b98bSmrg		;;
17711a28b98bSmrg	uclinux-uclibc* )
17721a28b98bSmrg		;;
17731a28b98bSmrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
17741a28b98bSmrg		# These are just libc implementations, not actual OSes, and thus
17751a28b98bSmrg		# require a kernel.
17761a28b98bSmrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
17771a28b98bSmrg		exit 1
17781a28b98bSmrg		;;
17791a28b98bSmrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
17801a28b98bSmrg		;;
17811a28b98bSmrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
17821a28b98bSmrg		;;
17831a28b98bSmrg	nto-qnx*)
17841a28b98bSmrg		;;
17851a28b98bSmrg	os2-emx)
17861a28b98bSmrg		;;
17871a28b98bSmrg	*-eabi* | *-gnueabi*)
17881a28b98bSmrg		;;
17891a28b98bSmrg	-*)
17901a28b98bSmrg		# Blank kernel with real OS is always fine.
17911a28b98bSmrg		;;
17921a28b98bSmrg	*-*)
17931a28b98bSmrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
17941a28b98bSmrg		exit 1
17951a28b98bSmrg		;;
17961a28b98bSmrgesac
17971a28b98bSmrg
17980ed7c580Smrg# Here we handle the case where we know the os, and the CPU type, but not the
17990ed7c580Smrg# manufacturer.  We pick the logical manufacturer.
18001a28b98bSmrgcase $vendor in
18011a28b98bSmrg	unknown)
18021a28b98bSmrg		case $cpu-$os in
18031a28b98bSmrg			*-riscix*)
18040ed7c580Smrg				vendor=acorn
18050ed7c580Smrg				;;
18061a28b98bSmrg			*-sunos*)
18070ed7c580Smrg				vendor=sun
18080ed7c580Smrg				;;
18091a28b98bSmrg			*-cnk* | *-aix*)
18100ed7c580Smrg				vendor=ibm
18110ed7c580Smrg				;;
18121a28b98bSmrg			*-beos*)
18130ed7c580Smrg				vendor=be
18140ed7c580Smrg				;;
18151a28b98bSmrg			*-hpux*)
18160ed7c580Smrg				vendor=hp
18170ed7c580Smrg				;;
18181a28b98bSmrg			*-mpeix*)
18190ed7c580Smrg				vendor=hp
18200ed7c580Smrg				;;
18211a28b98bSmrg			*-hiux*)
18220ed7c580Smrg				vendor=hitachi
18230ed7c580Smrg				;;
18241a28b98bSmrg			*-unos*)
18250ed7c580Smrg				vendor=crds
18260ed7c580Smrg				;;
18271a28b98bSmrg			*-dgux*)
18280ed7c580Smrg				vendor=dg
18290ed7c580Smrg				;;
18301a28b98bSmrg			*-luna*)
18310ed7c580Smrg				vendor=omron
18320ed7c580Smrg				;;
18331a28b98bSmrg			*-genix*)
18340ed7c580Smrg				vendor=ns
18350ed7c580Smrg				;;
18361a28b98bSmrg			*-clix*)
18371a28b98bSmrg				vendor=intergraph
18381a28b98bSmrg				;;
18391a28b98bSmrg			*-mvs* | *-opened*)
18401a28b98bSmrg				vendor=ibm
18411a28b98bSmrg				;;
18421a28b98bSmrg			*-os400*)
18430ed7c580Smrg				vendor=ibm
18440ed7c580Smrg				;;
18451a28b98bSmrg			s390-* | s390x-*)
18460ed7c580Smrg				vendor=ibm
18470ed7c580Smrg				;;
18481a28b98bSmrg			*-ptx*)
18490ed7c580Smrg				vendor=sequent
18500ed7c580Smrg				;;
18511a28b98bSmrg			*-tpf*)
18520ed7c580Smrg				vendor=ibm
18530ed7c580Smrg				;;
18541a28b98bSmrg			*-vxsim* | *-vxworks* | *-windiss*)
18550ed7c580Smrg				vendor=wrs
18560ed7c580Smrg				;;
18571a28b98bSmrg			*-aux*)
18580ed7c580Smrg				vendor=apple
18590ed7c580Smrg				;;
18601a28b98bSmrg			*-hms*)
18610ed7c580Smrg				vendor=hitachi
18620ed7c580Smrg				;;
18631a28b98bSmrg			*-mpw* | *-macos*)
18640ed7c580Smrg				vendor=apple
18650ed7c580Smrg				;;
18661a28b98bSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
18670ed7c580Smrg				vendor=atari
18680ed7c580Smrg				;;
18691a28b98bSmrg			*-vos*)
18700ed7c580Smrg				vendor=stratus
18710ed7c580Smrg				;;
18720ed7c580Smrg		esac
18730ed7c580Smrg		;;
18740ed7c580Smrgesac
18750ed7c580Smrg
18761a28b98bSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
18770ed7c580Smrgexit
18780ed7c580Smrg
18790ed7c580Smrg# Local variables:
18801a28b98bSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
18810ed7c580Smrg# time-stamp-start: "timestamp='"
18820ed7c580Smrg# time-stamp-format: "%:y-%02m-%02d"
18830ed7c580Smrg# time-stamp-end: "'"
18840ed7c580Smrg# End:
1885