1e4da13eeSmacallan#! /bin/sh
2e4da13eeSmacallan# Configuration validation subroutine script.
325ad54caSmrg#   Copyright 1992-2021 Free Software Foundation, Inc.
4e4da13eeSmacallan
525ad54caSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
6e4da13eeSmacallan
725ad54caSmrgtimestamp='2021-08-14'
825ad54caSmrg
925ad54caSmrg# This file is free software; you can redistribute it and/or modify it
1025ad54caSmrg# under the terms of the GNU General Public License as published by
1125ad54caSmrg# the Free Software Foundation; either version 3 of the License, or
12e4da13eeSmacallan# (at your option) any later version.
13e4da13eeSmacallan#
1425ad54caSmrg# This program is distributed in the hope that it will be useful, but
1525ad54caSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of
1625ad54caSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1725ad54caSmrg# General Public License for more details.
18e4da13eeSmacallan#
19e4da13eeSmacallan# You should have received a copy of the GNU General Public License
2025ad54caSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
21e4da13eeSmacallan#
22e4da13eeSmacallan# As a special exception to the GNU General Public License, if you
23e4da13eeSmacallan# distribute this file as part of a program that contains a
24e4da13eeSmacallan# configuration script generated by Autoconf, you may include it under
2525ad54caSmrg# the same distribution terms that you use for the rest of that
2625ad54caSmrg# program.  This Exception is an additional permission under section 7
2725ad54caSmrg# of the GNU General Public License, version 3 ("GPLv3").
28e4da13eeSmacallan
29e4da13eeSmacallan
3025ad54caSmrg# Please send patches to <config-patches@gnu.org>.
31e4da13eeSmacallan#
32e4da13eeSmacallan# Configuration subroutine to validate and canonicalize a configuration type.
33e4da13eeSmacallan# Supply the specified configuration type as an argument.
34e4da13eeSmacallan# If it is invalid, we print an error message on stderr and exit with code 1.
35e4da13eeSmacallan# Otherwise, we print the canonical config type on stdout and succeed.
36e4da13eeSmacallan
3765d490d0Smrg# You can get the latest version of this script from:
3825ad54caSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
3965d490d0Smrg
40e4da13eeSmacallan# This file is supposed to be the same for all GNU packages
41e4da13eeSmacallan# and recognize all the CPU types, system types and aliases
42e4da13eeSmacallan# that are meaningful with *any* GNU software.
43e4da13eeSmacallan# Each package is responsible for reporting which valid configurations
44e4da13eeSmacallan# it does not support.  The user should be able to distinguish
45e4da13eeSmacallan# a failure to support a valid configuration from a meaningless
46e4da13eeSmacallan# configuration.
47e4da13eeSmacallan
48e4da13eeSmacallan# The goal of this file is to map all the various variations of a given
49e4da13eeSmacallan# machine specification into a single specification in the form:
50e4da13eeSmacallan#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
51e4da13eeSmacallan# or in some cases, the newer four-part form:
52e4da13eeSmacallan#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
53e4da13eeSmacallan# It is wrong to echo any other type of specification.
54e4da13eeSmacallan
5525ad54caSmrg# The "shellcheck disable" line above the timestamp inhibits complaints
5625ad54caSmrg# about features and limitations of the classic Bourne shell that were
5725ad54caSmrg# superseded or lifted in POSIX.  However, this script identifies a wide
5825ad54caSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
5925ad54caSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still
6025ad54caSmrg# have a pre-POSIX /bin/sh.
6125ad54caSmrg
62e4da13eeSmacallanme=`echo "$0" | sed -e 's,.*/,,'`
63e4da13eeSmacallan
64e4da13eeSmacallanusage="\
6525ad54caSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
66e4da13eeSmacallan
67e4da13eeSmacallanCanonicalize a configuration name.
68e4da13eeSmacallan
6925ad54caSmrgOptions:
70e4da13eeSmacallan  -h, --help         print this help, then exit
71e4da13eeSmacallan  -t, --time-stamp   print date of last modification, then exit
72e4da13eeSmacallan  -v, --version      print version number, then exit
73e4da13eeSmacallan
74e4da13eeSmacallanReport bugs and patches to <config-patches@gnu.org>."
75e4da13eeSmacallan
76e4da13eeSmacallanversion="\
77e4da13eeSmacallanGNU config.sub ($timestamp)
78e4da13eeSmacallan
7925ad54caSmrgCopyright 1992-2021 Free Software Foundation, Inc.
80e4da13eeSmacallan
81e4da13eeSmacallanThis is free software; see the source for copying conditions.  There is NO
82e4da13eeSmacallanwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
83e4da13eeSmacallan
84e4da13eeSmacallanhelp="
85e4da13eeSmacallanTry \`$me --help' for more information."
86e4da13eeSmacallan
87e4da13eeSmacallan# Parse command line
88e4da13eeSmacallanwhile test $# -gt 0 ; do
89e4da13eeSmacallan  case $1 in
90e4da13eeSmacallan    --time-stamp | --time* | -t )
91e4da13eeSmacallan       echo "$timestamp" ; exit ;;
92e4da13eeSmacallan    --version | -v )
93e4da13eeSmacallan       echo "$version" ; exit ;;
94e4da13eeSmacallan    --help | --h* | -h )
95e4da13eeSmacallan       echo "$usage"; exit ;;
96e4da13eeSmacallan    -- )     # Stop option processing
97e4da13eeSmacallan       shift; break ;;
98e4da13eeSmacallan    - )	# Use stdin as input.
99e4da13eeSmacallan       break ;;
100e4da13eeSmacallan    -* )
10125ad54caSmrg       echo "$me: invalid option $1$help" >&2
102e4da13eeSmacallan       exit 1 ;;
103e4da13eeSmacallan
104e4da13eeSmacallan    *local*)
105e4da13eeSmacallan       # First pass through any local machine types.
10625ad54caSmrg       echo "$1"
107e4da13eeSmacallan       exit ;;
108e4da13eeSmacallan
109e4da13eeSmacallan    * )
110e4da13eeSmacallan       break ;;
111e4da13eeSmacallan  esac
112e4da13eeSmacallandone
113e4da13eeSmacallan
114e4da13eeSmacallancase $# in
115e4da13eeSmacallan 0) echo "$me: missing argument$help" >&2
116e4da13eeSmacallan    exit 1;;
117e4da13eeSmacallan 1) ;;
118e4da13eeSmacallan *) echo "$me: too many arguments$help" >&2
119e4da13eeSmacallan    exit 1;;
120e4da13eeSmacallanesac
121e4da13eeSmacallan
12225ad54caSmrg# Split fields of configuration type
12325ad54caSmrg# shellcheck disable=SC2162
12425ad54caSmrgsaved_IFS=$IFS
12525ad54caSmrgIFS="-" read field1 field2 field3 field4 <<EOF
12625ad54caSmrg$1
12725ad54caSmrgEOF
12825ad54caSmrgIFS=$saved_IFS
129e4da13eeSmacallan
13025ad54caSmrg# Separate into logical components for further validation
13125ad54caSmrgcase $1 in
13225ad54caSmrg	*-*-*-*-*)
13325ad54caSmrg		echo Invalid configuration \`"$1"\': more than four components >&2
13425ad54caSmrg		exit 1
135e4da13eeSmacallan		;;
13625ad54caSmrg	*-*-*-*)
13725ad54caSmrg		basic_machine=$field1-$field2
13825ad54caSmrg		basic_os=$field3-$field4
139e4da13eeSmacallan		;;
14025ad54caSmrg	*-*-*)
14125ad54caSmrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
14225ad54caSmrg		# parts
14325ad54caSmrg		maybe_os=$field2-$field3
14425ad54caSmrg		case $maybe_os in
14525ad54caSmrg			nto-qnx* | linux-* | uclinux-uclibc* \
14625ad54caSmrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
14725ad54caSmrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
14825ad54caSmrg			| storm-chaos* | os2-emx* | rtmk-nova*)
14925ad54caSmrg				basic_machine=$field1
15025ad54caSmrg				basic_os=$maybe_os
15125ad54caSmrg				;;
15225ad54caSmrg			android-linux)
15325ad54caSmrg				basic_machine=$field1-unknown
15425ad54caSmrg				basic_os=linux-android
15525ad54caSmrg				;;
15625ad54caSmrg			*)
15725ad54caSmrg				basic_machine=$field1-$field2
15825ad54caSmrg				basic_os=$field3
15925ad54caSmrg				;;
16025ad54caSmrg		esac
161e4da13eeSmacallan		;;
16225ad54caSmrg	*-*)
16325ad54caSmrg		# A lone config we happen to match not fitting any pattern
16425ad54caSmrg		case $field1-$field2 in
16525ad54caSmrg			decstation-3100)
16625ad54caSmrg				basic_machine=mips-dec
16725ad54caSmrg				basic_os=
16825ad54caSmrg				;;
16925ad54caSmrg			*-*)
17025ad54caSmrg				# Second component is usually, but not always the OS
17125ad54caSmrg				case $field2 in
17225ad54caSmrg					# Prevent following clause from handling this valid os
17325ad54caSmrg					sun*os*)
17425ad54caSmrg						basic_machine=$field1
17525ad54caSmrg						basic_os=$field2
17625ad54caSmrg						;;
17725ad54caSmrg					zephyr*)
17825ad54caSmrg						basic_machine=$field1-unknown
17925ad54caSmrg						basic_os=$field2
18025ad54caSmrg						;;
18125ad54caSmrg					# Manufacturers
18225ad54caSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
18325ad54caSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
18425ad54caSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
18525ad54caSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
18625ad54caSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
18725ad54caSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
18825ad54caSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
18925ad54caSmrg					| microblaze* | sim | cisco \
19025ad54caSmrg					| oki | wec | wrs | winbond)
19125ad54caSmrg						basic_machine=$field1-$field2
19225ad54caSmrg						basic_os=
19325ad54caSmrg						;;
19425ad54caSmrg					*)
19525ad54caSmrg						basic_machine=$field1
19625ad54caSmrg						basic_os=$field2
19725ad54caSmrg						;;
19825ad54caSmrg				esac
19925ad54caSmrg			;;
20025ad54caSmrg		esac
201e4da13eeSmacallan		;;
20225ad54caSmrg	*)
20325ad54caSmrg		# Convert single-component short-hands not valid as part of
20425ad54caSmrg		# multi-component configurations.
20525ad54caSmrg		case $field1 in
20625ad54caSmrg			386bsd)
20725ad54caSmrg				basic_machine=i386-pc
20825ad54caSmrg				basic_os=bsd
20925ad54caSmrg				;;
21025ad54caSmrg			a29khif)
21125ad54caSmrg				basic_machine=a29k-amd
21225ad54caSmrg				basic_os=udi
21325ad54caSmrg				;;
21425ad54caSmrg			adobe68k)
21525ad54caSmrg				basic_machine=m68010-adobe
21625ad54caSmrg				basic_os=scout
21725ad54caSmrg				;;
21825ad54caSmrg			alliant)
21925ad54caSmrg				basic_machine=fx80-alliant
22025ad54caSmrg				basic_os=
22125ad54caSmrg				;;
22225ad54caSmrg			altos | altos3068)
22325ad54caSmrg				basic_machine=m68k-altos
22425ad54caSmrg				basic_os=
22525ad54caSmrg				;;
22625ad54caSmrg			am29k)
22725ad54caSmrg				basic_machine=a29k-none
22825ad54caSmrg				basic_os=bsd
22925ad54caSmrg				;;
23025ad54caSmrg			amdahl)
23125ad54caSmrg				basic_machine=580-amdahl
23225ad54caSmrg				basic_os=sysv
23325ad54caSmrg				;;
23425ad54caSmrg			amiga)
23525ad54caSmrg				basic_machine=m68k-unknown
23625ad54caSmrg				basic_os=
23725ad54caSmrg				;;
23825ad54caSmrg			amigaos | amigados)
23925ad54caSmrg				basic_machine=m68k-unknown
24025ad54caSmrg				basic_os=amigaos
24125ad54caSmrg				;;
24225ad54caSmrg			amigaunix | amix)
24325ad54caSmrg				basic_machine=m68k-unknown
24425ad54caSmrg				basic_os=sysv4
24525ad54caSmrg				;;
24625ad54caSmrg			apollo68)
24725ad54caSmrg				basic_machine=m68k-apollo
24825ad54caSmrg				basic_os=sysv
24925ad54caSmrg				;;
25025ad54caSmrg			apollo68bsd)
25125ad54caSmrg				basic_machine=m68k-apollo
25225ad54caSmrg				basic_os=bsd
25325ad54caSmrg				;;
25425ad54caSmrg			aros)
25525ad54caSmrg				basic_machine=i386-pc
25625ad54caSmrg				basic_os=aros
25725ad54caSmrg				;;
25825ad54caSmrg			aux)
25925ad54caSmrg				basic_machine=m68k-apple
26025ad54caSmrg				basic_os=aux
26125ad54caSmrg				;;
26225ad54caSmrg			balance)
26325ad54caSmrg				basic_machine=ns32k-sequent
26425ad54caSmrg				basic_os=dynix
26525ad54caSmrg				;;
26625ad54caSmrg			blackfin)
26725ad54caSmrg				basic_machine=bfin-unknown
26825ad54caSmrg				basic_os=linux
26925ad54caSmrg				;;
27025ad54caSmrg			cegcc)
27125ad54caSmrg				basic_machine=arm-unknown
27225ad54caSmrg				basic_os=cegcc
27325ad54caSmrg				;;
27425ad54caSmrg			convex-c1)
27525ad54caSmrg				basic_machine=c1-convex
27625ad54caSmrg				basic_os=bsd
27725ad54caSmrg				;;
27825ad54caSmrg			convex-c2)
27925ad54caSmrg				basic_machine=c2-convex
28025ad54caSmrg				basic_os=bsd
28125ad54caSmrg				;;
28225ad54caSmrg			convex-c32)
28325ad54caSmrg				basic_machine=c32-convex
28425ad54caSmrg				basic_os=bsd
28525ad54caSmrg				;;
28625ad54caSmrg			convex-c34)
28725ad54caSmrg				basic_machine=c34-convex
28825ad54caSmrg				basic_os=bsd
28925ad54caSmrg				;;
29025ad54caSmrg			convex-c38)
29125ad54caSmrg				basic_machine=c38-convex
29225ad54caSmrg				basic_os=bsd
29325ad54caSmrg				;;
29425ad54caSmrg			cray)
29525ad54caSmrg				basic_machine=j90-cray
29625ad54caSmrg				basic_os=unicos
29725ad54caSmrg				;;
29825ad54caSmrg			crds | unos)
29925ad54caSmrg				basic_machine=m68k-crds
30025ad54caSmrg				basic_os=
30125ad54caSmrg				;;
30225ad54caSmrg			da30)
30325ad54caSmrg				basic_machine=m68k-da30
30425ad54caSmrg				basic_os=
30525ad54caSmrg				;;
30625ad54caSmrg			decstation | pmax | pmin | dec3100 | decstatn)
30725ad54caSmrg				basic_machine=mips-dec
30825ad54caSmrg				basic_os=
30925ad54caSmrg				;;
31025ad54caSmrg			delta88)
31125ad54caSmrg				basic_machine=m88k-motorola
31225ad54caSmrg				basic_os=sysv3
31325ad54caSmrg				;;
31425ad54caSmrg			dicos)
31525ad54caSmrg				basic_machine=i686-pc
31625ad54caSmrg				basic_os=dicos
31725ad54caSmrg				;;
31825ad54caSmrg			djgpp)
31925ad54caSmrg				basic_machine=i586-pc
32025ad54caSmrg				basic_os=msdosdjgpp
32125ad54caSmrg				;;
32225ad54caSmrg			ebmon29k)
32325ad54caSmrg				basic_machine=a29k-amd
32425ad54caSmrg				basic_os=ebmon
32525ad54caSmrg				;;
32625ad54caSmrg			es1800 | OSE68k | ose68k | ose | OSE)
32725ad54caSmrg				basic_machine=m68k-ericsson
32825ad54caSmrg				basic_os=ose
32925ad54caSmrg				;;
33025ad54caSmrg			gmicro)
33125ad54caSmrg				basic_machine=tron-gmicro
33225ad54caSmrg				basic_os=sysv
33325ad54caSmrg				;;
33425ad54caSmrg			go32)
33525ad54caSmrg				basic_machine=i386-pc
33625ad54caSmrg				basic_os=go32
33725ad54caSmrg				;;
33825ad54caSmrg			h8300hms)
33925ad54caSmrg				basic_machine=h8300-hitachi
34025ad54caSmrg				basic_os=hms
34125ad54caSmrg				;;
34225ad54caSmrg			h8300xray)
34325ad54caSmrg				basic_machine=h8300-hitachi
34425ad54caSmrg				basic_os=xray
34525ad54caSmrg				;;
34625ad54caSmrg			h8500hms)
34725ad54caSmrg				basic_machine=h8500-hitachi
34825ad54caSmrg				basic_os=hms
34925ad54caSmrg				;;
35025ad54caSmrg			harris)
35125ad54caSmrg				basic_machine=m88k-harris
35225ad54caSmrg				basic_os=sysv3
35325ad54caSmrg				;;
35425ad54caSmrg			hp300 | hp300hpux)
35525ad54caSmrg				basic_machine=m68k-hp
35625ad54caSmrg				basic_os=hpux
35725ad54caSmrg				;;
35825ad54caSmrg			hp300bsd)
35925ad54caSmrg				basic_machine=m68k-hp
36025ad54caSmrg				basic_os=bsd
36125ad54caSmrg				;;
36225ad54caSmrg			hppaosf)
36325ad54caSmrg				basic_machine=hppa1.1-hp
36425ad54caSmrg				basic_os=osf
36525ad54caSmrg				;;
36625ad54caSmrg			hppro)
36725ad54caSmrg				basic_machine=hppa1.1-hp
36825ad54caSmrg				basic_os=proelf
36925ad54caSmrg				;;
37025ad54caSmrg			i386mach)
37125ad54caSmrg				basic_machine=i386-mach
37225ad54caSmrg				basic_os=mach
37325ad54caSmrg				;;
37425ad54caSmrg			isi68 | isi)
37525ad54caSmrg				basic_machine=m68k-isi
37625ad54caSmrg				basic_os=sysv
37725ad54caSmrg				;;
37825ad54caSmrg			m68knommu)
37925ad54caSmrg				basic_machine=m68k-unknown
38025ad54caSmrg				basic_os=linux
38125ad54caSmrg				;;
38225ad54caSmrg			magnum | m3230)
38325ad54caSmrg				basic_machine=mips-mips
38425ad54caSmrg				basic_os=sysv
38525ad54caSmrg				;;
38625ad54caSmrg			merlin)
38725ad54caSmrg				basic_machine=ns32k-utek
38825ad54caSmrg				basic_os=sysv
38925ad54caSmrg				;;
39025ad54caSmrg			mingw64)
39125ad54caSmrg				basic_machine=x86_64-pc
39225ad54caSmrg				basic_os=mingw64
39325ad54caSmrg				;;
39425ad54caSmrg			mingw32)
39525ad54caSmrg				basic_machine=i686-pc
39625ad54caSmrg				basic_os=mingw32
39725ad54caSmrg				;;
39825ad54caSmrg			mingw32ce)
39925ad54caSmrg				basic_machine=arm-unknown
40025ad54caSmrg				basic_os=mingw32ce
40125ad54caSmrg				;;
40225ad54caSmrg			monitor)
40325ad54caSmrg				basic_machine=m68k-rom68k
40425ad54caSmrg				basic_os=coff
40525ad54caSmrg				;;
40625ad54caSmrg			morphos)
40725ad54caSmrg				basic_machine=powerpc-unknown
40825ad54caSmrg				basic_os=morphos
40925ad54caSmrg				;;
41025ad54caSmrg			moxiebox)
41125ad54caSmrg				basic_machine=moxie-unknown
41225ad54caSmrg				basic_os=moxiebox
41325ad54caSmrg				;;
41425ad54caSmrg			msdos)
41525ad54caSmrg				basic_machine=i386-pc
41625ad54caSmrg				basic_os=msdos
41725ad54caSmrg				;;
41825ad54caSmrg			msys)
41925ad54caSmrg				basic_machine=i686-pc
42025ad54caSmrg				basic_os=msys
42125ad54caSmrg				;;
42225ad54caSmrg			mvs)
42325ad54caSmrg				basic_machine=i370-ibm
42425ad54caSmrg				basic_os=mvs
42525ad54caSmrg				;;
42625ad54caSmrg			nacl)
42725ad54caSmrg				basic_machine=le32-unknown
42825ad54caSmrg				basic_os=nacl
42925ad54caSmrg				;;
43025ad54caSmrg			ncr3000)
43125ad54caSmrg				basic_machine=i486-ncr
43225ad54caSmrg				basic_os=sysv4
43325ad54caSmrg				;;
43425ad54caSmrg			netbsd386)
43525ad54caSmrg				basic_machine=i386-pc
43625ad54caSmrg				basic_os=netbsd
43725ad54caSmrg				;;
43825ad54caSmrg			netwinder)
43925ad54caSmrg				basic_machine=armv4l-rebel
44025ad54caSmrg				basic_os=linux
44125ad54caSmrg				;;
44225ad54caSmrg			news | news700 | news800 | news900)
44325ad54caSmrg				basic_machine=m68k-sony
44425ad54caSmrg				basic_os=newsos
44525ad54caSmrg				;;
44625ad54caSmrg			news1000)
44725ad54caSmrg				basic_machine=m68030-sony
44825ad54caSmrg				basic_os=newsos
44925ad54caSmrg				;;
45025ad54caSmrg			necv70)
45125ad54caSmrg				basic_machine=v70-nec
45225ad54caSmrg				basic_os=sysv
45325ad54caSmrg				;;
45425ad54caSmrg			nh3000)
45525ad54caSmrg				basic_machine=m68k-harris
45625ad54caSmrg				basic_os=cxux
45725ad54caSmrg				;;
45825ad54caSmrg			nh[45]000)
45925ad54caSmrg				basic_machine=m88k-harris
46025ad54caSmrg				basic_os=cxux
46125ad54caSmrg				;;
46225ad54caSmrg			nindy960)
46325ad54caSmrg				basic_machine=i960-intel
46425ad54caSmrg				basic_os=nindy
46525ad54caSmrg				;;
46625ad54caSmrg			mon960)
46725ad54caSmrg				basic_machine=i960-intel
46825ad54caSmrg				basic_os=mon960
46925ad54caSmrg				;;
47025ad54caSmrg			nonstopux)
47125ad54caSmrg				basic_machine=mips-compaq
47225ad54caSmrg				basic_os=nonstopux
47325ad54caSmrg				;;
47425ad54caSmrg			os400)
47525ad54caSmrg				basic_machine=powerpc-ibm
47625ad54caSmrg				basic_os=os400
47725ad54caSmrg				;;
47825ad54caSmrg			OSE68000 | ose68000)
47925ad54caSmrg				basic_machine=m68000-ericsson
48025ad54caSmrg				basic_os=ose
48125ad54caSmrg				;;
48225ad54caSmrg			os68k)
48325ad54caSmrg				basic_machine=m68k-none
48425ad54caSmrg				basic_os=os68k
48525ad54caSmrg				;;
48625ad54caSmrg			paragon)
48725ad54caSmrg				basic_machine=i860-intel
48825ad54caSmrg				basic_os=osf
48925ad54caSmrg				;;
49025ad54caSmrg			parisc)
49125ad54caSmrg				basic_machine=hppa-unknown
49225ad54caSmrg				basic_os=linux
49325ad54caSmrg				;;
49425ad54caSmrg			psp)
49525ad54caSmrg				basic_machine=mipsallegrexel-sony
49625ad54caSmrg				basic_os=psp
49725ad54caSmrg				;;
49825ad54caSmrg			pw32)
49925ad54caSmrg				basic_machine=i586-unknown
50025ad54caSmrg				basic_os=pw32
50125ad54caSmrg				;;
50225ad54caSmrg			rdos | rdos64)
50325ad54caSmrg				basic_machine=x86_64-pc
50425ad54caSmrg				basic_os=rdos
50525ad54caSmrg				;;
50625ad54caSmrg			rdos32)
50725ad54caSmrg				basic_machine=i386-pc
50825ad54caSmrg				basic_os=rdos
50925ad54caSmrg				;;
51025ad54caSmrg			rom68k)
51125ad54caSmrg				basic_machine=m68k-rom68k
51225ad54caSmrg				basic_os=coff
51325ad54caSmrg				;;
51425ad54caSmrg			sa29200)
51525ad54caSmrg				basic_machine=a29k-amd
51625ad54caSmrg				basic_os=udi
51725ad54caSmrg				;;
51825ad54caSmrg			sei)
51925ad54caSmrg				basic_machine=mips-sei
52025ad54caSmrg				basic_os=seiux
52125ad54caSmrg				;;
52225ad54caSmrg			sequent)
52325ad54caSmrg				basic_machine=i386-sequent
52425ad54caSmrg				basic_os=
52525ad54caSmrg				;;
52625ad54caSmrg			sps7)
52725ad54caSmrg				basic_machine=m68k-bull
52825ad54caSmrg				basic_os=sysv2
52925ad54caSmrg				;;
53025ad54caSmrg			st2000)
53125ad54caSmrg				basic_machine=m68k-tandem
53225ad54caSmrg				basic_os=
53325ad54caSmrg				;;
53425ad54caSmrg			stratus)
53525ad54caSmrg				basic_machine=i860-stratus
53625ad54caSmrg				basic_os=sysv4
53725ad54caSmrg				;;
53825ad54caSmrg			sun2)
53925ad54caSmrg				basic_machine=m68000-sun
54025ad54caSmrg				basic_os=
54125ad54caSmrg				;;
54225ad54caSmrg			sun2os3)
54325ad54caSmrg				basic_machine=m68000-sun
54425ad54caSmrg				basic_os=sunos3
54525ad54caSmrg				;;
54625ad54caSmrg			sun2os4)
54725ad54caSmrg				basic_machine=m68000-sun
54825ad54caSmrg				basic_os=sunos4
54925ad54caSmrg				;;
55025ad54caSmrg			sun3)
55125ad54caSmrg				basic_machine=m68k-sun
55225ad54caSmrg				basic_os=
55325ad54caSmrg				;;
55425ad54caSmrg			sun3os3)
55525ad54caSmrg				basic_machine=m68k-sun
55625ad54caSmrg				basic_os=sunos3
55725ad54caSmrg				;;
55825ad54caSmrg			sun3os4)
55925ad54caSmrg				basic_machine=m68k-sun
56025ad54caSmrg				basic_os=sunos4
56125ad54caSmrg				;;
56225ad54caSmrg			sun4)
56325ad54caSmrg				basic_machine=sparc-sun
56425ad54caSmrg				basic_os=
56525ad54caSmrg				;;
56625ad54caSmrg			sun4os3)
56725ad54caSmrg				basic_machine=sparc-sun
56825ad54caSmrg				basic_os=sunos3
56925ad54caSmrg				;;
57025ad54caSmrg			sun4os4)
57125ad54caSmrg				basic_machine=sparc-sun
57225ad54caSmrg				basic_os=sunos4
57325ad54caSmrg				;;
57425ad54caSmrg			sun4sol2)
57525ad54caSmrg				basic_machine=sparc-sun
57625ad54caSmrg				basic_os=solaris2
57725ad54caSmrg				;;
57825ad54caSmrg			sun386 | sun386i | roadrunner)
57925ad54caSmrg				basic_machine=i386-sun
58025ad54caSmrg				basic_os=
58125ad54caSmrg				;;
58225ad54caSmrg			sv1)
58325ad54caSmrg				basic_machine=sv1-cray
58425ad54caSmrg				basic_os=unicos
58525ad54caSmrg				;;
58625ad54caSmrg			symmetry)
58725ad54caSmrg				basic_machine=i386-sequent
58825ad54caSmrg				basic_os=dynix
58925ad54caSmrg				;;
59025ad54caSmrg			t3e)
59125ad54caSmrg				basic_machine=alphaev5-cray
59225ad54caSmrg				basic_os=unicos
59325ad54caSmrg				;;
59425ad54caSmrg			t90)
59525ad54caSmrg				basic_machine=t90-cray
59625ad54caSmrg				basic_os=unicos
59725ad54caSmrg				;;
59825ad54caSmrg			toad1)
59925ad54caSmrg				basic_machine=pdp10-xkl
60025ad54caSmrg				basic_os=tops20
60125ad54caSmrg				;;
60225ad54caSmrg			tpf)
60325ad54caSmrg				basic_machine=s390x-ibm
60425ad54caSmrg				basic_os=tpf
60525ad54caSmrg				;;
60625ad54caSmrg			udi29k)
60725ad54caSmrg				basic_machine=a29k-amd
60825ad54caSmrg				basic_os=udi
60925ad54caSmrg				;;
61025ad54caSmrg			ultra3)
61125ad54caSmrg				basic_machine=a29k-nyu
61225ad54caSmrg				basic_os=sym1
61325ad54caSmrg				;;
61425ad54caSmrg			v810 | necv810)
61525ad54caSmrg				basic_machine=v810-nec
61625ad54caSmrg				basic_os=none
61725ad54caSmrg				;;
61825ad54caSmrg			vaxv)
61925ad54caSmrg				basic_machine=vax-dec
62025ad54caSmrg				basic_os=sysv
62125ad54caSmrg				;;
62225ad54caSmrg			vms)
62325ad54caSmrg				basic_machine=vax-dec
62425ad54caSmrg				basic_os=vms
62525ad54caSmrg				;;
62625ad54caSmrg			vsta)
62725ad54caSmrg				basic_machine=i386-pc
62825ad54caSmrg				basic_os=vsta
62925ad54caSmrg				;;
63025ad54caSmrg			vxworks960)
63125ad54caSmrg				basic_machine=i960-wrs
63225ad54caSmrg				basic_os=vxworks
63325ad54caSmrg				;;
63425ad54caSmrg			vxworks68)
63525ad54caSmrg				basic_machine=m68k-wrs
63625ad54caSmrg				basic_os=vxworks
63725ad54caSmrg				;;
63825ad54caSmrg			vxworks29k)
63925ad54caSmrg				basic_machine=a29k-wrs
64025ad54caSmrg				basic_os=vxworks
64125ad54caSmrg				;;
64225ad54caSmrg			xbox)
64325ad54caSmrg				basic_machine=i686-pc
64425ad54caSmrg				basic_os=mingw32
64525ad54caSmrg				;;
64625ad54caSmrg			ymp)
64725ad54caSmrg				basic_machine=ymp-cray
64825ad54caSmrg				basic_os=unicos
64925ad54caSmrg				;;
65025ad54caSmrg			*)
65125ad54caSmrg				basic_machine=$1
65225ad54caSmrg				basic_os=
65325ad54caSmrg				;;
65425ad54caSmrg		esac
655e4da13eeSmacallan		;;
656e4da13eeSmacallanesac
657e4da13eeSmacallan
65825ad54caSmrg# Decode 1-component or ad-hoc basic machines
659e4da13eeSmacallancase $basic_machine in
66025ad54caSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
66125ad54caSmrg	# some cases the only manufacturer, in others, it is the most popular.
66225ad54caSmrg	w89k)
66325ad54caSmrg		cpu=hppa1.1
66425ad54caSmrg		vendor=winbond
665e4da13eeSmacallan		;;
66625ad54caSmrg	op50n)
66725ad54caSmrg		cpu=hppa1.1
66825ad54caSmrg		vendor=oki
66965d490d0Smrg		;;
67025ad54caSmrg	op60c)
67125ad54caSmrg		cpu=hppa1.1
67225ad54caSmrg		vendor=oki
67365d490d0Smrg		;;
67425ad54caSmrg	ibm*)
67525ad54caSmrg		cpu=i370
67625ad54caSmrg		vendor=ibm
67765d490d0Smrg		;;
67825ad54caSmrg	orion105)
67925ad54caSmrg		cpu=clipper
68025ad54caSmrg		vendor=highlevel
68165d490d0Smrg		;;
68225ad54caSmrg	mac | mpw | mac-mpw)
68325ad54caSmrg		cpu=m68k
68425ad54caSmrg		vendor=apple
685e4da13eeSmacallan		;;
68625ad54caSmrg	pmac | pmac-mpw)
68725ad54caSmrg		cpu=powerpc
68825ad54caSmrg		vendor=apple
689e4da13eeSmacallan		;;
69025ad54caSmrg
691e4da13eeSmacallan	# Recognize the various machine names and aliases which stand
692e4da13eeSmacallan	# for a CPU type and a company and sometimes even an OS.
693e4da13eeSmacallan	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
69425ad54caSmrg		cpu=m68000
69525ad54caSmrg		vendor=att
696e4da13eeSmacallan		;;
697e4da13eeSmacallan	3b*)
69825ad54caSmrg		cpu=we32k
69925ad54caSmrg		vendor=att
700e4da13eeSmacallan		;;
70165d490d0Smrg	bluegene*)
70225ad54caSmrg		cpu=powerpc
70325ad54caSmrg		vendor=ibm
70425ad54caSmrg		basic_os=cnk
705e4da13eeSmacallan		;;
706e4da13eeSmacallan	decsystem10* | dec10*)
70725ad54caSmrg		cpu=pdp10
70825ad54caSmrg		vendor=dec
70925ad54caSmrg		basic_os=tops10
710e4da13eeSmacallan		;;
711e4da13eeSmacallan	decsystem20* | dec20*)
71225ad54caSmrg		cpu=pdp10
71325ad54caSmrg		vendor=dec
71425ad54caSmrg		basic_os=tops20
715e4da13eeSmacallan		;;
716e4da13eeSmacallan	delta | 3300 | motorola-3300 | motorola-delta \
717e4da13eeSmacallan	      | 3300-motorola | delta-motorola)
71825ad54caSmrg		cpu=m68k
71925ad54caSmrg		vendor=motorola
720e4da13eeSmacallan		;;
72125ad54caSmrg	dpx2*)
72225ad54caSmrg		cpu=m68k
72325ad54caSmrg		vendor=bull
72425ad54caSmrg		basic_os=sysv3
725e4da13eeSmacallan		;;
726e4da13eeSmacallan	encore | umax | mmax)
72725ad54caSmrg		cpu=ns32k
72825ad54caSmrg		vendor=encore
729e4da13eeSmacallan		;;
73025ad54caSmrg	elxsi)
73125ad54caSmrg		cpu=elxsi
73225ad54caSmrg		vendor=elxsi
73325ad54caSmrg		basic_os=${basic_os:-bsd}
734e4da13eeSmacallan		;;
735e4da13eeSmacallan	fx2800)
73625ad54caSmrg		cpu=i860
73725ad54caSmrg		vendor=alliant
738e4da13eeSmacallan		;;
739e4da13eeSmacallan	genix)
74025ad54caSmrg		cpu=ns32k
74125ad54caSmrg		vendor=ns
742e4da13eeSmacallan		;;
743e4da13eeSmacallan	h3050r* | hiux*)
74425ad54caSmrg		cpu=hppa1.1
74525ad54caSmrg		vendor=hitachi
74625ad54caSmrg		basic_os=hiuxwe2
747e4da13eeSmacallan		;;
748e4da13eeSmacallan	hp3k9[0-9][0-9] | hp9[0-9][0-9])
74925ad54caSmrg		cpu=hppa1.0
75025ad54caSmrg		vendor=hp
751e4da13eeSmacallan		;;
752e4da13eeSmacallan	hp9k2[0-9][0-9] | hp9k31[0-9])
75325ad54caSmrg		cpu=m68000
75425ad54caSmrg		vendor=hp
755e4da13eeSmacallan		;;
756e4da13eeSmacallan	hp9k3[2-9][0-9])
75725ad54caSmrg		cpu=m68k
75825ad54caSmrg		vendor=hp
759e4da13eeSmacallan		;;
760e4da13eeSmacallan	hp9k6[0-9][0-9] | hp6[0-9][0-9])
76125ad54caSmrg		cpu=hppa1.0
76225ad54caSmrg		vendor=hp
763e4da13eeSmacallan		;;
764e4da13eeSmacallan	hp9k7[0-79][0-9] | hp7[0-79][0-9])
76525ad54caSmrg		cpu=hppa1.1
76625ad54caSmrg		vendor=hp
767e4da13eeSmacallan		;;
768e4da13eeSmacallan	hp9k78[0-9] | hp78[0-9])
769e4da13eeSmacallan		# FIXME: really hppa2.0-hp
77025ad54caSmrg		cpu=hppa1.1
77125ad54caSmrg		vendor=hp
772e4da13eeSmacallan		;;
773e4da13eeSmacallan	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
774e4da13eeSmacallan		# FIXME: really hppa2.0-hp
77525ad54caSmrg		cpu=hppa1.1
77625ad54caSmrg		vendor=hp
777e4da13eeSmacallan		;;
778e4da13eeSmacallan	hp9k8[0-9][13679] | hp8[0-9][13679])
77925ad54caSmrg		cpu=hppa1.1
78025ad54caSmrg		vendor=hp
781e4da13eeSmacallan		;;
782e4da13eeSmacallan	hp9k8[0-9][0-9] | hp8[0-9][0-9])
78325ad54caSmrg		cpu=hppa1.0
78425ad54caSmrg		vendor=hp
785e4da13eeSmacallan		;;
786e4da13eeSmacallan	i*86v32)
78725ad54caSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
78825ad54caSmrg		vendor=pc
78925ad54caSmrg		basic_os=sysv32
790e4da13eeSmacallan		;;
791e4da13eeSmacallan	i*86v4*)
79225ad54caSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79325ad54caSmrg		vendor=pc
79425ad54caSmrg		basic_os=sysv4
795e4da13eeSmacallan		;;
796e4da13eeSmacallan	i*86v)
79725ad54caSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79825ad54caSmrg		vendor=pc
79925ad54caSmrg		basic_os=sysv
800e4da13eeSmacallan		;;
801e4da13eeSmacallan	i*86sol2)
80225ad54caSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
80325ad54caSmrg		vendor=pc
80425ad54caSmrg		basic_os=solaris2
805e4da13eeSmacallan		;;
80625ad54caSmrg	j90 | j90-cray)
80725ad54caSmrg		cpu=j90
80825ad54caSmrg		vendor=cray
80925ad54caSmrg		basic_os=${basic_os:-unicos}
810e4da13eeSmacallan		;;
811e4da13eeSmacallan	iris | iris4d)
81225ad54caSmrg		cpu=mips
81325ad54caSmrg		vendor=sgi
81425ad54caSmrg		case $basic_os in
81525ad54caSmrg		    irix*)
816e4da13eeSmacallan			;;
817e4da13eeSmacallan		    *)
81825ad54caSmrg			basic_os=irix4
819e4da13eeSmacallan			;;
820e4da13eeSmacallan		esac
821e4da13eeSmacallan		;;
822e4da13eeSmacallan	miniframe)
82325ad54caSmrg		cpu=m68000
82425ad54caSmrg		vendor=convergent
825e4da13eeSmacallan		;;
82625ad54caSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
82725ad54caSmrg		cpu=m68k
82825ad54caSmrg		vendor=atari
82925ad54caSmrg		basic_os=mint
830e4da13eeSmacallan		;;
831e4da13eeSmacallan	news-3600 | risc-news)
83225ad54caSmrg		cpu=mips
83325ad54caSmrg		vendor=sony
83425ad54caSmrg		basic_os=newsos
83525ad54caSmrg		;;
83625ad54caSmrg	next | m*-next)
83725ad54caSmrg		cpu=m68k
83825ad54caSmrg		vendor=next
83925ad54caSmrg		case $basic_os in
84025ad54caSmrg		    openstep*)
84125ad54caSmrg		        ;;
84225ad54caSmrg		    nextstep*)
843e4da13eeSmacallan			;;
84425ad54caSmrg		    ns2*)
84525ad54caSmrg		      basic_os=nextstep2
846e4da13eeSmacallan			;;
847e4da13eeSmacallan		    *)
84825ad54caSmrg		      basic_os=nextstep3
849e4da13eeSmacallan			;;
850e4da13eeSmacallan		esac
851e4da13eeSmacallan		;;
852e4da13eeSmacallan	np1)
85325ad54caSmrg		cpu=np1
85425ad54caSmrg		vendor=gould
855e4da13eeSmacallan		;;
856e4da13eeSmacallan	op50n-* | op60c-*)
85725ad54caSmrg		cpu=hppa1.1
85825ad54caSmrg		vendor=oki
85925ad54caSmrg		basic_os=proelf
860e4da13eeSmacallan		;;
861e4da13eeSmacallan	pa-hitachi)
86225ad54caSmrg		cpu=hppa1.1
86325ad54caSmrg		vendor=hitachi
86425ad54caSmrg		basic_os=hiuxwe2
865e4da13eeSmacallan		;;
866e4da13eeSmacallan	pbd)
86725ad54caSmrg		cpu=sparc
86825ad54caSmrg		vendor=tti
869e4da13eeSmacallan		;;
870e4da13eeSmacallan	pbb)
87125ad54caSmrg		cpu=m68k
87225ad54caSmrg		vendor=tti
873e4da13eeSmacallan		;;
87425ad54caSmrg	pc532)
87525ad54caSmrg		cpu=ns32k
87625ad54caSmrg		vendor=pc532
877e4da13eeSmacallan		;;
878e4da13eeSmacallan	pn)
87925ad54caSmrg		cpu=pn
88025ad54caSmrg		vendor=gould
881e4da13eeSmacallan		;;
88225ad54caSmrg	power)
88325ad54caSmrg		cpu=power
88425ad54caSmrg		vendor=ibm
885e4da13eeSmacallan		;;
886e4da13eeSmacallan	ps2)
88725ad54caSmrg		cpu=i386
88825ad54caSmrg		vendor=ibm
889e4da13eeSmacallan		;;
890e4da13eeSmacallan	rm[46]00)
89125ad54caSmrg		cpu=mips
89225ad54caSmrg		vendor=siemens
893e4da13eeSmacallan		;;
894e4da13eeSmacallan	rtpc | rtpc-*)
89525ad54caSmrg		cpu=romp
89625ad54caSmrg		vendor=ibm
897e4da13eeSmacallan		;;
89825ad54caSmrg	sde)
89925ad54caSmrg		cpu=mipsisa32
90025ad54caSmrg		vendor=sde
90125ad54caSmrg		basic_os=${basic_os:-elf}
902e4da13eeSmacallan		;;
90325ad54caSmrg	simso-wrs)
90425ad54caSmrg		cpu=sparclite
90525ad54caSmrg		vendor=wrs
90625ad54caSmrg		basic_os=vxworks
907e4da13eeSmacallan		;;
90825ad54caSmrg	tower | tower-32)
90925ad54caSmrg		cpu=m68k
91025ad54caSmrg		vendor=ncr
911e4da13eeSmacallan		;;
91225ad54caSmrg	vpp*|vx|vx-*)
91325ad54caSmrg		cpu=f301
91425ad54caSmrg		vendor=fujitsu
915e4da13eeSmacallan		;;
91625ad54caSmrg	w65)
91725ad54caSmrg		cpu=w65
91825ad54caSmrg		vendor=wdc
919e4da13eeSmacallan		;;
92025ad54caSmrg	w89k-*)
92125ad54caSmrg		cpu=hppa1.1
92225ad54caSmrg		vendor=winbond
92325ad54caSmrg		basic_os=proelf
924e4da13eeSmacallan		;;
92525ad54caSmrg	none)
92625ad54caSmrg		cpu=none
92725ad54caSmrg		vendor=none
928e4da13eeSmacallan		;;
92925ad54caSmrg	leon|leon[3-9])
93025ad54caSmrg		cpu=sparc
93125ad54caSmrg		vendor=$basic_machine
932e4da13eeSmacallan		;;
93325ad54caSmrg	leon-*|leon[3-9]-*)
93425ad54caSmrg		cpu=sparc
93525ad54caSmrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
936e4da13eeSmacallan		;;
93725ad54caSmrg
93825ad54caSmrg	*-*)
93925ad54caSmrg		# shellcheck disable=SC2162
94025ad54caSmrg		saved_IFS=$IFS
94125ad54caSmrg		IFS="-" read cpu vendor <<EOF
94225ad54caSmrg$basic_machine
94325ad54caSmrgEOF
94425ad54caSmrg		IFS=$saved_IFS
945e4da13eeSmacallan		;;
94625ad54caSmrg	# We use `pc' rather than `unknown'
94725ad54caSmrg	# because (1) that's what they normally are, and
94825ad54caSmrg	# (2) the word "unknown" tends to confuse beginning users.
94925ad54caSmrg	i*86 | x86_64)
95025ad54caSmrg		cpu=$basic_machine
95125ad54caSmrg		vendor=pc
952e4da13eeSmacallan		;;
95325ad54caSmrg	# These rules are duplicated from below for sake of the special case above;
95425ad54caSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
95525ad54caSmrg	pc98)
95625ad54caSmrg		cpu=i386
95725ad54caSmrg		vendor=pc
958e4da13eeSmacallan		;;
95925ad54caSmrg	x64 | amd64)
96025ad54caSmrg		cpu=x86_64
96125ad54caSmrg		vendor=pc
962e4da13eeSmacallan		;;
96325ad54caSmrg	# Recognize the basic CPU types without company name.
96425ad54caSmrg	*)
96525ad54caSmrg		cpu=$basic_machine
96625ad54caSmrg		vendor=unknown
96765d490d0Smrg		;;
96825ad54caSmrgesac
96925ad54caSmrg
97025ad54caSmrgunset -v basic_machine
97125ad54caSmrg
97225ad54caSmrg# Decode basic machines in the full and proper CPU-Company form.
97325ad54caSmrgcase $cpu-$vendor in
97425ad54caSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
97525ad54caSmrg	# some cases the only manufacturer, in others, it is the most popular.
97625ad54caSmrg	craynv-unknown)
97725ad54caSmrg		vendor=cray
97825ad54caSmrg		basic_os=${basic_os:-unicosmp}
979e4da13eeSmacallan		;;
98025ad54caSmrg	c90-unknown | c90-cray)
98125ad54caSmrg		vendor=cray
98225ad54caSmrg		basic_os=${Basic_os:-unicos}
983e4da13eeSmacallan		;;
98425ad54caSmrg	fx80-unknown)
98525ad54caSmrg		vendor=alliant
986e4da13eeSmacallan		;;
98725ad54caSmrg	romp-unknown)
98825ad54caSmrg		vendor=ibm
989e4da13eeSmacallan		;;
99025ad54caSmrg	mmix-unknown)
99125ad54caSmrg		vendor=knuth
992e4da13eeSmacallan		;;
99325ad54caSmrg	microblaze-unknown | microblazeel-unknown)
99425ad54caSmrg		vendor=xilinx
995e4da13eeSmacallan		;;
99625ad54caSmrg	rs6000-unknown)
99725ad54caSmrg		vendor=ibm
998e4da13eeSmacallan		;;
99925ad54caSmrg	vax-unknown)
100025ad54caSmrg		vendor=dec
1001e4da13eeSmacallan		;;
100225ad54caSmrg	pdp11-unknown)
100325ad54caSmrg		vendor=dec
1004e4da13eeSmacallan		;;
100525ad54caSmrg	we32k-unknown)
100625ad54caSmrg		vendor=att
1007e4da13eeSmacallan		;;
100825ad54caSmrg	cydra-unknown)
100925ad54caSmrg		vendor=cydrome
1010e4da13eeSmacallan		;;
101125ad54caSmrg	i370-ibm*)
101225ad54caSmrg		vendor=ibm
1013e4da13eeSmacallan		;;
101425ad54caSmrg	orion-unknown)
101525ad54caSmrg		vendor=highlevel
1016e4da13eeSmacallan		;;
101725ad54caSmrg	xps-unknown | xps100-unknown)
101825ad54caSmrg		cpu=xps100
101925ad54caSmrg		vendor=honeywell
1020e4da13eeSmacallan		;;
102125ad54caSmrg
102225ad54caSmrg	# Here we normalize CPU types with a missing or matching vendor
102325ad54caSmrg	dpx20-unknown | dpx20-bull)
102425ad54caSmrg		cpu=rs6000
102525ad54caSmrg		vendor=bull
102625ad54caSmrg		basic_os=${basic_os:-bosx}
1027e4da13eeSmacallan		;;
102825ad54caSmrg
102925ad54caSmrg	# Here we normalize CPU types irrespective of the vendor
103025ad54caSmrg	amd64-*)
103125ad54caSmrg		cpu=x86_64
1032e4da13eeSmacallan		;;
103325ad54caSmrg	blackfin-*)
103425ad54caSmrg		cpu=bfin
103525ad54caSmrg		basic_os=linux
1036e4da13eeSmacallan		;;
103725ad54caSmrg	c54x-*)
103825ad54caSmrg		cpu=tic54x
1039e4da13eeSmacallan		;;
104025ad54caSmrg	c55x-*)
104125ad54caSmrg		cpu=tic55x
1042e4da13eeSmacallan		;;
104325ad54caSmrg	c6x-*)
104425ad54caSmrg		cpu=tic6x
1045e4da13eeSmacallan		;;
104625ad54caSmrg	e500v[12]-*)
104725ad54caSmrg		cpu=powerpc
104825ad54caSmrg		basic_os=${basic_os}"spe"
1049e4da13eeSmacallan		;;
105025ad54caSmrg	mips3*-*)
105125ad54caSmrg		cpu=mips64
1052e4da13eeSmacallan		;;
105325ad54caSmrg	ms1-*)
105425ad54caSmrg		cpu=mt
1055e4da13eeSmacallan		;;
105625ad54caSmrg	m68knommu-*)
105725ad54caSmrg		cpu=m68k
105825ad54caSmrg		basic_os=linux
1059e4da13eeSmacallan		;;
106025ad54caSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
106125ad54caSmrg		cpu=s12z
1062e4da13eeSmacallan		;;
106325ad54caSmrg	openrisc-*)
106425ad54caSmrg		cpu=or32
1065e4da13eeSmacallan		;;
106625ad54caSmrg	parisc-*)
106725ad54caSmrg		cpu=hppa
106825ad54caSmrg		basic_os=linux
1069e4da13eeSmacallan		;;
107025ad54caSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
107125ad54caSmrg		cpu=i586
1072e4da13eeSmacallan		;;
107325ad54caSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
107425ad54caSmrg		cpu=i686
1075e4da13eeSmacallan		;;
107625ad54caSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
107725ad54caSmrg		cpu=i686
1078e4da13eeSmacallan		;;
107925ad54caSmrg	pentium4-*)
108025ad54caSmrg		cpu=i786
1081e4da13eeSmacallan		;;
108225ad54caSmrg	pc98-*)
108325ad54caSmrg		cpu=i386
1084e4da13eeSmacallan		;;
108525ad54caSmrg	ppc-* | ppcbe-*)
108625ad54caSmrg		cpu=powerpc
1087e4da13eeSmacallan		;;
108825ad54caSmrg	ppcle-* | powerpclittle-*)
108925ad54caSmrg		cpu=powerpcle
1090e4da13eeSmacallan		;;
109125ad54caSmrg	ppc64-*)
109225ad54caSmrg		cpu=powerpc64
109365d490d0Smrg		;;
109425ad54caSmrg	ppc64le-* | powerpc64little-*)
109525ad54caSmrg		cpu=powerpc64le
1096e4da13eeSmacallan		;;
109725ad54caSmrg	sb1-*)
109825ad54caSmrg		cpu=mipsisa64sb1
1099e4da13eeSmacallan		;;
110025ad54caSmrg	sb1el-*)
110125ad54caSmrg		cpu=mipsisa64sb1el
110265d490d0Smrg		;;
110325ad54caSmrg	sh5e[lb]-*)
110425ad54caSmrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
1105e4da13eeSmacallan		;;
110625ad54caSmrg	spur-*)
110725ad54caSmrg		cpu=spur
1108e4da13eeSmacallan		;;
110925ad54caSmrg	strongarm-* | thumb-*)
111025ad54caSmrg		cpu=arm
1111e4da13eeSmacallan		;;
111225ad54caSmrg	tx39-*)
111325ad54caSmrg		cpu=mipstx39
1114e4da13eeSmacallan		;;
111525ad54caSmrg	tx39el-*)
111625ad54caSmrg		cpu=mipstx39el
1117e4da13eeSmacallan		;;
111825ad54caSmrg	x64-*)
111925ad54caSmrg		cpu=x86_64
1120e4da13eeSmacallan		;;
112125ad54caSmrg	xscale-* | xscalee[bl]-*)
112225ad54caSmrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
1123e4da13eeSmacallan		;;
112425ad54caSmrg	arm64-*)
112525ad54caSmrg		cpu=aarch64
1126e4da13eeSmacallan		;;
112725ad54caSmrg
112825ad54caSmrg	# Recognize the canonical CPU Types that limit and/or modify the
112925ad54caSmrg	# company names they are paired with.
113025ad54caSmrg	cr16-*)
113125ad54caSmrg		basic_os=${basic_os:-elf}
1132e4da13eeSmacallan		;;
113325ad54caSmrg	crisv32-* | etraxfs*-*)
113425ad54caSmrg		cpu=crisv32
113525ad54caSmrg		vendor=axis
1136e4da13eeSmacallan		;;
113725ad54caSmrg	cris-* | etrax*-*)
113825ad54caSmrg		cpu=cris
113925ad54caSmrg		vendor=axis
1140e4da13eeSmacallan		;;
114125ad54caSmrg	crx-*)
114225ad54caSmrg		basic_os=${basic_os:-elf}
1143e4da13eeSmacallan		;;
114425ad54caSmrg	neo-tandem)
114525ad54caSmrg		cpu=neo
114625ad54caSmrg		vendor=tandem
1147e4da13eeSmacallan		;;
114825ad54caSmrg	nse-tandem)
114925ad54caSmrg		cpu=nse
115025ad54caSmrg		vendor=tandem
1151e4da13eeSmacallan		;;
115225ad54caSmrg	nsr-tandem)
115325ad54caSmrg		cpu=nsr
115425ad54caSmrg		vendor=tandem
1155e4da13eeSmacallan		;;
115625ad54caSmrg	nsv-tandem)
115725ad54caSmrg		cpu=nsv
115825ad54caSmrg		vendor=tandem
1159e4da13eeSmacallan		;;
116025ad54caSmrg	nsx-tandem)
116125ad54caSmrg		cpu=nsx
116225ad54caSmrg		vendor=tandem
1163e4da13eeSmacallan		;;
116425ad54caSmrg	mipsallegrexel-sony)
116525ad54caSmrg		cpu=mipsallegrexel
116625ad54caSmrg		vendor=sony
1167e4da13eeSmacallan		;;
116825ad54caSmrg	tile*-*)
116925ad54caSmrg		basic_os=${basic_os:-linux-gnu}
1170e4da13eeSmacallan		;;
117125ad54caSmrg
1172e4da13eeSmacallan	*)
117325ad54caSmrg		# Recognize the canonical CPU types that are allowed with any
117425ad54caSmrg		# company name.
117525ad54caSmrg		case $cpu in
117625ad54caSmrg			1750a | 580 \
117725ad54caSmrg			| a29k \
117825ad54caSmrg			| aarch64 | aarch64_be \
117925ad54caSmrg			| abacus \
118025ad54caSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
118125ad54caSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
118225ad54caSmrg			| alphapca5[67] | alpha64pca5[67] \
118325ad54caSmrg			| am33_2.0 \
118425ad54caSmrg			| amdgcn \
118525ad54caSmrg			| arc | arceb | arc32 | arc64 \
118625ad54caSmrg			| arm | arm[lb]e | arme[lb] | armv* \
118725ad54caSmrg			| avr | avr32 \
118825ad54caSmrg			| asmjs \
118925ad54caSmrg			| ba \
119025ad54caSmrg			| be32 | be64 \
119125ad54caSmrg			| bfin | bpf | bs2000 \
119225ad54caSmrg			| c[123]* | c30 | [cjt]90 | c4x \
119325ad54caSmrg			| c8051 | clipper | craynv | csky | cydra \
119425ad54caSmrg			| d10v | d30v | dlx | dsp16xx \
119525ad54caSmrg			| e2k | elxsi | epiphany \
119625ad54caSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
119725ad54caSmrg			| h8300 | h8500 \
119825ad54caSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
119925ad54caSmrg			| hexagon \
120025ad54caSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
120125ad54caSmrg			| ip2k | iq2000 \
120225ad54caSmrg			| k1om \
120325ad54caSmrg			| le32 | le64 \
120425ad54caSmrg			| lm32 \
120525ad54caSmrg			| loongarch32 | loongarch64 | loongarchx32 \
120625ad54caSmrg			| m32c | m32r | m32rle \
120725ad54caSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
120825ad54caSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
120925ad54caSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
121025ad54caSmrg			| microblaze | microblazeel \
121125ad54caSmrg			| mips | mipsbe | mipseb | mipsel | mipsle \
121225ad54caSmrg			| mips16 \
121325ad54caSmrg			| mips64 | mips64eb | mips64el \
121425ad54caSmrg			| mips64octeon | mips64octeonel \
121525ad54caSmrg			| mips64orion | mips64orionel \
121625ad54caSmrg			| mips64r5900 | mips64r5900el \
121725ad54caSmrg			| mips64vr | mips64vrel \
121825ad54caSmrg			| mips64vr4100 | mips64vr4100el \
121925ad54caSmrg			| mips64vr4300 | mips64vr4300el \
122025ad54caSmrg			| mips64vr5000 | mips64vr5000el \
122125ad54caSmrg			| mips64vr5900 | mips64vr5900el \
122225ad54caSmrg			| mipsisa32 | mipsisa32el \
122325ad54caSmrg			| mipsisa32r2 | mipsisa32r2el \
122425ad54caSmrg			| mipsisa32r3 | mipsisa32r3el \
122525ad54caSmrg			| mipsisa32r5 | mipsisa32r5el \
122625ad54caSmrg			| mipsisa32r6 | mipsisa32r6el \
122725ad54caSmrg			| mipsisa64 | mipsisa64el \
122825ad54caSmrg			| mipsisa64r2 | mipsisa64r2el \
122925ad54caSmrg			| mipsisa64r3 | mipsisa64r3el \
123025ad54caSmrg			| mipsisa64r5 | mipsisa64r5el \
123125ad54caSmrg			| mipsisa64r6 | mipsisa64r6el \
123225ad54caSmrg			| mipsisa64sb1 | mipsisa64sb1el \
123325ad54caSmrg			| mipsisa64sr71k | mipsisa64sr71kel \
123425ad54caSmrg			| mipsr5900 | mipsr5900el \
123525ad54caSmrg			| mipstx39 | mipstx39el \
123625ad54caSmrg			| mmix \
123725ad54caSmrg			| mn10200 | mn10300 \
123825ad54caSmrg			| moxie \
123925ad54caSmrg			| mt \
124025ad54caSmrg			| msp430 \
124125ad54caSmrg			| nds32 | nds32le | nds32be \
124225ad54caSmrg			| nfp \
124325ad54caSmrg			| nios | nios2 | nios2eb | nios2el \
124425ad54caSmrg			| none | np1 | ns16k | ns32k | nvptx \
124525ad54caSmrg			| open8 \
124625ad54caSmrg			| or1k* \
124725ad54caSmrg			| or32 \
124825ad54caSmrg			| orion \
124925ad54caSmrg			| picochip \
125025ad54caSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
125125ad54caSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
125225ad54caSmrg			| pru \
125325ad54caSmrg			| pyramid \
125425ad54caSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
125525ad54caSmrg			| rl78 | romp | rs6000 | rx \
125625ad54caSmrg			| s390 | s390x \
125725ad54caSmrg			| score \
125825ad54caSmrg			| sh | shl \
125925ad54caSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
126025ad54caSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
126125ad54caSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
126225ad54caSmrg			| sparclite \
126325ad54caSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
126425ad54caSmrg			| spu \
126525ad54caSmrg			| tahoe \
126625ad54caSmrg			| thumbv7* \
126725ad54caSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
126825ad54caSmrg			| tron \
126925ad54caSmrg			| ubicom32 \
127025ad54caSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
127125ad54caSmrg			| vax \
127225ad54caSmrg			| visium \
127325ad54caSmrg			| w65 \
127425ad54caSmrg			| wasm32 | wasm64 \
127525ad54caSmrg			| we32k \
127625ad54caSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
127725ad54caSmrg			| xstormy16 | xtensa* \
127825ad54caSmrg			| ymp \
127925ad54caSmrg			| z8k | z80)
128025ad54caSmrg				;;
128125ad54caSmrg
128225ad54caSmrg			*)
128325ad54caSmrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
128425ad54caSmrg				exit 1
128525ad54caSmrg				;;
128625ad54caSmrg		esac
1287e4da13eeSmacallan		;;
1288e4da13eeSmacallanesac
1289e4da13eeSmacallan
1290e4da13eeSmacallan# Here we canonicalize certain aliases for manufacturers.
129125ad54caSmrgcase $vendor in
129225ad54caSmrg	digital*)
129325ad54caSmrg		vendor=dec
1294e4da13eeSmacallan		;;
129525ad54caSmrg	commodore*)
129625ad54caSmrg		vendor=cbm
1297e4da13eeSmacallan		;;
1298e4da13eeSmacallan	*)
1299e4da13eeSmacallan		;;
1300e4da13eeSmacallanesac
1301e4da13eeSmacallan
1302e4da13eeSmacallan# Decode manufacturer-specific aliases for certain operating systems.
1303e4da13eeSmacallan
130425ad54caSmrgif test x$basic_os != x
1305e4da13eeSmacallanthen
130625ad54caSmrg
130725ad54caSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
130825ad54caSmrg# set os.
130925ad54caSmrgcase $basic_os in
131025ad54caSmrg	gnu/linux*)
131125ad54caSmrg		kernel=linux
131225ad54caSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
131325ad54caSmrg		;;
131425ad54caSmrg	os2-emx)
131525ad54caSmrg		kernel=os2
131625ad54caSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
131725ad54caSmrg		;;
131825ad54caSmrg	nto-qnx*)
131925ad54caSmrg		kernel=nto
132025ad54caSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
132125ad54caSmrg		;;
132225ad54caSmrg	*-*)
132325ad54caSmrg		# shellcheck disable=SC2162
132425ad54caSmrg		saved_IFS=$IFS
132525ad54caSmrg		IFS="-" read kernel os <<EOF
132625ad54caSmrg$basic_os
132725ad54caSmrgEOF
132825ad54caSmrg		IFS=$saved_IFS
132925ad54caSmrg		;;
133025ad54caSmrg	# Default OS when just kernel was specified
133125ad54caSmrg	nto*)
133225ad54caSmrg		kernel=nto
133325ad54caSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
133425ad54caSmrg		;;
133525ad54caSmrg	linux*)
133625ad54caSmrg		kernel=linux
133725ad54caSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
133865d490d0Smrg		;;
133925ad54caSmrg	*)
134025ad54caSmrg		kernel=
134125ad54caSmrg		os=$basic_os
1342e4da13eeSmacallan		;;
134325ad54caSmrgesac
134425ad54caSmrg
134525ad54caSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
134625ad54caSmrg# etc.)
134725ad54caSmrgcase $os in
134825ad54caSmrg	# First match some system type aliases that might get confused
134925ad54caSmrg	# with valid system types.
135025ad54caSmrg	# solaris* is a basic system type, with this one exception.
135125ad54caSmrg	auroraux)
135225ad54caSmrg		os=auroraux
1353e4da13eeSmacallan		;;
135425ad54caSmrg	bluegene*)
135525ad54caSmrg		os=cnk
1356e4da13eeSmacallan		;;
135725ad54caSmrg	solaris1 | solaris1.*)
135825ad54caSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
1359e4da13eeSmacallan		;;
136025ad54caSmrg	solaris)
136125ad54caSmrg		os=solaris2
1362e4da13eeSmacallan		;;
136325ad54caSmrg	unixware*)
136425ad54caSmrg		os=sysv4.2uw
1365e4da13eeSmacallan		;;
136625ad54caSmrg	# es1800 is here to avoid being matched by es* (a different OS)
136725ad54caSmrg	es1800*)
136825ad54caSmrg		os=ose
1369e4da13eeSmacallan		;;
137025ad54caSmrg	# Some version numbers need modification
137125ad54caSmrg	chorusos*)
137225ad54caSmrg		os=chorusos
1373e4da13eeSmacallan		;;
137425ad54caSmrg	isc)
137525ad54caSmrg		os=isc2.2
1376e4da13eeSmacallan		;;
137725ad54caSmrg	sco6)
137825ad54caSmrg		os=sco5v6
1379e4da13eeSmacallan		;;
138025ad54caSmrg	sco5)
138125ad54caSmrg		os=sco3.2v5
1382e4da13eeSmacallan		;;
138325ad54caSmrg	sco4)
138425ad54caSmrg		os=sco3.2v4
1385e4da13eeSmacallan		;;
138625ad54caSmrg	sco3.2.[4-9]*)
138725ad54caSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
1388e4da13eeSmacallan		;;
138925ad54caSmrg	sco*v* | scout)
139025ad54caSmrg		# Don't match below
1391e4da13eeSmacallan		;;
139225ad54caSmrg	sco*)
139325ad54caSmrg		os=sco3.2v2
1394e4da13eeSmacallan		;;
139525ad54caSmrg	psos*)
139625ad54caSmrg		os=psos
1397e4da13eeSmacallan		;;
139825ad54caSmrg	qnx*)
139925ad54caSmrg		os=qnx
1400e4da13eeSmacallan		;;
140125ad54caSmrg	hiux*)
140225ad54caSmrg		os=hiuxwe2
1403e4da13eeSmacallan		;;
140425ad54caSmrg	lynx*178)
140525ad54caSmrg		os=lynxos178
1406e4da13eeSmacallan		;;
140725ad54caSmrg	lynx*5)
140825ad54caSmrg		os=lynxos5
1409e4da13eeSmacallan		;;
141025ad54caSmrg	lynxos*)
141125ad54caSmrg		# don't get caught up in next wildcard
1412e4da13eeSmacallan		;;
141325ad54caSmrg	lynx*)
141425ad54caSmrg		os=lynxos
1415e4da13eeSmacallan		;;
141625ad54caSmrg	mac[0-9]*)
141725ad54caSmrg		os=`echo "$os" | sed -e 's|mac|macos|'`
1418e4da13eeSmacallan		;;
141925ad54caSmrg	opened*)
142025ad54caSmrg		os=openedition
1421e4da13eeSmacallan		;;
142225ad54caSmrg	os400*)
142325ad54caSmrg		os=os400
1424e4da13eeSmacallan		;;
142525ad54caSmrg	sunos5*)
142625ad54caSmrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
1427e4da13eeSmacallan		;;
142825ad54caSmrg	sunos6*)
142925ad54caSmrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
1430e4da13eeSmacallan		;;
143125ad54caSmrg	wince*)
143225ad54caSmrg		os=wince
1433e4da13eeSmacallan		;;
143425ad54caSmrg	utek*)
143525ad54caSmrg		os=bsd
1436e4da13eeSmacallan		;;
143725ad54caSmrg	dynix*)
143825ad54caSmrg		os=bsd
143925ad54caSmrg		;;
144025ad54caSmrg	acis*)
144125ad54caSmrg		os=aos
1442e4da13eeSmacallan		;;
144325ad54caSmrg	atheos*)
144425ad54caSmrg		os=atheos
1445e4da13eeSmacallan		;;
144625ad54caSmrg	syllable*)
144725ad54caSmrg		os=syllable
1448e4da13eeSmacallan		;;
144925ad54caSmrg	386bsd)
145025ad54caSmrg		os=bsd
1451e4da13eeSmacallan		;;
145225ad54caSmrg	ctix* | uts*)
145325ad54caSmrg		os=sysv
1454e4da13eeSmacallan		;;
145525ad54caSmrg	nova*)
145625ad54caSmrg		os=rtmk-nova
1457e4da13eeSmacallan		;;
145825ad54caSmrg	ns2)
145925ad54caSmrg		os=nextstep2
1460e4da13eeSmacallan		;;
146125ad54caSmrg	# Preserve the version number of sinix5.
146225ad54caSmrg	sinix5.*)
146325ad54caSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
1464e4da13eeSmacallan		;;
146525ad54caSmrg	sinix*)
146625ad54caSmrg		os=sysv4
1467e4da13eeSmacallan		;;
146825ad54caSmrg	tpf*)
146925ad54caSmrg		os=tpf
1470e4da13eeSmacallan		;;
147125ad54caSmrg	triton*)
147225ad54caSmrg		os=sysv3
1473e4da13eeSmacallan		;;
147425ad54caSmrg	oss*)
147525ad54caSmrg		os=sysv3
1476e4da13eeSmacallan		;;
147725ad54caSmrg	svr4*)
147825ad54caSmrg		os=sysv4
1479e4da13eeSmacallan		;;
148025ad54caSmrg	svr3)
148125ad54caSmrg		os=sysv3
1482e4da13eeSmacallan		;;
148325ad54caSmrg	sysvr4)
148425ad54caSmrg		os=sysv4
1485e4da13eeSmacallan		;;
148625ad54caSmrg	ose*)
148725ad54caSmrg		os=ose
1488e4da13eeSmacallan		;;
148925ad54caSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
149025ad54caSmrg		os=mint
149165d490d0Smrg		;;
149225ad54caSmrg	dicos*)
149325ad54caSmrg		os=dicos
149465d490d0Smrg		;;
149525ad54caSmrg	pikeos*)
149625ad54caSmrg		# Until real need of OS specific support for
149725ad54caSmrg		# particular features comes up, bare metal
149825ad54caSmrg		# configurations are quite functional.
149925ad54caSmrg		case $cpu in
150025ad54caSmrg		    arm*)
150125ad54caSmrg			os=eabi
150225ad54caSmrg			;;
150325ad54caSmrg		    *)
150425ad54caSmrg			os=elf
150525ad54caSmrg			;;
150625ad54caSmrg		esac
1507e4da13eeSmacallan		;;
1508e4da13eeSmacallan	*)
150925ad54caSmrg		# No normalization, but not necessarily accepted, that comes below.
1510e4da13eeSmacallan		;;
1511e4da13eeSmacallanesac
151225ad54caSmrg
1513e4da13eeSmacallanelse
1514e4da13eeSmacallan
1515e4da13eeSmacallan# Here we handle the default operating systems that come with various machines.
1516e4da13eeSmacallan# The value should be what the vendor currently ships out the door with their
1517e4da13eeSmacallan# machine or put another way, the most popular os provided with the machine.
1518e4da13eeSmacallan
1519e4da13eeSmacallan# Note that if you're going to try to match "-MANUFACTURER" here (say,
1520e4da13eeSmacallan# "-sun"), then you have to tell the case statement up towards the top
1521e4da13eeSmacallan# that MANUFACTURER isn't an operating system.  Otherwise, code above
1522e4da13eeSmacallan# will signal an error saying that MANUFACTURER isn't an operating
1523e4da13eeSmacallan# system, and we'll never get to this point.
1524e4da13eeSmacallan
152525ad54caSmrgkernel=
152625ad54caSmrgcase $cpu-$vendor in
152765d490d0Smrg	score-*)
152825ad54caSmrg		os=elf
1529e4da13eeSmacallan		;;
153065d490d0Smrg	spu-*)
153125ad54caSmrg		os=elf
1532e4da13eeSmacallan		;;
1533e4da13eeSmacallan	*-acorn)
153425ad54caSmrg		os=riscix1.2
1535e4da13eeSmacallan		;;
1536e4da13eeSmacallan	arm*-rebel)
153725ad54caSmrg		kernel=linux
153825ad54caSmrg		os=gnu
1539e4da13eeSmacallan		;;
1540e4da13eeSmacallan	arm*-semi)
154125ad54caSmrg		os=aout
1542e4da13eeSmacallan		;;
154365d490d0Smrg	c4x-* | tic4x-*)
154425ad54caSmrg		os=coff
154525ad54caSmrg		;;
154625ad54caSmrg	c8051-*)
154725ad54caSmrg		os=elf
154825ad54caSmrg		;;
154925ad54caSmrg	clipper-intergraph)
155025ad54caSmrg		os=clix
155165d490d0Smrg		;;
155265d490d0Smrg	hexagon-*)
155325ad54caSmrg		os=elf
155465d490d0Smrg		;;
155565d490d0Smrg	tic54x-*)
155625ad54caSmrg		os=coff
155765d490d0Smrg		;;
155865d490d0Smrg	tic55x-*)
155925ad54caSmrg		os=coff
156065d490d0Smrg		;;
156165d490d0Smrg	tic6x-*)
156225ad54caSmrg		os=coff
1563e4da13eeSmacallan		;;
1564e4da13eeSmacallan	# This must come before the *-dec entry.
1565e4da13eeSmacallan	pdp10-*)
156625ad54caSmrg		os=tops20
1567e4da13eeSmacallan		;;
1568e4da13eeSmacallan	pdp11-*)
156925ad54caSmrg		os=none
1570e4da13eeSmacallan		;;
1571e4da13eeSmacallan	*-dec | vax-*)
157225ad54caSmrg		os=ultrix4.2
1573e4da13eeSmacallan		;;
1574e4da13eeSmacallan	m68*-apollo)
157525ad54caSmrg		os=domain
1576e4da13eeSmacallan		;;
1577e4da13eeSmacallan	i386-sun)
157825ad54caSmrg		os=sunos4.0.2
1579e4da13eeSmacallan		;;
1580e4da13eeSmacallan	m68000-sun)
158125ad54caSmrg		os=sunos3
1582e4da13eeSmacallan		;;
1583e4da13eeSmacallan	m68*-cisco)
158425ad54caSmrg		os=aout
1585e4da13eeSmacallan		;;
158665d490d0Smrg	mep-*)
158725ad54caSmrg		os=elf
1588e4da13eeSmacallan		;;
1589e4da13eeSmacallan	mips*-cisco)
159025ad54caSmrg		os=elf
1591e4da13eeSmacallan		;;
1592e4da13eeSmacallan	mips*-*)
159325ad54caSmrg		os=elf
1594e4da13eeSmacallan		;;
1595e4da13eeSmacallan	or32-*)
159625ad54caSmrg		os=coff
1597e4da13eeSmacallan		;;
1598e4da13eeSmacallan	*-tti)	# must be before sparc entry or we get the wrong os.
159925ad54caSmrg		os=sysv3
1600e4da13eeSmacallan		;;
1601e4da13eeSmacallan	sparc-* | *-sun)
160225ad54caSmrg		os=sunos4.1.1
1603e4da13eeSmacallan		;;
160425ad54caSmrg	pru-*)
160525ad54caSmrg		os=elf
1606e4da13eeSmacallan		;;
160725ad54caSmrg	*-be)
160825ad54caSmrg		os=beos
1609e4da13eeSmacallan		;;
1610e4da13eeSmacallan	*-ibm)
161125ad54caSmrg		os=aix
1612e4da13eeSmacallan		;;
161365d490d0Smrg	*-knuth)
161425ad54caSmrg		os=mmixware
1615e4da13eeSmacallan		;;
1616e4da13eeSmacallan	*-wec)
161725ad54caSmrg		os=proelf
1618e4da13eeSmacallan		;;
1619e4da13eeSmacallan	*-winbond)
162025ad54caSmrg		os=proelf
1621e4da13eeSmacallan		;;
1622e4da13eeSmacallan	*-oki)
162325ad54caSmrg		os=proelf
1624e4da13eeSmacallan		;;
1625e4da13eeSmacallan	*-hp)
162625ad54caSmrg		os=hpux
1627e4da13eeSmacallan		;;
1628e4da13eeSmacallan	*-hitachi)
162925ad54caSmrg		os=hiux
1630e4da13eeSmacallan		;;
1631e4da13eeSmacallan	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
163225ad54caSmrg		os=sysv
1633e4da13eeSmacallan		;;
1634e4da13eeSmacallan	*-cbm)
163525ad54caSmrg		os=amigaos
1636e4da13eeSmacallan		;;
1637e4da13eeSmacallan	*-dg)
163825ad54caSmrg		os=dgux
1639e4da13eeSmacallan		;;
1640e4da13eeSmacallan	*-dolphin)
164125ad54caSmrg		os=sysv3
1642e4da13eeSmacallan		;;
1643e4da13eeSmacallan	m68k-ccur)
164425ad54caSmrg		os=rtu
1645e4da13eeSmacallan		;;
1646e4da13eeSmacallan	m88k-omron*)
164725ad54caSmrg		os=luna
1648e4da13eeSmacallan		;;
164925ad54caSmrg	*-next)
165025ad54caSmrg		os=nextstep
1651e4da13eeSmacallan		;;
1652e4da13eeSmacallan	*-sequent)
165325ad54caSmrg		os=ptx
1654e4da13eeSmacallan		;;
1655e4da13eeSmacallan	*-crds)
165625ad54caSmrg		os=unos
1657e4da13eeSmacallan		;;
1658e4da13eeSmacallan	*-ns)
165925ad54caSmrg		os=genix
1660e4da13eeSmacallan		;;
1661e4da13eeSmacallan	i370-*)
166225ad54caSmrg		os=mvs
1663e4da13eeSmacallan		;;
1664e4da13eeSmacallan	*-gould)
166525ad54caSmrg		os=sysv
1666e4da13eeSmacallan		;;
1667e4da13eeSmacallan	*-highlevel)
166825ad54caSmrg		os=bsd
1669e4da13eeSmacallan		;;
1670e4da13eeSmacallan	*-encore)
167125ad54caSmrg		os=bsd
1672e4da13eeSmacallan		;;
1673e4da13eeSmacallan	*-sgi)
167425ad54caSmrg		os=irix
1675e4da13eeSmacallan		;;
1676e4da13eeSmacallan	*-siemens)
167725ad54caSmrg		os=sysv4
1678e4da13eeSmacallan		;;
1679e4da13eeSmacallan	*-masscomp)
168025ad54caSmrg		os=rtu
1681e4da13eeSmacallan		;;
1682e4da13eeSmacallan	f30[01]-fujitsu | f700-fujitsu)
168325ad54caSmrg		os=uxpv
1684e4da13eeSmacallan		;;
1685e4da13eeSmacallan	*-rom68k)
168625ad54caSmrg		os=coff
1687e4da13eeSmacallan		;;
1688e4da13eeSmacallan	*-*bug)
168925ad54caSmrg		os=coff
1690e4da13eeSmacallan		;;
1691e4da13eeSmacallan	*-apple)
169225ad54caSmrg		os=macos
1693e4da13eeSmacallan		;;
1694e4da13eeSmacallan	*-atari*)
169525ad54caSmrg		os=mint
169625ad54caSmrg		;;
169725ad54caSmrg	*-wrs)
169825ad54caSmrg		os=vxworks
1699e4da13eeSmacallan		;;
1700e4da13eeSmacallan	*)
170125ad54caSmrg		os=none
1702e4da13eeSmacallan		;;
1703e4da13eeSmacallanesac
170425ad54caSmrg
1705e4da13eeSmacallanfi
1706e4da13eeSmacallan
170725ad54caSmrg# Now, validate our (potentially fixed-up) OS.
170825ad54caSmrgcase $os in
170925ad54caSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
171025ad54caSmrg	musl* | newlib* | relibc* | uclibc*)
171125ad54caSmrg		;;
171225ad54caSmrg	# Likewise for "kernel-abi"
171325ad54caSmrg	eabi* | gnueabi*)
171425ad54caSmrg		;;
171525ad54caSmrg	# VxWorks passes extra cpu info in the 4th filed.
171625ad54caSmrg	simlinux | simwindows | spe)
171725ad54caSmrg		;;
171825ad54caSmrg	# Now accept the basic system types.
171925ad54caSmrg	# The portable systems comes first.
172025ad54caSmrg	# Each alternative MUST end in a * to match a version number.
172125ad54caSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
172225ad54caSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
172325ad54caSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
172425ad54caSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
172525ad54caSmrg	     | hiux* | abug | nacl* | netware* | windows* \
172625ad54caSmrg	     | os9* | macos* | osx* | ios* \
172725ad54caSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
172825ad54caSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
172925ad54caSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
173025ad54caSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
173125ad54caSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
173225ad54caSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
173325ad54caSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
173425ad54caSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
173525ad54caSmrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
173625ad54caSmrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
173725ad54caSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
173825ad54caSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
173925ad54caSmrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
174025ad54caSmrg	     | midipix* | mingw32* | mingw64* | mint* \
174125ad54caSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
174225ad54caSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
174325ad54caSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
174425ad54caSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
174525ad54caSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
174625ad54caSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
174725ad54caSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
174825ad54caSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
174925ad54caSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
175025ad54caSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
175125ad54caSmrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*)
175225ad54caSmrg		;;
175325ad54caSmrg	# This one is extra strict with allowed versions
175425ad54caSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
175525ad54caSmrg		# Don't forget version if it is 3.2v4 or newer.
175625ad54caSmrg		;;
175725ad54caSmrg	none)
175825ad54caSmrg		;;
175925ad54caSmrg	*)
176025ad54caSmrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
176125ad54caSmrg		exit 1
176225ad54caSmrg		;;
176325ad54caSmrgesac
176425ad54caSmrg
176525ad54caSmrg# As a final step for OS-related things, validate the OS-kernel combination
176625ad54caSmrg# (given a valid OS), if there is a kernel.
176725ad54caSmrgcase $kernel-$os in
176825ad54caSmrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
176925ad54caSmrg		   | linux-musl* | linux-relibc* | linux-uclibc* )
177025ad54caSmrg		;;
177125ad54caSmrg	uclinux-uclibc* )
177225ad54caSmrg		;;
177325ad54caSmrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
177425ad54caSmrg		# These are just libc implementations, not actual OSes, and thus
177525ad54caSmrg		# require a kernel.
177625ad54caSmrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
177725ad54caSmrg		exit 1
177825ad54caSmrg		;;
177925ad54caSmrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
178025ad54caSmrg		;;
178125ad54caSmrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
178225ad54caSmrg		;;
178325ad54caSmrg	nto-qnx*)
178425ad54caSmrg		;;
178525ad54caSmrg	os2-emx)
178625ad54caSmrg		;;
178725ad54caSmrg	*-eabi* | *-gnueabi*)
178825ad54caSmrg		;;
178925ad54caSmrg	-*)
179025ad54caSmrg		# Blank kernel with real OS is always fine.
179125ad54caSmrg		;;
179225ad54caSmrg	*-*)
179325ad54caSmrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
179425ad54caSmrg		exit 1
179525ad54caSmrg		;;
179625ad54caSmrgesac
179725ad54caSmrg
1798e4da13eeSmacallan# Here we handle the case where we know the os, and the CPU type, but not the
1799e4da13eeSmacallan# manufacturer.  We pick the logical manufacturer.
180025ad54caSmrgcase $vendor in
180125ad54caSmrg	unknown)
180225ad54caSmrg		case $cpu-$os in
180325ad54caSmrg			*-riscix*)
1804e4da13eeSmacallan				vendor=acorn
1805e4da13eeSmacallan				;;
180625ad54caSmrg			*-sunos*)
1807e4da13eeSmacallan				vendor=sun
1808e4da13eeSmacallan				;;
180925ad54caSmrg			*-cnk* | *-aix*)
1810e4da13eeSmacallan				vendor=ibm
1811e4da13eeSmacallan				;;
181225ad54caSmrg			*-beos*)
1813e4da13eeSmacallan				vendor=be
1814e4da13eeSmacallan				;;
181525ad54caSmrg			*-hpux*)
1816e4da13eeSmacallan				vendor=hp
1817e4da13eeSmacallan				;;
181825ad54caSmrg			*-mpeix*)
1819e4da13eeSmacallan				vendor=hp
1820e4da13eeSmacallan				;;
182125ad54caSmrg			*-hiux*)
1822e4da13eeSmacallan				vendor=hitachi
1823e4da13eeSmacallan				;;
182425ad54caSmrg			*-unos*)
1825e4da13eeSmacallan				vendor=crds
1826e4da13eeSmacallan				;;
182725ad54caSmrg			*-dgux*)
1828e4da13eeSmacallan				vendor=dg
1829e4da13eeSmacallan				;;
183025ad54caSmrg			*-luna*)
1831e4da13eeSmacallan				vendor=omron
1832e4da13eeSmacallan				;;
183325ad54caSmrg			*-genix*)
1834e4da13eeSmacallan				vendor=ns
1835e4da13eeSmacallan				;;
183625ad54caSmrg			*-clix*)
183725ad54caSmrg				vendor=intergraph
183825ad54caSmrg				;;
183925ad54caSmrg			*-mvs* | *-opened*)
184025ad54caSmrg				vendor=ibm
184125ad54caSmrg				;;
184225ad54caSmrg			*-os400*)
1843e4da13eeSmacallan				vendor=ibm
1844e4da13eeSmacallan				;;
184525ad54caSmrg			s390-* | s390x-*)
1846e4da13eeSmacallan				vendor=ibm
1847e4da13eeSmacallan				;;
184825ad54caSmrg			*-ptx*)
1849e4da13eeSmacallan				vendor=sequent
1850e4da13eeSmacallan				;;
185125ad54caSmrg			*-tpf*)
1852e4da13eeSmacallan				vendor=ibm
1853e4da13eeSmacallan				;;
185425ad54caSmrg			*-vxsim* | *-vxworks* | *-windiss*)
1855e4da13eeSmacallan				vendor=wrs
1856e4da13eeSmacallan				;;
185725ad54caSmrg			*-aux*)
1858e4da13eeSmacallan				vendor=apple
1859e4da13eeSmacallan				;;
186025ad54caSmrg			*-hms*)
1861e4da13eeSmacallan				vendor=hitachi
1862e4da13eeSmacallan				;;
186325ad54caSmrg			*-mpw* | *-macos*)
1864e4da13eeSmacallan				vendor=apple
1865e4da13eeSmacallan				;;
186625ad54caSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
1867e4da13eeSmacallan				vendor=atari
1868e4da13eeSmacallan				;;
186925ad54caSmrg			*-vos*)
1870e4da13eeSmacallan				vendor=stratus
1871e4da13eeSmacallan				;;
1872e4da13eeSmacallan		esac
1873e4da13eeSmacallan		;;
1874e4da13eeSmacallanesac
1875e4da13eeSmacallan
187625ad54caSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
1877e4da13eeSmacallanexit
1878e4da13eeSmacallan
1879e4da13eeSmacallan# Local variables:
188025ad54caSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
1881e4da13eeSmacallan# time-stamp-start: "timestamp='"
1882e4da13eeSmacallan# time-stamp-format: "%:y-%02m-%02d"
1883e4da13eeSmacallan# time-stamp-end: "'"
1884e4da13eeSmacallan# End:
1885