16c321187Smrg#! /bin/sh
26c321187Smrg# Configuration validation subroutine script.
39dedec0cSmrg#   Copyright 1992-2021 Free Software Foundation, Inc.
46c321187Smrg
59dedec0cSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
69dedec0cSmrg
79dedec0cSmrgtimestamp='2021-08-14'
86c321187Smrg
99d0b5e55Smrg# This file is free software; you can redistribute it and/or modify it
109d0b5e55Smrg# under the terms of the GNU General Public License as published by
119d0b5e55Smrg# the Free Software Foundation; either version 3 of the License, or
126c321187Smrg# (at your option) any later version.
136c321187Smrg#
149d0b5e55Smrg# This program is distributed in the hope that it will be useful, but
159d0b5e55Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
169d0b5e55Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
179d0b5e55Smrg# General Public License for more details.
186c321187Smrg#
196c321187Smrg# You should have received a copy of the GNU General Public License
20198e4c3cSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
216c321187Smrg#
226c321187Smrg# As a special exception to the GNU General Public License, if you
236c321187Smrg# distribute this file as part of a program that contains a
246c321187Smrg# configuration script generated by Autoconf, you may include it under
259d0b5e55Smrg# the same distribution terms that you use for the rest of that
269d0b5e55Smrg# program.  This Exception is an additional permission under section 7
279d0b5e55Smrg# of the GNU General Public License, version 3 ("GPLv3").
286c321187Smrg
296c321187Smrg
30198e4c3cSmrg# Please send patches to <config-patches@gnu.org>.
316c321187Smrg#
326c321187Smrg# Configuration subroutine to validate and canonicalize a configuration type.
336c321187Smrg# Supply the specified configuration type as an argument.
346c321187Smrg# If it is invalid, we print an error message on stderr and exit with code 1.
356c321187Smrg# Otherwise, we print the canonical config type on stdout and succeed.
366c321187Smrg
37e120bd27Smrg# You can get the latest version of this script from:
389dedec0cSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
39e120bd27Smrg
406c321187Smrg# This file is supposed to be the same for all GNU packages
416c321187Smrg# and recognize all the CPU types, system types and aliases
426c321187Smrg# that are meaningful with *any* GNU software.
436c321187Smrg# Each package is responsible for reporting which valid configurations
446c321187Smrg# it does not support.  The user should be able to distinguish
456c321187Smrg# a failure to support a valid configuration from a meaningless
466c321187Smrg# configuration.
476c321187Smrg
486c321187Smrg# The goal of this file is to map all the various variations of a given
496c321187Smrg# machine specification into a single specification in the form:
506c321187Smrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
516c321187Smrg# or in some cases, the newer four-part form:
526c321187Smrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
536c321187Smrg# It is wrong to echo any other type of specification.
546c321187Smrg
559dedec0cSmrg# The "shellcheck disable" line above the timestamp inhibits complaints
569dedec0cSmrg# about features and limitations of the classic Bourne shell that were
579dedec0cSmrg# superseded or lifted in POSIX.  However, this script identifies a wide
589dedec0cSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
599dedec0cSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still
609dedec0cSmrg# have a pre-POSIX /bin/sh.
619dedec0cSmrg
626c321187Smrgme=`echo "$0" | sed -e 's,.*/,,'`
636c321187Smrg
646c321187Smrgusage="\
65198e4c3cSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
666c321187Smrg
676c321187SmrgCanonicalize a configuration name.
686c321187Smrg
69198e4c3cSmrgOptions:
706c321187Smrg  -h, --help         print this help, then exit
716c321187Smrg  -t, --time-stamp   print date of last modification, then exit
726c321187Smrg  -v, --version      print version number, then exit
736c321187Smrg
746c321187SmrgReport bugs and patches to <config-patches@gnu.org>."
756c321187Smrg
766c321187Smrgversion="\
776c321187SmrgGNU config.sub ($timestamp)
786c321187Smrg
799dedec0cSmrgCopyright 1992-2021 Free Software Foundation, Inc.
806c321187Smrg
816c321187SmrgThis is free software; see the source for copying conditions.  There is NO
826c321187Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
836c321187Smrg
846c321187Smrghelp="
856c321187SmrgTry \`$me --help' for more information."
866c321187Smrg
876c321187Smrg# Parse command line
886c321187Smrgwhile test $# -gt 0 ; do
896c321187Smrg  case $1 in
906c321187Smrg    --time-stamp | --time* | -t )
916c321187Smrg       echo "$timestamp" ; exit ;;
926c321187Smrg    --version | -v )
936c321187Smrg       echo "$version" ; exit ;;
946c321187Smrg    --help | --h* | -h )
956c321187Smrg       echo "$usage"; exit ;;
966c321187Smrg    -- )     # Stop option processing
976c321187Smrg       shift; break ;;
986c321187Smrg    - )	# Use stdin as input.
996c321187Smrg       break ;;
1006c321187Smrg    -* )
1019dedec0cSmrg       echo "$me: invalid option $1$help" >&2
1026c321187Smrg       exit 1 ;;
1036c321187Smrg
1046c321187Smrg    *local*)
1056c321187Smrg       # First pass through any local machine types.
106198e4c3cSmrg       echo "$1"
1076c321187Smrg       exit ;;
1086c321187Smrg
1096c321187Smrg    * )
1106c321187Smrg       break ;;
1116c321187Smrg  esac
1126c321187Smrgdone
1136c321187Smrg
1146c321187Smrgcase $# in
1156c321187Smrg 0) echo "$me: missing argument$help" >&2
1166c321187Smrg    exit 1;;
1176c321187Smrg 1) ;;
1186c321187Smrg *) echo "$me: too many arguments$help" >&2
1196c321187Smrg    exit 1;;
1206c321187Smrgesac
1216c321187Smrg
1229dedec0cSmrg# Split fields of configuration type
1239dedec0cSmrg# shellcheck disable=SC2162
1249dedec0cSmrgsaved_IFS=$IFS
1259dedec0cSmrgIFS="-" read field1 field2 field3 field4 <<EOF
1269dedec0cSmrg$1
1279dedec0cSmrgEOF
1289dedec0cSmrgIFS=$saved_IFS
1296c321187Smrg
1309dedec0cSmrg# Separate into logical components for further validation
1319dedec0cSmrgcase $1 in
1329dedec0cSmrg	*-*-*-*-*)
1339dedec0cSmrg		echo Invalid configuration \`"$1"\': more than four components >&2
1349dedec0cSmrg		exit 1
1359d0b5e55Smrg		;;
1369dedec0cSmrg	*-*-*-*)
1379dedec0cSmrg		basic_machine=$field1-$field2
1389dedec0cSmrg		basic_os=$field3-$field4
1396c321187Smrg		;;
1409dedec0cSmrg	*-*-*)
1419dedec0cSmrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
1429dedec0cSmrg		# parts
1439dedec0cSmrg		maybe_os=$field2-$field3
1449dedec0cSmrg		case $maybe_os in
1459dedec0cSmrg			nto-qnx* | linux-* | uclinux-uclibc* \
1469dedec0cSmrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
1479dedec0cSmrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
1489dedec0cSmrg			| storm-chaos* | os2-emx* | rtmk-nova*)
1499dedec0cSmrg				basic_machine=$field1
1509dedec0cSmrg				basic_os=$maybe_os
1519dedec0cSmrg				;;
1529dedec0cSmrg			android-linux)
1539dedec0cSmrg				basic_machine=$field1-unknown
1549dedec0cSmrg				basic_os=linux-android
1559dedec0cSmrg				;;
1569dedec0cSmrg			*)
1579dedec0cSmrg				basic_machine=$field1-$field2
1589dedec0cSmrg				basic_os=$field3
1599dedec0cSmrg				;;
1609dedec0cSmrg		esac
1616c321187Smrg		;;
1629dedec0cSmrg	*-*)
1639dedec0cSmrg		# A lone config we happen to match not fitting any pattern
1649dedec0cSmrg		case $field1-$field2 in
1659dedec0cSmrg			decstation-3100)
1669dedec0cSmrg				basic_machine=mips-dec
1679dedec0cSmrg				basic_os=
1689dedec0cSmrg				;;
1699dedec0cSmrg			*-*)
1709dedec0cSmrg				# Second component is usually, but not always the OS
1719dedec0cSmrg				case $field2 in
1729dedec0cSmrg					# Prevent following clause from handling this valid os
1739dedec0cSmrg					sun*os*)
1749dedec0cSmrg						basic_machine=$field1
1759dedec0cSmrg						basic_os=$field2
1769dedec0cSmrg						;;
1779dedec0cSmrg					zephyr*)
1789dedec0cSmrg						basic_machine=$field1-unknown
1799dedec0cSmrg						basic_os=$field2
1809dedec0cSmrg						;;
1819dedec0cSmrg					# Manufacturers
1829dedec0cSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
1839dedec0cSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
1849dedec0cSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
1859dedec0cSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
1869dedec0cSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
1879dedec0cSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
1889dedec0cSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
1899dedec0cSmrg					| microblaze* | sim | cisco \
1909dedec0cSmrg					| oki | wec | wrs | winbond)
1919dedec0cSmrg						basic_machine=$field1-$field2
1929dedec0cSmrg						basic_os=
1939dedec0cSmrg						;;
1949dedec0cSmrg					*)
1959dedec0cSmrg						basic_machine=$field1
1969dedec0cSmrg						basic_os=$field2
1979dedec0cSmrg						;;
1989dedec0cSmrg				esac
1999dedec0cSmrg			;;
2009dedec0cSmrg		esac
2016c321187Smrg		;;
2029dedec0cSmrg	*)
2039dedec0cSmrg		# Convert single-component short-hands not valid as part of
2049dedec0cSmrg		# multi-component configurations.
2059dedec0cSmrg		case $field1 in
2069dedec0cSmrg			386bsd)
2079dedec0cSmrg				basic_machine=i386-pc
2089dedec0cSmrg				basic_os=bsd
2099dedec0cSmrg				;;
2109dedec0cSmrg			a29khif)
2119dedec0cSmrg				basic_machine=a29k-amd
2129dedec0cSmrg				basic_os=udi
2139dedec0cSmrg				;;
2149dedec0cSmrg			adobe68k)
2159dedec0cSmrg				basic_machine=m68010-adobe
2169dedec0cSmrg				basic_os=scout
2179dedec0cSmrg				;;
2189dedec0cSmrg			alliant)
2199dedec0cSmrg				basic_machine=fx80-alliant
2209dedec0cSmrg				basic_os=
2219dedec0cSmrg				;;
2229dedec0cSmrg			altos | altos3068)
2239dedec0cSmrg				basic_machine=m68k-altos
2249dedec0cSmrg				basic_os=
2259dedec0cSmrg				;;
2269dedec0cSmrg			am29k)
2279dedec0cSmrg				basic_machine=a29k-none
2289dedec0cSmrg				basic_os=bsd
2299dedec0cSmrg				;;
2309dedec0cSmrg			amdahl)
2319dedec0cSmrg				basic_machine=580-amdahl
2329dedec0cSmrg				basic_os=sysv
2339dedec0cSmrg				;;
2349dedec0cSmrg			amiga)
2359dedec0cSmrg				basic_machine=m68k-unknown
2369dedec0cSmrg				basic_os=
2379dedec0cSmrg				;;
2389dedec0cSmrg			amigaos | amigados)
2399dedec0cSmrg				basic_machine=m68k-unknown
2409dedec0cSmrg				basic_os=amigaos
2419dedec0cSmrg				;;
2429dedec0cSmrg			amigaunix | amix)
2439dedec0cSmrg				basic_machine=m68k-unknown
2449dedec0cSmrg				basic_os=sysv4
2459dedec0cSmrg				;;
2469dedec0cSmrg			apollo68)
2479dedec0cSmrg				basic_machine=m68k-apollo
2489dedec0cSmrg				basic_os=sysv
2499dedec0cSmrg				;;
2509dedec0cSmrg			apollo68bsd)
2519dedec0cSmrg				basic_machine=m68k-apollo
2529dedec0cSmrg				basic_os=bsd
2539dedec0cSmrg				;;
2549dedec0cSmrg			aros)
2559dedec0cSmrg				basic_machine=i386-pc
2569dedec0cSmrg				basic_os=aros
2579dedec0cSmrg				;;
2589dedec0cSmrg			aux)
2599dedec0cSmrg				basic_machine=m68k-apple
2609dedec0cSmrg				basic_os=aux
2619dedec0cSmrg				;;
2629dedec0cSmrg			balance)
2639dedec0cSmrg				basic_machine=ns32k-sequent
2649dedec0cSmrg				basic_os=dynix
2659dedec0cSmrg				;;
2669dedec0cSmrg			blackfin)
2679dedec0cSmrg				basic_machine=bfin-unknown
2689dedec0cSmrg				basic_os=linux
2699dedec0cSmrg				;;
2709dedec0cSmrg			cegcc)
2719dedec0cSmrg				basic_machine=arm-unknown
2729dedec0cSmrg				basic_os=cegcc
2739dedec0cSmrg				;;
2749dedec0cSmrg			convex-c1)
2759dedec0cSmrg				basic_machine=c1-convex
2769dedec0cSmrg				basic_os=bsd
2779dedec0cSmrg				;;
2789dedec0cSmrg			convex-c2)
2799dedec0cSmrg				basic_machine=c2-convex
2809dedec0cSmrg				basic_os=bsd
2819dedec0cSmrg				;;
2829dedec0cSmrg			convex-c32)
2839dedec0cSmrg				basic_machine=c32-convex
2849dedec0cSmrg				basic_os=bsd
2859dedec0cSmrg				;;
2869dedec0cSmrg			convex-c34)
2879dedec0cSmrg				basic_machine=c34-convex
2889dedec0cSmrg				basic_os=bsd
2899dedec0cSmrg				;;
2909dedec0cSmrg			convex-c38)
2919dedec0cSmrg				basic_machine=c38-convex
2929dedec0cSmrg				basic_os=bsd
2939dedec0cSmrg				;;
2949dedec0cSmrg			cray)
2959dedec0cSmrg				basic_machine=j90-cray
2969dedec0cSmrg				basic_os=unicos
2979dedec0cSmrg				;;
2989dedec0cSmrg			crds | unos)
2999dedec0cSmrg				basic_machine=m68k-crds
3009dedec0cSmrg				basic_os=
3019dedec0cSmrg				;;
3029dedec0cSmrg			da30)
3039dedec0cSmrg				basic_machine=m68k-da30
3049dedec0cSmrg				basic_os=
3059dedec0cSmrg				;;
3069dedec0cSmrg			decstation | pmax | pmin | dec3100 | decstatn)
3079dedec0cSmrg				basic_machine=mips-dec
3089dedec0cSmrg				basic_os=
3099dedec0cSmrg				;;
3109dedec0cSmrg			delta88)
3119dedec0cSmrg				basic_machine=m88k-motorola
3129dedec0cSmrg				basic_os=sysv3
3139dedec0cSmrg				;;
3149dedec0cSmrg			dicos)
3159dedec0cSmrg				basic_machine=i686-pc
3169dedec0cSmrg				basic_os=dicos
3179dedec0cSmrg				;;
3189dedec0cSmrg			djgpp)
3199dedec0cSmrg				basic_machine=i586-pc
3209dedec0cSmrg				basic_os=msdosdjgpp
3219dedec0cSmrg				;;
3229dedec0cSmrg			ebmon29k)
3239dedec0cSmrg				basic_machine=a29k-amd
3249dedec0cSmrg				basic_os=ebmon
3259dedec0cSmrg				;;
3269dedec0cSmrg			es1800 | OSE68k | ose68k | ose | OSE)
3279dedec0cSmrg				basic_machine=m68k-ericsson
3289dedec0cSmrg				basic_os=ose
3299dedec0cSmrg				;;
3309dedec0cSmrg			gmicro)
3319dedec0cSmrg				basic_machine=tron-gmicro
3329dedec0cSmrg				basic_os=sysv
3339dedec0cSmrg				;;
3349dedec0cSmrg			go32)
3359dedec0cSmrg				basic_machine=i386-pc
3369dedec0cSmrg				basic_os=go32
3379dedec0cSmrg				;;
3389dedec0cSmrg			h8300hms)
3399dedec0cSmrg				basic_machine=h8300-hitachi
3409dedec0cSmrg				basic_os=hms
3419dedec0cSmrg				;;
3429dedec0cSmrg			h8300xray)
3439dedec0cSmrg				basic_machine=h8300-hitachi
3449dedec0cSmrg				basic_os=xray
3459dedec0cSmrg				;;
3469dedec0cSmrg			h8500hms)
3479dedec0cSmrg				basic_machine=h8500-hitachi
3489dedec0cSmrg				basic_os=hms
3499dedec0cSmrg				;;
3509dedec0cSmrg			harris)
3519dedec0cSmrg				basic_machine=m88k-harris
3529dedec0cSmrg				basic_os=sysv3
3539dedec0cSmrg				;;
3549dedec0cSmrg			hp300 | hp300hpux)
3559dedec0cSmrg				basic_machine=m68k-hp
3569dedec0cSmrg				basic_os=hpux
3579dedec0cSmrg				;;
3589dedec0cSmrg			hp300bsd)
3599dedec0cSmrg				basic_machine=m68k-hp
3609dedec0cSmrg				basic_os=bsd
3619dedec0cSmrg				;;
3629dedec0cSmrg			hppaosf)
3639dedec0cSmrg				basic_machine=hppa1.1-hp
3649dedec0cSmrg				basic_os=osf
3659dedec0cSmrg				;;
3669dedec0cSmrg			hppro)
3679dedec0cSmrg				basic_machine=hppa1.1-hp
3689dedec0cSmrg				basic_os=proelf
3699dedec0cSmrg				;;
3709dedec0cSmrg			i386mach)
3719dedec0cSmrg				basic_machine=i386-mach
3729dedec0cSmrg				basic_os=mach
3739dedec0cSmrg				;;
3749dedec0cSmrg			isi68 | isi)
3759dedec0cSmrg				basic_machine=m68k-isi
3769dedec0cSmrg				basic_os=sysv
3779dedec0cSmrg				;;
3789dedec0cSmrg			m68knommu)
3799dedec0cSmrg				basic_machine=m68k-unknown
3809dedec0cSmrg				basic_os=linux
3819dedec0cSmrg				;;
3829dedec0cSmrg			magnum | m3230)
3839dedec0cSmrg				basic_machine=mips-mips
3849dedec0cSmrg				basic_os=sysv
3859dedec0cSmrg				;;
3869dedec0cSmrg			merlin)
3879dedec0cSmrg				basic_machine=ns32k-utek
3889dedec0cSmrg				basic_os=sysv
3899dedec0cSmrg				;;
3909dedec0cSmrg			mingw64)
3919dedec0cSmrg				basic_machine=x86_64-pc
3929dedec0cSmrg				basic_os=mingw64
3939dedec0cSmrg				;;
3949dedec0cSmrg			mingw32)
3959dedec0cSmrg				basic_machine=i686-pc
3969dedec0cSmrg				basic_os=mingw32
3979dedec0cSmrg				;;
3989dedec0cSmrg			mingw32ce)
3999dedec0cSmrg				basic_machine=arm-unknown
4009dedec0cSmrg				basic_os=mingw32ce
4019dedec0cSmrg				;;
4029dedec0cSmrg			monitor)
4039dedec0cSmrg				basic_machine=m68k-rom68k
4049dedec0cSmrg				basic_os=coff
4059dedec0cSmrg				;;
4069dedec0cSmrg			morphos)
4079dedec0cSmrg				basic_machine=powerpc-unknown
4089dedec0cSmrg				basic_os=morphos
4099dedec0cSmrg				;;
4109dedec0cSmrg			moxiebox)
4119dedec0cSmrg				basic_machine=moxie-unknown
4129dedec0cSmrg				basic_os=moxiebox
4139dedec0cSmrg				;;
4149dedec0cSmrg			msdos)
4159dedec0cSmrg				basic_machine=i386-pc
4169dedec0cSmrg				basic_os=msdos
4179dedec0cSmrg				;;
4189dedec0cSmrg			msys)
4199dedec0cSmrg				basic_machine=i686-pc
4209dedec0cSmrg				basic_os=msys
4219dedec0cSmrg				;;
4229dedec0cSmrg			mvs)
4239dedec0cSmrg				basic_machine=i370-ibm
4249dedec0cSmrg				basic_os=mvs
4259dedec0cSmrg				;;
4269dedec0cSmrg			nacl)
4279dedec0cSmrg				basic_machine=le32-unknown
4289dedec0cSmrg				basic_os=nacl
4299dedec0cSmrg				;;
4309dedec0cSmrg			ncr3000)
4319dedec0cSmrg				basic_machine=i486-ncr
4329dedec0cSmrg				basic_os=sysv4
4339dedec0cSmrg				;;
4349dedec0cSmrg			netbsd386)
4359dedec0cSmrg				basic_machine=i386-pc
4369dedec0cSmrg				basic_os=netbsd
4379dedec0cSmrg				;;
4389dedec0cSmrg			netwinder)
4399dedec0cSmrg				basic_machine=armv4l-rebel
4409dedec0cSmrg				basic_os=linux
4419dedec0cSmrg				;;
4429dedec0cSmrg			news | news700 | news800 | news900)
4439dedec0cSmrg				basic_machine=m68k-sony
4449dedec0cSmrg				basic_os=newsos
4459dedec0cSmrg				;;
4469dedec0cSmrg			news1000)
4479dedec0cSmrg				basic_machine=m68030-sony
4489dedec0cSmrg				basic_os=newsos
4499dedec0cSmrg				;;
4509dedec0cSmrg			necv70)
4519dedec0cSmrg				basic_machine=v70-nec
4529dedec0cSmrg				basic_os=sysv
4539dedec0cSmrg				;;
4549dedec0cSmrg			nh3000)
4559dedec0cSmrg				basic_machine=m68k-harris
4569dedec0cSmrg				basic_os=cxux
4579dedec0cSmrg				;;
4589dedec0cSmrg			nh[45]000)
4599dedec0cSmrg				basic_machine=m88k-harris
4609dedec0cSmrg				basic_os=cxux
4619dedec0cSmrg				;;
4629dedec0cSmrg			nindy960)
4639dedec0cSmrg				basic_machine=i960-intel
4649dedec0cSmrg				basic_os=nindy
4659dedec0cSmrg				;;
4669dedec0cSmrg			mon960)
4679dedec0cSmrg				basic_machine=i960-intel
4689dedec0cSmrg				basic_os=mon960
4699dedec0cSmrg				;;
4709dedec0cSmrg			nonstopux)
4719dedec0cSmrg				basic_machine=mips-compaq
4729dedec0cSmrg				basic_os=nonstopux
4739dedec0cSmrg				;;
4749dedec0cSmrg			os400)
4759dedec0cSmrg				basic_machine=powerpc-ibm
4769dedec0cSmrg				basic_os=os400
4779dedec0cSmrg				;;
4789dedec0cSmrg			OSE68000 | ose68000)
4799dedec0cSmrg				basic_machine=m68000-ericsson
4809dedec0cSmrg				basic_os=ose
4819dedec0cSmrg				;;
4829dedec0cSmrg			os68k)
4839dedec0cSmrg				basic_machine=m68k-none
4849dedec0cSmrg				basic_os=os68k
4859dedec0cSmrg				;;
4869dedec0cSmrg			paragon)
4879dedec0cSmrg				basic_machine=i860-intel
4889dedec0cSmrg				basic_os=osf
4899dedec0cSmrg				;;
4909dedec0cSmrg			parisc)
4919dedec0cSmrg				basic_machine=hppa-unknown
4929dedec0cSmrg				basic_os=linux
4939dedec0cSmrg				;;
4949dedec0cSmrg			psp)
4959dedec0cSmrg				basic_machine=mipsallegrexel-sony
4969dedec0cSmrg				basic_os=psp
4979dedec0cSmrg				;;
4989dedec0cSmrg			pw32)
4999dedec0cSmrg				basic_machine=i586-unknown
5009dedec0cSmrg				basic_os=pw32
5019dedec0cSmrg				;;
5029dedec0cSmrg			rdos | rdos64)
5039dedec0cSmrg				basic_machine=x86_64-pc
5049dedec0cSmrg				basic_os=rdos
5059dedec0cSmrg				;;
5069dedec0cSmrg			rdos32)
5079dedec0cSmrg				basic_machine=i386-pc
5089dedec0cSmrg				basic_os=rdos
5099dedec0cSmrg				;;
5109dedec0cSmrg			rom68k)
5119dedec0cSmrg				basic_machine=m68k-rom68k
5129dedec0cSmrg				basic_os=coff
5139dedec0cSmrg				;;
5149dedec0cSmrg			sa29200)
5159dedec0cSmrg				basic_machine=a29k-amd
5169dedec0cSmrg				basic_os=udi
5179dedec0cSmrg				;;
5189dedec0cSmrg			sei)
5199dedec0cSmrg				basic_machine=mips-sei
5209dedec0cSmrg				basic_os=seiux
5219dedec0cSmrg				;;
5229dedec0cSmrg			sequent)
5239dedec0cSmrg				basic_machine=i386-sequent
5249dedec0cSmrg				basic_os=
5259dedec0cSmrg				;;
5269dedec0cSmrg			sps7)
5279dedec0cSmrg				basic_machine=m68k-bull
5289dedec0cSmrg				basic_os=sysv2
5299dedec0cSmrg				;;
5309dedec0cSmrg			st2000)
5319dedec0cSmrg				basic_machine=m68k-tandem
5329dedec0cSmrg				basic_os=
5339dedec0cSmrg				;;
5349dedec0cSmrg			stratus)
5359dedec0cSmrg				basic_machine=i860-stratus
5369dedec0cSmrg				basic_os=sysv4
5379dedec0cSmrg				;;
5389dedec0cSmrg			sun2)
5399dedec0cSmrg				basic_machine=m68000-sun
5409dedec0cSmrg				basic_os=
5419dedec0cSmrg				;;
5429dedec0cSmrg			sun2os3)
5439dedec0cSmrg				basic_machine=m68000-sun
5449dedec0cSmrg				basic_os=sunos3
5459dedec0cSmrg				;;
5469dedec0cSmrg			sun2os4)
5479dedec0cSmrg				basic_machine=m68000-sun
5489dedec0cSmrg				basic_os=sunos4
5499dedec0cSmrg				;;
5509dedec0cSmrg			sun3)
5519dedec0cSmrg				basic_machine=m68k-sun
5529dedec0cSmrg				basic_os=
5539dedec0cSmrg				;;
5549dedec0cSmrg			sun3os3)
5559dedec0cSmrg				basic_machine=m68k-sun
5569dedec0cSmrg				basic_os=sunos3
5579dedec0cSmrg				;;
5589dedec0cSmrg			sun3os4)
5599dedec0cSmrg				basic_machine=m68k-sun
5609dedec0cSmrg				basic_os=sunos4
5619dedec0cSmrg				;;
5629dedec0cSmrg			sun4)
5639dedec0cSmrg				basic_machine=sparc-sun
5649dedec0cSmrg				basic_os=
5659dedec0cSmrg				;;
5669dedec0cSmrg			sun4os3)
5679dedec0cSmrg				basic_machine=sparc-sun
5689dedec0cSmrg				basic_os=sunos3
5699dedec0cSmrg				;;
5709dedec0cSmrg			sun4os4)
5719dedec0cSmrg				basic_machine=sparc-sun
5729dedec0cSmrg				basic_os=sunos4
5739dedec0cSmrg				;;
5749dedec0cSmrg			sun4sol2)
5759dedec0cSmrg				basic_machine=sparc-sun
5769dedec0cSmrg				basic_os=solaris2
5779dedec0cSmrg				;;
5789dedec0cSmrg			sun386 | sun386i | roadrunner)
5799dedec0cSmrg				basic_machine=i386-sun
5809dedec0cSmrg				basic_os=
5819dedec0cSmrg				;;
5829dedec0cSmrg			sv1)
5839dedec0cSmrg				basic_machine=sv1-cray
5849dedec0cSmrg				basic_os=unicos
5859dedec0cSmrg				;;
5869dedec0cSmrg			symmetry)
5879dedec0cSmrg				basic_machine=i386-sequent
5889dedec0cSmrg				basic_os=dynix
5899dedec0cSmrg				;;
5909dedec0cSmrg			t3e)
5919dedec0cSmrg				basic_machine=alphaev5-cray
5929dedec0cSmrg				basic_os=unicos
5939dedec0cSmrg				;;
5949dedec0cSmrg			t90)
5959dedec0cSmrg				basic_machine=t90-cray
5969dedec0cSmrg				basic_os=unicos
5979dedec0cSmrg				;;
5989dedec0cSmrg			toad1)
5999dedec0cSmrg				basic_machine=pdp10-xkl
6009dedec0cSmrg				basic_os=tops20
6019dedec0cSmrg				;;
6029dedec0cSmrg			tpf)
6039dedec0cSmrg				basic_machine=s390x-ibm
6049dedec0cSmrg				basic_os=tpf
6059dedec0cSmrg				;;
6069dedec0cSmrg			udi29k)
6079dedec0cSmrg				basic_machine=a29k-amd
6089dedec0cSmrg				basic_os=udi
6099dedec0cSmrg				;;
6109dedec0cSmrg			ultra3)
6119dedec0cSmrg				basic_machine=a29k-nyu
6129dedec0cSmrg				basic_os=sym1
6139dedec0cSmrg				;;
6149dedec0cSmrg			v810 | necv810)
6159dedec0cSmrg				basic_machine=v810-nec
6169dedec0cSmrg				basic_os=none
6179dedec0cSmrg				;;
6189dedec0cSmrg			vaxv)
6199dedec0cSmrg				basic_machine=vax-dec
6209dedec0cSmrg				basic_os=sysv
6219dedec0cSmrg				;;
6229dedec0cSmrg			vms)
6239dedec0cSmrg				basic_machine=vax-dec
6249dedec0cSmrg				basic_os=vms
6259dedec0cSmrg				;;
6269dedec0cSmrg			vsta)
6279dedec0cSmrg				basic_machine=i386-pc
6289dedec0cSmrg				basic_os=vsta
6299dedec0cSmrg				;;
6309dedec0cSmrg			vxworks960)
6319dedec0cSmrg				basic_machine=i960-wrs
6329dedec0cSmrg				basic_os=vxworks
6339dedec0cSmrg				;;
6349dedec0cSmrg			vxworks68)
6359dedec0cSmrg				basic_machine=m68k-wrs
6369dedec0cSmrg				basic_os=vxworks
6379dedec0cSmrg				;;
6389dedec0cSmrg			vxworks29k)
6399dedec0cSmrg				basic_machine=a29k-wrs
6409dedec0cSmrg				basic_os=vxworks
6419dedec0cSmrg				;;
6429dedec0cSmrg			xbox)
6439dedec0cSmrg				basic_machine=i686-pc
6449dedec0cSmrg				basic_os=mingw32
6459dedec0cSmrg				;;
6469dedec0cSmrg			ymp)
6479dedec0cSmrg				basic_machine=ymp-cray
6489dedec0cSmrg				basic_os=unicos
6499dedec0cSmrg				;;
6509dedec0cSmrg			*)
6519dedec0cSmrg				basic_machine=$1
6529dedec0cSmrg				basic_os=
6539dedec0cSmrg				;;
6549dedec0cSmrg		esac
6556c321187Smrg		;;
6566c321187Smrgesac
6576c321187Smrg
6589dedec0cSmrg# Decode 1-component or ad-hoc basic machines
6596c321187Smrgcase $basic_machine in
6609dedec0cSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
6619dedec0cSmrg	# some cases the only manufacturer, in others, it is the most popular.
6629dedec0cSmrg	w89k)
6639dedec0cSmrg		cpu=hppa1.1
6649dedec0cSmrg		vendor=winbond
665198e4c3cSmrg		;;
6669dedec0cSmrg	op50n)
6679dedec0cSmrg		cpu=hppa1.1
6689dedec0cSmrg		vendor=oki
6696c321187Smrg		;;
6709dedec0cSmrg	op60c)
6719dedec0cSmrg		cpu=hppa1.1
6729dedec0cSmrg		vendor=oki
6736c321187Smrg		;;
6749dedec0cSmrg	ibm*)
6759dedec0cSmrg		cpu=i370
6769dedec0cSmrg		vendor=ibm
6776c321187Smrg		;;
6789dedec0cSmrg	orion105)
6799dedec0cSmrg		cpu=clipper
6809dedec0cSmrg		vendor=highlevel
6819d0b5e55Smrg		;;
6829dedec0cSmrg	mac | mpw | mac-mpw)
6839dedec0cSmrg		cpu=m68k
6849dedec0cSmrg		vendor=apple
6859d0b5e55Smrg		;;
6869dedec0cSmrg	pmac | pmac-mpw)
6879dedec0cSmrg		cpu=powerpc
6889dedec0cSmrg		vendor=apple
6899d0b5e55Smrg		;;
6909d0b5e55Smrg
6916c321187Smrg	# Recognize the various machine names and aliases which stand
6926c321187Smrg	# for a CPU type and a company and sometimes even an OS.
6936c321187Smrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
6949dedec0cSmrg		cpu=m68000
6959dedec0cSmrg		vendor=att
6966c321187Smrg		;;
6976c321187Smrg	3b*)
6989dedec0cSmrg		cpu=we32k
6999dedec0cSmrg		vendor=att
70093493779Smrg		;;
701e120bd27Smrg	bluegene*)
7029dedec0cSmrg		cpu=powerpc
7039dedec0cSmrg		vendor=ibm
7049dedec0cSmrg		basic_os=cnk
7056c321187Smrg		;;
7066c321187Smrg	decsystem10* | dec10*)
7079dedec0cSmrg		cpu=pdp10
7089dedec0cSmrg		vendor=dec
7099dedec0cSmrg		basic_os=tops10
7106c321187Smrg		;;
7116c321187Smrg	decsystem20* | dec20*)
7129dedec0cSmrg		cpu=pdp10
7139dedec0cSmrg		vendor=dec
7149dedec0cSmrg		basic_os=tops20
7156c321187Smrg		;;
7166c321187Smrg	delta | 3300 | motorola-3300 | motorola-delta \
7176c321187Smrg	      | 3300-motorola | delta-motorola)
7189dedec0cSmrg		cpu=m68k
7199dedec0cSmrg		vendor=motorola
7206c321187Smrg		;;
721198e4c3cSmrg	dpx2*)
7229dedec0cSmrg		cpu=m68k
7239dedec0cSmrg		vendor=bull
7249dedec0cSmrg		basic_os=sysv3
7256c321187Smrg		;;
7266c321187Smrg	encore | umax | mmax)
7279dedec0cSmrg		cpu=ns32k
7289dedec0cSmrg		vendor=encore
7296c321187Smrg		;;
7309dedec0cSmrg	elxsi)
7319dedec0cSmrg		cpu=elxsi
7329dedec0cSmrg		vendor=elxsi
7339dedec0cSmrg		basic_os=${basic_os:-bsd}
7346c321187Smrg		;;
7356c321187Smrg	fx2800)
7369dedec0cSmrg		cpu=i860
7379dedec0cSmrg		vendor=alliant
7386c321187Smrg		;;
7396c321187Smrg	genix)
7409dedec0cSmrg		cpu=ns32k
7419dedec0cSmrg		vendor=ns
7426c321187Smrg		;;
7436c321187Smrg	h3050r* | hiux*)
7449dedec0cSmrg		cpu=hppa1.1
7459dedec0cSmrg		vendor=hitachi
7469dedec0cSmrg		basic_os=hiuxwe2
7476c321187Smrg		;;
7486c321187Smrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
7499dedec0cSmrg		cpu=hppa1.0
7509dedec0cSmrg		vendor=hp
7516c321187Smrg		;;
7526c321187Smrg	hp9k2[0-9][0-9] | hp9k31[0-9])
7539dedec0cSmrg		cpu=m68000
7549dedec0cSmrg		vendor=hp
7556c321187Smrg		;;
7566c321187Smrg	hp9k3[2-9][0-9])
7579dedec0cSmrg		cpu=m68k
7589dedec0cSmrg		vendor=hp
7596c321187Smrg		;;
7606c321187Smrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
7619dedec0cSmrg		cpu=hppa1.0
7629dedec0cSmrg		vendor=hp
7636c321187Smrg		;;
7646c321187Smrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
7659dedec0cSmrg		cpu=hppa1.1
7669dedec0cSmrg		vendor=hp
7676c321187Smrg		;;
7686c321187Smrg	hp9k78[0-9] | hp78[0-9])
7696c321187Smrg		# FIXME: really hppa2.0-hp
7709dedec0cSmrg		cpu=hppa1.1
7719dedec0cSmrg		vendor=hp
7726c321187Smrg		;;
7736c321187Smrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
7746c321187Smrg		# FIXME: really hppa2.0-hp
7759dedec0cSmrg		cpu=hppa1.1
7769dedec0cSmrg		vendor=hp
7776c321187Smrg		;;
7786c321187Smrg	hp9k8[0-9][13679] | hp8[0-9][13679])
7799dedec0cSmrg		cpu=hppa1.1
7809dedec0cSmrg		vendor=hp
7816c321187Smrg		;;
7826c321187Smrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
7839dedec0cSmrg		cpu=hppa1.0
7849dedec0cSmrg		vendor=hp
7856c321187Smrg		;;
7866c321187Smrg	i*86v32)
7879dedec0cSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7889dedec0cSmrg		vendor=pc
7899dedec0cSmrg		basic_os=sysv32
7906c321187Smrg		;;
7916c321187Smrg	i*86v4*)
7929dedec0cSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7939dedec0cSmrg		vendor=pc
7949dedec0cSmrg		basic_os=sysv4
7956c321187Smrg		;;
7966c321187Smrg	i*86v)
7979dedec0cSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7989dedec0cSmrg		vendor=pc
7999dedec0cSmrg		basic_os=sysv
8006c321187Smrg		;;
8016c321187Smrg	i*86sol2)
8029dedec0cSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
8039dedec0cSmrg		vendor=pc
8049dedec0cSmrg		basic_os=solaris2
8056c321187Smrg		;;
8069dedec0cSmrg	j90 | j90-cray)
8079dedec0cSmrg		cpu=j90
8089dedec0cSmrg		vendor=cray
8099dedec0cSmrg		basic_os=${basic_os:-unicos}
8106c321187Smrg		;;
8116c321187Smrg	iris | iris4d)
8129dedec0cSmrg		cpu=mips
8139dedec0cSmrg		vendor=sgi
8149dedec0cSmrg		case $basic_os in
8159dedec0cSmrg		    irix*)
8166c321187Smrg			;;
8176c321187Smrg		    *)
8189dedec0cSmrg			basic_os=irix4
8196c321187Smrg			;;
8206c321187Smrg		esac
8216c321187Smrg		;;
8226c321187Smrg	miniframe)
8239dedec0cSmrg		cpu=m68000
8249dedec0cSmrg		vendor=convergent
8256c321187Smrg		;;
8269dedec0cSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
8279dedec0cSmrg		cpu=m68k
8289dedec0cSmrg		vendor=atari
8299dedec0cSmrg		basic_os=mint
8306c321187Smrg		;;
8316c321187Smrg	news-3600 | risc-news)
8329dedec0cSmrg		cpu=mips
8339dedec0cSmrg		vendor=sony
8349dedec0cSmrg		basic_os=newsos
8356c321187Smrg		;;
836198e4c3cSmrg	next | m*-next)
8379dedec0cSmrg		cpu=m68k
8389dedec0cSmrg		vendor=next
8399dedec0cSmrg		case $basic_os in
8409dedec0cSmrg		    openstep*)
8419dedec0cSmrg		        ;;
8429dedec0cSmrg		    nextstep*)
8436c321187Smrg			;;
8449dedec0cSmrg		    ns2*)
8459dedec0cSmrg		      basic_os=nextstep2
8466c321187Smrg			;;
8476c321187Smrg		    *)
8489dedec0cSmrg		      basic_os=nextstep3
8496c321187Smrg			;;
8506c321187Smrg		esac
8516c321187Smrg		;;
8526c321187Smrg	np1)
8539dedec0cSmrg		cpu=np1
8549dedec0cSmrg		vendor=gould
855198e4c3cSmrg		;;
8566c321187Smrg	op50n-* | op60c-*)
8579dedec0cSmrg		cpu=hppa1.1
8589dedec0cSmrg		vendor=oki
8599dedec0cSmrg		basic_os=proelf
8606c321187Smrg		;;
8616c321187Smrg	pa-hitachi)
8629dedec0cSmrg		cpu=hppa1.1
8639dedec0cSmrg		vendor=hitachi
8649dedec0cSmrg		basic_os=hiuxwe2
86593493779Smrg		;;
8666c321187Smrg	pbd)
8679dedec0cSmrg		cpu=sparc
8689dedec0cSmrg		vendor=tti
8696c321187Smrg		;;
8706c321187Smrg	pbb)
8719dedec0cSmrg		cpu=m68k
8729dedec0cSmrg		vendor=tti
8736c321187Smrg		;;
8749dedec0cSmrg	pc532)
8759dedec0cSmrg		cpu=ns32k
8769dedec0cSmrg		vendor=pc532
8776c321187Smrg		;;
8786c321187Smrg	pn)
8799dedec0cSmrg		cpu=pn
8809dedec0cSmrg		vendor=gould
8816c321187Smrg		;;
8829dedec0cSmrg	power)
8839dedec0cSmrg		cpu=power
8849dedec0cSmrg		vendor=ibm
8856c321187Smrg		;;
8869dedec0cSmrg	ps2)
8879dedec0cSmrg		cpu=i386
8889dedec0cSmrg		vendor=ibm
8896c321187Smrg		;;
8909dedec0cSmrg	rm[46]00)
8919dedec0cSmrg		cpu=mips
8929dedec0cSmrg		vendor=siemens
8936c321187Smrg		;;
8949dedec0cSmrg	rtpc | rtpc-*)
8959dedec0cSmrg		cpu=romp
8969dedec0cSmrg		vendor=ibm
8976c321187Smrg		;;
8989dedec0cSmrg	sde)
8999dedec0cSmrg		cpu=mipsisa32
9009dedec0cSmrg		vendor=sde
9019dedec0cSmrg		basic_os=${basic_os:-elf}
9026c321187Smrg		;;
9039dedec0cSmrg	simso-wrs)
9049dedec0cSmrg		cpu=sparclite
9059dedec0cSmrg		vendor=wrs
9069dedec0cSmrg		basic_os=vxworks
9076c321187Smrg		;;
9089dedec0cSmrg	tower | tower-32)
9099dedec0cSmrg		cpu=m68k
9109dedec0cSmrg		vendor=ncr
9116c321187Smrg		;;
9129dedec0cSmrg	vpp*|vx|vx-*)
9139dedec0cSmrg		cpu=f301
9149dedec0cSmrg		vendor=fujitsu
9159d0b5e55Smrg		;;
9169dedec0cSmrg	w65)
9179dedec0cSmrg		cpu=w65
9189dedec0cSmrg		vendor=wdc
9196c321187Smrg		;;
9209dedec0cSmrg	w89k-*)
9219dedec0cSmrg		cpu=hppa1.1
9229dedec0cSmrg		vendor=winbond
9239dedec0cSmrg		basic_os=proelf
9246c321187Smrg		;;
9259dedec0cSmrg	none)
9269dedec0cSmrg		cpu=none
9279dedec0cSmrg		vendor=none
9286c321187Smrg		;;
9299dedec0cSmrg	leon|leon[3-9])
9309dedec0cSmrg		cpu=sparc
9319dedec0cSmrg		vendor=$basic_machine
9326c321187Smrg		;;
9339dedec0cSmrg	leon-*|leon[3-9]-*)
9349dedec0cSmrg		cpu=sparc
9359dedec0cSmrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
9366c321187Smrg		;;
9379dedec0cSmrg
9389dedec0cSmrg	*-*)
9399dedec0cSmrg		# shellcheck disable=SC2162
9409dedec0cSmrg		saved_IFS=$IFS
9419dedec0cSmrg		IFS="-" read cpu vendor <<EOF
9429dedec0cSmrg$basic_machine
9439dedec0cSmrgEOF
9449dedec0cSmrg		IFS=$saved_IFS
9456c321187Smrg		;;
9469dedec0cSmrg	# We use `pc' rather than `unknown'
9479dedec0cSmrg	# because (1) that's what they normally are, and
9489dedec0cSmrg	# (2) the word "unknown" tends to confuse beginning users.
9499dedec0cSmrg	i*86 | x86_64)
9509dedec0cSmrg		cpu=$basic_machine
9519dedec0cSmrg		vendor=pc
9526c321187Smrg		;;
9539dedec0cSmrg	# These rules are duplicated from below for sake of the special case above;
9549dedec0cSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
9559dedec0cSmrg	pc98)
9569dedec0cSmrg		cpu=i386
9579dedec0cSmrg		vendor=pc
9586c321187Smrg		;;
9599dedec0cSmrg	x64 | amd64)
9609dedec0cSmrg		cpu=x86_64
9619dedec0cSmrg		vendor=pc
9626c321187Smrg		;;
9639dedec0cSmrg	# Recognize the basic CPU types without company name.
9649dedec0cSmrg	*)
9659dedec0cSmrg		cpu=$basic_machine
9669dedec0cSmrg		vendor=unknown
96793493779Smrg		;;
9689dedec0cSmrgesac
9699dedec0cSmrg
9709dedec0cSmrgunset -v basic_machine
9719dedec0cSmrg
9729dedec0cSmrg# Decode basic machines in the full and proper CPU-Company form.
9739dedec0cSmrgcase $cpu-$vendor in
9749dedec0cSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
9759dedec0cSmrg	# some cases the only manufacturer, in others, it is the most popular.
9769dedec0cSmrg	craynv-unknown)
9779dedec0cSmrg		vendor=cray
9789dedec0cSmrg		basic_os=${basic_os:-unicosmp}
9796c321187Smrg		;;
9809dedec0cSmrg	c90-unknown | c90-cray)
9819dedec0cSmrg		vendor=cray
9829dedec0cSmrg		basic_os=${Basic_os:-unicos}
9836c321187Smrg		;;
9849dedec0cSmrg	fx80-unknown)
9859dedec0cSmrg		vendor=alliant
98693493779Smrg		;;
9879dedec0cSmrg	romp-unknown)
9889dedec0cSmrg		vendor=ibm
9896c321187Smrg		;;
9909dedec0cSmrg	mmix-unknown)
9919dedec0cSmrg		vendor=knuth
9926c321187Smrg		;;
9939dedec0cSmrg	microblaze-unknown | microblazeel-unknown)
9949dedec0cSmrg		vendor=xilinx
9956c321187Smrg		;;
9969dedec0cSmrg	rs6000-unknown)
9979dedec0cSmrg		vendor=ibm
9986c321187Smrg		;;
9999dedec0cSmrg	vax-unknown)
10009dedec0cSmrg		vendor=dec
10016c321187Smrg		;;
10029dedec0cSmrg	pdp11-unknown)
10039dedec0cSmrg		vendor=dec
10049d0b5e55Smrg		;;
10059dedec0cSmrg	we32k-unknown)
10069dedec0cSmrg		vendor=att
10076c321187Smrg		;;
10089dedec0cSmrg	cydra-unknown)
10099dedec0cSmrg		vendor=cydrome
10106c321187Smrg		;;
10119dedec0cSmrg	i370-ibm*)
10129dedec0cSmrg		vendor=ibm
10136c321187Smrg		;;
10149dedec0cSmrg	orion-unknown)
10159dedec0cSmrg		vendor=highlevel
10166c321187Smrg		;;
10179dedec0cSmrg	xps-unknown | xps100-unknown)
10189dedec0cSmrg		cpu=xps100
10199dedec0cSmrg		vendor=honeywell
10206c321187Smrg		;;
10219dedec0cSmrg
10229dedec0cSmrg	# Here we normalize CPU types with a missing or matching vendor
10239dedec0cSmrg	dpx20-unknown | dpx20-bull)
10249dedec0cSmrg		cpu=rs6000
10259dedec0cSmrg		vendor=bull
10269dedec0cSmrg		basic_os=${basic_os:-bosx}
10276c321187Smrg		;;
10289dedec0cSmrg
10299dedec0cSmrg	# Here we normalize CPU types irrespective of the vendor
10309dedec0cSmrg	amd64-*)
10319dedec0cSmrg		cpu=x86_64
10326c321187Smrg		;;
10339dedec0cSmrg	blackfin-*)
10349dedec0cSmrg		cpu=bfin
10359dedec0cSmrg		basic_os=linux
10366c321187Smrg		;;
10379dedec0cSmrg	c54x-*)
10389dedec0cSmrg		cpu=tic54x
10396c321187Smrg		;;
10409dedec0cSmrg	c55x-*)
10419dedec0cSmrg		cpu=tic55x
10426c321187Smrg		;;
10439dedec0cSmrg	c6x-*)
10449dedec0cSmrg		cpu=tic6x
10456c321187Smrg		;;
10469dedec0cSmrg	e500v[12]-*)
10479dedec0cSmrg		cpu=powerpc
10489dedec0cSmrg		basic_os=${basic_os}"spe"
10496c321187Smrg		;;
10509dedec0cSmrg	mips3*-*)
10519dedec0cSmrg		cpu=mips64
10526c321187Smrg		;;
10539dedec0cSmrg	ms1-*)
10549dedec0cSmrg		cpu=mt
10556c321187Smrg		;;
10569dedec0cSmrg	m68knommu-*)
10579dedec0cSmrg		cpu=m68k
10589dedec0cSmrg		basic_os=linux
10596c321187Smrg		;;
10609dedec0cSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
10619dedec0cSmrg		cpu=s12z
106293493779Smrg		;;
10639dedec0cSmrg	openrisc-*)
10649dedec0cSmrg		cpu=or32
10656c321187Smrg		;;
10669dedec0cSmrg	parisc-*)
10679dedec0cSmrg		cpu=hppa
10689dedec0cSmrg		basic_os=linux
10696c321187Smrg		;;
10709dedec0cSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
10719dedec0cSmrg		cpu=i586
10726c321187Smrg		;;
10739dedec0cSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
10749dedec0cSmrg		cpu=i686
10756c321187Smrg		;;
10769dedec0cSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
10779dedec0cSmrg		cpu=i686
10786c321187Smrg		;;
10799dedec0cSmrg	pentium4-*)
10809dedec0cSmrg		cpu=i786
10816c321187Smrg		;;
10829dedec0cSmrg	pc98-*)
10839dedec0cSmrg		cpu=i386
10846c321187Smrg		;;
10859dedec0cSmrg	ppc-* | ppcbe-*)
10869dedec0cSmrg		cpu=powerpc
10876c321187Smrg		;;
10889dedec0cSmrg	ppcle-* | powerpclittle-*)
10899dedec0cSmrg		cpu=powerpcle
10906c321187Smrg		;;
10919dedec0cSmrg	ppc64-*)
10929dedec0cSmrg		cpu=powerpc64
10936c321187Smrg		;;
10949dedec0cSmrg	ppc64le-* | powerpc64little-*)
10959dedec0cSmrg		cpu=powerpc64le
10966c321187Smrg		;;
10979dedec0cSmrg	sb1-*)
10989dedec0cSmrg		cpu=mipsisa64sb1
10996c321187Smrg		;;
11009dedec0cSmrg	sb1el-*)
11019dedec0cSmrg		cpu=mipsisa64sb1el
11026c321187Smrg		;;
11039dedec0cSmrg	sh5e[lb]-*)
11049dedec0cSmrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
11056c321187Smrg		;;
11069dedec0cSmrg	spur-*)
11079dedec0cSmrg		cpu=spur
11086c321187Smrg		;;
11099dedec0cSmrg	strongarm-* | thumb-*)
11109dedec0cSmrg		cpu=arm
11116c321187Smrg		;;
11129dedec0cSmrg	tx39-*)
11139dedec0cSmrg		cpu=mipstx39
1114198e4c3cSmrg		;;
11159dedec0cSmrg	tx39el-*)
11169dedec0cSmrg		cpu=mipstx39el
11176c321187Smrg		;;
11189dedec0cSmrg	x64-*)
11199dedec0cSmrg		cpu=x86_64
11206c321187Smrg		;;
11219d0b5e55Smrg	xscale-* | xscalee[bl]-*)
11229dedec0cSmrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
11236c321187Smrg		;;
11249dedec0cSmrg	arm64-*)
11259dedec0cSmrg		cpu=aarch64
11266c321187Smrg		;;
11276c321187Smrg
11289dedec0cSmrg	# Recognize the canonical CPU Types that limit and/or modify the
11299dedec0cSmrg	# company names they are paired with.
11309dedec0cSmrg	cr16-*)
11319dedec0cSmrg		basic_os=${basic_os:-elf}
11326c321187Smrg		;;
11339dedec0cSmrg	crisv32-* | etraxfs*-*)
11349dedec0cSmrg		cpu=crisv32
11359dedec0cSmrg		vendor=axis
11366c321187Smrg		;;
11379dedec0cSmrg	cris-* | etrax*-*)
11389dedec0cSmrg		cpu=cris
11399dedec0cSmrg		vendor=axis
11406c321187Smrg		;;
11419dedec0cSmrg	crx-*)
11429dedec0cSmrg		basic_os=${basic_os:-elf}
11436c321187Smrg		;;
11449dedec0cSmrg	neo-tandem)
11459dedec0cSmrg		cpu=neo
11469dedec0cSmrg		vendor=tandem
11476c321187Smrg		;;
11489dedec0cSmrg	nse-tandem)
11499dedec0cSmrg		cpu=nse
11509dedec0cSmrg		vendor=tandem
11516c321187Smrg		;;
11529dedec0cSmrg	nsr-tandem)
11539dedec0cSmrg		cpu=nsr
11549dedec0cSmrg		vendor=tandem
11556c321187Smrg		;;
11569dedec0cSmrg	nsv-tandem)
11579dedec0cSmrg		cpu=nsv
11589dedec0cSmrg		vendor=tandem
11596c321187Smrg		;;
11609dedec0cSmrg	nsx-tandem)
11619dedec0cSmrg		cpu=nsx
11629dedec0cSmrg		vendor=tandem
11636c321187Smrg		;;
11649dedec0cSmrg	mipsallegrexel-sony)
11659dedec0cSmrg		cpu=mipsallegrexel
11669dedec0cSmrg		vendor=sony
11676c321187Smrg		;;
11689dedec0cSmrg	tile*-*)
11699dedec0cSmrg		basic_os=${basic_os:-linux-gnu}
11706c321187Smrg		;;
11719dedec0cSmrg
11726c321187Smrg	*)
11739dedec0cSmrg		# Recognize the canonical CPU types that are allowed with any
11749dedec0cSmrg		# company name.
11759dedec0cSmrg		case $cpu in
11769dedec0cSmrg			1750a | 580 \
11779dedec0cSmrg			| a29k \
11789dedec0cSmrg			| aarch64 | aarch64_be \
11799dedec0cSmrg			| abacus \
11809dedec0cSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
11819dedec0cSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
11829dedec0cSmrg			| alphapca5[67] | alpha64pca5[67] \
11839dedec0cSmrg			| am33_2.0 \
11849dedec0cSmrg			| amdgcn \
11859dedec0cSmrg			| arc | arceb | arc32 | arc64 \
11869dedec0cSmrg			| arm | arm[lb]e | arme[lb] | armv* \
11879dedec0cSmrg			| avr | avr32 \
11889dedec0cSmrg			| asmjs \
11899dedec0cSmrg			| ba \
11909dedec0cSmrg			| be32 | be64 \
11919dedec0cSmrg			| bfin | bpf | bs2000 \
11929dedec0cSmrg			| c[123]* | c30 | [cjt]90 | c4x \
11939dedec0cSmrg			| c8051 | clipper | craynv | csky | cydra \
11949dedec0cSmrg			| d10v | d30v | dlx | dsp16xx \
11959dedec0cSmrg			| e2k | elxsi | epiphany \
11969dedec0cSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
11979dedec0cSmrg			| h8300 | h8500 \
11989dedec0cSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
11999dedec0cSmrg			| hexagon \
12009dedec0cSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
12019dedec0cSmrg			| ip2k | iq2000 \
12029dedec0cSmrg			| k1om \
12039dedec0cSmrg			| le32 | le64 \
12049dedec0cSmrg			| lm32 \
12059dedec0cSmrg			| loongarch32 | loongarch64 | loongarchx32 \
12069dedec0cSmrg			| m32c | m32r | m32rle \
12079dedec0cSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
12089dedec0cSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
12099dedec0cSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
12109dedec0cSmrg			| microblaze | microblazeel \
12119dedec0cSmrg			| mips | mipsbe | mipseb | mipsel | mipsle \
12129dedec0cSmrg			| mips16 \
12139dedec0cSmrg			| mips64 | mips64eb | mips64el \
12149dedec0cSmrg			| mips64octeon | mips64octeonel \
12159dedec0cSmrg			| mips64orion | mips64orionel \
12169dedec0cSmrg			| mips64r5900 | mips64r5900el \
12179dedec0cSmrg			| mips64vr | mips64vrel \
12189dedec0cSmrg			| mips64vr4100 | mips64vr4100el \
12199dedec0cSmrg			| mips64vr4300 | mips64vr4300el \
12209dedec0cSmrg			| mips64vr5000 | mips64vr5000el \
12219dedec0cSmrg			| mips64vr5900 | mips64vr5900el \
12229dedec0cSmrg			| mipsisa32 | mipsisa32el \
12239dedec0cSmrg			| mipsisa32r2 | mipsisa32r2el \
12249dedec0cSmrg			| mipsisa32r3 | mipsisa32r3el \
12259dedec0cSmrg			| mipsisa32r5 | mipsisa32r5el \
12269dedec0cSmrg			| mipsisa32r6 | mipsisa32r6el \
12279dedec0cSmrg			| mipsisa64 | mipsisa64el \
12289dedec0cSmrg			| mipsisa64r2 | mipsisa64r2el \
12299dedec0cSmrg			| mipsisa64r3 | mipsisa64r3el \
12309dedec0cSmrg			| mipsisa64r5 | mipsisa64r5el \
12319dedec0cSmrg			| mipsisa64r6 | mipsisa64r6el \
12329dedec0cSmrg			| mipsisa64sb1 | mipsisa64sb1el \
12339dedec0cSmrg			| mipsisa64sr71k | mipsisa64sr71kel \
12349dedec0cSmrg			| mipsr5900 | mipsr5900el \
12359dedec0cSmrg			| mipstx39 | mipstx39el \
12369dedec0cSmrg			| mmix \
12379dedec0cSmrg			| mn10200 | mn10300 \
12389dedec0cSmrg			| moxie \
12399dedec0cSmrg			| mt \
12409dedec0cSmrg			| msp430 \
12419dedec0cSmrg			| nds32 | nds32le | nds32be \
12429dedec0cSmrg			| nfp \
12439dedec0cSmrg			| nios | nios2 | nios2eb | nios2el \
12449dedec0cSmrg			| none | np1 | ns16k | ns32k | nvptx \
12459dedec0cSmrg			| open8 \
12469dedec0cSmrg			| or1k* \
12479dedec0cSmrg			| or32 \
12489dedec0cSmrg			| orion \
12499dedec0cSmrg			| picochip \
12509dedec0cSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
12519dedec0cSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
12529dedec0cSmrg			| pru \
12539dedec0cSmrg			| pyramid \
12549dedec0cSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
12559dedec0cSmrg			| rl78 | romp | rs6000 | rx \
12569dedec0cSmrg			| s390 | s390x \
12579dedec0cSmrg			| score \
12589dedec0cSmrg			| sh | shl \
12599dedec0cSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
12609dedec0cSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
12619dedec0cSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
12629dedec0cSmrg			| sparclite \
12639dedec0cSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
12649dedec0cSmrg			| spu \
12659dedec0cSmrg			| tahoe \
12669dedec0cSmrg			| thumbv7* \
12679dedec0cSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
12689dedec0cSmrg			| tron \
12699dedec0cSmrg			| ubicom32 \
12709dedec0cSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
12719dedec0cSmrg			| vax \
12729dedec0cSmrg			| visium \
12739dedec0cSmrg			| w65 \
12749dedec0cSmrg			| wasm32 | wasm64 \
12759dedec0cSmrg			| we32k \
12769dedec0cSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
12779dedec0cSmrg			| xstormy16 | xtensa* \
12789dedec0cSmrg			| ymp \
12799dedec0cSmrg			| z8k | z80)
12809dedec0cSmrg				;;
12819dedec0cSmrg
12829dedec0cSmrg			*)
12839dedec0cSmrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
12849dedec0cSmrg				exit 1
12859dedec0cSmrg				;;
12869dedec0cSmrg		esac
12876c321187Smrg		;;
12886c321187Smrgesac
12896c321187Smrg
12906c321187Smrg# Here we canonicalize certain aliases for manufacturers.
12919dedec0cSmrgcase $vendor in
12929dedec0cSmrg	digital*)
12939dedec0cSmrg		vendor=dec
12946c321187Smrg		;;
12959dedec0cSmrg	commodore*)
12969dedec0cSmrg		vendor=cbm
12976c321187Smrg		;;
12986c321187Smrg	*)
12996c321187Smrg		;;
13006c321187Smrgesac
13016c321187Smrg
13026c321187Smrg# Decode manufacturer-specific aliases for certain operating systems.
13036c321187Smrg
13049dedec0cSmrgif test x$basic_os != x
13056c321187Smrgthen
13069dedec0cSmrg
13079dedec0cSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
13089dedec0cSmrg# set os.
13099dedec0cSmrgcase $basic_os in
13109dedec0cSmrg	gnu/linux*)
13119dedec0cSmrg		kernel=linux
13129dedec0cSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
13139dedec0cSmrg		;;
13149dedec0cSmrg	os2-emx)
13159dedec0cSmrg		kernel=os2
13169dedec0cSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
13179dedec0cSmrg		;;
13189dedec0cSmrg	nto-qnx*)
13199dedec0cSmrg		kernel=nto
13209dedec0cSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
13219dedec0cSmrg		;;
13229dedec0cSmrg	*-*)
13239dedec0cSmrg		# shellcheck disable=SC2162
13249dedec0cSmrg		saved_IFS=$IFS
13259dedec0cSmrg		IFS="-" read kernel os <<EOF
13269dedec0cSmrg$basic_os
13279dedec0cSmrgEOF
13289dedec0cSmrg		IFS=$saved_IFS
13299dedec0cSmrg		;;
13309dedec0cSmrg	# Default OS when just kernel was specified
13319dedec0cSmrg	nto*)
13329dedec0cSmrg		kernel=nto
13339dedec0cSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
13349dedec0cSmrg		;;
13359dedec0cSmrg	linux*)
13369dedec0cSmrg		kernel=linux
13379dedec0cSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
13389dedec0cSmrg		;;
13399dedec0cSmrg	*)
13409dedec0cSmrg		kernel=
13419dedec0cSmrg		os=$basic_os
13429dedec0cSmrg		;;
13439dedec0cSmrgesac
13449dedec0cSmrg
13459dedec0cSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
13469dedec0cSmrg# etc.)
13476c321187Smrgcase $os in
1348198e4c3cSmrg	# First match some system type aliases that might get confused
1349198e4c3cSmrg	# with valid system types.
13509dedec0cSmrg	# solaris* is a basic system type, with this one exception.
13519dedec0cSmrg	auroraux)
13529dedec0cSmrg		os=auroraux
1353e120bd27Smrg		;;
13549dedec0cSmrg	bluegene*)
13559dedec0cSmrg		os=cnk
13566c321187Smrg		;;
13579dedec0cSmrg	solaris1 | solaris1.*)
13589dedec0cSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
13596c321187Smrg		;;
13609dedec0cSmrg	solaris)
13619dedec0cSmrg		os=solaris2
13626c321187Smrg		;;
13639dedec0cSmrg	unixware*)
13649dedec0cSmrg		os=sysv4.2uw
13656c321187Smrg		;;
1366198e4c3cSmrg	# es1800 is here to avoid being matched by es* (a different OS)
13679dedec0cSmrg	es1800*)
13689dedec0cSmrg		os=ose
1369198e4c3cSmrg		;;
13709dedec0cSmrg	# Some version numbers need modification
13719dedec0cSmrg	chorusos*)
13729dedec0cSmrg		os=chorusos
13736c321187Smrg		;;
13749dedec0cSmrg	isc)
13759dedec0cSmrg		os=isc2.2
13766c321187Smrg		;;
13779dedec0cSmrg	sco6)
13789dedec0cSmrg		os=sco5v6
13796c321187Smrg		;;
13809dedec0cSmrg	sco5)
13819dedec0cSmrg		os=sco3.2v5
13826c321187Smrg		;;
13839dedec0cSmrg	sco4)
13849dedec0cSmrg		os=sco3.2v4
13856c321187Smrg		;;
13869dedec0cSmrg	sco3.2.[4-9]*)
13879dedec0cSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
13886c321187Smrg		;;
13899dedec0cSmrg	sco*v* | scout)
13909dedec0cSmrg		# Don't match below
13916c321187Smrg		;;
13929dedec0cSmrg	sco*)
13939dedec0cSmrg		os=sco3.2v2
13946c321187Smrg		;;
13959dedec0cSmrg	psos*)
13969dedec0cSmrg		os=psos
13976c321187Smrg		;;
13989dedec0cSmrg	qnx*)
13999dedec0cSmrg		os=qnx
14006c321187Smrg		;;
14019dedec0cSmrg	hiux*)
14029dedec0cSmrg		os=hiuxwe2
14036c321187Smrg		;;
14049dedec0cSmrg	lynx*178)
14059dedec0cSmrg		os=lynxos178
14066c321187Smrg		;;
14079dedec0cSmrg	lynx*5)
14089dedec0cSmrg		os=lynxos5
14096c321187Smrg		;;
14109dedec0cSmrg	lynxos*)
14119dedec0cSmrg		# don't get caught up in next wildcard
14126c321187Smrg		;;
14139dedec0cSmrg	lynx*)
14149dedec0cSmrg		os=lynxos
14156c321187Smrg		;;
14169dedec0cSmrg	mac[0-9]*)
14179dedec0cSmrg		os=`echo "$os" | sed -e 's|mac|macos|'`
14186c321187Smrg		;;
14199dedec0cSmrg	opened*)
14209dedec0cSmrg		os=openedition
14216c321187Smrg		;;
14229dedec0cSmrg	os400*)
14239dedec0cSmrg		os=os400
14246c321187Smrg		;;
14259dedec0cSmrg	sunos5*)
14269dedec0cSmrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
14276c321187Smrg		;;
14289dedec0cSmrg	sunos6*)
14299dedec0cSmrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
14306c321187Smrg		;;
14319dedec0cSmrg	wince*)
14329dedec0cSmrg		os=wince
14336c321187Smrg		;;
14349dedec0cSmrg	utek*)
14359dedec0cSmrg		os=bsd
14366c321187Smrg		;;
14379dedec0cSmrg	dynix*)
14389dedec0cSmrg		os=bsd
14396c321187Smrg		;;
14409dedec0cSmrg	acis*)
14419dedec0cSmrg		os=aos
14426c321187Smrg		;;
14439dedec0cSmrg	atheos*)
14449dedec0cSmrg		os=atheos
14456c321187Smrg		;;
14469dedec0cSmrg	syllable*)
14479dedec0cSmrg		os=syllable
14489dedec0cSmrg		;;
14499dedec0cSmrg	386bsd)
14509dedec0cSmrg		os=bsd
14519dedec0cSmrg		;;
14529dedec0cSmrg	ctix* | uts*)
14539dedec0cSmrg		os=sysv
14549dedec0cSmrg		;;
14559dedec0cSmrg	nova*)
14569dedec0cSmrg		os=rtmk-nova
14579dedec0cSmrg		;;
14589dedec0cSmrg	ns2)
14599dedec0cSmrg		os=nextstep2
14609dedec0cSmrg		;;
14619dedec0cSmrg	# Preserve the version number of sinix5.
14629dedec0cSmrg	sinix5.*)
14639dedec0cSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
14646c321187Smrg		;;
14659dedec0cSmrg	sinix*)
14669dedec0cSmrg		os=sysv4
14676c321187Smrg		;;
14689dedec0cSmrg	tpf*)
14699dedec0cSmrg		os=tpf
14706c321187Smrg		;;
14719dedec0cSmrg	triton*)
14729dedec0cSmrg		os=sysv3
14736c321187Smrg		;;
14749dedec0cSmrg	oss*)
14759dedec0cSmrg		os=sysv3
14766c321187Smrg		;;
14779dedec0cSmrg	svr4*)
14789dedec0cSmrg		os=sysv4
14796c321187Smrg		;;
14809dedec0cSmrg	svr3)
14819dedec0cSmrg		os=sysv3
14826c321187Smrg		;;
14839dedec0cSmrg	sysvr4)
14849dedec0cSmrg		os=sysv4
14856c321187Smrg		;;
14869dedec0cSmrg	ose*)
14879dedec0cSmrg		os=ose
14886c321187Smrg		;;
14899dedec0cSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
14909dedec0cSmrg		os=mint
1491e120bd27Smrg		;;
14929dedec0cSmrg	dicos*)
14939dedec0cSmrg		os=dicos
14949dedec0cSmrg		;;
14959dedec0cSmrg	pikeos*)
1496198e4c3cSmrg		# Until real need of OS specific support for
1497198e4c3cSmrg		# particular features comes up, bare metal
1498198e4c3cSmrg		# configurations are quite functional.
14999dedec0cSmrg		case $cpu in
1500198e4c3cSmrg		    arm*)
15019dedec0cSmrg			os=eabi
1502198e4c3cSmrg			;;
1503198e4c3cSmrg		    *)
15049dedec0cSmrg			os=elf
1505198e4c3cSmrg			;;
1506198e4c3cSmrg		esac
1507198e4c3cSmrg		;;
15086c321187Smrg	*)
15099dedec0cSmrg		# No normalization, but not necessarily accepted, that comes below.
15106c321187Smrg		;;
15116c321187Smrgesac
15129dedec0cSmrg
15136c321187Smrgelse
15146c321187Smrg
15156c321187Smrg# Here we handle the default operating systems that come with various machines.
15166c321187Smrg# The value should be what the vendor currently ships out the door with their
15176c321187Smrg# machine or put another way, the most popular os provided with the machine.
15186c321187Smrg
15196c321187Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
15206c321187Smrg# "-sun"), then you have to tell the case statement up towards the top
15216c321187Smrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
15226c321187Smrg# will signal an error saying that MANUFACTURER isn't an operating
15236c321187Smrg# system, and we'll never get to this point.
15246c321187Smrg
15259dedec0cSmrgkernel=
15269dedec0cSmrgcase $cpu-$vendor in
15279d0b5e55Smrg	score-*)
15289dedec0cSmrg		os=elf
152993493779Smrg		;;
15309d0b5e55Smrg	spu-*)
15319dedec0cSmrg		os=elf
153293493779Smrg		;;
15336c321187Smrg	*-acorn)
15349dedec0cSmrg		os=riscix1.2
15356c321187Smrg		;;
15366c321187Smrg	arm*-rebel)
15379dedec0cSmrg		kernel=linux
15389dedec0cSmrg		os=gnu
15396c321187Smrg		;;
15406c321187Smrg	arm*-semi)
15419dedec0cSmrg		os=aout
15426c321187Smrg		;;
15439d0b5e55Smrg	c4x-* | tic4x-*)
15449dedec0cSmrg		os=coff
15459d0b5e55Smrg		;;
1546198e4c3cSmrg	c8051-*)
15479dedec0cSmrg		os=elf
15489dedec0cSmrg		;;
15499dedec0cSmrg	clipper-intergraph)
15509dedec0cSmrg		os=clix
1551198e4c3cSmrg		;;
15529d0b5e55Smrg	hexagon-*)
15539dedec0cSmrg		os=elf
155493493779Smrg		;;
1555e120bd27Smrg	tic54x-*)
15569dedec0cSmrg		os=coff
1557e120bd27Smrg		;;
1558e120bd27Smrg	tic55x-*)
15599dedec0cSmrg		os=coff
1560e120bd27Smrg		;;
1561e120bd27Smrg	tic6x-*)
15629dedec0cSmrg		os=coff
1563e120bd27Smrg		;;
15646c321187Smrg	# This must come before the *-dec entry.
15656c321187Smrg	pdp10-*)
15669dedec0cSmrg		os=tops20
15676c321187Smrg		;;
15686c321187Smrg	pdp11-*)
15699dedec0cSmrg		os=none
15706c321187Smrg		;;
15716c321187Smrg	*-dec | vax-*)
15729dedec0cSmrg		os=ultrix4.2
15736c321187Smrg		;;
15746c321187Smrg	m68*-apollo)
15759dedec0cSmrg		os=domain
15766c321187Smrg		;;
15776c321187Smrg	i386-sun)
15789dedec0cSmrg		os=sunos4.0.2
15796c321187Smrg		;;
15806c321187Smrg	m68000-sun)
15819dedec0cSmrg		os=sunos3
15826c321187Smrg		;;
15836c321187Smrg	m68*-cisco)
15849dedec0cSmrg		os=aout
15856c321187Smrg		;;
15869d0b5e55Smrg	mep-*)
15879dedec0cSmrg		os=elf
158893493779Smrg		;;
15896c321187Smrg	mips*-cisco)
15909dedec0cSmrg		os=elf
15916c321187Smrg		;;
15926c321187Smrg	mips*-*)
15939dedec0cSmrg		os=elf
15946c321187Smrg		;;
15956c321187Smrg	or32-*)
15969dedec0cSmrg		os=coff
15976c321187Smrg		;;
15986c321187Smrg	*-tti)	# must be before sparc entry or we get the wrong os.
15999dedec0cSmrg		os=sysv3
16006c321187Smrg		;;
16016c321187Smrg	sparc-* | *-sun)
16029dedec0cSmrg		os=sunos4.1.1
16036c321187Smrg		;;
1604198e4c3cSmrg	pru-*)
16059dedec0cSmrg		os=elf
1606198e4c3cSmrg		;;
16076c321187Smrg	*-be)
16089dedec0cSmrg		os=beos
16096c321187Smrg		;;
16106c321187Smrg	*-ibm)
16119dedec0cSmrg		os=aix
16126c321187Smrg		;;
16139d0b5e55Smrg	*-knuth)
16149dedec0cSmrg		os=mmixware
16156c321187Smrg		;;
16166c321187Smrg	*-wec)
16179dedec0cSmrg		os=proelf
16186c321187Smrg		;;
16196c321187Smrg	*-winbond)
16209dedec0cSmrg		os=proelf
16216c321187Smrg		;;
16226c321187Smrg	*-oki)
16239dedec0cSmrg		os=proelf
16246c321187Smrg		;;
16256c321187Smrg	*-hp)
16269dedec0cSmrg		os=hpux
16276c321187Smrg		;;
16286c321187Smrg	*-hitachi)
16299dedec0cSmrg		os=hiux
16306c321187Smrg		;;
16316c321187Smrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
16329dedec0cSmrg		os=sysv
16336c321187Smrg		;;
16346c321187Smrg	*-cbm)
16359dedec0cSmrg		os=amigaos
16366c321187Smrg		;;
16376c321187Smrg	*-dg)
16389dedec0cSmrg		os=dgux
16396c321187Smrg		;;
16406c321187Smrg	*-dolphin)
16419dedec0cSmrg		os=sysv3
16426c321187Smrg		;;
16436c321187Smrg	m68k-ccur)
16449dedec0cSmrg		os=rtu
16456c321187Smrg		;;
16466c321187Smrg	m88k-omron*)
16479dedec0cSmrg		os=luna
16486c321187Smrg		;;
1649198e4c3cSmrg	*-next)
16509dedec0cSmrg		os=nextstep
16516c321187Smrg		;;
16526c321187Smrg	*-sequent)
16539dedec0cSmrg		os=ptx
16546c321187Smrg		;;
16556c321187Smrg	*-crds)
16569dedec0cSmrg		os=unos
16576c321187Smrg		;;
16586c321187Smrg	*-ns)
16599dedec0cSmrg		os=genix
16606c321187Smrg		;;
16616c321187Smrg	i370-*)
16629dedec0cSmrg		os=mvs
16636c321187Smrg		;;
16646c321187Smrg	*-gould)
16659dedec0cSmrg		os=sysv
16666c321187Smrg		;;
16676c321187Smrg	*-highlevel)
16689dedec0cSmrg		os=bsd
16696c321187Smrg		;;
16706c321187Smrg	*-encore)
16719dedec0cSmrg		os=bsd
16726c321187Smrg		;;
16736c321187Smrg	*-sgi)
16749dedec0cSmrg		os=irix
16756c321187Smrg		;;
16766c321187Smrg	*-siemens)
16779dedec0cSmrg		os=sysv4
16786c321187Smrg		;;
16796c321187Smrg	*-masscomp)
16809dedec0cSmrg		os=rtu
16816c321187Smrg		;;
16826c321187Smrg	f30[01]-fujitsu | f700-fujitsu)
16839dedec0cSmrg		os=uxpv
16846c321187Smrg		;;
16856c321187Smrg	*-rom68k)
16869dedec0cSmrg		os=coff
16876c321187Smrg		;;
16886c321187Smrg	*-*bug)
16899dedec0cSmrg		os=coff
16906c321187Smrg		;;
16916c321187Smrg	*-apple)
16929dedec0cSmrg		os=macos
16936c321187Smrg		;;
16946c321187Smrg	*-atari*)
16959dedec0cSmrg		os=mint
16969dedec0cSmrg		;;
16979dedec0cSmrg	*-wrs)
16989dedec0cSmrg		os=vxworks
16996c321187Smrg		;;
17006c321187Smrg	*)
17019dedec0cSmrg		os=none
17026c321187Smrg		;;
17036c321187Smrgesac
17049dedec0cSmrg
17056c321187Smrgfi
17066c321187Smrg
17079dedec0cSmrg# Now, validate our (potentially fixed-up) OS.
17089dedec0cSmrgcase $os in
17099dedec0cSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
17109dedec0cSmrg	musl* | newlib* | relibc* | uclibc*)
17119dedec0cSmrg		;;
17129dedec0cSmrg	# Likewise for "kernel-abi"
17139dedec0cSmrg	eabi* | gnueabi*)
17149dedec0cSmrg		;;
17159dedec0cSmrg	# VxWorks passes extra cpu info in the 4th filed.
17169dedec0cSmrg	simlinux | simwindows | spe)
17179dedec0cSmrg		;;
17189dedec0cSmrg	# Now accept the basic system types.
17199dedec0cSmrg	# The portable systems comes first.
17209dedec0cSmrg	# Each alternative MUST end in a * to match a version number.
17219dedec0cSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
17229dedec0cSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
17239dedec0cSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
17249dedec0cSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
17259dedec0cSmrg	     | hiux* | abug | nacl* | netware* | windows* \
17269dedec0cSmrg	     | os9* | macos* | osx* | ios* \
17279dedec0cSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
17289dedec0cSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
17299dedec0cSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
17309dedec0cSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
17319dedec0cSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
17329dedec0cSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
17339dedec0cSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
17349dedec0cSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
17359dedec0cSmrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
17369dedec0cSmrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
17379dedec0cSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
17389dedec0cSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
17399dedec0cSmrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
17409dedec0cSmrg	     | midipix* | mingw32* | mingw64* | mint* \
17419dedec0cSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
17429dedec0cSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
17439dedec0cSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
17449dedec0cSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
17459dedec0cSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
17469dedec0cSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
17479dedec0cSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
17489dedec0cSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
17499dedec0cSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
17509dedec0cSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
17519dedec0cSmrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*)
17529dedec0cSmrg		;;
17539dedec0cSmrg	# This one is extra strict with allowed versions
17549dedec0cSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
17559dedec0cSmrg		# Don't forget version if it is 3.2v4 or newer.
17569dedec0cSmrg		;;
17579dedec0cSmrg	none)
17589dedec0cSmrg		;;
17599dedec0cSmrg	*)
17609dedec0cSmrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
17619dedec0cSmrg		exit 1
17629dedec0cSmrg		;;
17639dedec0cSmrgesac
17649dedec0cSmrg
17659dedec0cSmrg# As a final step for OS-related things, validate the OS-kernel combination
17669dedec0cSmrg# (given a valid OS), if there is a kernel.
17679dedec0cSmrgcase $kernel-$os in
17689dedec0cSmrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
17699dedec0cSmrg		   | linux-musl* | linux-relibc* | linux-uclibc* )
17709dedec0cSmrg		;;
17719dedec0cSmrg	uclinux-uclibc* )
17729dedec0cSmrg		;;
17739dedec0cSmrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
17749dedec0cSmrg		# These are just libc implementations, not actual OSes, and thus
17759dedec0cSmrg		# require a kernel.
17769dedec0cSmrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
17779dedec0cSmrg		exit 1
17789dedec0cSmrg		;;
17799dedec0cSmrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
17809dedec0cSmrg		;;
17819dedec0cSmrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
17829dedec0cSmrg		;;
17839dedec0cSmrg	nto-qnx*)
17849dedec0cSmrg		;;
17859dedec0cSmrg	os2-emx)
17869dedec0cSmrg		;;
17879dedec0cSmrg	*-eabi* | *-gnueabi*)
17889dedec0cSmrg		;;
17899dedec0cSmrg	-*)
17909dedec0cSmrg		# Blank kernel with real OS is always fine.
17919dedec0cSmrg		;;
17929dedec0cSmrg	*-*)
17939dedec0cSmrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
17949dedec0cSmrg		exit 1
17959dedec0cSmrg		;;
17969dedec0cSmrgesac
17979dedec0cSmrg
17986c321187Smrg# Here we handle the case where we know the os, and the CPU type, but not the
17996c321187Smrg# manufacturer.  We pick the logical manufacturer.
18009dedec0cSmrgcase $vendor in
18019dedec0cSmrg	unknown)
18029dedec0cSmrg		case $cpu-$os in
18039dedec0cSmrg			*-riscix*)
18046c321187Smrg				vendor=acorn
18056c321187Smrg				;;
18069dedec0cSmrg			*-sunos*)
18076c321187Smrg				vendor=sun
18086c321187Smrg				;;
18099dedec0cSmrg			*-cnk* | *-aix*)
18106c321187Smrg				vendor=ibm
18116c321187Smrg				;;
18129dedec0cSmrg			*-beos*)
18136c321187Smrg				vendor=be
18146c321187Smrg				;;
18159dedec0cSmrg			*-hpux*)
18166c321187Smrg				vendor=hp
18176c321187Smrg				;;
18189dedec0cSmrg			*-mpeix*)
18196c321187Smrg				vendor=hp
18206c321187Smrg				;;
18219dedec0cSmrg			*-hiux*)
18226c321187Smrg				vendor=hitachi
18236c321187Smrg				;;
18249dedec0cSmrg			*-unos*)
18256c321187Smrg				vendor=crds
18266c321187Smrg				;;
18279dedec0cSmrg			*-dgux*)
18286c321187Smrg				vendor=dg
18296c321187Smrg				;;
18309dedec0cSmrg			*-luna*)
18316c321187Smrg				vendor=omron
18326c321187Smrg				;;
18339dedec0cSmrg			*-genix*)
18346c321187Smrg				vendor=ns
18356c321187Smrg				;;
18369dedec0cSmrg			*-clix*)
18379dedec0cSmrg				vendor=intergraph
18389dedec0cSmrg				;;
18399dedec0cSmrg			*-mvs* | *-opened*)
18409dedec0cSmrg				vendor=ibm
18419dedec0cSmrg				;;
18429dedec0cSmrg			*-os400*)
18436c321187Smrg				vendor=ibm
18446c321187Smrg				;;
18459dedec0cSmrg			s390-* | s390x-*)
18466c321187Smrg				vendor=ibm
18476c321187Smrg				;;
18489dedec0cSmrg			*-ptx*)
18496c321187Smrg				vendor=sequent
18506c321187Smrg				;;
18519dedec0cSmrg			*-tpf*)
18526c321187Smrg				vendor=ibm
18536c321187Smrg				;;
18549dedec0cSmrg			*-vxsim* | *-vxworks* | *-windiss*)
18556c321187Smrg				vendor=wrs
18566c321187Smrg				;;
18579dedec0cSmrg			*-aux*)
18586c321187Smrg				vendor=apple
18596c321187Smrg				;;
18609dedec0cSmrg			*-hms*)
18616c321187Smrg				vendor=hitachi
18626c321187Smrg				;;
18639dedec0cSmrg			*-mpw* | *-macos*)
18646c321187Smrg				vendor=apple
18656c321187Smrg				;;
18669dedec0cSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
18676c321187Smrg				vendor=atari
18686c321187Smrg				;;
18699dedec0cSmrg			*-vos*)
18706c321187Smrg				vendor=stratus
18716c321187Smrg				;;
18726c321187Smrg		esac
18736c321187Smrg		;;
18746c321187Smrgesac
18756c321187Smrg
18769dedec0cSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
18776c321187Smrgexit
18786c321187Smrg
18796c321187Smrg# Local variables:
18809dedec0cSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
18816c321187Smrg# time-stamp-start: "timestamp='"
18826c321187Smrg# time-stamp-format: "%:y-%02m-%02d"
18836c321187Smrg# time-stamp-end: "'"
18846c321187Smrg# End:
1885