1b9bb67cbSmrg#! /bin/sh
2b9bb67cbSmrg# Configuration validation subroutine script.
318eba588Smrg#   Copyright 1992-2023 Free Software Foundation, Inc.
4b9bb67cbSmrg
518eba588Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale
6b9bb67cbSmrg
718eba588Smrgtimestamp='2023-01-21'
818eba588Smrg
918eba588Smrg# This file is free software; you can redistribute it and/or modify it
1018eba588Smrg# under the terms of the GNU General Public License as published by
1118eba588Smrg# the Free Software Foundation, either version 3 of the License, or
12b9bb67cbSmrg# (at your option) any later version.
13b9bb67cbSmrg#
1418eba588Smrg# This program is distributed in the hope that it will be useful, but
1518eba588Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
1618eba588Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1718eba588Smrg# General Public License for more details.
18b9bb67cbSmrg#
19b9bb67cbSmrg# You should have received a copy of the GNU General Public License
2018eba588Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
21b9bb67cbSmrg#
22b9bb67cbSmrg# As a special exception to the GNU General Public License, if you
23b9bb67cbSmrg# distribute this file as part of a program that contains a
24b9bb67cbSmrg# configuration script generated by Autoconf, you may include it under
2518eba588Smrg# the same distribution terms that you use for the rest of that
2618eba588Smrg# program.  This Exception is an additional permission under section 7
2718eba588Smrg# of the GNU General Public License, version 3 ("GPLv3").
28b9bb67cbSmrg
29b9bb67cbSmrg
3018eba588Smrg# Please send patches to <config-patches@gnu.org>.
31b9bb67cbSmrg#
32b9bb67cbSmrg# Configuration subroutine to validate and canonicalize a configuration type.
33b9bb67cbSmrg# Supply the specified configuration type as an argument.
34b9bb67cbSmrg# If it is invalid, we print an error message on stderr and exit with code 1.
35b9bb67cbSmrg# Otherwise, we print the canonical config type on stdout and succeed.
36b9bb67cbSmrg
37b5d2086dSmrg# You can get the latest version of this script from:
3818eba588Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
39b5d2086dSmrg
40b9bb67cbSmrg# This file is supposed to be the same for all GNU packages
41b9bb67cbSmrg# and recognize all the CPU types, system types and aliases
42b9bb67cbSmrg# that are meaningful with *any* GNU software.
43b9bb67cbSmrg# Each package is responsible for reporting which valid configurations
44b9bb67cbSmrg# it does not support.  The user should be able to distinguish
45b9bb67cbSmrg# a failure to support a valid configuration from a meaningless
46b9bb67cbSmrg# configuration.
47b9bb67cbSmrg
48b9bb67cbSmrg# The goal of this file is to map all the various variations of a given
49b9bb67cbSmrg# machine specification into a single specification in the form:
50b9bb67cbSmrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
51b9bb67cbSmrg# or in some cases, the newer four-part form:
52b9bb67cbSmrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
53b9bb67cbSmrg# It is wrong to echo any other type of specification.
54b9bb67cbSmrg
5518eba588Smrg# The "shellcheck disable" line above the timestamp inhibits complaints
5618eba588Smrg# about features and limitations of the classic Bourne shell that were
5718eba588Smrg# superseded or lifted in POSIX.  However, this script identifies a wide
5818eba588Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
5918eba588Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still
6018eba588Smrg# have a pre-POSIX /bin/sh.
6118eba588Smrg
62b9bb67cbSmrgme=`echo "$0" | sed -e 's,.*/,,'`
63b9bb67cbSmrg
64b9bb67cbSmrgusage="\
6518eba588SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
66b9bb67cbSmrg
67b9bb67cbSmrgCanonicalize a configuration name.
68b9bb67cbSmrg
6918eba588SmrgOptions:
70b9bb67cbSmrg  -h, --help         print this help, then exit
71b9bb67cbSmrg  -t, --time-stamp   print date of last modification, then exit
72b9bb67cbSmrg  -v, --version      print version number, then exit
73b9bb67cbSmrg
74b9bb67cbSmrgReport bugs and patches to <config-patches@gnu.org>."
75b9bb67cbSmrg
76b9bb67cbSmrgversion="\
77b9bb67cbSmrgGNU config.sub ($timestamp)
78b9bb67cbSmrg
7918eba588SmrgCopyright 1992-2023 Free Software Foundation, Inc.
80b9bb67cbSmrg
81b9bb67cbSmrgThis is free software; see the source for copying conditions.  There is NO
82b9bb67cbSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
83b9bb67cbSmrg
84b9bb67cbSmrghelp="
85b9bb67cbSmrgTry \`$me --help' for more information."
86b9bb67cbSmrg
87b9bb67cbSmrg# Parse command line
88b9bb67cbSmrgwhile test $# -gt 0 ; do
89b9bb67cbSmrg  case $1 in
90b9bb67cbSmrg    --time-stamp | --time* | -t )
91b9bb67cbSmrg       echo "$timestamp" ; exit ;;
92b9bb67cbSmrg    --version | -v )
93b9bb67cbSmrg       echo "$version" ; exit ;;
94b9bb67cbSmrg    --help | --h* | -h )
95b9bb67cbSmrg       echo "$usage"; exit ;;
96b9bb67cbSmrg    -- )     # Stop option processing
97b9bb67cbSmrg       shift; break ;;
98b9bb67cbSmrg    - )	# Use stdin as input.
99b9bb67cbSmrg       break ;;
100b9bb67cbSmrg    -* )
10118eba588Smrg       echo "$me: invalid option $1$help" >&2
102b9bb67cbSmrg       exit 1 ;;
103b9bb67cbSmrg
104b9bb67cbSmrg    *local*)
105b9bb67cbSmrg       # First pass through any local machine types.
10618eba588Smrg       echo "$1"
107b9bb67cbSmrg       exit ;;
108b9bb67cbSmrg
109b9bb67cbSmrg    * )
110b9bb67cbSmrg       break ;;
111b9bb67cbSmrg  esac
112b9bb67cbSmrgdone
113b9bb67cbSmrg
114b9bb67cbSmrgcase $# in
115b9bb67cbSmrg 0) echo "$me: missing argument$help" >&2
116b9bb67cbSmrg    exit 1;;
117b9bb67cbSmrg 1) ;;
118b9bb67cbSmrg *) echo "$me: too many arguments$help" >&2
119b9bb67cbSmrg    exit 1;;
120b9bb67cbSmrgesac
121b9bb67cbSmrg
12218eba588Smrg# Split fields of configuration type
12318eba588Smrg# shellcheck disable=SC2162
12418eba588Smrgsaved_IFS=$IFS
12518eba588SmrgIFS="-" read field1 field2 field3 field4 <<EOF
12618eba588Smrg$1
12718eba588SmrgEOF
12818eba588SmrgIFS=$saved_IFS
129b9bb67cbSmrg
13018eba588Smrg# Separate into logical components for further validation
13118eba588Smrgcase $1 in
13218eba588Smrg	*-*-*-*-*)
13318eba588Smrg		echo Invalid configuration \`"$1"\': more than four components >&2
13418eba588Smrg		exit 1
135b9bb67cbSmrg		;;
13618eba588Smrg	*-*-*-*)
13718eba588Smrg		basic_machine=$field1-$field2
13818eba588Smrg		basic_os=$field3-$field4
139b9bb67cbSmrg		;;
14018eba588Smrg	*-*-*)
14118eba588Smrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
14218eba588Smrg		# parts
14318eba588Smrg		maybe_os=$field2-$field3
14418eba588Smrg		case $maybe_os in
14518eba588Smrg			nto-qnx* | linux-* | uclinux-uclibc* \
14618eba588Smrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
14718eba588Smrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
14818eba588Smrg			| storm-chaos* | os2-emx* | rtmk-nova* | managarm-*)
14918eba588Smrg				basic_machine=$field1
15018eba588Smrg				basic_os=$maybe_os
15118eba588Smrg				;;
15218eba588Smrg			android-linux)
15318eba588Smrg				basic_machine=$field1-unknown
15418eba588Smrg				basic_os=linux-android
15518eba588Smrg				;;
15618eba588Smrg			*)
15718eba588Smrg				basic_machine=$field1-$field2
15818eba588Smrg				basic_os=$field3
15918eba588Smrg				;;
16018eba588Smrg		esac
161b9bb67cbSmrg		;;
16218eba588Smrg	*-*)
16318eba588Smrg		# A lone config we happen to match not fitting any pattern
16418eba588Smrg		case $field1-$field2 in
16518eba588Smrg			decstation-3100)
16618eba588Smrg				basic_machine=mips-dec
16718eba588Smrg				basic_os=
16818eba588Smrg				;;
16918eba588Smrg			*-*)
17018eba588Smrg				# Second component is usually, but not always the OS
17118eba588Smrg				case $field2 in
17218eba588Smrg					# Prevent following clause from handling this valid os
17318eba588Smrg					sun*os*)
17418eba588Smrg						basic_machine=$field1
17518eba588Smrg						basic_os=$field2
17618eba588Smrg						;;
17718eba588Smrg					zephyr*)
17818eba588Smrg						basic_machine=$field1-unknown
17918eba588Smrg						basic_os=$field2
18018eba588Smrg						;;
18118eba588Smrg					# Manufacturers
18218eba588Smrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
18318eba588Smrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
18418eba588Smrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
18518eba588Smrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
18618eba588Smrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
18718eba588Smrg					| ultra | tti* | harris | dolphin | highlevel | gould \
18818eba588Smrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
18918eba588Smrg					| microblaze* | sim | cisco \
19018eba588Smrg					| oki | wec | wrs | winbond)
19118eba588Smrg						basic_machine=$field1-$field2
19218eba588Smrg						basic_os=
19318eba588Smrg						;;
19418eba588Smrg					*)
19518eba588Smrg						basic_machine=$field1
19618eba588Smrg						basic_os=$field2
19718eba588Smrg						;;
19818eba588Smrg				esac
19918eba588Smrg			;;
20018eba588Smrg		esac
201b9bb67cbSmrg		;;
20218eba588Smrg	*)
20318eba588Smrg		# Convert single-component short-hands not valid as part of
20418eba588Smrg		# multi-component configurations.
20518eba588Smrg		case $field1 in
20618eba588Smrg			386bsd)
20718eba588Smrg				basic_machine=i386-pc
20818eba588Smrg				basic_os=bsd
20918eba588Smrg				;;
21018eba588Smrg			a29khif)
21118eba588Smrg				basic_machine=a29k-amd
21218eba588Smrg				basic_os=udi
21318eba588Smrg				;;
21418eba588Smrg			adobe68k)
21518eba588Smrg				basic_machine=m68010-adobe
21618eba588Smrg				basic_os=scout
21718eba588Smrg				;;
21818eba588Smrg			alliant)
21918eba588Smrg				basic_machine=fx80-alliant
22018eba588Smrg				basic_os=
22118eba588Smrg				;;
22218eba588Smrg			altos | altos3068)
22318eba588Smrg				basic_machine=m68k-altos
22418eba588Smrg				basic_os=
22518eba588Smrg				;;
22618eba588Smrg			am29k)
22718eba588Smrg				basic_machine=a29k-none
22818eba588Smrg				basic_os=bsd
22918eba588Smrg				;;
23018eba588Smrg			amdahl)
23118eba588Smrg				basic_machine=580-amdahl
23218eba588Smrg				basic_os=sysv
23318eba588Smrg				;;
23418eba588Smrg			amiga)
23518eba588Smrg				basic_machine=m68k-unknown
23618eba588Smrg				basic_os=
23718eba588Smrg				;;
23818eba588Smrg			amigaos | amigados)
23918eba588Smrg				basic_machine=m68k-unknown
24018eba588Smrg				basic_os=amigaos
24118eba588Smrg				;;
24218eba588Smrg			amigaunix | amix)
24318eba588Smrg				basic_machine=m68k-unknown
24418eba588Smrg				basic_os=sysv4
24518eba588Smrg				;;
24618eba588Smrg			apollo68)
24718eba588Smrg				basic_machine=m68k-apollo
24818eba588Smrg				basic_os=sysv
24918eba588Smrg				;;
25018eba588Smrg			apollo68bsd)
25118eba588Smrg				basic_machine=m68k-apollo
25218eba588Smrg				basic_os=bsd
25318eba588Smrg				;;
25418eba588Smrg			aros)
25518eba588Smrg				basic_machine=i386-pc
25618eba588Smrg				basic_os=aros
25718eba588Smrg				;;
25818eba588Smrg			aux)
25918eba588Smrg				basic_machine=m68k-apple
26018eba588Smrg				basic_os=aux
26118eba588Smrg				;;
26218eba588Smrg			balance)
26318eba588Smrg				basic_machine=ns32k-sequent
26418eba588Smrg				basic_os=dynix
26518eba588Smrg				;;
26618eba588Smrg			blackfin)
26718eba588Smrg				basic_machine=bfin-unknown
26818eba588Smrg				basic_os=linux
26918eba588Smrg				;;
27018eba588Smrg			cegcc)
27118eba588Smrg				basic_machine=arm-unknown
27218eba588Smrg				basic_os=cegcc
27318eba588Smrg				;;
27418eba588Smrg			convex-c1)
27518eba588Smrg				basic_machine=c1-convex
27618eba588Smrg				basic_os=bsd
27718eba588Smrg				;;
27818eba588Smrg			convex-c2)
27918eba588Smrg				basic_machine=c2-convex
28018eba588Smrg				basic_os=bsd
28118eba588Smrg				;;
28218eba588Smrg			convex-c32)
28318eba588Smrg				basic_machine=c32-convex
28418eba588Smrg				basic_os=bsd
28518eba588Smrg				;;
28618eba588Smrg			convex-c34)
28718eba588Smrg				basic_machine=c34-convex
28818eba588Smrg				basic_os=bsd
28918eba588Smrg				;;
29018eba588Smrg			convex-c38)
29118eba588Smrg				basic_machine=c38-convex
29218eba588Smrg				basic_os=bsd
29318eba588Smrg				;;
29418eba588Smrg			cray)
29518eba588Smrg				basic_machine=j90-cray
29618eba588Smrg				basic_os=unicos
29718eba588Smrg				;;
29818eba588Smrg			crds | unos)
29918eba588Smrg				basic_machine=m68k-crds
30018eba588Smrg				basic_os=
30118eba588Smrg				;;
30218eba588Smrg			da30)
30318eba588Smrg				basic_machine=m68k-da30
30418eba588Smrg				basic_os=
30518eba588Smrg				;;
30618eba588Smrg			decstation | pmax | pmin | dec3100 | decstatn)
30718eba588Smrg				basic_machine=mips-dec
30818eba588Smrg				basic_os=
30918eba588Smrg				;;
31018eba588Smrg			delta88)
31118eba588Smrg				basic_machine=m88k-motorola
31218eba588Smrg				basic_os=sysv3
31318eba588Smrg				;;
31418eba588Smrg			dicos)
31518eba588Smrg				basic_machine=i686-pc
31618eba588Smrg				basic_os=dicos
31718eba588Smrg				;;
31818eba588Smrg			djgpp)
31918eba588Smrg				basic_machine=i586-pc
32018eba588Smrg				basic_os=msdosdjgpp
32118eba588Smrg				;;
32218eba588Smrg			ebmon29k)
32318eba588Smrg				basic_machine=a29k-amd
32418eba588Smrg				basic_os=ebmon
32518eba588Smrg				;;
32618eba588Smrg			es1800 | OSE68k | ose68k | ose | OSE)
32718eba588Smrg				basic_machine=m68k-ericsson
32818eba588Smrg				basic_os=ose
32918eba588Smrg				;;
33018eba588Smrg			gmicro)
33118eba588Smrg				basic_machine=tron-gmicro
33218eba588Smrg				basic_os=sysv
33318eba588Smrg				;;
33418eba588Smrg			go32)
33518eba588Smrg				basic_machine=i386-pc
33618eba588Smrg				basic_os=go32
33718eba588Smrg				;;
33818eba588Smrg			h8300hms)
33918eba588Smrg				basic_machine=h8300-hitachi
34018eba588Smrg				basic_os=hms
34118eba588Smrg				;;
34218eba588Smrg			h8300xray)
34318eba588Smrg				basic_machine=h8300-hitachi
34418eba588Smrg				basic_os=xray
34518eba588Smrg				;;
34618eba588Smrg			h8500hms)
34718eba588Smrg				basic_machine=h8500-hitachi
34818eba588Smrg				basic_os=hms
34918eba588Smrg				;;
35018eba588Smrg			harris)
35118eba588Smrg				basic_machine=m88k-harris
35218eba588Smrg				basic_os=sysv3
35318eba588Smrg				;;
35418eba588Smrg			hp300 | hp300hpux)
35518eba588Smrg				basic_machine=m68k-hp
35618eba588Smrg				basic_os=hpux
35718eba588Smrg				;;
35818eba588Smrg			hp300bsd)
35918eba588Smrg				basic_machine=m68k-hp
36018eba588Smrg				basic_os=bsd
36118eba588Smrg				;;
36218eba588Smrg			hppaosf)
36318eba588Smrg				basic_machine=hppa1.1-hp
36418eba588Smrg				basic_os=osf
36518eba588Smrg				;;
36618eba588Smrg			hppro)
36718eba588Smrg				basic_machine=hppa1.1-hp
36818eba588Smrg				basic_os=proelf
36918eba588Smrg				;;
37018eba588Smrg			i386mach)
37118eba588Smrg				basic_machine=i386-mach
37218eba588Smrg				basic_os=mach
37318eba588Smrg				;;
37418eba588Smrg			isi68 | isi)
37518eba588Smrg				basic_machine=m68k-isi
37618eba588Smrg				basic_os=sysv
37718eba588Smrg				;;
37818eba588Smrg			m68knommu)
37918eba588Smrg				basic_machine=m68k-unknown
38018eba588Smrg				basic_os=linux
38118eba588Smrg				;;
38218eba588Smrg			magnum | m3230)
38318eba588Smrg				basic_machine=mips-mips
38418eba588Smrg				basic_os=sysv
38518eba588Smrg				;;
38618eba588Smrg			merlin)
38718eba588Smrg				basic_machine=ns32k-utek
38818eba588Smrg				basic_os=sysv
38918eba588Smrg				;;
39018eba588Smrg			mingw64)
39118eba588Smrg				basic_machine=x86_64-pc
39218eba588Smrg				basic_os=mingw64
39318eba588Smrg				;;
39418eba588Smrg			mingw32)
39518eba588Smrg				basic_machine=i686-pc
39618eba588Smrg				basic_os=mingw32
39718eba588Smrg				;;
39818eba588Smrg			mingw32ce)
39918eba588Smrg				basic_machine=arm-unknown
40018eba588Smrg				basic_os=mingw32ce
40118eba588Smrg				;;
40218eba588Smrg			monitor)
40318eba588Smrg				basic_machine=m68k-rom68k
40418eba588Smrg				basic_os=coff
40518eba588Smrg				;;
40618eba588Smrg			morphos)
40718eba588Smrg				basic_machine=powerpc-unknown
40818eba588Smrg				basic_os=morphos
40918eba588Smrg				;;
41018eba588Smrg			moxiebox)
41118eba588Smrg				basic_machine=moxie-unknown
41218eba588Smrg				basic_os=moxiebox
41318eba588Smrg				;;
41418eba588Smrg			msdos)
41518eba588Smrg				basic_machine=i386-pc
41618eba588Smrg				basic_os=msdos
41718eba588Smrg				;;
41818eba588Smrg			msys)
41918eba588Smrg				basic_machine=i686-pc
42018eba588Smrg				basic_os=msys
42118eba588Smrg				;;
42218eba588Smrg			mvs)
42318eba588Smrg				basic_machine=i370-ibm
42418eba588Smrg				basic_os=mvs
42518eba588Smrg				;;
42618eba588Smrg			nacl)
42718eba588Smrg				basic_machine=le32-unknown
42818eba588Smrg				basic_os=nacl
42918eba588Smrg				;;
43018eba588Smrg			ncr3000)
43118eba588Smrg				basic_machine=i486-ncr
43218eba588Smrg				basic_os=sysv4
43318eba588Smrg				;;
43418eba588Smrg			netbsd386)
43518eba588Smrg				basic_machine=i386-pc
43618eba588Smrg				basic_os=netbsd
43718eba588Smrg				;;
43818eba588Smrg			netwinder)
43918eba588Smrg				basic_machine=armv4l-rebel
44018eba588Smrg				basic_os=linux
44118eba588Smrg				;;
44218eba588Smrg			news | news700 | news800 | news900)
44318eba588Smrg				basic_machine=m68k-sony
44418eba588Smrg				basic_os=newsos
44518eba588Smrg				;;
44618eba588Smrg			news1000)
44718eba588Smrg				basic_machine=m68030-sony
44818eba588Smrg				basic_os=newsos
44918eba588Smrg				;;
45018eba588Smrg			necv70)
45118eba588Smrg				basic_machine=v70-nec
45218eba588Smrg				basic_os=sysv
45318eba588Smrg				;;
45418eba588Smrg			nh3000)
45518eba588Smrg				basic_machine=m68k-harris
45618eba588Smrg				basic_os=cxux
45718eba588Smrg				;;
45818eba588Smrg			nh[45]000)
45918eba588Smrg				basic_machine=m88k-harris
46018eba588Smrg				basic_os=cxux
46118eba588Smrg				;;
46218eba588Smrg			nindy960)
46318eba588Smrg				basic_machine=i960-intel
46418eba588Smrg				basic_os=nindy
46518eba588Smrg				;;
46618eba588Smrg			mon960)
46718eba588Smrg				basic_machine=i960-intel
46818eba588Smrg				basic_os=mon960
46918eba588Smrg				;;
47018eba588Smrg			nonstopux)
47118eba588Smrg				basic_machine=mips-compaq
47218eba588Smrg				basic_os=nonstopux
47318eba588Smrg				;;
47418eba588Smrg			os400)
47518eba588Smrg				basic_machine=powerpc-ibm
47618eba588Smrg				basic_os=os400
47718eba588Smrg				;;
47818eba588Smrg			OSE68000 | ose68000)
47918eba588Smrg				basic_machine=m68000-ericsson
48018eba588Smrg				basic_os=ose
48118eba588Smrg				;;
48218eba588Smrg			os68k)
48318eba588Smrg				basic_machine=m68k-none
48418eba588Smrg				basic_os=os68k
48518eba588Smrg				;;
48618eba588Smrg			paragon)
48718eba588Smrg				basic_machine=i860-intel
48818eba588Smrg				basic_os=osf
48918eba588Smrg				;;
49018eba588Smrg			parisc)
49118eba588Smrg				basic_machine=hppa-unknown
49218eba588Smrg				basic_os=linux
49318eba588Smrg				;;
49418eba588Smrg			psp)
49518eba588Smrg				basic_machine=mipsallegrexel-sony
49618eba588Smrg				basic_os=psp
49718eba588Smrg				;;
49818eba588Smrg			pw32)
49918eba588Smrg				basic_machine=i586-unknown
50018eba588Smrg				basic_os=pw32
50118eba588Smrg				;;
50218eba588Smrg			rdos | rdos64)
50318eba588Smrg				basic_machine=x86_64-pc
50418eba588Smrg				basic_os=rdos
50518eba588Smrg				;;
50618eba588Smrg			rdos32)
50718eba588Smrg				basic_machine=i386-pc
50818eba588Smrg				basic_os=rdos
50918eba588Smrg				;;
51018eba588Smrg			rom68k)
51118eba588Smrg				basic_machine=m68k-rom68k
51218eba588Smrg				basic_os=coff
51318eba588Smrg				;;
51418eba588Smrg			sa29200)
51518eba588Smrg				basic_machine=a29k-amd
51618eba588Smrg				basic_os=udi
51718eba588Smrg				;;
51818eba588Smrg			sei)
51918eba588Smrg				basic_machine=mips-sei
52018eba588Smrg				basic_os=seiux
52118eba588Smrg				;;
52218eba588Smrg			sequent)
52318eba588Smrg				basic_machine=i386-sequent
52418eba588Smrg				basic_os=
52518eba588Smrg				;;
52618eba588Smrg			sps7)
52718eba588Smrg				basic_machine=m68k-bull
52818eba588Smrg				basic_os=sysv2
52918eba588Smrg				;;
53018eba588Smrg			st2000)
53118eba588Smrg				basic_machine=m68k-tandem
53218eba588Smrg				basic_os=
53318eba588Smrg				;;
53418eba588Smrg			stratus)
53518eba588Smrg				basic_machine=i860-stratus
53618eba588Smrg				basic_os=sysv4
53718eba588Smrg				;;
53818eba588Smrg			sun2)
53918eba588Smrg				basic_machine=m68000-sun
54018eba588Smrg				basic_os=
54118eba588Smrg				;;
54218eba588Smrg			sun2os3)
54318eba588Smrg				basic_machine=m68000-sun
54418eba588Smrg				basic_os=sunos3
54518eba588Smrg				;;
54618eba588Smrg			sun2os4)
54718eba588Smrg				basic_machine=m68000-sun
54818eba588Smrg				basic_os=sunos4
54918eba588Smrg				;;
55018eba588Smrg			sun3)
55118eba588Smrg				basic_machine=m68k-sun
55218eba588Smrg				basic_os=
55318eba588Smrg				;;
55418eba588Smrg			sun3os3)
55518eba588Smrg				basic_machine=m68k-sun
55618eba588Smrg				basic_os=sunos3
55718eba588Smrg				;;
55818eba588Smrg			sun3os4)
55918eba588Smrg				basic_machine=m68k-sun
56018eba588Smrg				basic_os=sunos4
56118eba588Smrg				;;
56218eba588Smrg			sun4)
56318eba588Smrg				basic_machine=sparc-sun
56418eba588Smrg				basic_os=
56518eba588Smrg				;;
56618eba588Smrg			sun4os3)
56718eba588Smrg				basic_machine=sparc-sun
56818eba588Smrg				basic_os=sunos3
56918eba588Smrg				;;
57018eba588Smrg			sun4os4)
57118eba588Smrg				basic_machine=sparc-sun
57218eba588Smrg				basic_os=sunos4
57318eba588Smrg				;;
57418eba588Smrg			sun4sol2)
57518eba588Smrg				basic_machine=sparc-sun
57618eba588Smrg				basic_os=solaris2
57718eba588Smrg				;;
57818eba588Smrg			sun386 | sun386i | roadrunner)
57918eba588Smrg				basic_machine=i386-sun
58018eba588Smrg				basic_os=
58118eba588Smrg				;;
58218eba588Smrg			sv1)
58318eba588Smrg				basic_machine=sv1-cray
58418eba588Smrg				basic_os=unicos
58518eba588Smrg				;;
58618eba588Smrg			symmetry)
58718eba588Smrg				basic_machine=i386-sequent
58818eba588Smrg				basic_os=dynix
58918eba588Smrg				;;
59018eba588Smrg			t3e)
59118eba588Smrg				basic_machine=alphaev5-cray
59218eba588Smrg				basic_os=unicos
59318eba588Smrg				;;
59418eba588Smrg			t90)
59518eba588Smrg				basic_machine=t90-cray
59618eba588Smrg				basic_os=unicos
59718eba588Smrg				;;
59818eba588Smrg			toad1)
59918eba588Smrg				basic_machine=pdp10-xkl
60018eba588Smrg				basic_os=tops20
60118eba588Smrg				;;
60218eba588Smrg			tpf)
60318eba588Smrg				basic_machine=s390x-ibm
60418eba588Smrg				basic_os=tpf
60518eba588Smrg				;;
60618eba588Smrg			udi29k)
60718eba588Smrg				basic_machine=a29k-amd
60818eba588Smrg				basic_os=udi
60918eba588Smrg				;;
61018eba588Smrg			ultra3)
61118eba588Smrg				basic_machine=a29k-nyu
61218eba588Smrg				basic_os=sym1
61318eba588Smrg				;;
61418eba588Smrg			v810 | necv810)
61518eba588Smrg				basic_machine=v810-nec
61618eba588Smrg				basic_os=none
61718eba588Smrg				;;
61818eba588Smrg			vaxv)
61918eba588Smrg				basic_machine=vax-dec
62018eba588Smrg				basic_os=sysv
62118eba588Smrg				;;
62218eba588Smrg			vms)
62318eba588Smrg				basic_machine=vax-dec
62418eba588Smrg				basic_os=vms
62518eba588Smrg				;;
62618eba588Smrg			vsta)
62718eba588Smrg				basic_machine=i386-pc
62818eba588Smrg				basic_os=vsta
62918eba588Smrg				;;
63018eba588Smrg			vxworks960)
63118eba588Smrg				basic_machine=i960-wrs
63218eba588Smrg				basic_os=vxworks
63318eba588Smrg				;;
63418eba588Smrg			vxworks68)
63518eba588Smrg				basic_machine=m68k-wrs
63618eba588Smrg				basic_os=vxworks
63718eba588Smrg				;;
63818eba588Smrg			vxworks29k)
63918eba588Smrg				basic_machine=a29k-wrs
64018eba588Smrg				basic_os=vxworks
64118eba588Smrg				;;
64218eba588Smrg			xbox)
64318eba588Smrg				basic_machine=i686-pc
64418eba588Smrg				basic_os=mingw32
64518eba588Smrg				;;
64618eba588Smrg			ymp)
64718eba588Smrg				basic_machine=ymp-cray
64818eba588Smrg				basic_os=unicos
64918eba588Smrg				;;
65018eba588Smrg			*)
65118eba588Smrg				basic_machine=$1
65218eba588Smrg				basic_os=
65318eba588Smrg				;;
65418eba588Smrg		esac
655b9bb67cbSmrg		;;
65618eba588Smrgesac
65718eba588Smrg
65818eba588Smrg# Decode 1-component or ad-hoc basic machines
65918eba588Smrgcase $basic_machine in
66018eba588Smrg	# Here we handle the default manufacturer of certain CPU types.  It is in
66118eba588Smrg	# some cases the only manufacturer, in others, it is the most popular.
66218eba588Smrg	w89k)
66318eba588Smrg		cpu=hppa1.1
66418eba588Smrg		vendor=winbond
665b9bb67cbSmrg		;;
66618eba588Smrg	op50n)
66718eba588Smrg		cpu=hppa1.1
66818eba588Smrg		vendor=oki
669b9bb67cbSmrg		;;
67018eba588Smrg	op60c)
67118eba588Smrg		cpu=hppa1.1
67218eba588Smrg		vendor=oki
673b9bb67cbSmrg		;;
67418eba588Smrg	ibm*)
67518eba588Smrg		cpu=i370
67618eba588Smrg		vendor=ibm
677b9bb67cbSmrg		;;
67818eba588Smrg	orion105)
67918eba588Smrg		cpu=clipper
68018eba588Smrg		vendor=highlevel
681b9bb67cbSmrg		;;
68218eba588Smrg	mac | mpw | mac-mpw)
68318eba588Smrg		cpu=m68k
68418eba588Smrg		vendor=apple
685b9bb67cbSmrg		;;
68618eba588Smrg	pmac | pmac-mpw)
68718eba588Smrg		cpu=powerpc
68818eba588Smrg		vendor=apple
689b9bb67cbSmrg		;;
690b9bb67cbSmrg
691b9bb67cbSmrg	# Recognize the various machine names and aliases which stand
692b9bb67cbSmrg	# for a CPU type and a company and sometimes even an OS.
693b9bb67cbSmrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
69418eba588Smrg		cpu=m68000
69518eba588Smrg		vendor=att
696b9bb67cbSmrg		;;
697b9bb67cbSmrg	3b*)
69818eba588Smrg		cpu=we32k
69918eba588Smrg		vendor=att
700b9bb67cbSmrg		;;
701b5d2086dSmrg	bluegene*)
70218eba588Smrg		cpu=powerpc
70318eba588Smrg		vendor=ibm
70418eba588Smrg		basic_os=cnk
705b9bb67cbSmrg		;;
706b9bb67cbSmrg	decsystem10* | dec10*)
70718eba588Smrg		cpu=pdp10
70818eba588Smrg		vendor=dec
70918eba588Smrg		basic_os=tops10
710b9bb67cbSmrg		;;
711b9bb67cbSmrg	decsystem20* | dec20*)
71218eba588Smrg		cpu=pdp10
71318eba588Smrg		vendor=dec
71418eba588Smrg		basic_os=tops20
715b9bb67cbSmrg		;;
716b9bb67cbSmrg	delta | 3300 | motorola-3300 | motorola-delta \
717b9bb67cbSmrg	      | 3300-motorola | delta-motorola)
71818eba588Smrg		cpu=m68k
71918eba588Smrg		vendor=motorola
720b9bb67cbSmrg		;;
72118eba588Smrg	dpx2*)
72218eba588Smrg		cpu=m68k
72318eba588Smrg		vendor=bull
72418eba588Smrg		basic_os=sysv3
725b9bb67cbSmrg		;;
726b9bb67cbSmrg	encore | umax | mmax)
72718eba588Smrg		cpu=ns32k
72818eba588Smrg		vendor=encore
729b9bb67cbSmrg		;;
73018eba588Smrg	elxsi)
73118eba588Smrg		cpu=elxsi
73218eba588Smrg		vendor=elxsi
73318eba588Smrg		basic_os=${basic_os:-bsd}
734b9bb67cbSmrg		;;
735b9bb67cbSmrg	fx2800)
73618eba588Smrg		cpu=i860
73718eba588Smrg		vendor=alliant
738b9bb67cbSmrg		;;
739b9bb67cbSmrg	genix)
74018eba588Smrg		cpu=ns32k
74118eba588Smrg		vendor=ns
742b9bb67cbSmrg		;;
743b9bb67cbSmrg	h3050r* | hiux*)
74418eba588Smrg		cpu=hppa1.1
74518eba588Smrg		vendor=hitachi
74618eba588Smrg		basic_os=hiuxwe2
747b9bb67cbSmrg		;;
748b9bb67cbSmrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
74918eba588Smrg		cpu=hppa1.0
75018eba588Smrg		vendor=hp
751b9bb67cbSmrg		;;
752b9bb67cbSmrg	hp9k2[0-9][0-9] | hp9k31[0-9])
75318eba588Smrg		cpu=m68000
75418eba588Smrg		vendor=hp
755b9bb67cbSmrg		;;
756b9bb67cbSmrg	hp9k3[2-9][0-9])
75718eba588Smrg		cpu=m68k
75818eba588Smrg		vendor=hp
759b9bb67cbSmrg		;;
760b9bb67cbSmrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
76118eba588Smrg		cpu=hppa1.0
76218eba588Smrg		vendor=hp
763b9bb67cbSmrg		;;
764b9bb67cbSmrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
76518eba588Smrg		cpu=hppa1.1
76618eba588Smrg		vendor=hp
767b9bb67cbSmrg		;;
768b9bb67cbSmrg	hp9k78[0-9] | hp78[0-9])
769b9bb67cbSmrg		# FIXME: really hppa2.0-hp
77018eba588Smrg		cpu=hppa1.1
77118eba588Smrg		vendor=hp
772b9bb67cbSmrg		;;
773b9bb67cbSmrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
774b9bb67cbSmrg		# FIXME: really hppa2.0-hp
77518eba588Smrg		cpu=hppa1.1
77618eba588Smrg		vendor=hp
777b9bb67cbSmrg		;;
778b9bb67cbSmrg	hp9k8[0-9][13679] | hp8[0-9][13679])
77918eba588Smrg		cpu=hppa1.1
78018eba588Smrg		vendor=hp
781b9bb67cbSmrg		;;
782b9bb67cbSmrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
78318eba588Smrg		cpu=hppa1.0
78418eba588Smrg		vendor=hp
785b9bb67cbSmrg		;;
786b9bb67cbSmrg	i*86v32)
78718eba588Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
78818eba588Smrg		vendor=pc
78918eba588Smrg		basic_os=sysv32
790b9bb67cbSmrg		;;
791b9bb67cbSmrg	i*86v4*)
79218eba588Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79318eba588Smrg		vendor=pc
79418eba588Smrg		basic_os=sysv4
795b9bb67cbSmrg		;;
796b9bb67cbSmrg	i*86v)
79718eba588Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79818eba588Smrg		vendor=pc
79918eba588Smrg		basic_os=sysv
800b9bb67cbSmrg		;;
801b9bb67cbSmrg	i*86sol2)
80218eba588Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
80318eba588Smrg		vendor=pc
80418eba588Smrg		basic_os=solaris2
805b9bb67cbSmrg		;;
80618eba588Smrg	j90 | j90-cray)
80718eba588Smrg		cpu=j90
80818eba588Smrg		vendor=cray
80918eba588Smrg		basic_os=${basic_os:-unicos}
810b9bb67cbSmrg		;;
811b9bb67cbSmrg	iris | iris4d)
81218eba588Smrg		cpu=mips
81318eba588Smrg		vendor=sgi
81418eba588Smrg		case $basic_os in
81518eba588Smrg		    irix*)
816b9bb67cbSmrg			;;
817b9bb67cbSmrg		    *)
81818eba588Smrg			basic_os=irix4
819b9bb67cbSmrg			;;
820b9bb67cbSmrg		esac
821b9bb67cbSmrg		;;
822b9bb67cbSmrg	miniframe)
82318eba588Smrg		cpu=m68000
82418eba588Smrg		vendor=convergent
825b9bb67cbSmrg		;;
82618eba588Smrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
82718eba588Smrg		cpu=m68k
82818eba588Smrg		vendor=atari
82918eba588Smrg		basic_os=mint
830b9bb67cbSmrg		;;
831b9bb67cbSmrg	news-3600 | risc-news)
83218eba588Smrg		cpu=mips
83318eba588Smrg		vendor=sony
83418eba588Smrg		basic_os=newsos
83518eba588Smrg		;;
83618eba588Smrg	next | m*-next)
83718eba588Smrg		cpu=m68k
83818eba588Smrg		vendor=next
83918eba588Smrg		case $basic_os in
84018eba588Smrg		    openstep*)
84118eba588Smrg		        ;;
84218eba588Smrg		    nextstep*)
843b9bb67cbSmrg			;;
84418eba588Smrg		    ns2*)
84518eba588Smrg		      basic_os=nextstep2
846b9bb67cbSmrg			;;
847b9bb67cbSmrg		    *)
84818eba588Smrg		      basic_os=nextstep3
849b9bb67cbSmrg			;;
850b9bb67cbSmrg		esac
851b9bb67cbSmrg		;;
852b9bb67cbSmrg	np1)
85318eba588Smrg		cpu=np1
85418eba588Smrg		vendor=gould
855b9bb67cbSmrg		;;
856b9bb67cbSmrg	op50n-* | op60c-*)
85718eba588Smrg		cpu=hppa1.1
85818eba588Smrg		vendor=oki
85918eba588Smrg		basic_os=proelf
860b9bb67cbSmrg		;;
861b9bb67cbSmrg	pa-hitachi)
86218eba588Smrg		cpu=hppa1.1
86318eba588Smrg		vendor=hitachi
86418eba588Smrg		basic_os=hiuxwe2
865b9bb67cbSmrg		;;
866b9bb67cbSmrg	pbd)
86718eba588Smrg		cpu=sparc
86818eba588Smrg		vendor=tti
869b9bb67cbSmrg		;;
870b9bb67cbSmrg	pbb)
87118eba588Smrg		cpu=m68k
87218eba588Smrg		vendor=tti
873b9bb67cbSmrg		;;
87418eba588Smrg	pc532)
87518eba588Smrg		cpu=ns32k
87618eba588Smrg		vendor=pc532
877b9bb67cbSmrg		;;
878b9bb67cbSmrg	pn)
87918eba588Smrg		cpu=pn
88018eba588Smrg		vendor=gould
881b9bb67cbSmrg		;;
88218eba588Smrg	power)
88318eba588Smrg		cpu=power
88418eba588Smrg		vendor=ibm
885b9bb67cbSmrg		;;
886b9bb67cbSmrg	ps2)
88718eba588Smrg		cpu=i386
88818eba588Smrg		vendor=ibm
889b9bb67cbSmrg		;;
890b9bb67cbSmrg	rm[46]00)
89118eba588Smrg		cpu=mips
89218eba588Smrg		vendor=siemens
893b9bb67cbSmrg		;;
894b9bb67cbSmrg	rtpc | rtpc-*)
89518eba588Smrg		cpu=romp
89618eba588Smrg		vendor=ibm
897b9bb67cbSmrg		;;
89818eba588Smrg	sde)
89918eba588Smrg		cpu=mipsisa32
90018eba588Smrg		vendor=sde
90118eba588Smrg		basic_os=${basic_os:-elf}
902b9bb67cbSmrg		;;
90318eba588Smrg	simso-wrs)
90418eba588Smrg		cpu=sparclite
90518eba588Smrg		vendor=wrs
90618eba588Smrg		basic_os=vxworks
907b9bb67cbSmrg		;;
90818eba588Smrg	tower | tower-32)
90918eba588Smrg		cpu=m68k
91018eba588Smrg		vendor=ncr
911b9bb67cbSmrg		;;
91218eba588Smrg	vpp*|vx|vx-*)
91318eba588Smrg		cpu=f301
91418eba588Smrg		vendor=fujitsu
915b9bb67cbSmrg		;;
91618eba588Smrg	w65)
91718eba588Smrg		cpu=w65
91818eba588Smrg		vendor=wdc
919b9bb67cbSmrg		;;
92018eba588Smrg	w89k-*)
92118eba588Smrg		cpu=hppa1.1
92218eba588Smrg		vendor=winbond
92318eba588Smrg		basic_os=proelf
924b9bb67cbSmrg		;;
92518eba588Smrg	none)
92618eba588Smrg		cpu=none
92718eba588Smrg		vendor=none
928b9bb67cbSmrg		;;
92918eba588Smrg	leon|leon[3-9])
93018eba588Smrg		cpu=sparc
93118eba588Smrg		vendor=$basic_machine
932b9bb67cbSmrg		;;
93318eba588Smrg	leon-*|leon[3-9]-*)
93418eba588Smrg		cpu=sparc
93518eba588Smrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
936b9bb67cbSmrg		;;
93718eba588Smrg
93818eba588Smrg	*-*)
93918eba588Smrg		# shellcheck disable=SC2162
94018eba588Smrg		saved_IFS=$IFS
94118eba588Smrg		IFS="-" read cpu vendor <<EOF
94218eba588Smrg$basic_machine
94318eba588SmrgEOF
94418eba588Smrg		IFS=$saved_IFS
945b9bb67cbSmrg		;;
94618eba588Smrg	# We use `pc' rather than `unknown'
94718eba588Smrg	# because (1) that's what they normally are, and
94818eba588Smrg	# (2) the word "unknown" tends to confuse beginning users.
94918eba588Smrg	i*86 | x86_64)
95018eba588Smrg		cpu=$basic_machine
95118eba588Smrg		vendor=pc
952b9bb67cbSmrg		;;
95318eba588Smrg	# These rules are duplicated from below for sake of the special case above;
95418eba588Smrg	# i.e. things that normalized to x86 arches should also default to "pc"
95518eba588Smrg	pc98)
95618eba588Smrg		cpu=i386
95718eba588Smrg		vendor=pc
958b9bb67cbSmrg		;;
95918eba588Smrg	x64 | amd64)
96018eba588Smrg		cpu=x86_64
96118eba588Smrg		vendor=pc
962b9bb67cbSmrg		;;
96318eba588Smrg	# Recognize the basic CPU types without company name.
96418eba588Smrg	*)
96518eba588Smrg		cpu=$basic_machine
96618eba588Smrg		vendor=unknown
967b9bb67cbSmrg		;;
96818eba588Smrgesac
96918eba588Smrg
97018eba588Smrgunset -v basic_machine
97118eba588Smrg
97218eba588Smrg# Decode basic machines in the full and proper CPU-Company form.
97318eba588Smrgcase $cpu-$vendor in
97418eba588Smrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
97518eba588Smrg	# some cases the only manufacturer, in others, it is the most popular.
97618eba588Smrg	craynv-unknown)
97718eba588Smrg		vendor=cray
97818eba588Smrg		basic_os=${basic_os:-unicosmp}
979b9bb67cbSmrg		;;
98018eba588Smrg	c90-unknown | c90-cray)
98118eba588Smrg		vendor=cray
98218eba588Smrg		basic_os=${Basic_os:-unicos}
983b9bb67cbSmrg		;;
98418eba588Smrg	fx80-unknown)
98518eba588Smrg		vendor=alliant
986b9bb67cbSmrg		;;
98718eba588Smrg	romp-unknown)
98818eba588Smrg		vendor=ibm
989b9bb67cbSmrg		;;
99018eba588Smrg	mmix-unknown)
99118eba588Smrg		vendor=knuth
992b9bb67cbSmrg		;;
99318eba588Smrg	microblaze-unknown | microblazeel-unknown)
99418eba588Smrg		vendor=xilinx
995b9bb67cbSmrg		;;
99618eba588Smrg	rs6000-unknown)
99718eba588Smrg		vendor=ibm
998b9bb67cbSmrg		;;
99918eba588Smrg	vax-unknown)
100018eba588Smrg		vendor=dec
1001b9bb67cbSmrg		;;
100218eba588Smrg	pdp11-unknown)
100318eba588Smrg		vendor=dec
1004b9bb67cbSmrg		;;
100518eba588Smrg	we32k-unknown)
100618eba588Smrg		vendor=att
1007b9bb67cbSmrg		;;
100818eba588Smrg	cydra-unknown)
100918eba588Smrg		vendor=cydrome
1010b9bb67cbSmrg		;;
101118eba588Smrg	i370-ibm*)
101218eba588Smrg		vendor=ibm
1013b9bb67cbSmrg		;;
101418eba588Smrg	orion-unknown)
101518eba588Smrg		vendor=highlevel
1016b9bb67cbSmrg		;;
101718eba588Smrg	xps-unknown | xps100-unknown)
101818eba588Smrg		cpu=xps100
101918eba588Smrg		vendor=honeywell
1020b9bb67cbSmrg		;;
102118eba588Smrg
102218eba588Smrg	# Here we normalize CPU types with a missing or matching vendor
102318eba588Smrg	armh-unknown | armh-alt)
102418eba588Smrg		cpu=armv7l
102518eba588Smrg		vendor=alt
102618eba588Smrg		basic_os=${basic_os:-linux-gnueabihf}
1027b9bb67cbSmrg		;;
102818eba588Smrg	dpx20-unknown | dpx20-bull)
102918eba588Smrg		cpu=rs6000
103018eba588Smrg		vendor=bull
103118eba588Smrg		basic_os=${basic_os:-bosx}
1032b9bb67cbSmrg		;;
103318eba588Smrg
103418eba588Smrg	# Here we normalize CPU types irrespective of the vendor
103518eba588Smrg	amd64-*)
103618eba588Smrg		cpu=x86_64
1037b9bb67cbSmrg		;;
103818eba588Smrg	blackfin-*)
103918eba588Smrg		cpu=bfin
104018eba588Smrg		basic_os=linux
1041b9bb67cbSmrg		;;
104218eba588Smrg	c54x-*)
104318eba588Smrg		cpu=tic54x
1044b9bb67cbSmrg		;;
104518eba588Smrg	c55x-*)
104618eba588Smrg		cpu=tic55x
1047b9bb67cbSmrg		;;
104818eba588Smrg	c6x-*)
104918eba588Smrg		cpu=tic6x
1050b9bb67cbSmrg		;;
105118eba588Smrg	e500v[12]-*)
105218eba588Smrg		cpu=powerpc
105318eba588Smrg		basic_os=${basic_os}"spe"
1054b9bb67cbSmrg		;;
105518eba588Smrg	mips3*-*)
105618eba588Smrg		cpu=mips64
1057b9bb67cbSmrg		;;
105818eba588Smrg	ms1-*)
105918eba588Smrg		cpu=mt
1060b9bb67cbSmrg		;;
106118eba588Smrg	m68knommu-*)
106218eba588Smrg		cpu=m68k
106318eba588Smrg		basic_os=linux
1064b9bb67cbSmrg		;;
106518eba588Smrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
106618eba588Smrg		cpu=s12z
1067b9bb67cbSmrg		;;
106818eba588Smrg	openrisc-*)
106918eba588Smrg		cpu=or32
1070b9bb67cbSmrg		;;
107118eba588Smrg	parisc-*)
107218eba588Smrg		cpu=hppa
107318eba588Smrg		basic_os=linux
1074b9bb67cbSmrg		;;
107518eba588Smrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
107618eba588Smrg		cpu=i586
1077b9bb67cbSmrg		;;
107818eba588Smrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
107918eba588Smrg		cpu=i686
1080b9bb67cbSmrg		;;
108118eba588Smrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
108218eba588Smrg		cpu=i686
1083b9bb67cbSmrg		;;
108418eba588Smrg	pentium4-*)
108518eba588Smrg		cpu=i786
1086b9bb67cbSmrg		;;
108718eba588Smrg	pc98-*)
108818eba588Smrg		cpu=i386
1089b9bb67cbSmrg		;;
109018eba588Smrg	ppc-* | ppcbe-*)
109118eba588Smrg		cpu=powerpc
1092b9bb67cbSmrg		;;
109318eba588Smrg	ppcle-* | powerpclittle-*)
109418eba588Smrg		cpu=powerpcle
1095b9bb67cbSmrg		;;
109618eba588Smrg	ppc64-*)
109718eba588Smrg		cpu=powerpc64
1098b9bb67cbSmrg		;;
109918eba588Smrg	ppc64le-* | powerpc64little-*)
110018eba588Smrg		cpu=powerpc64le
1101b9bb67cbSmrg		;;
110218eba588Smrg	sb1-*)
110318eba588Smrg		cpu=mipsisa64sb1
1104b9bb67cbSmrg		;;
110518eba588Smrg	sb1el-*)
110618eba588Smrg		cpu=mipsisa64sb1el
1107b9bb67cbSmrg		;;
110818eba588Smrg	sh5e[lb]-*)
110918eba588Smrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
1110b9bb67cbSmrg		;;
111118eba588Smrg	spur-*)
111218eba588Smrg		cpu=spur
1113b9bb67cbSmrg		;;
111418eba588Smrg	strongarm-* | thumb-*)
111518eba588Smrg		cpu=arm
1116b9bb67cbSmrg		;;
111718eba588Smrg	tx39-*)
111818eba588Smrg		cpu=mipstx39
1119b9bb67cbSmrg		;;
112018eba588Smrg	tx39el-*)
112118eba588Smrg		cpu=mipstx39el
1122b9bb67cbSmrg		;;
112318eba588Smrg	x64-*)
112418eba588Smrg		cpu=x86_64
1125b9bb67cbSmrg		;;
112618eba588Smrg	xscale-* | xscalee[bl]-*)
112718eba588Smrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
1128b9bb67cbSmrg		;;
112918eba588Smrg	arm64-* | aarch64le-*)
113018eba588Smrg		cpu=aarch64
1131b9bb67cbSmrg		;;
113218eba588Smrg
113318eba588Smrg	# Recognize the canonical CPU Types that limit and/or modify the
113418eba588Smrg	# company names they are paired with.
113518eba588Smrg	cr16-*)
113618eba588Smrg		basic_os=${basic_os:-elf}
1137b9bb67cbSmrg		;;
113818eba588Smrg	crisv32-* | etraxfs*-*)
113918eba588Smrg		cpu=crisv32
114018eba588Smrg		vendor=axis
1141b9bb67cbSmrg		;;
114218eba588Smrg	cris-* | etrax*-*)
114318eba588Smrg		cpu=cris
114418eba588Smrg		vendor=axis
1145b9bb67cbSmrg		;;
114618eba588Smrg	crx-*)
114718eba588Smrg		basic_os=${basic_os:-elf}
1148b9bb67cbSmrg		;;
114918eba588Smrg	neo-tandem)
115018eba588Smrg		cpu=neo
115118eba588Smrg		vendor=tandem
1152b9bb67cbSmrg		;;
115318eba588Smrg	nse-tandem)
115418eba588Smrg		cpu=nse
115518eba588Smrg		vendor=tandem
1156b9bb67cbSmrg		;;
115718eba588Smrg	nsr-tandem)
115818eba588Smrg		cpu=nsr
115918eba588Smrg		vendor=tandem
1160b9bb67cbSmrg		;;
116118eba588Smrg	nsv-tandem)
116218eba588Smrg		cpu=nsv
116318eba588Smrg		vendor=tandem
1164b9bb67cbSmrg		;;
116518eba588Smrg	nsx-tandem)
116618eba588Smrg		cpu=nsx
116718eba588Smrg		vendor=tandem
1168b9bb67cbSmrg		;;
116918eba588Smrg	mipsallegrexel-sony)
117018eba588Smrg		cpu=mipsallegrexel
117118eba588Smrg		vendor=sony
1172b9bb67cbSmrg		;;
117318eba588Smrg	tile*-*)
117418eba588Smrg		basic_os=${basic_os:-linux-gnu}
1175b9bb67cbSmrg		;;
117618eba588Smrg
1177b9bb67cbSmrg	*)
117818eba588Smrg		# Recognize the canonical CPU types that are allowed with any
117918eba588Smrg		# company name.
118018eba588Smrg		case $cpu in
118118eba588Smrg			1750a | 580 \
118218eba588Smrg			| a29k \
118318eba588Smrg			| aarch64 | aarch64_be \
118418eba588Smrg			| abacus \
118518eba588Smrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
118618eba588Smrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
118718eba588Smrg			| alphapca5[67] | alpha64pca5[67] \
118818eba588Smrg			| am33_2.0 \
118918eba588Smrg			| amdgcn \
119018eba588Smrg			| arc | arceb | arc32 | arc64 \
119118eba588Smrg			| arm | arm[lb]e | arme[lb] | armv* \
119218eba588Smrg			| avr | avr32 \
119318eba588Smrg			| asmjs \
119418eba588Smrg			| ba \
119518eba588Smrg			| be32 | be64 \
119618eba588Smrg			| bfin | bpf | bs2000 \
119718eba588Smrg			| c[123]* | c30 | [cjt]90 | c4x \
119818eba588Smrg			| c8051 | clipper | craynv | csky | cydra \
119918eba588Smrg			| d10v | d30v | dlx | dsp16xx \
120018eba588Smrg			| e2k | elxsi | epiphany \
120118eba588Smrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
120218eba588Smrg			| h8300 | h8500 \
120318eba588Smrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
120418eba588Smrg			| hexagon \
120518eba588Smrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
120618eba588Smrg			| ip2k | iq2000 \
120718eba588Smrg			| k1om \
120818eba588Smrg			| le32 | le64 \
120918eba588Smrg			| lm32 \
121018eba588Smrg			| loongarch32 | loongarch64 \
121118eba588Smrg			| m32c | m32r | m32rle \
121218eba588Smrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
121318eba588Smrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
121418eba588Smrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
121518eba588Smrg			| microblaze | microblazeel \
121618eba588Smrg			| mips | mipsbe | mipseb | mipsel | mipsle \
121718eba588Smrg			| mips16 \
121818eba588Smrg			| mips64 | mips64eb | mips64el \
121918eba588Smrg			| mips64octeon | mips64octeonel \
122018eba588Smrg			| mips64orion | mips64orionel \
122118eba588Smrg			| mips64r5900 | mips64r5900el \
122218eba588Smrg			| mips64vr | mips64vrel \
122318eba588Smrg			| mips64vr4100 | mips64vr4100el \
122418eba588Smrg			| mips64vr4300 | mips64vr4300el \
122518eba588Smrg			| mips64vr5000 | mips64vr5000el \
122618eba588Smrg			| mips64vr5900 | mips64vr5900el \
122718eba588Smrg			| mipsisa32 | mipsisa32el \
122818eba588Smrg			| mipsisa32r2 | mipsisa32r2el \
122918eba588Smrg			| mipsisa32r3 | mipsisa32r3el \
123018eba588Smrg			| mipsisa32r5 | mipsisa32r5el \
123118eba588Smrg			| mipsisa32r6 | mipsisa32r6el \
123218eba588Smrg			| mipsisa64 | mipsisa64el \
123318eba588Smrg			| mipsisa64r2 | mipsisa64r2el \
123418eba588Smrg			| mipsisa64r3 | mipsisa64r3el \
123518eba588Smrg			| mipsisa64r5 | mipsisa64r5el \
123618eba588Smrg			| mipsisa64r6 | mipsisa64r6el \
123718eba588Smrg			| mipsisa64sb1 | mipsisa64sb1el \
123818eba588Smrg			| mipsisa64sr71k | mipsisa64sr71kel \
123918eba588Smrg			| mipsr5900 | mipsr5900el \
124018eba588Smrg			| mipstx39 | mipstx39el \
124118eba588Smrg			| mmix \
124218eba588Smrg			| mn10200 | mn10300 \
124318eba588Smrg			| moxie \
124418eba588Smrg			| mt \
124518eba588Smrg			| msp430 \
124618eba588Smrg			| nds32 | nds32le | nds32be \
124718eba588Smrg			| nfp \
124818eba588Smrg			| nios | nios2 | nios2eb | nios2el \
124918eba588Smrg			| none | np1 | ns16k | ns32k | nvptx \
125018eba588Smrg			| open8 \
125118eba588Smrg			| or1k* \
125218eba588Smrg			| or32 \
125318eba588Smrg			| orion \
125418eba588Smrg			| picochip \
125518eba588Smrg			| pdp10 | pdp11 | pj | pjl | pn | power \
125618eba588Smrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
125718eba588Smrg			| pru \
125818eba588Smrg			| pyramid \
125918eba588Smrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
126018eba588Smrg			| rl78 | romp | rs6000 | rx \
126118eba588Smrg			| s390 | s390x \
126218eba588Smrg			| score \
126318eba588Smrg			| sh | shl \
126418eba588Smrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
126518eba588Smrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
126618eba588Smrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
126718eba588Smrg			| sparclite \
126818eba588Smrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
126918eba588Smrg			| spu \
127018eba588Smrg			| tahoe \
127118eba588Smrg			| thumbv7* \
127218eba588Smrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
127318eba588Smrg			| tron \
127418eba588Smrg			| ubicom32 \
127518eba588Smrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
127618eba588Smrg			| vax \
127718eba588Smrg			| visium \
127818eba588Smrg			| w65 \
127918eba588Smrg			| wasm32 | wasm64 \
128018eba588Smrg			| we32k \
128118eba588Smrg			| x86 | x86_64 | xc16x | xgate | xps100 \
128218eba588Smrg			| xstormy16 | xtensa* \
128318eba588Smrg			| ymp \
128418eba588Smrg			| z8k | z80)
128518eba588Smrg				;;
128618eba588Smrg
128718eba588Smrg			*)
128818eba588Smrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
128918eba588Smrg				exit 1
129018eba588Smrg				;;
129118eba588Smrg		esac
1292b9bb67cbSmrg		;;
1293b9bb67cbSmrgesac
1294b9bb67cbSmrg
1295b9bb67cbSmrg# Here we canonicalize certain aliases for manufacturers.
129618eba588Smrgcase $vendor in
129718eba588Smrg	digital*)
129818eba588Smrg		vendor=dec
1299b9bb67cbSmrg		;;
130018eba588Smrg	commodore*)
130118eba588Smrg		vendor=cbm
1302b9bb67cbSmrg		;;
1303b9bb67cbSmrg	*)
1304b9bb67cbSmrg		;;
1305b9bb67cbSmrgesac
1306b9bb67cbSmrg
1307b9bb67cbSmrg# Decode manufacturer-specific aliases for certain operating systems.
1308b9bb67cbSmrg
130918eba588Smrgif test x$basic_os != x
1310b9bb67cbSmrgthen
131118eba588Smrg
131218eba588Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
131318eba588Smrg# set os.
131418eba588Smrgcase $basic_os in
131518eba588Smrg	gnu/linux*)
131618eba588Smrg		kernel=linux
131718eba588Smrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
131818eba588Smrg		;;
131918eba588Smrg	os2-emx)
132018eba588Smrg		kernel=os2
132118eba588Smrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
132218eba588Smrg		;;
132318eba588Smrg	nto-qnx*)
132418eba588Smrg		kernel=nto
132518eba588Smrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
132618eba588Smrg		;;
132718eba588Smrg	*-*)
132818eba588Smrg		# shellcheck disable=SC2162
132918eba588Smrg		saved_IFS=$IFS
133018eba588Smrg		IFS="-" read kernel os <<EOF
133118eba588Smrg$basic_os
133218eba588SmrgEOF
133318eba588Smrg		IFS=$saved_IFS
133418eba588Smrg		;;
133518eba588Smrg	# Default OS when just kernel was specified
133618eba588Smrg	nto*)
133718eba588Smrg		kernel=nto
133818eba588Smrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
133918eba588Smrg		;;
134018eba588Smrg	linux*)
134118eba588Smrg		kernel=linux
134218eba588Smrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
134318eba588Smrg		;;
134418eba588Smrg	managarm*)
134518eba588Smrg		kernel=managarm
134618eba588Smrg		os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
134718eba588Smrg		;;
134818eba588Smrg	*)
134918eba588Smrg		kernel=
135018eba588Smrg		os=$basic_os
135118eba588Smrg		;;
135218eba588Smrgesac
135318eba588Smrg
135418eba588Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
135518eba588Smrg# etc.)
1356b9bb67cbSmrgcase $os in
135718eba588Smrg	# First match some system type aliases that might get confused
135818eba588Smrg	# with valid system types.
135918eba588Smrg	# solaris* is a basic system type, with this one exception.
136018eba588Smrg	auroraux)
136118eba588Smrg		os=auroraux
1362b5d2086dSmrg		;;
136318eba588Smrg	bluegene*)
136418eba588Smrg		os=cnk
1365b9bb67cbSmrg		;;
136618eba588Smrg	solaris1 | solaris1.*)
136718eba588Smrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
1368b9bb67cbSmrg		;;
136918eba588Smrg	solaris)
137018eba588Smrg		os=solaris2
1371b9bb67cbSmrg		;;
137218eba588Smrg	unixware*)
137318eba588Smrg		os=sysv4.2uw
1374b9bb67cbSmrg		;;
137518eba588Smrg	# es1800 is here to avoid being matched by es* (a different OS)
137618eba588Smrg	es1800*)
137718eba588Smrg		os=ose
1378b9bb67cbSmrg		;;
137918eba588Smrg	# Some version numbers need modification
138018eba588Smrg	chorusos*)
138118eba588Smrg		os=chorusos
1382b9bb67cbSmrg		;;
138318eba588Smrg	isc)
138418eba588Smrg		os=isc2.2
1385b9bb67cbSmrg		;;
138618eba588Smrg	sco6)
138718eba588Smrg		os=sco5v6
1388b9bb67cbSmrg		;;
138918eba588Smrg	sco5)
139018eba588Smrg		os=sco3.2v5
1391b9bb67cbSmrg		;;
139218eba588Smrg	sco4)
139318eba588Smrg		os=sco3.2v4
1394b9bb67cbSmrg		;;
139518eba588Smrg	sco3.2.[4-9]*)
139618eba588Smrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
1397b9bb67cbSmrg		;;
139818eba588Smrg	sco*v* | scout)
139918eba588Smrg		# Don't match below
1400b9bb67cbSmrg		;;
140118eba588Smrg	sco*)
140218eba588Smrg		os=sco3.2v2
1403b9bb67cbSmrg		;;
140418eba588Smrg	psos*)
140518eba588Smrg		os=psos
1406b9bb67cbSmrg		;;
140718eba588Smrg	qnx*)
140818eba588Smrg		os=qnx
1409b9bb67cbSmrg		;;
141018eba588Smrg	hiux*)
141118eba588Smrg		os=hiuxwe2
1412b9bb67cbSmrg		;;
141318eba588Smrg	lynx*178)
141418eba588Smrg		os=lynxos178
1415b9bb67cbSmrg		;;
141618eba588Smrg	lynx*5)
141718eba588Smrg		os=lynxos5
1418b9bb67cbSmrg		;;
141918eba588Smrg	lynxos*)
142018eba588Smrg		# don't get caught up in next wildcard
1421b9bb67cbSmrg		;;
142218eba588Smrg	lynx*)
142318eba588Smrg		os=lynxos
1424b9bb67cbSmrg		;;
142518eba588Smrg	mac[0-9]*)
142618eba588Smrg		os=`echo "$os" | sed -e 's|mac|macos|'`
1427b9bb67cbSmrg		;;
142818eba588Smrg	opened*)
142918eba588Smrg		os=openedition
1430b9bb67cbSmrg		;;
143118eba588Smrg	os400*)
143218eba588Smrg		os=os400
1433b9bb67cbSmrg		;;
143418eba588Smrg	sunos5*)
143518eba588Smrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
1436b9bb67cbSmrg		;;
143718eba588Smrg	sunos6*)
143818eba588Smrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
1439b9bb67cbSmrg		;;
144018eba588Smrg	wince*)
144118eba588Smrg		os=wince
1442b9bb67cbSmrg		;;
144318eba588Smrg	utek*)
144418eba588Smrg		os=bsd
1445b9bb67cbSmrg		;;
144618eba588Smrg	dynix*)
144718eba588Smrg		os=bsd
1448b9bb67cbSmrg		;;
144918eba588Smrg	acis*)
145018eba588Smrg		os=aos
1451b9bb67cbSmrg		;;
145218eba588Smrg	atheos*)
145318eba588Smrg		os=atheos
1454b9bb67cbSmrg		;;
145518eba588Smrg	syllable*)
145618eba588Smrg		os=syllable
1457b9bb67cbSmrg		;;
145818eba588Smrg	386bsd)
145918eba588Smrg		os=bsd
1460b9bb67cbSmrg		;;
146118eba588Smrg	ctix* | uts*)
146218eba588Smrg		os=sysv
1463b9bb67cbSmrg		;;
146418eba588Smrg	nova*)
146518eba588Smrg		os=rtmk-nova
1466b9bb67cbSmrg		;;
146718eba588Smrg	ns2)
146818eba588Smrg		os=nextstep2
1469b9bb67cbSmrg		;;
147018eba588Smrg	# Preserve the version number of sinix5.
147118eba588Smrg	sinix5.*)
147218eba588Smrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
1473b9bb67cbSmrg		;;
147418eba588Smrg	sinix*)
147518eba588Smrg		os=sysv4
1476b9bb67cbSmrg		;;
147718eba588Smrg	tpf*)
147818eba588Smrg		os=tpf
1479b9bb67cbSmrg		;;
148018eba588Smrg	triton*)
148118eba588Smrg		os=sysv3
1482b9bb67cbSmrg		;;
148318eba588Smrg	oss*)
148418eba588Smrg		os=sysv3
1485b9bb67cbSmrg		;;
148618eba588Smrg	svr4*)
148718eba588Smrg		os=sysv4
1488b9bb67cbSmrg		;;
148918eba588Smrg	svr3)
149018eba588Smrg		os=sysv3
1491b9bb67cbSmrg		;;
149218eba588Smrg	sysvr4)
149318eba588Smrg		os=sysv4
1494b9bb67cbSmrg		;;
149518eba588Smrg	ose*)
149618eba588Smrg		os=ose
1497b9bb67cbSmrg		;;
149818eba588Smrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
149918eba588Smrg		os=mint
1500b9bb67cbSmrg		;;
150118eba588Smrg	dicos*)
150218eba588Smrg		os=dicos
1503b9bb67cbSmrg		;;
150418eba588Smrg	pikeos*)
150518eba588Smrg		# Until real need of OS specific support for
150618eba588Smrg		# particular features comes up, bare metal
150718eba588Smrg		# configurations are quite functional.
150818eba588Smrg		case $cpu in
150918eba588Smrg		    arm*)
151018eba588Smrg			os=eabi
151118eba588Smrg			;;
151218eba588Smrg		    *)
151318eba588Smrg			os=elf
151418eba588Smrg			;;
151518eba588Smrg		esac
1516b9bb67cbSmrg		;;
1517b9bb67cbSmrg	*)
151818eba588Smrg		# No normalization, but not necessarily accepted, that comes below.
1519b9bb67cbSmrg		;;
1520b9bb67cbSmrgesac
152118eba588Smrg
1522b9bb67cbSmrgelse
1523b9bb67cbSmrg
1524b9bb67cbSmrg# Here we handle the default operating systems that come with various machines.
1525b9bb67cbSmrg# The value should be what the vendor currently ships out the door with their
1526b9bb67cbSmrg# machine or put another way, the most popular os provided with the machine.
1527b9bb67cbSmrg
1528b9bb67cbSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
1529b9bb67cbSmrg# "-sun"), then you have to tell the case statement up towards the top
1530b9bb67cbSmrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
1531b9bb67cbSmrg# will signal an error saying that MANUFACTURER isn't an operating
1532b9bb67cbSmrg# system, and we'll never get to this point.
1533b9bb67cbSmrg
153418eba588Smrgkernel=
153518eba588Smrgcase $cpu-$vendor in
153618eba588Smrg	score-*)
153718eba588Smrg		os=elf
1538b9bb67cbSmrg		;;
153918eba588Smrg	spu-*)
154018eba588Smrg		os=elf
1541b9bb67cbSmrg		;;
1542b9bb67cbSmrg	*-acorn)
154318eba588Smrg		os=riscix1.2
1544b9bb67cbSmrg		;;
1545b9bb67cbSmrg	arm*-rebel)
154618eba588Smrg		kernel=linux
154718eba588Smrg		os=gnu
1548b9bb67cbSmrg		;;
1549b9bb67cbSmrg	arm*-semi)
155018eba588Smrg		os=aout
155118eba588Smrg		;;
155218eba588Smrg	c4x-* | tic4x-*)
155318eba588Smrg		os=coff
155418eba588Smrg		;;
155518eba588Smrg	c8051-*)
155618eba588Smrg		os=elf
155718eba588Smrg		;;
155818eba588Smrg	clipper-intergraph)
155918eba588Smrg		os=clix
1560b9bb67cbSmrg		;;
156118eba588Smrg	hexagon-*)
156218eba588Smrg		os=elf
1563b9bb67cbSmrg		;;
1564b5d2086dSmrg	tic54x-*)
156518eba588Smrg		os=coff
1566b5d2086dSmrg		;;
1567b5d2086dSmrg	tic55x-*)
156818eba588Smrg		os=coff
1569b5d2086dSmrg		;;
1570b5d2086dSmrg	tic6x-*)
157118eba588Smrg		os=coff
1572b5d2086dSmrg		;;
1573b9bb67cbSmrg	# This must come before the *-dec entry.
1574b9bb67cbSmrg	pdp10-*)
157518eba588Smrg		os=tops20
1576b9bb67cbSmrg		;;
1577b9bb67cbSmrg	pdp11-*)
157818eba588Smrg		os=none
1579b9bb67cbSmrg		;;
1580b9bb67cbSmrg	*-dec | vax-*)
158118eba588Smrg		os=ultrix4.2
1582b9bb67cbSmrg		;;
1583b9bb67cbSmrg	m68*-apollo)
158418eba588Smrg		os=domain
1585b9bb67cbSmrg		;;
1586b9bb67cbSmrg	i386-sun)
158718eba588Smrg		os=sunos4.0.2
1588b9bb67cbSmrg		;;
1589b9bb67cbSmrg	m68000-sun)
159018eba588Smrg		os=sunos3
1591b9bb67cbSmrg		;;
1592b9bb67cbSmrg	m68*-cisco)
159318eba588Smrg		os=aout
1594b9bb67cbSmrg		;;
159518eba588Smrg	mep-*)
159618eba588Smrg		os=elf
1597b9bb67cbSmrg		;;
1598b9bb67cbSmrg	mips*-cisco)
159918eba588Smrg		os=elf
1600b9bb67cbSmrg		;;
1601b9bb67cbSmrg	mips*-*)
160218eba588Smrg		os=elf
1603b9bb67cbSmrg		;;
1604b9bb67cbSmrg	or32-*)
160518eba588Smrg		os=coff
1606b9bb67cbSmrg		;;
1607b9bb67cbSmrg	*-tti)	# must be before sparc entry or we get the wrong os.
160818eba588Smrg		os=sysv3
1609b9bb67cbSmrg		;;
1610b9bb67cbSmrg	sparc-* | *-sun)
161118eba588Smrg		os=sunos4.1.1
1612b9bb67cbSmrg		;;
161318eba588Smrg	pru-*)
161418eba588Smrg		os=elf
1615b9bb67cbSmrg		;;
161618eba588Smrg	*-be)
161718eba588Smrg		os=beos
1618b9bb67cbSmrg		;;
1619b9bb67cbSmrg	*-ibm)
162018eba588Smrg		os=aix
1621b9bb67cbSmrg		;;
162218eba588Smrg	*-knuth)
162318eba588Smrg		os=mmixware
1624b9bb67cbSmrg		;;
1625b9bb67cbSmrg	*-wec)
162618eba588Smrg		os=proelf
1627b9bb67cbSmrg		;;
1628b9bb67cbSmrg	*-winbond)
162918eba588Smrg		os=proelf
1630b9bb67cbSmrg		;;
1631b9bb67cbSmrg	*-oki)
163218eba588Smrg		os=proelf
1633b9bb67cbSmrg		;;
1634b9bb67cbSmrg	*-hp)
163518eba588Smrg		os=hpux
1636b9bb67cbSmrg		;;
1637b9bb67cbSmrg	*-hitachi)
163818eba588Smrg		os=hiux
1639b9bb67cbSmrg		;;
1640b9bb67cbSmrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
164118eba588Smrg		os=sysv
1642b9bb67cbSmrg		;;
1643b9bb67cbSmrg	*-cbm)
164418eba588Smrg		os=amigaos
1645b9bb67cbSmrg		;;
1646b9bb67cbSmrg	*-dg)
164718eba588Smrg		os=dgux
1648b9bb67cbSmrg		;;
1649b9bb67cbSmrg	*-dolphin)
165018eba588Smrg		os=sysv3
1651b9bb67cbSmrg		;;
1652b9bb67cbSmrg	m68k-ccur)
165318eba588Smrg		os=rtu
1654b9bb67cbSmrg		;;
1655b9bb67cbSmrg	m88k-omron*)
165618eba588Smrg		os=luna
1657b9bb67cbSmrg		;;
165818eba588Smrg	*-next)
165918eba588Smrg		os=nextstep
1660b9bb67cbSmrg		;;
1661b9bb67cbSmrg	*-sequent)
166218eba588Smrg		os=ptx
1663b9bb67cbSmrg		;;
1664b9bb67cbSmrg	*-crds)
166518eba588Smrg		os=unos
1666b9bb67cbSmrg		;;
1667b9bb67cbSmrg	*-ns)
166818eba588Smrg		os=genix
1669b9bb67cbSmrg		;;
1670b9bb67cbSmrg	i370-*)
167118eba588Smrg		os=mvs
1672b9bb67cbSmrg		;;
1673b9bb67cbSmrg	*-gould)
167418eba588Smrg		os=sysv
1675b9bb67cbSmrg		;;
1676b9bb67cbSmrg	*-highlevel)
167718eba588Smrg		os=bsd
1678b9bb67cbSmrg		;;
1679b9bb67cbSmrg	*-encore)
168018eba588Smrg		os=bsd
1681b9bb67cbSmrg		;;
1682b9bb67cbSmrg	*-sgi)
168318eba588Smrg		os=irix
1684b9bb67cbSmrg		;;
1685b9bb67cbSmrg	*-siemens)
168618eba588Smrg		os=sysv4
1687b9bb67cbSmrg		;;
1688b9bb67cbSmrg	*-masscomp)
168918eba588Smrg		os=rtu
1690b9bb67cbSmrg		;;
1691b9bb67cbSmrg	f30[01]-fujitsu | f700-fujitsu)
169218eba588Smrg		os=uxpv
1693b9bb67cbSmrg		;;
1694b9bb67cbSmrg	*-rom68k)
169518eba588Smrg		os=coff
1696b9bb67cbSmrg		;;
1697b9bb67cbSmrg	*-*bug)
169818eba588Smrg		os=coff
1699b9bb67cbSmrg		;;
1700b9bb67cbSmrg	*-apple)
170118eba588Smrg		os=macos
1702b9bb67cbSmrg		;;
1703b9bb67cbSmrg	*-atari*)
170418eba588Smrg		os=mint
170518eba588Smrg		;;
170618eba588Smrg	*-wrs)
170718eba588Smrg		os=vxworks
1708b9bb67cbSmrg		;;
1709b9bb67cbSmrg	*)
171018eba588Smrg		os=none
1711b9bb67cbSmrg		;;
1712b9bb67cbSmrgesac
171318eba588Smrg
1714b9bb67cbSmrgfi
1715b9bb67cbSmrg
171618eba588Smrg# Now, validate our (potentially fixed-up) OS.
171718eba588Smrgcase $os in
171818eba588Smrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
171918eba588Smrg	musl* | newlib* | relibc* | uclibc*)
172018eba588Smrg		;;
172118eba588Smrg	# Likewise for "kernel-abi"
172218eba588Smrg	eabi* | gnueabi*)
172318eba588Smrg		;;
172418eba588Smrg	# VxWorks passes extra cpu info in the 4th filed.
172518eba588Smrg	simlinux | simwindows | spe)
172618eba588Smrg		;;
172718eba588Smrg	# Now accept the basic system types.
172818eba588Smrg	# The portable systems comes first.
172918eba588Smrg	# Each alternative MUST end in a * to match a version number.
173018eba588Smrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
173118eba588Smrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
173218eba588Smrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
173318eba588Smrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
173418eba588Smrg	     | hiux* | abug | nacl* | netware* | windows* \
173518eba588Smrg	     | os9* | macos* | osx* | ios* \
173618eba588Smrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
173718eba588Smrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
173818eba588Smrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
173918eba588Smrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
174018eba588Smrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
174118eba588Smrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
174218eba588Smrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
174318eba588Smrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
174418eba588Smrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
174518eba588Smrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
174618eba588Smrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
174718eba588Smrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
174818eba588Smrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
174918eba588Smrg	     | midipix* | mingw32* | mingw64* | mint* \
175018eba588Smrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
175118eba588Smrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
175218eba588Smrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
175318eba588Smrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
175418eba588Smrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
175518eba588Smrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
175618eba588Smrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
175718eba588Smrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
175818eba588Smrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
175918eba588Smrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
176018eba588Smrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
176118eba588Smrg	     | fiwix* | mlibc* )
176218eba588Smrg		;;
176318eba588Smrg	# This one is extra strict with allowed versions
176418eba588Smrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
176518eba588Smrg		# Don't forget version if it is 3.2v4 or newer.
176618eba588Smrg		;;
176718eba588Smrg	none)
176818eba588Smrg		;;
176918eba588Smrg	kernel* )
177018eba588Smrg		# Restricted further below
177118eba588Smrg		;;
177218eba588Smrg	*)
177318eba588Smrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
177418eba588Smrg		exit 1
177518eba588Smrg		;;
177618eba588Smrgesac
177718eba588Smrg
177818eba588Smrg# As a final step for OS-related things, validate the OS-kernel combination
177918eba588Smrg# (given a valid OS), if there is a kernel.
178018eba588Smrgcase $kernel-$os in
178118eba588Smrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
178218eba588Smrg		   | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* )
178318eba588Smrg		;;
178418eba588Smrg	uclinux-uclibc* )
178518eba588Smrg		;;
178618eba588Smrg	managarm-mlibc* | managarm-kernel* )
178718eba588Smrg		;;
178818eba588Smrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* )
178918eba588Smrg		# These are just libc implementations, not actual OSes, and thus
179018eba588Smrg		# require a kernel.
179118eba588Smrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
179218eba588Smrg		exit 1
179318eba588Smrg		;;
179418eba588Smrg	-kernel* )
179518eba588Smrg		echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2
179618eba588Smrg		exit 1
179718eba588Smrg		;;
179818eba588Smrg	*-kernel* )
179918eba588Smrg		echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2
180018eba588Smrg		exit 1
180118eba588Smrg		;;
180218eba588Smrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
180318eba588Smrg		;;
180418eba588Smrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
180518eba588Smrg		;;
180618eba588Smrg	nto-qnx*)
180718eba588Smrg		;;
180818eba588Smrg	os2-emx)
180918eba588Smrg		;;
181018eba588Smrg	*-eabi* | *-gnueabi*)
181118eba588Smrg		;;
181218eba588Smrg	-*)
181318eba588Smrg		# Blank kernel with real OS is always fine.
181418eba588Smrg		;;
181518eba588Smrg	*-*)
181618eba588Smrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
181718eba588Smrg		exit 1
181818eba588Smrg		;;
181918eba588Smrgesac
182018eba588Smrg
1821b9bb67cbSmrg# Here we handle the case where we know the os, and the CPU type, but not the
1822b9bb67cbSmrg# manufacturer.  We pick the logical manufacturer.
182318eba588Smrgcase $vendor in
182418eba588Smrg	unknown)
182518eba588Smrg		case $cpu-$os in
182618eba588Smrg			*-riscix*)
1827b9bb67cbSmrg				vendor=acorn
1828b9bb67cbSmrg				;;
182918eba588Smrg			*-sunos*)
1830b9bb67cbSmrg				vendor=sun
1831b9bb67cbSmrg				;;
183218eba588Smrg			*-cnk* | *-aix*)
1833b9bb67cbSmrg				vendor=ibm
1834b9bb67cbSmrg				;;
183518eba588Smrg			*-beos*)
1836b9bb67cbSmrg				vendor=be
1837b9bb67cbSmrg				;;
183818eba588Smrg			*-hpux*)
1839b9bb67cbSmrg				vendor=hp
1840b9bb67cbSmrg				;;
184118eba588Smrg			*-mpeix*)
1842b9bb67cbSmrg				vendor=hp
1843b9bb67cbSmrg				;;
184418eba588Smrg			*-hiux*)
1845b9bb67cbSmrg				vendor=hitachi
1846b9bb67cbSmrg				;;
184718eba588Smrg			*-unos*)
1848b9bb67cbSmrg				vendor=crds
1849b9bb67cbSmrg				;;
185018eba588Smrg			*-dgux*)
1851b9bb67cbSmrg				vendor=dg
1852b9bb67cbSmrg				;;
185318eba588Smrg			*-luna*)
1854b9bb67cbSmrg				vendor=omron
1855b9bb67cbSmrg				;;
185618eba588Smrg			*-genix*)
1857b9bb67cbSmrg				vendor=ns
1858b9bb67cbSmrg				;;
185918eba588Smrg			*-clix*)
186018eba588Smrg				vendor=intergraph
186118eba588Smrg				;;
186218eba588Smrg			*-mvs* | *-opened*)
186318eba588Smrg				vendor=ibm
186418eba588Smrg				;;
186518eba588Smrg			*-os400*)
1866b9bb67cbSmrg				vendor=ibm
1867b9bb67cbSmrg				;;
186818eba588Smrg			s390-* | s390x-*)
1869b9bb67cbSmrg				vendor=ibm
1870b9bb67cbSmrg				;;
187118eba588Smrg			*-ptx*)
1872b9bb67cbSmrg				vendor=sequent
1873b9bb67cbSmrg				;;
187418eba588Smrg			*-tpf*)
1875b9bb67cbSmrg				vendor=ibm
1876b9bb67cbSmrg				;;
187718eba588Smrg			*-vxsim* | *-vxworks* | *-windiss*)
1878b9bb67cbSmrg				vendor=wrs
1879b9bb67cbSmrg				;;
188018eba588Smrg			*-aux*)
1881b9bb67cbSmrg				vendor=apple
1882b9bb67cbSmrg				;;
188318eba588Smrg			*-hms*)
1884b9bb67cbSmrg				vendor=hitachi
1885b9bb67cbSmrg				;;
188618eba588Smrg			*-mpw* | *-macos*)
1887b9bb67cbSmrg				vendor=apple
1888b9bb67cbSmrg				;;
188918eba588Smrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
1890b9bb67cbSmrg				vendor=atari
1891b9bb67cbSmrg				;;
189218eba588Smrg			*-vos*)
1893b9bb67cbSmrg				vendor=stratus
1894b9bb67cbSmrg				;;
1895b9bb67cbSmrg		esac
1896b9bb67cbSmrg		;;
1897b9bb67cbSmrgesac
1898b9bb67cbSmrg
189918eba588Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
1900b9bb67cbSmrgexit
1901b9bb67cbSmrg
1902b9bb67cbSmrg# Local variables:
190318eba588Smrg# eval: (add-hook 'before-save-hook 'time-stamp)
1904b9bb67cbSmrg# time-stamp-start: "timestamp='"
1905b9bb67cbSmrg# time-stamp-format: "%:y-%02m-%02d"
1906b9bb67cbSmrg# time-stamp-end: "'"
1907b9bb67cbSmrg# End:
1908