1c06b6b69Smrg#! /bin/sh
2c06b6b69Smrg# Configuration validation subroutine script.
344256261Smrg#   Copyright 1992-2023 Free Software Foundation, Inc.
4c06b6b69Smrg
544256261Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale
644256261Smrg
744256261Smrgtimestamp='2023-01-21'
8c06b6b69Smrg
97a5ec427Smrg# This file is free software; you can redistribute it and/or modify it
107a5ec427Smrg# under the terms of the GNU General Public License as published by
1144256261Smrg# the Free Software Foundation, either version 3 of the License, or
12c06b6b69Smrg# (at your option) any later version.
13c06b6b69Smrg#
147a5ec427Smrg# This program is distributed in the hope that it will be useful, but
157a5ec427Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
167a5ec427Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
177a5ec427Smrg# General Public License for more details.
18c06b6b69Smrg#
19c06b6b69Smrg# You should have received a copy of the GNU General Public License
2044256261Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
219f4658d1Smrg#
22c06b6b69Smrg# As a special exception to the GNU General Public License, if you
23c06b6b69Smrg# distribute this file as part of a program that contains a
24c06b6b69Smrg# configuration script generated by Autoconf, you may include it under
257a5ec427Smrg# the same distribution terms that you use for the rest of that
267a5ec427Smrg# program.  This Exception is an additional permission under section 7
277a5ec427Smrg# of the GNU General Public License, version 3 ("GPLv3").
28c06b6b69Smrg
299f4658d1Smrg
307a5ec427Smrg# Please send patches to <config-patches@gnu.org>.
31c06b6b69Smrg#
32c06b6b69Smrg# Configuration subroutine to validate and canonicalize a configuration type.
33c06b6b69Smrg# Supply the specified configuration type as an argument.
34c06b6b69Smrg# If it is invalid, we print an error message on stderr and exit with code 1.
35c06b6b69Smrg# Otherwise, we print the canonical config type on stdout and succeed.
36c06b6b69Smrg
377d17d341Smrg# You can get the latest version of this script from:
3844256261Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
397d17d341Smrg
40c06b6b69Smrg# This file is supposed to be the same for all GNU packages
41c06b6b69Smrg# and recognize all the CPU types, system types and aliases
42c06b6b69Smrg# that are meaningful with *any* GNU software.
43c06b6b69Smrg# Each package is responsible for reporting which valid configurations
44c06b6b69Smrg# it does not support.  The user should be able to distinguish
45c06b6b69Smrg# a failure to support a valid configuration from a meaningless
46c06b6b69Smrg# configuration.
47c06b6b69Smrg
48c06b6b69Smrg# The goal of this file is to map all the various variations of a given
49c06b6b69Smrg# machine specification into a single specification in the form:
50c06b6b69Smrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
51c06b6b69Smrg# or in some cases, the newer four-part form:
52c06b6b69Smrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
53c06b6b69Smrg# It is wrong to echo any other type of specification.
54c06b6b69Smrg
5544256261Smrg# The "shellcheck disable" line above the timestamp inhibits complaints
5644256261Smrg# about features and limitations of the classic Bourne shell that were
5744256261Smrg# superseded or lifted in POSIX.  However, this script identifies a wide
5844256261Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
5944256261Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still
6044256261Smrg# have a pre-POSIX /bin/sh.
6144256261Smrg
62c06b6b69Smrgme=`echo "$0" | sed -e 's,.*/,,'`
63c06b6b69Smrg
64c06b6b69Smrgusage="\
6544256261SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
66c06b6b69Smrg
67c06b6b69SmrgCanonicalize a configuration name.
68c06b6b69Smrg
6944256261SmrgOptions:
70c06b6b69Smrg  -h, --help         print this help, then exit
71c06b6b69Smrg  -t, --time-stamp   print date of last modification, then exit
72c06b6b69Smrg  -v, --version      print version number, then exit
73c06b6b69Smrg
74c06b6b69SmrgReport bugs and patches to <config-patches@gnu.org>."
75c06b6b69Smrg
76c06b6b69Smrgversion="\
77c06b6b69SmrgGNU config.sub ($timestamp)
78c06b6b69Smrg
7944256261SmrgCopyright 1992-2023 Free Software Foundation, Inc.
80c06b6b69Smrg
81c06b6b69SmrgThis is free software; see the source for copying conditions.  There is NO
82c06b6b69Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
83c06b6b69Smrg
84c06b6b69Smrghelp="
85c06b6b69SmrgTry \`$me --help' for more information."
86c06b6b69Smrg
87c06b6b69Smrg# Parse command line
88c06b6b69Smrgwhile test $# -gt 0 ; do
89c06b6b69Smrg  case $1 in
90c06b6b69Smrg    --time-stamp | --time* | -t )
919f4658d1Smrg       echo "$timestamp" ; exit ;;
92c06b6b69Smrg    --version | -v )
939f4658d1Smrg       echo "$version" ; exit ;;
94c06b6b69Smrg    --help | --h* | -h )
959f4658d1Smrg       echo "$usage"; exit ;;
96c06b6b69Smrg    -- )     # Stop option processing
97c06b6b69Smrg       shift; break ;;
98c06b6b69Smrg    - )	# Use stdin as input.
99c06b6b69Smrg       break ;;
100c06b6b69Smrg    -* )
10144256261Smrg       echo "$me: invalid option $1$help" >&2
102c06b6b69Smrg       exit 1 ;;
103c06b6b69Smrg
104c06b6b69Smrg    *local*)
105c06b6b69Smrg       # First pass through any local machine types.
10644256261Smrg       echo "$1"
1079f4658d1Smrg       exit ;;
108c06b6b69Smrg
109c06b6b69Smrg    * )
110c06b6b69Smrg       break ;;
111c06b6b69Smrg  esac
112c06b6b69Smrgdone
113c06b6b69Smrg
114c06b6b69Smrgcase $# in
115c06b6b69Smrg 0) echo "$me: missing argument$help" >&2
116c06b6b69Smrg    exit 1;;
117c06b6b69Smrg 1) ;;
118c06b6b69Smrg *) echo "$me: too many arguments$help" >&2
119c06b6b69Smrg    exit 1;;
120c06b6b69Smrgesac
121c06b6b69Smrg
12244256261Smrg# Split fields of configuration type
12344256261Smrg# shellcheck disable=SC2162
12444256261Smrgsaved_IFS=$IFS
12544256261SmrgIFS="-" read field1 field2 field3 field4 <<EOF
12644256261Smrg$1
12744256261SmrgEOF
12844256261SmrgIFS=$saved_IFS
129c06b6b69Smrg
13044256261Smrg# Separate into logical components for further validation
13144256261Smrgcase $1 in
13244256261Smrg	*-*-*-*-*)
13344256261Smrg		echo Invalid configuration \`"$1"\': more than four components >&2
13444256261Smrg		exit 1
135c06b6b69Smrg		;;
13644256261Smrg	*-*-*-*)
13744256261Smrg		basic_machine=$field1-$field2
13844256261Smrg		basic_os=$field3-$field4
139c06b6b69Smrg		;;
14044256261Smrg	*-*-*)
14144256261Smrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
14244256261Smrg		# parts
14344256261Smrg		maybe_os=$field2-$field3
14444256261Smrg		case $maybe_os in
14544256261Smrg			nto-qnx* | linux-* | uclinux-uclibc* \
14644256261Smrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
14744256261Smrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
14844256261Smrg			| storm-chaos* | os2-emx* | rtmk-nova* | managarm-*)
14944256261Smrg				basic_machine=$field1
15044256261Smrg				basic_os=$maybe_os
15144256261Smrg				;;
15244256261Smrg			android-linux)
15344256261Smrg				basic_machine=$field1-unknown
15444256261Smrg				basic_os=linux-android
15544256261Smrg				;;
15644256261Smrg			*)
15744256261Smrg				basic_machine=$field1-$field2
15844256261Smrg				basic_os=$field3
15944256261Smrg				;;
16044256261Smrg		esac
161c06b6b69Smrg		;;
16244256261Smrg	*-*)
16344256261Smrg		# A lone config we happen to match not fitting any pattern
16444256261Smrg		case $field1-$field2 in
16544256261Smrg			decstation-3100)
16644256261Smrg				basic_machine=mips-dec
16744256261Smrg				basic_os=
16844256261Smrg				;;
16944256261Smrg			*-*)
17044256261Smrg				# Second component is usually, but not always the OS
17144256261Smrg				case $field2 in
17244256261Smrg					# Prevent following clause from handling this valid os
17344256261Smrg					sun*os*)
17444256261Smrg						basic_machine=$field1
17544256261Smrg						basic_os=$field2
17644256261Smrg						;;
17744256261Smrg					zephyr*)
17844256261Smrg						basic_machine=$field1-unknown
17944256261Smrg						basic_os=$field2
18044256261Smrg						;;
18144256261Smrg					# Manufacturers
18244256261Smrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
18344256261Smrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
18444256261Smrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
18544256261Smrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
18644256261Smrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
18744256261Smrg					| ultra | tti* | harris | dolphin | highlevel | gould \
18844256261Smrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
18944256261Smrg					| microblaze* | sim | cisco \
19044256261Smrg					| oki | wec | wrs | winbond)
19144256261Smrg						basic_machine=$field1-$field2
19244256261Smrg						basic_os=
19344256261Smrg						;;
19444256261Smrg					*)
19544256261Smrg						basic_machine=$field1
19644256261Smrg						basic_os=$field2
19744256261Smrg						;;
19844256261Smrg				esac
19944256261Smrg			;;
20044256261Smrg		esac
201c06b6b69Smrg		;;
20244256261Smrg	*)
20344256261Smrg		# Convert single-component short-hands not valid as part of
20444256261Smrg		# multi-component configurations.
20544256261Smrg		case $field1 in
20644256261Smrg			386bsd)
20744256261Smrg				basic_machine=i386-pc
20844256261Smrg				basic_os=bsd
20944256261Smrg				;;
21044256261Smrg			a29khif)
21144256261Smrg				basic_machine=a29k-amd
21244256261Smrg				basic_os=udi
21344256261Smrg				;;
21444256261Smrg			adobe68k)
21544256261Smrg				basic_machine=m68010-adobe
21644256261Smrg				basic_os=scout
21744256261Smrg				;;
21844256261Smrg			alliant)
21944256261Smrg				basic_machine=fx80-alliant
22044256261Smrg				basic_os=
22144256261Smrg				;;
22244256261Smrg			altos | altos3068)
22344256261Smrg				basic_machine=m68k-altos
22444256261Smrg				basic_os=
22544256261Smrg				;;
22644256261Smrg			am29k)
22744256261Smrg				basic_machine=a29k-none
22844256261Smrg				basic_os=bsd
22944256261Smrg				;;
23044256261Smrg			amdahl)
23144256261Smrg				basic_machine=580-amdahl
23244256261Smrg				basic_os=sysv
23344256261Smrg				;;
23444256261Smrg			amiga)
23544256261Smrg				basic_machine=m68k-unknown
23644256261Smrg				basic_os=
23744256261Smrg				;;
23844256261Smrg			amigaos | amigados)
23944256261Smrg				basic_machine=m68k-unknown
24044256261Smrg				basic_os=amigaos
24144256261Smrg				;;
24244256261Smrg			amigaunix | amix)
24344256261Smrg				basic_machine=m68k-unknown
24444256261Smrg				basic_os=sysv4
24544256261Smrg				;;
24644256261Smrg			apollo68)
24744256261Smrg				basic_machine=m68k-apollo
24844256261Smrg				basic_os=sysv
24944256261Smrg				;;
25044256261Smrg			apollo68bsd)
25144256261Smrg				basic_machine=m68k-apollo
25244256261Smrg				basic_os=bsd
25344256261Smrg				;;
25444256261Smrg			aros)
25544256261Smrg				basic_machine=i386-pc
25644256261Smrg				basic_os=aros
25744256261Smrg				;;
25844256261Smrg			aux)
25944256261Smrg				basic_machine=m68k-apple
26044256261Smrg				basic_os=aux
26144256261Smrg				;;
26244256261Smrg			balance)
26344256261Smrg				basic_machine=ns32k-sequent
26444256261Smrg				basic_os=dynix
26544256261Smrg				;;
26644256261Smrg			blackfin)
26744256261Smrg				basic_machine=bfin-unknown
26844256261Smrg				basic_os=linux
26944256261Smrg				;;
27044256261Smrg			cegcc)
27144256261Smrg				basic_machine=arm-unknown
27244256261Smrg				basic_os=cegcc
27344256261Smrg				;;
27444256261Smrg			convex-c1)
27544256261Smrg				basic_machine=c1-convex
27644256261Smrg				basic_os=bsd
27744256261Smrg				;;
27844256261Smrg			convex-c2)
27944256261Smrg				basic_machine=c2-convex
28044256261Smrg				basic_os=bsd
28144256261Smrg				;;
28244256261Smrg			convex-c32)
28344256261Smrg				basic_machine=c32-convex
28444256261Smrg				basic_os=bsd
28544256261Smrg				;;
28644256261Smrg			convex-c34)
28744256261Smrg				basic_machine=c34-convex
28844256261Smrg				basic_os=bsd
28944256261Smrg				;;
29044256261Smrg			convex-c38)
29144256261Smrg				basic_machine=c38-convex
29244256261Smrg				basic_os=bsd
29344256261Smrg				;;
29444256261Smrg			cray)
29544256261Smrg				basic_machine=j90-cray
29644256261Smrg				basic_os=unicos
29744256261Smrg				;;
29844256261Smrg			crds | unos)
29944256261Smrg				basic_machine=m68k-crds
30044256261Smrg				basic_os=
30144256261Smrg				;;
30244256261Smrg			da30)
30344256261Smrg				basic_machine=m68k-da30
30444256261Smrg				basic_os=
30544256261Smrg				;;
30644256261Smrg			decstation | pmax | pmin | dec3100 | decstatn)
30744256261Smrg				basic_machine=mips-dec
30844256261Smrg				basic_os=
30944256261Smrg				;;
31044256261Smrg			delta88)
31144256261Smrg				basic_machine=m88k-motorola
31244256261Smrg				basic_os=sysv3
31344256261Smrg				;;
31444256261Smrg			dicos)
31544256261Smrg				basic_machine=i686-pc
31644256261Smrg				basic_os=dicos
31744256261Smrg				;;
31844256261Smrg			djgpp)
31944256261Smrg				basic_machine=i586-pc
32044256261Smrg				basic_os=msdosdjgpp
32144256261Smrg				;;
32244256261Smrg			ebmon29k)
32344256261Smrg				basic_machine=a29k-amd
32444256261Smrg				basic_os=ebmon
32544256261Smrg				;;
32644256261Smrg			es1800 | OSE68k | ose68k | ose | OSE)
32744256261Smrg				basic_machine=m68k-ericsson
32844256261Smrg				basic_os=ose
32944256261Smrg				;;
33044256261Smrg			gmicro)
33144256261Smrg				basic_machine=tron-gmicro
33244256261Smrg				basic_os=sysv
33344256261Smrg				;;
33444256261Smrg			go32)
33544256261Smrg				basic_machine=i386-pc
33644256261Smrg				basic_os=go32
33744256261Smrg				;;
33844256261Smrg			h8300hms)
33944256261Smrg				basic_machine=h8300-hitachi
34044256261Smrg				basic_os=hms
34144256261Smrg				;;
34244256261Smrg			h8300xray)
34344256261Smrg				basic_machine=h8300-hitachi
34444256261Smrg				basic_os=xray
34544256261Smrg				;;
34644256261Smrg			h8500hms)
34744256261Smrg				basic_machine=h8500-hitachi
34844256261Smrg				basic_os=hms
34944256261Smrg				;;
35044256261Smrg			harris)
35144256261Smrg				basic_machine=m88k-harris
35244256261Smrg				basic_os=sysv3
35344256261Smrg				;;
35444256261Smrg			hp300 | hp300hpux)
35544256261Smrg				basic_machine=m68k-hp
35644256261Smrg				basic_os=hpux
35744256261Smrg				;;
35844256261Smrg			hp300bsd)
35944256261Smrg				basic_machine=m68k-hp
36044256261Smrg				basic_os=bsd
36144256261Smrg				;;
36244256261Smrg			hppaosf)
36344256261Smrg				basic_machine=hppa1.1-hp
36444256261Smrg				basic_os=osf
36544256261Smrg				;;
36644256261Smrg			hppro)
36744256261Smrg				basic_machine=hppa1.1-hp
36844256261Smrg				basic_os=proelf
36944256261Smrg				;;
37044256261Smrg			i386mach)
37144256261Smrg				basic_machine=i386-mach
37244256261Smrg				basic_os=mach
37344256261Smrg				;;
37444256261Smrg			isi68 | isi)
37544256261Smrg				basic_machine=m68k-isi
37644256261Smrg				basic_os=sysv
37744256261Smrg				;;
37844256261Smrg			m68knommu)
37944256261Smrg				basic_machine=m68k-unknown
38044256261Smrg				basic_os=linux
38144256261Smrg				;;
38244256261Smrg			magnum | m3230)
38344256261Smrg				basic_machine=mips-mips
38444256261Smrg				basic_os=sysv
38544256261Smrg				;;
38644256261Smrg			merlin)
38744256261Smrg				basic_machine=ns32k-utek
38844256261Smrg				basic_os=sysv
38944256261Smrg				;;
39044256261Smrg			mingw64)
39144256261Smrg				basic_machine=x86_64-pc
39244256261Smrg				basic_os=mingw64
39344256261Smrg				;;
39444256261Smrg			mingw32)
39544256261Smrg				basic_machine=i686-pc
39644256261Smrg				basic_os=mingw32
39744256261Smrg				;;
39844256261Smrg			mingw32ce)
39944256261Smrg				basic_machine=arm-unknown
40044256261Smrg				basic_os=mingw32ce
40144256261Smrg				;;
40244256261Smrg			monitor)
40344256261Smrg				basic_machine=m68k-rom68k
40444256261Smrg				basic_os=coff
40544256261Smrg				;;
40644256261Smrg			morphos)
40744256261Smrg				basic_machine=powerpc-unknown
40844256261Smrg				basic_os=morphos
40944256261Smrg				;;
41044256261Smrg			moxiebox)
41144256261Smrg				basic_machine=moxie-unknown
41244256261Smrg				basic_os=moxiebox
41344256261Smrg				;;
41444256261Smrg			msdos)
41544256261Smrg				basic_machine=i386-pc
41644256261Smrg				basic_os=msdos
41744256261Smrg				;;
41844256261Smrg			msys)
41944256261Smrg				basic_machine=i686-pc
42044256261Smrg				basic_os=msys
42144256261Smrg				;;
42244256261Smrg			mvs)
42344256261Smrg				basic_machine=i370-ibm
42444256261Smrg				basic_os=mvs
42544256261Smrg				;;
42644256261Smrg			nacl)
42744256261Smrg				basic_machine=le32-unknown
42844256261Smrg				basic_os=nacl
42944256261Smrg				;;
43044256261Smrg			ncr3000)
43144256261Smrg				basic_machine=i486-ncr
43244256261Smrg				basic_os=sysv4
43344256261Smrg				;;
43444256261Smrg			netbsd386)
43544256261Smrg				basic_machine=i386-pc
43644256261Smrg				basic_os=netbsd
43744256261Smrg				;;
43844256261Smrg			netwinder)
43944256261Smrg				basic_machine=armv4l-rebel
44044256261Smrg				basic_os=linux
44144256261Smrg				;;
44244256261Smrg			news | news700 | news800 | news900)
44344256261Smrg				basic_machine=m68k-sony
44444256261Smrg				basic_os=newsos
44544256261Smrg				;;
44644256261Smrg			news1000)
44744256261Smrg				basic_machine=m68030-sony
44844256261Smrg				basic_os=newsos
44944256261Smrg				;;
45044256261Smrg			necv70)
45144256261Smrg				basic_machine=v70-nec
45244256261Smrg				basic_os=sysv
45344256261Smrg				;;
45444256261Smrg			nh3000)
45544256261Smrg				basic_machine=m68k-harris
45644256261Smrg				basic_os=cxux
45744256261Smrg				;;
45844256261Smrg			nh[45]000)
45944256261Smrg				basic_machine=m88k-harris
46044256261Smrg				basic_os=cxux
46144256261Smrg				;;
46244256261Smrg			nindy960)
46344256261Smrg				basic_machine=i960-intel
46444256261Smrg				basic_os=nindy
46544256261Smrg				;;
46644256261Smrg			mon960)
46744256261Smrg				basic_machine=i960-intel
46844256261Smrg				basic_os=mon960
46944256261Smrg				;;
47044256261Smrg			nonstopux)
47144256261Smrg				basic_machine=mips-compaq
47244256261Smrg				basic_os=nonstopux
47344256261Smrg				;;
47444256261Smrg			os400)
47544256261Smrg				basic_machine=powerpc-ibm
47644256261Smrg				basic_os=os400
47744256261Smrg				;;
47844256261Smrg			OSE68000 | ose68000)
47944256261Smrg				basic_machine=m68000-ericsson
48044256261Smrg				basic_os=ose
48144256261Smrg				;;
48244256261Smrg			os68k)
48344256261Smrg				basic_machine=m68k-none
48444256261Smrg				basic_os=os68k
48544256261Smrg				;;
48644256261Smrg			paragon)
48744256261Smrg				basic_machine=i860-intel
48844256261Smrg				basic_os=osf
48944256261Smrg				;;
49044256261Smrg			parisc)
49144256261Smrg				basic_machine=hppa-unknown
49244256261Smrg				basic_os=linux
49344256261Smrg				;;
49444256261Smrg			psp)
49544256261Smrg				basic_machine=mipsallegrexel-sony
49644256261Smrg				basic_os=psp
49744256261Smrg				;;
49844256261Smrg			pw32)
49944256261Smrg				basic_machine=i586-unknown
50044256261Smrg				basic_os=pw32
50144256261Smrg				;;
50244256261Smrg			rdos | rdos64)
50344256261Smrg				basic_machine=x86_64-pc
50444256261Smrg				basic_os=rdos
50544256261Smrg				;;
50644256261Smrg			rdos32)
50744256261Smrg				basic_machine=i386-pc
50844256261Smrg				basic_os=rdos
50944256261Smrg				;;
51044256261Smrg			rom68k)
51144256261Smrg				basic_machine=m68k-rom68k
51244256261Smrg				basic_os=coff
51344256261Smrg				;;
51444256261Smrg			sa29200)
51544256261Smrg				basic_machine=a29k-amd
51644256261Smrg				basic_os=udi
51744256261Smrg				;;
51844256261Smrg			sei)
51944256261Smrg				basic_machine=mips-sei
52044256261Smrg				basic_os=seiux
52144256261Smrg				;;
52244256261Smrg			sequent)
52344256261Smrg				basic_machine=i386-sequent
52444256261Smrg				basic_os=
52544256261Smrg				;;
52644256261Smrg			sps7)
52744256261Smrg				basic_machine=m68k-bull
52844256261Smrg				basic_os=sysv2
52944256261Smrg				;;
53044256261Smrg			st2000)
53144256261Smrg				basic_machine=m68k-tandem
53244256261Smrg				basic_os=
53344256261Smrg				;;
53444256261Smrg			stratus)
53544256261Smrg				basic_machine=i860-stratus
53644256261Smrg				basic_os=sysv4
53744256261Smrg				;;
53844256261Smrg			sun2)
53944256261Smrg				basic_machine=m68000-sun
54044256261Smrg				basic_os=
54144256261Smrg				;;
54244256261Smrg			sun2os3)
54344256261Smrg				basic_machine=m68000-sun
54444256261Smrg				basic_os=sunos3
54544256261Smrg				;;
54644256261Smrg			sun2os4)
54744256261Smrg				basic_machine=m68000-sun
54844256261Smrg				basic_os=sunos4
54944256261Smrg				;;
55044256261Smrg			sun3)
55144256261Smrg				basic_machine=m68k-sun
55244256261Smrg				basic_os=
55344256261Smrg				;;
55444256261Smrg			sun3os3)
55544256261Smrg				basic_machine=m68k-sun
55644256261Smrg				basic_os=sunos3
55744256261Smrg				;;
55844256261Smrg			sun3os4)
55944256261Smrg				basic_machine=m68k-sun
56044256261Smrg				basic_os=sunos4
56144256261Smrg				;;
56244256261Smrg			sun4)
56344256261Smrg				basic_machine=sparc-sun
56444256261Smrg				basic_os=
56544256261Smrg				;;
56644256261Smrg			sun4os3)
56744256261Smrg				basic_machine=sparc-sun
56844256261Smrg				basic_os=sunos3
56944256261Smrg				;;
57044256261Smrg			sun4os4)
57144256261Smrg				basic_machine=sparc-sun
57244256261Smrg				basic_os=sunos4
57344256261Smrg				;;
57444256261Smrg			sun4sol2)
57544256261Smrg				basic_machine=sparc-sun
57644256261Smrg				basic_os=solaris2
57744256261Smrg				;;
57844256261Smrg			sun386 | sun386i | roadrunner)
57944256261Smrg				basic_machine=i386-sun
58044256261Smrg				basic_os=
58144256261Smrg				;;
58244256261Smrg			sv1)
58344256261Smrg				basic_machine=sv1-cray
58444256261Smrg				basic_os=unicos
58544256261Smrg				;;
58644256261Smrg			symmetry)
58744256261Smrg				basic_machine=i386-sequent
58844256261Smrg				basic_os=dynix
58944256261Smrg				;;
59044256261Smrg			t3e)
59144256261Smrg				basic_machine=alphaev5-cray
59244256261Smrg				basic_os=unicos
59344256261Smrg				;;
59444256261Smrg			t90)
59544256261Smrg				basic_machine=t90-cray
59644256261Smrg				basic_os=unicos
59744256261Smrg				;;
59844256261Smrg			toad1)
59944256261Smrg				basic_machine=pdp10-xkl
60044256261Smrg				basic_os=tops20
60144256261Smrg				;;
60244256261Smrg			tpf)
60344256261Smrg				basic_machine=s390x-ibm
60444256261Smrg				basic_os=tpf
60544256261Smrg				;;
60644256261Smrg			udi29k)
60744256261Smrg				basic_machine=a29k-amd
60844256261Smrg				basic_os=udi
60944256261Smrg				;;
61044256261Smrg			ultra3)
61144256261Smrg				basic_machine=a29k-nyu
61244256261Smrg				basic_os=sym1
61344256261Smrg				;;
61444256261Smrg			v810 | necv810)
61544256261Smrg				basic_machine=v810-nec
61644256261Smrg				basic_os=none
61744256261Smrg				;;
61844256261Smrg			vaxv)
61944256261Smrg				basic_machine=vax-dec
62044256261Smrg				basic_os=sysv
62144256261Smrg				;;
62244256261Smrg			vms)
62344256261Smrg				basic_machine=vax-dec
62444256261Smrg				basic_os=vms
62544256261Smrg				;;
62644256261Smrg			vsta)
62744256261Smrg				basic_machine=i386-pc
62844256261Smrg				basic_os=vsta
62944256261Smrg				;;
63044256261Smrg			vxworks960)
63144256261Smrg				basic_machine=i960-wrs
63244256261Smrg				basic_os=vxworks
63344256261Smrg				;;
63444256261Smrg			vxworks68)
63544256261Smrg				basic_machine=m68k-wrs
63644256261Smrg				basic_os=vxworks
63744256261Smrg				;;
63844256261Smrg			vxworks29k)
63944256261Smrg				basic_machine=a29k-wrs
64044256261Smrg				basic_os=vxworks
64144256261Smrg				;;
64244256261Smrg			xbox)
64344256261Smrg				basic_machine=i686-pc
64444256261Smrg				basic_os=mingw32
64544256261Smrg				;;
64644256261Smrg			ymp)
64744256261Smrg				basic_machine=ymp-cray
64844256261Smrg				basic_os=unicos
64944256261Smrg				;;
65044256261Smrg			*)
65144256261Smrg				basic_machine=$1
65244256261Smrg				basic_os=
65344256261Smrg				;;
65444256261Smrg		esac
655c06b6b69Smrg		;;
656c06b6b69Smrgesac
657c06b6b69Smrg
65844256261Smrg# Decode 1-component or ad-hoc basic machines
659c06b6b69Smrgcase $basic_machine in
66044256261Smrg	# Here we handle the default manufacturer of certain CPU types.  It is in
66144256261Smrg	# some cases the only manufacturer, in others, it is the most popular.
66244256261Smrg	w89k)
66344256261Smrg		cpu=hppa1.1
66444256261Smrg		vendor=winbond
665c06b6b69Smrg		;;
66644256261Smrg	op50n)
66744256261Smrg		cpu=hppa1.1
66844256261Smrg		vendor=oki
669c06b6b69Smrg		;;
67044256261Smrg	op60c)
67144256261Smrg		cpu=hppa1.1
67244256261Smrg		vendor=oki
6739f4658d1Smrg		;;
67444256261Smrg	ibm*)
67544256261Smrg		cpu=i370
67644256261Smrg		vendor=ibm
677a1d73b4bSmrg		;;
67844256261Smrg	orion105)
67944256261Smrg		cpu=clipper
68044256261Smrg		vendor=highlevel
6817a5ec427Smrg		;;
68244256261Smrg	mac | mpw | mac-mpw)
68344256261Smrg		cpu=m68k
68444256261Smrg		vendor=apple
685a1d73b4bSmrg		;;
68644256261Smrg	pmac | pmac-mpw)
68744256261Smrg		cpu=powerpc
68844256261Smrg		vendor=apple
689a1d73b4bSmrg		;;
690a1d73b4bSmrg
691c06b6b69Smrg	# Recognize the various machine names and aliases which stand
692c06b6b69Smrg	# for a CPU type and a company and sometimes even an OS.
693c06b6b69Smrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
69444256261Smrg		cpu=m68000
69544256261Smrg		vendor=att
696c06b6b69Smrg		;;
697c06b6b69Smrg	3b*)
69844256261Smrg		cpu=we32k
69944256261Smrg		vendor=att
7009f4658d1Smrg		;;
7017d17d341Smrg	bluegene*)
70244256261Smrg		cpu=powerpc
70344256261Smrg		vendor=ibm
70444256261Smrg		basic_os=cnk
705c06b6b69Smrg		;;
706c06b6b69Smrg	decsystem10* | dec10*)
70744256261Smrg		cpu=pdp10
70844256261Smrg		vendor=dec
70944256261Smrg		basic_os=tops10
710c06b6b69Smrg		;;
711c06b6b69Smrg	decsystem20* | dec20*)
71244256261Smrg		cpu=pdp10
71344256261Smrg		vendor=dec
71444256261Smrg		basic_os=tops20
715c06b6b69Smrg		;;
716c06b6b69Smrg	delta | 3300 | motorola-3300 | motorola-delta \
717c06b6b69Smrg	      | 3300-motorola | delta-motorola)
71844256261Smrg		cpu=m68k
71944256261Smrg		vendor=motorola
7209f4658d1Smrg		;;
72144256261Smrg	dpx2*)
72244256261Smrg		cpu=m68k
72344256261Smrg		vendor=bull
72444256261Smrg		basic_os=sysv3
725c06b6b69Smrg		;;
726c06b6b69Smrg	encore | umax | mmax)
72744256261Smrg		cpu=ns32k
72844256261Smrg		vendor=encore
729c06b6b69Smrg		;;
73044256261Smrg	elxsi)
73144256261Smrg		cpu=elxsi
73244256261Smrg		vendor=elxsi
73344256261Smrg		basic_os=${basic_os:-bsd}
734c06b6b69Smrg		;;
735c06b6b69Smrg	fx2800)
73644256261Smrg		cpu=i860
73744256261Smrg		vendor=alliant
738c06b6b69Smrg		;;
739c06b6b69Smrg	genix)
74044256261Smrg		cpu=ns32k
74144256261Smrg		vendor=ns
742c06b6b69Smrg		;;
743c06b6b69Smrg	h3050r* | hiux*)
74444256261Smrg		cpu=hppa1.1
74544256261Smrg		vendor=hitachi
74644256261Smrg		basic_os=hiuxwe2
747c06b6b69Smrg		;;
748c06b6b69Smrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
74944256261Smrg		cpu=hppa1.0
75044256261Smrg		vendor=hp
751c06b6b69Smrg		;;
752c06b6b69Smrg	hp9k2[0-9][0-9] | hp9k31[0-9])
75344256261Smrg		cpu=m68000
75444256261Smrg		vendor=hp
755c06b6b69Smrg		;;
756c06b6b69Smrg	hp9k3[2-9][0-9])
75744256261Smrg		cpu=m68k
75844256261Smrg		vendor=hp
759c06b6b69Smrg		;;
760c06b6b69Smrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
76144256261Smrg		cpu=hppa1.0
76244256261Smrg		vendor=hp
763c06b6b69Smrg		;;
764c06b6b69Smrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
76544256261Smrg		cpu=hppa1.1
76644256261Smrg		vendor=hp
767c06b6b69Smrg		;;
768c06b6b69Smrg	hp9k78[0-9] | hp78[0-9])
769c06b6b69Smrg		# FIXME: really hppa2.0-hp
77044256261Smrg		cpu=hppa1.1
77144256261Smrg		vendor=hp
772c06b6b69Smrg		;;
773c06b6b69Smrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
774c06b6b69Smrg		# FIXME: really hppa2.0-hp
77544256261Smrg		cpu=hppa1.1
77644256261Smrg		vendor=hp
777c06b6b69Smrg		;;
778c06b6b69Smrg	hp9k8[0-9][13679] | hp8[0-9][13679])
77944256261Smrg		cpu=hppa1.1
78044256261Smrg		vendor=hp
781c06b6b69Smrg		;;
782c06b6b69Smrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
78344256261Smrg		cpu=hppa1.0
78444256261Smrg		vendor=hp
785c06b6b69Smrg		;;
786c06b6b69Smrg	i*86v32)
78744256261Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
78844256261Smrg		vendor=pc
78944256261Smrg		basic_os=sysv32
790c06b6b69Smrg		;;
791c06b6b69Smrg	i*86v4*)
79244256261Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79344256261Smrg		vendor=pc
79444256261Smrg		basic_os=sysv4
795c06b6b69Smrg		;;
796c06b6b69Smrg	i*86v)
79744256261Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79844256261Smrg		vendor=pc
79944256261Smrg		basic_os=sysv
800c06b6b69Smrg		;;
801c06b6b69Smrg	i*86sol2)
80244256261Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
80344256261Smrg		vendor=pc
80444256261Smrg		basic_os=solaris2
805c06b6b69Smrg		;;
80644256261Smrg	j90 | j90-cray)
80744256261Smrg		cpu=j90
80844256261Smrg		vendor=cray
80944256261Smrg		basic_os=${basic_os:-unicos}
810c06b6b69Smrg		;;
811c06b6b69Smrg	iris | iris4d)
81244256261Smrg		cpu=mips
81344256261Smrg		vendor=sgi
81444256261Smrg		case $basic_os in
81544256261Smrg		    irix*)
816c06b6b69Smrg			;;
817c06b6b69Smrg		    *)
81844256261Smrg			basic_os=irix4
819c06b6b69Smrg			;;
820c06b6b69Smrg		esac
821c06b6b69Smrg		;;
822c06b6b69Smrg	miniframe)
82344256261Smrg		cpu=m68000
82444256261Smrg		vendor=convergent
825c06b6b69Smrg		;;
82644256261Smrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
82744256261Smrg		cpu=m68k
82844256261Smrg		vendor=atari
82944256261Smrg		basic_os=mint
830c06b6b69Smrg		;;
831c06b6b69Smrg	news-3600 | risc-news)
83244256261Smrg		cpu=mips
83344256261Smrg		vendor=sony
83444256261Smrg		basic_os=newsos
83544256261Smrg		;;
83644256261Smrg	next | m*-next)
83744256261Smrg		cpu=m68k
83844256261Smrg		vendor=next
83944256261Smrg		case $basic_os in
84044256261Smrg		    openstep*)
84144256261Smrg		        ;;
84244256261Smrg		    nextstep*)
843c06b6b69Smrg			;;
84444256261Smrg		    ns2*)
84544256261Smrg		      basic_os=nextstep2
846c06b6b69Smrg			;;
847c06b6b69Smrg		    *)
84844256261Smrg		      basic_os=nextstep3
849c06b6b69Smrg			;;
850c06b6b69Smrg		esac
851c06b6b69Smrg		;;
852c06b6b69Smrg	np1)
85344256261Smrg		cpu=np1
85444256261Smrg		vendor=gould
855c06b6b69Smrg		;;
856c06b6b69Smrg	op50n-* | op60c-*)
85744256261Smrg		cpu=hppa1.1
85844256261Smrg		vendor=oki
85944256261Smrg		basic_os=proelf
860c06b6b69Smrg		;;
861c06b6b69Smrg	pa-hitachi)
86244256261Smrg		cpu=hppa1.1
86344256261Smrg		vendor=hitachi
86444256261Smrg		basic_os=hiuxwe2
8659f4658d1Smrg		;;
866c06b6b69Smrg	pbd)
86744256261Smrg		cpu=sparc
86844256261Smrg		vendor=tti
869c06b6b69Smrg		;;
870c06b6b69Smrg	pbb)
87144256261Smrg		cpu=m68k
87244256261Smrg		vendor=tti
873c06b6b69Smrg		;;
87444256261Smrg	pc532)
87544256261Smrg		cpu=ns32k
87644256261Smrg		vendor=pc532
877c06b6b69Smrg		;;
878c06b6b69Smrg	pn)
87944256261Smrg		cpu=pn
88044256261Smrg		vendor=gould
881c06b6b69Smrg		;;
88244256261Smrg	power)
88344256261Smrg		cpu=power
88444256261Smrg		vendor=ibm
885c06b6b69Smrg		;;
886c06b6b69Smrg	ps2)
88744256261Smrg		cpu=i386
88844256261Smrg		vendor=ibm
889c06b6b69Smrg		;;
890c06b6b69Smrg	rm[46]00)
89144256261Smrg		cpu=mips
89244256261Smrg		vendor=siemens
893c06b6b69Smrg		;;
894c06b6b69Smrg	rtpc | rtpc-*)
89544256261Smrg		cpu=romp
89644256261Smrg		vendor=ibm
8979f4658d1Smrg		;;
89844256261Smrg	sde)
89944256261Smrg		cpu=mipsisa32
90044256261Smrg		vendor=sde
90144256261Smrg		basic_os=${basic_os:-elf}
902c06b6b69Smrg		;;
90344256261Smrg	simso-wrs)
90444256261Smrg		cpu=sparclite
90544256261Smrg		vendor=wrs
90644256261Smrg		basic_os=vxworks
907c06b6b69Smrg		;;
90844256261Smrg	tower | tower-32)
90944256261Smrg		cpu=m68k
91044256261Smrg		vendor=ncr
911c06b6b69Smrg		;;
91244256261Smrg	vpp*|vx|vx-*)
91344256261Smrg		cpu=f301
91444256261Smrg		vendor=fujitsu
9159f4658d1Smrg		;;
91644256261Smrg	w65)
91744256261Smrg		cpu=w65
91844256261Smrg		vendor=wdc
919c06b6b69Smrg		;;
92044256261Smrg	w89k-*)
92144256261Smrg		cpu=hppa1.1
92244256261Smrg		vendor=winbond
92344256261Smrg		basic_os=proelf
924c06b6b69Smrg		;;
92544256261Smrg	none)
92644256261Smrg		cpu=none
92744256261Smrg		vendor=none
928c06b6b69Smrg		;;
92944256261Smrg	leon|leon[3-9])
93044256261Smrg		cpu=sparc
93144256261Smrg		vendor=$basic_machine
9329f4658d1Smrg		;;
93344256261Smrg	leon-*|leon[3-9]-*)
93444256261Smrg		cpu=sparc
93544256261Smrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
936c06b6b69Smrg		;;
93744256261Smrg
93844256261Smrg	*-*)
93944256261Smrg		# shellcheck disable=SC2162
94044256261Smrg		saved_IFS=$IFS
94144256261Smrg		IFS="-" read cpu vendor <<EOF
94244256261Smrg$basic_machine
94344256261SmrgEOF
94444256261Smrg		IFS=$saved_IFS
945c06b6b69Smrg		;;
94644256261Smrg	# We use `pc' rather than `unknown'
94744256261Smrg	# because (1) that's what they normally are, and
94844256261Smrg	# (2) the word "unknown" tends to confuse beginning users.
94944256261Smrg	i*86 | x86_64)
95044256261Smrg		cpu=$basic_machine
95144256261Smrg		vendor=pc
952c06b6b69Smrg		;;
95344256261Smrg	# These rules are duplicated from below for sake of the special case above;
95444256261Smrg	# i.e. things that normalized to x86 arches should also default to "pc"
95544256261Smrg	pc98)
95644256261Smrg		cpu=i386
95744256261Smrg		vendor=pc
958c06b6b69Smrg		;;
95944256261Smrg	x64 | amd64)
96044256261Smrg		cpu=x86_64
96144256261Smrg		vendor=pc
962c06b6b69Smrg		;;
96344256261Smrg	# Recognize the basic CPU types without company name.
96444256261Smrg	*)
96544256261Smrg		cpu=$basic_machine
96644256261Smrg		vendor=unknown
967c06b6b69Smrg		;;
96844256261Smrgesac
96944256261Smrg
97044256261Smrgunset -v basic_machine
97144256261Smrg
97244256261Smrg# Decode basic machines in the full and proper CPU-Company form.
97344256261Smrgcase $cpu-$vendor in
97444256261Smrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
97544256261Smrg	# some cases the only manufacturer, in others, it is the most popular.
97644256261Smrg	craynv-unknown)
97744256261Smrg		vendor=cray
97844256261Smrg		basic_os=${basic_os:-unicosmp}
979a1d73b4bSmrg		;;
98044256261Smrg	c90-unknown | c90-cray)
98144256261Smrg		vendor=cray
98244256261Smrg		basic_os=${Basic_os:-unicos}
983c06b6b69Smrg		;;
98444256261Smrg	fx80-unknown)
98544256261Smrg		vendor=alliant
986c06b6b69Smrg		;;
98744256261Smrg	romp-unknown)
98844256261Smrg		vendor=ibm
989c06b6b69Smrg		;;
99044256261Smrg	mmix-unknown)
99144256261Smrg		vendor=knuth
992c06b6b69Smrg		;;
99344256261Smrg	microblaze-unknown | microblazeel-unknown)
99444256261Smrg		vendor=xilinx
995c06b6b69Smrg		;;
99644256261Smrg	rs6000-unknown)
99744256261Smrg		vendor=ibm
998c06b6b69Smrg		;;
99944256261Smrg	vax-unknown)
100044256261Smrg		vendor=dec
1001c06b6b69Smrg		;;
100244256261Smrg	pdp11-unknown)
100344256261Smrg		vendor=dec
1004c06b6b69Smrg		;;
100544256261Smrg	we32k-unknown)
100644256261Smrg		vendor=att
1007c06b6b69Smrg		;;
100844256261Smrg	cydra-unknown)
100944256261Smrg		vendor=cydrome
1010c06b6b69Smrg		;;
101144256261Smrg	i370-ibm*)
101244256261Smrg		vendor=ibm
1013c06b6b69Smrg		;;
101444256261Smrg	orion-unknown)
101544256261Smrg		vendor=highlevel
1016c06b6b69Smrg		;;
101744256261Smrg	xps-unknown | xps100-unknown)
101844256261Smrg		cpu=xps100
101944256261Smrg		vendor=honeywell
1020c06b6b69Smrg		;;
102144256261Smrg
102244256261Smrg	# Here we normalize CPU types with a missing or matching vendor
102344256261Smrg	armh-unknown | armh-alt)
102444256261Smrg		cpu=armv7l
102544256261Smrg		vendor=alt
102644256261Smrg		basic_os=${basic_os:-linux-gnueabihf}
1027c06b6b69Smrg		;;
102844256261Smrg	dpx20-unknown | dpx20-bull)
102944256261Smrg		cpu=rs6000
103044256261Smrg		vendor=bull
103144256261Smrg		basic_os=${basic_os:-bosx}
1032c06b6b69Smrg		;;
103344256261Smrg
103444256261Smrg	# Here we normalize CPU types irrespective of the vendor
103544256261Smrg	amd64-*)
103644256261Smrg		cpu=x86_64
10379f4658d1Smrg		;;
103844256261Smrg	blackfin-*)
103944256261Smrg		cpu=bfin
104044256261Smrg		basic_os=linux
1041c06b6b69Smrg		;;
104244256261Smrg	c54x-*)
104344256261Smrg		cpu=tic54x
1044c06b6b69Smrg		;;
104544256261Smrg	c55x-*)
104644256261Smrg		cpu=tic55x
1047c06b6b69Smrg		;;
104844256261Smrg	c6x-*)
104944256261Smrg		cpu=tic6x
1050c06b6b69Smrg		;;
105144256261Smrg	e500v[12]-*)
105244256261Smrg		cpu=powerpc
105344256261Smrg		basic_os=${basic_os}"spe"
10549f4658d1Smrg		;;
105544256261Smrg	mips3*-*)
105644256261Smrg		cpu=mips64
1057c06b6b69Smrg		;;
105844256261Smrg	ms1-*)
105944256261Smrg		cpu=mt
1060c06b6b69Smrg		;;
106144256261Smrg	m68knommu-*)
106244256261Smrg		cpu=m68k
106344256261Smrg		basic_os=linux
1064c06b6b69Smrg		;;
106544256261Smrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
106644256261Smrg		cpu=s12z
1067c06b6b69Smrg		;;
106844256261Smrg	openrisc-*)
106944256261Smrg		cpu=or32
1070c06b6b69Smrg		;;
107144256261Smrg	parisc-*)
107244256261Smrg		cpu=hppa
107344256261Smrg		basic_os=linux
1074c06b6b69Smrg		;;
107544256261Smrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
107644256261Smrg		cpu=i586
1077c06b6b69Smrg		;;
107844256261Smrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
107944256261Smrg		cpu=i686
1080c06b6b69Smrg		;;
108144256261Smrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
108244256261Smrg		cpu=i686
1083c06b6b69Smrg		;;
108444256261Smrg	pentium4-*)
108544256261Smrg		cpu=i786
1086c06b6b69Smrg		;;
108744256261Smrg	pc98-*)
108844256261Smrg		cpu=i386
1089c06b6b69Smrg		;;
109044256261Smrg	ppc-* | ppcbe-*)
109144256261Smrg		cpu=powerpc
10929f4658d1Smrg		;;
109344256261Smrg	ppcle-* | powerpclittle-*)
109444256261Smrg		cpu=powerpcle
1095c06b6b69Smrg		;;
109644256261Smrg	ppc64-*)
109744256261Smrg		cpu=powerpc64
1098a1d73b4bSmrg		;;
109944256261Smrg	ppc64le-* | powerpc64little-*)
110044256261Smrg		cpu=powerpc64le
1101c06b6b69Smrg		;;
110244256261Smrg	sb1-*)
110344256261Smrg		cpu=mipsisa64sb1
1104c06b6b69Smrg		;;
110544256261Smrg	sb1el-*)
110644256261Smrg		cpu=mipsisa64sb1el
1107b20b881bSmrg		;;
110844256261Smrg	sh5e[lb]-*)
110944256261Smrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
1110c06b6b69Smrg		;;
111144256261Smrg	spur-*)
111244256261Smrg		cpu=spur
1113c06b6b69Smrg		;;
111444256261Smrg	strongarm-* | thumb-*)
111544256261Smrg		cpu=arm
1116c06b6b69Smrg		;;
111744256261Smrg	tx39-*)
111844256261Smrg		cpu=mipstx39
1119c06b6b69Smrg		;;
112044256261Smrg	tx39el-*)
112144256261Smrg		cpu=mipstx39el
1122c06b6b69Smrg		;;
112344256261Smrg	x64-*)
112444256261Smrg		cpu=x86_64
11259f4658d1Smrg		;;
112644256261Smrg	xscale-* | xscalee[bl]-*)
112744256261Smrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
1128c06b6b69Smrg		;;
112944256261Smrg	arm64-* | aarch64le-*)
113044256261Smrg		cpu=aarch64
1131c06b6b69Smrg		;;
113244256261Smrg
113344256261Smrg	# Recognize the canonical CPU Types that limit and/or modify the
113444256261Smrg	# company names they are paired with.
113544256261Smrg	cr16-*)
113644256261Smrg		basic_os=${basic_os:-elf}
1137c06b6b69Smrg		;;
113844256261Smrg	crisv32-* | etraxfs*-*)
113944256261Smrg		cpu=crisv32
114044256261Smrg		vendor=axis
1141c06b6b69Smrg		;;
114244256261Smrg	cris-* | etrax*-*)
114344256261Smrg		cpu=cris
114444256261Smrg		vendor=axis
1145c06b6b69Smrg		;;
114644256261Smrg	crx-*)
114744256261Smrg		basic_os=${basic_os:-elf}
1148c06b6b69Smrg		;;
114944256261Smrg	neo-tandem)
115044256261Smrg		cpu=neo
115144256261Smrg		vendor=tandem
1152c06b6b69Smrg		;;
115344256261Smrg	nse-tandem)
115444256261Smrg		cpu=nse
115544256261Smrg		vendor=tandem
1156c06b6b69Smrg		;;
115744256261Smrg	nsr-tandem)
115844256261Smrg		cpu=nsr
115944256261Smrg		vendor=tandem
1160c06b6b69Smrg		;;
116144256261Smrg	nsv-tandem)
116244256261Smrg		cpu=nsv
116344256261Smrg		vendor=tandem
1164c06b6b69Smrg		;;
116544256261Smrg	nsx-tandem)
116644256261Smrg		cpu=nsx
116744256261Smrg		vendor=tandem
1168c06b6b69Smrg		;;
116944256261Smrg	mipsallegrexel-sony)
117044256261Smrg		cpu=mipsallegrexel
117144256261Smrg		vendor=sony
1172c06b6b69Smrg		;;
117344256261Smrg	tile*-*)
117444256261Smrg		basic_os=${basic_os:-linux-gnu}
1175c06b6b69Smrg		;;
117644256261Smrg
1177c06b6b69Smrg	*)
117844256261Smrg		# Recognize the canonical CPU types that are allowed with any
117944256261Smrg		# company name.
118044256261Smrg		case $cpu in
118144256261Smrg			1750a | 580 \
118244256261Smrg			| a29k \
118344256261Smrg			| aarch64 | aarch64_be \
118444256261Smrg			| abacus \
118544256261Smrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
118644256261Smrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
118744256261Smrg			| alphapca5[67] | alpha64pca5[67] \
118844256261Smrg			| am33_2.0 \
118944256261Smrg			| amdgcn \
119044256261Smrg			| arc | arceb | arc32 | arc64 \
119144256261Smrg			| arm | arm[lb]e | arme[lb] | armv* \
119244256261Smrg			| avr | avr32 \
119344256261Smrg			| asmjs \
119444256261Smrg			| ba \
119544256261Smrg			| be32 | be64 \
119644256261Smrg			| bfin | bpf | bs2000 \
119744256261Smrg			| c[123]* | c30 | [cjt]90 | c4x \
119844256261Smrg			| c8051 | clipper | craynv | csky | cydra \
119944256261Smrg			| d10v | d30v | dlx | dsp16xx \
120044256261Smrg			| e2k | elxsi | epiphany \
120144256261Smrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
120244256261Smrg			| h8300 | h8500 \
120344256261Smrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
120444256261Smrg			| hexagon \
120544256261Smrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
120644256261Smrg			| ip2k | iq2000 \
120744256261Smrg			| k1om \
120844256261Smrg			| le32 | le64 \
120944256261Smrg			| lm32 \
121044256261Smrg			| loongarch32 | loongarch64 \
121144256261Smrg			| m32c | m32r | m32rle \
121244256261Smrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
121344256261Smrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
121444256261Smrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
121544256261Smrg			| microblaze | microblazeel \
121644256261Smrg			| mips | mipsbe | mipseb | mipsel | mipsle \
121744256261Smrg			| mips16 \
121844256261Smrg			| mips64 | mips64eb | mips64el \
121944256261Smrg			| mips64octeon | mips64octeonel \
122044256261Smrg			| mips64orion | mips64orionel \
122144256261Smrg			| mips64r5900 | mips64r5900el \
122244256261Smrg			| mips64vr | mips64vrel \
122344256261Smrg			| mips64vr4100 | mips64vr4100el \
122444256261Smrg			| mips64vr4300 | mips64vr4300el \
122544256261Smrg			| mips64vr5000 | mips64vr5000el \
122644256261Smrg			| mips64vr5900 | mips64vr5900el \
122744256261Smrg			| mipsisa32 | mipsisa32el \
122844256261Smrg			| mipsisa32r2 | mipsisa32r2el \
122944256261Smrg			| mipsisa32r3 | mipsisa32r3el \
123044256261Smrg			| mipsisa32r5 | mipsisa32r5el \
123144256261Smrg			| mipsisa32r6 | mipsisa32r6el \
123244256261Smrg			| mipsisa64 | mipsisa64el \
123344256261Smrg			| mipsisa64r2 | mipsisa64r2el \
123444256261Smrg			| mipsisa64r3 | mipsisa64r3el \
123544256261Smrg			| mipsisa64r5 | mipsisa64r5el \
123644256261Smrg			| mipsisa64r6 | mipsisa64r6el \
123744256261Smrg			| mipsisa64sb1 | mipsisa64sb1el \
123844256261Smrg			| mipsisa64sr71k | mipsisa64sr71kel \
123944256261Smrg			| mipsr5900 | mipsr5900el \
124044256261Smrg			| mipstx39 | mipstx39el \
124144256261Smrg			| mmix \
124244256261Smrg			| mn10200 | mn10300 \
124344256261Smrg			| moxie \
124444256261Smrg			| mt \
124544256261Smrg			| msp430 \
124644256261Smrg			| nds32 | nds32le | nds32be \
124744256261Smrg			| nfp \
124844256261Smrg			| nios | nios2 | nios2eb | nios2el \
124944256261Smrg			| none | np1 | ns16k | ns32k | nvptx \
125044256261Smrg			| open8 \
125144256261Smrg			| or1k* \
125244256261Smrg			| or32 \
125344256261Smrg			| orion \
125444256261Smrg			| picochip \
125544256261Smrg			| pdp10 | pdp11 | pj | pjl | pn | power \
125644256261Smrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
125744256261Smrg			| pru \
125844256261Smrg			| pyramid \
125944256261Smrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
126044256261Smrg			| rl78 | romp | rs6000 | rx \
126144256261Smrg			| s390 | s390x \
126244256261Smrg			| score \
126344256261Smrg			| sh | shl \
126444256261Smrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
126544256261Smrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
126644256261Smrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
126744256261Smrg			| sparclite \
126844256261Smrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
126944256261Smrg			| spu \
127044256261Smrg			| tahoe \
127144256261Smrg			| thumbv7* \
127244256261Smrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
127344256261Smrg			| tron \
127444256261Smrg			| ubicom32 \
127544256261Smrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
127644256261Smrg			| vax \
127744256261Smrg			| visium \
127844256261Smrg			| w65 \
127944256261Smrg			| wasm32 | wasm64 \
128044256261Smrg			| we32k \
128144256261Smrg			| x86 | x86_64 | xc16x | xgate | xps100 \
128244256261Smrg			| xstormy16 | xtensa* \
128344256261Smrg			| ymp \
128444256261Smrg			| z8k | z80)
128544256261Smrg				;;
128644256261Smrg
128744256261Smrg			*)
128844256261Smrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
128944256261Smrg				exit 1
129044256261Smrg				;;
129144256261Smrg		esac
1292c06b6b69Smrg		;;
1293c06b6b69Smrgesac
1294c06b6b69Smrg
1295c06b6b69Smrg# Here we canonicalize certain aliases for manufacturers.
129644256261Smrgcase $vendor in
129744256261Smrg	digital*)
129844256261Smrg		vendor=dec
1299c06b6b69Smrg		;;
130044256261Smrg	commodore*)
130144256261Smrg		vendor=cbm
1302c06b6b69Smrg		;;
1303c06b6b69Smrg	*)
1304c06b6b69Smrg		;;
1305c06b6b69Smrgesac
1306c06b6b69Smrg
1307c06b6b69Smrg# Decode manufacturer-specific aliases for certain operating systems.
1308c06b6b69Smrg
130944256261Smrgif test x$basic_os != x
1310c06b6b69Smrgthen
131144256261Smrg
131244256261Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
131344256261Smrg# set os.
131444256261Smrgcase $basic_os in
131544256261Smrg	gnu/linux*)
131644256261Smrg		kernel=linux
131744256261Smrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
131844256261Smrg		;;
131944256261Smrg	os2-emx)
132044256261Smrg		kernel=os2
132144256261Smrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
132244256261Smrg		;;
132344256261Smrg	nto-qnx*)
132444256261Smrg		kernel=nto
132544256261Smrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
132644256261Smrg		;;
132744256261Smrg	*-*)
132844256261Smrg		# shellcheck disable=SC2162
132944256261Smrg		saved_IFS=$IFS
133044256261Smrg		IFS="-" read kernel os <<EOF
133144256261Smrg$basic_os
133244256261SmrgEOF
133344256261Smrg		IFS=$saved_IFS
133444256261Smrg		;;
133544256261Smrg	# Default OS when just kernel was specified
133644256261Smrg	nto*)
133744256261Smrg		kernel=nto
133844256261Smrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
133944256261Smrg		;;
134044256261Smrg	linux*)
134144256261Smrg		kernel=linux
134244256261Smrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
134344256261Smrg		;;
134444256261Smrg	managarm*)
134544256261Smrg		kernel=managarm
134644256261Smrg		os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
134744256261Smrg		;;
134844256261Smrg	*)
134944256261Smrg		kernel=
135044256261Smrg		os=$basic_os
135144256261Smrg		;;
135244256261Smrgesac
135344256261Smrg
135444256261Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
135544256261Smrg# etc.)
1356c06b6b69Smrgcase $os in
135744256261Smrg	# First match some system type aliases that might get confused
135844256261Smrg	# with valid system types.
135944256261Smrg	# solaris* is a basic system type, with this one exception.
136044256261Smrg	auroraux)
136144256261Smrg		os=auroraux
13627d17d341Smrg		;;
136344256261Smrg	bluegene*)
136444256261Smrg		os=cnk
1365c06b6b69Smrg		;;
136644256261Smrg	solaris1 | solaris1.*)
136744256261Smrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
1368c06b6b69Smrg		;;
136944256261Smrg	solaris)
137044256261Smrg		os=solaris2
1371c06b6b69Smrg		;;
137244256261Smrg	unixware*)
137344256261Smrg		os=sysv4.2uw
1374c06b6b69Smrg		;;
137544256261Smrg	# es1800 is here to avoid being matched by es* (a different OS)
137644256261Smrg	es1800*)
137744256261Smrg		os=ose
1378c06b6b69Smrg		;;
137944256261Smrg	# Some version numbers need modification
138044256261Smrg	chorusos*)
138144256261Smrg		os=chorusos
1382c06b6b69Smrg		;;
138344256261Smrg	isc)
138444256261Smrg		os=isc2.2
1385c06b6b69Smrg		;;
138644256261Smrg	sco6)
138744256261Smrg		os=sco5v6
1388c06b6b69Smrg		;;
138944256261Smrg	sco5)
139044256261Smrg		os=sco3.2v5
1391c06b6b69Smrg		;;
139244256261Smrg	sco4)
139344256261Smrg		os=sco3.2v4
1394c06b6b69Smrg		;;
139544256261Smrg	sco3.2.[4-9]*)
139644256261Smrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
13979f4658d1Smrg		;;
139844256261Smrg	sco*v* | scout)
139944256261Smrg		# Don't match below
1400c06b6b69Smrg		;;
140144256261Smrg	sco*)
140244256261Smrg		os=sco3.2v2
1403c06b6b69Smrg		;;
140444256261Smrg	psos*)
140544256261Smrg		os=psos
1406c06b6b69Smrg		;;
140744256261Smrg	qnx*)
140844256261Smrg		os=qnx
1409c06b6b69Smrg		;;
141044256261Smrg	hiux*)
141144256261Smrg		os=hiuxwe2
14129f4658d1Smrg		;;
141344256261Smrg	lynx*178)
141444256261Smrg		os=lynxos178
1415c06b6b69Smrg		;;
141644256261Smrg	lynx*5)
141744256261Smrg		os=lynxos5
1418c06b6b69Smrg		;;
141944256261Smrg	lynxos*)
142044256261Smrg		# don't get caught up in next wildcard
1421c06b6b69Smrg		;;
142244256261Smrg	lynx*)
142344256261Smrg		os=lynxos
1424c06b6b69Smrg		;;
142544256261Smrg	mac[0-9]*)
142644256261Smrg		os=`echo "$os" | sed -e 's|mac|macos|'`
1427c06b6b69Smrg		;;
142844256261Smrg	opened*)
142944256261Smrg		os=openedition
1430c06b6b69Smrg		;;
143144256261Smrg	os400*)
143244256261Smrg		os=os400
1433c06b6b69Smrg		;;
143444256261Smrg	sunos5*)
143544256261Smrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
14369f4658d1Smrg		;;
143744256261Smrg	sunos6*)
143844256261Smrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
1439c06b6b69Smrg		;;
144044256261Smrg	wince*)
144144256261Smrg		os=wince
1442c06b6b69Smrg		;;
144344256261Smrg	utek*)
144444256261Smrg		os=bsd
1445c06b6b69Smrg		;;
144644256261Smrg	dynix*)
144744256261Smrg		os=bsd
1448c06b6b69Smrg		;;
144944256261Smrg	acis*)
145044256261Smrg		os=aos
1451c06b6b69Smrg		;;
145244256261Smrg	atheos*)
145344256261Smrg		os=atheos
1454c06b6b69Smrg		;;
145544256261Smrg	syllable*)
145644256261Smrg		os=syllable
1457c06b6b69Smrg		;;
145844256261Smrg	386bsd)
145944256261Smrg		os=bsd
14609f4658d1Smrg		;;
146144256261Smrg	ctix* | uts*)
146244256261Smrg		os=sysv
1463c06b6b69Smrg		;;
146444256261Smrg	nova*)
146544256261Smrg		os=rtmk-nova
1466c06b6b69Smrg		;;
146744256261Smrg	ns2)
146844256261Smrg		os=nextstep2
1469c06b6b69Smrg		;;
147044256261Smrg	# Preserve the version number of sinix5.
147144256261Smrg	sinix5.*)
147244256261Smrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
1473c06b6b69Smrg		;;
147444256261Smrg	sinix*)
147544256261Smrg		os=sysv4
1476c06b6b69Smrg		;;
147744256261Smrg	tpf*)
147844256261Smrg		os=tpf
1479c06b6b69Smrg		;;
148044256261Smrg	triton*)
148144256261Smrg		os=sysv3
1482c06b6b69Smrg		;;
148344256261Smrg	oss*)
148444256261Smrg		os=sysv3
1485c06b6b69Smrg		;;
148644256261Smrg	svr4*)
148744256261Smrg		os=sysv4
1488c06b6b69Smrg		;;
148944256261Smrg	svr3)
149044256261Smrg		os=sysv3
1491c06b6b69Smrg		;;
149244256261Smrg	sysvr4)
149344256261Smrg		os=sysv4
1494c06b6b69Smrg		;;
149544256261Smrg	ose*)
149644256261Smrg		os=ose
14979f4658d1Smrg		;;
149844256261Smrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
149944256261Smrg		os=mint
1500b20b881bSmrg		;;
150144256261Smrg	dicos*)
150244256261Smrg		os=dicos
1503a1d73b4bSmrg		;;
150444256261Smrg	pikeos*)
150544256261Smrg		# Until real need of OS specific support for
150644256261Smrg		# particular features comes up, bare metal
150744256261Smrg		# configurations are quite functional.
150844256261Smrg		case $cpu in
150944256261Smrg		    arm*)
151044256261Smrg			os=eabi
151144256261Smrg			;;
151244256261Smrg		    *)
151344256261Smrg			os=elf
151444256261Smrg			;;
151544256261Smrg		esac
1516c06b6b69Smrg		;;
1517c06b6b69Smrg	*)
151844256261Smrg		# No normalization, but not necessarily accepted, that comes below.
1519c06b6b69Smrg		;;
1520c06b6b69Smrgesac
152144256261Smrg
1522c06b6b69Smrgelse
1523c06b6b69Smrg
1524c06b6b69Smrg# Here we handle the default operating systems that come with various machines.
1525c06b6b69Smrg# The value should be what the vendor currently ships out the door with their
1526c06b6b69Smrg# machine or put another way, the most popular os provided with the machine.
1527c06b6b69Smrg
1528c06b6b69Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
1529c06b6b69Smrg# "-sun"), then you have to tell the case statement up towards the top
1530c06b6b69Smrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
1531c06b6b69Smrg# will signal an error saying that MANUFACTURER isn't an operating
1532c06b6b69Smrg# system, and we'll never get to this point.
1533c06b6b69Smrg
153444256261Smrgkernel=
153544256261Smrgcase $cpu-$vendor in
1536a1d73b4bSmrg	score-*)
153744256261Smrg		os=elf
15389f4658d1Smrg		;;
1539a1d73b4bSmrg	spu-*)
154044256261Smrg		os=elf
15419f4658d1Smrg		;;
1542c06b6b69Smrg	*-acorn)
154344256261Smrg		os=riscix1.2
1544c06b6b69Smrg		;;
1545c06b6b69Smrg	arm*-rebel)
154644256261Smrg		kernel=linux
154744256261Smrg		os=gnu
1548c06b6b69Smrg		;;
1549c06b6b69Smrg	arm*-semi)
155044256261Smrg		os=aout
1551c06b6b69Smrg		;;
1552a1d73b4bSmrg	c4x-* | tic4x-*)
155344256261Smrg		os=coff
1554a1d73b4bSmrg		;;
15557a5ec427Smrg	c8051-*)
155644256261Smrg		os=elf
155744256261Smrg		;;
155844256261Smrg	clipper-intergraph)
155944256261Smrg		os=clix
15607a5ec427Smrg		;;
15617a5ec427Smrg	hexagon-*)
156244256261Smrg		os=elf
15637a5ec427Smrg		;;
1564a1d73b4bSmrg	tic54x-*)
156544256261Smrg		os=coff
1566a1d73b4bSmrg		;;
1567a1d73b4bSmrg	tic55x-*)
156844256261Smrg		os=coff
1569a1d73b4bSmrg		;;
1570a1d73b4bSmrg	tic6x-*)
157144256261Smrg		os=coff
1572c06b6b69Smrg		;;
1573c06b6b69Smrg	# This must come before the *-dec entry.
1574c06b6b69Smrg	pdp10-*)
157544256261Smrg		os=tops20
1576c06b6b69Smrg		;;
1577c06b6b69Smrg	pdp11-*)
157844256261Smrg		os=none
1579c06b6b69Smrg		;;
1580c06b6b69Smrg	*-dec | vax-*)
158144256261Smrg		os=ultrix4.2
1582c06b6b69Smrg		;;
1583c06b6b69Smrg	m68*-apollo)
158444256261Smrg		os=domain
1585c06b6b69Smrg		;;
1586c06b6b69Smrg	i386-sun)
158744256261Smrg		os=sunos4.0.2
1588c06b6b69Smrg		;;
1589c06b6b69Smrg	m68000-sun)
159044256261Smrg		os=sunos3
1591c06b6b69Smrg		;;
1592c06b6b69Smrg	m68*-cisco)
159344256261Smrg		os=aout
1594c06b6b69Smrg		;;
1595a1d73b4bSmrg	mep-*)
159644256261Smrg		os=elf
15979f4658d1Smrg		;;
1598c06b6b69Smrg	mips*-cisco)
159944256261Smrg		os=elf
1600c06b6b69Smrg		;;
1601c06b6b69Smrg	mips*-*)
160244256261Smrg		os=elf
1603c06b6b69Smrg		;;
1604c06b6b69Smrg	or32-*)
160544256261Smrg		os=coff
1606c06b6b69Smrg		;;
1607c06b6b69Smrg	*-tti)	# must be before sparc entry or we get the wrong os.
160844256261Smrg		os=sysv3
1609c06b6b69Smrg		;;
1610c06b6b69Smrg	sparc-* | *-sun)
161144256261Smrg		os=sunos4.1.1
1612c06b6b69Smrg		;;
161344256261Smrg	pru-*)
161444256261Smrg		os=elf
1615c06b6b69Smrg		;;
161644256261Smrg	*-be)
161744256261Smrg		os=beos
16189f4658d1Smrg		;;
1619c06b6b69Smrg	*-ibm)
162044256261Smrg		os=aix
1621c06b6b69Smrg		;;
1622a1d73b4bSmrg	*-knuth)
162344256261Smrg		os=mmixware
16249f4658d1Smrg		;;
1625c06b6b69Smrg	*-wec)
162644256261Smrg		os=proelf
1627c06b6b69Smrg		;;
1628c06b6b69Smrg	*-winbond)
162944256261Smrg		os=proelf
1630c06b6b69Smrg		;;
1631c06b6b69Smrg	*-oki)
163244256261Smrg		os=proelf
1633c06b6b69Smrg		;;
1634c06b6b69Smrg	*-hp)
163544256261Smrg		os=hpux
1636c06b6b69Smrg		;;
1637c06b6b69Smrg	*-hitachi)
163844256261Smrg		os=hiux
1639c06b6b69Smrg		;;
1640c06b6b69Smrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
164144256261Smrg		os=sysv
1642c06b6b69Smrg		;;
1643c06b6b69Smrg	*-cbm)
164444256261Smrg		os=amigaos
1645c06b6b69Smrg		;;
1646c06b6b69Smrg	*-dg)
164744256261Smrg		os=dgux
1648c06b6b69Smrg		;;
1649c06b6b69Smrg	*-dolphin)
165044256261Smrg		os=sysv3
1651c06b6b69Smrg		;;
1652c06b6b69Smrg	m68k-ccur)
165344256261Smrg		os=rtu
1654c06b6b69Smrg		;;
1655c06b6b69Smrg	m88k-omron*)
165644256261Smrg		os=luna
1657c06b6b69Smrg		;;
165844256261Smrg	*-next)
165944256261Smrg		os=nextstep
1660c06b6b69Smrg		;;
1661c06b6b69Smrg	*-sequent)
166244256261Smrg		os=ptx
1663c06b6b69Smrg		;;
1664c06b6b69Smrg	*-crds)
166544256261Smrg		os=unos
1666c06b6b69Smrg		;;
1667c06b6b69Smrg	*-ns)
166844256261Smrg		os=genix
1669c06b6b69Smrg		;;
1670c06b6b69Smrg	i370-*)
167144256261Smrg		os=mvs
1672c06b6b69Smrg		;;
1673c06b6b69Smrg	*-gould)
167444256261Smrg		os=sysv
1675c06b6b69Smrg		;;
1676c06b6b69Smrg	*-highlevel)
167744256261Smrg		os=bsd
1678c06b6b69Smrg		;;
1679c06b6b69Smrg	*-encore)
168044256261Smrg		os=bsd
1681c06b6b69Smrg		;;
1682c06b6b69Smrg	*-sgi)
168344256261Smrg		os=irix
1684c06b6b69Smrg		;;
1685c06b6b69Smrg	*-siemens)
168644256261Smrg		os=sysv4
1687c06b6b69Smrg		;;
1688c06b6b69Smrg	*-masscomp)
168944256261Smrg		os=rtu
1690c06b6b69Smrg		;;
1691c06b6b69Smrg	f30[01]-fujitsu | f700-fujitsu)
169244256261Smrg		os=uxpv
1693c06b6b69Smrg		;;
1694c06b6b69Smrg	*-rom68k)
169544256261Smrg		os=coff
1696c06b6b69Smrg		;;
1697c06b6b69Smrg	*-*bug)
169844256261Smrg		os=coff
1699c06b6b69Smrg		;;
1700c06b6b69Smrg	*-apple)
170144256261Smrg		os=macos
1702c06b6b69Smrg		;;
1703c06b6b69Smrg	*-atari*)
170444256261Smrg		os=mint
170544256261Smrg		;;
170644256261Smrg	*-wrs)
170744256261Smrg		os=vxworks
1708c06b6b69Smrg		;;
1709c06b6b69Smrg	*)
171044256261Smrg		os=none
1711c06b6b69Smrg		;;
1712c06b6b69Smrgesac
171344256261Smrg
1714c06b6b69Smrgfi
1715c06b6b69Smrg
171644256261Smrg# Now, validate our (potentially fixed-up) OS.
171744256261Smrgcase $os in
171844256261Smrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
171944256261Smrg	musl* | newlib* | relibc* | uclibc*)
172044256261Smrg		;;
172144256261Smrg	# Likewise for "kernel-abi"
172244256261Smrg	eabi* | gnueabi*)
172344256261Smrg		;;
172444256261Smrg	# VxWorks passes extra cpu info in the 4th filed.
172544256261Smrg	simlinux | simwindows | spe)
172644256261Smrg		;;
172744256261Smrg	# Now accept the basic system types.
172844256261Smrg	# The portable systems comes first.
172944256261Smrg	# Each alternative MUST end in a * to match a version number.
173044256261Smrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
173144256261Smrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
173244256261Smrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
173344256261Smrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
173444256261Smrg	     | hiux* | abug | nacl* | netware* | windows* \
173544256261Smrg	     | os9* | macos* | osx* | ios* \
173644256261Smrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
173744256261Smrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
173844256261Smrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
173944256261Smrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
174044256261Smrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
174144256261Smrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
174244256261Smrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
174344256261Smrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
174444256261Smrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
174544256261Smrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
174644256261Smrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
174744256261Smrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
174844256261Smrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
174944256261Smrg	     | midipix* | mingw32* | mingw64* | mint* \
175044256261Smrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
175144256261Smrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
175244256261Smrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
175344256261Smrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
175444256261Smrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
175544256261Smrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
175644256261Smrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
175744256261Smrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
175844256261Smrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
175944256261Smrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
176044256261Smrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
176144256261Smrg	     | fiwix* | mlibc* )
176244256261Smrg		;;
176344256261Smrg	# This one is extra strict with allowed versions
176444256261Smrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
176544256261Smrg		# Don't forget version if it is 3.2v4 or newer.
176644256261Smrg		;;
176744256261Smrg	none)
176844256261Smrg		;;
176944256261Smrg	kernel* )
177044256261Smrg		# Restricted further below
177144256261Smrg		;;
177244256261Smrg	*)
177344256261Smrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
177444256261Smrg		exit 1
177544256261Smrg		;;
177644256261Smrgesac
177744256261Smrg
177844256261Smrg# As a final step for OS-related things, validate the OS-kernel combination
177944256261Smrg# (given a valid OS), if there is a kernel.
178044256261Smrgcase $kernel-$os in
178144256261Smrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
178244256261Smrg		   | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* )
178344256261Smrg		;;
178444256261Smrg	uclinux-uclibc* )
178544256261Smrg		;;
178644256261Smrg	managarm-mlibc* | managarm-kernel* )
178744256261Smrg		;;
178844256261Smrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* )
178944256261Smrg		# These are just libc implementations, not actual OSes, and thus
179044256261Smrg		# require a kernel.
179144256261Smrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
179244256261Smrg		exit 1
179344256261Smrg		;;
179444256261Smrg	-kernel* )
179544256261Smrg		echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2
179644256261Smrg		exit 1
179744256261Smrg		;;
179844256261Smrg	*-kernel* )
179944256261Smrg		echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2
180044256261Smrg		exit 1
180144256261Smrg		;;
180244256261Smrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
180344256261Smrg		;;
180444256261Smrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
180544256261Smrg		;;
180644256261Smrg	nto-qnx*)
180744256261Smrg		;;
180844256261Smrg	os2-emx)
180944256261Smrg		;;
181044256261Smrg	*-eabi* | *-gnueabi*)
181144256261Smrg		;;
181244256261Smrg	-*)
181344256261Smrg		# Blank kernel with real OS is always fine.
181444256261Smrg		;;
181544256261Smrg	*-*)
181644256261Smrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
181744256261Smrg		exit 1
181844256261Smrg		;;
181944256261Smrgesac
182044256261Smrg
1821c06b6b69Smrg# Here we handle the case where we know the os, and the CPU type, but not the
1822c06b6b69Smrg# manufacturer.  We pick the logical manufacturer.
182344256261Smrgcase $vendor in
182444256261Smrg	unknown)
182544256261Smrg		case $cpu-$os in
182644256261Smrg			*-riscix*)
1827c06b6b69Smrg				vendor=acorn
1828c06b6b69Smrg				;;
182944256261Smrg			*-sunos*)
1830c06b6b69Smrg				vendor=sun
1831c06b6b69Smrg				;;
183244256261Smrg			*-cnk* | *-aix*)
1833c06b6b69Smrg				vendor=ibm
1834c06b6b69Smrg				;;
183544256261Smrg			*-beos*)
1836c06b6b69Smrg				vendor=be
1837c06b6b69Smrg				;;
183844256261Smrg			*-hpux*)
1839c06b6b69Smrg				vendor=hp
1840c06b6b69Smrg				;;
184144256261Smrg			*-mpeix*)
1842c06b6b69Smrg				vendor=hp
1843c06b6b69Smrg				;;
184444256261Smrg			*-hiux*)
1845c06b6b69Smrg				vendor=hitachi
1846c06b6b69Smrg				;;
184744256261Smrg			*-unos*)
1848c06b6b69Smrg				vendor=crds
1849c06b6b69Smrg				;;
185044256261Smrg			*-dgux*)
1851c06b6b69Smrg				vendor=dg
1852c06b6b69Smrg				;;
185344256261Smrg			*-luna*)
1854c06b6b69Smrg				vendor=omron
1855c06b6b69Smrg				;;
185644256261Smrg			*-genix*)
1857c06b6b69Smrg				vendor=ns
1858c06b6b69Smrg				;;
185944256261Smrg			*-clix*)
186044256261Smrg				vendor=intergraph
186144256261Smrg				;;
186244256261Smrg			*-mvs* | *-opened*)
186344256261Smrg				vendor=ibm
186444256261Smrg				;;
186544256261Smrg			*-os400*)
1866c06b6b69Smrg				vendor=ibm
1867c06b6b69Smrg				;;
186844256261Smrg			s390-* | s390x-*)
18699f4658d1Smrg				vendor=ibm
18709f4658d1Smrg				;;
187144256261Smrg			*-ptx*)
1872c06b6b69Smrg				vendor=sequent
1873c06b6b69Smrg				;;
187444256261Smrg			*-tpf*)
18759f4658d1Smrg				vendor=ibm
18769f4658d1Smrg				;;
187744256261Smrg			*-vxsim* | *-vxworks* | *-windiss*)
1878c06b6b69Smrg				vendor=wrs
1879c06b6b69Smrg				;;
188044256261Smrg			*-aux*)
1881c06b6b69Smrg				vendor=apple
1882c06b6b69Smrg				;;
188344256261Smrg			*-hms*)
1884c06b6b69Smrg				vendor=hitachi
1885c06b6b69Smrg				;;
188644256261Smrg			*-mpw* | *-macos*)
1887c06b6b69Smrg				vendor=apple
1888c06b6b69Smrg				;;
188944256261Smrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
1890c06b6b69Smrg				vendor=atari
1891c06b6b69Smrg				;;
189244256261Smrg			*-vos*)
1893c06b6b69Smrg				vendor=stratus
1894c06b6b69Smrg				;;
1895c06b6b69Smrg		esac
1896c06b6b69Smrg		;;
1897c06b6b69Smrgesac
1898c06b6b69Smrg
189944256261Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
19009f4658d1Smrgexit
1901c06b6b69Smrg
1902c06b6b69Smrg# Local variables:
190344256261Smrg# eval: (add-hook 'before-save-hook 'time-stamp)
1904c06b6b69Smrg# time-stamp-start: "timestamp='"
1905c06b6b69Smrg# time-stamp-format: "%:y-%02m-%02d"
1906c06b6b69Smrg# time-stamp-end: "'"
1907c06b6b69Smrg# End:
1908