1a6d9b409Smrg#! /bin/sh
2a6d9b409Smrg# Configuration validation subroutine script.
3838f5b0bSmrg#   Copyright 1992-2024 Free Software Foundation, Inc.
4a6d9b409Smrg
592e95ad1Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale
692e95ad1Smrg
7838f5b0bSmrgtimestamp='2024-01-01'
8a6d9b409Smrg
9b91640d3Smrg# This file is free software; you can redistribute it and/or modify it
10b91640d3Smrg# under the terms of the GNU General Public License as published by
11838f5b0bSmrg# the Free Software Foundation, either version 3 of the License, or
12a6d9b409Smrg# (at your option) any later version.
13a6d9b409Smrg#
14b91640d3Smrg# This program is distributed in the hope that it will be useful, but
15b91640d3Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
16b91640d3Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17b91640d3Smrg# General Public License for more details.
18a6d9b409Smrg#
19a6d9b409Smrg# You should have received a copy of the GNU General Public License
208b8e729cSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
21a6d9b409Smrg#
22a6d9b409Smrg# As a special exception to the GNU General Public License, if you
23a6d9b409Smrg# distribute this file as part of a program that contains a
24a6d9b409Smrg# configuration script generated by Autoconf, you may include it under
25b91640d3Smrg# the same distribution terms that you use for the rest of that
26b91640d3Smrg# program.  This Exception is an additional permission under section 7
27b91640d3Smrg# of the GNU General Public License, version 3 ("GPLv3").
28a6d9b409Smrg
29a6d9b409Smrg
30b91640d3Smrg# Please send patches to <config-patches@gnu.org>.
31a6d9b409Smrg#
32a6d9b409Smrg# Configuration subroutine to validate and canonicalize a configuration type.
33a6d9b409Smrg# Supply the specified configuration type as an argument.
34a6d9b409Smrg# If it is invalid, we print an error message on stderr and exit with code 1.
35a6d9b409Smrg# Otherwise, we print the canonical config type on stdout and succeed.
36a6d9b409Smrg
371e5fa1c5Smrg# You can get the latest version of this script from:
3892e95ad1Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
391e5fa1c5Smrg
40a6d9b409Smrg# This file is supposed to be the same for all GNU packages
41a6d9b409Smrg# and recognize all the CPU types, system types and aliases
42a6d9b409Smrg# that are meaningful with *any* GNU software.
43a6d9b409Smrg# Each package is responsible for reporting which valid configurations
44a6d9b409Smrg# it does not support.  The user should be able to distinguish
45a6d9b409Smrg# a failure to support a valid configuration from a meaningless
46a6d9b409Smrg# configuration.
47a6d9b409Smrg
48a6d9b409Smrg# The goal of this file is to map all the various variations of a given
49a6d9b409Smrg# machine specification into a single specification in the form:
50a6d9b409Smrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
51a6d9b409Smrg# or in some cases, the newer four-part form:
52a6d9b409Smrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
53a6d9b409Smrg# It is wrong to echo any other type of specification.
54a6d9b409Smrg
5592e95ad1Smrg# The "shellcheck disable" line above the timestamp inhibits complaints
5692e95ad1Smrg# about features and limitations of the classic Bourne shell that were
5792e95ad1Smrg# superseded or lifted in POSIX.  However, this script identifies a wide
5892e95ad1Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
5992e95ad1Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still
6092e95ad1Smrg# have a pre-POSIX /bin/sh.
6192e95ad1Smrg
62a6d9b409Smrgme=`echo "$0" | sed -e 's,.*/,,'`
63a6d9b409Smrg
64a6d9b409Smrgusage="\
6511a95ff3SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
66a6d9b409Smrg
67a6d9b409SmrgCanonicalize a configuration name.
68a6d9b409Smrg
698b8e729cSmrgOptions:
70a6d9b409Smrg  -h, --help         print this help, then exit
71a6d9b409Smrg  -t, --time-stamp   print date of last modification, then exit
72a6d9b409Smrg  -v, --version      print version number, then exit
73a6d9b409Smrg
74a6d9b409SmrgReport bugs and patches to <config-patches@gnu.org>."
75a6d9b409Smrg
76a6d9b409Smrgversion="\
77a6d9b409SmrgGNU config.sub ($timestamp)
78a6d9b409Smrg
79838f5b0bSmrgCopyright 1992-2024 Free Software Foundation, Inc.
80a6d9b409Smrg
81a6d9b409SmrgThis is free software; see the source for copying conditions.  There is NO
82a6d9b409Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
83a6d9b409Smrg
84a6d9b409Smrghelp="
85838f5b0bSmrgTry '$me --help' for more information."
86a6d9b409Smrg
87a6d9b409Smrg# Parse command line
88a6d9b409Smrgwhile test $# -gt 0 ; do
89a6d9b409Smrg  case $1 in
90a6d9b409Smrg    --time-stamp | --time* | -t )
91a6d9b409Smrg       echo "$timestamp" ; exit ;;
92a6d9b409Smrg    --version | -v )
93a6d9b409Smrg       echo "$version" ; exit ;;
94a6d9b409Smrg    --help | --h* | -h )
95a6d9b409Smrg       echo "$usage"; exit ;;
96a6d9b409Smrg    -- )     # Stop option processing
97a6d9b409Smrg       shift; break ;;
98a6d9b409Smrg    - )	# Use stdin as input.
99a6d9b409Smrg       break ;;
100a6d9b409Smrg    -* )
10192e95ad1Smrg       echo "$me: invalid option $1$help" >&2
102a6d9b409Smrg       exit 1 ;;
103a6d9b409Smrg
104a6d9b409Smrg    *local*)
105a6d9b409Smrg       # First pass through any local machine types.
1068b8e729cSmrg       echo "$1"
107a6d9b409Smrg       exit ;;
108a6d9b409Smrg
109a6d9b409Smrg    * )
110a6d9b409Smrg       break ;;
111a6d9b409Smrg  esac
112a6d9b409Smrgdone
113a6d9b409Smrg
114a6d9b409Smrgcase $# in
115a6d9b409Smrg 0) echo "$me: missing argument$help" >&2
116a6d9b409Smrg    exit 1;;
117a6d9b409Smrg 1) ;;
118a6d9b409Smrg *) echo "$me: too many arguments$help" >&2
119a6d9b409Smrg    exit 1;;
120a6d9b409Smrgesac
121a6d9b409Smrg
12292e95ad1Smrg# Split fields of configuration type
12392e95ad1Smrg# shellcheck disable=SC2162
12492e95ad1Smrgsaved_IFS=$IFS
12592e95ad1SmrgIFS="-" read field1 field2 field3 field4 <<EOF
12692e95ad1Smrg$1
12792e95ad1SmrgEOF
12892e95ad1SmrgIFS=$saved_IFS
129a6d9b409Smrg
13092e95ad1Smrg# Separate into logical components for further validation
13192e95ad1Smrgcase $1 in
13292e95ad1Smrg	*-*-*-*-*)
133838f5b0bSmrg		echo "Invalid configuration '$1': more than four components" >&2
13492e95ad1Smrg		exit 1
135b91640d3Smrg		;;
13692e95ad1Smrg	*-*-*-*)
13792e95ad1Smrg		basic_machine=$field1-$field2
13892e95ad1Smrg		basic_os=$field3-$field4
139a6d9b409Smrg		;;
14092e95ad1Smrg	*-*-*)
14192e95ad1Smrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
14292e95ad1Smrg		# parts
14392e95ad1Smrg		maybe_os=$field2-$field3
14492e95ad1Smrg		case $maybe_os in
14592e95ad1Smrg			nto-qnx* | linux-* | uclinux-uclibc* \
14692e95ad1Smrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
14792e95ad1Smrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
148838f5b0bSmrg			| storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \
149838f5b0bSmrg			| windows-* )
15092e95ad1Smrg				basic_machine=$field1
15192e95ad1Smrg				basic_os=$maybe_os
15292e95ad1Smrg				;;
15392e95ad1Smrg			android-linux)
15492e95ad1Smrg				basic_machine=$field1-unknown
15592e95ad1Smrg				basic_os=linux-android
15692e95ad1Smrg				;;
15792e95ad1Smrg			*)
15892e95ad1Smrg				basic_machine=$field1-$field2
15992e95ad1Smrg				basic_os=$field3
16092e95ad1Smrg				;;
16192e95ad1Smrg		esac
162a6d9b409Smrg		;;
16392e95ad1Smrg	*-*)
16492e95ad1Smrg		# A lone config we happen to match not fitting any pattern
16592e95ad1Smrg		case $field1-$field2 in
16692e95ad1Smrg			decstation-3100)
16792e95ad1Smrg				basic_machine=mips-dec
16892e95ad1Smrg				basic_os=
16992e95ad1Smrg				;;
17092e95ad1Smrg			*-*)
17192e95ad1Smrg				# Second component is usually, but not always the OS
17292e95ad1Smrg				case $field2 in
17392e95ad1Smrg					# Prevent following clause from handling this valid os
17492e95ad1Smrg					sun*os*)
17592e95ad1Smrg						basic_machine=$field1
17692e95ad1Smrg						basic_os=$field2
17792e95ad1Smrg						;;
17892e95ad1Smrg					zephyr*)
17992e95ad1Smrg						basic_machine=$field1-unknown
18092e95ad1Smrg						basic_os=$field2
18192e95ad1Smrg						;;
18292e95ad1Smrg					# Manufacturers
18392e95ad1Smrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
18492e95ad1Smrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
18592e95ad1Smrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
18692e95ad1Smrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
18792e95ad1Smrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
18892e95ad1Smrg					| ultra | tti* | harris | dolphin | highlevel | gould \
18992e95ad1Smrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
19092e95ad1Smrg					| microblaze* | sim | cisco \
19192e95ad1Smrg					| oki | wec | wrs | winbond)
19292e95ad1Smrg						basic_machine=$field1-$field2
19392e95ad1Smrg						basic_os=
19492e95ad1Smrg						;;
19592e95ad1Smrg					*)
19692e95ad1Smrg						basic_machine=$field1
19792e95ad1Smrg						basic_os=$field2
19892e95ad1Smrg						;;
19992e95ad1Smrg				esac
20092e95ad1Smrg			;;
20192e95ad1Smrg		esac
202a6d9b409Smrg		;;
20392e95ad1Smrg	*)
20492e95ad1Smrg		# Convert single-component short-hands not valid as part of
20592e95ad1Smrg		# multi-component configurations.
20692e95ad1Smrg		case $field1 in
20792e95ad1Smrg			386bsd)
20892e95ad1Smrg				basic_machine=i386-pc
20992e95ad1Smrg				basic_os=bsd
21092e95ad1Smrg				;;
21192e95ad1Smrg			a29khif)
21292e95ad1Smrg				basic_machine=a29k-amd
21392e95ad1Smrg				basic_os=udi
21492e95ad1Smrg				;;
21592e95ad1Smrg			adobe68k)
21692e95ad1Smrg				basic_machine=m68010-adobe
21792e95ad1Smrg				basic_os=scout
21892e95ad1Smrg				;;
21992e95ad1Smrg			alliant)
22092e95ad1Smrg				basic_machine=fx80-alliant
22192e95ad1Smrg				basic_os=
22292e95ad1Smrg				;;
22392e95ad1Smrg			altos | altos3068)
22492e95ad1Smrg				basic_machine=m68k-altos
22592e95ad1Smrg				basic_os=
22692e95ad1Smrg				;;
22792e95ad1Smrg			am29k)
22892e95ad1Smrg				basic_machine=a29k-none
22992e95ad1Smrg				basic_os=bsd
23092e95ad1Smrg				;;
23192e95ad1Smrg			amdahl)
23292e95ad1Smrg				basic_machine=580-amdahl
23392e95ad1Smrg				basic_os=sysv
23492e95ad1Smrg				;;
23592e95ad1Smrg			amiga)
23692e95ad1Smrg				basic_machine=m68k-unknown
23792e95ad1Smrg				basic_os=
23892e95ad1Smrg				;;
23992e95ad1Smrg			amigaos | amigados)
24092e95ad1Smrg				basic_machine=m68k-unknown
24192e95ad1Smrg				basic_os=amigaos
24292e95ad1Smrg				;;
24392e95ad1Smrg			amigaunix | amix)
24492e95ad1Smrg				basic_machine=m68k-unknown
24592e95ad1Smrg				basic_os=sysv4
24692e95ad1Smrg				;;
24792e95ad1Smrg			apollo68)
24892e95ad1Smrg				basic_machine=m68k-apollo
24992e95ad1Smrg				basic_os=sysv
25092e95ad1Smrg				;;
25192e95ad1Smrg			apollo68bsd)
25292e95ad1Smrg				basic_machine=m68k-apollo
25392e95ad1Smrg				basic_os=bsd
25492e95ad1Smrg				;;
25592e95ad1Smrg			aros)
25692e95ad1Smrg				basic_machine=i386-pc
25792e95ad1Smrg				basic_os=aros
25892e95ad1Smrg				;;
25992e95ad1Smrg			aux)
26092e95ad1Smrg				basic_machine=m68k-apple
26192e95ad1Smrg				basic_os=aux
26292e95ad1Smrg				;;
26392e95ad1Smrg			balance)
26492e95ad1Smrg				basic_machine=ns32k-sequent
26592e95ad1Smrg				basic_os=dynix
26692e95ad1Smrg				;;
26792e95ad1Smrg			blackfin)
26892e95ad1Smrg				basic_machine=bfin-unknown
26992e95ad1Smrg				basic_os=linux
27092e95ad1Smrg				;;
27192e95ad1Smrg			cegcc)
27292e95ad1Smrg				basic_machine=arm-unknown
27392e95ad1Smrg				basic_os=cegcc
27492e95ad1Smrg				;;
27592e95ad1Smrg			convex-c1)
27692e95ad1Smrg				basic_machine=c1-convex
27792e95ad1Smrg				basic_os=bsd
27892e95ad1Smrg				;;
27992e95ad1Smrg			convex-c2)
28092e95ad1Smrg				basic_machine=c2-convex
28192e95ad1Smrg				basic_os=bsd
28292e95ad1Smrg				;;
28392e95ad1Smrg			convex-c32)
28492e95ad1Smrg				basic_machine=c32-convex
28592e95ad1Smrg				basic_os=bsd
28692e95ad1Smrg				;;
28792e95ad1Smrg			convex-c34)
28892e95ad1Smrg				basic_machine=c34-convex
28992e95ad1Smrg				basic_os=bsd
29092e95ad1Smrg				;;
29192e95ad1Smrg			convex-c38)
29292e95ad1Smrg				basic_machine=c38-convex
29392e95ad1Smrg				basic_os=bsd
29492e95ad1Smrg				;;
29592e95ad1Smrg			cray)
29692e95ad1Smrg				basic_machine=j90-cray
29792e95ad1Smrg				basic_os=unicos
29892e95ad1Smrg				;;
29992e95ad1Smrg			crds | unos)
30092e95ad1Smrg				basic_machine=m68k-crds
30192e95ad1Smrg				basic_os=
30292e95ad1Smrg				;;
30392e95ad1Smrg			da30)
30492e95ad1Smrg				basic_machine=m68k-da30
30592e95ad1Smrg				basic_os=
30692e95ad1Smrg				;;
30792e95ad1Smrg			decstation | pmax | pmin | dec3100 | decstatn)
30892e95ad1Smrg				basic_machine=mips-dec
30992e95ad1Smrg				basic_os=
31092e95ad1Smrg				;;
31192e95ad1Smrg			delta88)
31292e95ad1Smrg				basic_machine=m88k-motorola
31392e95ad1Smrg				basic_os=sysv3
31492e95ad1Smrg				;;
31592e95ad1Smrg			dicos)
31692e95ad1Smrg				basic_machine=i686-pc
31792e95ad1Smrg				basic_os=dicos
31892e95ad1Smrg				;;
31992e95ad1Smrg			djgpp)
32092e95ad1Smrg				basic_machine=i586-pc
32192e95ad1Smrg				basic_os=msdosdjgpp
32292e95ad1Smrg				;;
32392e95ad1Smrg			ebmon29k)
32492e95ad1Smrg				basic_machine=a29k-amd
32592e95ad1Smrg				basic_os=ebmon
32692e95ad1Smrg				;;
32792e95ad1Smrg			es1800 | OSE68k | ose68k | ose | OSE)
32892e95ad1Smrg				basic_machine=m68k-ericsson
32992e95ad1Smrg				basic_os=ose
33092e95ad1Smrg				;;
33192e95ad1Smrg			gmicro)
33292e95ad1Smrg				basic_machine=tron-gmicro
33392e95ad1Smrg				basic_os=sysv
33492e95ad1Smrg				;;
33592e95ad1Smrg			go32)
33692e95ad1Smrg				basic_machine=i386-pc
33792e95ad1Smrg				basic_os=go32
33892e95ad1Smrg				;;
33992e95ad1Smrg			h8300hms)
34092e95ad1Smrg				basic_machine=h8300-hitachi
34192e95ad1Smrg				basic_os=hms
34292e95ad1Smrg				;;
34392e95ad1Smrg			h8300xray)
34492e95ad1Smrg				basic_machine=h8300-hitachi
34592e95ad1Smrg				basic_os=xray
34692e95ad1Smrg				;;
34792e95ad1Smrg			h8500hms)
34892e95ad1Smrg				basic_machine=h8500-hitachi
34992e95ad1Smrg				basic_os=hms
35092e95ad1Smrg				;;
35192e95ad1Smrg			harris)
35292e95ad1Smrg				basic_machine=m88k-harris
35392e95ad1Smrg				basic_os=sysv3
35492e95ad1Smrg				;;
35592e95ad1Smrg			hp300 | hp300hpux)
35692e95ad1Smrg				basic_machine=m68k-hp
35792e95ad1Smrg				basic_os=hpux
35892e95ad1Smrg				;;
35992e95ad1Smrg			hp300bsd)
36092e95ad1Smrg				basic_machine=m68k-hp
36192e95ad1Smrg				basic_os=bsd
36292e95ad1Smrg				;;
36392e95ad1Smrg			hppaosf)
36492e95ad1Smrg				basic_machine=hppa1.1-hp
36592e95ad1Smrg				basic_os=osf
36692e95ad1Smrg				;;
36792e95ad1Smrg			hppro)
36892e95ad1Smrg				basic_machine=hppa1.1-hp
36992e95ad1Smrg				basic_os=proelf
37092e95ad1Smrg				;;
37192e95ad1Smrg			i386mach)
37292e95ad1Smrg				basic_machine=i386-mach
37392e95ad1Smrg				basic_os=mach
37492e95ad1Smrg				;;
37592e95ad1Smrg			isi68 | isi)
37692e95ad1Smrg				basic_machine=m68k-isi
37792e95ad1Smrg				basic_os=sysv
37892e95ad1Smrg				;;
37992e95ad1Smrg			m68knommu)
38092e95ad1Smrg				basic_machine=m68k-unknown
38192e95ad1Smrg				basic_os=linux
38292e95ad1Smrg				;;
38392e95ad1Smrg			magnum | m3230)
38492e95ad1Smrg				basic_machine=mips-mips
38592e95ad1Smrg				basic_os=sysv
38692e95ad1Smrg				;;
38792e95ad1Smrg			merlin)
38892e95ad1Smrg				basic_machine=ns32k-utek
38992e95ad1Smrg				basic_os=sysv
39092e95ad1Smrg				;;
39192e95ad1Smrg			mingw64)
39292e95ad1Smrg				basic_machine=x86_64-pc
39392e95ad1Smrg				basic_os=mingw64
39492e95ad1Smrg				;;
39592e95ad1Smrg			mingw32)
39692e95ad1Smrg				basic_machine=i686-pc
39792e95ad1Smrg				basic_os=mingw32
39892e95ad1Smrg				;;
39992e95ad1Smrg			mingw32ce)
40092e95ad1Smrg				basic_machine=arm-unknown
40192e95ad1Smrg				basic_os=mingw32ce
40292e95ad1Smrg				;;
40392e95ad1Smrg			monitor)
40492e95ad1Smrg				basic_machine=m68k-rom68k
40592e95ad1Smrg				basic_os=coff
40692e95ad1Smrg				;;
40792e95ad1Smrg			morphos)
40892e95ad1Smrg				basic_machine=powerpc-unknown
40992e95ad1Smrg				basic_os=morphos
41092e95ad1Smrg				;;
41192e95ad1Smrg			moxiebox)
41292e95ad1Smrg				basic_machine=moxie-unknown
41392e95ad1Smrg				basic_os=moxiebox
41492e95ad1Smrg				;;
41592e95ad1Smrg			msdos)
41692e95ad1Smrg				basic_machine=i386-pc
41792e95ad1Smrg				basic_os=msdos
41892e95ad1Smrg				;;
41992e95ad1Smrg			msys)
42092e95ad1Smrg				basic_machine=i686-pc
42192e95ad1Smrg				basic_os=msys
42292e95ad1Smrg				;;
42392e95ad1Smrg			mvs)
42492e95ad1Smrg				basic_machine=i370-ibm
42592e95ad1Smrg				basic_os=mvs
42692e95ad1Smrg				;;
42792e95ad1Smrg			nacl)
42892e95ad1Smrg				basic_machine=le32-unknown
42992e95ad1Smrg				basic_os=nacl
43092e95ad1Smrg				;;
43192e95ad1Smrg			ncr3000)
43292e95ad1Smrg				basic_machine=i486-ncr
43392e95ad1Smrg				basic_os=sysv4
43492e95ad1Smrg				;;
43592e95ad1Smrg			netbsd386)
43692e95ad1Smrg				basic_machine=i386-pc
43792e95ad1Smrg				basic_os=netbsd
43892e95ad1Smrg				;;
43992e95ad1Smrg			netwinder)
44092e95ad1Smrg				basic_machine=armv4l-rebel
44192e95ad1Smrg				basic_os=linux
44292e95ad1Smrg				;;
44392e95ad1Smrg			news | news700 | news800 | news900)
44492e95ad1Smrg				basic_machine=m68k-sony
44592e95ad1Smrg				basic_os=newsos
44692e95ad1Smrg				;;
44792e95ad1Smrg			news1000)
44892e95ad1Smrg				basic_machine=m68030-sony
44992e95ad1Smrg				basic_os=newsos
45092e95ad1Smrg				;;
45192e95ad1Smrg			necv70)
45292e95ad1Smrg				basic_machine=v70-nec
45392e95ad1Smrg				basic_os=sysv
45492e95ad1Smrg				;;
45592e95ad1Smrg			nh3000)
45692e95ad1Smrg				basic_machine=m68k-harris
45792e95ad1Smrg				basic_os=cxux
45892e95ad1Smrg				;;
45992e95ad1Smrg			nh[45]000)
46092e95ad1Smrg				basic_machine=m88k-harris
46192e95ad1Smrg				basic_os=cxux
46292e95ad1Smrg				;;
46392e95ad1Smrg			nindy960)
46492e95ad1Smrg				basic_machine=i960-intel
46592e95ad1Smrg				basic_os=nindy
46692e95ad1Smrg				;;
46792e95ad1Smrg			mon960)
46892e95ad1Smrg				basic_machine=i960-intel
46992e95ad1Smrg				basic_os=mon960
47092e95ad1Smrg				;;
47192e95ad1Smrg			nonstopux)
47292e95ad1Smrg				basic_machine=mips-compaq
47392e95ad1Smrg				basic_os=nonstopux
47492e95ad1Smrg				;;
47592e95ad1Smrg			os400)
47692e95ad1Smrg				basic_machine=powerpc-ibm
47792e95ad1Smrg				basic_os=os400
47892e95ad1Smrg				;;
47992e95ad1Smrg			OSE68000 | ose68000)
48092e95ad1Smrg				basic_machine=m68000-ericsson
48192e95ad1Smrg				basic_os=ose
48292e95ad1Smrg				;;
48392e95ad1Smrg			os68k)
48492e95ad1Smrg				basic_machine=m68k-none
48592e95ad1Smrg				basic_os=os68k
48692e95ad1Smrg				;;
48792e95ad1Smrg			paragon)
48892e95ad1Smrg				basic_machine=i860-intel
48992e95ad1Smrg				basic_os=osf
49092e95ad1Smrg				;;
49192e95ad1Smrg			parisc)
49292e95ad1Smrg				basic_machine=hppa-unknown
49392e95ad1Smrg				basic_os=linux
49492e95ad1Smrg				;;
49592e95ad1Smrg			psp)
49692e95ad1Smrg				basic_machine=mipsallegrexel-sony
49792e95ad1Smrg				basic_os=psp
49892e95ad1Smrg				;;
49992e95ad1Smrg			pw32)
50092e95ad1Smrg				basic_machine=i586-unknown
50192e95ad1Smrg				basic_os=pw32
50292e95ad1Smrg				;;
50392e95ad1Smrg			rdos | rdos64)
50492e95ad1Smrg				basic_machine=x86_64-pc
50592e95ad1Smrg				basic_os=rdos
50692e95ad1Smrg				;;
50792e95ad1Smrg			rdos32)
50892e95ad1Smrg				basic_machine=i386-pc
50992e95ad1Smrg				basic_os=rdos
51092e95ad1Smrg				;;
51192e95ad1Smrg			rom68k)
51292e95ad1Smrg				basic_machine=m68k-rom68k
51392e95ad1Smrg				basic_os=coff
51492e95ad1Smrg				;;
51592e95ad1Smrg			sa29200)
51692e95ad1Smrg				basic_machine=a29k-amd
51792e95ad1Smrg				basic_os=udi
51892e95ad1Smrg				;;
51992e95ad1Smrg			sei)
52092e95ad1Smrg				basic_machine=mips-sei
52192e95ad1Smrg				basic_os=seiux
52292e95ad1Smrg				;;
52392e95ad1Smrg			sequent)
52492e95ad1Smrg				basic_machine=i386-sequent
52592e95ad1Smrg				basic_os=
52692e95ad1Smrg				;;
52792e95ad1Smrg			sps7)
52892e95ad1Smrg				basic_machine=m68k-bull
52992e95ad1Smrg				basic_os=sysv2
53092e95ad1Smrg				;;
53192e95ad1Smrg			st2000)
53292e95ad1Smrg				basic_machine=m68k-tandem
53392e95ad1Smrg				basic_os=
53492e95ad1Smrg				;;
53592e95ad1Smrg			stratus)
53692e95ad1Smrg				basic_machine=i860-stratus
53792e95ad1Smrg				basic_os=sysv4
53892e95ad1Smrg				;;
53992e95ad1Smrg			sun2)
54092e95ad1Smrg				basic_machine=m68000-sun
54192e95ad1Smrg				basic_os=
54292e95ad1Smrg				;;
54392e95ad1Smrg			sun2os3)
54492e95ad1Smrg				basic_machine=m68000-sun
54592e95ad1Smrg				basic_os=sunos3
54692e95ad1Smrg				;;
54792e95ad1Smrg			sun2os4)
54892e95ad1Smrg				basic_machine=m68000-sun
54992e95ad1Smrg				basic_os=sunos4
55092e95ad1Smrg				;;
55192e95ad1Smrg			sun3)
55292e95ad1Smrg				basic_machine=m68k-sun
55392e95ad1Smrg				basic_os=
55492e95ad1Smrg				;;
55592e95ad1Smrg			sun3os3)
55692e95ad1Smrg				basic_machine=m68k-sun
55792e95ad1Smrg				basic_os=sunos3
55892e95ad1Smrg				;;
55992e95ad1Smrg			sun3os4)
56092e95ad1Smrg				basic_machine=m68k-sun
56192e95ad1Smrg				basic_os=sunos4
56292e95ad1Smrg				;;
56392e95ad1Smrg			sun4)
56492e95ad1Smrg				basic_machine=sparc-sun
56592e95ad1Smrg				basic_os=
56692e95ad1Smrg				;;
56792e95ad1Smrg			sun4os3)
56892e95ad1Smrg				basic_machine=sparc-sun
56992e95ad1Smrg				basic_os=sunos3
57092e95ad1Smrg				;;
57192e95ad1Smrg			sun4os4)
57292e95ad1Smrg				basic_machine=sparc-sun
57392e95ad1Smrg				basic_os=sunos4
57492e95ad1Smrg				;;
57592e95ad1Smrg			sun4sol2)
57692e95ad1Smrg				basic_machine=sparc-sun
57792e95ad1Smrg				basic_os=solaris2
57892e95ad1Smrg				;;
57992e95ad1Smrg			sun386 | sun386i | roadrunner)
58092e95ad1Smrg				basic_machine=i386-sun
58192e95ad1Smrg				basic_os=
58292e95ad1Smrg				;;
58392e95ad1Smrg			sv1)
58492e95ad1Smrg				basic_machine=sv1-cray
58592e95ad1Smrg				basic_os=unicos
58692e95ad1Smrg				;;
58792e95ad1Smrg			symmetry)
58892e95ad1Smrg				basic_machine=i386-sequent
58992e95ad1Smrg				basic_os=dynix
59092e95ad1Smrg				;;
59192e95ad1Smrg			t3e)
59292e95ad1Smrg				basic_machine=alphaev5-cray
59392e95ad1Smrg				basic_os=unicos
59492e95ad1Smrg				;;
59592e95ad1Smrg			t90)
59692e95ad1Smrg				basic_machine=t90-cray
59792e95ad1Smrg				basic_os=unicos
59892e95ad1Smrg				;;
59992e95ad1Smrg			toad1)
60092e95ad1Smrg				basic_machine=pdp10-xkl
60192e95ad1Smrg				basic_os=tops20
60292e95ad1Smrg				;;
60392e95ad1Smrg			tpf)
60492e95ad1Smrg				basic_machine=s390x-ibm
60592e95ad1Smrg				basic_os=tpf
60692e95ad1Smrg				;;
60792e95ad1Smrg			udi29k)
60892e95ad1Smrg				basic_machine=a29k-amd
60992e95ad1Smrg				basic_os=udi
61092e95ad1Smrg				;;
61192e95ad1Smrg			ultra3)
61292e95ad1Smrg				basic_machine=a29k-nyu
61392e95ad1Smrg				basic_os=sym1
61492e95ad1Smrg				;;
61592e95ad1Smrg			v810 | necv810)
61692e95ad1Smrg				basic_machine=v810-nec
61792e95ad1Smrg				basic_os=none
61892e95ad1Smrg				;;
61992e95ad1Smrg			vaxv)
62092e95ad1Smrg				basic_machine=vax-dec
62192e95ad1Smrg				basic_os=sysv
62292e95ad1Smrg				;;
62392e95ad1Smrg			vms)
62492e95ad1Smrg				basic_machine=vax-dec
62592e95ad1Smrg				basic_os=vms
62692e95ad1Smrg				;;
62792e95ad1Smrg			vsta)
62892e95ad1Smrg				basic_machine=i386-pc
62992e95ad1Smrg				basic_os=vsta
63092e95ad1Smrg				;;
63192e95ad1Smrg			vxworks960)
63292e95ad1Smrg				basic_machine=i960-wrs
63392e95ad1Smrg				basic_os=vxworks
63492e95ad1Smrg				;;
63592e95ad1Smrg			vxworks68)
63692e95ad1Smrg				basic_machine=m68k-wrs
63792e95ad1Smrg				basic_os=vxworks
63892e95ad1Smrg				;;
63992e95ad1Smrg			vxworks29k)
64092e95ad1Smrg				basic_machine=a29k-wrs
64192e95ad1Smrg				basic_os=vxworks
64292e95ad1Smrg				;;
64392e95ad1Smrg			xbox)
64492e95ad1Smrg				basic_machine=i686-pc
64592e95ad1Smrg				basic_os=mingw32
64692e95ad1Smrg				;;
64792e95ad1Smrg			ymp)
64892e95ad1Smrg				basic_machine=ymp-cray
64992e95ad1Smrg				basic_os=unicos
65092e95ad1Smrg				;;
65192e95ad1Smrg			*)
65292e95ad1Smrg				basic_machine=$1
65392e95ad1Smrg				basic_os=
65492e95ad1Smrg				;;
65592e95ad1Smrg		esac
656a6d9b409Smrg		;;
657a6d9b409Smrgesac
658a6d9b409Smrg
65992e95ad1Smrg# Decode 1-component or ad-hoc basic machines
660a6d9b409Smrgcase $basic_machine in
66192e95ad1Smrg	# Here we handle the default manufacturer of certain CPU types.  It is in
66292e95ad1Smrg	# some cases the only manufacturer, in others, it is the most popular.
66392e95ad1Smrg	w89k)
66492e95ad1Smrg		cpu=hppa1.1
66592e95ad1Smrg		vendor=winbond
666b91640d3Smrg		;;
66792e95ad1Smrg	op50n)
66892e95ad1Smrg		cpu=hppa1.1
66992e95ad1Smrg		vendor=oki
670a6d9b409Smrg		;;
67192e95ad1Smrg	op60c)
67292e95ad1Smrg		cpu=hppa1.1
67392e95ad1Smrg		vendor=oki
674a6d9b409Smrg		;;
67592e95ad1Smrg	ibm*)
67692e95ad1Smrg		cpu=i370
67792e95ad1Smrg		vendor=ibm
678cae39615Smrg		;;
67992e95ad1Smrg	orion105)
68092e95ad1Smrg		cpu=clipper
68192e95ad1Smrg		vendor=highlevel
682b91640d3Smrg		;;
68392e95ad1Smrg	mac | mpw | mac-mpw)
68492e95ad1Smrg		cpu=m68k
68592e95ad1Smrg		vendor=apple
686a097bd00Smrg		;;
68792e95ad1Smrg	pmac | pmac-mpw)
68892e95ad1Smrg		cpu=powerpc
68992e95ad1Smrg		vendor=apple
690a097bd00Smrg		;;
691a097bd00Smrg
692a6d9b409Smrg	# Recognize the various machine names and aliases which stand
693a6d9b409Smrg	# for a CPU type and a company and sometimes even an OS.
694a6d9b409Smrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
69592e95ad1Smrg		cpu=m68000
69692e95ad1Smrg		vendor=att
697a6d9b409Smrg		;;
698a6d9b409Smrg	3b*)
69992e95ad1Smrg		cpu=we32k
70092e95ad1Smrg		vendor=att
701cae39615Smrg		;;
7021e5fa1c5Smrg	bluegene*)
70392e95ad1Smrg		cpu=powerpc
70492e95ad1Smrg		vendor=ibm
70592e95ad1Smrg		basic_os=cnk
706a6d9b409Smrg		;;
707a6d9b409Smrg	decsystem10* | dec10*)
70892e95ad1Smrg		cpu=pdp10
70992e95ad1Smrg		vendor=dec
71092e95ad1Smrg		basic_os=tops10
711a6d9b409Smrg		;;
712a6d9b409Smrg	decsystem20* | dec20*)
71392e95ad1Smrg		cpu=pdp10
71492e95ad1Smrg		vendor=dec
71592e95ad1Smrg		basic_os=tops20
716a6d9b409Smrg		;;
717a6d9b409Smrg	delta | 3300 | motorola-3300 | motorola-delta \
718a6d9b409Smrg	      | 3300-motorola | delta-motorola)
71992e95ad1Smrg		cpu=m68k
72092e95ad1Smrg		vendor=motorola
721a6d9b409Smrg		;;
7228b8e729cSmrg	dpx2*)
72392e95ad1Smrg		cpu=m68k
72492e95ad1Smrg		vendor=bull
72592e95ad1Smrg		basic_os=sysv3
726a6d9b409Smrg		;;
727a6d9b409Smrg	encore | umax | mmax)
72892e95ad1Smrg		cpu=ns32k
72992e95ad1Smrg		vendor=encore
730a6d9b409Smrg		;;
73192e95ad1Smrg	elxsi)
73292e95ad1Smrg		cpu=elxsi
73392e95ad1Smrg		vendor=elxsi
73492e95ad1Smrg		basic_os=${basic_os:-bsd}
735a6d9b409Smrg		;;
736a6d9b409Smrg	fx2800)
73792e95ad1Smrg		cpu=i860
73892e95ad1Smrg		vendor=alliant
739a6d9b409Smrg		;;
740a6d9b409Smrg	genix)
74192e95ad1Smrg		cpu=ns32k
74292e95ad1Smrg		vendor=ns
743a6d9b409Smrg		;;
744a6d9b409Smrg	h3050r* | hiux*)
74592e95ad1Smrg		cpu=hppa1.1
74692e95ad1Smrg		vendor=hitachi
74792e95ad1Smrg		basic_os=hiuxwe2
748a6d9b409Smrg		;;
749a6d9b409Smrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
75092e95ad1Smrg		cpu=hppa1.0
75192e95ad1Smrg		vendor=hp
752a6d9b409Smrg		;;
753a6d9b409Smrg	hp9k2[0-9][0-9] | hp9k31[0-9])
75492e95ad1Smrg		cpu=m68000
75592e95ad1Smrg		vendor=hp
756a6d9b409Smrg		;;
757a6d9b409Smrg	hp9k3[2-9][0-9])
75892e95ad1Smrg		cpu=m68k
75992e95ad1Smrg		vendor=hp
760a6d9b409Smrg		;;
761a6d9b409Smrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
76292e95ad1Smrg		cpu=hppa1.0
76392e95ad1Smrg		vendor=hp
764a6d9b409Smrg		;;
765a6d9b409Smrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
76692e95ad1Smrg		cpu=hppa1.1
76792e95ad1Smrg		vendor=hp
768a6d9b409Smrg		;;
769a6d9b409Smrg	hp9k78[0-9] | hp78[0-9])
770a6d9b409Smrg		# FIXME: really hppa2.0-hp
77192e95ad1Smrg		cpu=hppa1.1
77292e95ad1Smrg		vendor=hp
773a6d9b409Smrg		;;
774a6d9b409Smrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
775a6d9b409Smrg		# FIXME: really hppa2.0-hp
77692e95ad1Smrg		cpu=hppa1.1
77792e95ad1Smrg		vendor=hp
778a6d9b409Smrg		;;
779a6d9b409Smrg	hp9k8[0-9][13679] | hp8[0-9][13679])
78092e95ad1Smrg		cpu=hppa1.1
78192e95ad1Smrg		vendor=hp
782a6d9b409Smrg		;;
783a6d9b409Smrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
78492e95ad1Smrg		cpu=hppa1.0
78592e95ad1Smrg		vendor=hp
786a6d9b409Smrg		;;
787a6d9b409Smrg	i*86v32)
78892e95ad1Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
78992e95ad1Smrg		vendor=pc
79092e95ad1Smrg		basic_os=sysv32
791a6d9b409Smrg		;;
792a6d9b409Smrg	i*86v4*)
79392e95ad1Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79492e95ad1Smrg		vendor=pc
79592e95ad1Smrg		basic_os=sysv4
796a6d9b409Smrg		;;
797a6d9b409Smrg	i*86v)
79892e95ad1Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79992e95ad1Smrg		vendor=pc
80092e95ad1Smrg		basic_os=sysv
801a6d9b409Smrg		;;
802a6d9b409Smrg	i*86sol2)
80392e95ad1Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
80492e95ad1Smrg		vendor=pc
80592e95ad1Smrg		basic_os=solaris2
806a6d9b409Smrg		;;
80792e95ad1Smrg	j90 | j90-cray)
80892e95ad1Smrg		cpu=j90
80992e95ad1Smrg		vendor=cray
81092e95ad1Smrg		basic_os=${basic_os:-unicos}
811a6d9b409Smrg		;;
812a6d9b409Smrg	iris | iris4d)
81392e95ad1Smrg		cpu=mips
81492e95ad1Smrg		vendor=sgi
81592e95ad1Smrg		case $basic_os in
81692e95ad1Smrg		    irix*)
817a6d9b409Smrg			;;
818a6d9b409Smrg		    *)
81992e95ad1Smrg			basic_os=irix4
820a6d9b409Smrg			;;
821a6d9b409Smrg		esac
822a6d9b409Smrg		;;
823a6d9b409Smrg	miniframe)
82492e95ad1Smrg		cpu=m68000
82592e95ad1Smrg		vendor=convergent
826a6d9b409Smrg		;;
82792e95ad1Smrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
82892e95ad1Smrg		cpu=m68k
82992e95ad1Smrg		vendor=atari
83092e95ad1Smrg		basic_os=mint
831a6d9b409Smrg		;;
832a6d9b409Smrg	news-3600 | risc-news)
83392e95ad1Smrg		cpu=mips
83492e95ad1Smrg		vendor=sony
83592e95ad1Smrg		basic_os=newsos
836a6d9b409Smrg		;;
8378b8e729cSmrg	next | m*-next)
83892e95ad1Smrg		cpu=m68k
83992e95ad1Smrg		vendor=next
84092e95ad1Smrg		case $basic_os in
84192e95ad1Smrg		    openstep*)
84292e95ad1Smrg		        ;;
84392e95ad1Smrg		    nextstep*)
844a6d9b409Smrg			;;
84592e95ad1Smrg		    ns2*)
84692e95ad1Smrg		      basic_os=nextstep2
847a6d9b409Smrg			;;
848a6d9b409Smrg		    *)
84992e95ad1Smrg		      basic_os=nextstep3
850a6d9b409Smrg			;;
851a6d9b409Smrg		esac
852a6d9b409Smrg		;;
853a6d9b409Smrg	np1)
85492e95ad1Smrg		cpu=np1
85592e95ad1Smrg		vendor=gould
8568b8e729cSmrg		;;
857a6d9b409Smrg	op50n-* | op60c-*)
85892e95ad1Smrg		cpu=hppa1.1
85992e95ad1Smrg		vendor=oki
86092e95ad1Smrg		basic_os=proelf
861a6d9b409Smrg		;;
862a6d9b409Smrg	pa-hitachi)
86392e95ad1Smrg		cpu=hppa1.1
86492e95ad1Smrg		vendor=hitachi
86592e95ad1Smrg		basic_os=hiuxwe2
866cae39615Smrg		;;
867a6d9b409Smrg	pbd)
86892e95ad1Smrg		cpu=sparc
86992e95ad1Smrg		vendor=tti
870a6d9b409Smrg		;;
871a6d9b409Smrg	pbb)
87292e95ad1Smrg		cpu=m68k
87392e95ad1Smrg		vendor=tti
874a6d9b409Smrg		;;
87592e95ad1Smrg	pc532)
87692e95ad1Smrg		cpu=ns32k
87792e95ad1Smrg		vendor=pc532
878a6d9b409Smrg		;;
879a6d9b409Smrg	pn)
88092e95ad1Smrg		cpu=pn
88192e95ad1Smrg		vendor=gould
882a6d9b409Smrg		;;
88392e95ad1Smrg	power)
88492e95ad1Smrg		cpu=power
88592e95ad1Smrg		vendor=ibm
886a6d9b409Smrg		;;
88792e95ad1Smrg	ps2)
88892e95ad1Smrg		cpu=i386
88992e95ad1Smrg		vendor=ibm
890a6d9b409Smrg		;;
89192e95ad1Smrg	rm[46]00)
89292e95ad1Smrg		cpu=mips
89392e95ad1Smrg		vendor=siemens
894a6d9b409Smrg		;;
89592e95ad1Smrg	rtpc | rtpc-*)
89692e95ad1Smrg		cpu=romp
89792e95ad1Smrg		vendor=ibm
898a6d9b409Smrg		;;
89992e95ad1Smrg	sde)
90092e95ad1Smrg		cpu=mipsisa32
90192e95ad1Smrg		vendor=sde
90292e95ad1Smrg		basic_os=${basic_os:-elf}
903a6d9b409Smrg		;;
90492e95ad1Smrg	simso-wrs)
90592e95ad1Smrg		cpu=sparclite
90692e95ad1Smrg		vendor=wrs
90792e95ad1Smrg		basic_os=vxworks
908a6d9b409Smrg		;;
90992e95ad1Smrg	tower | tower-32)
91092e95ad1Smrg		cpu=m68k
91192e95ad1Smrg		vendor=ncr
912a6d9b409Smrg		;;
91392e95ad1Smrg	vpp*|vx|vx-*)
91492e95ad1Smrg		cpu=f301
91592e95ad1Smrg		vendor=fujitsu
916b91640d3Smrg		;;
91792e95ad1Smrg	w65)
91892e95ad1Smrg		cpu=w65
91992e95ad1Smrg		vendor=wdc
920cae39615Smrg		;;
92192e95ad1Smrg	w89k-*)
92292e95ad1Smrg		cpu=hppa1.1
92392e95ad1Smrg		vendor=winbond
92492e95ad1Smrg		basic_os=proelf
925a6d9b409Smrg		;;
92692e95ad1Smrg	none)
92792e95ad1Smrg		cpu=none
92892e95ad1Smrg		vendor=none
929a6d9b409Smrg		;;
93092e95ad1Smrg	leon|leon[3-9])
93192e95ad1Smrg		cpu=sparc
93292e95ad1Smrg		vendor=$basic_machine
933a6d9b409Smrg		;;
93492e95ad1Smrg	leon-*|leon[3-9]-*)
93592e95ad1Smrg		cpu=sparc
93692e95ad1Smrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
937a6d9b409Smrg		;;
93892e95ad1Smrg
93992e95ad1Smrg	*-*)
94092e95ad1Smrg		# shellcheck disable=SC2162
94192e95ad1Smrg		saved_IFS=$IFS
94292e95ad1Smrg		IFS="-" read cpu vendor <<EOF
94392e95ad1Smrg$basic_machine
94492e95ad1SmrgEOF
94592e95ad1Smrg		IFS=$saved_IFS
946a6d9b409Smrg		;;
947838f5b0bSmrg	# We use 'pc' rather than 'unknown'
94892e95ad1Smrg	# because (1) that's what they normally are, and
94992e95ad1Smrg	# (2) the word "unknown" tends to confuse beginning users.
95092e95ad1Smrg	i*86 | x86_64)
95192e95ad1Smrg		cpu=$basic_machine
95292e95ad1Smrg		vendor=pc
953a6d9b409Smrg		;;
95492e95ad1Smrg	# These rules are duplicated from below for sake of the special case above;
95592e95ad1Smrg	# i.e. things that normalized to x86 arches should also default to "pc"
95692e95ad1Smrg	pc98)
95792e95ad1Smrg		cpu=i386
95892e95ad1Smrg		vendor=pc
959a6d9b409Smrg		;;
96092e95ad1Smrg	x64 | amd64)
96192e95ad1Smrg		cpu=x86_64
96292e95ad1Smrg		vendor=pc
963a6d9b409Smrg		;;
96492e95ad1Smrg	# Recognize the basic CPU types without company name.
96592e95ad1Smrg	*)
96692e95ad1Smrg		cpu=$basic_machine
96792e95ad1Smrg		vendor=unknown
968cae39615Smrg		;;
96992e95ad1Smrgesac
97092e95ad1Smrg
97192e95ad1Smrgunset -v basic_machine
97292e95ad1Smrg
97392e95ad1Smrg# Decode basic machines in the full and proper CPU-Company form.
97492e95ad1Smrgcase $cpu-$vendor in
97592e95ad1Smrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
97692e95ad1Smrg	# some cases the only manufacturer, in others, it is the most popular.
97792e95ad1Smrg	craynv-unknown)
97892e95ad1Smrg		vendor=cray
97992e95ad1Smrg		basic_os=${basic_os:-unicosmp}
980a6d9b409Smrg		;;
98192e95ad1Smrg	c90-unknown | c90-cray)
98292e95ad1Smrg		vendor=cray
98392e95ad1Smrg		basic_os=${Basic_os:-unicos}
984a6d9b409Smrg		;;
98592e95ad1Smrg	fx80-unknown)
98692e95ad1Smrg		vendor=alliant
987cae39615Smrg		;;
98892e95ad1Smrg	romp-unknown)
98992e95ad1Smrg		vendor=ibm
990a6d9b409Smrg		;;
99192e95ad1Smrg	mmix-unknown)
99292e95ad1Smrg		vendor=knuth
993a6d9b409Smrg		;;
99492e95ad1Smrg	microblaze-unknown | microblazeel-unknown)
99592e95ad1Smrg		vendor=xilinx
996a6d9b409Smrg		;;
99792e95ad1Smrg	rs6000-unknown)
99892e95ad1Smrg		vendor=ibm
999a6d9b409Smrg		;;
100092e95ad1Smrg	vax-unknown)
100192e95ad1Smrg		vendor=dec
1002a6d9b409Smrg		;;
100392e95ad1Smrg	pdp11-unknown)
100492e95ad1Smrg		vendor=dec
1005a097bd00Smrg		;;
100692e95ad1Smrg	we32k-unknown)
100792e95ad1Smrg		vendor=att
1008a6d9b409Smrg		;;
100992e95ad1Smrg	cydra-unknown)
101092e95ad1Smrg		vendor=cydrome
1011a6d9b409Smrg		;;
101292e95ad1Smrg	i370-ibm*)
101392e95ad1Smrg		vendor=ibm
1014a6d9b409Smrg		;;
101592e95ad1Smrg	orion-unknown)
101692e95ad1Smrg		vendor=highlevel
1017a6d9b409Smrg		;;
101892e95ad1Smrg	xps-unknown | xps100-unknown)
101992e95ad1Smrg		cpu=xps100
102092e95ad1Smrg		vendor=honeywell
1021a6d9b409Smrg		;;
102292e95ad1Smrg
102392e95ad1Smrg	# Here we normalize CPU types with a missing or matching vendor
1024838f5b0bSmrg	armh-unknown | armh-alt)
1025838f5b0bSmrg		cpu=armv7l
1026838f5b0bSmrg		vendor=alt
1027838f5b0bSmrg		basic_os=${basic_os:-linux-gnueabihf}
1028838f5b0bSmrg		;;
102992e95ad1Smrg	dpx20-unknown | dpx20-bull)
103092e95ad1Smrg		cpu=rs6000
103192e95ad1Smrg		vendor=bull
103292e95ad1Smrg		basic_os=${basic_os:-bosx}
1033a6d9b409Smrg		;;
103492e95ad1Smrg
103592e95ad1Smrg	# Here we normalize CPU types irrespective of the vendor
103692e95ad1Smrg	amd64-*)
103792e95ad1Smrg		cpu=x86_64
1038a6d9b409Smrg		;;
103992e95ad1Smrg	blackfin-*)
104092e95ad1Smrg		cpu=bfin
104192e95ad1Smrg		basic_os=linux
1042a6d9b409Smrg		;;
104392e95ad1Smrg	c54x-*)
104492e95ad1Smrg		cpu=tic54x
1045a6d9b409Smrg		;;
104692e95ad1Smrg	c55x-*)
104792e95ad1Smrg		cpu=tic55x
1048a6d9b409Smrg		;;
104992e95ad1Smrg	c6x-*)
105092e95ad1Smrg		cpu=tic6x
1051a6d9b409Smrg		;;
105292e95ad1Smrg	e500v[12]-*)
105392e95ad1Smrg		cpu=powerpc
105492e95ad1Smrg		basic_os=${basic_os}"spe"
1055a6d9b409Smrg		;;
105692e95ad1Smrg	mips3*-*)
105792e95ad1Smrg		cpu=mips64
1058a6d9b409Smrg		;;
105992e95ad1Smrg	ms1-*)
106092e95ad1Smrg		cpu=mt
1061a6d9b409Smrg		;;
106292e95ad1Smrg	m68knommu-*)
106392e95ad1Smrg		cpu=m68k
106492e95ad1Smrg		basic_os=linux
1065a6d9b409Smrg		;;
106692e95ad1Smrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
106792e95ad1Smrg		cpu=s12z
1068efda2da8Smrg		;;
106992e95ad1Smrg	openrisc-*)
107092e95ad1Smrg		cpu=or32
1071a6d9b409Smrg		;;
107292e95ad1Smrg	parisc-*)
107392e95ad1Smrg		cpu=hppa
107492e95ad1Smrg		basic_os=linux
1075a6d9b409Smrg		;;
107692e95ad1Smrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
107792e95ad1Smrg		cpu=i586
1078a6d9b409Smrg		;;
1079838f5b0bSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
108092e95ad1Smrg		cpu=i686
1081a6d9b409Smrg		;;
108292e95ad1Smrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
108392e95ad1Smrg		cpu=i686
1084a6d9b409Smrg		;;
108592e95ad1Smrg	pentium4-*)
108692e95ad1Smrg		cpu=i786
1087a6d9b409Smrg		;;
108892e95ad1Smrg	pc98-*)
108992e95ad1Smrg		cpu=i386
1090a6d9b409Smrg		;;
109192e95ad1Smrg	ppc-* | ppcbe-*)
109292e95ad1Smrg		cpu=powerpc
1093a6d9b409Smrg		;;
109492e95ad1Smrg	ppcle-* | powerpclittle-*)
109592e95ad1Smrg		cpu=powerpcle
1096a6d9b409Smrg		;;
109792e95ad1Smrg	ppc64-*)
109892e95ad1Smrg		cpu=powerpc64
1099a6d9b409Smrg		;;
110092e95ad1Smrg	ppc64le-* | powerpc64little-*)
110192e95ad1Smrg		cpu=powerpc64le
1102a6d9b409Smrg		;;
110392e95ad1Smrg	sb1-*)
110492e95ad1Smrg		cpu=mipsisa64sb1
1105a6d9b409Smrg		;;
110692e95ad1Smrg	sb1el-*)
110792e95ad1Smrg		cpu=mipsisa64sb1el
1108a6d9b409Smrg		;;
110992e95ad1Smrg	sh5e[lb]-*)
111092e95ad1Smrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
1111a6d9b409Smrg		;;
111292e95ad1Smrg	spur-*)
111392e95ad1Smrg		cpu=spur
1114a6d9b409Smrg		;;
111592e95ad1Smrg	strongarm-* | thumb-*)
111692e95ad1Smrg		cpu=arm
1117a6d9b409Smrg		;;
111892e95ad1Smrg	tx39-*)
111992e95ad1Smrg		cpu=mipstx39
11208b8e729cSmrg		;;
112192e95ad1Smrg	tx39el-*)
112292e95ad1Smrg		cpu=mipstx39el
1123a6d9b409Smrg		;;
112492e95ad1Smrg	x64-*)
112592e95ad1Smrg		cpu=x86_64
1126a6d9b409Smrg		;;
1127a097bd00Smrg	xscale-* | xscalee[bl]-*)
112892e95ad1Smrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
1129a6d9b409Smrg		;;
1130838f5b0bSmrg	arm64-* | aarch64le-*)
113192e95ad1Smrg		cpu=aarch64
1132a6d9b409Smrg		;;
1133a6d9b409Smrg
113492e95ad1Smrg	# Recognize the canonical CPU Types that limit and/or modify the
113592e95ad1Smrg	# company names they are paired with.
113692e95ad1Smrg	cr16-*)
113792e95ad1Smrg		basic_os=${basic_os:-elf}
1138a6d9b409Smrg		;;
113992e95ad1Smrg	crisv32-* | etraxfs*-*)
114092e95ad1Smrg		cpu=crisv32
114192e95ad1Smrg		vendor=axis
1142a6d9b409Smrg		;;
114392e95ad1Smrg	cris-* | etrax*-*)
114492e95ad1Smrg		cpu=cris
114592e95ad1Smrg		vendor=axis
1146a6d9b409Smrg		;;
114792e95ad1Smrg	crx-*)
114892e95ad1Smrg		basic_os=${basic_os:-elf}
1149a6d9b409Smrg		;;
115092e95ad1Smrg	neo-tandem)
115192e95ad1Smrg		cpu=neo
115292e95ad1Smrg		vendor=tandem
1153a6d9b409Smrg		;;
115492e95ad1Smrg	nse-tandem)
115592e95ad1Smrg		cpu=nse
115692e95ad1Smrg		vendor=tandem
1157a6d9b409Smrg		;;
115892e95ad1Smrg	nsr-tandem)
115992e95ad1Smrg		cpu=nsr
116092e95ad1Smrg		vendor=tandem
1161a6d9b409Smrg		;;
116292e95ad1Smrg	nsv-tandem)
116392e95ad1Smrg		cpu=nsv
116492e95ad1Smrg		vendor=tandem
1165a6d9b409Smrg		;;
116692e95ad1Smrg	nsx-tandem)
116792e95ad1Smrg		cpu=nsx
116892e95ad1Smrg		vendor=tandem
1169a6d9b409Smrg		;;
117092e95ad1Smrg	mipsallegrexel-sony)
117192e95ad1Smrg		cpu=mipsallegrexel
117292e95ad1Smrg		vendor=sony
1173a6d9b409Smrg		;;
117492e95ad1Smrg	tile*-*)
117592e95ad1Smrg		basic_os=${basic_os:-linux-gnu}
1176a6d9b409Smrg		;;
117792e95ad1Smrg
1178a6d9b409Smrg	*)
117992e95ad1Smrg		# Recognize the canonical CPU types that are allowed with any
118092e95ad1Smrg		# company name.
118192e95ad1Smrg		case $cpu in
118292e95ad1Smrg			1750a | 580 \
118392e95ad1Smrg			| a29k \
1184838f5b0bSmrg			| aarch64 | aarch64_be | aarch64c | arm64ec \
118592e95ad1Smrg			| abacus \
118692e95ad1Smrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
118792e95ad1Smrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
118892e95ad1Smrg			| alphapca5[67] | alpha64pca5[67] \
118992e95ad1Smrg			| am33_2.0 \
119092e95ad1Smrg			| amdgcn \
119192e95ad1Smrg			| arc | arceb | arc32 | arc64 \
119292e95ad1Smrg			| arm | arm[lb]e | arme[lb] | armv* \
119392e95ad1Smrg			| avr | avr32 \
119492e95ad1Smrg			| asmjs \
119592e95ad1Smrg			| ba \
119692e95ad1Smrg			| be32 | be64 \
119792e95ad1Smrg			| bfin | bpf | bs2000 \
119892e95ad1Smrg			| c[123]* | c30 | [cjt]90 | c4x \
119992e95ad1Smrg			| c8051 | clipper | craynv | csky | cydra \
120092e95ad1Smrg			| d10v | d30v | dlx | dsp16xx \
120192e95ad1Smrg			| e2k | elxsi | epiphany \
120292e95ad1Smrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
1203838f5b0bSmrg			| javascript \
120492e95ad1Smrg			| h8300 | h8500 \
120592e95ad1Smrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
120692e95ad1Smrg			| hexagon \
120792e95ad1Smrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
120892e95ad1Smrg			| ip2k | iq2000 \
120992e95ad1Smrg			| k1om \
1210838f5b0bSmrg			| kvx \
121192e95ad1Smrg			| le32 | le64 \
121292e95ad1Smrg			| lm32 \
1213838f5b0bSmrg			| loongarch32 | loongarch64 \
121492e95ad1Smrg			| m32c | m32r | m32rle \
121592e95ad1Smrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
121692e95ad1Smrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
121792e95ad1Smrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
121892e95ad1Smrg			| microblaze | microblazeel \
1219838f5b0bSmrg			| mips* \
122092e95ad1Smrg			| mmix \
122192e95ad1Smrg			| mn10200 | mn10300 \
122292e95ad1Smrg			| moxie \
122392e95ad1Smrg			| mt \
122492e95ad1Smrg			| msp430 \
1225838f5b0bSmrg			| nanomips* \
122692e95ad1Smrg			| nds32 | nds32le | nds32be \
122792e95ad1Smrg			| nfp \
122892e95ad1Smrg			| nios | nios2 | nios2eb | nios2el \
122992e95ad1Smrg			| none | np1 | ns16k | ns32k | nvptx \
123092e95ad1Smrg			| open8 \
123192e95ad1Smrg			| or1k* \
123292e95ad1Smrg			| or32 \
123392e95ad1Smrg			| orion \
123492e95ad1Smrg			| picochip \
123592e95ad1Smrg			| pdp10 | pdp11 | pj | pjl | pn | power \
123692e95ad1Smrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
123792e95ad1Smrg			| pru \
123892e95ad1Smrg			| pyramid \
123992e95ad1Smrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
124092e95ad1Smrg			| rl78 | romp | rs6000 | rx \
124192e95ad1Smrg			| s390 | s390x \
124292e95ad1Smrg			| score \
124392e95ad1Smrg			| sh | shl \
124492e95ad1Smrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
124592e95ad1Smrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
124692e95ad1Smrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
124792e95ad1Smrg			| sparclite \
124892e95ad1Smrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
124992e95ad1Smrg			| spu \
125092e95ad1Smrg			| tahoe \
125192e95ad1Smrg			| thumbv7* \
125292e95ad1Smrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
125392e95ad1Smrg			| tron \
125492e95ad1Smrg			| ubicom32 \
125592e95ad1Smrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
125692e95ad1Smrg			| vax \
1257838f5b0bSmrg			| vc4 \
125892e95ad1Smrg			| visium \
125992e95ad1Smrg			| w65 \
126092e95ad1Smrg			| wasm32 | wasm64 \
126192e95ad1Smrg			| we32k \
126292e95ad1Smrg			| x86 | x86_64 | xc16x | xgate | xps100 \
126392e95ad1Smrg			| xstormy16 | xtensa* \
126492e95ad1Smrg			| ymp \
126592e95ad1Smrg			| z8k | z80)
126692e95ad1Smrg				;;
126792e95ad1Smrg
126892e95ad1Smrg			*)
1269838f5b0bSmrg				echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
127092e95ad1Smrg				exit 1
127192e95ad1Smrg				;;
127292e95ad1Smrg		esac
1273a6d9b409Smrg		;;
1274a6d9b409Smrgesac
1275a6d9b409Smrg
1276a6d9b409Smrg# Here we canonicalize certain aliases for manufacturers.
127792e95ad1Smrgcase $vendor in
127892e95ad1Smrg	digital*)
127992e95ad1Smrg		vendor=dec
1280a6d9b409Smrg		;;
128192e95ad1Smrg	commodore*)
128292e95ad1Smrg		vendor=cbm
1283a6d9b409Smrg		;;
1284a6d9b409Smrg	*)
1285a6d9b409Smrg		;;
1286a6d9b409Smrgesac
1287a6d9b409Smrg
1288a6d9b409Smrg# Decode manufacturer-specific aliases for certain operating systems.
1289a6d9b409Smrg
1290838f5b0bSmrgif test x"$basic_os" != x
1291a6d9b409Smrgthen
129292e95ad1Smrg
1293838f5b0bSmrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
129492e95ad1Smrg# set os.
1295838f5b0bSmrgobj=
129692e95ad1Smrgcase $basic_os in
129792e95ad1Smrg	gnu/linux*)
129892e95ad1Smrg		kernel=linux
129992e95ad1Smrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
130092e95ad1Smrg		;;
130192e95ad1Smrg	os2-emx)
130292e95ad1Smrg		kernel=os2
130392e95ad1Smrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
130492e95ad1Smrg		;;
130592e95ad1Smrg	nto-qnx*)
130692e95ad1Smrg		kernel=nto
130792e95ad1Smrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
130892e95ad1Smrg		;;
130992e95ad1Smrg	*-*)
131092e95ad1Smrg		# shellcheck disable=SC2162
131192e95ad1Smrg		saved_IFS=$IFS
131292e95ad1Smrg		IFS="-" read kernel os <<EOF
131392e95ad1Smrg$basic_os
131492e95ad1SmrgEOF
131592e95ad1Smrg		IFS=$saved_IFS
131692e95ad1Smrg		;;
131792e95ad1Smrg	# Default OS when just kernel was specified
131892e95ad1Smrg	nto*)
131992e95ad1Smrg		kernel=nto
132092e95ad1Smrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
132192e95ad1Smrg		;;
132292e95ad1Smrg	linux*)
132392e95ad1Smrg		kernel=linux
132492e95ad1Smrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
132592e95ad1Smrg		;;
1326838f5b0bSmrg	managarm*)
1327838f5b0bSmrg		kernel=managarm
1328838f5b0bSmrg		os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
1329838f5b0bSmrg		;;
133092e95ad1Smrg	*)
133192e95ad1Smrg		kernel=
133292e95ad1Smrg		os=$basic_os
133392e95ad1Smrg		;;
133492e95ad1Smrgesac
133592e95ad1Smrg
133692e95ad1Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
133792e95ad1Smrg# etc.)
1338a6d9b409Smrgcase $os in
13398b8e729cSmrg	# First match some system type aliases that might get confused
13408b8e729cSmrg	# with valid system types.
134192e95ad1Smrg	# solaris* is a basic system type, with this one exception.
134292e95ad1Smrg	auroraux)
134392e95ad1Smrg		os=auroraux
13441e5fa1c5Smrg		;;
134592e95ad1Smrg	bluegene*)
134692e95ad1Smrg		os=cnk
1347a6d9b409Smrg		;;
134892e95ad1Smrg	solaris1 | solaris1.*)
134992e95ad1Smrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
1350a6d9b409Smrg		;;
135192e95ad1Smrg	solaris)
135292e95ad1Smrg		os=solaris2
1353a6d9b409Smrg		;;
135492e95ad1Smrg	unixware*)
135592e95ad1Smrg		os=sysv4.2uw
1356a6d9b409Smrg		;;
13578b8e729cSmrg	# es1800 is here to avoid being matched by es* (a different OS)
135892e95ad1Smrg	es1800*)
135992e95ad1Smrg		os=ose
13608b8e729cSmrg		;;
136192e95ad1Smrg	# Some version numbers need modification
136292e95ad1Smrg	chorusos*)
136392e95ad1Smrg		os=chorusos
1364a6d9b409Smrg		;;
136592e95ad1Smrg	isc)
136692e95ad1Smrg		os=isc2.2
1367a6d9b409Smrg		;;
136892e95ad1Smrg	sco6)
136992e95ad1Smrg		os=sco5v6
1370a6d9b409Smrg		;;
137192e95ad1Smrg	sco5)
137292e95ad1Smrg		os=sco3.2v5
1373a6d9b409Smrg		;;
137492e95ad1Smrg	sco4)
137592e95ad1Smrg		os=sco3.2v4
1376a6d9b409Smrg		;;
137792e95ad1Smrg	sco3.2.[4-9]*)
137892e95ad1Smrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
1379a6d9b409Smrg		;;
138092e95ad1Smrg	sco*v* | scout)
138192e95ad1Smrg		# Don't match below
1382a6d9b409Smrg		;;
138392e95ad1Smrg	sco*)
138492e95ad1Smrg		os=sco3.2v2
1385a6d9b409Smrg		;;
138692e95ad1Smrg	psos*)
138792e95ad1Smrg		os=psos
1388a6d9b409Smrg		;;
138992e95ad1Smrg	qnx*)
139092e95ad1Smrg		os=qnx
1391a6d9b409Smrg		;;
139292e95ad1Smrg	hiux*)
139392e95ad1Smrg		os=hiuxwe2
1394a6d9b409Smrg		;;
139592e95ad1Smrg	lynx*178)
139692e95ad1Smrg		os=lynxos178
1397a6d9b409Smrg		;;
139892e95ad1Smrg	lynx*5)
139992e95ad1Smrg		os=lynxos5
1400a6d9b409Smrg		;;
140192e95ad1Smrg	lynxos*)
140292e95ad1Smrg		# don't get caught up in next wildcard
1403a6d9b409Smrg		;;
140492e95ad1Smrg	lynx*)
140592e95ad1Smrg		os=lynxos
1406a6d9b409Smrg		;;
140792e95ad1Smrg	mac[0-9]*)
140892e95ad1Smrg		os=`echo "$os" | sed -e 's|mac|macos|'`
1409a6d9b409Smrg		;;
141092e95ad1Smrg	opened*)
141192e95ad1Smrg		os=openedition
1412a6d9b409Smrg		;;
141392e95ad1Smrg	os400*)
141492e95ad1Smrg		os=os400
1415a6d9b409Smrg		;;
141692e95ad1Smrg	sunos5*)
141792e95ad1Smrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
1418a6d9b409Smrg		;;
141992e95ad1Smrg	sunos6*)
142092e95ad1Smrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
1421a6d9b409Smrg		;;
142292e95ad1Smrg	wince*)
142392e95ad1Smrg		os=wince
1424a6d9b409Smrg		;;
142592e95ad1Smrg	utek*)
142692e95ad1Smrg		os=bsd
1427a6d9b409Smrg		;;
142892e95ad1Smrg	dynix*)
142992e95ad1Smrg		os=bsd
1430a6d9b409Smrg		;;
143192e95ad1Smrg	acis*)
143292e95ad1Smrg		os=aos
1433a6d9b409Smrg		;;
143492e95ad1Smrg	atheos*)
143592e95ad1Smrg		os=atheos
1436a6d9b409Smrg		;;
143792e95ad1Smrg	syllable*)
143892e95ad1Smrg		os=syllable
143992e95ad1Smrg		;;
144092e95ad1Smrg	386bsd)
144192e95ad1Smrg		os=bsd
144292e95ad1Smrg		;;
144392e95ad1Smrg	ctix* | uts*)
144492e95ad1Smrg		os=sysv
144592e95ad1Smrg		;;
144692e95ad1Smrg	nova*)
144792e95ad1Smrg		os=rtmk-nova
144892e95ad1Smrg		;;
144992e95ad1Smrg	ns2)
145092e95ad1Smrg		os=nextstep2
145192e95ad1Smrg		;;
145292e95ad1Smrg	# Preserve the version number of sinix5.
145392e95ad1Smrg	sinix5.*)
145492e95ad1Smrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
1455a6d9b409Smrg		;;
145692e95ad1Smrg	sinix*)
145792e95ad1Smrg		os=sysv4
1458a6d9b409Smrg		;;
145992e95ad1Smrg	tpf*)
146092e95ad1Smrg		os=tpf
1461a6d9b409Smrg		;;
146292e95ad1Smrg	triton*)
146392e95ad1Smrg		os=sysv3
1464a6d9b409Smrg		;;
146592e95ad1Smrg	oss*)
146692e95ad1Smrg		os=sysv3
1467a6d9b409Smrg		;;
146892e95ad1Smrg	svr4*)
146992e95ad1Smrg		os=sysv4
1470a6d9b409Smrg		;;
147192e95ad1Smrg	svr3)
147292e95ad1Smrg		os=sysv3
1473a6d9b409Smrg		;;
147492e95ad1Smrg	sysvr4)
147592e95ad1Smrg		os=sysv4
1476a6d9b409Smrg		;;
147792e95ad1Smrg	ose*)
147892e95ad1Smrg		os=ose
1479a6d9b409Smrg		;;
148092e95ad1Smrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
148192e95ad1Smrg		os=mint
1482efda2da8Smrg		;;
148392e95ad1Smrg	dicos*)
148492e95ad1Smrg		os=dicos
148592e95ad1Smrg		;;
148692e95ad1Smrg	pikeos*)
14878b8e729cSmrg		# Until real need of OS specific support for
14888b8e729cSmrg		# particular features comes up, bare metal
14898b8e729cSmrg		# configurations are quite functional.
149092e95ad1Smrg		case $cpu in
14918b8e729cSmrg		    arm*)
149292e95ad1Smrg			os=eabi
14938b8e729cSmrg			;;
14948b8e729cSmrg		    *)
1495838f5b0bSmrg			os=
1496838f5b0bSmrg			obj=elf
14978b8e729cSmrg			;;
14988b8e729cSmrg		esac
14998b8e729cSmrg		;;
1500838f5b0bSmrg	aout* | coff* | elf* | pe*)
1501838f5b0bSmrg		# These are machine code file formats, not OSes
1502838f5b0bSmrg		obj=$os
1503838f5b0bSmrg		os=
1504838f5b0bSmrg		;;
1505a6d9b409Smrg	*)
150692e95ad1Smrg		# No normalization, but not necessarily accepted, that comes below.
1507a6d9b409Smrg		;;
1508a6d9b409Smrgesac
150992e95ad1Smrg
1510a6d9b409Smrgelse
1511a6d9b409Smrg
1512a6d9b409Smrg# Here we handle the default operating systems that come with various machines.
1513a6d9b409Smrg# The value should be what the vendor currently ships out the door with their
1514a6d9b409Smrg# machine or put another way, the most popular os provided with the machine.
1515a6d9b409Smrg
1516a6d9b409Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
1517a6d9b409Smrg# "-sun"), then you have to tell the case statement up towards the top
1518a6d9b409Smrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
1519a6d9b409Smrg# will signal an error saying that MANUFACTURER isn't an operating
1520a6d9b409Smrg# system, and we'll never get to this point.
1521a6d9b409Smrg
152292e95ad1Smrgkernel=
1523838f5b0bSmrgobj=
152492e95ad1Smrgcase $cpu-$vendor in
1525a097bd00Smrg	score-*)
1526838f5b0bSmrg		os=
1527838f5b0bSmrg		obj=elf
1528cae39615Smrg		;;
1529a097bd00Smrg	spu-*)
1530838f5b0bSmrg		os=
1531838f5b0bSmrg		obj=elf
1532cae39615Smrg		;;
1533a6d9b409Smrg	*-acorn)
153492e95ad1Smrg		os=riscix1.2
1535a6d9b409Smrg		;;
1536a6d9b409Smrg	arm*-rebel)
153792e95ad1Smrg		kernel=linux
153892e95ad1Smrg		os=gnu
1539a6d9b409Smrg		;;
1540a6d9b409Smrg	arm*-semi)
1541838f5b0bSmrg		os=
1542838f5b0bSmrg		obj=aout
1543a6d9b409Smrg		;;
1544a097bd00Smrg	c4x-* | tic4x-*)
1545838f5b0bSmrg		os=
1546838f5b0bSmrg		obj=coff
1547a097bd00Smrg		;;
1548b91640d3Smrg	c8051-*)
1549838f5b0bSmrg		os=
1550838f5b0bSmrg		obj=elf
155192e95ad1Smrg		;;
155292e95ad1Smrg	clipper-intergraph)
155392e95ad1Smrg		os=clix
1554b91640d3Smrg		;;
1555b91640d3Smrg	hexagon-*)
1556838f5b0bSmrg		os=
1557838f5b0bSmrg		obj=elf
1558b91640d3Smrg		;;
1559a097bd00Smrg	tic54x-*)
1560838f5b0bSmrg		os=
1561838f5b0bSmrg		obj=coff
1562a097bd00Smrg		;;
1563a097bd00Smrg	tic55x-*)
1564838f5b0bSmrg		os=
1565838f5b0bSmrg		obj=coff
1566a097bd00Smrg		;;
1567a097bd00Smrg	tic6x-*)
1568838f5b0bSmrg		os=
1569838f5b0bSmrg		obj=coff
1570cae39615Smrg		;;
1571a6d9b409Smrg	# This must come before the *-dec entry.
1572a6d9b409Smrg	pdp10-*)
157392e95ad1Smrg		os=tops20
1574a6d9b409Smrg		;;
1575a6d9b409Smrg	pdp11-*)
157692e95ad1Smrg		os=none
1577a6d9b409Smrg		;;
1578a6d9b409Smrg	*-dec | vax-*)
157992e95ad1Smrg		os=ultrix4.2
1580a6d9b409Smrg		;;
1581a6d9b409Smrg	m68*-apollo)
158292e95ad1Smrg		os=domain
1583a6d9b409Smrg		;;
1584a6d9b409Smrg	i386-sun)
158592e95ad1Smrg		os=sunos4.0.2
1586a6d9b409Smrg		;;
1587a6d9b409Smrg	m68000-sun)
158892e95ad1Smrg		os=sunos3
1589a6d9b409Smrg		;;
1590a6d9b409Smrg	m68*-cisco)
1591838f5b0bSmrg		os=
1592838f5b0bSmrg		obj=aout
1593a6d9b409Smrg		;;
1594a097bd00Smrg	mep-*)
1595838f5b0bSmrg		os=
1596838f5b0bSmrg		obj=elf
1597cae39615Smrg		;;
1598a6d9b409Smrg	mips*-cisco)
1599838f5b0bSmrg		os=
1600838f5b0bSmrg		obj=elf
1601a6d9b409Smrg		;;
1602838f5b0bSmrg	mips*-*|nanomips*-*)
1603838f5b0bSmrg		os=
1604838f5b0bSmrg		obj=elf
1605a6d9b409Smrg		;;
1606a6d9b409Smrg	or32-*)
1607838f5b0bSmrg		os=
1608838f5b0bSmrg		obj=coff
1609a6d9b409Smrg		;;
1610a6d9b409Smrg	*-tti)	# must be before sparc entry or we get the wrong os.
161192e95ad1Smrg		os=sysv3
1612a6d9b409Smrg		;;
1613a6d9b409Smrg	sparc-* | *-sun)
161492e95ad1Smrg		os=sunos4.1.1
1615a6d9b409Smrg		;;
16168b8e729cSmrg	pru-*)
1617838f5b0bSmrg		os=
1618838f5b0bSmrg		obj=elf
16198b8e729cSmrg		;;
1620a6d9b409Smrg	*-be)
162192e95ad1Smrg		os=beos
1622a6d9b409Smrg		;;
1623a6d9b409Smrg	*-ibm)
162492e95ad1Smrg		os=aix
1625a6d9b409Smrg		;;
1626a097bd00Smrg	*-knuth)
162792e95ad1Smrg		os=mmixware
1628a6d9b409Smrg		;;
1629a6d9b409Smrg	*-wec)
163092e95ad1Smrg		os=proelf
1631a6d9b409Smrg		;;
1632a6d9b409Smrg	*-winbond)
163392e95ad1Smrg		os=proelf
1634a6d9b409Smrg		;;
1635a6d9b409Smrg	*-oki)
163692e95ad1Smrg		os=proelf
1637a6d9b409Smrg		;;
1638a6d9b409Smrg	*-hp)
163992e95ad1Smrg		os=hpux
1640a6d9b409Smrg		;;
1641a6d9b409Smrg	*-hitachi)
164292e95ad1Smrg		os=hiux
1643a6d9b409Smrg		;;
1644a6d9b409Smrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
164592e95ad1Smrg		os=sysv
1646a6d9b409Smrg		;;
1647a6d9b409Smrg	*-cbm)
164892e95ad1Smrg		os=amigaos
1649a6d9b409Smrg		;;
1650a6d9b409Smrg	*-dg)
165192e95ad1Smrg		os=dgux
1652a6d9b409Smrg		;;
1653a6d9b409Smrg	*-dolphin)
165492e95ad1Smrg		os=sysv3
1655a6d9b409Smrg		;;
1656a6d9b409Smrg	m68k-ccur)
165792e95ad1Smrg		os=rtu
1658a6d9b409Smrg		;;
1659a6d9b409Smrg	m88k-omron*)
166092e95ad1Smrg		os=luna
1661a6d9b409Smrg		;;
16628b8e729cSmrg	*-next)
166392e95ad1Smrg		os=nextstep
1664a6d9b409Smrg		;;
1665a6d9b409Smrg	*-sequent)
166692e95ad1Smrg		os=ptx
1667a6d9b409Smrg		;;
1668a6d9b409Smrg	*-crds)
166992e95ad1Smrg		os=unos
1670a6d9b409Smrg		;;
1671a6d9b409Smrg	*-ns)
167292e95ad1Smrg		os=genix
1673a6d9b409Smrg		;;
1674a6d9b409Smrg	i370-*)
167592e95ad1Smrg		os=mvs
1676a6d9b409Smrg		;;
1677a6d9b409Smrg	*-gould)
167892e95ad1Smrg		os=sysv
1679a6d9b409Smrg		;;
1680a6d9b409Smrg	*-highlevel)
168192e95ad1Smrg		os=bsd
1682a6d9b409Smrg		;;
1683a6d9b409Smrg	*-encore)
168492e95ad1Smrg		os=bsd
1685a6d9b409Smrg		;;
1686a6d9b409Smrg	*-sgi)
168792e95ad1Smrg		os=irix
1688a6d9b409Smrg		;;
1689a6d9b409Smrg	*-siemens)
169092e95ad1Smrg		os=sysv4
1691a6d9b409Smrg		;;
1692a6d9b409Smrg	*-masscomp)
169392e95ad1Smrg		os=rtu
1694a6d9b409Smrg		;;
1695a6d9b409Smrg	f30[01]-fujitsu | f700-fujitsu)
169692e95ad1Smrg		os=uxpv
1697a6d9b409Smrg		;;
1698a6d9b409Smrg	*-rom68k)
1699838f5b0bSmrg		os=
1700838f5b0bSmrg		obj=coff
1701a6d9b409Smrg		;;
1702a6d9b409Smrg	*-*bug)
1703838f5b0bSmrg		os=
1704838f5b0bSmrg		obj=coff
1705a6d9b409Smrg		;;
1706a6d9b409Smrg	*-apple)
170792e95ad1Smrg		os=macos
1708a6d9b409Smrg		;;
1709a6d9b409Smrg	*-atari*)
171092e95ad1Smrg		os=mint
171192e95ad1Smrg		;;
171292e95ad1Smrg	*-wrs)
171392e95ad1Smrg		os=vxworks
1714a6d9b409Smrg		;;
1715a6d9b409Smrg	*)
171692e95ad1Smrg		os=none
1717a6d9b409Smrg		;;
1718a6d9b409Smrgesac
171992e95ad1Smrg
1720a6d9b409Smrgfi
1721a6d9b409Smrg
1722838f5b0bSmrg# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ).
1723838f5b0bSmrg
172492e95ad1Smrgcase $os in
172592e95ad1Smrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
1726838f5b0bSmrg	llvm* | musl* | newlib* | relibc* | uclibc*)
172792e95ad1Smrg		;;
172892e95ad1Smrg	# Likewise for "kernel-abi"
172992e95ad1Smrg	eabi* | gnueabi*)
173092e95ad1Smrg		;;
173192e95ad1Smrg	# VxWorks passes extra cpu info in the 4th filed.
173292e95ad1Smrg	simlinux | simwindows | spe)
173392e95ad1Smrg		;;
1734838f5b0bSmrg	# See `case $cpu-$os` validation below
1735838f5b0bSmrg	ghcjs)
1736838f5b0bSmrg		;;
173792e95ad1Smrg	# Now accept the basic system types.
173892e95ad1Smrg	# The portable systems comes first.
173992e95ad1Smrg	# Each alternative MUST end in a * to match a version number.
174092e95ad1Smrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
174192e95ad1Smrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
174292e95ad1Smrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
174392e95ad1Smrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
174492e95ad1Smrg	     | hiux* | abug | nacl* | netware* | windows* \
1745838f5b0bSmrg	     | os9* | macos* | osx* | ios* | tvos* | watchos* \
174692e95ad1Smrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
174792e95ad1Smrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
174892e95ad1Smrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
174992e95ad1Smrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
175092e95ad1Smrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
175192e95ad1Smrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
175292e95ad1Smrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
175392e95ad1Smrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
1754838f5b0bSmrg	     | bosx* | nextstep* | cxux* | oabi* \
1755838f5b0bSmrg	     | ptx* | ecoff* | winnt* | domain* | vsta* \
175692e95ad1Smrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
175792e95ad1Smrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
1758838f5b0bSmrg	     | cygwin* | msys* | moss* | proelf* | rtems* \
175992e95ad1Smrg	     | midipix* | mingw32* | mingw64* | mint* \
176092e95ad1Smrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
176192e95ad1Smrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
176292e95ad1Smrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
176392e95ad1Smrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
176492e95ad1Smrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
176592e95ad1Smrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
176692e95ad1Smrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
176792e95ad1Smrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
176892e95ad1Smrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
176992e95ad1Smrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
1770838f5b0bSmrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
1771838f5b0bSmrg	     | fiwix* | mlibc* | cos* | mbr* | ironclad* )
177292e95ad1Smrg		;;
177392e95ad1Smrg	# This one is extra strict with allowed versions
177492e95ad1Smrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
177592e95ad1Smrg		# Don't forget version if it is 3.2v4 or newer.
177692e95ad1Smrg		;;
1777838f5b0bSmrg	# This refers to builds using the UEFI calling convention
1778838f5b0bSmrg	# (which depends on the architecture) and PE file format.
1779838f5b0bSmrg	# Note that this is both a different calling convention and
1780838f5b0bSmrg	# different file format than that of GNU-EFI
1781838f5b0bSmrg	# (x86_64-w64-mingw32).
1782838f5b0bSmrg	uefi)
1783838f5b0bSmrg		;;
178492e95ad1Smrg	none)
178592e95ad1Smrg		;;
1786838f5b0bSmrg	kernel* | msvc* )
1787838f5b0bSmrg		# Restricted further below
1788838f5b0bSmrg		;;
1789838f5b0bSmrg	'')
1790838f5b0bSmrg		if test x"$obj" = x
1791838f5b0bSmrg		then
1792838f5b0bSmrg			echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
1793838f5b0bSmrg		fi
1794838f5b0bSmrg		;;
179592e95ad1Smrg	*)
1796838f5b0bSmrg		echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
1797838f5b0bSmrg		exit 1
1798838f5b0bSmrg		;;
1799838f5b0bSmrgesac
1800838f5b0bSmrg
1801838f5b0bSmrgcase $obj in
1802838f5b0bSmrg	aout* | coff* | elf* | pe*)
1803838f5b0bSmrg		;;
1804838f5b0bSmrg	'')
1805838f5b0bSmrg		# empty is fine
1806838f5b0bSmrg		;;
1807838f5b0bSmrg	*)
1808838f5b0bSmrg		echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
1809838f5b0bSmrg		exit 1
1810838f5b0bSmrg		;;
1811838f5b0bSmrgesac
1812838f5b0bSmrg
1813838f5b0bSmrg# Here we handle the constraint that a (synthetic) cpu and os are
1814838f5b0bSmrg# valid only in combination with each other and nowhere else.
1815838f5b0bSmrgcase $cpu-$os in
1816838f5b0bSmrg	# The "javascript-unknown-ghcjs" triple is used by GHC; we
1817838f5b0bSmrg	# accept it here in order to tolerate that, but reject any
1818838f5b0bSmrg	# variations.
1819838f5b0bSmrg	javascript-ghcjs)
1820838f5b0bSmrg		;;
1821838f5b0bSmrg	javascript-* | *-ghcjs)
1822838f5b0bSmrg		echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
182392e95ad1Smrg		exit 1
182492e95ad1Smrg		;;
182592e95ad1Smrgesac
182692e95ad1Smrg
182792e95ad1Smrg# As a final step for OS-related things, validate the OS-kernel combination
182892e95ad1Smrg# (given a valid OS), if there is a kernel.
1829838f5b0bSmrgcase $kernel-$os-$obj in
1830838f5b0bSmrg	linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
1831838f5b0bSmrg		    | linux-mlibc*- | linux-musl*- | linux-newlib*- \
1832838f5b0bSmrg		    | linux-relibc*- | linux-uclibc*- )
1833838f5b0bSmrg		;;
1834838f5b0bSmrg	uclinux-uclibc*- )
1835838f5b0bSmrg		;;
1836838f5b0bSmrg	managarm-mlibc*- | managarm-kernel*- )
183792e95ad1Smrg		;;
1838838f5b0bSmrg	windows*-msvc*-)
183992e95ad1Smrg		;;
1840838f5b0bSmrg	-dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
1841838f5b0bSmrg		    | -uclibc*- )
184292e95ad1Smrg		# These are just libc implementations, not actual OSes, and thus
184392e95ad1Smrg		# require a kernel.
1844838f5b0bSmrg		echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
184592e95ad1Smrg		exit 1
184692e95ad1Smrg		;;
1847838f5b0bSmrg	-kernel*- )
1848838f5b0bSmrg		echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
1849838f5b0bSmrg		exit 1
185092e95ad1Smrg		;;
1851838f5b0bSmrg	*-kernel*- )
1852838f5b0bSmrg		echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
1853838f5b0bSmrg		exit 1
185492e95ad1Smrg		;;
1855838f5b0bSmrg	*-msvc*- )
1856838f5b0bSmrg		echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
1857838f5b0bSmrg		exit 1
185892e95ad1Smrg		;;
1859838f5b0bSmrg	kfreebsd*-gnu*- | kopensolaris*-gnu*-)
1860838f5b0bSmrg		;;
1861838f5b0bSmrg	vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
1862838f5b0bSmrg		;;
1863838f5b0bSmrg	nto-qnx*-)
1864838f5b0bSmrg		;;
1865838f5b0bSmrg	os2-emx-)
186692e95ad1Smrg		;;
1867838f5b0bSmrg	*-eabi*- | *-gnueabi*-)
186892e95ad1Smrg		;;
1869838f5b0bSmrg	none--*)
1870838f5b0bSmrg		# None (no kernel, i.e. freestanding / bare metal),
1871838f5b0bSmrg		# can be paired with an machine code file format
1872838f5b0bSmrg		;;
1873838f5b0bSmrg	-*-)
187492e95ad1Smrg		# Blank kernel with real OS is always fine.
187592e95ad1Smrg		;;
1876838f5b0bSmrg	--*)
1877838f5b0bSmrg		# Blank kernel and OS with real machine code file format is always fine.
1878838f5b0bSmrg		;;
1879838f5b0bSmrg	*-*-*)
1880838f5b0bSmrg		echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
188192e95ad1Smrg		exit 1
188292e95ad1Smrg		;;
188392e95ad1Smrgesac
188492e95ad1Smrg
1885a6d9b409Smrg# Here we handle the case where we know the os, and the CPU type, but not the
1886a6d9b409Smrg# manufacturer.  We pick the logical manufacturer.
188792e95ad1Smrgcase $vendor in
188892e95ad1Smrg	unknown)
188992e95ad1Smrg		case $cpu-$os in
189092e95ad1Smrg			*-riscix*)
1891a6d9b409Smrg				vendor=acorn
1892a6d9b409Smrg				;;
189392e95ad1Smrg			*-sunos*)
1894a6d9b409Smrg				vendor=sun
1895a6d9b409Smrg				;;
189692e95ad1Smrg			*-cnk* | *-aix*)
1897a6d9b409Smrg				vendor=ibm
1898a6d9b409Smrg				;;
189992e95ad1Smrg			*-beos*)
1900a6d9b409Smrg				vendor=be
1901a6d9b409Smrg				;;
190292e95ad1Smrg			*-hpux*)
1903a6d9b409Smrg				vendor=hp
1904a6d9b409Smrg				;;
190592e95ad1Smrg			*-mpeix*)
1906a6d9b409Smrg				vendor=hp
1907a6d9b409Smrg				;;
190892e95ad1Smrg			*-hiux*)
1909a6d9b409Smrg				vendor=hitachi
1910a6d9b409Smrg				;;
191192e95ad1Smrg			*-unos*)
1912a6d9b409Smrg				vendor=crds
1913a6d9b409Smrg				;;
191492e95ad1Smrg			*-dgux*)
1915a6d9b409Smrg				vendor=dg
1916a6d9b409Smrg				;;
191792e95ad1Smrg			*-luna*)
1918a6d9b409Smrg				vendor=omron
1919a6d9b409Smrg				;;
192092e95ad1Smrg			*-genix*)
1921a6d9b409Smrg				vendor=ns
1922a6d9b409Smrg				;;
192392e95ad1Smrg			*-clix*)
192492e95ad1Smrg				vendor=intergraph
192592e95ad1Smrg				;;
192692e95ad1Smrg			*-mvs* | *-opened*)
192792e95ad1Smrg				vendor=ibm
192892e95ad1Smrg				;;
192992e95ad1Smrg			*-os400*)
1930a6d9b409Smrg				vendor=ibm
1931a6d9b409Smrg				;;
193292e95ad1Smrg			s390-* | s390x-*)
1933a6d9b409Smrg				vendor=ibm
1934a6d9b409Smrg				;;
193592e95ad1Smrg			*-ptx*)
1936a6d9b409Smrg				vendor=sequent
1937a6d9b409Smrg				;;
193892e95ad1Smrg			*-tpf*)
1939a6d9b409Smrg				vendor=ibm
1940a6d9b409Smrg				;;
194192e95ad1Smrg			*-vxsim* | *-vxworks* | *-windiss*)
1942a6d9b409Smrg				vendor=wrs
1943a6d9b409Smrg				;;
194492e95ad1Smrg			*-aux*)
1945a6d9b409Smrg				vendor=apple
1946a6d9b409Smrg				;;
194792e95ad1Smrg			*-hms*)
1948a6d9b409Smrg				vendor=hitachi
1949a6d9b409Smrg				;;
195092e95ad1Smrg			*-mpw* | *-macos*)
1951a6d9b409Smrg				vendor=apple
1952a6d9b409Smrg				;;
195392e95ad1Smrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
1954a6d9b409Smrg				vendor=atari
1955a6d9b409Smrg				;;
195692e95ad1Smrg			*-vos*)
1957a6d9b409Smrg				vendor=stratus
1958a6d9b409Smrg				;;
1959a6d9b409Smrg		esac
1960a6d9b409Smrg		;;
1961a6d9b409Smrgesac
1962a6d9b409Smrg
1963838f5b0bSmrgecho "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
1964a6d9b409Smrgexit
1965a6d9b409Smrg
1966a6d9b409Smrg# Local variables:
196792e95ad1Smrg# eval: (add-hook 'before-save-hook 'time-stamp)
1968a6d9b409Smrg# time-stamp-start: "timestamp='"
1969a6d9b409Smrg# time-stamp-format: "%:y-%02m-%02d"
1970a6d9b409Smrg# time-stamp-end: "'"
1971a6d9b409Smrg# End:
1972