config.sub revision 84febdac
1c76ae52dSmrg#! /bin/sh
2c76ae52dSmrg# Configuration validation subroutine script.
384febdacSmrg#   Copyright 1992-2021 Free Software Foundation, Inc.
4c76ae52dSmrg
584febdacSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
684febdacSmrg
784febdacSmrgtimestamp='2021-07-03'
8c76ae52dSmrg
9dff01e5aSmrg# This file is free software; you can redistribute it and/or modify it
10dff01e5aSmrg# under the terms of the GNU General Public License as published by
11dff01e5aSmrg# the Free Software Foundation; either version 3 of the License, or
12c76ae52dSmrg# (at your option) any later version.
13c76ae52dSmrg#
14dff01e5aSmrg# This program is distributed in the hope that it will be useful, but
15dff01e5aSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of
16dff01e5aSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17dff01e5aSmrg# General Public License for more details.
18c76ae52dSmrg#
19c76ae52dSmrg# You should have received a copy of the GNU General Public License
208292847cSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
21c76ae52dSmrg#
22c76ae52dSmrg# As a special exception to the GNU General Public License, if you
23c76ae52dSmrg# distribute this file as part of a program that contains a
24c76ae52dSmrg# configuration script generated by Autoconf, you may include it under
25dff01e5aSmrg# the same distribution terms that you use for the rest of that
26dff01e5aSmrg# program.  This Exception is an additional permission under section 7
27dff01e5aSmrg# of the GNU General Public License, version 3 ("GPLv3").
28c76ae52dSmrg
29c76ae52dSmrg
308292847cSmrg# Please send patches to <config-patches@gnu.org>.
31c76ae52dSmrg#
32c76ae52dSmrg# Configuration subroutine to validate and canonicalize a configuration type.
33c76ae52dSmrg# Supply the specified configuration type as an argument.
34c76ae52dSmrg# If it is invalid, we print an error message on stderr and exit with code 1.
35c76ae52dSmrg# Otherwise, we print the canonical config type on stdout and succeed.
36c76ae52dSmrg
37c2939121Smrg# You can get the latest version of this script from:
3884febdacSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
39c2939121Smrg
40c76ae52dSmrg# This file is supposed to be the same for all GNU packages
41c76ae52dSmrg# and recognize all the CPU types, system types and aliases
42c76ae52dSmrg# that are meaningful with *any* GNU software.
43c76ae52dSmrg# Each package is responsible for reporting which valid configurations
44c76ae52dSmrg# it does not support.  The user should be able to distinguish
45c76ae52dSmrg# a failure to support a valid configuration from a meaningless
46c76ae52dSmrg# configuration.
47c76ae52dSmrg
48c76ae52dSmrg# The goal of this file is to map all the various variations of a given
49c76ae52dSmrg# machine specification into a single specification in the form:
50c76ae52dSmrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
51c76ae52dSmrg# or in some cases, the newer four-part form:
52c76ae52dSmrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
53c76ae52dSmrg# It is wrong to echo any other type of specification.
54c76ae52dSmrg
5584febdacSmrg# The "shellcheck disable" line above the timestamp inhibits complaints
5684febdacSmrg# about features and limitations of the classic Bourne shell that were
5784febdacSmrg# superseded or lifted in POSIX.  However, this script identifies a wide
5884febdacSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
5984febdacSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still
6084febdacSmrg# have a pre-POSIX /bin/sh.
6184febdacSmrg
62c76ae52dSmrgme=`echo "$0" | sed -e 's,.*/,,'`
63c76ae52dSmrg
64c76ae52dSmrgusage="\
658292847cSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
66c76ae52dSmrg
67c76ae52dSmrgCanonicalize a configuration name.
68c76ae52dSmrg
698292847cSmrgOptions:
70c76ae52dSmrg  -h, --help         print this help, then exit
71c76ae52dSmrg  -t, --time-stamp   print date of last modification, then exit
72c76ae52dSmrg  -v, --version      print version number, then exit
73c76ae52dSmrg
74c76ae52dSmrgReport bugs and patches to <config-patches@gnu.org>."
75c76ae52dSmrg
76c76ae52dSmrgversion="\
77c76ae52dSmrgGNU config.sub ($timestamp)
78c76ae52dSmrg
7984febdacSmrgCopyright 1992-2021 Free Software Foundation, Inc.
80c76ae52dSmrg
81c76ae52dSmrgThis is free software; see the source for copying conditions.  There is NO
82c76ae52dSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
83c76ae52dSmrg
84c76ae52dSmrghelp="
85c76ae52dSmrgTry \`$me --help' for more information."
86c76ae52dSmrg
87c76ae52dSmrg# Parse command line
88c76ae52dSmrgwhile test $# -gt 0 ; do
89c76ae52dSmrg  case $1 in
90c76ae52dSmrg    --time-stamp | --time* | -t )
91c76ae52dSmrg       echo "$timestamp" ; exit ;;
92c76ae52dSmrg    --version | -v )
93c76ae52dSmrg       echo "$version" ; exit ;;
94c76ae52dSmrg    --help | --h* | -h )
95c76ae52dSmrg       echo "$usage"; exit ;;
96c76ae52dSmrg    -- )     # Stop option processing
97c76ae52dSmrg       shift; break ;;
98c76ae52dSmrg    - )	# Use stdin as input.
99c76ae52dSmrg       break ;;
100c76ae52dSmrg    -* )
10184febdacSmrg       echo "$me: invalid option $1$help" >&2
102c76ae52dSmrg       exit 1 ;;
103c76ae52dSmrg
104c76ae52dSmrg    *local*)
105c76ae52dSmrg       # First pass through any local machine types.
1068292847cSmrg       echo "$1"
107c76ae52dSmrg       exit ;;
108c76ae52dSmrg
109c76ae52dSmrg    * )
110c76ae52dSmrg       break ;;
111c76ae52dSmrg  esac
112c76ae52dSmrgdone
113c76ae52dSmrg
114c76ae52dSmrgcase $# in
115c76ae52dSmrg 0) echo "$me: missing argument$help" >&2
116c76ae52dSmrg    exit 1;;
117c76ae52dSmrg 1) ;;
118c76ae52dSmrg *) echo "$me: too many arguments$help" >&2
119c76ae52dSmrg    exit 1;;
120c76ae52dSmrgesac
121c76ae52dSmrg
12284febdacSmrg# Split fields of configuration type
12384febdacSmrg# shellcheck disable=SC2162
12484febdacSmrgIFS="-" read field1 field2 field3 field4 <<EOF
12584febdacSmrg$1
12684febdacSmrgEOF
127c76ae52dSmrg
12884febdacSmrg# Separate into logical components for further validation
12984febdacSmrgcase $1 in
13084febdacSmrg	*-*-*-*-*)
13184febdacSmrg		echo Invalid configuration \`"$1"\': more than four components >&2
13284febdacSmrg		exit 1
133dff01e5aSmrg		;;
13484febdacSmrg	*-*-*-*)
13584febdacSmrg		basic_machine=$field1-$field2
13684febdacSmrg		basic_os=$field3-$field4
137c76ae52dSmrg		;;
13884febdacSmrg	*-*-*)
13984febdacSmrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
14084febdacSmrg		# parts
14184febdacSmrg		maybe_os=$field2-$field3
14284febdacSmrg		case $maybe_os in
14384febdacSmrg			nto-qnx* | linux-* | uclinux-uclibc* \
14484febdacSmrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
14584febdacSmrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
14684febdacSmrg			| storm-chaos* | os2-emx* | rtmk-nova*)
14784febdacSmrg				basic_machine=$field1
14884febdacSmrg				basic_os=$maybe_os
14984febdacSmrg				;;
15084febdacSmrg			android-linux)
15184febdacSmrg				basic_machine=$field1-unknown
15284febdacSmrg				basic_os=linux-android
15384febdacSmrg				;;
15484febdacSmrg			*)
15584febdacSmrg				basic_machine=$field1-$field2
15684febdacSmrg				basic_os=$field3
15784febdacSmrg				;;
15884febdacSmrg		esac
159c76ae52dSmrg		;;
16084febdacSmrg	*-*)
16184febdacSmrg		# A lone config we happen to match not fitting any pattern
16284febdacSmrg		case $field1-$field2 in
16384febdacSmrg			decstation-3100)
16484febdacSmrg				basic_machine=mips-dec
16584febdacSmrg				basic_os=
16684febdacSmrg				;;
16784febdacSmrg			*-*)
16884febdacSmrg				# Second component is usually, but not always the OS
16984febdacSmrg				case $field2 in
17084febdacSmrg					# Prevent following clause from handling this valid os
17184febdacSmrg					sun*os*)
17284febdacSmrg						basic_machine=$field1
17384febdacSmrg						basic_os=$field2
17484febdacSmrg						;;
17584febdacSmrg					# Manufacturers
17684febdacSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
17784febdacSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
17884febdacSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
17984febdacSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
18084febdacSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
18184febdacSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
18284febdacSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
18384febdacSmrg					| microblaze* | sim | cisco \
18484febdacSmrg					| oki | wec | wrs | winbond)
18584febdacSmrg						basic_machine=$field1-$field2
18684febdacSmrg						basic_os=
18784febdacSmrg						;;
18884febdacSmrg					*)
18984febdacSmrg						basic_machine=$field1
19084febdacSmrg						basic_os=$field2
19184febdacSmrg						;;
19284febdacSmrg				esac
19384febdacSmrg			;;
19484febdacSmrg		esac
195c76ae52dSmrg		;;
19684febdacSmrg	*)
19784febdacSmrg		# Convert single-component short-hands not valid as part of
19884febdacSmrg		# multi-component configurations.
19984febdacSmrg		case $field1 in
20084febdacSmrg			386bsd)
20184febdacSmrg				basic_machine=i386-pc
20284febdacSmrg				basic_os=bsd
20384febdacSmrg				;;
20484febdacSmrg			a29khif)
20584febdacSmrg				basic_machine=a29k-amd
20684febdacSmrg				basic_os=udi
20784febdacSmrg				;;
20884febdacSmrg			adobe68k)
20984febdacSmrg				basic_machine=m68010-adobe
21084febdacSmrg				basic_os=scout
21184febdacSmrg				;;
21284febdacSmrg			alliant)
21384febdacSmrg				basic_machine=fx80-alliant
21484febdacSmrg				basic_os=
21584febdacSmrg				;;
21684febdacSmrg			altos | altos3068)
21784febdacSmrg				basic_machine=m68k-altos
21884febdacSmrg				basic_os=
21984febdacSmrg				;;
22084febdacSmrg			am29k)
22184febdacSmrg				basic_machine=a29k-none
22284febdacSmrg				basic_os=bsd
22384febdacSmrg				;;
22484febdacSmrg			amdahl)
22584febdacSmrg				basic_machine=580-amdahl
22684febdacSmrg				basic_os=sysv
22784febdacSmrg				;;
22884febdacSmrg			amiga)
22984febdacSmrg				basic_machine=m68k-unknown
23084febdacSmrg				basic_os=
23184febdacSmrg				;;
23284febdacSmrg			amigaos | amigados)
23384febdacSmrg				basic_machine=m68k-unknown
23484febdacSmrg				basic_os=amigaos
23584febdacSmrg				;;
23684febdacSmrg			amigaunix | amix)
23784febdacSmrg				basic_machine=m68k-unknown
23884febdacSmrg				basic_os=sysv4
23984febdacSmrg				;;
24084febdacSmrg			apollo68)
24184febdacSmrg				basic_machine=m68k-apollo
24284febdacSmrg				basic_os=sysv
24384febdacSmrg				;;
24484febdacSmrg			apollo68bsd)
24584febdacSmrg				basic_machine=m68k-apollo
24684febdacSmrg				basic_os=bsd
24784febdacSmrg				;;
24884febdacSmrg			aros)
24984febdacSmrg				basic_machine=i386-pc
25084febdacSmrg				basic_os=aros
25184febdacSmrg				;;
25284febdacSmrg			aux)
25384febdacSmrg				basic_machine=m68k-apple
25484febdacSmrg				basic_os=aux
25584febdacSmrg				;;
25684febdacSmrg			balance)
25784febdacSmrg				basic_machine=ns32k-sequent
25884febdacSmrg				basic_os=dynix
25984febdacSmrg				;;
26084febdacSmrg			blackfin)
26184febdacSmrg				basic_machine=bfin-unknown
26284febdacSmrg				basic_os=linux
26384febdacSmrg				;;
26484febdacSmrg			cegcc)
26584febdacSmrg				basic_machine=arm-unknown
26684febdacSmrg				basic_os=cegcc
26784febdacSmrg				;;
26884febdacSmrg			convex-c1)
26984febdacSmrg				basic_machine=c1-convex
27084febdacSmrg				basic_os=bsd
27184febdacSmrg				;;
27284febdacSmrg			convex-c2)
27384febdacSmrg				basic_machine=c2-convex
27484febdacSmrg				basic_os=bsd
27584febdacSmrg				;;
27684febdacSmrg			convex-c32)
27784febdacSmrg				basic_machine=c32-convex
27884febdacSmrg				basic_os=bsd
27984febdacSmrg				;;
28084febdacSmrg			convex-c34)
28184febdacSmrg				basic_machine=c34-convex
28284febdacSmrg				basic_os=bsd
28384febdacSmrg				;;
28484febdacSmrg			convex-c38)
28584febdacSmrg				basic_machine=c38-convex
28684febdacSmrg				basic_os=bsd
28784febdacSmrg				;;
28884febdacSmrg			cray)
28984febdacSmrg				basic_machine=j90-cray
29084febdacSmrg				basic_os=unicos
29184febdacSmrg				;;
29284febdacSmrg			crds | unos)
29384febdacSmrg				basic_machine=m68k-crds
29484febdacSmrg				basic_os=
29584febdacSmrg				;;
29684febdacSmrg			da30)
29784febdacSmrg				basic_machine=m68k-da30
29884febdacSmrg				basic_os=
29984febdacSmrg				;;
30084febdacSmrg			decstation | pmax | pmin | dec3100 | decstatn)
30184febdacSmrg				basic_machine=mips-dec
30284febdacSmrg				basic_os=
30384febdacSmrg				;;
30484febdacSmrg			delta88)
30584febdacSmrg				basic_machine=m88k-motorola
30684febdacSmrg				basic_os=sysv3
30784febdacSmrg				;;
30884febdacSmrg			dicos)
30984febdacSmrg				basic_machine=i686-pc
31084febdacSmrg				basic_os=dicos
31184febdacSmrg				;;
31284febdacSmrg			djgpp)
31384febdacSmrg				basic_machine=i586-pc
31484febdacSmrg				basic_os=msdosdjgpp
31584febdacSmrg				;;
31684febdacSmrg			ebmon29k)
31784febdacSmrg				basic_machine=a29k-amd
31884febdacSmrg				basic_os=ebmon
31984febdacSmrg				;;
32084febdacSmrg			es1800 | OSE68k | ose68k | ose | OSE)
32184febdacSmrg				basic_machine=m68k-ericsson
32284febdacSmrg				basic_os=ose
32384febdacSmrg				;;
32484febdacSmrg			gmicro)
32584febdacSmrg				basic_machine=tron-gmicro
32684febdacSmrg				basic_os=sysv
32784febdacSmrg				;;
32884febdacSmrg			go32)
32984febdacSmrg				basic_machine=i386-pc
33084febdacSmrg				basic_os=go32
33184febdacSmrg				;;
33284febdacSmrg			h8300hms)
33384febdacSmrg				basic_machine=h8300-hitachi
33484febdacSmrg				basic_os=hms
33584febdacSmrg				;;
33684febdacSmrg			h8300xray)
33784febdacSmrg				basic_machine=h8300-hitachi
33884febdacSmrg				basic_os=xray
33984febdacSmrg				;;
34084febdacSmrg			h8500hms)
34184febdacSmrg				basic_machine=h8500-hitachi
34284febdacSmrg				basic_os=hms
34384febdacSmrg				;;
34484febdacSmrg			harris)
34584febdacSmrg				basic_machine=m88k-harris
34684febdacSmrg				basic_os=sysv3
34784febdacSmrg				;;
34884febdacSmrg			hp300 | hp300hpux)
34984febdacSmrg				basic_machine=m68k-hp
35084febdacSmrg				basic_os=hpux
35184febdacSmrg				;;
35284febdacSmrg			hp300bsd)
35384febdacSmrg				basic_machine=m68k-hp
35484febdacSmrg				basic_os=bsd
35584febdacSmrg				;;
35684febdacSmrg			hppaosf)
35784febdacSmrg				basic_machine=hppa1.1-hp
35884febdacSmrg				basic_os=osf
35984febdacSmrg				;;
36084febdacSmrg			hppro)
36184febdacSmrg				basic_machine=hppa1.1-hp
36284febdacSmrg				basic_os=proelf
36384febdacSmrg				;;
36484febdacSmrg			i386mach)
36584febdacSmrg				basic_machine=i386-mach
36684febdacSmrg				basic_os=mach
36784febdacSmrg				;;
36884febdacSmrg			isi68 | isi)
36984febdacSmrg				basic_machine=m68k-isi
37084febdacSmrg				basic_os=sysv
37184febdacSmrg				;;
37284febdacSmrg			m68knommu)
37384febdacSmrg				basic_machine=m68k-unknown
37484febdacSmrg				basic_os=linux
37584febdacSmrg				;;
37684febdacSmrg			magnum | m3230)
37784febdacSmrg				basic_machine=mips-mips
37884febdacSmrg				basic_os=sysv
37984febdacSmrg				;;
38084febdacSmrg			merlin)
38184febdacSmrg				basic_machine=ns32k-utek
38284febdacSmrg				basic_os=sysv
38384febdacSmrg				;;
38484febdacSmrg			mingw64)
38584febdacSmrg				basic_machine=x86_64-pc
38684febdacSmrg				basic_os=mingw64
38784febdacSmrg				;;
38884febdacSmrg			mingw32)
38984febdacSmrg				basic_machine=i686-pc
39084febdacSmrg				basic_os=mingw32
39184febdacSmrg				;;
39284febdacSmrg			mingw32ce)
39384febdacSmrg				basic_machine=arm-unknown
39484febdacSmrg				basic_os=mingw32ce
39584febdacSmrg				;;
39684febdacSmrg			monitor)
39784febdacSmrg				basic_machine=m68k-rom68k
39884febdacSmrg				basic_os=coff
39984febdacSmrg				;;
40084febdacSmrg			morphos)
40184febdacSmrg				basic_machine=powerpc-unknown
40284febdacSmrg				basic_os=morphos
40384febdacSmrg				;;
40484febdacSmrg			moxiebox)
40584febdacSmrg				basic_machine=moxie-unknown
40684febdacSmrg				basic_os=moxiebox
40784febdacSmrg				;;
40884febdacSmrg			msdos)
40984febdacSmrg				basic_machine=i386-pc
41084febdacSmrg				basic_os=msdos
41184febdacSmrg				;;
41284febdacSmrg			msys)
41384febdacSmrg				basic_machine=i686-pc
41484febdacSmrg				basic_os=msys
41584febdacSmrg				;;
41684febdacSmrg			mvs)
41784febdacSmrg				basic_machine=i370-ibm
41884febdacSmrg				basic_os=mvs
41984febdacSmrg				;;
42084febdacSmrg			nacl)
42184febdacSmrg				basic_machine=le32-unknown
42284febdacSmrg				basic_os=nacl
42384febdacSmrg				;;
42484febdacSmrg			ncr3000)
42584febdacSmrg				basic_machine=i486-ncr
42684febdacSmrg				basic_os=sysv4
42784febdacSmrg				;;
42884febdacSmrg			netbsd386)
42984febdacSmrg				basic_machine=i386-pc
43084febdacSmrg				basic_os=netbsd
43184febdacSmrg				;;
43284febdacSmrg			netwinder)
43384febdacSmrg				basic_machine=armv4l-rebel
43484febdacSmrg				basic_os=linux
43584febdacSmrg				;;
43684febdacSmrg			news | news700 | news800 | news900)
43784febdacSmrg				basic_machine=m68k-sony
43884febdacSmrg				basic_os=newsos
43984febdacSmrg				;;
44084febdacSmrg			news1000)
44184febdacSmrg				basic_machine=m68030-sony
44284febdacSmrg				basic_os=newsos
44384febdacSmrg				;;
44484febdacSmrg			necv70)
44584febdacSmrg				basic_machine=v70-nec
44684febdacSmrg				basic_os=sysv
44784febdacSmrg				;;
44884febdacSmrg			nh3000)
44984febdacSmrg				basic_machine=m68k-harris
45084febdacSmrg				basic_os=cxux
45184febdacSmrg				;;
45284febdacSmrg			nh[45]000)
45384febdacSmrg				basic_machine=m88k-harris
45484febdacSmrg				basic_os=cxux
45584febdacSmrg				;;
45684febdacSmrg			nindy960)
45784febdacSmrg				basic_machine=i960-intel
45884febdacSmrg				basic_os=nindy
45984febdacSmrg				;;
46084febdacSmrg			mon960)
46184febdacSmrg				basic_machine=i960-intel
46284febdacSmrg				basic_os=mon960
46384febdacSmrg				;;
46484febdacSmrg			nonstopux)
46584febdacSmrg				basic_machine=mips-compaq
46684febdacSmrg				basic_os=nonstopux
46784febdacSmrg				;;
46884febdacSmrg			os400)
46984febdacSmrg				basic_machine=powerpc-ibm
47084febdacSmrg				basic_os=os400
47184febdacSmrg				;;
47284febdacSmrg			OSE68000 | ose68000)
47384febdacSmrg				basic_machine=m68000-ericsson
47484febdacSmrg				basic_os=ose
47584febdacSmrg				;;
47684febdacSmrg			os68k)
47784febdacSmrg				basic_machine=m68k-none
47884febdacSmrg				basic_os=os68k
47984febdacSmrg				;;
48084febdacSmrg			paragon)
48184febdacSmrg				basic_machine=i860-intel
48284febdacSmrg				basic_os=osf
48384febdacSmrg				;;
48484febdacSmrg			parisc)
48584febdacSmrg				basic_machine=hppa-unknown
48684febdacSmrg				basic_os=linux
48784febdacSmrg				;;
48884febdacSmrg			psp)
48984febdacSmrg				basic_machine=mipsallegrexel-sony
49084febdacSmrg				basic_os=psp
49184febdacSmrg				;;
49284febdacSmrg			pw32)
49384febdacSmrg				basic_machine=i586-unknown
49484febdacSmrg				basic_os=pw32
49584febdacSmrg				;;
49684febdacSmrg			rdos | rdos64)
49784febdacSmrg				basic_machine=x86_64-pc
49884febdacSmrg				basic_os=rdos
49984febdacSmrg				;;
50084febdacSmrg			rdos32)
50184febdacSmrg				basic_machine=i386-pc
50284febdacSmrg				basic_os=rdos
50384febdacSmrg				;;
50484febdacSmrg			rom68k)
50584febdacSmrg				basic_machine=m68k-rom68k
50684febdacSmrg				basic_os=coff
50784febdacSmrg				;;
50884febdacSmrg			sa29200)
50984febdacSmrg				basic_machine=a29k-amd
51084febdacSmrg				basic_os=udi
51184febdacSmrg				;;
51284febdacSmrg			sei)
51384febdacSmrg				basic_machine=mips-sei
51484febdacSmrg				basic_os=seiux
51584febdacSmrg				;;
51684febdacSmrg			sequent)
51784febdacSmrg				basic_machine=i386-sequent
51884febdacSmrg				basic_os=
51984febdacSmrg				;;
52084febdacSmrg			sps7)
52184febdacSmrg				basic_machine=m68k-bull
52284febdacSmrg				basic_os=sysv2
52384febdacSmrg				;;
52484febdacSmrg			st2000)
52584febdacSmrg				basic_machine=m68k-tandem
52684febdacSmrg				basic_os=
52784febdacSmrg				;;
52884febdacSmrg			stratus)
52984febdacSmrg				basic_machine=i860-stratus
53084febdacSmrg				basic_os=sysv4
53184febdacSmrg				;;
53284febdacSmrg			sun2)
53384febdacSmrg				basic_machine=m68000-sun
53484febdacSmrg				basic_os=
53584febdacSmrg				;;
53684febdacSmrg			sun2os3)
53784febdacSmrg				basic_machine=m68000-sun
53884febdacSmrg				basic_os=sunos3
53984febdacSmrg				;;
54084febdacSmrg			sun2os4)
54184febdacSmrg				basic_machine=m68000-sun
54284febdacSmrg				basic_os=sunos4
54384febdacSmrg				;;
54484febdacSmrg			sun3)
54584febdacSmrg				basic_machine=m68k-sun
54684febdacSmrg				basic_os=
54784febdacSmrg				;;
54884febdacSmrg			sun3os3)
54984febdacSmrg				basic_machine=m68k-sun
55084febdacSmrg				basic_os=sunos3
55184febdacSmrg				;;
55284febdacSmrg			sun3os4)
55384febdacSmrg				basic_machine=m68k-sun
55484febdacSmrg				basic_os=sunos4
55584febdacSmrg				;;
55684febdacSmrg			sun4)
55784febdacSmrg				basic_machine=sparc-sun
55884febdacSmrg				basic_os=
55984febdacSmrg				;;
56084febdacSmrg			sun4os3)
56184febdacSmrg				basic_machine=sparc-sun
56284febdacSmrg				basic_os=sunos3
56384febdacSmrg				;;
56484febdacSmrg			sun4os4)
56584febdacSmrg				basic_machine=sparc-sun
56684febdacSmrg				basic_os=sunos4
56784febdacSmrg				;;
56884febdacSmrg			sun4sol2)
56984febdacSmrg				basic_machine=sparc-sun
57084febdacSmrg				basic_os=solaris2
57184febdacSmrg				;;
57284febdacSmrg			sun386 | sun386i | roadrunner)
57384febdacSmrg				basic_machine=i386-sun
57484febdacSmrg				basic_os=
57584febdacSmrg				;;
57684febdacSmrg			sv1)
57784febdacSmrg				basic_machine=sv1-cray
57884febdacSmrg				basic_os=unicos
57984febdacSmrg				;;
58084febdacSmrg			symmetry)
58184febdacSmrg				basic_machine=i386-sequent
58284febdacSmrg				basic_os=dynix
58384febdacSmrg				;;
58484febdacSmrg			t3e)
58584febdacSmrg				basic_machine=alphaev5-cray
58684febdacSmrg				basic_os=unicos
58784febdacSmrg				;;
58884febdacSmrg			t90)
58984febdacSmrg				basic_machine=t90-cray
59084febdacSmrg				basic_os=unicos
59184febdacSmrg				;;
59284febdacSmrg			toad1)
59384febdacSmrg				basic_machine=pdp10-xkl
59484febdacSmrg				basic_os=tops20
59584febdacSmrg				;;
59684febdacSmrg			tpf)
59784febdacSmrg				basic_machine=s390x-ibm
59884febdacSmrg				basic_os=tpf
59984febdacSmrg				;;
60084febdacSmrg			udi29k)
60184febdacSmrg				basic_machine=a29k-amd
60284febdacSmrg				basic_os=udi
60384febdacSmrg				;;
60484febdacSmrg			ultra3)
60584febdacSmrg				basic_machine=a29k-nyu
60684febdacSmrg				basic_os=sym1
60784febdacSmrg				;;
60884febdacSmrg			v810 | necv810)
60984febdacSmrg				basic_machine=v810-nec
61084febdacSmrg				basic_os=none
61184febdacSmrg				;;
61284febdacSmrg			vaxv)
61384febdacSmrg				basic_machine=vax-dec
61484febdacSmrg				basic_os=sysv
61584febdacSmrg				;;
61684febdacSmrg			vms)
61784febdacSmrg				basic_machine=vax-dec
61884febdacSmrg				basic_os=vms
61984febdacSmrg				;;
62084febdacSmrg			vsta)
62184febdacSmrg				basic_machine=i386-pc
62284febdacSmrg				basic_os=vsta
62384febdacSmrg				;;
62484febdacSmrg			vxworks960)
62584febdacSmrg				basic_machine=i960-wrs
62684febdacSmrg				basic_os=vxworks
62784febdacSmrg				;;
62884febdacSmrg			vxworks68)
62984febdacSmrg				basic_machine=m68k-wrs
63084febdacSmrg				basic_os=vxworks
63184febdacSmrg				;;
63284febdacSmrg			vxworks29k)
63384febdacSmrg				basic_machine=a29k-wrs
63484febdacSmrg				basic_os=vxworks
63584febdacSmrg				;;
63684febdacSmrg			xbox)
63784febdacSmrg				basic_machine=i686-pc
63884febdacSmrg				basic_os=mingw32
63984febdacSmrg				;;
64084febdacSmrg			ymp)
64184febdacSmrg				basic_machine=ymp-cray
64284febdacSmrg				basic_os=unicos
64384febdacSmrg				;;
64484febdacSmrg			*)
64584febdacSmrg				basic_machine=$1
64684febdacSmrg				basic_os=
64784febdacSmrg				;;
64884febdacSmrg		esac
649c76ae52dSmrg		;;
650c76ae52dSmrgesac
651c76ae52dSmrg
65284febdacSmrg# Decode 1-component or ad-hoc basic machines
653c76ae52dSmrgcase $basic_machine in
65484febdacSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
65584febdacSmrg	# some cases the only manufacturer, in others, it is the most popular.
65684febdacSmrg	w89k)
65784febdacSmrg		cpu=hppa1.1
65884febdacSmrg		vendor=winbond
6598292847cSmrg		;;
66084febdacSmrg	op50n)
66184febdacSmrg		cpu=hppa1.1
66284febdacSmrg		vendor=oki
663c76ae52dSmrg		;;
66484febdacSmrg	op60c)
66584febdacSmrg		cpu=hppa1.1
66684febdacSmrg		vendor=oki
667c76ae52dSmrg		;;
66884febdacSmrg	ibm*)
66984febdacSmrg		cpu=i370
67084febdacSmrg		vendor=ibm
671c76ae52dSmrg		;;
67284febdacSmrg	orion105)
67384febdacSmrg		cpu=clipper
67484febdacSmrg		vendor=highlevel
675dff01e5aSmrg		;;
67684febdacSmrg	mac | mpw | mac-mpw)
67784febdacSmrg		cpu=m68k
67884febdacSmrg		vendor=apple
6792836776bSmrg		;;
68084febdacSmrg	pmac | pmac-mpw)
68184febdacSmrg		cpu=powerpc
68284febdacSmrg		vendor=apple
6832836776bSmrg		;;
6842836776bSmrg
685c76ae52dSmrg	# Recognize the various machine names and aliases which stand
686c76ae52dSmrg	# for a CPU type and a company and sometimes even an OS.
687c76ae52dSmrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
68884febdacSmrg		cpu=m68000
68984febdacSmrg		vendor=att
690c76ae52dSmrg		;;
691c76ae52dSmrg	3b*)
69284febdacSmrg		cpu=we32k
69384febdacSmrg		vendor=att
6940d590c07Smrg		;;
695c2939121Smrg	bluegene*)
69684febdacSmrg		cpu=powerpc
69784febdacSmrg		vendor=ibm
69884febdacSmrg		basic_os=cnk
699c76ae52dSmrg		;;
700c76ae52dSmrg	decsystem10* | dec10*)
70184febdacSmrg		cpu=pdp10
70284febdacSmrg		vendor=dec
70384febdacSmrg		basic_os=tops10
704c76ae52dSmrg		;;
705c76ae52dSmrg	decsystem20* | dec20*)
70684febdacSmrg		cpu=pdp10
70784febdacSmrg		vendor=dec
70884febdacSmrg		basic_os=tops20
709c76ae52dSmrg		;;
710c76ae52dSmrg	delta | 3300 | motorola-3300 | motorola-delta \
711c76ae52dSmrg	      | 3300-motorola | delta-motorola)
71284febdacSmrg		cpu=m68k
71384febdacSmrg		vendor=motorola
714c76ae52dSmrg		;;
7158292847cSmrg	dpx2*)
71684febdacSmrg		cpu=m68k
71784febdacSmrg		vendor=bull
71884febdacSmrg		basic_os=sysv3
719c76ae52dSmrg		;;
720c76ae52dSmrg	encore | umax | mmax)
72184febdacSmrg		cpu=ns32k
72284febdacSmrg		vendor=encore
723c76ae52dSmrg		;;
72484febdacSmrg	elxsi)
72584febdacSmrg		cpu=elxsi
72684febdacSmrg		vendor=elxsi
72784febdacSmrg		basic_os=${basic_os:-bsd}
728c76ae52dSmrg		;;
729c76ae52dSmrg	fx2800)
73084febdacSmrg		cpu=i860
73184febdacSmrg		vendor=alliant
732c76ae52dSmrg		;;
733c76ae52dSmrg	genix)
73484febdacSmrg		cpu=ns32k
73584febdacSmrg		vendor=ns
736c76ae52dSmrg		;;
737c76ae52dSmrg	h3050r* | hiux*)
73884febdacSmrg		cpu=hppa1.1
73984febdacSmrg		vendor=hitachi
74084febdacSmrg		basic_os=hiuxwe2
741c76ae52dSmrg		;;
742c76ae52dSmrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
74384febdacSmrg		cpu=hppa1.0
74484febdacSmrg		vendor=hp
745c76ae52dSmrg		;;
746c76ae52dSmrg	hp9k2[0-9][0-9] | hp9k31[0-9])
74784febdacSmrg		cpu=m68000
74884febdacSmrg		vendor=hp
749c76ae52dSmrg		;;
750c76ae52dSmrg	hp9k3[2-9][0-9])
75184febdacSmrg		cpu=m68k
75284febdacSmrg		vendor=hp
753c76ae52dSmrg		;;
754c76ae52dSmrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
75584febdacSmrg		cpu=hppa1.0
75684febdacSmrg		vendor=hp
757c76ae52dSmrg		;;
758c76ae52dSmrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
75984febdacSmrg		cpu=hppa1.1
76084febdacSmrg		vendor=hp
761c76ae52dSmrg		;;
762c76ae52dSmrg	hp9k78[0-9] | hp78[0-9])
763c76ae52dSmrg		# FIXME: really hppa2.0-hp
76484febdacSmrg		cpu=hppa1.1
76584febdacSmrg		vendor=hp
766c76ae52dSmrg		;;
767c76ae52dSmrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
768c76ae52dSmrg		# FIXME: really hppa2.0-hp
76984febdacSmrg		cpu=hppa1.1
77084febdacSmrg		vendor=hp
771c76ae52dSmrg		;;
772c76ae52dSmrg	hp9k8[0-9][13679] | hp8[0-9][13679])
77384febdacSmrg		cpu=hppa1.1
77484febdacSmrg		vendor=hp
775c76ae52dSmrg		;;
776c76ae52dSmrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
77784febdacSmrg		cpu=hppa1.0
77884febdacSmrg		vendor=hp
779c76ae52dSmrg		;;
780c76ae52dSmrg	i*86v32)
78184febdacSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
78284febdacSmrg		vendor=pc
78384febdacSmrg		basic_os=sysv32
784c76ae52dSmrg		;;
785c76ae52dSmrg	i*86v4*)
78684febdacSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
78784febdacSmrg		vendor=pc
78884febdacSmrg		basic_os=sysv4
789c76ae52dSmrg		;;
790c76ae52dSmrg	i*86v)
79184febdacSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79284febdacSmrg		vendor=pc
79384febdacSmrg		basic_os=sysv
794c76ae52dSmrg		;;
795c76ae52dSmrg	i*86sol2)
79684febdacSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79784febdacSmrg		vendor=pc
79884febdacSmrg		basic_os=solaris2
799c76ae52dSmrg		;;
80084febdacSmrg	j90 | j90-cray)
80184febdacSmrg		cpu=j90
80284febdacSmrg		vendor=cray
80384febdacSmrg		basic_os=${basic_os:-unicos}
804c76ae52dSmrg		;;
805c76ae52dSmrg	iris | iris4d)
80684febdacSmrg		cpu=mips
80784febdacSmrg		vendor=sgi
80884febdacSmrg		case $basic_os in
80984febdacSmrg		    irix*)
810c76ae52dSmrg			;;
811c76ae52dSmrg		    *)
81284febdacSmrg			basic_os=irix4
813c76ae52dSmrg			;;
814c76ae52dSmrg		esac
815c76ae52dSmrg		;;
816c76ae52dSmrg	miniframe)
81784febdacSmrg		cpu=m68000
81884febdacSmrg		vendor=convergent
819c76ae52dSmrg		;;
82084febdacSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
82184febdacSmrg		cpu=m68k
82284febdacSmrg		vendor=atari
82384febdacSmrg		basic_os=mint
824c76ae52dSmrg		;;
825c76ae52dSmrg	news-3600 | risc-news)
82684febdacSmrg		cpu=mips
82784febdacSmrg		vendor=sony
82884febdacSmrg		basic_os=newsos
829c76ae52dSmrg		;;
8308292847cSmrg	next | m*-next)
83184febdacSmrg		cpu=m68k
83284febdacSmrg		vendor=next
83384febdacSmrg		case $basic_os in
83484febdacSmrg		    openstep*)
83584febdacSmrg		        ;;
83684febdacSmrg		    nextstep*)
837c76ae52dSmrg			;;
83884febdacSmrg		    ns2*)
83984febdacSmrg		      basic_os=nextstep2
840c76ae52dSmrg			;;
841c76ae52dSmrg		    *)
84284febdacSmrg		      basic_os=nextstep3
843c76ae52dSmrg			;;
844c76ae52dSmrg		esac
845c76ae52dSmrg		;;
846c76ae52dSmrg	np1)
84784febdacSmrg		cpu=np1
84884febdacSmrg		vendor=gould
8498292847cSmrg		;;
850c76ae52dSmrg	op50n-* | op60c-*)
85184febdacSmrg		cpu=hppa1.1
85284febdacSmrg		vendor=oki
85384febdacSmrg		basic_os=proelf
854c76ae52dSmrg		;;
855c76ae52dSmrg	pa-hitachi)
85684febdacSmrg		cpu=hppa1.1
85784febdacSmrg		vendor=hitachi
85884febdacSmrg		basic_os=hiuxwe2
8590d590c07Smrg		;;
860c76ae52dSmrg	pbd)
86184febdacSmrg		cpu=sparc
86284febdacSmrg		vendor=tti
863c76ae52dSmrg		;;
864c76ae52dSmrg	pbb)
86584febdacSmrg		cpu=m68k
86684febdacSmrg		vendor=tti
867c76ae52dSmrg		;;
86884febdacSmrg	pc532)
86984febdacSmrg		cpu=ns32k
87084febdacSmrg		vendor=pc532
871c76ae52dSmrg		;;
872c76ae52dSmrg	pn)
87384febdacSmrg		cpu=pn
87484febdacSmrg		vendor=gould
875c76ae52dSmrg		;;
87684febdacSmrg	power)
87784febdacSmrg		cpu=power
87884febdacSmrg		vendor=ibm
879c76ae52dSmrg		;;
88084febdacSmrg	ps2)
88184febdacSmrg		cpu=i386
88284febdacSmrg		vendor=ibm
883c76ae52dSmrg		;;
88484febdacSmrg	rm[46]00)
88584febdacSmrg		cpu=mips
88684febdacSmrg		vendor=siemens
887c76ae52dSmrg		;;
88884febdacSmrg	rtpc | rtpc-*)
88984febdacSmrg		cpu=romp
89084febdacSmrg		vendor=ibm
891c76ae52dSmrg		;;
89284febdacSmrg	sde)
89384febdacSmrg		cpu=mipsisa32
89484febdacSmrg		vendor=sde
89584febdacSmrg		basic_os=${basic_os:-elf}
896c76ae52dSmrg		;;
89784febdacSmrg	simso-wrs)
89884febdacSmrg		cpu=sparclite
89984febdacSmrg		vendor=wrs
90084febdacSmrg		basic_os=vxworks
901c76ae52dSmrg		;;
90284febdacSmrg	tower | tower-32)
90384febdacSmrg		cpu=m68k
90484febdacSmrg		vendor=ncr
905c76ae52dSmrg		;;
90684febdacSmrg	vpp*|vx|vx-*)
90784febdacSmrg		cpu=f301
90884febdacSmrg		vendor=fujitsu
909dff01e5aSmrg		;;
91084febdacSmrg	w65)
91184febdacSmrg		cpu=w65
91284febdacSmrg		vendor=wdc
913c76ae52dSmrg		;;
91484febdacSmrg	w89k-*)
91584febdacSmrg		cpu=hppa1.1
91684febdacSmrg		vendor=winbond
91784febdacSmrg		basic_os=proelf
918c76ae52dSmrg		;;
91984febdacSmrg	none)
92084febdacSmrg		cpu=none
92184febdacSmrg		vendor=none
922c76ae52dSmrg		;;
92384febdacSmrg	leon|leon[3-9])
92484febdacSmrg		cpu=sparc
92584febdacSmrg		vendor=$basic_machine
926c76ae52dSmrg		;;
92784febdacSmrg	leon-*|leon[3-9]-*)
92884febdacSmrg		cpu=sparc
92984febdacSmrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
930c76ae52dSmrg		;;
93184febdacSmrg
93284febdacSmrg	*-*)
93384febdacSmrg		# shellcheck disable=SC2162
93484febdacSmrg		IFS="-" read cpu vendor <<EOF
93584febdacSmrg$basic_machine
93684febdacSmrgEOF
937c76ae52dSmrg		;;
93884febdacSmrg	# We use `pc' rather than `unknown'
93984febdacSmrg	# because (1) that's what they normally are, and
94084febdacSmrg	# (2) the word "unknown" tends to confuse beginning users.
94184febdacSmrg	i*86 | x86_64)
94284febdacSmrg		cpu=$basic_machine
94384febdacSmrg		vendor=pc
944c76ae52dSmrg		;;
94584febdacSmrg	# These rules are duplicated from below for sake of the special case above;
94684febdacSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
94784febdacSmrg	pc98)
94884febdacSmrg		cpu=i386
94984febdacSmrg		vendor=pc
950c76ae52dSmrg		;;
95184febdacSmrg	x64 | amd64)
95284febdacSmrg		cpu=x86_64
95384febdacSmrg		vendor=pc
954c76ae52dSmrg		;;
95584febdacSmrg	# Recognize the basic CPU types without company name.
95684febdacSmrg	*)
95784febdacSmrg		cpu=$basic_machine
95884febdacSmrg		vendor=unknown
9590d590c07Smrg		;;
96084febdacSmrgesac
96184febdacSmrg
96284febdacSmrgunset -v basic_machine
96384febdacSmrg
96484febdacSmrg# Decode basic machines in the full and proper CPU-Company form.
96584febdacSmrgcase $cpu-$vendor in
96684febdacSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
96784febdacSmrg	# some cases the only manufacturer, in others, it is the most popular.
96884febdacSmrg	craynv-unknown)
96984febdacSmrg		vendor=cray
97084febdacSmrg		basic_os=${basic_os:-unicosmp}
971c76ae52dSmrg		;;
97284febdacSmrg	c90-unknown | c90-cray)
97384febdacSmrg		vendor=cray
97484febdacSmrg		basic_os=${Basic_os:-unicos}
975c76ae52dSmrg		;;
97684febdacSmrg	fx80-unknown)
97784febdacSmrg		vendor=alliant
9780d590c07Smrg		;;
97984febdacSmrg	romp-unknown)
98084febdacSmrg		vendor=ibm
981c76ae52dSmrg		;;
98284febdacSmrg	mmix-unknown)
98384febdacSmrg		vendor=knuth
984c76ae52dSmrg		;;
98584febdacSmrg	microblaze-unknown | microblazeel-unknown)
98684febdacSmrg		vendor=xilinx
987c76ae52dSmrg		;;
98884febdacSmrg	rs6000-unknown)
98984febdacSmrg		vendor=ibm
990c76ae52dSmrg		;;
99184febdacSmrg	vax-unknown)
99284febdacSmrg		vendor=dec
993c76ae52dSmrg		;;
99484febdacSmrg	pdp11-unknown)
99584febdacSmrg		vendor=dec
9962836776bSmrg		;;
99784febdacSmrg	we32k-unknown)
99884febdacSmrg		vendor=att
999c76ae52dSmrg		;;
100084febdacSmrg	cydra-unknown)
100184febdacSmrg		vendor=cydrome
1002c76ae52dSmrg		;;
100384febdacSmrg	i370-ibm*)
100484febdacSmrg		vendor=ibm
1005c76ae52dSmrg		;;
100684febdacSmrg	orion-unknown)
100784febdacSmrg		vendor=highlevel
1008c76ae52dSmrg		;;
100984febdacSmrg	xps-unknown | xps100-unknown)
101084febdacSmrg		cpu=xps100
101184febdacSmrg		vendor=honeywell
1012c76ae52dSmrg		;;
101384febdacSmrg
101484febdacSmrg	# Here we normalize CPU types with a missing or matching vendor
101584febdacSmrg	dpx20-unknown | dpx20-bull)
101684febdacSmrg		cpu=rs6000
101784febdacSmrg		vendor=bull
101884febdacSmrg		basic_os=${basic_os:-bosx}
1019c76ae52dSmrg		;;
102084febdacSmrg
102184febdacSmrg	# Here we normalize CPU types irrespective of the vendor
102284febdacSmrg	amd64-*)
102384febdacSmrg		cpu=x86_64
1024c76ae52dSmrg		;;
102584febdacSmrg	blackfin-*)
102684febdacSmrg		cpu=bfin
102784febdacSmrg		basic_os=linux
1028c76ae52dSmrg		;;
102984febdacSmrg	c54x-*)
103084febdacSmrg		cpu=tic54x
1031c76ae52dSmrg		;;
103284febdacSmrg	c55x-*)
103384febdacSmrg		cpu=tic55x
1034c76ae52dSmrg		;;
103584febdacSmrg	c6x-*)
103684febdacSmrg		cpu=tic6x
1037c76ae52dSmrg		;;
103884febdacSmrg	e500v[12]-*)
103984febdacSmrg		cpu=powerpc
104084febdacSmrg		basic_os=${basic_os}"spe"
1041c76ae52dSmrg		;;
104284febdacSmrg	mips3*-*)
104384febdacSmrg		cpu=mips64
1044c76ae52dSmrg		;;
104584febdacSmrg	ms1-*)
104684febdacSmrg		cpu=mt
1047c76ae52dSmrg		;;
104884febdacSmrg	m68knommu-*)
104984febdacSmrg		cpu=m68k
105084febdacSmrg		basic_os=linux
1051c76ae52dSmrg		;;
105284febdacSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
105384febdacSmrg		cpu=s12z
10540d590c07Smrg		;;
105584febdacSmrg	openrisc-*)
105684febdacSmrg		cpu=or32
1057c76ae52dSmrg		;;
105884febdacSmrg	parisc-*)
105984febdacSmrg		cpu=hppa
106084febdacSmrg		basic_os=linux
1061c76ae52dSmrg		;;
106284febdacSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
106384febdacSmrg		cpu=i586
1064c76ae52dSmrg		;;
106584febdacSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
106684febdacSmrg		cpu=i686
1067c76ae52dSmrg		;;
106884febdacSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
106984febdacSmrg		cpu=i686
1070c76ae52dSmrg		;;
107184febdacSmrg	pentium4-*)
107284febdacSmrg		cpu=i786
1073c76ae52dSmrg		;;
107484febdacSmrg	pc98-*)
107584febdacSmrg		cpu=i386
1076c76ae52dSmrg		;;
107784febdacSmrg	ppc-* | ppcbe-*)
107884febdacSmrg		cpu=powerpc
1079c76ae52dSmrg		;;
108084febdacSmrg	ppcle-* | powerpclittle-*)
108184febdacSmrg		cpu=powerpcle
1082c76ae52dSmrg		;;
108384febdacSmrg	ppc64-*)
108484febdacSmrg		cpu=powerpc64
1085c76ae52dSmrg		;;
108684febdacSmrg	ppc64le-* | powerpc64little-*)
108784febdacSmrg		cpu=powerpc64le
1088c76ae52dSmrg		;;
108984febdacSmrg	sb1-*)
109084febdacSmrg		cpu=mipsisa64sb1
1091c76ae52dSmrg		;;
109284febdacSmrg	sb1el-*)
109384febdacSmrg		cpu=mipsisa64sb1el
1094c76ae52dSmrg		;;
109584febdacSmrg	sh5e[lb]-*)
109684febdacSmrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
1097c76ae52dSmrg		;;
109884febdacSmrg	spur-*)
109984febdacSmrg		cpu=spur
1100c76ae52dSmrg		;;
110184febdacSmrg	strongarm-* | thumb-*)
110284febdacSmrg		cpu=arm
1103c76ae52dSmrg		;;
110484febdacSmrg	tx39-*)
110584febdacSmrg		cpu=mipstx39
11068292847cSmrg		;;
110784febdacSmrg	tx39el-*)
110884febdacSmrg		cpu=mipstx39el
1109c76ae52dSmrg		;;
111084febdacSmrg	x64-*)
111184febdacSmrg		cpu=x86_64
1112c76ae52dSmrg		;;
11132836776bSmrg	xscale-* | xscalee[bl]-*)
111484febdacSmrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
11152836776bSmrg		;;
111684febdacSmrg	arm64-*)
111784febdacSmrg		cpu=aarch64
1118c76ae52dSmrg		;;
1119c76ae52dSmrg
112084febdacSmrg	# Recognize the canonical CPU Types that limit and/or modify the
112184febdacSmrg	# company names they are paired with.
112284febdacSmrg	cr16-*)
112384febdacSmrg		basic_os=${basic_os:-elf}
1124c76ae52dSmrg		;;
112584febdacSmrg	crisv32-* | etraxfs*-*)
112684febdacSmrg		cpu=crisv32
112784febdacSmrg		vendor=axis
1128c76ae52dSmrg		;;
112984febdacSmrg	cris-* | etrax*-*)
113084febdacSmrg		cpu=cris
113184febdacSmrg		vendor=axis
1132c76ae52dSmrg		;;
113384febdacSmrg	crx-*)
113484febdacSmrg		basic_os=${basic_os:-elf}
1135c76ae52dSmrg		;;
113684febdacSmrg	neo-tandem)
113784febdacSmrg		cpu=neo
113884febdacSmrg		vendor=tandem
1139c76ae52dSmrg		;;
114084febdacSmrg	nse-tandem)
114184febdacSmrg		cpu=nse
114284febdacSmrg		vendor=tandem
1143c76ae52dSmrg		;;
114484febdacSmrg	nsr-tandem)
114584febdacSmrg		cpu=nsr
114684febdacSmrg		vendor=tandem
1147c76ae52dSmrg		;;
114884febdacSmrg	nsv-tandem)
114984febdacSmrg		cpu=nsv
115084febdacSmrg		vendor=tandem
1151c76ae52dSmrg		;;
115284febdacSmrg	nsx-tandem)
115384febdacSmrg		cpu=nsx
115484febdacSmrg		vendor=tandem
1155c76ae52dSmrg		;;
115684febdacSmrg	mipsallegrexel-sony)
115784febdacSmrg		cpu=mipsallegrexel
115884febdacSmrg		vendor=sony
1159c76ae52dSmrg		;;
116084febdacSmrg	tile*-*)
116184febdacSmrg		basic_os=${basic_os:-linux-gnu}
1162c76ae52dSmrg		;;
116384febdacSmrg
1164c76ae52dSmrg	*)
116584febdacSmrg		# Recognize the canonical CPU types that are allowed with any
116684febdacSmrg		# company name.
116784febdacSmrg		case $cpu in
116884febdacSmrg			1750a | 580 \
116984febdacSmrg			| a29k \
117084febdacSmrg			| aarch64 | aarch64_be \
117184febdacSmrg			| abacus \
117284febdacSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
117384febdacSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
117484febdacSmrg			| alphapca5[67] | alpha64pca5[67] \
117584febdacSmrg			| am33_2.0 \
117684febdacSmrg			| amdgcn \
117784febdacSmrg			| arc | arceb | arc32 | arc64 \
117884febdacSmrg			| arm | arm[lb]e | arme[lb] | armv* \
117984febdacSmrg			| avr | avr32 \
118084febdacSmrg			| asmjs \
118184febdacSmrg			| ba \
118284febdacSmrg			| be32 | be64 \
118384febdacSmrg			| bfin | bpf | bs2000 \
118484febdacSmrg			| c[123]* | c30 | [cjt]90 | c4x \
118584febdacSmrg			| c8051 | clipper | craynv | csky | cydra \
118684febdacSmrg			| d10v | d30v | dlx | dsp16xx \
118784febdacSmrg			| e2k | elxsi | epiphany \
118884febdacSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
118984febdacSmrg			| h8300 | h8500 \
119084febdacSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
119184febdacSmrg			| hexagon \
119284febdacSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
119384febdacSmrg			| ip2k | iq2000 \
119484febdacSmrg			| k1om \
119584febdacSmrg			| le32 | le64 \
119684febdacSmrg			| lm32 \
119784febdacSmrg			| loongarch32 | loongarch64 | loongarchx32 \
119884febdacSmrg			| m32c | m32r | m32rle \
119984febdacSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
120084febdacSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
120184febdacSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
120284febdacSmrg			| microblaze | microblazeel \
120384febdacSmrg			| mips | mipsbe | mipseb | mipsel | mipsle \
120484febdacSmrg			| mips16 \
120584febdacSmrg			| mips64 | mips64eb | mips64el \
120684febdacSmrg			| mips64octeon | mips64octeonel \
120784febdacSmrg			| mips64orion | mips64orionel \
120884febdacSmrg			| mips64r5900 | mips64r5900el \
120984febdacSmrg			| mips64vr | mips64vrel \
121084febdacSmrg			| mips64vr4100 | mips64vr4100el \
121184febdacSmrg			| mips64vr4300 | mips64vr4300el \
121284febdacSmrg			| mips64vr5000 | mips64vr5000el \
121384febdacSmrg			| mips64vr5900 | mips64vr5900el \
121484febdacSmrg			| mipsisa32 | mipsisa32el \
121584febdacSmrg			| mipsisa32r2 | mipsisa32r2el \
121684febdacSmrg			| mipsisa32r3 | mipsisa32r3el \
121784febdacSmrg			| mipsisa32r5 | mipsisa32r5el \
121884febdacSmrg			| mipsisa32r6 | mipsisa32r6el \
121984febdacSmrg			| mipsisa64 | mipsisa64el \
122084febdacSmrg			| mipsisa64r2 | mipsisa64r2el \
122184febdacSmrg			| mipsisa64r3 | mipsisa64r3el \
122284febdacSmrg			| mipsisa64r5 | mipsisa64r5el \
122384febdacSmrg			| mipsisa64r6 | mipsisa64r6el \
122484febdacSmrg			| mipsisa64sb1 | mipsisa64sb1el \
122584febdacSmrg			| mipsisa64sr71k | mipsisa64sr71kel \
122684febdacSmrg			| mipsr5900 | mipsr5900el \
122784febdacSmrg			| mipstx39 | mipstx39el \
122884febdacSmrg			| mmix \
122984febdacSmrg			| mn10200 | mn10300 \
123084febdacSmrg			| moxie \
123184febdacSmrg			| mt \
123284febdacSmrg			| msp430 \
123384febdacSmrg			| nds32 | nds32le | nds32be \
123484febdacSmrg			| nfp \
123584febdacSmrg			| nios | nios2 | nios2eb | nios2el \
123684febdacSmrg			| none | np1 | ns16k | ns32k | nvptx \
123784febdacSmrg			| open8 \
123884febdacSmrg			| or1k* \
123984febdacSmrg			| or32 \
124084febdacSmrg			| orion \
124184febdacSmrg			| picochip \
124284febdacSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
124384febdacSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
124484febdacSmrg			| pru \
124584febdacSmrg			| pyramid \
124684febdacSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
124784febdacSmrg			| rl78 | romp | rs6000 | rx \
124884febdacSmrg			| s390 | s390x \
124984febdacSmrg			| score \
125084febdacSmrg			| sh | shl \
125184febdacSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
125284febdacSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
125384febdacSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
125484febdacSmrg			| sparclite \
125584febdacSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
125684febdacSmrg			| spu \
125784febdacSmrg			| tahoe \
125884febdacSmrg			| thumbv7* \
125984febdacSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
126084febdacSmrg			| tron \
126184febdacSmrg			| ubicom32 \
126284febdacSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
126384febdacSmrg			| vax \
126484febdacSmrg			| visium \
126584febdacSmrg			| w65 \
126684febdacSmrg			| wasm32 | wasm64 \
126784febdacSmrg			| we32k \
126884febdacSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
126984febdacSmrg			| xstormy16 | xtensa* \
127084febdacSmrg			| ymp \
127184febdacSmrg			| z8k | z80)
127284febdacSmrg				;;
127384febdacSmrg
127484febdacSmrg			*)
127584febdacSmrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
127684febdacSmrg				exit 1
127784febdacSmrg				;;
127884febdacSmrg		esac
1279c76ae52dSmrg		;;
1280c76ae52dSmrgesac
1281c76ae52dSmrg
1282c76ae52dSmrg# Here we canonicalize certain aliases for manufacturers.
128384febdacSmrgcase $vendor in
128484febdacSmrg	digital*)
128584febdacSmrg		vendor=dec
1286c76ae52dSmrg		;;
128784febdacSmrg	commodore*)
128884febdacSmrg		vendor=cbm
1289c76ae52dSmrg		;;
1290c76ae52dSmrg	*)
1291c76ae52dSmrg		;;
1292c76ae52dSmrgesac
1293c76ae52dSmrg
1294c76ae52dSmrg# Decode manufacturer-specific aliases for certain operating systems.
1295c76ae52dSmrg
129684febdacSmrgif test x$basic_os != x
1297c76ae52dSmrgthen
129884febdacSmrg
129984febdacSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
130084febdacSmrg# set os.
130184febdacSmrgcase $basic_os in
130284febdacSmrg	gnu/linux*)
130384febdacSmrg		kernel=linux
130484febdacSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
130584febdacSmrg		;;
130684febdacSmrg	os2-emx)
130784febdacSmrg		kernel=os2
130884febdacSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
130984febdacSmrg		;;
131084febdacSmrg	nto-qnx*)
131184febdacSmrg		kernel=nto
131284febdacSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
131384febdacSmrg		;;
131484febdacSmrg	*-*)
131584febdacSmrg		# shellcheck disable=SC2162
131684febdacSmrg		IFS="-" read kernel os <<EOF
131784febdacSmrg$basic_os
131884febdacSmrgEOF
131984febdacSmrg		;;
132084febdacSmrg	# Default OS when just kernel was specified
132184febdacSmrg	nto*)
132284febdacSmrg		kernel=nto
132384febdacSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
132484febdacSmrg		;;
132584febdacSmrg	linux*)
132684febdacSmrg		kernel=linux
132784febdacSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
132884febdacSmrg		;;
132984febdacSmrg	*)
133084febdacSmrg		kernel=
133184febdacSmrg		os=$basic_os
133284febdacSmrg		;;
133384febdacSmrgesac
133484febdacSmrg
133584febdacSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
133684febdacSmrg# etc.)
1337c76ae52dSmrgcase $os in
13388292847cSmrg	# First match some system type aliases that might get confused
13398292847cSmrg	# with valid system types.
134084febdacSmrg	# solaris* is a basic system type, with this one exception.
134184febdacSmrg	auroraux)
134284febdacSmrg		os=auroraux
1343c2939121Smrg		;;
134484febdacSmrg	bluegene*)
134584febdacSmrg		os=cnk
1346c76ae52dSmrg		;;
134784febdacSmrg	solaris1 | solaris1.*)
134884febdacSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
1349c76ae52dSmrg		;;
135084febdacSmrg	solaris)
135184febdacSmrg		os=solaris2
1352c76ae52dSmrg		;;
135384febdacSmrg	unixware*)
135484febdacSmrg		os=sysv4.2uw
1355c76ae52dSmrg		;;
13568292847cSmrg	# es1800 is here to avoid being matched by es* (a different OS)
135784febdacSmrg	es1800*)
135884febdacSmrg		os=ose
13598292847cSmrg		;;
136084febdacSmrg	# Some version numbers need modification
136184febdacSmrg	chorusos*)
136284febdacSmrg		os=chorusos
1363c76ae52dSmrg		;;
136484febdacSmrg	isc)
136584febdacSmrg		os=isc2.2
1366c76ae52dSmrg		;;
136784febdacSmrg	sco6)
136884febdacSmrg		os=sco5v6
1369c76ae52dSmrg		;;
137084febdacSmrg	sco5)
137184febdacSmrg		os=sco3.2v5
1372c76ae52dSmrg		;;
137384febdacSmrg	sco4)
137484febdacSmrg		os=sco3.2v4
1375c76ae52dSmrg		;;
137684febdacSmrg	sco3.2.[4-9]*)
137784febdacSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
1378c76ae52dSmrg		;;
137984febdacSmrg	sco*v* | scout)
138084febdacSmrg		# Don't match below
1381c76ae52dSmrg		;;
138284febdacSmrg	sco*)
138384febdacSmrg		os=sco3.2v2
1384c76ae52dSmrg		;;
138584febdacSmrg	psos*)
138684febdacSmrg		os=psos
1387c76ae52dSmrg		;;
138884febdacSmrg	qnx*)
138984febdacSmrg		os=qnx
1390c76ae52dSmrg		;;
139184febdacSmrg	hiux*)
139284febdacSmrg		os=hiuxwe2
1393c76ae52dSmrg		;;
139484febdacSmrg	lynx*178)
139584febdacSmrg		os=lynxos178
1396c76ae52dSmrg		;;
139784febdacSmrg	lynx*5)
139884febdacSmrg		os=lynxos5
1399c76ae52dSmrg		;;
140084febdacSmrg	lynxos*)
140184febdacSmrg		# don't get caught up in next wildcard
1402c76ae52dSmrg		;;
140384febdacSmrg	lynx*)
140484febdacSmrg		os=lynxos
1405c76ae52dSmrg		;;
140684febdacSmrg	mac[0-9]*)
140784febdacSmrg		os=`echo "$os" | sed -e 's|mac|macos|'`
1408c76ae52dSmrg		;;
140984febdacSmrg	opened*)
141084febdacSmrg		os=openedition
1411c76ae52dSmrg		;;
141284febdacSmrg	os400*)
141384febdacSmrg		os=os400
1414c76ae52dSmrg		;;
141584febdacSmrg	sunos5*)
141684febdacSmrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
1417c76ae52dSmrg		;;
141884febdacSmrg	sunos6*)
141984febdacSmrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
1420c76ae52dSmrg		;;
142184febdacSmrg	wince*)
142284febdacSmrg		os=wince
1423c76ae52dSmrg		;;
142484febdacSmrg	utek*)
142584febdacSmrg		os=bsd
1426c76ae52dSmrg		;;
142784febdacSmrg	dynix*)
142884febdacSmrg		os=bsd
1429c76ae52dSmrg		;;
143084febdacSmrg	acis*)
143184febdacSmrg		os=aos
1432c76ae52dSmrg		;;
143384febdacSmrg	atheos*)
143484febdacSmrg		os=atheos
1435c76ae52dSmrg		;;
143684febdacSmrg	syllable*)
143784febdacSmrg		os=syllable
1438c76ae52dSmrg		;;
143984febdacSmrg	386bsd)
144084febdacSmrg		os=bsd
1441c76ae52dSmrg		;;
144284febdacSmrg	ctix* | uts*)
144384febdacSmrg		os=sysv
1444c76ae52dSmrg		;;
144584febdacSmrg	nova*)
144684febdacSmrg		os=rtmk-nova
1447c76ae52dSmrg		;;
144884febdacSmrg	ns2)
144984febdacSmrg		os=nextstep2
1450c76ae52dSmrg		;;
145184febdacSmrg	# Preserve the version number of sinix5.
145284febdacSmrg	sinix5.*)
145384febdacSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
1454c76ae52dSmrg		;;
145584febdacSmrg	sinix*)
145684febdacSmrg		os=sysv4
1457c76ae52dSmrg		;;
145884febdacSmrg	tpf*)
145984febdacSmrg		os=tpf
1460c76ae52dSmrg		;;
146184febdacSmrg	triton*)
146284febdacSmrg		os=sysv3
1463c76ae52dSmrg		;;
146484febdacSmrg	oss*)
146584febdacSmrg		os=sysv3
1466c2939121Smrg		;;
146784febdacSmrg	svr4*)
146884febdacSmrg		os=sysv4
146984febdacSmrg		;;
147084febdacSmrg	svr3)
147184febdacSmrg		os=sysv3
147284febdacSmrg		;;
147384febdacSmrg	sysvr4)
147484febdacSmrg		os=sysv4
147584febdacSmrg		;;
147684febdacSmrg	ose*)
147784febdacSmrg		os=ose
147884febdacSmrg		;;
147984febdacSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
148084febdacSmrg		os=mint
148184febdacSmrg		;;
148284febdacSmrg	dicos*)
148384febdacSmrg		os=dicos
148484febdacSmrg		;;
148584febdacSmrg	pikeos*)
14868292847cSmrg		# Until real need of OS specific support for
14878292847cSmrg		# particular features comes up, bare metal
14888292847cSmrg		# configurations are quite functional.
148984febdacSmrg		case $cpu in
14908292847cSmrg		    arm*)
149184febdacSmrg			os=eabi
14928292847cSmrg			;;
14938292847cSmrg		    *)
149484febdacSmrg			os=elf
14958292847cSmrg			;;
14968292847cSmrg		esac
14978292847cSmrg		;;
1498c76ae52dSmrg	*)
149984febdacSmrg		# No normalization, but not necessarily accepted, that comes below.
1500c76ae52dSmrg		;;
1501c76ae52dSmrgesac
150284febdacSmrg
1503c76ae52dSmrgelse
1504c76ae52dSmrg
1505c76ae52dSmrg# Here we handle the default operating systems that come with various machines.
1506c76ae52dSmrg# The value should be what the vendor currently ships out the door with their
1507c76ae52dSmrg# machine or put another way, the most popular os provided with the machine.
1508c76ae52dSmrg
1509c76ae52dSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
1510c76ae52dSmrg# "-sun"), then you have to tell the case statement up towards the top
1511c76ae52dSmrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
1512c76ae52dSmrg# will signal an error saying that MANUFACTURER isn't an operating
1513c76ae52dSmrg# system, and we'll never get to this point.
1514c76ae52dSmrg
151584febdacSmrgkernel=
151684febdacSmrgcase $cpu-$vendor in
15172836776bSmrg	score-*)
151884febdacSmrg		os=elf
15190d590c07Smrg		;;
15202836776bSmrg	spu-*)
152184febdacSmrg		os=elf
15220d590c07Smrg		;;
1523c76ae52dSmrg	*-acorn)
152484febdacSmrg		os=riscix1.2
1525c76ae52dSmrg		;;
1526c76ae52dSmrg	arm*-rebel)
152784febdacSmrg		kernel=linux
152884febdacSmrg		os=gnu
1529c76ae52dSmrg		;;
1530c76ae52dSmrg	arm*-semi)
153184febdacSmrg		os=aout
1532c76ae52dSmrg		;;
15332836776bSmrg	c4x-* | tic4x-*)
153484febdacSmrg		os=coff
15350d590c07Smrg		;;
15368292847cSmrg	c8051-*)
153784febdacSmrg		os=elf
153884febdacSmrg		;;
153984febdacSmrg	clipper-intergraph)
154084febdacSmrg		os=clix
15418292847cSmrg		;;
1542dff01e5aSmrg	hexagon-*)
154384febdacSmrg		os=elf
1544dff01e5aSmrg		;;
1545c2939121Smrg	tic54x-*)
154684febdacSmrg		os=coff
1547c2939121Smrg		;;
1548c2939121Smrg	tic55x-*)
154984febdacSmrg		os=coff
1550c2939121Smrg		;;
1551c2939121Smrg	tic6x-*)
155284febdacSmrg		os=coff
1553c2939121Smrg		;;
1554c76ae52dSmrg	# This must come before the *-dec entry.
1555c76ae52dSmrg	pdp10-*)
155684febdacSmrg		os=tops20
1557c76ae52dSmrg		;;
1558c76ae52dSmrg	pdp11-*)
155984febdacSmrg		os=none
1560c76ae52dSmrg		;;
1561c76ae52dSmrg	*-dec | vax-*)
156284febdacSmrg		os=ultrix4.2
1563c76ae52dSmrg		;;
1564c76ae52dSmrg	m68*-apollo)
156584febdacSmrg		os=domain
1566c76ae52dSmrg		;;
1567c76ae52dSmrg	i386-sun)
156884febdacSmrg		os=sunos4.0.2
1569c76ae52dSmrg		;;
1570c76ae52dSmrg	m68000-sun)
157184febdacSmrg		os=sunos3
1572c76ae52dSmrg		;;
1573c76ae52dSmrg	m68*-cisco)
157484febdacSmrg		os=aout
1575c76ae52dSmrg		;;
15762836776bSmrg	mep-*)
157784febdacSmrg		os=elf
15780d590c07Smrg		;;
1579c76ae52dSmrg	mips*-cisco)
158084febdacSmrg		os=elf
1581c76ae52dSmrg		;;
1582c76ae52dSmrg	mips*-*)
158384febdacSmrg		os=elf
1584c76ae52dSmrg		;;
1585c76ae52dSmrg	or32-*)
158684febdacSmrg		os=coff
1587c76ae52dSmrg		;;
1588c76ae52dSmrg	*-tti)	# must be before sparc entry or we get the wrong os.
158984febdacSmrg		os=sysv3
1590c76ae52dSmrg		;;
1591c76ae52dSmrg	sparc-* | *-sun)
159284febdacSmrg		os=sunos4.1.1
1593c76ae52dSmrg		;;
15948292847cSmrg	pru-*)
159584febdacSmrg		os=elf
15968292847cSmrg		;;
1597c76ae52dSmrg	*-be)
159884febdacSmrg		os=beos
1599c76ae52dSmrg		;;
1600c76ae52dSmrg	*-ibm)
160184febdacSmrg		os=aix
1602c76ae52dSmrg		;;
16032836776bSmrg	*-knuth)
160484febdacSmrg		os=mmixware
1605c76ae52dSmrg		;;
1606c76ae52dSmrg	*-wec)
160784febdacSmrg		os=proelf
1608c76ae52dSmrg		;;
1609c76ae52dSmrg	*-winbond)
161084febdacSmrg		os=proelf
1611c76ae52dSmrg		;;
1612c76ae52dSmrg	*-oki)
161384febdacSmrg		os=proelf
1614c76ae52dSmrg		;;
1615c76ae52dSmrg	*-hp)
161684febdacSmrg		os=hpux
1617c76ae52dSmrg		;;
1618c76ae52dSmrg	*-hitachi)
161984febdacSmrg		os=hiux
1620c76ae52dSmrg		;;
1621c76ae52dSmrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
162284febdacSmrg		os=sysv
1623c76ae52dSmrg		;;
1624c76ae52dSmrg	*-cbm)
162584febdacSmrg		os=amigaos
1626c76ae52dSmrg		;;
1627c76ae52dSmrg	*-dg)
162884febdacSmrg		os=dgux
1629c76ae52dSmrg		;;
1630c76ae52dSmrg	*-dolphin)
163184febdacSmrg		os=sysv3
1632c76ae52dSmrg		;;
1633c76ae52dSmrg	m68k-ccur)
163484febdacSmrg		os=rtu
1635c76ae52dSmrg		;;
1636c76ae52dSmrg	m88k-omron*)
163784febdacSmrg		os=luna
1638c76ae52dSmrg		;;
16398292847cSmrg	*-next)
164084febdacSmrg		os=nextstep
1641c76ae52dSmrg		;;
1642c76ae52dSmrg	*-sequent)
164384febdacSmrg		os=ptx
1644c76ae52dSmrg		;;
1645c76ae52dSmrg	*-crds)
164684febdacSmrg		os=unos
1647c76ae52dSmrg		;;
1648c76ae52dSmrg	*-ns)
164984febdacSmrg		os=genix
1650c76ae52dSmrg		;;
1651c76ae52dSmrg	i370-*)
165284febdacSmrg		os=mvs
1653c76ae52dSmrg		;;
1654c76ae52dSmrg	*-gould)
165584febdacSmrg		os=sysv
1656c76ae52dSmrg		;;
1657c76ae52dSmrg	*-highlevel)
165884febdacSmrg		os=bsd
1659c76ae52dSmrg		;;
1660c76ae52dSmrg	*-encore)
166184febdacSmrg		os=bsd
1662c76ae52dSmrg		;;
1663c76ae52dSmrg	*-sgi)
166484febdacSmrg		os=irix
1665c76ae52dSmrg		;;
1666c76ae52dSmrg	*-siemens)
166784febdacSmrg		os=sysv4
1668c76ae52dSmrg		;;
1669c76ae52dSmrg	*-masscomp)
167084febdacSmrg		os=rtu
1671c76ae52dSmrg		;;
1672c76ae52dSmrg	f30[01]-fujitsu | f700-fujitsu)
167384febdacSmrg		os=uxpv
1674c76ae52dSmrg		;;
1675c76ae52dSmrg	*-rom68k)
167684febdacSmrg		os=coff
1677c76ae52dSmrg		;;
1678c76ae52dSmrg	*-*bug)
167984febdacSmrg		os=coff
1680c76ae52dSmrg		;;
1681c76ae52dSmrg	*-apple)
168284febdacSmrg		os=macos
1683c76ae52dSmrg		;;
1684c76ae52dSmrg	*-atari*)
168584febdacSmrg		os=mint
168684febdacSmrg		;;
168784febdacSmrg	*-wrs)
168884febdacSmrg		os=vxworks
1689c76ae52dSmrg		;;
1690c76ae52dSmrg	*)
169184febdacSmrg		os=none
1692c76ae52dSmrg		;;
1693c76ae52dSmrgesac
169484febdacSmrg
1695c76ae52dSmrgfi
1696c76ae52dSmrg
169784febdacSmrg# Now, validate our (potentially fixed-up) OS.
169884febdacSmrgcase $os in
169984febdacSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
170084febdacSmrg	musl* | newlib* | uclibc*)
170184febdacSmrg		;;
170284febdacSmrg	# Likewise for "kernel-abi"
170384febdacSmrg	eabi* | gnueabi*)
170484febdacSmrg		;;
170584febdacSmrg	# VxWorks passes extra cpu info in the 4th filed.
170684febdacSmrg	simlinux | simwindows | spe)
170784febdacSmrg		;;
170884febdacSmrg	# Now accept the basic system types.
170984febdacSmrg	# The portable systems comes first.
171084febdacSmrg	# Each alternative MUST end in a * to match a version number.
171184febdacSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
171284febdacSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
171384febdacSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
171484febdacSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
171584febdacSmrg	     | hiux* | abug | nacl* | netware* | windows* \
171684febdacSmrg	     | os9* | macos* | osx* | ios* \
171784febdacSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
171884febdacSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
171984febdacSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
172084febdacSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
172184febdacSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
172284febdacSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
172384febdacSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
172484febdacSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
172584febdacSmrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
172684febdacSmrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
172784febdacSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
172884febdacSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
172984febdacSmrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
173084febdacSmrg	     | midipix* | mingw32* | mingw64* | mint* \
173184febdacSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
173284febdacSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
173384febdacSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
173484febdacSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
173584febdacSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
173684febdacSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
173784febdacSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
173884febdacSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
173984febdacSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
174084febdacSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
174184febdacSmrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx*)
174284febdacSmrg		;;
174384febdacSmrg	# This one is extra strict with allowed versions
174484febdacSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
174584febdacSmrg		# Don't forget version if it is 3.2v4 or newer.
174684febdacSmrg		;;
174784febdacSmrg	none)
174884febdacSmrg		;;
174984febdacSmrg	*)
175084febdacSmrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
175184febdacSmrg		exit 1
175284febdacSmrg		;;
175384febdacSmrgesac
175484febdacSmrg
175584febdacSmrg# As a final step for OS-related things, validate the OS-kernel combination
175684febdacSmrg# (given a valid OS), if there is a kernel.
175784febdacSmrgcase $kernel-$os in
175884febdacSmrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* )
175984febdacSmrg		;;
176084febdacSmrg	uclinux-uclibc* )
176184febdacSmrg		;;
176284febdacSmrg	-dietlibc* | -newlib* | -musl* | -uclibc* )
176384febdacSmrg		# These are just libc implementations, not actual OSes, and thus
176484febdacSmrg		# require a kernel.
176584febdacSmrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
176684febdacSmrg		exit 1
176784febdacSmrg		;;
176884febdacSmrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
176984febdacSmrg		;;
177084febdacSmrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
177184febdacSmrg		;;
177284febdacSmrg	nto-qnx*)
177384febdacSmrg		;;
177484febdacSmrg	os2-emx)
177584febdacSmrg		;;
177684febdacSmrg	*-eabi* | *-gnueabi*)
177784febdacSmrg		;;
177884febdacSmrg	-*)
177984febdacSmrg		# Blank kernel with real OS is always fine.
178084febdacSmrg		;;
178184febdacSmrg	*-*)
178284febdacSmrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
178384febdacSmrg		exit 1
178484febdacSmrg		;;
178584febdacSmrgesac
178684febdacSmrg
1787c76ae52dSmrg# Here we handle the case where we know the os, and the CPU type, but not the
1788c76ae52dSmrg# manufacturer.  We pick the logical manufacturer.
178984febdacSmrgcase $vendor in
179084febdacSmrg	unknown)
179184febdacSmrg		case $cpu-$os in
179284febdacSmrg			*-riscix*)
1793c76ae52dSmrg				vendor=acorn
1794c76ae52dSmrg				;;
179584febdacSmrg			*-sunos*)
1796c76ae52dSmrg				vendor=sun
1797c76ae52dSmrg				;;
179884febdacSmrg			*-cnk* | *-aix*)
1799c76ae52dSmrg				vendor=ibm
1800c76ae52dSmrg				;;
180184febdacSmrg			*-beos*)
1802c76ae52dSmrg				vendor=be
1803c76ae52dSmrg				;;
180484febdacSmrg			*-hpux*)
1805c76ae52dSmrg				vendor=hp
1806c76ae52dSmrg				;;
180784febdacSmrg			*-mpeix*)
1808c76ae52dSmrg				vendor=hp
1809c76ae52dSmrg				;;
181084febdacSmrg			*-hiux*)
1811c76ae52dSmrg				vendor=hitachi
1812c76ae52dSmrg				;;
181384febdacSmrg			*-unos*)
1814c76ae52dSmrg				vendor=crds
1815c76ae52dSmrg				;;
181684febdacSmrg			*-dgux*)
1817c76ae52dSmrg				vendor=dg
1818c76ae52dSmrg				;;
181984febdacSmrg			*-luna*)
1820c76ae52dSmrg				vendor=omron
1821c76ae52dSmrg				;;
182284febdacSmrg			*-genix*)
1823c76ae52dSmrg				vendor=ns
1824c76ae52dSmrg				;;
182584febdacSmrg			*-clix*)
182684febdacSmrg				vendor=intergraph
182784febdacSmrg				;;
182884febdacSmrg			*-mvs* | *-opened*)
182984febdacSmrg				vendor=ibm
183084febdacSmrg				;;
183184febdacSmrg			*-os400*)
1832c76ae52dSmrg				vendor=ibm
1833c76ae52dSmrg				;;
183484febdacSmrg			s390-* | s390x-*)
1835c76ae52dSmrg				vendor=ibm
1836c76ae52dSmrg				;;
183784febdacSmrg			*-ptx*)
1838c76ae52dSmrg				vendor=sequent
1839c76ae52dSmrg				;;
184084febdacSmrg			*-tpf*)
1841c76ae52dSmrg				vendor=ibm
1842c76ae52dSmrg				;;
184384febdacSmrg			*-vxsim* | *-vxworks* | *-windiss*)
1844c76ae52dSmrg				vendor=wrs
1845c76ae52dSmrg				;;
184684febdacSmrg			*-aux*)
1847c76ae52dSmrg				vendor=apple
1848c76ae52dSmrg				;;
184984febdacSmrg			*-hms*)
1850c76ae52dSmrg				vendor=hitachi
1851c76ae52dSmrg				;;
185284febdacSmrg			*-mpw* | *-macos*)
1853c76ae52dSmrg				vendor=apple
1854c76ae52dSmrg				;;
185584febdacSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
1856c76ae52dSmrg				vendor=atari
1857c76ae52dSmrg				;;
185884febdacSmrg			*-vos*)
1859c76ae52dSmrg				vendor=stratus
1860c76ae52dSmrg				;;
1861c76ae52dSmrg		esac
1862c76ae52dSmrg		;;
1863c76ae52dSmrgesac
1864c76ae52dSmrg
186584febdacSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
1866c76ae52dSmrgexit
1867c76ae52dSmrg
1868c76ae52dSmrg# Local variables:
186984febdacSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
1870c76ae52dSmrg# time-stamp-start: "timestamp='"
1871c76ae52dSmrg# time-stamp-format: "%:y-%02m-%02d"
1872c76ae52dSmrg# time-stamp-end: "'"
1873c76ae52dSmrg# End:
1874