1f7ec340bSmacallan#! /bin/sh
2f7ec340bSmacallan# Configuration validation subroutine script.
366ab3337Smrg#   Copyright 1992-2021 Free Software Foundation, Inc.
4f7ec340bSmacallan
566ab3337Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale
6f7ec340bSmacallan
766ab3337Smrgtimestamp='2021-08-14'
866ab3337Smrg
966ab3337Smrg# This file is free software; you can redistribute it and/or modify it
1066ab3337Smrg# under the terms of the GNU General Public License as published by
1166ab3337Smrg# the Free Software Foundation; either version 3 of the License, or
12f7ec340bSmacallan# (at your option) any later version.
13f7ec340bSmacallan#
1466ab3337Smrg# This program is distributed in the hope that it will be useful, but
1566ab3337Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
1666ab3337Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1766ab3337Smrg# General Public License for more details.
18f7ec340bSmacallan#
19f7ec340bSmacallan# You should have received a copy of the GNU General Public License
2066ab3337Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
217ce7e03cSmrg#
22f7ec340bSmacallan# As a special exception to the GNU General Public License, if you
23f7ec340bSmacallan# distribute this file as part of a program that contains a
24f7ec340bSmacallan# configuration script generated by Autoconf, you may include it under
2566ab3337Smrg# the same distribution terms that you use for the rest of that
2666ab3337Smrg# program.  This Exception is an additional permission under section 7
2766ab3337Smrg# of the GNU General Public License, version 3 ("GPLv3").
28f7ec340bSmacallan
297ce7e03cSmrg
3066ab3337Smrg# Please send patches to <config-patches@gnu.org>.
31f7ec340bSmacallan#
32f7ec340bSmacallan# Configuration subroutine to validate and canonicalize a configuration type.
33f7ec340bSmacallan# Supply the specified configuration type as an argument.
34f7ec340bSmacallan# If it is invalid, we print an error message on stderr and exit with code 1.
35f7ec340bSmacallan# Otherwise, we print the canonical config type on stdout and succeed.
36f7ec340bSmacallan
372a75d1c4Smrg# You can get the latest version of this script from:
3866ab3337Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
392a75d1c4Smrg
40f7ec340bSmacallan# This file is supposed to be the same for all GNU packages
41f7ec340bSmacallan# and recognize all the CPU types, system types and aliases
42f7ec340bSmacallan# that are meaningful with *any* GNU software.
43f7ec340bSmacallan# Each package is responsible for reporting which valid configurations
44f7ec340bSmacallan# it does not support.  The user should be able to distinguish
45f7ec340bSmacallan# a failure to support a valid configuration from a meaningless
46f7ec340bSmacallan# configuration.
47f7ec340bSmacallan
48f7ec340bSmacallan# The goal of this file is to map all the various variations of a given
49f7ec340bSmacallan# machine specification into a single specification in the form:
50f7ec340bSmacallan#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
51f7ec340bSmacallan# or in some cases, the newer four-part form:
52f7ec340bSmacallan#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
53f7ec340bSmacallan# It is wrong to echo any other type of specification.
54f7ec340bSmacallan
5566ab3337Smrg# The "shellcheck disable" line above the timestamp inhibits complaints
5666ab3337Smrg# about features and limitations of the classic Bourne shell that were
5766ab3337Smrg# superseded or lifted in POSIX.  However, this script identifies a wide
5866ab3337Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
5966ab3337Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still
6066ab3337Smrg# have a pre-POSIX /bin/sh.
6166ab3337Smrg
62f7ec340bSmacallanme=`echo "$0" | sed -e 's,.*/,,'`
63f7ec340bSmacallan
64f7ec340bSmacallanusage="\
6566ab3337SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
66f7ec340bSmacallan
67f7ec340bSmacallanCanonicalize a configuration name.
68f7ec340bSmacallan
6966ab3337SmrgOptions:
70f7ec340bSmacallan  -h, --help         print this help, then exit
71f7ec340bSmacallan  -t, --time-stamp   print date of last modification, then exit
72f7ec340bSmacallan  -v, --version      print version number, then exit
73f7ec340bSmacallan
74f7ec340bSmacallanReport bugs and patches to <config-patches@gnu.org>."
75f7ec340bSmacallan
76f7ec340bSmacallanversion="\
77f7ec340bSmacallanGNU config.sub ($timestamp)
78f7ec340bSmacallan
7966ab3337SmrgCopyright 1992-2021 Free Software Foundation, Inc.
80f7ec340bSmacallan
81f7ec340bSmacallanThis is free software; see the source for copying conditions.  There is NO
82f7ec340bSmacallanwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
83f7ec340bSmacallan
84f7ec340bSmacallanhelp="
85f7ec340bSmacallanTry \`$me --help' for more information."
86f7ec340bSmacallan
87f7ec340bSmacallan# Parse command line
88f7ec340bSmacallanwhile test $# -gt 0 ; do
89f7ec340bSmacallan  case $1 in
90f7ec340bSmacallan    --time-stamp | --time* | -t )
917ce7e03cSmrg       echo "$timestamp" ; exit ;;
92f7ec340bSmacallan    --version | -v )
937ce7e03cSmrg       echo "$version" ; exit ;;
94f7ec340bSmacallan    --help | --h* | -h )
957ce7e03cSmrg       echo "$usage"; exit ;;
96f7ec340bSmacallan    -- )     # Stop option processing
97f7ec340bSmacallan       shift; break ;;
98f7ec340bSmacallan    - )	# Use stdin as input.
99f7ec340bSmacallan       break ;;
100f7ec340bSmacallan    -* )
10166ab3337Smrg       echo "$me: invalid option $1$help" >&2
102f7ec340bSmacallan       exit 1 ;;
103f7ec340bSmacallan
104f7ec340bSmacallan    *local*)
105f7ec340bSmacallan       # First pass through any local machine types.
10666ab3337Smrg       echo "$1"
1077ce7e03cSmrg       exit ;;
108f7ec340bSmacallan
109f7ec340bSmacallan    * )
110f7ec340bSmacallan       break ;;
111f7ec340bSmacallan  esac
112f7ec340bSmacallandone
113f7ec340bSmacallan
114f7ec340bSmacallancase $# in
115f7ec340bSmacallan 0) echo "$me: missing argument$help" >&2
116f7ec340bSmacallan    exit 1;;
117f7ec340bSmacallan 1) ;;
118f7ec340bSmacallan *) echo "$me: too many arguments$help" >&2
119f7ec340bSmacallan    exit 1;;
120f7ec340bSmacallanesac
121f7ec340bSmacallan
12266ab3337Smrg# Split fields of configuration type
12366ab3337Smrg# shellcheck disable=SC2162
12466ab3337Smrgsaved_IFS=$IFS
12566ab3337SmrgIFS="-" read field1 field2 field3 field4 <<EOF
12666ab3337Smrg$1
12766ab3337SmrgEOF
12866ab3337SmrgIFS=$saved_IFS
129f7ec340bSmacallan
13066ab3337Smrg# Separate into logical components for further validation
13166ab3337Smrgcase $1 in
13266ab3337Smrg	*-*-*-*-*)
13366ab3337Smrg		echo Invalid configuration \`"$1"\': more than four components >&2
13466ab3337Smrg		exit 1
135f7ec340bSmacallan		;;
13666ab3337Smrg	*-*-*-*)
13766ab3337Smrg		basic_machine=$field1-$field2
13866ab3337Smrg		basic_os=$field3-$field4
139f7ec340bSmacallan		;;
14066ab3337Smrg	*-*-*)
14166ab3337Smrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
14266ab3337Smrg		# parts
14366ab3337Smrg		maybe_os=$field2-$field3
14466ab3337Smrg		case $maybe_os in
14566ab3337Smrg			nto-qnx* | linux-* | uclinux-uclibc* \
14666ab3337Smrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
14766ab3337Smrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
14866ab3337Smrg			| storm-chaos* | os2-emx* | rtmk-nova*)
14966ab3337Smrg				basic_machine=$field1
15066ab3337Smrg				basic_os=$maybe_os
15166ab3337Smrg				;;
15266ab3337Smrg			android-linux)
15366ab3337Smrg				basic_machine=$field1-unknown
15466ab3337Smrg				basic_os=linux-android
15566ab3337Smrg				;;
15666ab3337Smrg			*)
15766ab3337Smrg				basic_machine=$field1-$field2
15866ab3337Smrg				basic_os=$field3
15966ab3337Smrg				;;
16066ab3337Smrg		esac
161f7ec340bSmacallan		;;
16266ab3337Smrg	*-*)
16366ab3337Smrg		# A lone config we happen to match not fitting any pattern
16466ab3337Smrg		case $field1-$field2 in
16566ab3337Smrg			decstation-3100)
16666ab3337Smrg				basic_machine=mips-dec
16766ab3337Smrg				basic_os=
16866ab3337Smrg				;;
16966ab3337Smrg			*-*)
17066ab3337Smrg				# Second component is usually, but not always the OS
17166ab3337Smrg				case $field2 in
17266ab3337Smrg					# Prevent following clause from handling this valid os
17366ab3337Smrg					sun*os*)
17466ab3337Smrg						basic_machine=$field1
17566ab3337Smrg						basic_os=$field2
17666ab3337Smrg						;;
17766ab3337Smrg					zephyr*)
17866ab3337Smrg						basic_machine=$field1-unknown
17966ab3337Smrg						basic_os=$field2
18066ab3337Smrg						;;
18166ab3337Smrg					# Manufacturers
18266ab3337Smrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
18366ab3337Smrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
18466ab3337Smrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
18566ab3337Smrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
18666ab3337Smrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
18766ab3337Smrg					| ultra | tti* | harris | dolphin | highlevel | gould \
18866ab3337Smrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
18966ab3337Smrg					| microblaze* | sim | cisco \
19066ab3337Smrg					| oki | wec | wrs | winbond)
19166ab3337Smrg						basic_machine=$field1-$field2
19266ab3337Smrg						basic_os=
19366ab3337Smrg						;;
19466ab3337Smrg					*)
19566ab3337Smrg						basic_machine=$field1
19666ab3337Smrg						basic_os=$field2
19766ab3337Smrg						;;
19866ab3337Smrg				esac
19966ab3337Smrg			;;
20066ab3337Smrg		esac
201f7ec340bSmacallan		;;
20266ab3337Smrg	*)
20366ab3337Smrg		# Convert single-component short-hands not valid as part of
20466ab3337Smrg		# multi-component configurations.
20566ab3337Smrg		case $field1 in
20666ab3337Smrg			386bsd)
20766ab3337Smrg				basic_machine=i386-pc
20866ab3337Smrg				basic_os=bsd
20966ab3337Smrg				;;
21066ab3337Smrg			a29khif)
21166ab3337Smrg				basic_machine=a29k-amd
21266ab3337Smrg				basic_os=udi
21366ab3337Smrg				;;
21466ab3337Smrg			adobe68k)
21566ab3337Smrg				basic_machine=m68010-adobe
21666ab3337Smrg				basic_os=scout
21766ab3337Smrg				;;
21866ab3337Smrg			alliant)
21966ab3337Smrg				basic_machine=fx80-alliant
22066ab3337Smrg				basic_os=
22166ab3337Smrg				;;
22266ab3337Smrg			altos | altos3068)
22366ab3337Smrg				basic_machine=m68k-altos
22466ab3337Smrg				basic_os=
22566ab3337Smrg				;;
22666ab3337Smrg			am29k)
22766ab3337Smrg				basic_machine=a29k-none
22866ab3337Smrg				basic_os=bsd
22966ab3337Smrg				;;
23066ab3337Smrg			amdahl)
23166ab3337Smrg				basic_machine=580-amdahl
23266ab3337Smrg				basic_os=sysv
23366ab3337Smrg				;;
23466ab3337Smrg			amiga)
23566ab3337Smrg				basic_machine=m68k-unknown
23666ab3337Smrg				basic_os=
23766ab3337Smrg				;;
23866ab3337Smrg			amigaos | amigados)
23966ab3337Smrg				basic_machine=m68k-unknown
24066ab3337Smrg				basic_os=amigaos
24166ab3337Smrg				;;
24266ab3337Smrg			amigaunix | amix)
24366ab3337Smrg				basic_machine=m68k-unknown
24466ab3337Smrg				basic_os=sysv4
24566ab3337Smrg				;;
24666ab3337Smrg			apollo68)
24766ab3337Smrg				basic_machine=m68k-apollo
24866ab3337Smrg				basic_os=sysv
24966ab3337Smrg				;;
25066ab3337Smrg			apollo68bsd)
25166ab3337Smrg				basic_machine=m68k-apollo
25266ab3337Smrg				basic_os=bsd
25366ab3337Smrg				;;
25466ab3337Smrg			aros)
25566ab3337Smrg				basic_machine=i386-pc
25666ab3337Smrg				basic_os=aros
25766ab3337Smrg				;;
25866ab3337Smrg			aux)
25966ab3337Smrg				basic_machine=m68k-apple
26066ab3337Smrg				basic_os=aux
26166ab3337Smrg				;;
26266ab3337Smrg			balance)
26366ab3337Smrg				basic_machine=ns32k-sequent
26466ab3337Smrg				basic_os=dynix
26566ab3337Smrg				;;
26666ab3337Smrg			blackfin)
26766ab3337Smrg				basic_machine=bfin-unknown
26866ab3337Smrg				basic_os=linux
26966ab3337Smrg				;;
27066ab3337Smrg			cegcc)
27166ab3337Smrg				basic_machine=arm-unknown
27266ab3337Smrg				basic_os=cegcc
27366ab3337Smrg				;;
27466ab3337Smrg			convex-c1)
27566ab3337Smrg				basic_machine=c1-convex
27666ab3337Smrg				basic_os=bsd
27766ab3337Smrg				;;
27866ab3337Smrg			convex-c2)
27966ab3337Smrg				basic_machine=c2-convex
28066ab3337Smrg				basic_os=bsd
28166ab3337Smrg				;;
28266ab3337Smrg			convex-c32)
28366ab3337Smrg				basic_machine=c32-convex
28466ab3337Smrg				basic_os=bsd
28566ab3337Smrg				;;
28666ab3337Smrg			convex-c34)
28766ab3337Smrg				basic_machine=c34-convex
28866ab3337Smrg				basic_os=bsd
28966ab3337Smrg				;;
29066ab3337Smrg			convex-c38)
29166ab3337Smrg				basic_machine=c38-convex
29266ab3337Smrg				basic_os=bsd
29366ab3337Smrg				;;
29466ab3337Smrg			cray)
29566ab3337Smrg				basic_machine=j90-cray
29666ab3337Smrg				basic_os=unicos
29766ab3337Smrg				;;
29866ab3337Smrg			crds | unos)
29966ab3337Smrg				basic_machine=m68k-crds
30066ab3337Smrg				basic_os=
30166ab3337Smrg				;;
30266ab3337Smrg			da30)
30366ab3337Smrg				basic_machine=m68k-da30
30466ab3337Smrg				basic_os=
30566ab3337Smrg				;;
30666ab3337Smrg			decstation | pmax | pmin | dec3100 | decstatn)
30766ab3337Smrg				basic_machine=mips-dec
30866ab3337Smrg				basic_os=
30966ab3337Smrg				;;
31066ab3337Smrg			delta88)
31166ab3337Smrg				basic_machine=m88k-motorola
31266ab3337Smrg				basic_os=sysv3
31366ab3337Smrg				;;
31466ab3337Smrg			dicos)
31566ab3337Smrg				basic_machine=i686-pc
31666ab3337Smrg				basic_os=dicos
31766ab3337Smrg				;;
31866ab3337Smrg			djgpp)
31966ab3337Smrg				basic_machine=i586-pc
32066ab3337Smrg				basic_os=msdosdjgpp
32166ab3337Smrg				;;
32266ab3337Smrg			ebmon29k)
32366ab3337Smrg				basic_machine=a29k-amd
32466ab3337Smrg				basic_os=ebmon
32566ab3337Smrg				;;
32666ab3337Smrg			es1800 | OSE68k | ose68k | ose | OSE)
32766ab3337Smrg				basic_machine=m68k-ericsson
32866ab3337Smrg				basic_os=ose
32966ab3337Smrg				;;
33066ab3337Smrg			gmicro)
33166ab3337Smrg				basic_machine=tron-gmicro
33266ab3337Smrg				basic_os=sysv
33366ab3337Smrg				;;
33466ab3337Smrg			go32)
33566ab3337Smrg				basic_machine=i386-pc
33666ab3337Smrg				basic_os=go32
33766ab3337Smrg				;;
33866ab3337Smrg			h8300hms)
33966ab3337Smrg				basic_machine=h8300-hitachi
34066ab3337Smrg				basic_os=hms
34166ab3337Smrg				;;
34266ab3337Smrg			h8300xray)
34366ab3337Smrg				basic_machine=h8300-hitachi
34466ab3337Smrg				basic_os=xray
34566ab3337Smrg				;;
34666ab3337Smrg			h8500hms)
34766ab3337Smrg				basic_machine=h8500-hitachi
34866ab3337Smrg				basic_os=hms
34966ab3337Smrg				;;
35066ab3337Smrg			harris)
35166ab3337Smrg				basic_machine=m88k-harris
35266ab3337Smrg				basic_os=sysv3
35366ab3337Smrg				;;
35466ab3337Smrg			hp300 | hp300hpux)
35566ab3337Smrg				basic_machine=m68k-hp
35666ab3337Smrg				basic_os=hpux
35766ab3337Smrg				;;
35866ab3337Smrg			hp300bsd)
35966ab3337Smrg				basic_machine=m68k-hp
36066ab3337Smrg				basic_os=bsd
36166ab3337Smrg				;;
36266ab3337Smrg			hppaosf)
36366ab3337Smrg				basic_machine=hppa1.1-hp
36466ab3337Smrg				basic_os=osf
36566ab3337Smrg				;;
36666ab3337Smrg			hppro)
36766ab3337Smrg				basic_machine=hppa1.1-hp
36866ab3337Smrg				basic_os=proelf
36966ab3337Smrg				;;
37066ab3337Smrg			i386mach)
37166ab3337Smrg				basic_machine=i386-mach
37266ab3337Smrg				basic_os=mach
37366ab3337Smrg				;;
37466ab3337Smrg			isi68 | isi)
37566ab3337Smrg				basic_machine=m68k-isi
37666ab3337Smrg				basic_os=sysv
37766ab3337Smrg				;;
37866ab3337Smrg			m68knommu)
37966ab3337Smrg				basic_machine=m68k-unknown
38066ab3337Smrg				basic_os=linux
38166ab3337Smrg				;;
38266ab3337Smrg			magnum | m3230)
38366ab3337Smrg				basic_machine=mips-mips
38466ab3337Smrg				basic_os=sysv
38566ab3337Smrg				;;
38666ab3337Smrg			merlin)
38766ab3337Smrg				basic_machine=ns32k-utek
38866ab3337Smrg				basic_os=sysv
38966ab3337Smrg				;;
39066ab3337Smrg			mingw64)
39166ab3337Smrg				basic_machine=x86_64-pc
39266ab3337Smrg				basic_os=mingw64
39366ab3337Smrg				;;
39466ab3337Smrg			mingw32)
39566ab3337Smrg				basic_machine=i686-pc
39666ab3337Smrg				basic_os=mingw32
39766ab3337Smrg				;;
39866ab3337Smrg			mingw32ce)
39966ab3337Smrg				basic_machine=arm-unknown
40066ab3337Smrg				basic_os=mingw32ce
40166ab3337Smrg				;;
40266ab3337Smrg			monitor)
40366ab3337Smrg				basic_machine=m68k-rom68k
40466ab3337Smrg				basic_os=coff
40566ab3337Smrg				;;
40666ab3337Smrg			morphos)
40766ab3337Smrg				basic_machine=powerpc-unknown
40866ab3337Smrg				basic_os=morphos
40966ab3337Smrg				;;
41066ab3337Smrg			moxiebox)
41166ab3337Smrg				basic_machine=moxie-unknown
41266ab3337Smrg				basic_os=moxiebox
41366ab3337Smrg				;;
41466ab3337Smrg			msdos)
41566ab3337Smrg				basic_machine=i386-pc
41666ab3337Smrg				basic_os=msdos
41766ab3337Smrg				;;
41866ab3337Smrg			msys)
41966ab3337Smrg				basic_machine=i686-pc
42066ab3337Smrg				basic_os=msys
42166ab3337Smrg				;;
42266ab3337Smrg			mvs)
42366ab3337Smrg				basic_machine=i370-ibm
42466ab3337Smrg				basic_os=mvs
42566ab3337Smrg				;;
42666ab3337Smrg			nacl)
42766ab3337Smrg				basic_machine=le32-unknown
42866ab3337Smrg				basic_os=nacl
42966ab3337Smrg				;;
43066ab3337Smrg			ncr3000)
43166ab3337Smrg				basic_machine=i486-ncr
43266ab3337Smrg				basic_os=sysv4
43366ab3337Smrg				;;
43466ab3337Smrg			netbsd386)
43566ab3337Smrg				basic_machine=i386-pc
43666ab3337Smrg				basic_os=netbsd
43766ab3337Smrg				;;
43866ab3337Smrg			netwinder)
43966ab3337Smrg				basic_machine=armv4l-rebel
44066ab3337Smrg				basic_os=linux
44166ab3337Smrg				;;
44266ab3337Smrg			news | news700 | news800 | news900)
44366ab3337Smrg				basic_machine=m68k-sony
44466ab3337Smrg				basic_os=newsos
44566ab3337Smrg				;;
44666ab3337Smrg			news1000)
44766ab3337Smrg				basic_machine=m68030-sony
44866ab3337Smrg				basic_os=newsos
44966ab3337Smrg				;;
45066ab3337Smrg			necv70)
45166ab3337Smrg				basic_machine=v70-nec
45266ab3337Smrg				basic_os=sysv
45366ab3337Smrg				;;
45466ab3337Smrg			nh3000)
45566ab3337Smrg				basic_machine=m68k-harris
45666ab3337Smrg				basic_os=cxux
45766ab3337Smrg				;;
45866ab3337Smrg			nh[45]000)
45966ab3337Smrg				basic_machine=m88k-harris
46066ab3337Smrg				basic_os=cxux
46166ab3337Smrg				;;
46266ab3337Smrg			nindy960)
46366ab3337Smrg				basic_machine=i960-intel
46466ab3337Smrg				basic_os=nindy
46566ab3337Smrg				;;
46666ab3337Smrg			mon960)
46766ab3337Smrg				basic_machine=i960-intel
46866ab3337Smrg				basic_os=mon960
46966ab3337Smrg				;;
47066ab3337Smrg			nonstopux)
47166ab3337Smrg				basic_machine=mips-compaq
47266ab3337Smrg				basic_os=nonstopux
47366ab3337Smrg				;;
47466ab3337Smrg			os400)
47566ab3337Smrg				basic_machine=powerpc-ibm
47666ab3337Smrg				basic_os=os400
47766ab3337Smrg				;;
47866ab3337Smrg			OSE68000 | ose68000)
47966ab3337Smrg				basic_machine=m68000-ericsson
48066ab3337Smrg				basic_os=ose
48166ab3337Smrg				;;
48266ab3337Smrg			os68k)
48366ab3337Smrg				basic_machine=m68k-none
48466ab3337Smrg				basic_os=os68k
48566ab3337Smrg				;;
48666ab3337Smrg			paragon)
48766ab3337Smrg				basic_machine=i860-intel
48866ab3337Smrg				basic_os=osf
48966ab3337Smrg				;;
49066ab3337Smrg			parisc)
49166ab3337Smrg				basic_machine=hppa-unknown
49266ab3337Smrg				basic_os=linux
49366ab3337Smrg				;;
49466ab3337Smrg			psp)
49566ab3337Smrg				basic_machine=mipsallegrexel-sony
49666ab3337Smrg				basic_os=psp
49766ab3337Smrg				;;
49866ab3337Smrg			pw32)
49966ab3337Smrg				basic_machine=i586-unknown
50066ab3337Smrg				basic_os=pw32
50166ab3337Smrg				;;
50266ab3337Smrg			rdos | rdos64)
50366ab3337Smrg				basic_machine=x86_64-pc
50466ab3337Smrg				basic_os=rdos
50566ab3337Smrg				;;
50666ab3337Smrg			rdos32)
50766ab3337Smrg				basic_machine=i386-pc
50866ab3337Smrg				basic_os=rdos
50966ab3337Smrg				;;
51066ab3337Smrg			rom68k)
51166ab3337Smrg				basic_machine=m68k-rom68k
51266ab3337Smrg				basic_os=coff
51366ab3337Smrg				;;
51466ab3337Smrg			sa29200)
51566ab3337Smrg				basic_machine=a29k-amd
51666ab3337Smrg				basic_os=udi
51766ab3337Smrg				;;
51866ab3337Smrg			sei)
51966ab3337Smrg				basic_machine=mips-sei
52066ab3337Smrg				basic_os=seiux
52166ab3337Smrg				;;
52266ab3337Smrg			sequent)
52366ab3337Smrg				basic_machine=i386-sequent
52466ab3337Smrg				basic_os=
52566ab3337Smrg				;;
52666ab3337Smrg			sps7)
52766ab3337Smrg				basic_machine=m68k-bull
52866ab3337Smrg				basic_os=sysv2
52966ab3337Smrg				;;
53066ab3337Smrg			st2000)
53166ab3337Smrg				basic_machine=m68k-tandem
53266ab3337Smrg				basic_os=
53366ab3337Smrg				;;
53466ab3337Smrg			stratus)
53566ab3337Smrg				basic_machine=i860-stratus
53666ab3337Smrg				basic_os=sysv4
53766ab3337Smrg				;;
53866ab3337Smrg			sun2)
53966ab3337Smrg				basic_machine=m68000-sun
54066ab3337Smrg				basic_os=
54166ab3337Smrg				;;
54266ab3337Smrg			sun2os3)
54366ab3337Smrg				basic_machine=m68000-sun
54466ab3337Smrg				basic_os=sunos3
54566ab3337Smrg				;;
54666ab3337Smrg			sun2os4)
54766ab3337Smrg				basic_machine=m68000-sun
54866ab3337Smrg				basic_os=sunos4
54966ab3337Smrg				;;
55066ab3337Smrg			sun3)
55166ab3337Smrg				basic_machine=m68k-sun
55266ab3337Smrg				basic_os=
55366ab3337Smrg				;;
55466ab3337Smrg			sun3os3)
55566ab3337Smrg				basic_machine=m68k-sun
55666ab3337Smrg				basic_os=sunos3
55766ab3337Smrg				;;
55866ab3337Smrg			sun3os4)
55966ab3337Smrg				basic_machine=m68k-sun
56066ab3337Smrg				basic_os=sunos4
56166ab3337Smrg				;;
56266ab3337Smrg			sun4)
56366ab3337Smrg				basic_machine=sparc-sun
56466ab3337Smrg				basic_os=
56566ab3337Smrg				;;
56666ab3337Smrg			sun4os3)
56766ab3337Smrg				basic_machine=sparc-sun
56866ab3337Smrg				basic_os=sunos3
56966ab3337Smrg				;;
57066ab3337Smrg			sun4os4)
57166ab3337Smrg				basic_machine=sparc-sun
57266ab3337Smrg				basic_os=sunos4
57366ab3337Smrg				;;
57466ab3337Smrg			sun4sol2)
57566ab3337Smrg				basic_machine=sparc-sun
57666ab3337Smrg				basic_os=solaris2
57766ab3337Smrg				;;
57866ab3337Smrg			sun386 | sun386i | roadrunner)
57966ab3337Smrg				basic_machine=i386-sun
58066ab3337Smrg				basic_os=
58166ab3337Smrg				;;
58266ab3337Smrg			sv1)
58366ab3337Smrg				basic_machine=sv1-cray
58466ab3337Smrg				basic_os=unicos
58566ab3337Smrg				;;
58666ab3337Smrg			symmetry)
58766ab3337Smrg				basic_machine=i386-sequent
58866ab3337Smrg				basic_os=dynix
58966ab3337Smrg				;;
59066ab3337Smrg			t3e)
59166ab3337Smrg				basic_machine=alphaev5-cray
59266ab3337Smrg				basic_os=unicos
59366ab3337Smrg				;;
59466ab3337Smrg			t90)
59566ab3337Smrg				basic_machine=t90-cray
59666ab3337Smrg				basic_os=unicos
59766ab3337Smrg				;;
59866ab3337Smrg			toad1)
59966ab3337Smrg				basic_machine=pdp10-xkl
60066ab3337Smrg				basic_os=tops20
60166ab3337Smrg				;;
60266ab3337Smrg			tpf)
60366ab3337Smrg				basic_machine=s390x-ibm
60466ab3337Smrg				basic_os=tpf
60566ab3337Smrg				;;
60666ab3337Smrg			udi29k)
60766ab3337Smrg				basic_machine=a29k-amd
60866ab3337Smrg				basic_os=udi
60966ab3337Smrg				;;
61066ab3337Smrg			ultra3)
61166ab3337Smrg				basic_machine=a29k-nyu
61266ab3337Smrg				basic_os=sym1
61366ab3337Smrg				;;
61466ab3337Smrg			v810 | necv810)
61566ab3337Smrg				basic_machine=v810-nec
61666ab3337Smrg				basic_os=none
61766ab3337Smrg				;;
61866ab3337Smrg			vaxv)
61966ab3337Smrg				basic_machine=vax-dec
62066ab3337Smrg				basic_os=sysv
62166ab3337Smrg				;;
62266ab3337Smrg			vms)
62366ab3337Smrg				basic_machine=vax-dec
62466ab3337Smrg				basic_os=vms
62566ab3337Smrg				;;
62666ab3337Smrg			vsta)
62766ab3337Smrg				basic_machine=i386-pc
62866ab3337Smrg				basic_os=vsta
62966ab3337Smrg				;;
63066ab3337Smrg			vxworks960)
63166ab3337Smrg				basic_machine=i960-wrs
63266ab3337Smrg				basic_os=vxworks
63366ab3337Smrg				;;
63466ab3337Smrg			vxworks68)
63566ab3337Smrg				basic_machine=m68k-wrs
63666ab3337Smrg				basic_os=vxworks
63766ab3337Smrg				;;
63866ab3337Smrg			vxworks29k)
63966ab3337Smrg				basic_machine=a29k-wrs
64066ab3337Smrg				basic_os=vxworks
64166ab3337Smrg				;;
64266ab3337Smrg			xbox)
64366ab3337Smrg				basic_machine=i686-pc
64466ab3337Smrg				basic_os=mingw32
64566ab3337Smrg				;;
64666ab3337Smrg			ymp)
64766ab3337Smrg				basic_machine=ymp-cray
64866ab3337Smrg				basic_os=unicos
64966ab3337Smrg				;;
65066ab3337Smrg			*)
65166ab3337Smrg				basic_machine=$1
65266ab3337Smrg				basic_os=
65366ab3337Smrg				;;
65466ab3337Smrg		esac
655f7ec340bSmacallan		;;
656f7ec340bSmacallanesac
657f7ec340bSmacallan
65866ab3337Smrg# Decode 1-component or ad-hoc basic machines
659f7ec340bSmacallancase $basic_machine in
66066ab3337Smrg	# Here we handle the default manufacturer of certain CPU types.  It is in
66166ab3337Smrg	# some cases the only manufacturer, in others, it is the most popular.
66266ab3337Smrg	w89k)
66366ab3337Smrg		cpu=hppa1.1
66466ab3337Smrg		vendor=winbond
6657ce7e03cSmrg		;;
66666ab3337Smrg	op50n)
66766ab3337Smrg		cpu=hppa1.1
66866ab3337Smrg		vendor=oki
6692a75d1c4Smrg		;;
67066ab3337Smrg	op60c)
67166ab3337Smrg		cpu=hppa1.1
67266ab3337Smrg		vendor=oki
6732a75d1c4Smrg		;;
67466ab3337Smrg	ibm*)
67566ab3337Smrg		cpu=i370
67666ab3337Smrg		vendor=ibm
6772a75d1c4Smrg		;;
67866ab3337Smrg	orion105)
67966ab3337Smrg		cpu=clipper
68066ab3337Smrg		vendor=highlevel
6812a75d1c4Smrg		;;
68266ab3337Smrg	mac | mpw | mac-mpw)
68366ab3337Smrg		cpu=m68k
68466ab3337Smrg		vendor=apple
685f7ec340bSmacallan		;;
68666ab3337Smrg	pmac | pmac-mpw)
68766ab3337Smrg		cpu=powerpc
68866ab3337Smrg		vendor=apple
6897ce7e03cSmrg		;;
69066ab3337Smrg
691f7ec340bSmacallan	# Recognize the various machine names and aliases which stand
692f7ec340bSmacallan	# for a CPU type and a company and sometimes even an OS.
693f7ec340bSmacallan	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
69466ab3337Smrg		cpu=m68000
69566ab3337Smrg		vendor=att
696f7ec340bSmacallan		;;
697f7ec340bSmacallan	3b*)
69866ab3337Smrg		cpu=we32k
69966ab3337Smrg		vendor=att
7007ce7e03cSmrg		;;
7012a75d1c4Smrg	bluegene*)
70266ab3337Smrg		cpu=powerpc
70366ab3337Smrg		vendor=ibm
70466ab3337Smrg		basic_os=cnk
705f7ec340bSmacallan		;;
706f7ec340bSmacallan	decsystem10* | dec10*)
70766ab3337Smrg		cpu=pdp10
70866ab3337Smrg		vendor=dec
70966ab3337Smrg		basic_os=tops10
710f7ec340bSmacallan		;;
711f7ec340bSmacallan	decsystem20* | dec20*)
71266ab3337Smrg		cpu=pdp10
71366ab3337Smrg		vendor=dec
71466ab3337Smrg		basic_os=tops20
715f7ec340bSmacallan		;;
716f7ec340bSmacallan	delta | 3300 | motorola-3300 | motorola-delta \
717f7ec340bSmacallan	      | 3300-motorola | delta-motorola)
71866ab3337Smrg		cpu=m68k
71966ab3337Smrg		vendor=motorola
7207ce7e03cSmrg		;;
72166ab3337Smrg	dpx2*)
72266ab3337Smrg		cpu=m68k
72366ab3337Smrg		vendor=bull
72466ab3337Smrg		basic_os=sysv3
725f7ec340bSmacallan		;;
726f7ec340bSmacallan	encore | umax | mmax)
72766ab3337Smrg		cpu=ns32k
72866ab3337Smrg		vendor=encore
729f7ec340bSmacallan		;;
73066ab3337Smrg	elxsi)
73166ab3337Smrg		cpu=elxsi
73266ab3337Smrg		vendor=elxsi
73366ab3337Smrg		basic_os=${basic_os:-bsd}
734f7ec340bSmacallan		;;
735f7ec340bSmacallan	fx2800)
73666ab3337Smrg		cpu=i860
73766ab3337Smrg		vendor=alliant
738f7ec340bSmacallan		;;
739f7ec340bSmacallan	genix)
74066ab3337Smrg		cpu=ns32k
74166ab3337Smrg		vendor=ns
742f7ec340bSmacallan		;;
743f7ec340bSmacallan	h3050r* | hiux*)
74466ab3337Smrg		cpu=hppa1.1
74566ab3337Smrg		vendor=hitachi
74666ab3337Smrg		basic_os=hiuxwe2
747f7ec340bSmacallan		;;
748f7ec340bSmacallan	hp3k9[0-9][0-9] | hp9[0-9][0-9])
74966ab3337Smrg		cpu=hppa1.0
75066ab3337Smrg		vendor=hp
751f7ec340bSmacallan		;;
752f7ec340bSmacallan	hp9k2[0-9][0-9] | hp9k31[0-9])
75366ab3337Smrg		cpu=m68000
75466ab3337Smrg		vendor=hp
755f7ec340bSmacallan		;;
756f7ec340bSmacallan	hp9k3[2-9][0-9])
75766ab3337Smrg		cpu=m68k
75866ab3337Smrg		vendor=hp
759f7ec340bSmacallan		;;
760f7ec340bSmacallan	hp9k6[0-9][0-9] | hp6[0-9][0-9])
76166ab3337Smrg		cpu=hppa1.0
76266ab3337Smrg		vendor=hp
763f7ec340bSmacallan		;;
764f7ec340bSmacallan	hp9k7[0-79][0-9] | hp7[0-79][0-9])
76566ab3337Smrg		cpu=hppa1.1
76666ab3337Smrg		vendor=hp
767f7ec340bSmacallan		;;
768f7ec340bSmacallan	hp9k78[0-9] | hp78[0-9])
769f7ec340bSmacallan		# FIXME: really hppa2.0-hp
77066ab3337Smrg		cpu=hppa1.1
77166ab3337Smrg		vendor=hp
772f7ec340bSmacallan		;;
773f7ec340bSmacallan	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
774f7ec340bSmacallan		# FIXME: really hppa2.0-hp
77566ab3337Smrg		cpu=hppa1.1
77666ab3337Smrg		vendor=hp
777f7ec340bSmacallan		;;
778f7ec340bSmacallan	hp9k8[0-9][13679] | hp8[0-9][13679])
77966ab3337Smrg		cpu=hppa1.1
78066ab3337Smrg		vendor=hp
781f7ec340bSmacallan		;;
782f7ec340bSmacallan	hp9k8[0-9][0-9] | hp8[0-9][0-9])
78366ab3337Smrg		cpu=hppa1.0
78466ab3337Smrg		vendor=hp
785f7ec340bSmacallan		;;
786f7ec340bSmacallan	i*86v32)
78766ab3337Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
78866ab3337Smrg		vendor=pc
78966ab3337Smrg		basic_os=sysv32
790f7ec340bSmacallan		;;
791f7ec340bSmacallan	i*86v4*)
79266ab3337Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79366ab3337Smrg		vendor=pc
79466ab3337Smrg		basic_os=sysv4
795f7ec340bSmacallan		;;
796f7ec340bSmacallan	i*86v)
79766ab3337Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79866ab3337Smrg		vendor=pc
79966ab3337Smrg		basic_os=sysv
800f7ec340bSmacallan		;;
801f7ec340bSmacallan	i*86sol2)
80266ab3337Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
80366ab3337Smrg		vendor=pc
80466ab3337Smrg		basic_os=solaris2
805f7ec340bSmacallan		;;
80666ab3337Smrg	j90 | j90-cray)
80766ab3337Smrg		cpu=j90
80866ab3337Smrg		vendor=cray
80966ab3337Smrg		basic_os=${basic_os:-unicos}
810f7ec340bSmacallan		;;
811f7ec340bSmacallan	iris | iris4d)
81266ab3337Smrg		cpu=mips
81366ab3337Smrg		vendor=sgi
81466ab3337Smrg		case $basic_os in
81566ab3337Smrg		    irix*)
816f7ec340bSmacallan			;;
817f7ec340bSmacallan		    *)
81866ab3337Smrg			basic_os=irix4
819f7ec340bSmacallan			;;
820f7ec340bSmacallan		esac
821f7ec340bSmacallan		;;
822f7ec340bSmacallan	miniframe)
82366ab3337Smrg		cpu=m68000
82466ab3337Smrg		vendor=convergent
825f7ec340bSmacallan		;;
82666ab3337Smrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
82766ab3337Smrg		cpu=m68k
82866ab3337Smrg		vendor=atari
82966ab3337Smrg		basic_os=mint
830f7ec340bSmacallan		;;
831f7ec340bSmacallan	news-3600 | risc-news)
83266ab3337Smrg		cpu=mips
83366ab3337Smrg		vendor=sony
83466ab3337Smrg		basic_os=newsos
83566ab3337Smrg		;;
83666ab3337Smrg	next | m*-next)
83766ab3337Smrg		cpu=m68k
83866ab3337Smrg		vendor=next
83966ab3337Smrg		case $basic_os in
84066ab3337Smrg		    openstep*)
84166ab3337Smrg		        ;;
84266ab3337Smrg		    nextstep*)
843f7ec340bSmacallan			;;
84466ab3337Smrg		    ns2*)
84566ab3337Smrg		      basic_os=nextstep2
846f7ec340bSmacallan			;;
847f7ec340bSmacallan		    *)
84866ab3337Smrg		      basic_os=nextstep3
849f7ec340bSmacallan			;;
850f7ec340bSmacallan		esac
851f7ec340bSmacallan		;;
852f7ec340bSmacallan	np1)
85366ab3337Smrg		cpu=np1
85466ab3337Smrg		vendor=gould
855f7ec340bSmacallan		;;
856f7ec340bSmacallan	op50n-* | op60c-*)
85766ab3337Smrg		cpu=hppa1.1
85866ab3337Smrg		vendor=oki
85966ab3337Smrg		basic_os=proelf
860f7ec340bSmacallan		;;
861f7ec340bSmacallan	pa-hitachi)
86266ab3337Smrg		cpu=hppa1.1
86366ab3337Smrg		vendor=hitachi
86466ab3337Smrg		basic_os=hiuxwe2
8657ce7e03cSmrg		;;
866f7ec340bSmacallan	pbd)
86766ab3337Smrg		cpu=sparc
86866ab3337Smrg		vendor=tti
869f7ec340bSmacallan		;;
870f7ec340bSmacallan	pbb)
87166ab3337Smrg		cpu=m68k
87266ab3337Smrg		vendor=tti
873f7ec340bSmacallan		;;
87466ab3337Smrg	pc532)
87566ab3337Smrg		cpu=ns32k
87666ab3337Smrg		vendor=pc532
877f7ec340bSmacallan		;;
878f7ec340bSmacallan	pn)
87966ab3337Smrg		cpu=pn
88066ab3337Smrg		vendor=gould
881f7ec340bSmacallan		;;
88266ab3337Smrg	power)
88366ab3337Smrg		cpu=power
88466ab3337Smrg		vendor=ibm
885f7ec340bSmacallan		;;
886f7ec340bSmacallan	ps2)
88766ab3337Smrg		cpu=i386
88866ab3337Smrg		vendor=ibm
889f7ec340bSmacallan		;;
890f7ec340bSmacallan	rm[46]00)
89166ab3337Smrg		cpu=mips
89266ab3337Smrg		vendor=siemens
893f7ec340bSmacallan		;;
894f7ec340bSmacallan	rtpc | rtpc-*)
89566ab3337Smrg		cpu=romp
89666ab3337Smrg		vendor=ibm
8977ce7e03cSmrg		;;
89866ab3337Smrg	sde)
89966ab3337Smrg		cpu=mipsisa32
90066ab3337Smrg		vendor=sde
90166ab3337Smrg		basic_os=${basic_os:-elf}
902f7ec340bSmacallan		;;
90366ab3337Smrg	simso-wrs)
90466ab3337Smrg		cpu=sparclite
90566ab3337Smrg		vendor=wrs
90666ab3337Smrg		basic_os=vxworks
907f7ec340bSmacallan		;;
90866ab3337Smrg	tower | tower-32)
90966ab3337Smrg		cpu=m68k
91066ab3337Smrg		vendor=ncr
9117ce7e03cSmrg		;;
91266ab3337Smrg	vpp*|vx|vx-*)
91366ab3337Smrg		cpu=f301
91466ab3337Smrg		vendor=fujitsu
915f7ec340bSmacallan		;;
91666ab3337Smrg	w65)
91766ab3337Smrg		cpu=w65
91866ab3337Smrg		vendor=wdc
919f7ec340bSmacallan		;;
92066ab3337Smrg	w89k-*)
92166ab3337Smrg		cpu=hppa1.1
92266ab3337Smrg		vendor=winbond
92366ab3337Smrg		basic_os=proelf
924f7ec340bSmacallan		;;
92566ab3337Smrg	none)
92666ab3337Smrg		cpu=none
92766ab3337Smrg		vendor=none
9287ce7e03cSmrg		;;
92966ab3337Smrg	leon|leon[3-9])
93066ab3337Smrg		cpu=sparc
93166ab3337Smrg		vendor=$basic_machine
932f7ec340bSmacallan		;;
93366ab3337Smrg	leon-*|leon[3-9]-*)
93466ab3337Smrg		cpu=sparc
93566ab3337Smrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
936f7ec340bSmacallan		;;
93766ab3337Smrg
93866ab3337Smrg	*-*)
93966ab3337Smrg		# shellcheck disable=SC2162
94066ab3337Smrg		saved_IFS=$IFS
94166ab3337Smrg		IFS="-" read cpu vendor <<EOF
94266ab3337Smrg$basic_machine
94366ab3337SmrgEOF
94466ab3337Smrg		IFS=$saved_IFS
945f7ec340bSmacallan		;;
94666ab3337Smrg	# We use `pc' rather than `unknown'
94766ab3337Smrg	# because (1) that's what they normally are, and
94866ab3337Smrg	# (2) the word "unknown" tends to confuse beginning users.
94966ab3337Smrg	i*86 | x86_64)
95066ab3337Smrg		cpu=$basic_machine
95166ab3337Smrg		vendor=pc
952f7ec340bSmacallan		;;
95366ab3337Smrg	# These rules are duplicated from below for sake of the special case above;
95466ab3337Smrg	# i.e. things that normalized to x86 arches should also default to "pc"
95566ab3337Smrg	pc98)
95666ab3337Smrg		cpu=i386
95766ab3337Smrg		vendor=pc
958f7ec340bSmacallan		;;
95966ab3337Smrg	x64 | amd64)
96066ab3337Smrg		cpu=x86_64
96166ab3337Smrg		vendor=pc
962f7ec340bSmacallan		;;
96366ab3337Smrg	# Recognize the basic CPU types without company name.
96466ab3337Smrg	*)
96566ab3337Smrg		cpu=$basic_machine
96666ab3337Smrg		vendor=unknown
9672a75d1c4Smrg		;;
96866ab3337Smrgesac
96966ab3337Smrg
97066ab3337Smrgunset -v basic_machine
97166ab3337Smrg
97266ab3337Smrg# Decode basic machines in the full and proper CPU-Company form.
97366ab3337Smrgcase $cpu-$vendor in
97466ab3337Smrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
97566ab3337Smrg	# some cases the only manufacturer, in others, it is the most popular.
97666ab3337Smrg	craynv-unknown)
97766ab3337Smrg		vendor=cray
97866ab3337Smrg		basic_os=${basic_os:-unicosmp}
979f7ec340bSmacallan		;;
98066ab3337Smrg	c90-unknown | c90-cray)
98166ab3337Smrg		vendor=cray
98266ab3337Smrg		basic_os=${Basic_os:-unicos}
983f7ec340bSmacallan		;;
98466ab3337Smrg	fx80-unknown)
98566ab3337Smrg		vendor=alliant
986f7ec340bSmacallan		;;
98766ab3337Smrg	romp-unknown)
98866ab3337Smrg		vendor=ibm
989f7ec340bSmacallan		;;
99066ab3337Smrg	mmix-unknown)
99166ab3337Smrg		vendor=knuth
992f7ec340bSmacallan		;;
99366ab3337Smrg	microblaze-unknown | microblazeel-unknown)
99466ab3337Smrg		vendor=xilinx
995f7ec340bSmacallan		;;
99666ab3337Smrg	rs6000-unknown)
99766ab3337Smrg		vendor=ibm
998f7ec340bSmacallan		;;
99966ab3337Smrg	vax-unknown)
100066ab3337Smrg		vendor=dec
1001f7ec340bSmacallan		;;
100266ab3337Smrg	pdp11-unknown)
100366ab3337Smrg		vendor=dec
1004f7ec340bSmacallan		;;
100566ab3337Smrg	we32k-unknown)
100666ab3337Smrg		vendor=att
1007f7ec340bSmacallan		;;
100866ab3337Smrg	cydra-unknown)
100966ab3337Smrg		vendor=cydrome
1010f7ec340bSmacallan		;;
101166ab3337Smrg	i370-ibm*)
101266ab3337Smrg		vendor=ibm
1013f7ec340bSmacallan		;;
101466ab3337Smrg	orion-unknown)
101566ab3337Smrg		vendor=highlevel
1016f7ec340bSmacallan		;;
101766ab3337Smrg	xps-unknown | xps100-unknown)
101866ab3337Smrg		cpu=xps100
101966ab3337Smrg		vendor=honeywell
1020f7ec340bSmacallan		;;
102166ab3337Smrg
102266ab3337Smrg	# Here we normalize CPU types with a missing or matching vendor
102366ab3337Smrg	dpx20-unknown | dpx20-bull)
102466ab3337Smrg		cpu=rs6000
102566ab3337Smrg		vendor=bull
102666ab3337Smrg		basic_os=${basic_os:-bosx}
1027f7ec340bSmacallan		;;
102866ab3337Smrg
102966ab3337Smrg	# Here we normalize CPU types irrespective of the vendor
103066ab3337Smrg	amd64-*)
103166ab3337Smrg		cpu=x86_64
10327ce7e03cSmrg		;;
103366ab3337Smrg	blackfin-*)
103466ab3337Smrg		cpu=bfin
103566ab3337Smrg		basic_os=linux
1036f7ec340bSmacallan		;;
103766ab3337Smrg	c54x-*)
103866ab3337Smrg		cpu=tic54x
1039f7ec340bSmacallan		;;
104066ab3337Smrg	c55x-*)
104166ab3337Smrg		cpu=tic55x
1042f7ec340bSmacallan		;;
104366ab3337Smrg	c6x-*)
104466ab3337Smrg		cpu=tic6x
1045f7ec340bSmacallan		;;
104666ab3337Smrg	e500v[12]-*)
104766ab3337Smrg		cpu=powerpc
104866ab3337Smrg		basic_os=${basic_os}"spe"
10497ce7e03cSmrg		;;
105066ab3337Smrg	mips3*-*)
105166ab3337Smrg		cpu=mips64
1052f7ec340bSmacallan		;;
105366ab3337Smrg	ms1-*)
105466ab3337Smrg		cpu=mt
1055f7ec340bSmacallan		;;
105666ab3337Smrg	m68knommu-*)
105766ab3337Smrg		cpu=m68k
105866ab3337Smrg		basic_os=linux
1059f7ec340bSmacallan		;;
106066ab3337Smrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
106166ab3337Smrg		cpu=s12z
1062f7ec340bSmacallan		;;
106366ab3337Smrg	openrisc-*)
106466ab3337Smrg		cpu=or32
1065f7ec340bSmacallan		;;
106666ab3337Smrg	parisc-*)
106766ab3337Smrg		cpu=hppa
106866ab3337Smrg		basic_os=linux
1069f7ec340bSmacallan		;;
107066ab3337Smrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
107166ab3337Smrg		cpu=i586
1072f7ec340bSmacallan		;;
107366ab3337Smrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
107466ab3337Smrg		cpu=i686
1075f7ec340bSmacallan		;;
107666ab3337Smrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
107766ab3337Smrg		cpu=i686
1078f7ec340bSmacallan		;;
107966ab3337Smrg	pentium4-*)
108066ab3337Smrg		cpu=i786
1081f7ec340bSmacallan		;;
108266ab3337Smrg	pc98-*)
108366ab3337Smrg		cpu=i386
1084f7ec340bSmacallan		;;
108566ab3337Smrg	ppc-* | ppcbe-*)
108666ab3337Smrg		cpu=powerpc
10877ce7e03cSmrg		;;
108866ab3337Smrg	ppcle-* | powerpclittle-*)
108966ab3337Smrg		cpu=powerpcle
1090f7ec340bSmacallan		;;
109166ab3337Smrg	ppc64-*)
109266ab3337Smrg		cpu=powerpc64
10932a75d1c4Smrg		;;
109466ab3337Smrg	ppc64le-* | powerpc64little-*)
109566ab3337Smrg		cpu=powerpc64le
1096f7ec340bSmacallan		;;
109766ab3337Smrg	sb1-*)
109866ab3337Smrg		cpu=mipsisa64sb1
1099f7ec340bSmacallan		;;
110066ab3337Smrg	sb1el-*)
110166ab3337Smrg		cpu=mipsisa64sb1el
11022a75d1c4Smrg		;;
110366ab3337Smrg	sh5e[lb]-*)
110466ab3337Smrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
1105f7ec340bSmacallan		;;
110666ab3337Smrg	spur-*)
110766ab3337Smrg		cpu=spur
1108f7ec340bSmacallan		;;
110966ab3337Smrg	strongarm-* | thumb-*)
111066ab3337Smrg		cpu=arm
1111f7ec340bSmacallan		;;
111266ab3337Smrg	tx39-*)
111366ab3337Smrg		cpu=mipstx39
1114f7ec340bSmacallan		;;
111566ab3337Smrg	tx39el-*)
111666ab3337Smrg		cpu=mipstx39el
1117f7ec340bSmacallan		;;
111866ab3337Smrg	x64-*)
111966ab3337Smrg		cpu=x86_64
11207ce7e03cSmrg		;;
112166ab3337Smrg	xscale-* | xscalee[bl]-*)
112266ab3337Smrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
1123f7ec340bSmacallan		;;
112466ab3337Smrg	arm64-*)
112566ab3337Smrg		cpu=aarch64
1126f7ec340bSmacallan		;;
112766ab3337Smrg
112866ab3337Smrg	# Recognize the canonical CPU Types that limit and/or modify the
112966ab3337Smrg	# company names they are paired with.
113066ab3337Smrg	cr16-*)
113166ab3337Smrg		basic_os=${basic_os:-elf}
1132f7ec340bSmacallan		;;
113366ab3337Smrg	crisv32-* | etraxfs*-*)
113466ab3337Smrg		cpu=crisv32
113566ab3337Smrg		vendor=axis
1136f7ec340bSmacallan		;;
113766ab3337Smrg	cris-* | etrax*-*)
113866ab3337Smrg		cpu=cris
113966ab3337Smrg		vendor=axis
1140f7ec340bSmacallan		;;
114166ab3337Smrg	crx-*)
114266ab3337Smrg		basic_os=${basic_os:-elf}
1143f7ec340bSmacallan		;;
114466ab3337Smrg	neo-tandem)
114566ab3337Smrg		cpu=neo
114666ab3337Smrg		vendor=tandem
1147f7ec340bSmacallan		;;
114866ab3337Smrg	nse-tandem)
114966ab3337Smrg		cpu=nse
115066ab3337Smrg		vendor=tandem
1151f7ec340bSmacallan		;;
115266ab3337Smrg	nsr-tandem)
115366ab3337Smrg		cpu=nsr
115466ab3337Smrg		vendor=tandem
1155f7ec340bSmacallan		;;
115666ab3337Smrg	nsv-tandem)
115766ab3337Smrg		cpu=nsv
115866ab3337Smrg		vendor=tandem
1159f7ec340bSmacallan		;;
116066ab3337Smrg	nsx-tandem)
116166ab3337Smrg		cpu=nsx
116266ab3337Smrg		vendor=tandem
1163f7ec340bSmacallan		;;
116466ab3337Smrg	mipsallegrexel-sony)
116566ab3337Smrg		cpu=mipsallegrexel
116666ab3337Smrg		vendor=sony
1167f7ec340bSmacallan		;;
116866ab3337Smrg	tile*-*)
116966ab3337Smrg		basic_os=${basic_os:-linux-gnu}
1170f7ec340bSmacallan		;;
117166ab3337Smrg
1172f7ec340bSmacallan	*)
117366ab3337Smrg		# Recognize the canonical CPU types that are allowed with any
117466ab3337Smrg		# company name.
117566ab3337Smrg		case $cpu in
117666ab3337Smrg			1750a | 580 \
117766ab3337Smrg			| a29k \
117866ab3337Smrg			| aarch64 | aarch64_be \
117966ab3337Smrg			| abacus \
118066ab3337Smrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
118166ab3337Smrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
118266ab3337Smrg			| alphapca5[67] | alpha64pca5[67] \
118366ab3337Smrg			| am33_2.0 \
118466ab3337Smrg			| amdgcn \
118566ab3337Smrg			| arc | arceb | arc32 | arc64 \
118666ab3337Smrg			| arm | arm[lb]e | arme[lb] | armv* \
118766ab3337Smrg			| avr | avr32 \
118866ab3337Smrg			| asmjs \
118966ab3337Smrg			| ba \
119066ab3337Smrg			| be32 | be64 \
119166ab3337Smrg			| bfin | bpf | bs2000 \
119266ab3337Smrg			| c[123]* | c30 | [cjt]90 | c4x \
119366ab3337Smrg			| c8051 | clipper | craynv | csky | cydra \
119466ab3337Smrg			| d10v | d30v | dlx | dsp16xx \
119566ab3337Smrg			| e2k | elxsi | epiphany \
119666ab3337Smrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
119766ab3337Smrg			| h8300 | h8500 \
119866ab3337Smrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
119966ab3337Smrg			| hexagon \
120066ab3337Smrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
120166ab3337Smrg			| ip2k | iq2000 \
120266ab3337Smrg			| k1om \
120366ab3337Smrg			| le32 | le64 \
120466ab3337Smrg			| lm32 \
120566ab3337Smrg			| loongarch32 | loongarch64 | loongarchx32 \
120666ab3337Smrg			| m32c | m32r | m32rle \
120766ab3337Smrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
120866ab3337Smrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
120966ab3337Smrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
121066ab3337Smrg			| microblaze | microblazeel \
121166ab3337Smrg			| mips | mipsbe | mipseb | mipsel | mipsle \
121266ab3337Smrg			| mips16 \
121366ab3337Smrg			| mips64 | mips64eb | mips64el \
121466ab3337Smrg			| mips64octeon | mips64octeonel \
121566ab3337Smrg			| mips64orion | mips64orionel \
121666ab3337Smrg			| mips64r5900 | mips64r5900el \
121766ab3337Smrg			| mips64vr | mips64vrel \
121866ab3337Smrg			| mips64vr4100 | mips64vr4100el \
121966ab3337Smrg			| mips64vr4300 | mips64vr4300el \
122066ab3337Smrg			| mips64vr5000 | mips64vr5000el \
122166ab3337Smrg			| mips64vr5900 | mips64vr5900el \
122266ab3337Smrg			| mipsisa32 | mipsisa32el \
122366ab3337Smrg			| mipsisa32r2 | mipsisa32r2el \
122466ab3337Smrg			| mipsisa32r3 | mipsisa32r3el \
122566ab3337Smrg			| mipsisa32r5 | mipsisa32r5el \
122666ab3337Smrg			| mipsisa32r6 | mipsisa32r6el \
122766ab3337Smrg			| mipsisa64 | mipsisa64el \
122866ab3337Smrg			| mipsisa64r2 | mipsisa64r2el \
122966ab3337Smrg			| mipsisa64r3 | mipsisa64r3el \
123066ab3337Smrg			| mipsisa64r5 | mipsisa64r5el \
123166ab3337Smrg			| mipsisa64r6 | mipsisa64r6el \
123266ab3337Smrg			| mipsisa64sb1 | mipsisa64sb1el \
123366ab3337Smrg			| mipsisa64sr71k | mipsisa64sr71kel \
123466ab3337Smrg			| mipsr5900 | mipsr5900el \
123566ab3337Smrg			| mipstx39 | mipstx39el \
123666ab3337Smrg			| mmix \
123766ab3337Smrg			| mn10200 | mn10300 \
123866ab3337Smrg			| moxie \
123966ab3337Smrg			| mt \
124066ab3337Smrg			| msp430 \
124166ab3337Smrg			| nds32 | nds32le | nds32be \
124266ab3337Smrg			| nfp \
124366ab3337Smrg			| nios | nios2 | nios2eb | nios2el \
124466ab3337Smrg			| none | np1 | ns16k | ns32k | nvptx \
124566ab3337Smrg			| open8 \
124666ab3337Smrg			| or1k* \
124766ab3337Smrg			| or32 \
124866ab3337Smrg			| orion \
124966ab3337Smrg			| picochip \
125066ab3337Smrg			| pdp10 | pdp11 | pj | pjl | pn | power \
125166ab3337Smrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
125266ab3337Smrg			| pru \
125366ab3337Smrg			| pyramid \
125466ab3337Smrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
125566ab3337Smrg			| rl78 | romp | rs6000 | rx \
125666ab3337Smrg			| s390 | s390x \
125766ab3337Smrg			| score \
125866ab3337Smrg			| sh | shl \
125966ab3337Smrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
126066ab3337Smrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
126166ab3337Smrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
126266ab3337Smrg			| sparclite \
126366ab3337Smrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
126466ab3337Smrg			| spu \
126566ab3337Smrg			| tahoe \
126666ab3337Smrg			| thumbv7* \
126766ab3337Smrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
126866ab3337Smrg			| tron \
126966ab3337Smrg			| ubicom32 \
127066ab3337Smrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
127166ab3337Smrg			| vax \
127266ab3337Smrg			| visium \
127366ab3337Smrg			| w65 \
127466ab3337Smrg			| wasm32 | wasm64 \
127566ab3337Smrg			| we32k \
127666ab3337Smrg			| x86 | x86_64 | xc16x | xgate | xps100 \
127766ab3337Smrg			| xstormy16 | xtensa* \
127866ab3337Smrg			| ymp \
127966ab3337Smrg			| z8k | z80)
128066ab3337Smrg				;;
128166ab3337Smrg
128266ab3337Smrg			*)
128366ab3337Smrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
128466ab3337Smrg				exit 1
128566ab3337Smrg				;;
128666ab3337Smrg		esac
1287f7ec340bSmacallan		;;
1288f7ec340bSmacallanesac
1289f7ec340bSmacallan
1290f7ec340bSmacallan# Here we canonicalize certain aliases for manufacturers.
129166ab3337Smrgcase $vendor in
129266ab3337Smrg	digital*)
129366ab3337Smrg		vendor=dec
1294f7ec340bSmacallan		;;
129566ab3337Smrg	commodore*)
129666ab3337Smrg		vendor=cbm
1297f7ec340bSmacallan		;;
1298f7ec340bSmacallan	*)
1299f7ec340bSmacallan		;;
1300f7ec340bSmacallanesac
1301f7ec340bSmacallan
1302f7ec340bSmacallan# Decode manufacturer-specific aliases for certain operating systems.
1303f7ec340bSmacallan
130466ab3337Smrgif test x$basic_os != x
1305f7ec340bSmacallanthen
130666ab3337Smrg
130766ab3337Smrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
130866ab3337Smrg# set os.
130966ab3337Smrgcase $basic_os in
131066ab3337Smrg	gnu/linux*)
131166ab3337Smrg		kernel=linux
131266ab3337Smrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
131366ab3337Smrg		;;
131466ab3337Smrg	os2-emx)
131566ab3337Smrg		kernel=os2
131666ab3337Smrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
131766ab3337Smrg		;;
131866ab3337Smrg	nto-qnx*)
131966ab3337Smrg		kernel=nto
132066ab3337Smrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
132166ab3337Smrg		;;
132266ab3337Smrg	*-*)
132366ab3337Smrg		# shellcheck disable=SC2162
132466ab3337Smrg		saved_IFS=$IFS
132566ab3337Smrg		IFS="-" read kernel os <<EOF
132666ab3337Smrg$basic_os
132766ab3337SmrgEOF
132866ab3337Smrg		IFS=$saved_IFS
132966ab3337Smrg		;;
133066ab3337Smrg	# Default OS when just kernel was specified
133166ab3337Smrg	nto*)
133266ab3337Smrg		kernel=nto
133366ab3337Smrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
133466ab3337Smrg		;;
133566ab3337Smrg	linux*)
133666ab3337Smrg		kernel=linux
133766ab3337Smrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
13382a75d1c4Smrg		;;
133966ab3337Smrg	*)
134066ab3337Smrg		kernel=
134166ab3337Smrg		os=$basic_os
1342f7ec340bSmacallan		;;
134366ab3337Smrgesac
134466ab3337Smrg
134566ab3337Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
134666ab3337Smrg# etc.)
134766ab3337Smrgcase $os in
134866ab3337Smrg	# First match some system type aliases that might get confused
134966ab3337Smrg	# with valid system types.
135066ab3337Smrg	# solaris* is a basic system type, with this one exception.
135166ab3337Smrg	auroraux)
135266ab3337Smrg		os=auroraux
1353f7ec340bSmacallan		;;
135466ab3337Smrg	bluegene*)
135566ab3337Smrg		os=cnk
1356f7ec340bSmacallan		;;
135766ab3337Smrg	solaris1 | solaris1.*)
135866ab3337Smrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
1359f7ec340bSmacallan		;;
136066ab3337Smrg	solaris)
136166ab3337Smrg		os=solaris2
1362f7ec340bSmacallan		;;
136366ab3337Smrg	unixware*)
136466ab3337Smrg		os=sysv4.2uw
1365f7ec340bSmacallan		;;
136666ab3337Smrg	# es1800 is here to avoid being matched by es* (a different OS)
136766ab3337Smrg	es1800*)
136866ab3337Smrg		os=ose
1369f7ec340bSmacallan		;;
137066ab3337Smrg	# Some version numbers need modification
137166ab3337Smrg	chorusos*)
137266ab3337Smrg		os=chorusos
1373f7ec340bSmacallan		;;
137466ab3337Smrg	isc)
137566ab3337Smrg		os=isc2.2
1376f7ec340bSmacallan		;;
137766ab3337Smrg	sco6)
137866ab3337Smrg		os=sco5v6
1379f7ec340bSmacallan		;;
138066ab3337Smrg	sco5)
138166ab3337Smrg		os=sco3.2v5
13827ce7e03cSmrg		;;
138366ab3337Smrg	sco4)
138466ab3337Smrg		os=sco3.2v4
1385f7ec340bSmacallan		;;
138666ab3337Smrg	sco3.2.[4-9]*)
138766ab3337Smrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
1388f7ec340bSmacallan		;;
138966ab3337Smrg	sco*v* | scout)
139066ab3337Smrg		# Don't match below
1391f7ec340bSmacallan		;;
139266ab3337Smrg	sco*)
139366ab3337Smrg		os=sco3.2v2
1394f7ec340bSmacallan		;;
139566ab3337Smrg	psos*)
139666ab3337Smrg		os=psos
13977ce7e03cSmrg		;;
139866ab3337Smrg	qnx*)
139966ab3337Smrg		os=qnx
1400f7ec340bSmacallan		;;
140166ab3337Smrg	hiux*)
140266ab3337Smrg		os=hiuxwe2
1403f7ec340bSmacallan		;;
140466ab3337Smrg	lynx*178)
140566ab3337Smrg		os=lynxos178
1406f7ec340bSmacallan		;;
140766ab3337Smrg	lynx*5)
140866ab3337Smrg		os=lynxos5
1409f7ec340bSmacallan		;;
141066ab3337Smrg	lynxos*)
141166ab3337Smrg		# don't get caught up in next wildcard
1412f7ec340bSmacallan		;;
141366ab3337Smrg	lynx*)
141466ab3337Smrg		os=lynxos
1415f7ec340bSmacallan		;;
141666ab3337Smrg	mac[0-9]*)
141766ab3337Smrg		os=`echo "$os" | sed -e 's|mac|macos|'`
1418f7ec340bSmacallan		;;
141966ab3337Smrg	opened*)
142066ab3337Smrg		os=openedition
14217ce7e03cSmrg		;;
142266ab3337Smrg	os400*)
142366ab3337Smrg		os=os400
1424f7ec340bSmacallan		;;
142566ab3337Smrg	sunos5*)
142666ab3337Smrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
1427f7ec340bSmacallan		;;
142866ab3337Smrg	sunos6*)
142966ab3337Smrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
1430f7ec340bSmacallan		;;
143166ab3337Smrg	wince*)
143266ab3337Smrg		os=wince
1433f7ec340bSmacallan		;;
143466ab3337Smrg	utek*)
143566ab3337Smrg		os=bsd
1436f7ec340bSmacallan		;;
143766ab3337Smrg	dynix*)
143866ab3337Smrg		os=bsd
143966ab3337Smrg		;;
144066ab3337Smrg	acis*)
144166ab3337Smrg		os=aos
1442f7ec340bSmacallan		;;
144366ab3337Smrg	atheos*)
144466ab3337Smrg		os=atheos
1445f7ec340bSmacallan		;;
144666ab3337Smrg	syllable*)
144766ab3337Smrg		os=syllable
14487ce7e03cSmrg		;;
144966ab3337Smrg	386bsd)
145066ab3337Smrg		os=bsd
1451f7ec340bSmacallan		;;
145266ab3337Smrg	ctix* | uts*)
145366ab3337Smrg		os=sysv
1454f7ec340bSmacallan		;;
145566ab3337Smrg	nova*)
145666ab3337Smrg		os=rtmk-nova
1457f7ec340bSmacallan		;;
145866ab3337Smrg	ns2)
145966ab3337Smrg		os=nextstep2
1460f7ec340bSmacallan		;;
146166ab3337Smrg	# Preserve the version number of sinix5.
146266ab3337Smrg	sinix5.*)
146366ab3337Smrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
1464f7ec340bSmacallan		;;
146566ab3337Smrg	sinix*)
146666ab3337Smrg		os=sysv4
1467f7ec340bSmacallan		;;
146866ab3337Smrg	tpf*)
146966ab3337Smrg		os=tpf
1470f7ec340bSmacallan		;;
147166ab3337Smrg	triton*)
147266ab3337Smrg		os=sysv3
1473f7ec340bSmacallan		;;
147466ab3337Smrg	oss*)
147566ab3337Smrg		os=sysv3
1476f7ec340bSmacallan		;;
147766ab3337Smrg	svr4*)
147866ab3337Smrg		os=sysv4
1479f7ec340bSmacallan		;;
148066ab3337Smrg	svr3)
148166ab3337Smrg		os=sysv3
1482f7ec340bSmacallan		;;
148366ab3337Smrg	sysvr4)
148466ab3337Smrg		os=sysv4
1485f7ec340bSmacallan		;;
148666ab3337Smrg	ose*)
148766ab3337Smrg		os=ose
14887ce7e03cSmrg		;;
148966ab3337Smrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
149066ab3337Smrg		os=mint
14912a75d1c4Smrg		;;
149266ab3337Smrg	dicos*)
149366ab3337Smrg		os=dicos
14942a75d1c4Smrg		;;
149566ab3337Smrg	pikeos*)
149666ab3337Smrg		# Until real need of OS specific support for
149766ab3337Smrg		# particular features comes up, bare metal
149866ab3337Smrg		# configurations are quite functional.
149966ab3337Smrg		case $cpu in
150066ab3337Smrg		    arm*)
150166ab3337Smrg			os=eabi
150266ab3337Smrg			;;
150366ab3337Smrg		    *)
150466ab3337Smrg			os=elf
150566ab3337Smrg			;;
150666ab3337Smrg		esac
1507f7ec340bSmacallan		;;
1508f7ec340bSmacallan	*)
150966ab3337Smrg		# No normalization, but not necessarily accepted, that comes below.
1510f7ec340bSmacallan		;;
1511f7ec340bSmacallanesac
151266ab3337Smrg
1513f7ec340bSmacallanelse
1514f7ec340bSmacallan
1515f7ec340bSmacallan# Here we handle the default operating systems that come with various machines.
1516f7ec340bSmacallan# The value should be what the vendor currently ships out the door with their
1517f7ec340bSmacallan# machine or put another way, the most popular os provided with the machine.
1518f7ec340bSmacallan
1519f7ec340bSmacallan# Note that if you're going to try to match "-MANUFACTURER" here (say,
1520f7ec340bSmacallan# "-sun"), then you have to tell the case statement up towards the top
1521f7ec340bSmacallan# that MANUFACTURER isn't an operating system.  Otherwise, code above
1522f7ec340bSmacallan# will signal an error saying that MANUFACTURER isn't an operating
1523f7ec340bSmacallan# system, and we'll never get to this point.
1524f7ec340bSmacallan
152566ab3337Smrgkernel=
152666ab3337Smrgcase $cpu-$vendor in
15272a75d1c4Smrg	score-*)
152866ab3337Smrg		os=elf
15297ce7e03cSmrg		;;
15302a75d1c4Smrg	spu-*)
153166ab3337Smrg		os=elf
15327ce7e03cSmrg		;;
1533f7ec340bSmacallan	*-acorn)
153466ab3337Smrg		os=riscix1.2
1535f7ec340bSmacallan		;;
1536f7ec340bSmacallan	arm*-rebel)
153766ab3337Smrg		kernel=linux
153866ab3337Smrg		os=gnu
1539f7ec340bSmacallan		;;
1540f7ec340bSmacallan	arm*-semi)
154166ab3337Smrg		os=aout
1542f7ec340bSmacallan		;;
15432a75d1c4Smrg	c4x-* | tic4x-*)
154466ab3337Smrg		os=coff
154566ab3337Smrg		;;
154666ab3337Smrg	c8051-*)
154766ab3337Smrg		os=elf
154866ab3337Smrg		;;
154966ab3337Smrg	clipper-intergraph)
155066ab3337Smrg		os=clix
15512a75d1c4Smrg		;;
15522a75d1c4Smrg	hexagon-*)
155366ab3337Smrg		os=elf
15542a75d1c4Smrg		;;
15552a75d1c4Smrg	tic54x-*)
155666ab3337Smrg		os=coff
15572a75d1c4Smrg		;;
15582a75d1c4Smrg	tic55x-*)
155966ab3337Smrg		os=coff
15602a75d1c4Smrg		;;
15612a75d1c4Smrg	tic6x-*)
156266ab3337Smrg		os=coff
1563f7ec340bSmacallan		;;
1564f7ec340bSmacallan	# This must come before the *-dec entry.
1565f7ec340bSmacallan	pdp10-*)
156666ab3337Smrg		os=tops20
1567f7ec340bSmacallan		;;
1568f7ec340bSmacallan	pdp11-*)
156966ab3337Smrg		os=none
1570f7ec340bSmacallan		;;
1571f7ec340bSmacallan	*-dec | vax-*)
157266ab3337Smrg		os=ultrix4.2
1573f7ec340bSmacallan		;;
1574f7ec340bSmacallan	m68*-apollo)
157566ab3337Smrg		os=domain
1576f7ec340bSmacallan		;;
1577f7ec340bSmacallan	i386-sun)
157866ab3337Smrg		os=sunos4.0.2
1579f7ec340bSmacallan		;;
1580f7ec340bSmacallan	m68000-sun)
158166ab3337Smrg		os=sunos3
1582f7ec340bSmacallan		;;
1583f7ec340bSmacallan	m68*-cisco)
158466ab3337Smrg		os=aout
1585f7ec340bSmacallan		;;
15862a75d1c4Smrg	mep-*)
158766ab3337Smrg		os=elf
15887ce7e03cSmrg		;;
1589f7ec340bSmacallan	mips*-cisco)
159066ab3337Smrg		os=elf
1591f7ec340bSmacallan		;;
1592f7ec340bSmacallan	mips*-*)
159366ab3337Smrg		os=elf
1594f7ec340bSmacallan		;;
1595f7ec340bSmacallan	or32-*)
159666ab3337Smrg		os=coff
1597f7ec340bSmacallan		;;
1598f7ec340bSmacallan	*-tti)	# must be before sparc entry or we get the wrong os.
159966ab3337Smrg		os=sysv3
1600f7ec340bSmacallan		;;
1601f7ec340bSmacallan	sparc-* | *-sun)
160266ab3337Smrg		os=sunos4.1.1
1603f7ec340bSmacallan		;;
160466ab3337Smrg	pru-*)
160566ab3337Smrg		os=elf
1606f7ec340bSmacallan		;;
160766ab3337Smrg	*-be)
160866ab3337Smrg		os=beos
16097ce7e03cSmrg		;;
1610f7ec340bSmacallan	*-ibm)
161166ab3337Smrg		os=aix
1612f7ec340bSmacallan		;;
16132a75d1c4Smrg	*-knuth)
161466ab3337Smrg		os=mmixware
16157ce7e03cSmrg		;;
1616f7ec340bSmacallan	*-wec)
161766ab3337Smrg		os=proelf
1618f7ec340bSmacallan		;;
1619f7ec340bSmacallan	*-winbond)
162066ab3337Smrg		os=proelf
1621f7ec340bSmacallan		;;
1622f7ec340bSmacallan	*-oki)
162366ab3337Smrg		os=proelf
1624f7ec340bSmacallan		;;
1625f7ec340bSmacallan	*-hp)
162666ab3337Smrg		os=hpux
1627f7ec340bSmacallan		;;
1628f7ec340bSmacallan	*-hitachi)
162966ab3337Smrg		os=hiux
1630f7ec340bSmacallan		;;
1631f7ec340bSmacallan	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
163266ab3337Smrg		os=sysv
1633f7ec340bSmacallan		;;
1634f7ec340bSmacallan	*-cbm)
163566ab3337Smrg		os=amigaos
1636f7ec340bSmacallan		;;
1637f7ec340bSmacallan	*-dg)
163866ab3337Smrg		os=dgux
1639f7ec340bSmacallan		;;
1640f7ec340bSmacallan	*-dolphin)
164166ab3337Smrg		os=sysv3
1642f7ec340bSmacallan		;;
1643f7ec340bSmacallan	m68k-ccur)
164466ab3337Smrg		os=rtu
1645f7ec340bSmacallan		;;
1646f7ec340bSmacallan	m88k-omron*)
164766ab3337Smrg		os=luna
1648f7ec340bSmacallan		;;
164966ab3337Smrg	*-next)
165066ab3337Smrg		os=nextstep
1651f7ec340bSmacallan		;;
1652f7ec340bSmacallan	*-sequent)
165366ab3337Smrg		os=ptx
1654f7ec340bSmacallan		;;
1655f7ec340bSmacallan	*-crds)
165666ab3337Smrg		os=unos
1657f7ec340bSmacallan		;;
1658f7ec340bSmacallan	*-ns)
165966ab3337Smrg		os=genix
1660f7ec340bSmacallan		;;
1661f7ec340bSmacallan	i370-*)
166266ab3337Smrg		os=mvs
1663f7ec340bSmacallan		;;
1664f7ec340bSmacallan	*-gould)
166566ab3337Smrg		os=sysv
1666f7ec340bSmacallan		;;
1667f7ec340bSmacallan	*-highlevel)
166866ab3337Smrg		os=bsd
1669f7ec340bSmacallan		;;
1670f7ec340bSmacallan	*-encore)
167166ab3337Smrg		os=bsd
1672f7ec340bSmacallan		;;
1673f7ec340bSmacallan	*-sgi)
167466ab3337Smrg		os=irix
1675f7ec340bSmacallan		;;
1676f7ec340bSmacallan	*-siemens)
167766ab3337Smrg		os=sysv4
1678f7ec340bSmacallan		;;
1679f7ec340bSmacallan	*-masscomp)
168066ab3337Smrg		os=rtu
1681f7ec340bSmacallan		;;
1682f7ec340bSmacallan	f30[01]-fujitsu | f700-fujitsu)
168366ab3337Smrg		os=uxpv
1684f7ec340bSmacallan		;;
1685f7ec340bSmacallan	*-rom68k)
168666ab3337Smrg		os=coff
1687f7ec340bSmacallan		;;
1688f7ec340bSmacallan	*-*bug)
168966ab3337Smrg		os=coff
1690f7ec340bSmacallan		;;
1691f7ec340bSmacallan	*-apple)
169266ab3337Smrg		os=macos
1693f7ec340bSmacallan		;;
1694f7ec340bSmacallan	*-atari*)
169566ab3337Smrg		os=mint
169666ab3337Smrg		;;
169766ab3337Smrg	*-wrs)
169866ab3337Smrg		os=vxworks
1699f7ec340bSmacallan		;;
1700f7ec340bSmacallan	*)
170166ab3337Smrg		os=none
1702f7ec340bSmacallan		;;
1703f7ec340bSmacallanesac
170466ab3337Smrg
1705f7ec340bSmacallanfi
1706f7ec340bSmacallan
170766ab3337Smrg# Now, validate our (potentially fixed-up) OS.
170866ab3337Smrgcase $os in
170966ab3337Smrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
171066ab3337Smrg	musl* | newlib* | relibc* | uclibc*)
171166ab3337Smrg		;;
171266ab3337Smrg	# Likewise for "kernel-abi"
171366ab3337Smrg	eabi* | gnueabi*)
171466ab3337Smrg		;;
171566ab3337Smrg	# VxWorks passes extra cpu info in the 4th filed.
171666ab3337Smrg	simlinux | simwindows | spe)
171766ab3337Smrg		;;
171866ab3337Smrg	# Now accept the basic system types.
171966ab3337Smrg	# The portable systems comes first.
172066ab3337Smrg	# Each alternative MUST end in a * to match a version number.
172166ab3337Smrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
172266ab3337Smrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
172366ab3337Smrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
172466ab3337Smrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
172566ab3337Smrg	     | hiux* | abug | nacl* | netware* | windows* \
172666ab3337Smrg	     | os9* | macos* | osx* | ios* \
172766ab3337Smrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
172866ab3337Smrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
172966ab3337Smrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
173066ab3337Smrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
173166ab3337Smrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
173266ab3337Smrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
173366ab3337Smrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
173466ab3337Smrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
173566ab3337Smrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
173666ab3337Smrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
173766ab3337Smrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
173866ab3337Smrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
173966ab3337Smrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
174066ab3337Smrg	     | midipix* | mingw32* | mingw64* | mint* \
174166ab3337Smrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
174266ab3337Smrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
174366ab3337Smrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
174466ab3337Smrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
174566ab3337Smrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
174666ab3337Smrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
174766ab3337Smrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
174866ab3337Smrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
174966ab3337Smrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
175066ab3337Smrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
175166ab3337Smrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*)
175266ab3337Smrg		;;
175366ab3337Smrg	# This one is extra strict with allowed versions
175466ab3337Smrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
175566ab3337Smrg		# Don't forget version if it is 3.2v4 or newer.
175666ab3337Smrg		;;
175766ab3337Smrg	none)
175866ab3337Smrg		;;
175966ab3337Smrg	*)
176066ab3337Smrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
176166ab3337Smrg		exit 1
176266ab3337Smrg		;;
176366ab3337Smrgesac
176466ab3337Smrg
176566ab3337Smrg# As a final step for OS-related things, validate the OS-kernel combination
176666ab3337Smrg# (given a valid OS), if there is a kernel.
176766ab3337Smrgcase $kernel-$os in
176866ab3337Smrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
176966ab3337Smrg		   | linux-musl* | linux-relibc* | linux-uclibc* )
177066ab3337Smrg		;;
177166ab3337Smrg	uclinux-uclibc* )
177266ab3337Smrg		;;
177366ab3337Smrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
177466ab3337Smrg		# These are just libc implementations, not actual OSes, and thus
177566ab3337Smrg		# require a kernel.
177666ab3337Smrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
177766ab3337Smrg		exit 1
177866ab3337Smrg		;;
177966ab3337Smrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
178066ab3337Smrg		;;
178166ab3337Smrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
178266ab3337Smrg		;;
178366ab3337Smrg	nto-qnx*)
178466ab3337Smrg		;;
178566ab3337Smrg	os2-emx)
178666ab3337Smrg		;;
178766ab3337Smrg	*-eabi* | *-gnueabi*)
178866ab3337Smrg		;;
178966ab3337Smrg	-*)
179066ab3337Smrg		# Blank kernel with real OS is always fine.
179166ab3337Smrg		;;
179266ab3337Smrg	*-*)
179366ab3337Smrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
179466ab3337Smrg		exit 1
179566ab3337Smrg		;;
179666ab3337Smrgesac
179766ab3337Smrg
1798f7ec340bSmacallan# Here we handle the case where we know the os, and the CPU type, but not the
1799f7ec340bSmacallan# manufacturer.  We pick the logical manufacturer.
180066ab3337Smrgcase $vendor in
180166ab3337Smrg	unknown)
180266ab3337Smrg		case $cpu-$os in
180366ab3337Smrg			*-riscix*)
1804f7ec340bSmacallan				vendor=acorn
1805f7ec340bSmacallan				;;
180666ab3337Smrg			*-sunos*)
1807f7ec340bSmacallan				vendor=sun
1808f7ec340bSmacallan				;;
180966ab3337Smrg			*-cnk* | *-aix*)
1810f7ec340bSmacallan				vendor=ibm
1811f7ec340bSmacallan				;;
181266ab3337Smrg			*-beos*)
1813f7ec340bSmacallan				vendor=be
1814f7ec340bSmacallan				;;
181566ab3337Smrg			*-hpux*)
1816f7ec340bSmacallan				vendor=hp
1817f7ec340bSmacallan				;;
181866ab3337Smrg			*-mpeix*)
1819f7ec340bSmacallan				vendor=hp
1820f7ec340bSmacallan				;;
182166ab3337Smrg			*-hiux*)
1822f7ec340bSmacallan				vendor=hitachi
1823f7ec340bSmacallan				;;
182466ab3337Smrg			*-unos*)
1825f7ec340bSmacallan				vendor=crds
1826f7ec340bSmacallan				;;
182766ab3337Smrg			*-dgux*)
1828f7ec340bSmacallan				vendor=dg
1829f7ec340bSmacallan				;;
183066ab3337Smrg			*-luna*)
1831f7ec340bSmacallan				vendor=omron
1832f7ec340bSmacallan				;;
183366ab3337Smrg			*-genix*)
1834f7ec340bSmacallan				vendor=ns
1835f7ec340bSmacallan				;;
183666ab3337Smrg			*-clix*)
183766ab3337Smrg				vendor=intergraph
183866ab3337Smrg				;;
183966ab3337Smrg			*-mvs* | *-opened*)
184066ab3337Smrg				vendor=ibm
184166ab3337Smrg				;;
184266ab3337Smrg			*-os400*)
1843f7ec340bSmacallan				vendor=ibm
1844f7ec340bSmacallan				;;
184566ab3337Smrg			s390-* | s390x-*)
18467ce7e03cSmrg				vendor=ibm
18477ce7e03cSmrg				;;
184866ab3337Smrg			*-ptx*)
1849f7ec340bSmacallan				vendor=sequent
1850f7ec340bSmacallan				;;
185166ab3337Smrg			*-tpf*)
18527ce7e03cSmrg				vendor=ibm
18537ce7e03cSmrg				;;
185466ab3337Smrg			*-vxsim* | *-vxworks* | *-windiss*)
1855f7ec340bSmacallan				vendor=wrs
1856f7ec340bSmacallan				;;
185766ab3337Smrg			*-aux*)
1858f7ec340bSmacallan				vendor=apple
1859f7ec340bSmacallan				;;
186066ab3337Smrg			*-hms*)
1861f7ec340bSmacallan				vendor=hitachi
1862f7ec340bSmacallan				;;
186366ab3337Smrg			*-mpw* | *-macos*)
1864f7ec340bSmacallan				vendor=apple
1865f7ec340bSmacallan				;;
186666ab3337Smrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
1867f7ec340bSmacallan				vendor=atari
1868f7ec340bSmacallan				;;
186966ab3337Smrg			*-vos*)
1870f7ec340bSmacallan				vendor=stratus
1871f7ec340bSmacallan				;;
1872f7ec340bSmacallan		esac
1873f7ec340bSmacallan		;;
1874f7ec340bSmacallanesac
1875f7ec340bSmacallan
187666ab3337Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
18777ce7e03cSmrgexit
1878f7ec340bSmacallan
1879f7ec340bSmacallan# Local variables:
188066ab3337Smrg# eval: (add-hook 'before-save-hook 'time-stamp)
1881f7ec340bSmacallan# time-stamp-start: "timestamp='"
1882f7ec340bSmacallan# time-stamp-format: "%:y-%02m-%02d"
1883f7ec340bSmacallan# time-stamp-end: "'"
1884f7ec340bSmacallan# End:
1885