125dbecb6Smrg#!/usr/bin/sh
26df26cacSmrg# Configuration validation subroutine script.
325dbecb6Smrg#   Copyright 1992-2022 Free Software Foundation, Inc.
46df26cacSmrg
525dbecb6Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale
66df26cacSmrg
725dbecb6Smrgtimestamp='2022-01-03'
825dbecb6Smrg
925dbecb6Smrg# This file is free software; you can redistribute it and/or modify it
1025dbecb6Smrg# under the terms of the GNU General Public License as published by
1125dbecb6Smrg# the Free Software Foundation, either version 3 of the License, or
126df26cacSmrg# (at your option) any later version.
136df26cacSmrg#
1425dbecb6Smrg# This program is distributed in the hope that it will be useful, but
1525dbecb6Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
1625dbecb6Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1725dbecb6Smrg# General Public License for more details.
186df26cacSmrg#
196df26cacSmrg# You should have received a copy of the GNU General Public License
2025dbecb6Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
216df26cacSmrg#
226df26cacSmrg# As a special exception to the GNU General Public License, if you
236df26cacSmrg# distribute this file as part of a program that contains a
246df26cacSmrg# configuration script generated by Autoconf, you may include it under
2525dbecb6Smrg# the same distribution terms that you use for the rest of that
2625dbecb6Smrg# program.  This Exception is an additional permission under section 7
2725dbecb6Smrg# of the GNU General Public License, version 3 ("GPLv3").
286df26cacSmrg
296df26cacSmrg
3025dbecb6Smrg# Please send patches to <config-patches@gnu.org>.
316df26cacSmrg#
326df26cacSmrg# Configuration subroutine to validate and canonicalize a configuration type.
336df26cacSmrg# Supply the specified configuration type as an argument.
346df26cacSmrg# If it is invalid, we print an error message on stderr and exit with code 1.
356df26cacSmrg# Otherwise, we print the canonical config type on stdout and succeed.
366df26cacSmrg
3725dbecb6Smrg# You can get the latest version of this script from:
3825dbecb6Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
3925dbecb6Smrg
406df26cacSmrg# This file is supposed to be the same for all GNU packages
416df26cacSmrg# and recognize all the CPU types, system types and aliases
426df26cacSmrg# that are meaningful with *any* GNU software.
436df26cacSmrg# Each package is responsible for reporting which valid configurations
446df26cacSmrg# it does not support.  The user should be able to distinguish
456df26cacSmrg# a failure to support a valid configuration from a meaningless
466df26cacSmrg# configuration.
476df26cacSmrg
486df26cacSmrg# The goal of this file is to map all the various variations of a given
496df26cacSmrg# machine specification into a single specification in the form:
506df26cacSmrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
516df26cacSmrg# or in some cases, the newer four-part form:
526df26cacSmrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
536df26cacSmrg# It is wrong to echo any other type of specification.
546df26cacSmrg
5525dbecb6Smrg# The "shellcheck disable" line above the timestamp inhibits complaints
5625dbecb6Smrg# about features and limitations of the classic Bourne shell that were
5725dbecb6Smrg# superseded or lifted in POSIX.  However, this script identifies a wide
5825dbecb6Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
5925dbecb6Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still
6025dbecb6Smrg# have a pre-POSIX /bin/sh.
6125dbecb6Smrg
626df26cacSmrgme=`echo "$0" | sed -e 's,.*/,,'`
636df26cacSmrg
646df26cacSmrgusage="\
6525dbecb6SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
666df26cacSmrg
676df26cacSmrgCanonicalize a configuration name.
686df26cacSmrg
6925dbecb6SmrgOptions:
706df26cacSmrg  -h, --help         print this help, then exit
716df26cacSmrg  -t, --time-stamp   print date of last modification, then exit
726df26cacSmrg  -v, --version      print version number, then exit
736df26cacSmrg
746df26cacSmrgReport bugs and patches to <config-patches@gnu.org>."
756df26cacSmrg
766df26cacSmrgversion="\
776df26cacSmrgGNU config.sub ($timestamp)
786df26cacSmrg
7925dbecb6SmrgCopyright 1992-2022 Free Software Foundation, Inc.
806df26cacSmrg
816df26cacSmrgThis is free software; see the source for copying conditions.  There is NO
826df26cacSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
836df26cacSmrg
846df26cacSmrghelp="
856df26cacSmrgTry \`$me --help' for more information."
866df26cacSmrg
876df26cacSmrg# Parse command line
886df26cacSmrgwhile test $# -gt 0 ; do
896df26cacSmrg  case $1 in
906df26cacSmrg    --time-stamp | --time* | -t )
916df26cacSmrg       echo "$timestamp" ; exit ;;
926df26cacSmrg    --version | -v )
936df26cacSmrg       echo "$version" ; exit ;;
946df26cacSmrg    --help | --h* | -h )
956df26cacSmrg       echo "$usage"; exit ;;
966df26cacSmrg    -- )     # Stop option processing
976df26cacSmrg       shift; break ;;
986df26cacSmrg    - )	# Use stdin as input.
996df26cacSmrg       break ;;
1006df26cacSmrg    -* )
10125dbecb6Smrg       echo "$me: invalid option $1$help" >&2
1026df26cacSmrg       exit 1 ;;
1036df26cacSmrg
1046df26cacSmrg    *local*)
1056df26cacSmrg       # First pass through any local machine types.
10625dbecb6Smrg       echo "$1"
1076df26cacSmrg       exit ;;
1086df26cacSmrg
1096df26cacSmrg    * )
1106df26cacSmrg       break ;;
1116df26cacSmrg  esac
1126df26cacSmrgdone
1136df26cacSmrg
1146df26cacSmrgcase $# in
1156df26cacSmrg 0) echo "$me: missing argument$help" >&2
1166df26cacSmrg    exit 1;;
1176df26cacSmrg 1) ;;
1186df26cacSmrg *) echo "$me: too many arguments$help" >&2
1196df26cacSmrg    exit 1;;
1206df26cacSmrgesac
1216df26cacSmrg
12225dbecb6Smrg# Split fields of configuration type
12325dbecb6Smrg# shellcheck disable=SC2162
12425dbecb6Smrgsaved_IFS=$IFS
12525dbecb6SmrgIFS="-" read field1 field2 field3 field4 <<EOF
12625dbecb6Smrg$1
12725dbecb6SmrgEOF
12825dbecb6SmrgIFS=$saved_IFS
1296df26cacSmrg
13025dbecb6Smrg# Separate into logical components for further validation
13125dbecb6Smrgcase $1 in
13225dbecb6Smrg	*-*-*-*-*)
13325dbecb6Smrg		echo Invalid configuration \`"$1"\': more than four components >&2
13425dbecb6Smrg		exit 1
1356df26cacSmrg		;;
13625dbecb6Smrg	*-*-*-*)
13725dbecb6Smrg		basic_machine=$field1-$field2
13825dbecb6Smrg		basic_os=$field3-$field4
1396df26cacSmrg		;;
14025dbecb6Smrg	*-*-*)
14125dbecb6Smrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
14225dbecb6Smrg		# parts
14325dbecb6Smrg		maybe_os=$field2-$field3
14425dbecb6Smrg		case $maybe_os in
14525dbecb6Smrg			nto-qnx* | linux-* | uclinux-uclibc* \
14625dbecb6Smrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
14725dbecb6Smrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
14825dbecb6Smrg			| storm-chaos* | os2-emx* | rtmk-nova*)
14925dbecb6Smrg				basic_machine=$field1
15025dbecb6Smrg				basic_os=$maybe_os
15125dbecb6Smrg				;;
15225dbecb6Smrg			android-linux)
15325dbecb6Smrg				basic_machine=$field1-unknown
15425dbecb6Smrg				basic_os=linux-android
15525dbecb6Smrg				;;
15625dbecb6Smrg			*)
15725dbecb6Smrg				basic_machine=$field1-$field2
15825dbecb6Smrg				basic_os=$field3
15925dbecb6Smrg				;;
16025dbecb6Smrg		esac
1616df26cacSmrg		;;
16225dbecb6Smrg	*-*)
16325dbecb6Smrg		# A lone config we happen to match not fitting any pattern
16425dbecb6Smrg		case $field1-$field2 in
16525dbecb6Smrg			decstation-3100)
16625dbecb6Smrg				basic_machine=mips-dec
16725dbecb6Smrg				basic_os=
16825dbecb6Smrg				;;
16925dbecb6Smrg			*-*)
17025dbecb6Smrg				# Second component is usually, but not always the OS
17125dbecb6Smrg				case $field2 in
17225dbecb6Smrg					# Prevent following clause from handling this valid os
17325dbecb6Smrg					sun*os*)
17425dbecb6Smrg						basic_machine=$field1
17525dbecb6Smrg						basic_os=$field2
17625dbecb6Smrg						;;
17725dbecb6Smrg					zephyr*)
17825dbecb6Smrg						basic_machine=$field1-unknown
17925dbecb6Smrg						basic_os=$field2
18025dbecb6Smrg						;;
18125dbecb6Smrg					# Manufacturers
18225dbecb6Smrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
18325dbecb6Smrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
18425dbecb6Smrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
18525dbecb6Smrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
18625dbecb6Smrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
18725dbecb6Smrg					| ultra | tti* | harris | dolphin | highlevel | gould \
18825dbecb6Smrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
18925dbecb6Smrg					| microblaze* | sim | cisco \
19025dbecb6Smrg					| oki | wec | wrs | winbond)
19125dbecb6Smrg						basic_machine=$field1-$field2
19225dbecb6Smrg						basic_os=
19325dbecb6Smrg						;;
19425dbecb6Smrg					*)
19525dbecb6Smrg						basic_machine=$field1
19625dbecb6Smrg						basic_os=$field2
19725dbecb6Smrg						;;
19825dbecb6Smrg				esac
19925dbecb6Smrg			;;
20025dbecb6Smrg		esac
2016df26cacSmrg		;;
20225dbecb6Smrg	*)
20325dbecb6Smrg		# Convert single-component short-hands not valid as part of
20425dbecb6Smrg		# multi-component configurations.
20525dbecb6Smrg		case $field1 in
20625dbecb6Smrg			386bsd)
20725dbecb6Smrg				basic_machine=i386-pc
20825dbecb6Smrg				basic_os=bsd
20925dbecb6Smrg				;;
21025dbecb6Smrg			a29khif)
21125dbecb6Smrg				basic_machine=a29k-amd
21225dbecb6Smrg				basic_os=udi
21325dbecb6Smrg				;;
21425dbecb6Smrg			adobe68k)
21525dbecb6Smrg				basic_machine=m68010-adobe
21625dbecb6Smrg				basic_os=scout
21725dbecb6Smrg				;;
21825dbecb6Smrg			alliant)
21925dbecb6Smrg				basic_machine=fx80-alliant
22025dbecb6Smrg				basic_os=
22125dbecb6Smrg				;;
22225dbecb6Smrg			altos | altos3068)
22325dbecb6Smrg				basic_machine=m68k-altos
22425dbecb6Smrg				basic_os=
22525dbecb6Smrg				;;
22625dbecb6Smrg			am29k)
22725dbecb6Smrg				basic_machine=a29k-none
22825dbecb6Smrg				basic_os=bsd
22925dbecb6Smrg				;;
23025dbecb6Smrg			amdahl)
23125dbecb6Smrg				basic_machine=580-amdahl
23225dbecb6Smrg				basic_os=sysv
23325dbecb6Smrg				;;
23425dbecb6Smrg			amiga)
23525dbecb6Smrg				basic_machine=m68k-unknown
23625dbecb6Smrg				basic_os=
23725dbecb6Smrg				;;
23825dbecb6Smrg			amigaos | amigados)
23925dbecb6Smrg				basic_machine=m68k-unknown
24025dbecb6Smrg				basic_os=amigaos
24125dbecb6Smrg				;;
24225dbecb6Smrg			amigaunix | amix)
24325dbecb6Smrg				basic_machine=m68k-unknown
24425dbecb6Smrg				basic_os=sysv4
24525dbecb6Smrg				;;
24625dbecb6Smrg			apollo68)
24725dbecb6Smrg				basic_machine=m68k-apollo
24825dbecb6Smrg				basic_os=sysv
24925dbecb6Smrg				;;
25025dbecb6Smrg			apollo68bsd)
25125dbecb6Smrg				basic_machine=m68k-apollo
25225dbecb6Smrg				basic_os=bsd
25325dbecb6Smrg				;;
25425dbecb6Smrg			aros)
25525dbecb6Smrg				basic_machine=i386-pc
25625dbecb6Smrg				basic_os=aros
25725dbecb6Smrg				;;
25825dbecb6Smrg			aux)
25925dbecb6Smrg				basic_machine=m68k-apple
26025dbecb6Smrg				basic_os=aux
26125dbecb6Smrg				;;
26225dbecb6Smrg			balance)
26325dbecb6Smrg				basic_machine=ns32k-sequent
26425dbecb6Smrg				basic_os=dynix
26525dbecb6Smrg				;;
26625dbecb6Smrg			blackfin)
26725dbecb6Smrg				basic_machine=bfin-unknown
26825dbecb6Smrg				basic_os=linux
26925dbecb6Smrg				;;
27025dbecb6Smrg			cegcc)
27125dbecb6Smrg				basic_machine=arm-unknown
27225dbecb6Smrg				basic_os=cegcc
27325dbecb6Smrg				;;
27425dbecb6Smrg			convex-c1)
27525dbecb6Smrg				basic_machine=c1-convex
27625dbecb6Smrg				basic_os=bsd
27725dbecb6Smrg				;;
27825dbecb6Smrg			convex-c2)
27925dbecb6Smrg				basic_machine=c2-convex
28025dbecb6Smrg				basic_os=bsd
28125dbecb6Smrg				;;
28225dbecb6Smrg			convex-c32)
28325dbecb6Smrg				basic_machine=c32-convex
28425dbecb6Smrg				basic_os=bsd
28525dbecb6Smrg				;;
28625dbecb6Smrg			convex-c34)
28725dbecb6Smrg				basic_machine=c34-convex
28825dbecb6Smrg				basic_os=bsd
28925dbecb6Smrg				;;
29025dbecb6Smrg			convex-c38)
29125dbecb6Smrg				basic_machine=c38-convex
29225dbecb6Smrg				basic_os=bsd
29325dbecb6Smrg				;;
29425dbecb6Smrg			cray)
29525dbecb6Smrg				basic_machine=j90-cray
29625dbecb6Smrg				basic_os=unicos
29725dbecb6Smrg				;;
29825dbecb6Smrg			crds | unos)
29925dbecb6Smrg				basic_machine=m68k-crds
30025dbecb6Smrg				basic_os=
30125dbecb6Smrg				;;
30225dbecb6Smrg			da30)
30325dbecb6Smrg				basic_machine=m68k-da30
30425dbecb6Smrg				basic_os=
30525dbecb6Smrg				;;
30625dbecb6Smrg			decstation | pmax | pmin | dec3100 | decstatn)
30725dbecb6Smrg				basic_machine=mips-dec
30825dbecb6Smrg				basic_os=
30925dbecb6Smrg				;;
31025dbecb6Smrg			delta88)
31125dbecb6Smrg				basic_machine=m88k-motorola
31225dbecb6Smrg				basic_os=sysv3
31325dbecb6Smrg				;;
31425dbecb6Smrg			dicos)
31525dbecb6Smrg				basic_machine=i686-pc
31625dbecb6Smrg				basic_os=dicos
31725dbecb6Smrg				;;
31825dbecb6Smrg			djgpp)
31925dbecb6Smrg				basic_machine=i586-pc
32025dbecb6Smrg				basic_os=msdosdjgpp
32125dbecb6Smrg				;;
32225dbecb6Smrg			ebmon29k)
32325dbecb6Smrg				basic_machine=a29k-amd
32425dbecb6Smrg				basic_os=ebmon
32525dbecb6Smrg				;;
32625dbecb6Smrg			es1800 | OSE68k | ose68k | ose | OSE)
32725dbecb6Smrg				basic_machine=m68k-ericsson
32825dbecb6Smrg				basic_os=ose
32925dbecb6Smrg				;;
33025dbecb6Smrg			gmicro)
33125dbecb6Smrg				basic_machine=tron-gmicro
33225dbecb6Smrg				basic_os=sysv
33325dbecb6Smrg				;;
33425dbecb6Smrg			go32)
33525dbecb6Smrg				basic_machine=i386-pc
33625dbecb6Smrg				basic_os=go32
33725dbecb6Smrg				;;
33825dbecb6Smrg			h8300hms)
33925dbecb6Smrg				basic_machine=h8300-hitachi
34025dbecb6Smrg				basic_os=hms
34125dbecb6Smrg				;;
34225dbecb6Smrg			h8300xray)
34325dbecb6Smrg				basic_machine=h8300-hitachi
34425dbecb6Smrg				basic_os=xray
34525dbecb6Smrg				;;
34625dbecb6Smrg			h8500hms)
34725dbecb6Smrg				basic_machine=h8500-hitachi
34825dbecb6Smrg				basic_os=hms
34925dbecb6Smrg				;;
35025dbecb6Smrg			harris)
35125dbecb6Smrg				basic_machine=m88k-harris
35225dbecb6Smrg				basic_os=sysv3
35325dbecb6Smrg				;;
35425dbecb6Smrg			hp300 | hp300hpux)
35525dbecb6Smrg				basic_machine=m68k-hp
35625dbecb6Smrg				basic_os=hpux
35725dbecb6Smrg				;;
35825dbecb6Smrg			hp300bsd)
35925dbecb6Smrg				basic_machine=m68k-hp
36025dbecb6Smrg				basic_os=bsd
36125dbecb6Smrg				;;
36225dbecb6Smrg			hppaosf)
36325dbecb6Smrg				basic_machine=hppa1.1-hp
36425dbecb6Smrg				basic_os=osf
36525dbecb6Smrg				;;
36625dbecb6Smrg			hppro)
36725dbecb6Smrg				basic_machine=hppa1.1-hp
36825dbecb6Smrg				basic_os=proelf
36925dbecb6Smrg				;;
37025dbecb6Smrg			i386mach)
37125dbecb6Smrg				basic_machine=i386-mach
37225dbecb6Smrg				basic_os=mach
37325dbecb6Smrg				;;
37425dbecb6Smrg			isi68 | isi)
37525dbecb6Smrg				basic_machine=m68k-isi
37625dbecb6Smrg				basic_os=sysv
37725dbecb6Smrg				;;
37825dbecb6Smrg			m68knommu)
37925dbecb6Smrg				basic_machine=m68k-unknown
38025dbecb6Smrg				basic_os=linux
38125dbecb6Smrg				;;
38225dbecb6Smrg			magnum | m3230)
38325dbecb6Smrg				basic_machine=mips-mips
38425dbecb6Smrg				basic_os=sysv
38525dbecb6Smrg				;;
38625dbecb6Smrg			merlin)
38725dbecb6Smrg				basic_machine=ns32k-utek
38825dbecb6Smrg				basic_os=sysv
38925dbecb6Smrg				;;
39025dbecb6Smrg			mingw64)
39125dbecb6Smrg				basic_machine=x86_64-pc
39225dbecb6Smrg				basic_os=mingw64
39325dbecb6Smrg				;;
39425dbecb6Smrg			mingw32)
39525dbecb6Smrg				basic_machine=i686-pc
39625dbecb6Smrg				basic_os=mingw32
39725dbecb6Smrg				;;
39825dbecb6Smrg			mingw32ce)
39925dbecb6Smrg				basic_machine=arm-unknown
40025dbecb6Smrg				basic_os=mingw32ce
40125dbecb6Smrg				;;
40225dbecb6Smrg			monitor)
40325dbecb6Smrg				basic_machine=m68k-rom68k
40425dbecb6Smrg				basic_os=coff
40525dbecb6Smrg				;;
40625dbecb6Smrg			morphos)
40725dbecb6Smrg				basic_machine=powerpc-unknown
40825dbecb6Smrg				basic_os=morphos
40925dbecb6Smrg				;;
41025dbecb6Smrg			moxiebox)
41125dbecb6Smrg				basic_machine=moxie-unknown
41225dbecb6Smrg				basic_os=moxiebox
41325dbecb6Smrg				;;
41425dbecb6Smrg			msdos)
41525dbecb6Smrg				basic_machine=i386-pc
41625dbecb6Smrg				basic_os=msdos
41725dbecb6Smrg				;;
41825dbecb6Smrg			msys)
41925dbecb6Smrg				basic_machine=i686-pc
42025dbecb6Smrg				basic_os=msys
42125dbecb6Smrg				;;
42225dbecb6Smrg			mvs)
42325dbecb6Smrg				basic_machine=i370-ibm
42425dbecb6Smrg				basic_os=mvs
42525dbecb6Smrg				;;
42625dbecb6Smrg			nacl)
42725dbecb6Smrg				basic_machine=le32-unknown
42825dbecb6Smrg				basic_os=nacl
42925dbecb6Smrg				;;
43025dbecb6Smrg			ncr3000)
43125dbecb6Smrg				basic_machine=i486-ncr
43225dbecb6Smrg				basic_os=sysv4
43325dbecb6Smrg				;;
43425dbecb6Smrg			netbsd386)
43525dbecb6Smrg				basic_machine=i386-pc
43625dbecb6Smrg				basic_os=netbsd
43725dbecb6Smrg				;;
43825dbecb6Smrg			netwinder)
43925dbecb6Smrg				basic_machine=armv4l-rebel
44025dbecb6Smrg				basic_os=linux
44125dbecb6Smrg				;;
44225dbecb6Smrg			news | news700 | news800 | news900)
44325dbecb6Smrg				basic_machine=m68k-sony
44425dbecb6Smrg				basic_os=newsos
44525dbecb6Smrg				;;
44625dbecb6Smrg			news1000)
44725dbecb6Smrg				basic_machine=m68030-sony
44825dbecb6Smrg				basic_os=newsos
44925dbecb6Smrg				;;
45025dbecb6Smrg			necv70)
45125dbecb6Smrg				basic_machine=v70-nec
45225dbecb6Smrg				basic_os=sysv
45325dbecb6Smrg				;;
45425dbecb6Smrg			nh3000)
45525dbecb6Smrg				basic_machine=m68k-harris
45625dbecb6Smrg				basic_os=cxux
45725dbecb6Smrg				;;
45825dbecb6Smrg			nh[45]000)
45925dbecb6Smrg				basic_machine=m88k-harris
46025dbecb6Smrg				basic_os=cxux
46125dbecb6Smrg				;;
46225dbecb6Smrg			nindy960)
46325dbecb6Smrg				basic_machine=i960-intel
46425dbecb6Smrg				basic_os=nindy
46525dbecb6Smrg				;;
46625dbecb6Smrg			mon960)
46725dbecb6Smrg				basic_machine=i960-intel
46825dbecb6Smrg				basic_os=mon960
46925dbecb6Smrg				;;
47025dbecb6Smrg			nonstopux)
47125dbecb6Smrg				basic_machine=mips-compaq
47225dbecb6Smrg				basic_os=nonstopux
47325dbecb6Smrg				;;
47425dbecb6Smrg			os400)
47525dbecb6Smrg				basic_machine=powerpc-ibm
47625dbecb6Smrg				basic_os=os400
47725dbecb6Smrg				;;
47825dbecb6Smrg			OSE68000 | ose68000)
47925dbecb6Smrg				basic_machine=m68000-ericsson
48025dbecb6Smrg				basic_os=ose
48125dbecb6Smrg				;;
48225dbecb6Smrg			os68k)
48325dbecb6Smrg				basic_machine=m68k-none
48425dbecb6Smrg				basic_os=os68k
48525dbecb6Smrg				;;
48625dbecb6Smrg			paragon)
48725dbecb6Smrg				basic_machine=i860-intel
48825dbecb6Smrg				basic_os=osf
48925dbecb6Smrg				;;
49025dbecb6Smrg			parisc)
49125dbecb6Smrg				basic_machine=hppa-unknown
49225dbecb6Smrg				basic_os=linux
49325dbecb6Smrg				;;
49425dbecb6Smrg			psp)
49525dbecb6Smrg				basic_machine=mipsallegrexel-sony
49625dbecb6Smrg				basic_os=psp
49725dbecb6Smrg				;;
49825dbecb6Smrg			pw32)
49925dbecb6Smrg				basic_machine=i586-unknown
50025dbecb6Smrg				basic_os=pw32
50125dbecb6Smrg				;;
50225dbecb6Smrg			rdos | rdos64)
50325dbecb6Smrg				basic_machine=x86_64-pc
50425dbecb6Smrg				basic_os=rdos
50525dbecb6Smrg				;;
50625dbecb6Smrg			rdos32)
50725dbecb6Smrg				basic_machine=i386-pc
50825dbecb6Smrg				basic_os=rdos
50925dbecb6Smrg				;;
51025dbecb6Smrg			rom68k)
51125dbecb6Smrg				basic_machine=m68k-rom68k
51225dbecb6Smrg				basic_os=coff
51325dbecb6Smrg				;;
51425dbecb6Smrg			sa29200)
51525dbecb6Smrg				basic_machine=a29k-amd
51625dbecb6Smrg				basic_os=udi
51725dbecb6Smrg				;;
51825dbecb6Smrg			sei)
51925dbecb6Smrg				basic_machine=mips-sei
52025dbecb6Smrg				basic_os=seiux
52125dbecb6Smrg				;;
52225dbecb6Smrg			sequent)
52325dbecb6Smrg				basic_machine=i386-sequent
52425dbecb6Smrg				basic_os=
52525dbecb6Smrg				;;
52625dbecb6Smrg			sps7)
52725dbecb6Smrg				basic_machine=m68k-bull
52825dbecb6Smrg				basic_os=sysv2
52925dbecb6Smrg				;;
53025dbecb6Smrg			st2000)
53125dbecb6Smrg				basic_machine=m68k-tandem
53225dbecb6Smrg				basic_os=
53325dbecb6Smrg				;;
53425dbecb6Smrg			stratus)
53525dbecb6Smrg				basic_machine=i860-stratus
53625dbecb6Smrg				basic_os=sysv4
53725dbecb6Smrg				;;
53825dbecb6Smrg			sun2)
53925dbecb6Smrg				basic_machine=m68000-sun
54025dbecb6Smrg				basic_os=
54125dbecb6Smrg				;;
54225dbecb6Smrg			sun2os3)
54325dbecb6Smrg				basic_machine=m68000-sun
54425dbecb6Smrg				basic_os=sunos3
54525dbecb6Smrg				;;
54625dbecb6Smrg			sun2os4)
54725dbecb6Smrg				basic_machine=m68000-sun
54825dbecb6Smrg				basic_os=sunos4
54925dbecb6Smrg				;;
55025dbecb6Smrg			sun3)
55125dbecb6Smrg				basic_machine=m68k-sun
55225dbecb6Smrg				basic_os=
55325dbecb6Smrg				;;
55425dbecb6Smrg			sun3os3)
55525dbecb6Smrg				basic_machine=m68k-sun
55625dbecb6Smrg				basic_os=sunos3
55725dbecb6Smrg				;;
55825dbecb6Smrg			sun3os4)
55925dbecb6Smrg				basic_machine=m68k-sun
56025dbecb6Smrg				basic_os=sunos4
56125dbecb6Smrg				;;
56225dbecb6Smrg			sun4)
56325dbecb6Smrg				basic_machine=sparc-sun
56425dbecb6Smrg				basic_os=
56525dbecb6Smrg				;;
56625dbecb6Smrg			sun4os3)
56725dbecb6Smrg				basic_machine=sparc-sun
56825dbecb6Smrg				basic_os=sunos3
56925dbecb6Smrg				;;
57025dbecb6Smrg			sun4os4)
57125dbecb6Smrg				basic_machine=sparc-sun
57225dbecb6Smrg				basic_os=sunos4
57325dbecb6Smrg				;;
57425dbecb6Smrg			sun4sol2)
57525dbecb6Smrg				basic_machine=sparc-sun
57625dbecb6Smrg				basic_os=solaris2
57725dbecb6Smrg				;;
57825dbecb6Smrg			sun386 | sun386i | roadrunner)
57925dbecb6Smrg				basic_machine=i386-sun
58025dbecb6Smrg				basic_os=
58125dbecb6Smrg				;;
58225dbecb6Smrg			sv1)
58325dbecb6Smrg				basic_machine=sv1-cray
58425dbecb6Smrg				basic_os=unicos
58525dbecb6Smrg				;;
58625dbecb6Smrg			symmetry)
58725dbecb6Smrg				basic_machine=i386-sequent
58825dbecb6Smrg				basic_os=dynix
58925dbecb6Smrg				;;
59025dbecb6Smrg			t3e)
59125dbecb6Smrg				basic_machine=alphaev5-cray
59225dbecb6Smrg				basic_os=unicos
59325dbecb6Smrg				;;
59425dbecb6Smrg			t90)
59525dbecb6Smrg				basic_machine=t90-cray
59625dbecb6Smrg				basic_os=unicos
59725dbecb6Smrg				;;
59825dbecb6Smrg			toad1)
59925dbecb6Smrg				basic_machine=pdp10-xkl
60025dbecb6Smrg				basic_os=tops20
60125dbecb6Smrg				;;
60225dbecb6Smrg			tpf)
60325dbecb6Smrg				basic_machine=s390x-ibm
60425dbecb6Smrg				basic_os=tpf
60525dbecb6Smrg				;;
60625dbecb6Smrg			udi29k)
60725dbecb6Smrg				basic_machine=a29k-amd
60825dbecb6Smrg				basic_os=udi
60925dbecb6Smrg				;;
61025dbecb6Smrg			ultra3)
61125dbecb6Smrg				basic_machine=a29k-nyu
61225dbecb6Smrg				basic_os=sym1
61325dbecb6Smrg				;;
61425dbecb6Smrg			v810 | necv810)
61525dbecb6Smrg				basic_machine=v810-nec
61625dbecb6Smrg				basic_os=none
61725dbecb6Smrg				;;
61825dbecb6Smrg			vaxv)
61925dbecb6Smrg				basic_machine=vax-dec
62025dbecb6Smrg				basic_os=sysv
62125dbecb6Smrg				;;
62225dbecb6Smrg			vms)
62325dbecb6Smrg				basic_machine=vax-dec
62425dbecb6Smrg				basic_os=vms
62525dbecb6Smrg				;;
62625dbecb6Smrg			vsta)
62725dbecb6Smrg				basic_machine=i386-pc
62825dbecb6Smrg				basic_os=vsta
62925dbecb6Smrg				;;
63025dbecb6Smrg			vxworks960)
63125dbecb6Smrg				basic_machine=i960-wrs
63225dbecb6Smrg				basic_os=vxworks
63325dbecb6Smrg				;;
63425dbecb6Smrg			vxworks68)
63525dbecb6Smrg				basic_machine=m68k-wrs
63625dbecb6Smrg				basic_os=vxworks
63725dbecb6Smrg				;;
63825dbecb6Smrg			vxworks29k)
63925dbecb6Smrg				basic_machine=a29k-wrs
64025dbecb6Smrg				basic_os=vxworks
64125dbecb6Smrg				;;
64225dbecb6Smrg			xbox)
64325dbecb6Smrg				basic_machine=i686-pc
64425dbecb6Smrg				basic_os=mingw32
64525dbecb6Smrg				;;
64625dbecb6Smrg			ymp)
64725dbecb6Smrg				basic_machine=ymp-cray
64825dbecb6Smrg				basic_os=unicos
64925dbecb6Smrg				;;
65025dbecb6Smrg			*)
65125dbecb6Smrg				basic_machine=$1
65225dbecb6Smrg				basic_os=
65325dbecb6Smrg				;;
65425dbecb6Smrg		esac
6556df26cacSmrg		;;
65625dbecb6Smrgesac
65725dbecb6Smrg
65825dbecb6Smrg# Decode 1-component or ad-hoc basic machines
65925dbecb6Smrgcase $basic_machine in
66025dbecb6Smrg	# Here we handle the default manufacturer of certain CPU types.  It is in
66125dbecb6Smrg	# some cases the only manufacturer, in others, it is the most popular.
66225dbecb6Smrg	w89k)
66325dbecb6Smrg		cpu=hppa1.1
66425dbecb6Smrg		vendor=winbond
6656df26cacSmrg		;;
66625dbecb6Smrg	op50n)
66725dbecb6Smrg		cpu=hppa1.1
66825dbecb6Smrg		vendor=oki
6696df26cacSmrg		;;
67025dbecb6Smrg	op60c)
67125dbecb6Smrg		cpu=hppa1.1
67225dbecb6Smrg		vendor=oki
6736df26cacSmrg		;;
67425dbecb6Smrg	ibm*)
67525dbecb6Smrg		cpu=i370
67625dbecb6Smrg		vendor=ibm
6776df26cacSmrg		;;
67825dbecb6Smrg	orion105)
67925dbecb6Smrg		cpu=clipper
68025dbecb6Smrg		vendor=highlevel
6816df26cacSmrg		;;
68225dbecb6Smrg	mac | mpw | mac-mpw)
68325dbecb6Smrg		cpu=m68k
68425dbecb6Smrg		vendor=apple
6856df26cacSmrg		;;
68625dbecb6Smrg	pmac | pmac-mpw)
68725dbecb6Smrg		cpu=powerpc
68825dbecb6Smrg		vendor=apple
6896df26cacSmrg		;;
6906df26cacSmrg
6916df26cacSmrg	# Recognize the various machine names and aliases which stand
6926df26cacSmrg	# for a CPU type and a company and sometimes even an OS.
6936df26cacSmrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
69425dbecb6Smrg		cpu=m68000
69525dbecb6Smrg		vendor=att
6966df26cacSmrg		;;
6976df26cacSmrg	3b*)
69825dbecb6Smrg		cpu=we32k
69925dbecb6Smrg		vendor=att
700b68e1f86Smrg		;;
70125dbecb6Smrg	bluegene*)
70225dbecb6Smrg		cpu=powerpc
70325dbecb6Smrg		vendor=ibm
70425dbecb6Smrg		basic_os=cnk
7056df26cacSmrg		;;
7066df26cacSmrg	decsystem10* | dec10*)
70725dbecb6Smrg		cpu=pdp10
70825dbecb6Smrg		vendor=dec
70925dbecb6Smrg		basic_os=tops10
7106df26cacSmrg		;;
7116df26cacSmrg	decsystem20* | dec20*)
71225dbecb6Smrg		cpu=pdp10
71325dbecb6Smrg		vendor=dec
71425dbecb6Smrg		basic_os=tops20
7156df26cacSmrg		;;
7166df26cacSmrg	delta | 3300 | motorola-3300 | motorola-delta \
7176df26cacSmrg	      | 3300-motorola | delta-motorola)
71825dbecb6Smrg		cpu=m68k
71925dbecb6Smrg		vendor=motorola
7206df26cacSmrg		;;
72125dbecb6Smrg	dpx2*)
72225dbecb6Smrg		cpu=m68k
72325dbecb6Smrg		vendor=bull
72425dbecb6Smrg		basic_os=sysv3
7256df26cacSmrg		;;
7266df26cacSmrg	encore | umax | mmax)
72725dbecb6Smrg		cpu=ns32k
72825dbecb6Smrg		vendor=encore
7296df26cacSmrg		;;
73025dbecb6Smrg	elxsi)
73125dbecb6Smrg		cpu=elxsi
73225dbecb6Smrg		vendor=elxsi
73325dbecb6Smrg		basic_os=${basic_os:-bsd}
7346df26cacSmrg		;;
7356df26cacSmrg	fx2800)
73625dbecb6Smrg		cpu=i860
73725dbecb6Smrg		vendor=alliant
7386df26cacSmrg		;;
7396df26cacSmrg	genix)
74025dbecb6Smrg		cpu=ns32k
74125dbecb6Smrg		vendor=ns
7426df26cacSmrg		;;
7436df26cacSmrg	h3050r* | hiux*)
74425dbecb6Smrg		cpu=hppa1.1
74525dbecb6Smrg		vendor=hitachi
74625dbecb6Smrg		basic_os=hiuxwe2
7476df26cacSmrg		;;
7486df26cacSmrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
74925dbecb6Smrg		cpu=hppa1.0
75025dbecb6Smrg		vendor=hp
7516df26cacSmrg		;;
7526df26cacSmrg	hp9k2[0-9][0-9] | hp9k31[0-9])
75325dbecb6Smrg		cpu=m68000
75425dbecb6Smrg		vendor=hp
7556df26cacSmrg		;;
7566df26cacSmrg	hp9k3[2-9][0-9])
75725dbecb6Smrg		cpu=m68k
75825dbecb6Smrg		vendor=hp
7596df26cacSmrg		;;
7606df26cacSmrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
76125dbecb6Smrg		cpu=hppa1.0
76225dbecb6Smrg		vendor=hp
7636df26cacSmrg		;;
7646df26cacSmrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
76525dbecb6Smrg		cpu=hppa1.1
76625dbecb6Smrg		vendor=hp
7676df26cacSmrg		;;
7686df26cacSmrg	hp9k78[0-9] | hp78[0-9])
7696df26cacSmrg		# FIXME: really hppa2.0-hp
77025dbecb6Smrg		cpu=hppa1.1
77125dbecb6Smrg		vendor=hp
7726df26cacSmrg		;;
7736df26cacSmrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
7746df26cacSmrg		# FIXME: really hppa2.0-hp
77525dbecb6Smrg		cpu=hppa1.1
77625dbecb6Smrg		vendor=hp
7776df26cacSmrg		;;
7786df26cacSmrg	hp9k8[0-9][13679] | hp8[0-9][13679])
77925dbecb6Smrg		cpu=hppa1.1
78025dbecb6Smrg		vendor=hp
7816df26cacSmrg		;;
7826df26cacSmrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
78325dbecb6Smrg		cpu=hppa1.0
78425dbecb6Smrg		vendor=hp
7856df26cacSmrg		;;
7866df26cacSmrg	i*86v32)
78725dbecb6Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
78825dbecb6Smrg		vendor=pc
78925dbecb6Smrg		basic_os=sysv32
7906df26cacSmrg		;;
7916df26cacSmrg	i*86v4*)
79225dbecb6Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79325dbecb6Smrg		vendor=pc
79425dbecb6Smrg		basic_os=sysv4
7956df26cacSmrg		;;
7966df26cacSmrg	i*86v)
79725dbecb6Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79825dbecb6Smrg		vendor=pc
79925dbecb6Smrg		basic_os=sysv
8006df26cacSmrg		;;
8016df26cacSmrg	i*86sol2)
80225dbecb6Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
80325dbecb6Smrg		vendor=pc
80425dbecb6Smrg		basic_os=solaris2
8056df26cacSmrg		;;
80625dbecb6Smrg	j90 | j90-cray)
80725dbecb6Smrg		cpu=j90
80825dbecb6Smrg		vendor=cray
80925dbecb6Smrg		basic_os=${basic_os:-unicos}
8106df26cacSmrg		;;
8116df26cacSmrg	iris | iris4d)
81225dbecb6Smrg		cpu=mips
81325dbecb6Smrg		vendor=sgi
81425dbecb6Smrg		case $basic_os in
81525dbecb6Smrg		    irix*)
8166df26cacSmrg			;;
8176df26cacSmrg		    *)
81825dbecb6Smrg			basic_os=irix4
8196df26cacSmrg			;;
8206df26cacSmrg		esac
8216df26cacSmrg		;;
8226df26cacSmrg	miniframe)
82325dbecb6Smrg		cpu=m68000
82425dbecb6Smrg		vendor=convergent
8256df26cacSmrg		;;
82625dbecb6Smrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
82725dbecb6Smrg		cpu=m68k
82825dbecb6Smrg		vendor=atari
82925dbecb6Smrg		basic_os=mint
8306df26cacSmrg		;;
8316df26cacSmrg	news-3600 | risc-news)
83225dbecb6Smrg		cpu=mips
83325dbecb6Smrg		vendor=sony
83425dbecb6Smrg		basic_os=newsos
83525dbecb6Smrg		;;
83625dbecb6Smrg	next | m*-next)
83725dbecb6Smrg		cpu=m68k
83825dbecb6Smrg		vendor=next
83925dbecb6Smrg		case $basic_os in
84025dbecb6Smrg		    openstep*)
84125dbecb6Smrg		        ;;
84225dbecb6Smrg		    nextstep*)
8436df26cacSmrg			;;
84425dbecb6Smrg		    ns2*)
84525dbecb6Smrg		      basic_os=nextstep2
8466df26cacSmrg			;;
8476df26cacSmrg		    *)
84825dbecb6Smrg		      basic_os=nextstep3
8496df26cacSmrg			;;
8506df26cacSmrg		esac
8516df26cacSmrg		;;
8526df26cacSmrg	np1)
85325dbecb6Smrg		cpu=np1
85425dbecb6Smrg		vendor=gould
8556df26cacSmrg		;;
8566df26cacSmrg	op50n-* | op60c-*)
85725dbecb6Smrg		cpu=hppa1.1
85825dbecb6Smrg		vendor=oki
85925dbecb6Smrg		basic_os=proelf
8606df26cacSmrg		;;
8616df26cacSmrg	pa-hitachi)
86225dbecb6Smrg		cpu=hppa1.1
86325dbecb6Smrg		vendor=hitachi
86425dbecb6Smrg		basic_os=hiuxwe2
865b68e1f86Smrg		;;
8666df26cacSmrg	pbd)
86725dbecb6Smrg		cpu=sparc
86825dbecb6Smrg		vendor=tti
8696df26cacSmrg		;;
8706df26cacSmrg	pbb)
87125dbecb6Smrg		cpu=m68k
87225dbecb6Smrg		vendor=tti
8736df26cacSmrg		;;
87425dbecb6Smrg	pc532)
87525dbecb6Smrg		cpu=ns32k
87625dbecb6Smrg		vendor=pc532
8776df26cacSmrg		;;
8786df26cacSmrg	pn)
87925dbecb6Smrg		cpu=pn
88025dbecb6Smrg		vendor=gould
8816df26cacSmrg		;;
88225dbecb6Smrg	power)
88325dbecb6Smrg		cpu=power
88425dbecb6Smrg		vendor=ibm
8856df26cacSmrg		;;
8866df26cacSmrg	ps2)
88725dbecb6Smrg		cpu=i386
88825dbecb6Smrg		vendor=ibm
8896df26cacSmrg		;;
8906df26cacSmrg	rm[46]00)
89125dbecb6Smrg		cpu=mips
89225dbecb6Smrg		vendor=siemens
8936df26cacSmrg		;;
8946df26cacSmrg	rtpc | rtpc-*)
89525dbecb6Smrg		cpu=romp
89625dbecb6Smrg		vendor=ibm
8976df26cacSmrg		;;
89825dbecb6Smrg	sde)
89925dbecb6Smrg		cpu=mipsisa32
90025dbecb6Smrg		vendor=sde
90125dbecb6Smrg		basic_os=${basic_os:-elf}
9026df26cacSmrg		;;
90325dbecb6Smrg	simso-wrs)
90425dbecb6Smrg		cpu=sparclite
90525dbecb6Smrg		vendor=wrs
90625dbecb6Smrg		basic_os=vxworks
9076df26cacSmrg		;;
90825dbecb6Smrg	tower | tower-32)
90925dbecb6Smrg		cpu=m68k
91025dbecb6Smrg		vendor=ncr
9116df26cacSmrg		;;
91225dbecb6Smrg	vpp*|vx|vx-*)
91325dbecb6Smrg		cpu=f301
91425dbecb6Smrg		vendor=fujitsu
9156df26cacSmrg		;;
91625dbecb6Smrg	w65)
91725dbecb6Smrg		cpu=w65
91825dbecb6Smrg		vendor=wdc
9196df26cacSmrg		;;
92025dbecb6Smrg	w89k-*)
92125dbecb6Smrg		cpu=hppa1.1
92225dbecb6Smrg		vendor=winbond
92325dbecb6Smrg		basic_os=proelf
9246df26cacSmrg		;;
92525dbecb6Smrg	none)
92625dbecb6Smrg		cpu=none
92725dbecb6Smrg		vendor=none
9286df26cacSmrg		;;
92925dbecb6Smrg	leon|leon[3-9])
93025dbecb6Smrg		cpu=sparc
93125dbecb6Smrg		vendor=$basic_machine
93216fd1166Smrg		;;
93325dbecb6Smrg	leon-*|leon[3-9]-*)
93425dbecb6Smrg		cpu=sparc
93525dbecb6Smrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
9366df26cacSmrg		;;
93725dbecb6Smrg
93825dbecb6Smrg	*-*)
93925dbecb6Smrg		# shellcheck disable=SC2162
94025dbecb6Smrg		saved_IFS=$IFS
94125dbecb6Smrg		IFS="-" read cpu vendor <<EOF
94225dbecb6Smrg$basic_machine
94325dbecb6SmrgEOF
94425dbecb6Smrg		IFS=$saved_IFS
9456df26cacSmrg		;;
94625dbecb6Smrg	# We use `pc' rather than `unknown'
94725dbecb6Smrg	# because (1) that's what they normally are, and
94825dbecb6Smrg	# (2) the word "unknown" tends to confuse beginning users.
94925dbecb6Smrg	i*86 | x86_64)
95025dbecb6Smrg		cpu=$basic_machine
95125dbecb6Smrg		vendor=pc
9526df26cacSmrg		;;
95325dbecb6Smrg	# These rules are duplicated from below for sake of the special case above;
95425dbecb6Smrg	# i.e. things that normalized to x86 arches should also default to "pc"
95525dbecb6Smrg	pc98)
95625dbecb6Smrg		cpu=i386
95725dbecb6Smrg		vendor=pc
9586df26cacSmrg		;;
95925dbecb6Smrg	x64 | amd64)
96025dbecb6Smrg		cpu=x86_64
96125dbecb6Smrg		vendor=pc
9626df26cacSmrg		;;
96325dbecb6Smrg	# Recognize the basic CPU types without company name.
96425dbecb6Smrg	*)
96525dbecb6Smrg		cpu=$basic_machine
96625dbecb6Smrg		vendor=unknown
9676df26cacSmrg		;;
96825dbecb6Smrgesac
96925dbecb6Smrg
97025dbecb6Smrgunset -v basic_machine
97125dbecb6Smrg
97225dbecb6Smrg# Decode basic machines in the full and proper CPU-Company form.
97325dbecb6Smrgcase $cpu-$vendor in
97425dbecb6Smrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
97525dbecb6Smrg	# some cases the only manufacturer, in others, it is the most popular.
97625dbecb6Smrg	craynv-unknown)
97725dbecb6Smrg		vendor=cray
97825dbecb6Smrg		basic_os=${basic_os:-unicosmp}
9796df26cacSmrg		;;
98025dbecb6Smrg	c90-unknown | c90-cray)
98125dbecb6Smrg		vendor=cray
98225dbecb6Smrg		basic_os=${Basic_os:-unicos}
9836df26cacSmrg		;;
98425dbecb6Smrg	fx80-unknown)
98525dbecb6Smrg		vendor=alliant
9866df26cacSmrg		;;
98725dbecb6Smrg	romp-unknown)
98825dbecb6Smrg		vendor=ibm
9896df26cacSmrg		;;
99025dbecb6Smrg	mmix-unknown)
99125dbecb6Smrg		vendor=knuth
9926df26cacSmrg		;;
99325dbecb6Smrg	microblaze-unknown | microblazeel-unknown)
99425dbecb6Smrg		vendor=xilinx
9956df26cacSmrg		;;
99625dbecb6Smrg	rs6000-unknown)
99725dbecb6Smrg		vendor=ibm
9986df26cacSmrg		;;
99925dbecb6Smrg	vax-unknown)
100025dbecb6Smrg		vendor=dec
10016df26cacSmrg		;;
100225dbecb6Smrg	pdp11-unknown)
100325dbecb6Smrg		vendor=dec
10046df26cacSmrg		;;
100525dbecb6Smrg	we32k-unknown)
100625dbecb6Smrg		vendor=att
10076df26cacSmrg		;;
100825dbecb6Smrg	cydra-unknown)
100925dbecb6Smrg		vendor=cydrome
10106df26cacSmrg		;;
101125dbecb6Smrg	i370-ibm*)
101225dbecb6Smrg		vendor=ibm
10136df26cacSmrg		;;
101425dbecb6Smrg	orion-unknown)
101525dbecb6Smrg		vendor=highlevel
10166df26cacSmrg		;;
101725dbecb6Smrg	xps-unknown | xps100-unknown)
101825dbecb6Smrg		cpu=xps100
101925dbecb6Smrg		vendor=honeywell
10206df26cacSmrg		;;
102125dbecb6Smrg
102225dbecb6Smrg	# Here we normalize CPU types with a missing or matching vendor
102325dbecb6Smrg	armh-unknown | armh-alt)
102425dbecb6Smrg		cpu=armv7l
102525dbecb6Smrg		vendor=alt
102625dbecb6Smrg		basic_os=${basic_os:-linux-gnueabihf}
10276df26cacSmrg		;;
102825dbecb6Smrg	dpx20-unknown | dpx20-bull)
102925dbecb6Smrg		cpu=rs6000
103025dbecb6Smrg		vendor=bull
103125dbecb6Smrg		basic_os=${basic_os:-bosx}
103234a0776dSmrg		;;
103325dbecb6Smrg
103425dbecb6Smrg	# Here we normalize CPU types irrespective of the vendor
103525dbecb6Smrg	amd64-*)
103625dbecb6Smrg		cpu=x86_64
103734a0776dSmrg		;;
103825dbecb6Smrg	blackfin-*)
103925dbecb6Smrg		cpu=bfin
104025dbecb6Smrg		basic_os=linux
104134a0776dSmrg		;;
104225dbecb6Smrg	c54x-*)
104325dbecb6Smrg		cpu=tic54x
1044b68e1f86Smrg		;;
104525dbecb6Smrg	c55x-*)
104625dbecb6Smrg		cpu=tic55x
10476df26cacSmrg		;;
104825dbecb6Smrg	c6x-*)
104925dbecb6Smrg		cpu=tic6x
10506df26cacSmrg		;;
105125dbecb6Smrg	e500v[12]-*)
105225dbecb6Smrg		cpu=powerpc
105325dbecb6Smrg		basic_os=${basic_os}"spe"
10546df26cacSmrg		;;
105525dbecb6Smrg	mips3*-*)
105625dbecb6Smrg		cpu=mips64
10576df26cacSmrg		;;
105825dbecb6Smrg	ms1-*)
105925dbecb6Smrg		cpu=mt
10606df26cacSmrg		;;
106125dbecb6Smrg	m68knommu-*)
106225dbecb6Smrg		cpu=m68k
106325dbecb6Smrg		basic_os=linux
10646df26cacSmrg		;;
106525dbecb6Smrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
106625dbecb6Smrg		cpu=s12z
10676df26cacSmrg		;;
106825dbecb6Smrg	openrisc-*)
106925dbecb6Smrg		cpu=or32
10706df26cacSmrg		;;
107125dbecb6Smrg	parisc-*)
107225dbecb6Smrg		cpu=hppa
107325dbecb6Smrg		basic_os=linux
10746df26cacSmrg		;;
107525dbecb6Smrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
107625dbecb6Smrg		cpu=i586
10776df26cacSmrg		;;
107825dbecb6Smrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
107925dbecb6Smrg		cpu=i686
10806df26cacSmrg		;;
108125dbecb6Smrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
108225dbecb6Smrg		cpu=i686
10836df26cacSmrg		;;
108425dbecb6Smrg	pentium4-*)
108525dbecb6Smrg		cpu=i786
10866df26cacSmrg		;;
108725dbecb6Smrg	pc98-*)
108825dbecb6Smrg		cpu=i386
10896df26cacSmrg		;;
109025dbecb6Smrg	ppc-* | ppcbe-*)
109125dbecb6Smrg		cpu=powerpc
10926df26cacSmrg		;;
109325dbecb6Smrg	ppcle-* | powerpclittle-*)
109425dbecb6Smrg		cpu=powerpcle
10956df26cacSmrg		;;
109625dbecb6Smrg	ppc64-*)
109725dbecb6Smrg		cpu=powerpc64
10986df26cacSmrg		;;
109925dbecb6Smrg	ppc64le-* | powerpc64little-*)
110025dbecb6Smrg		cpu=powerpc64le
11016df26cacSmrg		;;
110225dbecb6Smrg	sb1-*)
110325dbecb6Smrg		cpu=mipsisa64sb1
11046df26cacSmrg		;;
110525dbecb6Smrg	sb1el-*)
110625dbecb6Smrg		cpu=mipsisa64sb1el
11076df26cacSmrg		;;
110825dbecb6Smrg	sh5e[lb]-*)
110925dbecb6Smrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
11106df26cacSmrg		;;
111125dbecb6Smrg	spur-*)
111225dbecb6Smrg		cpu=spur
11136df26cacSmrg		;;
111425dbecb6Smrg	strongarm-* | thumb-*)
111525dbecb6Smrg		cpu=arm
11166df26cacSmrg		;;
111725dbecb6Smrg	tx39-*)
111825dbecb6Smrg		cpu=mipstx39
11196df26cacSmrg		;;
112025dbecb6Smrg	tx39el-*)
112125dbecb6Smrg		cpu=mipstx39el
11226df26cacSmrg		;;
112325dbecb6Smrg	x64-*)
112425dbecb6Smrg		cpu=x86_64
11256df26cacSmrg		;;
112625dbecb6Smrg	xscale-* | xscalee[bl]-*)
112725dbecb6Smrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
11286df26cacSmrg		;;
112925dbecb6Smrg	arm64-* | aarch64le-*)
113025dbecb6Smrg		cpu=aarch64
11316df26cacSmrg		;;
113225dbecb6Smrg
113325dbecb6Smrg	# Recognize the canonical CPU Types that limit and/or modify the
113425dbecb6Smrg	# company names they are paired with.
113525dbecb6Smrg	cr16-*)
113625dbecb6Smrg		basic_os=${basic_os:-elf}
11376df26cacSmrg		;;
113825dbecb6Smrg	crisv32-* | etraxfs*-*)
113925dbecb6Smrg		cpu=crisv32
114025dbecb6Smrg		vendor=axis
11416df26cacSmrg		;;
114225dbecb6Smrg	cris-* | etrax*-*)
114325dbecb6Smrg		cpu=cris
114425dbecb6Smrg		vendor=axis
11456df26cacSmrg		;;
114625dbecb6Smrg	crx-*)
114725dbecb6Smrg		basic_os=${basic_os:-elf}
11486df26cacSmrg		;;
114925dbecb6Smrg	neo-tandem)
115025dbecb6Smrg		cpu=neo
115125dbecb6Smrg		vendor=tandem
11526df26cacSmrg		;;
115325dbecb6Smrg	nse-tandem)
115425dbecb6Smrg		cpu=nse
115525dbecb6Smrg		vendor=tandem
11566df26cacSmrg		;;
115725dbecb6Smrg	nsr-tandem)
115825dbecb6Smrg		cpu=nsr
115925dbecb6Smrg		vendor=tandem
11606df26cacSmrg		;;
116125dbecb6Smrg	nsv-tandem)
116225dbecb6Smrg		cpu=nsv
116325dbecb6Smrg		vendor=tandem
11646df26cacSmrg		;;
116525dbecb6Smrg	nsx-tandem)
116625dbecb6Smrg		cpu=nsx
116725dbecb6Smrg		vendor=tandem
11686df26cacSmrg		;;
116925dbecb6Smrg	mipsallegrexel-sony)
117025dbecb6Smrg		cpu=mipsallegrexel
117125dbecb6Smrg		vendor=sony
11726df26cacSmrg		;;
117325dbecb6Smrg	tile*-*)
117425dbecb6Smrg		basic_os=${basic_os:-linux-gnu}
11756df26cacSmrg		;;
117625dbecb6Smrg
11776df26cacSmrg	*)
117825dbecb6Smrg		# Recognize the canonical CPU types that are allowed with any
117925dbecb6Smrg		# company name.
118025dbecb6Smrg		case $cpu in
118125dbecb6Smrg			1750a | 580 \
118225dbecb6Smrg			| a29k \
118325dbecb6Smrg			| aarch64 | aarch64_be \
118425dbecb6Smrg			| abacus \
118525dbecb6Smrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
118625dbecb6Smrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
118725dbecb6Smrg			| alphapca5[67] | alpha64pca5[67] \
118825dbecb6Smrg			| am33_2.0 \
118925dbecb6Smrg			| amdgcn \
119025dbecb6Smrg			| arc | arceb | arc32 | arc64 \
119125dbecb6Smrg			| arm | arm[lb]e | arme[lb] | armv* \
119225dbecb6Smrg			| avr | avr32 \
119325dbecb6Smrg			| asmjs \
119425dbecb6Smrg			| ba \
119525dbecb6Smrg			| be32 | be64 \
119625dbecb6Smrg			| bfin | bpf | bs2000 \
119725dbecb6Smrg			| c[123]* | c30 | [cjt]90 | c4x \
119825dbecb6Smrg			| c8051 | clipper | craynv | csky | cydra \
119925dbecb6Smrg			| d10v | d30v | dlx | dsp16xx \
120025dbecb6Smrg			| e2k | elxsi | epiphany \
120125dbecb6Smrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
120225dbecb6Smrg			| h8300 | h8500 \
120325dbecb6Smrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
120425dbecb6Smrg			| hexagon \
120525dbecb6Smrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
120625dbecb6Smrg			| ip2k | iq2000 \
120725dbecb6Smrg			| k1om \
120825dbecb6Smrg			| le32 | le64 \
120925dbecb6Smrg			| lm32 \
121025dbecb6Smrg			| loongarch32 | loongarch64 | loongarchx32 \
121125dbecb6Smrg			| m32c | m32r | m32rle \
121225dbecb6Smrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
121325dbecb6Smrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
121425dbecb6Smrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
121525dbecb6Smrg			| microblaze | microblazeel \
121625dbecb6Smrg			| mips | mipsbe | mipseb | mipsel | mipsle \
121725dbecb6Smrg			| mips16 \
121825dbecb6Smrg			| mips64 | mips64eb | mips64el \
121925dbecb6Smrg			| mips64octeon | mips64octeonel \
122025dbecb6Smrg			| mips64orion | mips64orionel \
122125dbecb6Smrg			| mips64r5900 | mips64r5900el \
122225dbecb6Smrg			| mips64vr | mips64vrel \
122325dbecb6Smrg			| mips64vr4100 | mips64vr4100el \
122425dbecb6Smrg			| mips64vr4300 | mips64vr4300el \
122525dbecb6Smrg			| mips64vr5000 | mips64vr5000el \
122625dbecb6Smrg			| mips64vr5900 | mips64vr5900el \
122725dbecb6Smrg			| mipsisa32 | mipsisa32el \
122825dbecb6Smrg			| mipsisa32r2 | mipsisa32r2el \
122925dbecb6Smrg			| mipsisa32r3 | mipsisa32r3el \
123025dbecb6Smrg			| mipsisa32r5 | mipsisa32r5el \
123125dbecb6Smrg			| mipsisa32r6 | mipsisa32r6el \
123225dbecb6Smrg			| mipsisa64 | mipsisa64el \
123325dbecb6Smrg			| mipsisa64r2 | mipsisa64r2el \
123425dbecb6Smrg			| mipsisa64r3 | mipsisa64r3el \
123525dbecb6Smrg			| mipsisa64r5 | mipsisa64r5el \
123625dbecb6Smrg			| mipsisa64r6 | mipsisa64r6el \
123725dbecb6Smrg			| mipsisa64sb1 | mipsisa64sb1el \
123825dbecb6Smrg			| mipsisa64sr71k | mipsisa64sr71kel \
123925dbecb6Smrg			| mipsr5900 | mipsr5900el \
124025dbecb6Smrg			| mipstx39 | mipstx39el \
124125dbecb6Smrg			| mmix \
124225dbecb6Smrg			| mn10200 | mn10300 \
124325dbecb6Smrg			| moxie \
124425dbecb6Smrg			| mt \
124525dbecb6Smrg			| msp430 \
124625dbecb6Smrg			| nds32 | nds32le | nds32be \
124725dbecb6Smrg			| nfp \
124825dbecb6Smrg			| nios | nios2 | nios2eb | nios2el \
124925dbecb6Smrg			| none | np1 | ns16k | ns32k | nvptx \
125025dbecb6Smrg			| open8 \
125125dbecb6Smrg			| or1k* \
125225dbecb6Smrg			| or32 \
125325dbecb6Smrg			| orion \
125425dbecb6Smrg			| picochip \
125525dbecb6Smrg			| pdp10 | pdp11 | pj | pjl | pn | power \
125625dbecb6Smrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
125725dbecb6Smrg			| pru \
125825dbecb6Smrg			| pyramid \
125925dbecb6Smrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
126025dbecb6Smrg			| rl78 | romp | rs6000 | rx \
126125dbecb6Smrg			| s390 | s390x \
126225dbecb6Smrg			| score \
126325dbecb6Smrg			| sh | shl \
126425dbecb6Smrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
126525dbecb6Smrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
126625dbecb6Smrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
126725dbecb6Smrg			| sparclite \
126825dbecb6Smrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
126925dbecb6Smrg			| spu \
127025dbecb6Smrg			| tahoe \
127125dbecb6Smrg			| thumbv7* \
127225dbecb6Smrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
127325dbecb6Smrg			| tron \
127425dbecb6Smrg			| ubicom32 \
127525dbecb6Smrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
127625dbecb6Smrg			| vax \
127725dbecb6Smrg			| visium \
127825dbecb6Smrg			| w65 \
127925dbecb6Smrg			| wasm32 | wasm64 \
128025dbecb6Smrg			| we32k \
128125dbecb6Smrg			| x86 | x86_64 | xc16x | xgate | xps100 \
128225dbecb6Smrg			| xstormy16 | xtensa* \
128325dbecb6Smrg			| ymp \
128425dbecb6Smrg			| z8k | z80)
128525dbecb6Smrg				;;
128625dbecb6Smrg
128725dbecb6Smrg			*)
128825dbecb6Smrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
128925dbecb6Smrg				exit 1
129025dbecb6Smrg				;;
129125dbecb6Smrg		esac
12926df26cacSmrg		;;
12936df26cacSmrgesac
12946df26cacSmrg
12956df26cacSmrg# Here we canonicalize certain aliases for manufacturers.
129625dbecb6Smrgcase $vendor in
129725dbecb6Smrg	digital*)
129825dbecb6Smrg		vendor=dec
12996df26cacSmrg		;;
130025dbecb6Smrg	commodore*)
130125dbecb6Smrg		vendor=cbm
13026df26cacSmrg		;;
13036df26cacSmrg	*)
13046df26cacSmrg		;;
13056df26cacSmrgesac
13066df26cacSmrg
13076df26cacSmrg# Decode manufacturer-specific aliases for certain operating systems.
13086df26cacSmrg
130925dbecb6Smrgif test x$basic_os != x
13106df26cacSmrgthen
131125dbecb6Smrg
131225dbecb6Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
131325dbecb6Smrg# set os.
131425dbecb6Smrgcase $basic_os in
131525dbecb6Smrg	gnu/linux*)
131625dbecb6Smrg		kernel=linux
131725dbecb6Smrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
131825dbecb6Smrg		;;
131925dbecb6Smrg	os2-emx)
132025dbecb6Smrg		kernel=os2
132125dbecb6Smrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
132225dbecb6Smrg		;;
132325dbecb6Smrg	nto-qnx*)
132425dbecb6Smrg		kernel=nto
132525dbecb6Smrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
132625dbecb6Smrg		;;
132725dbecb6Smrg	*-*)
132825dbecb6Smrg		# shellcheck disable=SC2162
132925dbecb6Smrg		saved_IFS=$IFS
133025dbecb6Smrg		IFS="-" read kernel os <<EOF
133125dbecb6Smrg$basic_os
133225dbecb6SmrgEOF
133325dbecb6Smrg		IFS=$saved_IFS
133425dbecb6Smrg		;;
133525dbecb6Smrg	# Default OS when just kernel was specified
133625dbecb6Smrg	nto*)
133725dbecb6Smrg		kernel=nto
133825dbecb6Smrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
133925dbecb6Smrg		;;
134025dbecb6Smrg	linux*)
134125dbecb6Smrg		kernel=linux
134225dbecb6Smrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
134325dbecb6Smrg		;;
134425dbecb6Smrg	*)
134525dbecb6Smrg		kernel=
134625dbecb6Smrg		os=$basic_os
134725dbecb6Smrg		;;
134825dbecb6Smrgesac
134925dbecb6Smrg
135025dbecb6Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
135125dbecb6Smrg# etc.)
13526df26cacSmrgcase $os in
135325dbecb6Smrg	# First match some system type aliases that might get confused
135425dbecb6Smrg	# with valid system types.
135525dbecb6Smrg	# solaris* is a basic system type, with this one exception.
135625dbecb6Smrg	auroraux)
135725dbecb6Smrg		os=auroraux
13586df26cacSmrg		;;
135925dbecb6Smrg	bluegene*)
136025dbecb6Smrg		os=cnk
13616df26cacSmrg		;;
136225dbecb6Smrg	solaris1 | solaris1.*)
136325dbecb6Smrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
13646df26cacSmrg		;;
136525dbecb6Smrg	solaris)
136625dbecb6Smrg		os=solaris2
13676df26cacSmrg		;;
136825dbecb6Smrg	unixware*)
136925dbecb6Smrg		os=sysv4.2uw
13706df26cacSmrg		;;
137125dbecb6Smrg	# es1800 is here to avoid being matched by es* (a different OS)
137225dbecb6Smrg	es1800*)
137325dbecb6Smrg		os=ose
13746df26cacSmrg		;;
137525dbecb6Smrg	# Some version numbers need modification
137625dbecb6Smrg	chorusos*)
137725dbecb6Smrg		os=chorusos
13786df26cacSmrg		;;
137925dbecb6Smrg	isc)
138025dbecb6Smrg		os=isc2.2
13816df26cacSmrg		;;
138225dbecb6Smrg	sco6)
138325dbecb6Smrg		os=sco5v6
13846df26cacSmrg		;;
138525dbecb6Smrg	sco5)
138625dbecb6Smrg		os=sco3.2v5
13876df26cacSmrg		;;
138825dbecb6Smrg	sco4)
138925dbecb6Smrg		os=sco3.2v4
13906df26cacSmrg		;;
139125dbecb6Smrg	sco3.2.[4-9]*)
139225dbecb6Smrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
13936df26cacSmrg		;;
139425dbecb6Smrg	sco*v* | scout)
139525dbecb6Smrg		# Don't match below
13966df26cacSmrg		;;
139725dbecb6Smrg	sco*)
139825dbecb6Smrg		os=sco3.2v2
13996df26cacSmrg		;;
140025dbecb6Smrg	psos*)
140125dbecb6Smrg		os=psos
14026df26cacSmrg		;;
140325dbecb6Smrg	qnx*)
140425dbecb6Smrg		os=qnx
14056df26cacSmrg		;;
140625dbecb6Smrg	hiux*)
140725dbecb6Smrg		os=hiuxwe2
14086df26cacSmrg		;;
140925dbecb6Smrg	lynx*178)
141025dbecb6Smrg		os=lynxos178
14116df26cacSmrg		;;
141225dbecb6Smrg	lynx*5)
141325dbecb6Smrg		os=lynxos5
14146df26cacSmrg		;;
141525dbecb6Smrg	lynxos*)
141625dbecb6Smrg		# don't get caught up in next wildcard
14176df26cacSmrg		;;
141825dbecb6Smrg	lynx*)
141925dbecb6Smrg		os=lynxos
14206df26cacSmrg		;;
142125dbecb6Smrg	mac[0-9]*)
142225dbecb6Smrg		os=`echo "$os" | sed -e 's|mac|macos|'`
14236df26cacSmrg		;;
142425dbecb6Smrg	opened*)
142525dbecb6Smrg		os=openedition
14266df26cacSmrg		;;
142725dbecb6Smrg	os400*)
142825dbecb6Smrg		os=os400
14296df26cacSmrg		;;
143025dbecb6Smrg	sunos5*)
143125dbecb6Smrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
14326df26cacSmrg		;;
143325dbecb6Smrg	sunos6*)
143425dbecb6Smrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
14356df26cacSmrg		;;
143625dbecb6Smrg	wince*)
143725dbecb6Smrg		os=wince
14386df26cacSmrg		;;
143925dbecb6Smrg	utek*)
144025dbecb6Smrg		os=bsd
14416df26cacSmrg		;;
144225dbecb6Smrg	dynix*)
144325dbecb6Smrg		os=bsd
14446df26cacSmrg		;;
144525dbecb6Smrg	acis*)
144625dbecb6Smrg		os=aos
144725dbecb6Smrg		;;
144825dbecb6Smrg	atheos*)
144925dbecb6Smrg		os=atheos
14506df26cacSmrg		;;
145125dbecb6Smrg	syllable*)
145225dbecb6Smrg		os=syllable
14536df26cacSmrg		;;
145425dbecb6Smrg	386bsd)
145525dbecb6Smrg		os=bsd
14566df26cacSmrg		;;
145725dbecb6Smrg	ctix* | uts*)
145825dbecb6Smrg		os=sysv
14596df26cacSmrg		;;
146025dbecb6Smrg	nova*)
146125dbecb6Smrg		os=rtmk-nova
14626df26cacSmrg		;;
146325dbecb6Smrg	ns2)
146425dbecb6Smrg		os=nextstep2
14656df26cacSmrg		;;
146625dbecb6Smrg	# Preserve the version number of sinix5.
146725dbecb6Smrg	sinix5.*)
146825dbecb6Smrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
14696df26cacSmrg		;;
147025dbecb6Smrg	sinix*)
147125dbecb6Smrg		os=sysv4
14726df26cacSmrg		;;
147325dbecb6Smrg	tpf*)
147425dbecb6Smrg		os=tpf
14756df26cacSmrg		;;
147625dbecb6Smrg	triton*)
147725dbecb6Smrg		os=sysv3
14786df26cacSmrg		;;
147925dbecb6Smrg	oss*)
148025dbecb6Smrg		os=sysv3
14816df26cacSmrg		;;
148225dbecb6Smrg	svr4*)
148325dbecb6Smrg		os=sysv4
14846df26cacSmrg		;;
148525dbecb6Smrg	svr3)
148625dbecb6Smrg		os=sysv3
14876df26cacSmrg		;;
148825dbecb6Smrg	sysvr4)
148925dbecb6Smrg		os=sysv4
14906df26cacSmrg		;;
149125dbecb6Smrg	ose*)
149225dbecb6Smrg		os=ose
14936df26cacSmrg		;;
149425dbecb6Smrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
149525dbecb6Smrg		os=mint
14966df26cacSmrg		;;
149725dbecb6Smrg	dicos*)
149825dbecb6Smrg		os=dicos
149925dbecb6Smrg		;;
150025dbecb6Smrg	pikeos*)
150125dbecb6Smrg		# Until real need of OS specific support for
150225dbecb6Smrg		# particular features comes up, bare metal
150325dbecb6Smrg		# configurations are quite functional.
150425dbecb6Smrg		case $cpu in
150525dbecb6Smrg		    arm*)
150625dbecb6Smrg			os=eabi
150725dbecb6Smrg			;;
150825dbecb6Smrg		    *)
150925dbecb6Smrg			os=elf
151025dbecb6Smrg			;;
151125dbecb6Smrg		esac
15126df26cacSmrg		;;
15136df26cacSmrg	*)
151425dbecb6Smrg		# No normalization, but not necessarily accepted, that comes below.
15156df26cacSmrg		;;
15166df26cacSmrgesac
151725dbecb6Smrg
15186df26cacSmrgelse
15196df26cacSmrg
15206df26cacSmrg# Here we handle the default operating systems that come with various machines.
15216df26cacSmrg# The value should be what the vendor currently ships out the door with their
15226df26cacSmrg# machine or put another way, the most popular os provided with the machine.
15236df26cacSmrg
15246df26cacSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
15256df26cacSmrg# "-sun"), then you have to tell the case statement up towards the top
15266df26cacSmrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
15276df26cacSmrg# will signal an error saying that MANUFACTURER isn't an operating
15286df26cacSmrg# system, and we'll never get to this point.
15296df26cacSmrg
153025dbecb6Smrgkernel=
153125dbecb6Smrgcase $cpu-$vendor in
153225dbecb6Smrg	score-*)
153325dbecb6Smrg		os=elf
15346df26cacSmrg		;;
153525dbecb6Smrg	spu-*)
153625dbecb6Smrg		os=elf
15376df26cacSmrg		;;
15386df26cacSmrg	*-acorn)
153925dbecb6Smrg		os=riscix1.2
15406df26cacSmrg		;;
15416df26cacSmrg	arm*-rebel)
154225dbecb6Smrg		kernel=linux
154325dbecb6Smrg		os=gnu
15446df26cacSmrg		;;
15456df26cacSmrg	arm*-semi)
154625dbecb6Smrg		os=aout
154725dbecb6Smrg		;;
154825dbecb6Smrg	c4x-* | tic4x-*)
154925dbecb6Smrg		os=coff
15506df26cacSmrg		;;
155125dbecb6Smrg	c8051-*)
155225dbecb6Smrg		os=elf
155325dbecb6Smrg		;;
155425dbecb6Smrg	clipper-intergraph)
155525dbecb6Smrg		os=clix
155625dbecb6Smrg		;;
155725dbecb6Smrg	hexagon-*)
155825dbecb6Smrg		os=elf
155925dbecb6Smrg		;;
156025dbecb6Smrg	tic54x-*)
156125dbecb6Smrg		os=coff
156225dbecb6Smrg		;;
156325dbecb6Smrg	tic55x-*)
156425dbecb6Smrg		os=coff
156525dbecb6Smrg		;;
156625dbecb6Smrg	tic6x-*)
156725dbecb6Smrg		os=coff
15686df26cacSmrg		;;
15696df26cacSmrg	# This must come before the *-dec entry.
15706df26cacSmrg	pdp10-*)
157125dbecb6Smrg		os=tops20
15726df26cacSmrg		;;
15736df26cacSmrg	pdp11-*)
157425dbecb6Smrg		os=none
15756df26cacSmrg		;;
15766df26cacSmrg	*-dec | vax-*)
157725dbecb6Smrg		os=ultrix4.2
15786df26cacSmrg		;;
15796df26cacSmrg	m68*-apollo)
158025dbecb6Smrg		os=domain
15816df26cacSmrg		;;
15826df26cacSmrg	i386-sun)
158325dbecb6Smrg		os=sunos4.0.2
15846df26cacSmrg		;;
15856df26cacSmrg	m68000-sun)
158625dbecb6Smrg		os=sunos3
15876df26cacSmrg		;;
15886df26cacSmrg	m68*-cisco)
158925dbecb6Smrg		os=aout
15906df26cacSmrg		;;
159125dbecb6Smrg	mep-*)
159225dbecb6Smrg		os=elf
159316fd1166Smrg		;;
15946df26cacSmrg	mips*-cisco)
159525dbecb6Smrg		os=elf
15966df26cacSmrg		;;
15976df26cacSmrg	mips*-*)
159825dbecb6Smrg		os=elf
15996df26cacSmrg		;;
16006df26cacSmrg	or32-*)
160125dbecb6Smrg		os=coff
16026df26cacSmrg		;;
16036df26cacSmrg	*-tti)	# must be before sparc entry or we get the wrong os.
160425dbecb6Smrg		os=sysv3
16056df26cacSmrg		;;
16066df26cacSmrg	sparc-* | *-sun)
160725dbecb6Smrg		os=sunos4.1.1
16086df26cacSmrg		;;
160925dbecb6Smrg	pru-*)
161025dbecb6Smrg		os=elf
16116df26cacSmrg		;;
161225dbecb6Smrg	*-be)
161325dbecb6Smrg		os=beos
16146df26cacSmrg		;;
16156df26cacSmrg	*-ibm)
161625dbecb6Smrg		os=aix
16176df26cacSmrg		;;
161825dbecb6Smrg	*-knuth)
161925dbecb6Smrg		os=mmixware
16206df26cacSmrg		;;
16216df26cacSmrg	*-wec)
162225dbecb6Smrg		os=proelf
16236df26cacSmrg		;;
16246df26cacSmrg	*-winbond)
162525dbecb6Smrg		os=proelf
16266df26cacSmrg		;;
16276df26cacSmrg	*-oki)
162825dbecb6Smrg		os=proelf
16296df26cacSmrg		;;
16306df26cacSmrg	*-hp)
163125dbecb6Smrg		os=hpux
16326df26cacSmrg		;;
16336df26cacSmrg	*-hitachi)
163425dbecb6Smrg		os=hiux
16356df26cacSmrg		;;
16366df26cacSmrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
163725dbecb6Smrg		os=sysv
16386df26cacSmrg		;;
16396df26cacSmrg	*-cbm)
164025dbecb6Smrg		os=amigaos
16416df26cacSmrg		;;
16426df26cacSmrg	*-dg)
164325dbecb6Smrg		os=dgux
16446df26cacSmrg		;;
16456df26cacSmrg	*-dolphin)
164625dbecb6Smrg		os=sysv3
16476df26cacSmrg		;;
16486df26cacSmrg	m68k-ccur)
164925dbecb6Smrg		os=rtu
16506df26cacSmrg		;;
16516df26cacSmrg	m88k-omron*)
165225dbecb6Smrg		os=luna
16536df26cacSmrg		;;
165425dbecb6Smrg	*-next)
165525dbecb6Smrg		os=nextstep
16566df26cacSmrg		;;
16576df26cacSmrg	*-sequent)
165825dbecb6Smrg		os=ptx
16596df26cacSmrg		;;
16606df26cacSmrg	*-crds)
166125dbecb6Smrg		os=unos
16626df26cacSmrg		;;
16636df26cacSmrg	*-ns)
166425dbecb6Smrg		os=genix
16656df26cacSmrg		;;
16666df26cacSmrg	i370-*)
166725dbecb6Smrg		os=mvs
16686df26cacSmrg		;;
16696df26cacSmrg	*-gould)
167025dbecb6Smrg		os=sysv
16716df26cacSmrg		;;
16726df26cacSmrg	*-highlevel)
167325dbecb6Smrg		os=bsd
16746df26cacSmrg		;;
16756df26cacSmrg	*-encore)
167625dbecb6Smrg		os=bsd
16776df26cacSmrg		;;
16786df26cacSmrg	*-sgi)
167925dbecb6Smrg		os=irix
16806df26cacSmrg		;;
16816df26cacSmrg	*-siemens)
168225dbecb6Smrg		os=sysv4
16836df26cacSmrg		;;
16846df26cacSmrg	*-masscomp)
168525dbecb6Smrg		os=rtu
16866df26cacSmrg		;;
16876df26cacSmrg	f30[01]-fujitsu | f700-fujitsu)
168825dbecb6Smrg		os=uxpv
16896df26cacSmrg		;;
16906df26cacSmrg	*-rom68k)
169125dbecb6Smrg		os=coff
16926df26cacSmrg		;;
16936df26cacSmrg	*-*bug)
169425dbecb6Smrg		os=coff
16956df26cacSmrg		;;
16966df26cacSmrg	*-apple)
169725dbecb6Smrg		os=macos
16986df26cacSmrg		;;
16996df26cacSmrg	*-atari*)
170025dbecb6Smrg		os=mint
170125dbecb6Smrg		;;
170225dbecb6Smrg	*-wrs)
170325dbecb6Smrg		os=vxworks
17046df26cacSmrg		;;
17056df26cacSmrg	*)
170625dbecb6Smrg		os=none
17076df26cacSmrg		;;
17086df26cacSmrgesac
170925dbecb6Smrg
17106df26cacSmrgfi
17116df26cacSmrg
171225dbecb6Smrg# Now, validate our (potentially fixed-up) OS.
171325dbecb6Smrgcase $os in
171425dbecb6Smrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
171525dbecb6Smrg	musl* | newlib* | relibc* | uclibc*)
171625dbecb6Smrg		;;
171725dbecb6Smrg	# Likewise for "kernel-abi"
171825dbecb6Smrg	eabi* | gnueabi*)
171925dbecb6Smrg		;;
172025dbecb6Smrg	# VxWorks passes extra cpu info in the 4th filed.
172125dbecb6Smrg	simlinux | simwindows | spe)
172225dbecb6Smrg		;;
172325dbecb6Smrg	# Now accept the basic system types.
172425dbecb6Smrg	# The portable systems comes first.
172525dbecb6Smrg	# Each alternative MUST end in a * to match a version number.
172625dbecb6Smrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
172725dbecb6Smrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
172825dbecb6Smrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
172925dbecb6Smrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
173025dbecb6Smrg	     | hiux* | abug | nacl* | netware* | windows* \
173125dbecb6Smrg	     | os9* | macos* | osx* | ios* \
173225dbecb6Smrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
173325dbecb6Smrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
173425dbecb6Smrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
173525dbecb6Smrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
173625dbecb6Smrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
173725dbecb6Smrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
173825dbecb6Smrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
173925dbecb6Smrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
174025dbecb6Smrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
174125dbecb6Smrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
174225dbecb6Smrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
174325dbecb6Smrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
174425dbecb6Smrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
174525dbecb6Smrg	     | midipix* | mingw32* | mingw64* | mint* \
174625dbecb6Smrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
174725dbecb6Smrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
174825dbecb6Smrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
174925dbecb6Smrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
175025dbecb6Smrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
175125dbecb6Smrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
175225dbecb6Smrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
175325dbecb6Smrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
175425dbecb6Smrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
175525dbecb6Smrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
175625dbecb6Smrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
175725dbecb6Smrg	     | fiwix* )
175825dbecb6Smrg		;;
175925dbecb6Smrg	# This one is extra strict with allowed versions
176025dbecb6Smrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
176125dbecb6Smrg		# Don't forget version if it is 3.2v4 or newer.
176225dbecb6Smrg		;;
176325dbecb6Smrg	none)
176425dbecb6Smrg		;;
176525dbecb6Smrg	*)
176625dbecb6Smrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
176725dbecb6Smrg		exit 1
176825dbecb6Smrg		;;
176925dbecb6Smrgesac
177025dbecb6Smrg
177125dbecb6Smrg# As a final step for OS-related things, validate the OS-kernel combination
177225dbecb6Smrg# (given a valid OS), if there is a kernel.
177325dbecb6Smrgcase $kernel-$os in
177425dbecb6Smrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
177525dbecb6Smrg		   | linux-musl* | linux-relibc* | linux-uclibc* )
177625dbecb6Smrg		;;
177725dbecb6Smrg	uclinux-uclibc* )
177825dbecb6Smrg		;;
177925dbecb6Smrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
178025dbecb6Smrg		# These are just libc implementations, not actual OSes, and thus
178125dbecb6Smrg		# require a kernel.
178225dbecb6Smrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
178325dbecb6Smrg		exit 1
178425dbecb6Smrg		;;
178525dbecb6Smrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
178625dbecb6Smrg		;;
178725dbecb6Smrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
178825dbecb6Smrg		;;
178925dbecb6Smrg	nto-qnx*)
179025dbecb6Smrg		;;
179125dbecb6Smrg	os2-emx)
179225dbecb6Smrg		;;
179325dbecb6Smrg	*-eabi* | *-gnueabi*)
179425dbecb6Smrg		;;
179525dbecb6Smrg	-*)
179625dbecb6Smrg		# Blank kernel with real OS is always fine.
179725dbecb6Smrg		;;
179825dbecb6Smrg	*-*)
179925dbecb6Smrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
180025dbecb6Smrg		exit 1
180125dbecb6Smrg		;;
180225dbecb6Smrgesac
180325dbecb6Smrg
18046df26cacSmrg# Here we handle the case where we know the os, and the CPU type, but not the
18056df26cacSmrg# manufacturer.  We pick the logical manufacturer.
180625dbecb6Smrgcase $vendor in
180725dbecb6Smrg	unknown)
180825dbecb6Smrg		case $cpu-$os in
180925dbecb6Smrg			*-riscix*)
18106df26cacSmrg				vendor=acorn
18116df26cacSmrg				;;
181225dbecb6Smrg			*-sunos*)
18136df26cacSmrg				vendor=sun
18146df26cacSmrg				;;
181525dbecb6Smrg			*-cnk* | *-aix*)
18166df26cacSmrg				vendor=ibm
18176df26cacSmrg				;;
181825dbecb6Smrg			*-beos*)
18196df26cacSmrg				vendor=be
18206df26cacSmrg				;;
182125dbecb6Smrg			*-hpux*)
18226df26cacSmrg				vendor=hp
18236df26cacSmrg				;;
182425dbecb6Smrg			*-mpeix*)
18256df26cacSmrg				vendor=hp
18266df26cacSmrg				;;
182725dbecb6Smrg			*-hiux*)
18286df26cacSmrg				vendor=hitachi
18296df26cacSmrg				;;
183025dbecb6Smrg			*-unos*)
18316df26cacSmrg				vendor=crds
18326df26cacSmrg				;;
183325dbecb6Smrg			*-dgux*)
18346df26cacSmrg				vendor=dg
18356df26cacSmrg				;;
183625dbecb6Smrg			*-luna*)
18376df26cacSmrg				vendor=omron
18386df26cacSmrg				;;
183925dbecb6Smrg			*-genix*)
18406df26cacSmrg				vendor=ns
18416df26cacSmrg				;;
184225dbecb6Smrg			*-clix*)
184325dbecb6Smrg				vendor=intergraph
184425dbecb6Smrg				;;
184525dbecb6Smrg			*-mvs* | *-opened*)
184625dbecb6Smrg				vendor=ibm
184725dbecb6Smrg				;;
184825dbecb6Smrg			*-os400*)
18496df26cacSmrg				vendor=ibm
18506df26cacSmrg				;;
185125dbecb6Smrg			s390-* | s390x-*)
18526df26cacSmrg				vendor=ibm
18536df26cacSmrg				;;
185425dbecb6Smrg			*-ptx*)
18556df26cacSmrg				vendor=sequent
18566df26cacSmrg				;;
185725dbecb6Smrg			*-tpf*)
18586df26cacSmrg				vendor=ibm
18596df26cacSmrg				;;
186025dbecb6Smrg			*-vxsim* | *-vxworks* | *-windiss*)
18616df26cacSmrg				vendor=wrs
18626df26cacSmrg				;;
186325dbecb6Smrg			*-aux*)
18646df26cacSmrg				vendor=apple
18656df26cacSmrg				;;
186625dbecb6Smrg			*-hms*)
18676df26cacSmrg				vendor=hitachi
18686df26cacSmrg				;;
186925dbecb6Smrg			*-mpw* | *-macos*)
18706df26cacSmrg				vendor=apple
18716df26cacSmrg				;;
187225dbecb6Smrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
18736df26cacSmrg				vendor=atari
18746df26cacSmrg				;;
187525dbecb6Smrg			*-vos*)
18766df26cacSmrg				vendor=stratus
18776df26cacSmrg				;;
18786df26cacSmrg		esac
18796df26cacSmrg		;;
18806df26cacSmrgesac
18816df26cacSmrg
188225dbecb6Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
18836df26cacSmrgexit
18846df26cacSmrg
18856df26cacSmrg# Local variables:
188625dbecb6Smrg# eval: (add-hook 'before-save-hook 'time-stamp)
18876df26cacSmrg# time-stamp-start: "timestamp='"
18886df26cacSmrg# time-stamp-format: "%:y-%02m-%02d"
18896df26cacSmrg# time-stamp-end: "'"
18906df26cacSmrg# End:
1891