18dd3e0eeSmrg#! /bin/sh
28dd3e0eeSmrg# Configuration validation subroutine script.
327485fbcSmrg#   Copyright 1992-2021 Free Software Foundation, Inc.
48dd3e0eeSmrg
527485fbcSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
627485fbcSmrg
727485fbcSmrgtimestamp='2021-08-14'
88dd3e0eeSmrg
9d5a688bcSmrg# This file is free software; you can redistribute it and/or modify it
10d5a688bcSmrg# under the terms of the GNU General Public License as published by
11d5a688bcSmrg# the Free Software Foundation; either version 3 of the License, or
128dd3e0eeSmrg# (at your option) any later version.
138dd3e0eeSmrg#
14d5a688bcSmrg# This program is distributed in the hope that it will be useful, but
15d5a688bcSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of
16d5a688bcSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17d5a688bcSmrg# General Public License for more details.
188dd3e0eeSmrg#
198dd3e0eeSmrg# You should have received a copy of the GNU General Public License
20c1d6e445Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
21329fdfe9Smrg#
228dd3e0eeSmrg# As a special exception to the GNU General Public License, if you
238dd3e0eeSmrg# distribute this file as part of a program that contains a
248dd3e0eeSmrg# configuration script generated by Autoconf, you may include it under
25d5a688bcSmrg# the same distribution terms that you use for the rest of that
26d5a688bcSmrg# program.  This Exception is an additional permission under section 7
27d5a688bcSmrg# of the GNU General Public License, version 3 ("GPLv3").
288dd3e0eeSmrg
29329fdfe9Smrg
30c1d6e445Smrg# Please send patches to <config-patches@gnu.org>.
318dd3e0eeSmrg#
328dd3e0eeSmrg# Configuration subroutine to validate and canonicalize a configuration type.
338dd3e0eeSmrg# Supply the specified configuration type as an argument.
348dd3e0eeSmrg# If it is invalid, we print an error message on stderr and exit with code 1.
358dd3e0eeSmrg# Otherwise, we print the canonical config type on stdout and succeed.
368dd3e0eeSmrg
37524e9589Smrg# You can get the latest version of this script from:
3827485fbcSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
39524e9589Smrg
408dd3e0eeSmrg# This file is supposed to be the same for all GNU packages
418dd3e0eeSmrg# and recognize all the CPU types, system types and aliases
428dd3e0eeSmrg# that are meaningful with *any* GNU software.
438dd3e0eeSmrg# Each package is responsible for reporting which valid configurations
448dd3e0eeSmrg# it does not support.  The user should be able to distinguish
458dd3e0eeSmrg# a failure to support a valid configuration from a meaningless
468dd3e0eeSmrg# configuration.
478dd3e0eeSmrg
488dd3e0eeSmrg# The goal of this file is to map all the various variations of a given
498dd3e0eeSmrg# machine specification into a single specification in the form:
508dd3e0eeSmrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
518dd3e0eeSmrg# or in some cases, the newer four-part form:
528dd3e0eeSmrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
538dd3e0eeSmrg# It is wrong to echo any other type of specification.
548dd3e0eeSmrg
5527485fbcSmrg# The "shellcheck disable" line above the timestamp inhibits complaints
5627485fbcSmrg# about features and limitations of the classic Bourne shell that were
5727485fbcSmrg# superseded or lifted in POSIX.  However, this script identifies a wide
5827485fbcSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
5927485fbcSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still
6027485fbcSmrg# have a pre-POSIX /bin/sh.
6127485fbcSmrg
628dd3e0eeSmrgme=`echo "$0" | sed -e 's,.*/,,'`
638dd3e0eeSmrg
648dd3e0eeSmrgusage="\
65c1d6e445SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
668dd3e0eeSmrg
678dd3e0eeSmrgCanonicalize a configuration name.
688dd3e0eeSmrg
69c1d6e445SmrgOptions:
708dd3e0eeSmrg  -h, --help         print this help, then exit
718dd3e0eeSmrg  -t, --time-stamp   print date of last modification, then exit
728dd3e0eeSmrg  -v, --version      print version number, then exit
738dd3e0eeSmrg
748dd3e0eeSmrgReport bugs and patches to <config-patches@gnu.org>."
758dd3e0eeSmrg
768dd3e0eeSmrgversion="\
778dd3e0eeSmrgGNU config.sub ($timestamp)
788dd3e0eeSmrg
7927485fbcSmrgCopyright 1992-2021 Free Software Foundation, Inc.
808dd3e0eeSmrg
818dd3e0eeSmrgThis is free software; see the source for copying conditions.  There is NO
828dd3e0eeSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
838dd3e0eeSmrg
848dd3e0eeSmrghelp="
858dd3e0eeSmrgTry \`$me --help' for more information."
868dd3e0eeSmrg
878dd3e0eeSmrg# Parse command line
888dd3e0eeSmrgwhile test $# -gt 0 ; do
898dd3e0eeSmrg  case $1 in
908dd3e0eeSmrg    --time-stamp | --time* | -t )
91329fdfe9Smrg       echo "$timestamp" ; exit ;;
928dd3e0eeSmrg    --version | -v )
93329fdfe9Smrg       echo "$version" ; exit ;;
948dd3e0eeSmrg    --help | --h* | -h )
95329fdfe9Smrg       echo "$usage"; exit ;;
968dd3e0eeSmrg    -- )     # Stop option processing
978dd3e0eeSmrg       shift; break ;;
988dd3e0eeSmrg    - )	# Use stdin as input.
998dd3e0eeSmrg       break ;;
1008dd3e0eeSmrg    -* )
10127485fbcSmrg       echo "$me: invalid option $1$help" >&2
1028dd3e0eeSmrg       exit 1 ;;
1038dd3e0eeSmrg
1048dd3e0eeSmrg    *local*)
1058dd3e0eeSmrg       # First pass through any local machine types.
106c1d6e445Smrg       echo "$1"
107329fdfe9Smrg       exit ;;
1088dd3e0eeSmrg
1098dd3e0eeSmrg    * )
1108dd3e0eeSmrg       break ;;
1118dd3e0eeSmrg  esac
1128dd3e0eeSmrgdone
1138dd3e0eeSmrg
1148dd3e0eeSmrgcase $# in
1158dd3e0eeSmrg 0) echo "$me: missing argument$help" >&2
1168dd3e0eeSmrg    exit 1;;
1178dd3e0eeSmrg 1) ;;
1188dd3e0eeSmrg *) echo "$me: too many arguments$help" >&2
1198dd3e0eeSmrg    exit 1;;
1208dd3e0eeSmrgesac
1218dd3e0eeSmrg
12227485fbcSmrg# Split fields of configuration type
12327485fbcSmrg# shellcheck disable=SC2162
12427485fbcSmrgsaved_IFS=$IFS
12527485fbcSmrgIFS="-" read field1 field2 field3 field4 <<EOF
12627485fbcSmrg$1
12727485fbcSmrgEOF
12827485fbcSmrgIFS=$saved_IFS
1298dd3e0eeSmrg
13027485fbcSmrg# Separate into logical components for further validation
13127485fbcSmrgcase $1 in
13227485fbcSmrg	*-*-*-*-*)
13327485fbcSmrg		echo Invalid configuration \`"$1"\': more than four components >&2
13427485fbcSmrg		exit 1
135d5a688bcSmrg		;;
13627485fbcSmrg	*-*-*-*)
13727485fbcSmrg		basic_machine=$field1-$field2
13827485fbcSmrg		basic_os=$field3-$field4
1398dd3e0eeSmrg		;;
14027485fbcSmrg	*-*-*)
14127485fbcSmrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
14227485fbcSmrg		# parts
14327485fbcSmrg		maybe_os=$field2-$field3
14427485fbcSmrg		case $maybe_os in
14527485fbcSmrg			nto-qnx* | linux-* | uclinux-uclibc* \
14627485fbcSmrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
14727485fbcSmrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
14827485fbcSmrg			| storm-chaos* | os2-emx* | rtmk-nova*)
14927485fbcSmrg				basic_machine=$field1
15027485fbcSmrg				basic_os=$maybe_os
15127485fbcSmrg				;;
15227485fbcSmrg			android-linux)
15327485fbcSmrg				basic_machine=$field1-unknown
15427485fbcSmrg				basic_os=linux-android
15527485fbcSmrg				;;
15627485fbcSmrg			*)
15727485fbcSmrg				basic_machine=$field1-$field2
15827485fbcSmrg				basic_os=$field3
15927485fbcSmrg				;;
16027485fbcSmrg		esac
1618dd3e0eeSmrg		;;
16227485fbcSmrg	*-*)
16327485fbcSmrg		# A lone config we happen to match not fitting any pattern
16427485fbcSmrg		case $field1-$field2 in
16527485fbcSmrg			decstation-3100)
16627485fbcSmrg				basic_machine=mips-dec
16727485fbcSmrg				basic_os=
16827485fbcSmrg				;;
16927485fbcSmrg			*-*)
17027485fbcSmrg				# Second component is usually, but not always the OS
17127485fbcSmrg				case $field2 in
17227485fbcSmrg					# Prevent following clause from handling this valid os
17327485fbcSmrg					sun*os*)
17427485fbcSmrg						basic_machine=$field1
17527485fbcSmrg						basic_os=$field2
17627485fbcSmrg						;;
17727485fbcSmrg					zephyr*)
17827485fbcSmrg						basic_machine=$field1-unknown
17927485fbcSmrg						basic_os=$field2
18027485fbcSmrg						;;
18127485fbcSmrg					# Manufacturers
18227485fbcSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
18327485fbcSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
18427485fbcSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
18527485fbcSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
18627485fbcSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
18727485fbcSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
18827485fbcSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
18927485fbcSmrg					| microblaze* | sim | cisco \
19027485fbcSmrg					| oki | wec | wrs | winbond)
19127485fbcSmrg						basic_machine=$field1-$field2
19227485fbcSmrg						basic_os=
19327485fbcSmrg						;;
19427485fbcSmrg					*)
19527485fbcSmrg						basic_machine=$field1
19627485fbcSmrg						basic_os=$field2
19727485fbcSmrg						;;
19827485fbcSmrg				esac
19927485fbcSmrg			;;
20027485fbcSmrg		esac
2018dd3e0eeSmrg		;;
20227485fbcSmrg	*)
20327485fbcSmrg		# Convert single-component short-hands not valid as part of
20427485fbcSmrg		# multi-component configurations.
20527485fbcSmrg		case $field1 in
20627485fbcSmrg			386bsd)
20727485fbcSmrg				basic_machine=i386-pc
20827485fbcSmrg				basic_os=bsd
20927485fbcSmrg				;;
21027485fbcSmrg			a29khif)
21127485fbcSmrg				basic_machine=a29k-amd
21227485fbcSmrg				basic_os=udi
21327485fbcSmrg				;;
21427485fbcSmrg			adobe68k)
21527485fbcSmrg				basic_machine=m68010-adobe
21627485fbcSmrg				basic_os=scout
21727485fbcSmrg				;;
21827485fbcSmrg			alliant)
21927485fbcSmrg				basic_machine=fx80-alliant
22027485fbcSmrg				basic_os=
22127485fbcSmrg				;;
22227485fbcSmrg			altos | altos3068)
22327485fbcSmrg				basic_machine=m68k-altos
22427485fbcSmrg				basic_os=
22527485fbcSmrg				;;
22627485fbcSmrg			am29k)
22727485fbcSmrg				basic_machine=a29k-none
22827485fbcSmrg				basic_os=bsd
22927485fbcSmrg				;;
23027485fbcSmrg			amdahl)
23127485fbcSmrg				basic_machine=580-amdahl
23227485fbcSmrg				basic_os=sysv
23327485fbcSmrg				;;
23427485fbcSmrg			amiga)
23527485fbcSmrg				basic_machine=m68k-unknown
23627485fbcSmrg				basic_os=
23727485fbcSmrg				;;
23827485fbcSmrg			amigaos | amigados)
23927485fbcSmrg				basic_machine=m68k-unknown
24027485fbcSmrg				basic_os=amigaos
24127485fbcSmrg				;;
24227485fbcSmrg			amigaunix | amix)
24327485fbcSmrg				basic_machine=m68k-unknown
24427485fbcSmrg				basic_os=sysv4
24527485fbcSmrg				;;
24627485fbcSmrg			apollo68)
24727485fbcSmrg				basic_machine=m68k-apollo
24827485fbcSmrg				basic_os=sysv
24927485fbcSmrg				;;
25027485fbcSmrg			apollo68bsd)
25127485fbcSmrg				basic_machine=m68k-apollo
25227485fbcSmrg				basic_os=bsd
25327485fbcSmrg				;;
25427485fbcSmrg			aros)
25527485fbcSmrg				basic_machine=i386-pc
25627485fbcSmrg				basic_os=aros
25727485fbcSmrg				;;
25827485fbcSmrg			aux)
25927485fbcSmrg				basic_machine=m68k-apple
26027485fbcSmrg				basic_os=aux
26127485fbcSmrg				;;
26227485fbcSmrg			balance)
26327485fbcSmrg				basic_machine=ns32k-sequent
26427485fbcSmrg				basic_os=dynix
26527485fbcSmrg				;;
26627485fbcSmrg			blackfin)
26727485fbcSmrg				basic_machine=bfin-unknown
26827485fbcSmrg				basic_os=linux
26927485fbcSmrg				;;
27027485fbcSmrg			cegcc)
27127485fbcSmrg				basic_machine=arm-unknown
27227485fbcSmrg				basic_os=cegcc
27327485fbcSmrg				;;
27427485fbcSmrg			convex-c1)
27527485fbcSmrg				basic_machine=c1-convex
27627485fbcSmrg				basic_os=bsd
27727485fbcSmrg				;;
27827485fbcSmrg			convex-c2)
27927485fbcSmrg				basic_machine=c2-convex
28027485fbcSmrg				basic_os=bsd
28127485fbcSmrg				;;
28227485fbcSmrg			convex-c32)
28327485fbcSmrg				basic_machine=c32-convex
28427485fbcSmrg				basic_os=bsd
28527485fbcSmrg				;;
28627485fbcSmrg			convex-c34)
28727485fbcSmrg				basic_machine=c34-convex
28827485fbcSmrg				basic_os=bsd
28927485fbcSmrg				;;
29027485fbcSmrg			convex-c38)
29127485fbcSmrg				basic_machine=c38-convex
29227485fbcSmrg				basic_os=bsd
29327485fbcSmrg				;;
29427485fbcSmrg			cray)
29527485fbcSmrg				basic_machine=j90-cray
29627485fbcSmrg				basic_os=unicos
29727485fbcSmrg				;;
29827485fbcSmrg			crds | unos)
29927485fbcSmrg				basic_machine=m68k-crds
30027485fbcSmrg				basic_os=
30127485fbcSmrg				;;
30227485fbcSmrg			da30)
30327485fbcSmrg				basic_machine=m68k-da30
30427485fbcSmrg				basic_os=
30527485fbcSmrg				;;
30627485fbcSmrg			decstation | pmax | pmin | dec3100 | decstatn)
30727485fbcSmrg				basic_machine=mips-dec
30827485fbcSmrg				basic_os=
30927485fbcSmrg				;;
31027485fbcSmrg			delta88)
31127485fbcSmrg				basic_machine=m88k-motorola
31227485fbcSmrg				basic_os=sysv3
31327485fbcSmrg				;;
31427485fbcSmrg			dicos)
31527485fbcSmrg				basic_machine=i686-pc
31627485fbcSmrg				basic_os=dicos
31727485fbcSmrg				;;
31827485fbcSmrg			djgpp)
31927485fbcSmrg				basic_machine=i586-pc
32027485fbcSmrg				basic_os=msdosdjgpp
32127485fbcSmrg				;;
32227485fbcSmrg			ebmon29k)
32327485fbcSmrg				basic_machine=a29k-amd
32427485fbcSmrg				basic_os=ebmon
32527485fbcSmrg				;;
32627485fbcSmrg			es1800 | OSE68k | ose68k | ose | OSE)
32727485fbcSmrg				basic_machine=m68k-ericsson
32827485fbcSmrg				basic_os=ose
32927485fbcSmrg				;;
33027485fbcSmrg			gmicro)
33127485fbcSmrg				basic_machine=tron-gmicro
33227485fbcSmrg				basic_os=sysv
33327485fbcSmrg				;;
33427485fbcSmrg			go32)
33527485fbcSmrg				basic_machine=i386-pc
33627485fbcSmrg				basic_os=go32
33727485fbcSmrg				;;
33827485fbcSmrg			h8300hms)
33927485fbcSmrg				basic_machine=h8300-hitachi
34027485fbcSmrg				basic_os=hms
34127485fbcSmrg				;;
34227485fbcSmrg			h8300xray)
34327485fbcSmrg				basic_machine=h8300-hitachi
34427485fbcSmrg				basic_os=xray
34527485fbcSmrg				;;
34627485fbcSmrg			h8500hms)
34727485fbcSmrg				basic_machine=h8500-hitachi
34827485fbcSmrg				basic_os=hms
34927485fbcSmrg				;;
35027485fbcSmrg			harris)
35127485fbcSmrg				basic_machine=m88k-harris
35227485fbcSmrg				basic_os=sysv3
35327485fbcSmrg				;;
35427485fbcSmrg			hp300 | hp300hpux)
35527485fbcSmrg				basic_machine=m68k-hp
35627485fbcSmrg				basic_os=hpux
35727485fbcSmrg				;;
35827485fbcSmrg			hp300bsd)
35927485fbcSmrg				basic_machine=m68k-hp
36027485fbcSmrg				basic_os=bsd
36127485fbcSmrg				;;
36227485fbcSmrg			hppaosf)
36327485fbcSmrg				basic_machine=hppa1.1-hp
36427485fbcSmrg				basic_os=osf
36527485fbcSmrg				;;
36627485fbcSmrg			hppro)
36727485fbcSmrg				basic_machine=hppa1.1-hp
36827485fbcSmrg				basic_os=proelf
36927485fbcSmrg				;;
37027485fbcSmrg			i386mach)
37127485fbcSmrg				basic_machine=i386-mach
37227485fbcSmrg				basic_os=mach
37327485fbcSmrg				;;
37427485fbcSmrg			isi68 | isi)
37527485fbcSmrg				basic_machine=m68k-isi
37627485fbcSmrg				basic_os=sysv
37727485fbcSmrg				;;
37827485fbcSmrg			m68knommu)
37927485fbcSmrg				basic_machine=m68k-unknown
38027485fbcSmrg				basic_os=linux
38127485fbcSmrg				;;
38227485fbcSmrg			magnum | m3230)
38327485fbcSmrg				basic_machine=mips-mips
38427485fbcSmrg				basic_os=sysv
38527485fbcSmrg				;;
38627485fbcSmrg			merlin)
38727485fbcSmrg				basic_machine=ns32k-utek
38827485fbcSmrg				basic_os=sysv
38927485fbcSmrg				;;
39027485fbcSmrg			mingw64)
39127485fbcSmrg				basic_machine=x86_64-pc
39227485fbcSmrg				basic_os=mingw64
39327485fbcSmrg				;;
39427485fbcSmrg			mingw32)
39527485fbcSmrg				basic_machine=i686-pc
39627485fbcSmrg				basic_os=mingw32
39727485fbcSmrg				;;
39827485fbcSmrg			mingw32ce)
39927485fbcSmrg				basic_machine=arm-unknown
40027485fbcSmrg				basic_os=mingw32ce
40127485fbcSmrg				;;
40227485fbcSmrg			monitor)
40327485fbcSmrg				basic_machine=m68k-rom68k
40427485fbcSmrg				basic_os=coff
40527485fbcSmrg				;;
40627485fbcSmrg			morphos)
40727485fbcSmrg				basic_machine=powerpc-unknown
40827485fbcSmrg				basic_os=morphos
40927485fbcSmrg				;;
41027485fbcSmrg			moxiebox)
41127485fbcSmrg				basic_machine=moxie-unknown
41227485fbcSmrg				basic_os=moxiebox
41327485fbcSmrg				;;
41427485fbcSmrg			msdos)
41527485fbcSmrg				basic_machine=i386-pc
41627485fbcSmrg				basic_os=msdos
41727485fbcSmrg				;;
41827485fbcSmrg			msys)
41927485fbcSmrg				basic_machine=i686-pc
42027485fbcSmrg				basic_os=msys
42127485fbcSmrg				;;
42227485fbcSmrg			mvs)
42327485fbcSmrg				basic_machine=i370-ibm
42427485fbcSmrg				basic_os=mvs
42527485fbcSmrg				;;
42627485fbcSmrg			nacl)
42727485fbcSmrg				basic_machine=le32-unknown
42827485fbcSmrg				basic_os=nacl
42927485fbcSmrg				;;
43027485fbcSmrg			ncr3000)
43127485fbcSmrg				basic_machine=i486-ncr
43227485fbcSmrg				basic_os=sysv4
43327485fbcSmrg				;;
43427485fbcSmrg			netbsd386)
43527485fbcSmrg				basic_machine=i386-pc
43627485fbcSmrg				basic_os=netbsd
43727485fbcSmrg				;;
43827485fbcSmrg			netwinder)
43927485fbcSmrg				basic_machine=armv4l-rebel
44027485fbcSmrg				basic_os=linux
44127485fbcSmrg				;;
44227485fbcSmrg			news | news700 | news800 | news900)
44327485fbcSmrg				basic_machine=m68k-sony
44427485fbcSmrg				basic_os=newsos
44527485fbcSmrg				;;
44627485fbcSmrg			news1000)
44727485fbcSmrg				basic_machine=m68030-sony
44827485fbcSmrg				basic_os=newsos
44927485fbcSmrg				;;
45027485fbcSmrg			necv70)
45127485fbcSmrg				basic_machine=v70-nec
45227485fbcSmrg				basic_os=sysv
45327485fbcSmrg				;;
45427485fbcSmrg			nh3000)
45527485fbcSmrg				basic_machine=m68k-harris
45627485fbcSmrg				basic_os=cxux
45727485fbcSmrg				;;
45827485fbcSmrg			nh[45]000)
45927485fbcSmrg				basic_machine=m88k-harris
46027485fbcSmrg				basic_os=cxux
46127485fbcSmrg				;;
46227485fbcSmrg			nindy960)
46327485fbcSmrg				basic_machine=i960-intel
46427485fbcSmrg				basic_os=nindy
46527485fbcSmrg				;;
46627485fbcSmrg			mon960)
46727485fbcSmrg				basic_machine=i960-intel
46827485fbcSmrg				basic_os=mon960
46927485fbcSmrg				;;
47027485fbcSmrg			nonstopux)
47127485fbcSmrg				basic_machine=mips-compaq
47227485fbcSmrg				basic_os=nonstopux
47327485fbcSmrg				;;
47427485fbcSmrg			os400)
47527485fbcSmrg				basic_machine=powerpc-ibm
47627485fbcSmrg				basic_os=os400
47727485fbcSmrg				;;
47827485fbcSmrg			OSE68000 | ose68000)
47927485fbcSmrg				basic_machine=m68000-ericsson
48027485fbcSmrg				basic_os=ose
48127485fbcSmrg				;;
48227485fbcSmrg			os68k)
48327485fbcSmrg				basic_machine=m68k-none
48427485fbcSmrg				basic_os=os68k
48527485fbcSmrg				;;
48627485fbcSmrg			paragon)
48727485fbcSmrg				basic_machine=i860-intel
48827485fbcSmrg				basic_os=osf
48927485fbcSmrg				;;
49027485fbcSmrg			parisc)
49127485fbcSmrg				basic_machine=hppa-unknown
49227485fbcSmrg				basic_os=linux
49327485fbcSmrg				;;
49427485fbcSmrg			psp)
49527485fbcSmrg				basic_machine=mipsallegrexel-sony
49627485fbcSmrg				basic_os=psp
49727485fbcSmrg				;;
49827485fbcSmrg			pw32)
49927485fbcSmrg				basic_machine=i586-unknown
50027485fbcSmrg				basic_os=pw32
50127485fbcSmrg				;;
50227485fbcSmrg			rdos | rdos64)
50327485fbcSmrg				basic_machine=x86_64-pc
50427485fbcSmrg				basic_os=rdos
50527485fbcSmrg				;;
50627485fbcSmrg			rdos32)
50727485fbcSmrg				basic_machine=i386-pc
50827485fbcSmrg				basic_os=rdos
50927485fbcSmrg				;;
51027485fbcSmrg			rom68k)
51127485fbcSmrg				basic_machine=m68k-rom68k
51227485fbcSmrg				basic_os=coff
51327485fbcSmrg				;;
51427485fbcSmrg			sa29200)
51527485fbcSmrg				basic_machine=a29k-amd
51627485fbcSmrg				basic_os=udi
51727485fbcSmrg				;;
51827485fbcSmrg			sei)
51927485fbcSmrg				basic_machine=mips-sei
52027485fbcSmrg				basic_os=seiux
52127485fbcSmrg				;;
52227485fbcSmrg			sequent)
52327485fbcSmrg				basic_machine=i386-sequent
52427485fbcSmrg				basic_os=
52527485fbcSmrg				;;
52627485fbcSmrg			sps7)
52727485fbcSmrg				basic_machine=m68k-bull
52827485fbcSmrg				basic_os=sysv2
52927485fbcSmrg				;;
53027485fbcSmrg			st2000)
53127485fbcSmrg				basic_machine=m68k-tandem
53227485fbcSmrg				basic_os=
53327485fbcSmrg				;;
53427485fbcSmrg			stratus)
53527485fbcSmrg				basic_machine=i860-stratus
53627485fbcSmrg				basic_os=sysv4
53727485fbcSmrg				;;
53827485fbcSmrg			sun2)
53927485fbcSmrg				basic_machine=m68000-sun
54027485fbcSmrg				basic_os=
54127485fbcSmrg				;;
54227485fbcSmrg			sun2os3)
54327485fbcSmrg				basic_machine=m68000-sun
54427485fbcSmrg				basic_os=sunos3
54527485fbcSmrg				;;
54627485fbcSmrg			sun2os4)
54727485fbcSmrg				basic_machine=m68000-sun
54827485fbcSmrg				basic_os=sunos4
54927485fbcSmrg				;;
55027485fbcSmrg			sun3)
55127485fbcSmrg				basic_machine=m68k-sun
55227485fbcSmrg				basic_os=
55327485fbcSmrg				;;
55427485fbcSmrg			sun3os3)
55527485fbcSmrg				basic_machine=m68k-sun
55627485fbcSmrg				basic_os=sunos3
55727485fbcSmrg				;;
55827485fbcSmrg			sun3os4)
55927485fbcSmrg				basic_machine=m68k-sun
56027485fbcSmrg				basic_os=sunos4
56127485fbcSmrg				;;
56227485fbcSmrg			sun4)
56327485fbcSmrg				basic_machine=sparc-sun
56427485fbcSmrg				basic_os=
56527485fbcSmrg				;;
56627485fbcSmrg			sun4os3)
56727485fbcSmrg				basic_machine=sparc-sun
56827485fbcSmrg				basic_os=sunos3
56927485fbcSmrg				;;
57027485fbcSmrg			sun4os4)
57127485fbcSmrg				basic_machine=sparc-sun
57227485fbcSmrg				basic_os=sunos4
57327485fbcSmrg				;;
57427485fbcSmrg			sun4sol2)
57527485fbcSmrg				basic_machine=sparc-sun
57627485fbcSmrg				basic_os=solaris2
57727485fbcSmrg				;;
57827485fbcSmrg			sun386 | sun386i | roadrunner)
57927485fbcSmrg				basic_machine=i386-sun
58027485fbcSmrg				basic_os=
58127485fbcSmrg				;;
58227485fbcSmrg			sv1)
58327485fbcSmrg				basic_machine=sv1-cray
58427485fbcSmrg				basic_os=unicos
58527485fbcSmrg				;;
58627485fbcSmrg			symmetry)
58727485fbcSmrg				basic_machine=i386-sequent
58827485fbcSmrg				basic_os=dynix
58927485fbcSmrg				;;
59027485fbcSmrg			t3e)
59127485fbcSmrg				basic_machine=alphaev5-cray
59227485fbcSmrg				basic_os=unicos
59327485fbcSmrg				;;
59427485fbcSmrg			t90)
59527485fbcSmrg				basic_machine=t90-cray
59627485fbcSmrg				basic_os=unicos
59727485fbcSmrg				;;
59827485fbcSmrg			toad1)
59927485fbcSmrg				basic_machine=pdp10-xkl
60027485fbcSmrg				basic_os=tops20
60127485fbcSmrg				;;
60227485fbcSmrg			tpf)
60327485fbcSmrg				basic_machine=s390x-ibm
60427485fbcSmrg				basic_os=tpf
60527485fbcSmrg				;;
60627485fbcSmrg			udi29k)
60727485fbcSmrg				basic_machine=a29k-amd
60827485fbcSmrg				basic_os=udi
60927485fbcSmrg				;;
61027485fbcSmrg			ultra3)
61127485fbcSmrg				basic_machine=a29k-nyu
61227485fbcSmrg				basic_os=sym1
61327485fbcSmrg				;;
61427485fbcSmrg			v810 | necv810)
61527485fbcSmrg				basic_machine=v810-nec
61627485fbcSmrg				basic_os=none
61727485fbcSmrg				;;
61827485fbcSmrg			vaxv)
61927485fbcSmrg				basic_machine=vax-dec
62027485fbcSmrg				basic_os=sysv
62127485fbcSmrg				;;
62227485fbcSmrg			vms)
62327485fbcSmrg				basic_machine=vax-dec
62427485fbcSmrg				basic_os=vms
62527485fbcSmrg				;;
62627485fbcSmrg			vsta)
62727485fbcSmrg				basic_machine=i386-pc
62827485fbcSmrg				basic_os=vsta
62927485fbcSmrg				;;
63027485fbcSmrg			vxworks960)
63127485fbcSmrg				basic_machine=i960-wrs
63227485fbcSmrg				basic_os=vxworks
63327485fbcSmrg				;;
63427485fbcSmrg			vxworks68)
63527485fbcSmrg				basic_machine=m68k-wrs
63627485fbcSmrg				basic_os=vxworks
63727485fbcSmrg				;;
63827485fbcSmrg			vxworks29k)
63927485fbcSmrg				basic_machine=a29k-wrs
64027485fbcSmrg				basic_os=vxworks
64127485fbcSmrg				;;
64227485fbcSmrg			xbox)
64327485fbcSmrg				basic_machine=i686-pc
64427485fbcSmrg				basic_os=mingw32
64527485fbcSmrg				;;
64627485fbcSmrg			ymp)
64727485fbcSmrg				basic_machine=ymp-cray
64827485fbcSmrg				basic_os=unicos
64927485fbcSmrg				;;
65027485fbcSmrg			*)
65127485fbcSmrg				basic_machine=$1
65227485fbcSmrg				basic_os=
65327485fbcSmrg				;;
65427485fbcSmrg		esac
6558dd3e0eeSmrg		;;
6568dd3e0eeSmrgesac
6578dd3e0eeSmrg
65827485fbcSmrg# Decode 1-component or ad-hoc basic machines
6598dd3e0eeSmrgcase $basic_machine in
66027485fbcSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
66127485fbcSmrg	# some cases the only manufacturer, in others, it is the most popular.
66227485fbcSmrg	w89k)
66327485fbcSmrg		cpu=hppa1.1
66427485fbcSmrg		vendor=winbond
665c1d6e445Smrg		;;
66627485fbcSmrg	op50n)
66727485fbcSmrg		cpu=hppa1.1
66827485fbcSmrg		vendor=oki
6698dd3e0eeSmrg		;;
67027485fbcSmrg	op60c)
67127485fbcSmrg		cpu=hppa1.1
67227485fbcSmrg		vendor=oki
6738dd3e0eeSmrg		;;
67427485fbcSmrg	ibm*)
67527485fbcSmrg		cpu=i370
67627485fbcSmrg		vendor=ibm
677329fdfe9Smrg		;;
67827485fbcSmrg	orion105)
67927485fbcSmrg		cpu=clipper
68027485fbcSmrg		vendor=highlevel
681d5a688bcSmrg		;;
68227485fbcSmrg	mac | mpw | mac-mpw)
68327485fbcSmrg		cpu=m68k
68427485fbcSmrg		vendor=apple
685d5a688bcSmrg		;;
68627485fbcSmrg	pmac | pmac-mpw)
68727485fbcSmrg		cpu=powerpc
68827485fbcSmrg		vendor=apple
689d5a688bcSmrg		;;
690d5a688bcSmrg
6918dd3e0eeSmrg	# Recognize the various machine names and aliases which stand
6928dd3e0eeSmrg	# for a CPU type and a company and sometimes even an OS.
6938dd3e0eeSmrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
69427485fbcSmrg		cpu=m68000
69527485fbcSmrg		vendor=att
6968dd3e0eeSmrg		;;
6978dd3e0eeSmrg	3b*)
69827485fbcSmrg		cpu=we32k
69927485fbcSmrg		vendor=att
700329fdfe9Smrg		;;
701524e9589Smrg	bluegene*)
70227485fbcSmrg		cpu=powerpc
70327485fbcSmrg		vendor=ibm
70427485fbcSmrg		basic_os=cnk
7058dd3e0eeSmrg		;;
7068dd3e0eeSmrg	decsystem10* | dec10*)
70727485fbcSmrg		cpu=pdp10
70827485fbcSmrg		vendor=dec
70927485fbcSmrg		basic_os=tops10
7108dd3e0eeSmrg		;;
7118dd3e0eeSmrg	decsystem20* | dec20*)
71227485fbcSmrg		cpu=pdp10
71327485fbcSmrg		vendor=dec
71427485fbcSmrg		basic_os=tops20
7158dd3e0eeSmrg		;;
7168dd3e0eeSmrg	delta | 3300 | motorola-3300 | motorola-delta \
7178dd3e0eeSmrg	      | 3300-motorola | delta-motorola)
71827485fbcSmrg		cpu=m68k
71927485fbcSmrg		vendor=motorola
7208dd3e0eeSmrg		;;
721c1d6e445Smrg	dpx2*)
72227485fbcSmrg		cpu=m68k
72327485fbcSmrg		vendor=bull
72427485fbcSmrg		basic_os=sysv3
7258dd3e0eeSmrg		;;
7268dd3e0eeSmrg	encore | umax | mmax)
72727485fbcSmrg		cpu=ns32k
72827485fbcSmrg		vendor=encore
7298dd3e0eeSmrg		;;
73027485fbcSmrg	elxsi)
73127485fbcSmrg		cpu=elxsi
73227485fbcSmrg		vendor=elxsi
73327485fbcSmrg		basic_os=${basic_os:-bsd}
7348dd3e0eeSmrg		;;
7358dd3e0eeSmrg	fx2800)
73627485fbcSmrg		cpu=i860
73727485fbcSmrg		vendor=alliant
7388dd3e0eeSmrg		;;
7398dd3e0eeSmrg	genix)
74027485fbcSmrg		cpu=ns32k
74127485fbcSmrg		vendor=ns
7428dd3e0eeSmrg		;;
7438dd3e0eeSmrg	h3050r* | hiux*)
74427485fbcSmrg		cpu=hppa1.1
74527485fbcSmrg		vendor=hitachi
74627485fbcSmrg		basic_os=hiuxwe2
7478dd3e0eeSmrg		;;
7488dd3e0eeSmrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
74927485fbcSmrg		cpu=hppa1.0
75027485fbcSmrg		vendor=hp
7518dd3e0eeSmrg		;;
7528dd3e0eeSmrg	hp9k2[0-9][0-9] | hp9k31[0-9])
75327485fbcSmrg		cpu=m68000
75427485fbcSmrg		vendor=hp
7558dd3e0eeSmrg		;;
7568dd3e0eeSmrg	hp9k3[2-9][0-9])
75727485fbcSmrg		cpu=m68k
75827485fbcSmrg		vendor=hp
7598dd3e0eeSmrg		;;
7608dd3e0eeSmrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
76127485fbcSmrg		cpu=hppa1.0
76227485fbcSmrg		vendor=hp
7638dd3e0eeSmrg		;;
7648dd3e0eeSmrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
76527485fbcSmrg		cpu=hppa1.1
76627485fbcSmrg		vendor=hp
7678dd3e0eeSmrg		;;
7688dd3e0eeSmrg	hp9k78[0-9] | hp78[0-9])
7698dd3e0eeSmrg		# FIXME: really hppa2.0-hp
77027485fbcSmrg		cpu=hppa1.1
77127485fbcSmrg		vendor=hp
7728dd3e0eeSmrg		;;
7738dd3e0eeSmrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
7748dd3e0eeSmrg		# FIXME: really hppa2.0-hp
77527485fbcSmrg		cpu=hppa1.1
77627485fbcSmrg		vendor=hp
7778dd3e0eeSmrg		;;
7788dd3e0eeSmrg	hp9k8[0-9][13679] | hp8[0-9][13679])
77927485fbcSmrg		cpu=hppa1.1
78027485fbcSmrg		vendor=hp
7818dd3e0eeSmrg		;;
7828dd3e0eeSmrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
78327485fbcSmrg		cpu=hppa1.0
78427485fbcSmrg		vendor=hp
7858dd3e0eeSmrg		;;
7868dd3e0eeSmrg	i*86v32)
78727485fbcSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
78827485fbcSmrg		vendor=pc
78927485fbcSmrg		basic_os=sysv32
7908dd3e0eeSmrg		;;
7918dd3e0eeSmrg	i*86v4*)
79227485fbcSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79327485fbcSmrg		vendor=pc
79427485fbcSmrg		basic_os=sysv4
7958dd3e0eeSmrg		;;
7968dd3e0eeSmrg	i*86v)
79727485fbcSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79827485fbcSmrg		vendor=pc
79927485fbcSmrg		basic_os=sysv
8008dd3e0eeSmrg		;;
8018dd3e0eeSmrg	i*86sol2)
80227485fbcSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
80327485fbcSmrg		vendor=pc
80427485fbcSmrg		basic_os=solaris2
8058dd3e0eeSmrg		;;
80627485fbcSmrg	j90 | j90-cray)
80727485fbcSmrg		cpu=j90
80827485fbcSmrg		vendor=cray
80927485fbcSmrg		basic_os=${basic_os:-unicos}
8108dd3e0eeSmrg		;;
8118dd3e0eeSmrg	iris | iris4d)
81227485fbcSmrg		cpu=mips
81327485fbcSmrg		vendor=sgi
81427485fbcSmrg		case $basic_os in
81527485fbcSmrg		    irix*)
8168dd3e0eeSmrg			;;
8178dd3e0eeSmrg		    *)
81827485fbcSmrg			basic_os=irix4
8198dd3e0eeSmrg			;;
8208dd3e0eeSmrg		esac
8218dd3e0eeSmrg		;;
8228dd3e0eeSmrg	miniframe)
82327485fbcSmrg		cpu=m68000
82427485fbcSmrg		vendor=convergent
8258dd3e0eeSmrg		;;
82627485fbcSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
82727485fbcSmrg		cpu=m68k
82827485fbcSmrg		vendor=atari
82927485fbcSmrg		basic_os=mint
8308dd3e0eeSmrg		;;
8318dd3e0eeSmrg	news-3600 | risc-news)
83227485fbcSmrg		cpu=mips
83327485fbcSmrg		vendor=sony
83427485fbcSmrg		basic_os=newsos
8358dd3e0eeSmrg		;;
836c1d6e445Smrg	next | m*-next)
83727485fbcSmrg		cpu=m68k
83827485fbcSmrg		vendor=next
83927485fbcSmrg		case $basic_os in
84027485fbcSmrg		    openstep*)
84127485fbcSmrg		        ;;
84227485fbcSmrg		    nextstep*)
8438dd3e0eeSmrg			;;
84427485fbcSmrg		    ns2*)
84527485fbcSmrg		      basic_os=nextstep2
8468dd3e0eeSmrg			;;
8478dd3e0eeSmrg		    *)
84827485fbcSmrg		      basic_os=nextstep3
8498dd3e0eeSmrg			;;
8508dd3e0eeSmrg		esac
8518dd3e0eeSmrg		;;
8528dd3e0eeSmrg	np1)
85327485fbcSmrg		cpu=np1
85427485fbcSmrg		vendor=gould
855c1d6e445Smrg		;;
8568dd3e0eeSmrg	op50n-* | op60c-*)
85727485fbcSmrg		cpu=hppa1.1
85827485fbcSmrg		vendor=oki
85927485fbcSmrg		basic_os=proelf
8608dd3e0eeSmrg		;;
8618dd3e0eeSmrg	pa-hitachi)
86227485fbcSmrg		cpu=hppa1.1
86327485fbcSmrg		vendor=hitachi
86427485fbcSmrg		basic_os=hiuxwe2
865329fdfe9Smrg		;;
8668dd3e0eeSmrg	pbd)
86727485fbcSmrg		cpu=sparc
86827485fbcSmrg		vendor=tti
8698dd3e0eeSmrg		;;
8708dd3e0eeSmrg	pbb)
87127485fbcSmrg		cpu=m68k
87227485fbcSmrg		vendor=tti
8738dd3e0eeSmrg		;;
87427485fbcSmrg	pc532)
87527485fbcSmrg		cpu=ns32k
87627485fbcSmrg		vendor=pc532
8778dd3e0eeSmrg		;;
8788dd3e0eeSmrg	pn)
87927485fbcSmrg		cpu=pn
88027485fbcSmrg		vendor=gould
8818dd3e0eeSmrg		;;
88227485fbcSmrg	power)
88327485fbcSmrg		cpu=power
88427485fbcSmrg		vendor=ibm
8858dd3e0eeSmrg		;;
88627485fbcSmrg	ps2)
88727485fbcSmrg		cpu=i386
88827485fbcSmrg		vendor=ibm
8898dd3e0eeSmrg		;;
89027485fbcSmrg	rm[46]00)
89127485fbcSmrg		cpu=mips
89227485fbcSmrg		vendor=siemens
8938dd3e0eeSmrg		;;
89427485fbcSmrg	rtpc | rtpc-*)
89527485fbcSmrg		cpu=romp
89627485fbcSmrg		vendor=ibm
8978dd3e0eeSmrg		;;
89827485fbcSmrg	sde)
89927485fbcSmrg		cpu=mipsisa32
90027485fbcSmrg		vendor=sde
90127485fbcSmrg		basic_os=${basic_os:-elf}
9028dd3e0eeSmrg		;;
90327485fbcSmrg	simso-wrs)
90427485fbcSmrg		cpu=sparclite
90527485fbcSmrg		vendor=wrs
90627485fbcSmrg		basic_os=vxworks
9078dd3e0eeSmrg		;;
90827485fbcSmrg	tower | tower-32)
90927485fbcSmrg		cpu=m68k
91027485fbcSmrg		vendor=ncr
9118dd3e0eeSmrg		;;
91227485fbcSmrg	vpp*|vx|vx-*)
91327485fbcSmrg		cpu=f301
91427485fbcSmrg		vendor=fujitsu
915d5a688bcSmrg		;;
91627485fbcSmrg	w65)
91727485fbcSmrg		cpu=w65
91827485fbcSmrg		vendor=wdc
919329fdfe9Smrg		;;
92027485fbcSmrg	w89k-*)
92127485fbcSmrg		cpu=hppa1.1
92227485fbcSmrg		vendor=winbond
92327485fbcSmrg		basic_os=proelf
9248dd3e0eeSmrg		;;
92527485fbcSmrg	none)
92627485fbcSmrg		cpu=none
92727485fbcSmrg		vendor=none
9288dd3e0eeSmrg		;;
92927485fbcSmrg	leon|leon[3-9])
93027485fbcSmrg		cpu=sparc
93127485fbcSmrg		vendor=$basic_machine
9328dd3e0eeSmrg		;;
93327485fbcSmrg	leon-*|leon[3-9]-*)
93427485fbcSmrg		cpu=sparc
93527485fbcSmrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
9368dd3e0eeSmrg		;;
93727485fbcSmrg
93827485fbcSmrg	*-*)
93927485fbcSmrg		# shellcheck disable=SC2162
94027485fbcSmrg		saved_IFS=$IFS
94127485fbcSmrg		IFS="-" read cpu vendor <<EOF
94227485fbcSmrg$basic_machine
94327485fbcSmrgEOF
94427485fbcSmrg		IFS=$saved_IFS
9458dd3e0eeSmrg		;;
94627485fbcSmrg	# We use `pc' rather than `unknown'
94727485fbcSmrg	# because (1) that's what they normally are, and
94827485fbcSmrg	# (2) the word "unknown" tends to confuse beginning users.
94927485fbcSmrg	i*86 | x86_64)
95027485fbcSmrg		cpu=$basic_machine
95127485fbcSmrg		vendor=pc
9528dd3e0eeSmrg		;;
95327485fbcSmrg	# These rules are duplicated from below for sake of the special case above;
95427485fbcSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
95527485fbcSmrg	pc98)
95627485fbcSmrg		cpu=i386
95727485fbcSmrg		vendor=pc
9588dd3e0eeSmrg		;;
95927485fbcSmrg	x64 | amd64)
96027485fbcSmrg		cpu=x86_64
96127485fbcSmrg		vendor=pc
9628dd3e0eeSmrg		;;
96327485fbcSmrg	# Recognize the basic CPU types without company name.
96427485fbcSmrg	*)
96527485fbcSmrg		cpu=$basic_machine
96627485fbcSmrg		vendor=unknown
967329fdfe9Smrg		;;
96827485fbcSmrgesac
96927485fbcSmrg
97027485fbcSmrgunset -v basic_machine
97127485fbcSmrg
97227485fbcSmrg# Decode basic machines in the full and proper CPU-Company form.
97327485fbcSmrgcase $cpu-$vendor in
97427485fbcSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
97527485fbcSmrg	# some cases the only manufacturer, in others, it is the most popular.
97627485fbcSmrg	craynv-unknown)
97727485fbcSmrg		vendor=cray
97827485fbcSmrg		basic_os=${basic_os:-unicosmp}
9798dd3e0eeSmrg		;;
98027485fbcSmrg	c90-unknown | c90-cray)
98127485fbcSmrg		vendor=cray
98227485fbcSmrg		basic_os=${Basic_os:-unicos}
9838dd3e0eeSmrg		;;
98427485fbcSmrg	fx80-unknown)
98527485fbcSmrg		vendor=alliant
986329fdfe9Smrg		;;
98727485fbcSmrg	romp-unknown)
98827485fbcSmrg		vendor=ibm
9898dd3e0eeSmrg		;;
99027485fbcSmrg	mmix-unknown)
99127485fbcSmrg		vendor=knuth
9928dd3e0eeSmrg		;;
99327485fbcSmrg	microblaze-unknown | microblazeel-unknown)
99427485fbcSmrg		vendor=xilinx
9958dd3e0eeSmrg		;;
99627485fbcSmrg	rs6000-unknown)
99727485fbcSmrg		vendor=ibm
9988dd3e0eeSmrg		;;
99927485fbcSmrg	vax-unknown)
100027485fbcSmrg		vendor=dec
10018dd3e0eeSmrg		;;
100227485fbcSmrg	pdp11-unknown)
100327485fbcSmrg		vendor=dec
1004d5a688bcSmrg		;;
100527485fbcSmrg	we32k-unknown)
100627485fbcSmrg		vendor=att
10078dd3e0eeSmrg		;;
100827485fbcSmrg	cydra-unknown)
100927485fbcSmrg		vendor=cydrome
10108dd3e0eeSmrg		;;
101127485fbcSmrg	i370-ibm*)
101227485fbcSmrg		vendor=ibm
10138dd3e0eeSmrg		;;
101427485fbcSmrg	orion-unknown)
101527485fbcSmrg		vendor=highlevel
10168dd3e0eeSmrg		;;
101727485fbcSmrg	xps-unknown | xps100-unknown)
101827485fbcSmrg		cpu=xps100
101927485fbcSmrg		vendor=honeywell
10208dd3e0eeSmrg		;;
102127485fbcSmrg
102227485fbcSmrg	# Here we normalize CPU types with a missing or matching vendor
102327485fbcSmrg	dpx20-unknown | dpx20-bull)
102427485fbcSmrg		cpu=rs6000
102527485fbcSmrg		vendor=bull
102627485fbcSmrg		basic_os=${basic_os:-bosx}
10278dd3e0eeSmrg		;;
102827485fbcSmrg
102927485fbcSmrg	# Here we normalize CPU types irrespective of the vendor
103027485fbcSmrg	amd64-*)
103127485fbcSmrg		cpu=x86_64
10328dd3e0eeSmrg		;;
103327485fbcSmrg	blackfin-*)
103427485fbcSmrg		cpu=bfin
103527485fbcSmrg		basic_os=linux
10368dd3e0eeSmrg		;;
103727485fbcSmrg	c54x-*)
103827485fbcSmrg		cpu=tic54x
10398dd3e0eeSmrg		;;
104027485fbcSmrg	c55x-*)
104127485fbcSmrg		cpu=tic55x
10428dd3e0eeSmrg		;;
104327485fbcSmrg	c6x-*)
104427485fbcSmrg		cpu=tic6x
10458dd3e0eeSmrg		;;
104627485fbcSmrg	e500v[12]-*)
104727485fbcSmrg		cpu=powerpc
104827485fbcSmrg		basic_os=${basic_os}"spe"
10498dd3e0eeSmrg		;;
105027485fbcSmrg	mips3*-*)
105127485fbcSmrg		cpu=mips64
10528dd3e0eeSmrg		;;
105327485fbcSmrg	ms1-*)
105427485fbcSmrg		cpu=mt
10558dd3e0eeSmrg		;;
105627485fbcSmrg	m68knommu-*)
105727485fbcSmrg		cpu=m68k
105827485fbcSmrg		basic_os=linux
10598dd3e0eeSmrg		;;
106027485fbcSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
106127485fbcSmrg		cpu=s12z
1062329fdfe9Smrg		;;
106327485fbcSmrg	openrisc-*)
106427485fbcSmrg		cpu=or32
10658dd3e0eeSmrg		;;
106627485fbcSmrg	parisc-*)
106727485fbcSmrg		cpu=hppa
106827485fbcSmrg		basic_os=linux
10698dd3e0eeSmrg		;;
107027485fbcSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
107127485fbcSmrg		cpu=i586
10728dd3e0eeSmrg		;;
107327485fbcSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
107427485fbcSmrg		cpu=i686
10758dd3e0eeSmrg		;;
107627485fbcSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
107727485fbcSmrg		cpu=i686
1078329fdfe9Smrg		;;
107927485fbcSmrg	pentium4-*)
108027485fbcSmrg		cpu=i786
10818dd3e0eeSmrg		;;
108227485fbcSmrg	pc98-*)
108327485fbcSmrg		cpu=i386
10848dd3e0eeSmrg		;;
108527485fbcSmrg	ppc-* | ppcbe-*)
108627485fbcSmrg		cpu=powerpc
10878dd3e0eeSmrg		;;
108827485fbcSmrg	ppcle-* | powerpclittle-*)
108927485fbcSmrg		cpu=powerpcle
10908dd3e0eeSmrg		;;
109127485fbcSmrg	ppc64-*)
109227485fbcSmrg		cpu=powerpc64
10938dd3e0eeSmrg		;;
109427485fbcSmrg	ppc64le-* | powerpc64little-*)
109527485fbcSmrg		cpu=powerpc64le
10968dd3e0eeSmrg		;;
109727485fbcSmrg	sb1-*)
109827485fbcSmrg		cpu=mipsisa64sb1
10998dd3e0eeSmrg		;;
110027485fbcSmrg	sb1el-*)
110127485fbcSmrg		cpu=mipsisa64sb1el
11028dd3e0eeSmrg		;;
110327485fbcSmrg	sh5e[lb]-*)
110427485fbcSmrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
11058dd3e0eeSmrg		;;
110627485fbcSmrg	spur-*)
110727485fbcSmrg		cpu=spur
11088dd3e0eeSmrg		;;
110927485fbcSmrg	strongarm-* | thumb-*)
111027485fbcSmrg		cpu=arm
11118dd3e0eeSmrg		;;
111227485fbcSmrg	tx39-*)
111327485fbcSmrg		cpu=mipstx39
1114c1d6e445Smrg		;;
111527485fbcSmrg	tx39el-*)
111627485fbcSmrg		cpu=mipstx39el
1117329fdfe9Smrg		;;
111827485fbcSmrg	x64-*)
111927485fbcSmrg		cpu=x86_64
11208dd3e0eeSmrg		;;
1121d5a688bcSmrg	xscale-* | xscalee[bl]-*)
112227485fbcSmrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
11238dd3e0eeSmrg		;;
112427485fbcSmrg	arm64-*)
112527485fbcSmrg		cpu=aarch64
11268dd3e0eeSmrg		;;
11278dd3e0eeSmrg
112827485fbcSmrg	# Recognize the canonical CPU Types that limit and/or modify the
112927485fbcSmrg	# company names they are paired with.
113027485fbcSmrg	cr16-*)
113127485fbcSmrg		basic_os=${basic_os:-elf}
1132329fdfe9Smrg		;;
113327485fbcSmrg	crisv32-* | etraxfs*-*)
113427485fbcSmrg		cpu=crisv32
113527485fbcSmrg		vendor=axis
11368dd3e0eeSmrg		;;
113727485fbcSmrg	cris-* | etrax*-*)
113827485fbcSmrg		cpu=cris
113927485fbcSmrg		vendor=axis
11408dd3e0eeSmrg		;;
114127485fbcSmrg	crx-*)
114227485fbcSmrg		basic_os=${basic_os:-elf}
11438dd3e0eeSmrg		;;
114427485fbcSmrg	neo-tandem)
114527485fbcSmrg		cpu=neo
114627485fbcSmrg		vendor=tandem
11478dd3e0eeSmrg		;;
114827485fbcSmrg	nse-tandem)
114927485fbcSmrg		cpu=nse
115027485fbcSmrg		vendor=tandem
11518dd3e0eeSmrg		;;
115227485fbcSmrg	nsr-tandem)
115327485fbcSmrg		cpu=nsr
115427485fbcSmrg		vendor=tandem
11558dd3e0eeSmrg		;;
115627485fbcSmrg	nsv-tandem)
115727485fbcSmrg		cpu=nsv
115827485fbcSmrg		vendor=tandem
11598dd3e0eeSmrg		;;
116027485fbcSmrg	nsx-tandem)
116127485fbcSmrg		cpu=nsx
116227485fbcSmrg		vendor=tandem
11638dd3e0eeSmrg		;;
116427485fbcSmrg	mipsallegrexel-sony)
116527485fbcSmrg		cpu=mipsallegrexel
116627485fbcSmrg		vendor=sony
11678dd3e0eeSmrg		;;
116827485fbcSmrg	tile*-*)
116927485fbcSmrg		basic_os=${basic_os:-linux-gnu}
11708dd3e0eeSmrg		;;
117127485fbcSmrg
11728dd3e0eeSmrg	*)
117327485fbcSmrg		# Recognize the canonical CPU types that are allowed with any
117427485fbcSmrg		# company name.
117527485fbcSmrg		case $cpu in
117627485fbcSmrg			1750a | 580 \
117727485fbcSmrg			| a29k \
117827485fbcSmrg			| aarch64 | aarch64_be \
117927485fbcSmrg			| abacus \
118027485fbcSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
118127485fbcSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
118227485fbcSmrg			| alphapca5[67] | alpha64pca5[67] \
118327485fbcSmrg			| am33_2.0 \
118427485fbcSmrg			| amdgcn \
118527485fbcSmrg			| arc | arceb | arc32 | arc64 \
118627485fbcSmrg			| arm | arm[lb]e | arme[lb] | armv* \
118727485fbcSmrg			| avr | avr32 \
118827485fbcSmrg			| asmjs \
118927485fbcSmrg			| ba \
119027485fbcSmrg			| be32 | be64 \
119127485fbcSmrg			| bfin | bpf | bs2000 \
119227485fbcSmrg			| c[123]* | c30 | [cjt]90 | c4x \
119327485fbcSmrg			| c8051 | clipper | craynv | csky | cydra \
119427485fbcSmrg			| d10v | d30v | dlx | dsp16xx \
119527485fbcSmrg			| e2k | elxsi | epiphany \
119627485fbcSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
119727485fbcSmrg			| h8300 | h8500 \
119827485fbcSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
119927485fbcSmrg			| hexagon \
120027485fbcSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
120127485fbcSmrg			| ip2k | iq2000 \
120227485fbcSmrg			| k1om \
120327485fbcSmrg			| le32 | le64 \
120427485fbcSmrg			| lm32 \
120527485fbcSmrg			| loongarch32 | loongarch64 | loongarchx32 \
120627485fbcSmrg			| m32c | m32r | m32rle \
120727485fbcSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
120827485fbcSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
120927485fbcSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
121027485fbcSmrg			| microblaze | microblazeel \
121127485fbcSmrg			| mips | mipsbe | mipseb | mipsel | mipsle \
121227485fbcSmrg			| mips16 \
121327485fbcSmrg			| mips64 | mips64eb | mips64el \
121427485fbcSmrg			| mips64octeon | mips64octeonel \
121527485fbcSmrg			| mips64orion | mips64orionel \
121627485fbcSmrg			| mips64r5900 | mips64r5900el \
121727485fbcSmrg			| mips64vr | mips64vrel \
121827485fbcSmrg			| mips64vr4100 | mips64vr4100el \
121927485fbcSmrg			| mips64vr4300 | mips64vr4300el \
122027485fbcSmrg			| mips64vr5000 | mips64vr5000el \
122127485fbcSmrg			| mips64vr5900 | mips64vr5900el \
122227485fbcSmrg			| mipsisa32 | mipsisa32el \
122327485fbcSmrg			| mipsisa32r2 | mipsisa32r2el \
122427485fbcSmrg			| mipsisa32r3 | mipsisa32r3el \
122527485fbcSmrg			| mipsisa32r5 | mipsisa32r5el \
122627485fbcSmrg			| mipsisa32r6 | mipsisa32r6el \
122727485fbcSmrg			| mipsisa64 | mipsisa64el \
122827485fbcSmrg			| mipsisa64r2 | mipsisa64r2el \
122927485fbcSmrg			| mipsisa64r3 | mipsisa64r3el \
123027485fbcSmrg			| mipsisa64r5 | mipsisa64r5el \
123127485fbcSmrg			| mipsisa64r6 | mipsisa64r6el \
123227485fbcSmrg			| mipsisa64sb1 | mipsisa64sb1el \
123327485fbcSmrg			| mipsisa64sr71k | mipsisa64sr71kel \
123427485fbcSmrg			| mipsr5900 | mipsr5900el \
123527485fbcSmrg			| mipstx39 | mipstx39el \
123627485fbcSmrg			| mmix \
123727485fbcSmrg			| mn10200 | mn10300 \
123827485fbcSmrg			| moxie \
123927485fbcSmrg			| mt \
124027485fbcSmrg			| msp430 \
124127485fbcSmrg			| nds32 | nds32le | nds32be \
124227485fbcSmrg			| nfp \
124327485fbcSmrg			| nios | nios2 | nios2eb | nios2el \
124427485fbcSmrg			| none | np1 | ns16k | ns32k | nvptx \
124527485fbcSmrg			| open8 \
124627485fbcSmrg			| or1k* \
124727485fbcSmrg			| or32 \
124827485fbcSmrg			| orion \
124927485fbcSmrg			| picochip \
125027485fbcSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
125127485fbcSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
125227485fbcSmrg			| pru \
125327485fbcSmrg			| pyramid \
125427485fbcSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
125527485fbcSmrg			| rl78 | romp | rs6000 | rx \
125627485fbcSmrg			| s390 | s390x \
125727485fbcSmrg			| score \
125827485fbcSmrg			| sh | shl \
125927485fbcSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
126027485fbcSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
126127485fbcSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
126227485fbcSmrg			| sparclite \
126327485fbcSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
126427485fbcSmrg			| spu \
126527485fbcSmrg			| tahoe \
126627485fbcSmrg			| thumbv7* \
126727485fbcSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
126827485fbcSmrg			| tron \
126927485fbcSmrg			| ubicom32 \
127027485fbcSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
127127485fbcSmrg			| vax \
127227485fbcSmrg			| visium \
127327485fbcSmrg			| w65 \
127427485fbcSmrg			| wasm32 | wasm64 \
127527485fbcSmrg			| we32k \
127627485fbcSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
127727485fbcSmrg			| xstormy16 | xtensa* \
127827485fbcSmrg			| ymp \
127927485fbcSmrg			| z8k | z80)
128027485fbcSmrg				;;
128127485fbcSmrg
128227485fbcSmrg			*)
128327485fbcSmrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
128427485fbcSmrg				exit 1
128527485fbcSmrg				;;
128627485fbcSmrg		esac
12878dd3e0eeSmrg		;;
12888dd3e0eeSmrgesac
12898dd3e0eeSmrg
12908dd3e0eeSmrg# Here we canonicalize certain aliases for manufacturers.
129127485fbcSmrgcase $vendor in
129227485fbcSmrg	digital*)
129327485fbcSmrg		vendor=dec
12948dd3e0eeSmrg		;;
129527485fbcSmrg	commodore*)
129627485fbcSmrg		vendor=cbm
12978dd3e0eeSmrg		;;
12988dd3e0eeSmrg	*)
12998dd3e0eeSmrg		;;
13008dd3e0eeSmrgesac
13018dd3e0eeSmrg
13028dd3e0eeSmrg# Decode manufacturer-specific aliases for certain operating systems.
13038dd3e0eeSmrg
130427485fbcSmrgif test x$basic_os != x
13058dd3e0eeSmrgthen
130627485fbcSmrg
130727485fbcSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
130827485fbcSmrg# set os.
130927485fbcSmrgcase $basic_os in
131027485fbcSmrg	gnu/linux*)
131127485fbcSmrg		kernel=linux
131227485fbcSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
131327485fbcSmrg		;;
131427485fbcSmrg	os2-emx)
131527485fbcSmrg		kernel=os2
131627485fbcSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
131727485fbcSmrg		;;
131827485fbcSmrg	nto-qnx*)
131927485fbcSmrg		kernel=nto
132027485fbcSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
132127485fbcSmrg		;;
132227485fbcSmrg	*-*)
132327485fbcSmrg		# shellcheck disable=SC2162
132427485fbcSmrg		saved_IFS=$IFS
132527485fbcSmrg		IFS="-" read kernel os <<EOF
132627485fbcSmrg$basic_os
132727485fbcSmrgEOF
132827485fbcSmrg		IFS=$saved_IFS
132927485fbcSmrg		;;
133027485fbcSmrg	# Default OS when just kernel was specified
133127485fbcSmrg	nto*)
133227485fbcSmrg		kernel=nto
133327485fbcSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
133427485fbcSmrg		;;
133527485fbcSmrg	linux*)
133627485fbcSmrg		kernel=linux
133727485fbcSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
133827485fbcSmrg		;;
133927485fbcSmrg	*)
134027485fbcSmrg		kernel=
134127485fbcSmrg		os=$basic_os
134227485fbcSmrg		;;
134327485fbcSmrgesac
134427485fbcSmrg
134527485fbcSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
134627485fbcSmrg# etc.)
13478dd3e0eeSmrgcase $os in
1348c1d6e445Smrg	# First match some system type aliases that might get confused
1349c1d6e445Smrg	# with valid system types.
135027485fbcSmrg	# solaris* is a basic system type, with this one exception.
135127485fbcSmrg	auroraux)
135227485fbcSmrg		os=auroraux
1353524e9589Smrg		;;
135427485fbcSmrg	bluegene*)
135527485fbcSmrg		os=cnk
13568dd3e0eeSmrg		;;
135727485fbcSmrg	solaris1 | solaris1.*)
135827485fbcSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
13598dd3e0eeSmrg		;;
136027485fbcSmrg	solaris)
136127485fbcSmrg		os=solaris2
13628dd3e0eeSmrg		;;
136327485fbcSmrg	unixware*)
136427485fbcSmrg		os=sysv4.2uw
13658dd3e0eeSmrg		;;
1366c1d6e445Smrg	# es1800 is here to avoid being matched by es* (a different OS)
136727485fbcSmrg	es1800*)
136827485fbcSmrg		os=ose
1369c1d6e445Smrg		;;
137027485fbcSmrg	# Some version numbers need modification
137127485fbcSmrg	chorusos*)
137227485fbcSmrg		os=chorusos
13738dd3e0eeSmrg		;;
137427485fbcSmrg	isc)
137527485fbcSmrg		os=isc2.2
13768dd3e0eeSmrg		;;
137727485fbcSmrg	sco6)
137827485fbcSmrg		os=sco5v6
13798dd3e0eeSmrg		;;
138027485fbcSmrg	sco5)
138127485fbcSmrg		os=sco3.2v5
13828dd3e0eeSmrg		;;
138327485fbcSmrg	sco4)
138427485fbcSmrg		os=sco3.2v4
13858dd3e0eeSmrg		;;
138627485fbcSmrg	sco3.2.[4-9]*)
138727485fbcSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
1388329fdfe9Smrg		;;
138927485fbcSmrg	sco*v* | scout)
139027485fbcSmrg		# Don't match below
13918dd3e0eeSmrg		;;
139227485fbcSmrg	sco*)
139327485fbcSmrg		os=sco3.2v2
13948dd3e0eeSmrg		;;
139527485fbcSmrg	psos*)
139627485fbcSmrg		os=psos
13978dd3e0eeSmrg		;;
139827485fbcSmrg	qnx*)
139927485fbcSmrg		os=qnx
14008dd3e0eeSmrg		;;
140127485fbcSmrg	hiux*)
140227485fbcSmrg		os=hiuxwe2
1403329fdfe9Smrg		;;
140427485fbcSmrg	lynx*178)
140527485fbcSmrg		os=lynxos178
14068dd3e0eeSmrg		;;
140727485fbcSmrg	lynx*5)
140827485fbcSmrg		os=lynxos5
14098dd3e0eeSmrg		;;
141027485fbcSmrg	lynxos*)
141127485fbcSmrg		# don't get caught up in next wildcard
14128dd3e0eeSmrg		;;
141327485fbcSmrg	lynx*)
141427485fbcSmrg		os=lynxos
14158dd3e0eeSmrg		;;
141627485fbcSmrg	mac[0-9]*)
141727485fbcSmrg		os=`echo "$os" | sed -e 's|mac|macos|'`
14188dd3e0eeSmrg		;;
141927485fbcSmrg	opened*)
142027485fbcSmrg		os=openedition
1421329fdfe9Smrg		;;
142227485fbcSmrg	os400*)
142327485fbcSmrg		os=os400
14248dd3e0eeSmrg		;;
142527485fbcSmrg	sunos5*)
142627485fbcSmrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
14278dd3e0eeSmrg		;;
142827485fbcSmrg	sunos6*)
142927485fbcSmrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
14308dd3e0eeSmrg		;;
143127485fbcSmrg	wince*)
143227485fbcSmrg		os=wince
14338dd3e0eeSmrg		;;
143427485fbcSmrg	utek*)
143527485fbcSmrg		os=bsd
14368dd3e0eeSmrg		;;
143727485fbcSmrg	dynix*)
143827485fbcSmrg		os=bsd
14398dd3e0eeSmrg		;;
144027485fbcSmrg	acis*)
144127485fbcSmrg		os=aos
14428dd3e0eeSmrg		;;
144327485fbcSmrg	atheos*)
144427485fbcSmrg		os=atheos
1445329fdfe9Smrg		;;
144627485fbcSmrg	syllable*)
144727485fbcSmrg		os=syllable
144827485fbcSmrg		;;
144927485fbcSmrg	386bsd)
145027485fbcSmrg		os=bsd
145127485fbcSmrg		;;
145227485fbcSmrg	ctix* | uts*)
145327485fbcSmrg		os=sysv
145427485fbcSmrg		;;
145527485fbcSmrg	nova*)
145627485fbcSmrg		os=rtmk-nova
145727485fbcSmrg		;;
145827485fbcSmrg	ns2)
145927485fbcSmrg		os=nextstep2
146027485fbcSmrg		;;
146127485fbcSmrg	# Preserve the version number of sinix5.
146227485fbcSmrg	sinix5.*)
146327485fbcSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
14648dd3e0eeSmrg		;;
146527485fbcSmrg	sinix*)
146627485fbcSmrg		os=sysv4
14678dd3e0eeSmrg		;;
146827485fbcSmrg	tpf*)
146927485fbcSmrg		os=tpf
14708dd3e0eeSmrg		;;
147127485fbcSmrg	triton*)
147227485fbcSmrg		os=sysv3
14738dd3e0eeSmrg		;;
147427485fbcSmrg	oss*)
147527485fbcSmrg		os=sysv3
14768dd3e0eeSmrg		;;
147727485fbcSmrg	svr4*)
147827485fbcSmrg		os=sysv4
14798dd3e0eeSmrg		;;
148027485fbcSmrg	svr3)
148127485fbcSmrg		os=sysv3
14828dd3e0eeSmrg		;;
148327485fbcSmrg	sysvr4)
148427485fbcSmrg		os=sysv4
14858dd3e0eeSmrg		;;
148627485fbcSmrg	ose*)
148727485fbcSmrg		os=ose
1488329fdfe9Smrg		;;
148927485fbcSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
149027485fbcSmrg		os=mint
1491329fdfe9Smrg		;;
149227485fbcSmrg	dicos*)
149327485fbcSmrg		os=dicos
149427485fbcSmrg		;;
149527485fbcSmrg	pikeos*)
1496c1d6e445Smrg		# Until real need of OS specific support for
1497c1d6e445Smrg		# particular features comes up, bare metal
1498c1d6e445Smrg		# configurations are quite functional.
149927485fbcSmrg		case $cpu in
1500c1d6e445Smrg		    arm*)
150127485fbcSmrg			os=eabi
1502c1d6e445Smrg			;;
1503c1d6e445Smrg		    *)
150427485fbcSmrg			os=elf
1505c1d6e445Smrg			;;
1506c1d6e445Smrg		esac
1507c1d6e445Smrg		;;
15088dd3e0eeSmrg	*)
150927485fbcSmrg		# No normalization, but not necessarily accepted, that comes below.
15108dd3e0eeSmrg		;;
15118dd3e0eeSmrgesac
151227485fbcSmrg
15138dd3e0eeSmrgelse
15148dd3e0eeSmrg
15158dd3e0eeSmrg# Here we handle the default operating systems that come with various machines.
15168dd3e0eeSmrg# The value should be what the vendor currently ships out the door with their
15178dd3e0eeSmrg# machine or put another way, the most popular os provided with the machine.
15188dd3e0eeSmrg
15198dd3e0eeSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
15208dd3e0eeSmrg# "-sun"), then you have to tell the case statement up towards the top
15218dd3e0eeSmrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
15228dd3e0eeSmrg# will signal an error saying that MANUFACTURER isn't an operating
15238dd3e0eeSmrg# system, and we'll never get to this point.
15248dd3e0eeSmrg
152527485fbcSmrgkernel=
152627485fbcSmrgcase $cpu-$vendor in
1527d5a688bcSmrg	score-*)
152827485fbcSmrg		os=elf
1529329fdfe9Smrg		;;
1530d5a688bcSmrg	spu-*)
153127485fbcSmrg		os=elf
1532329fdfe9Smrg		;;
15338dd3e0eeSmrg	*-acorn)
153427485fbcSmrg		os=riscix1.2
15358dd3e0eeSmrg		;;
15368dd3e0eeSmrg	arm*-rebel)
153727485fbcSmrg		kernel=linux
153827485fbcSmrg		os=gnu
15398dd3e0eeSmrg		;;
15408dd3e0eeSmrg	arm*-semi)
154127485fbcSmrg		os=aout
15428dd3e0eeSmrg		;;
1543d5a688bcSmrg	c4x-* | tic4x-*)
154427485fbcSmrg		os=coff
1545d5a688bcSmrg		;;
1546c1d6e445Smrg	c8051-*)
154727485fbcSmrg		os=elf
154827485fbcSmrg		;;
154927485fbcSmrg	clipper-intergraph)
155027485fbcSmrg		os=clix
1551c1d6e445Smrg		;;
1552d5a688bcSmrg	hexagon-*)
155327485fbcSmrg		os=elf
1554329fdfe9Smrg		;;
1555524e9589Smrg	tic54x-*)
155627485fbcSmrg		os=coff
1557524e9589Smrg		;;
1558524e9589Smrg	tic55x-*)
155927485fbcSmrg		os=coff
1560524e9589Smrg		;;
1561524e9589Smrg	tic6x-*)
156227485fbcSmrg		os=coff
1563524e9589Smrg		;;
15648dd3e0eeSmrg	# This must come before the *-dec entry.
15658dd3e0eeSmrg	pdp10-*)
156627485fbcSmrg		os=tops20
15678dd3e0eeSmrg		;;
15688dd3e0eeSmrg	pdp11-*)
156927485fbcSmrg		os=none
15708dd3e0eeSmrg		;;
15718dd3e0eeSmrg	*-dec | vax-*)
157227485fbcSmrg		os=ultrix4.2
15738dd3e0eeSmrg		;;
15748dd3e0eeSmrg	m68*-apollo)
157527485fbcSmrg		os=domain
15768dd3e0eeSmrg		;;
15778dd3e0eeSmrg	i386-sun)
157827485fbcSmrg		os=sunos4.0.2
15798dd3e0eeSmrg		;;
15808dd3e0eeSmrg	m68000-sun)
158127485fbcSmrg		os=sunos3
15828dd3e0eeSmrg		;;
15838dd3e0eeSmrg	m68*-cisco)
158427485fbcSmrg		os=aout
15858dd3e0eeSmrg		;;
1586d5a688bcSmrg	mep-*)
158727485fbcSmrg		os=elf
1588329fdfe9Smrg		;;
15898dd3e0eeSmrg	mips*-cisco)
159027485fbcSmrg		os=elf
15918dd3e0eeSmrg		;;
15928dd3e0eeSmrg	mips*-*)
159327485fbcSmrg		os=elf
15948dd3e0eeSmrg		;;
15958dd3e0eeSmrg	or32-*)
159627485fbcSmrg		os=coff
15978dd3e0eeSmrg		;;
15988dd3e0eeSmrg	*-tti)	# must be before sparc entry or we get the wrong os.
159927485fbcSmrg		os=sysv3
16008dd3e0eeSmrg		;;
16018dd3e0eeSmrg	sparc-* | *-sun)
160227485fbcSmrg		os=sunos4.1.1
16038dd3e0eeSmrg		;;
1604c1d6e445Smrg	pru-*)
160527485fbcSmrg		os=elf
1606c1d6e445Smrg		;;
16078dd3e0eeSmrg	*-be)
160827485fbcSmrg		os=beos
16098dd3e0eeSmrg		;;
16108dd3e0eeSmrg	*-ibm)
161127485fbcSmrg		os=aix
16128dd3e0eeSmrg		;;
1613d5a688bcSmrg	*-knuth)
161427485fbcSmrg		os=mmixware
1615329fdfe9Smrg		;;
16168dd3e0eeSmrg	*-wec)
161727485fbcSmrg		os=proelf
16188dd3e0eeSmrg		;;
16198dd3e0eeSmrg	*-winbond)
162027485fbcSmrg		os=proelf
16218dd3e0eeSmrg		;;
16228dd3e0eeSmrg	*-oki)
162327485fbcSmrg		os=proelf
16248dd3e0eeSmrg		;;
16258dd3e0eeSmrg	*-hp)
162627485fbcSmrg		os=hpux
16278dd3e0eeSmrg		;;
16288dd3e0eeSmrg	*-hitachi)
162927485fbcSmrg		os=hiux
16308dd3e0eeSmrg		;;
16318dd3e0eeSmrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
163227485fbcSmrg		os=sysv
16338dd3e0eeSmrg		;;
16348dd3e0eeSmrg	*-cbm)
163527485fbcSmrg		os=amigaos
16368dd3e0eeSmrg		;;
16378dd3e0eeSmrg	*-dg)
163827485fbcSmrg		os=dgux
16398dd3e0eeSmrg		;;
16408dd3e0eeSmrg	*-dolphin)
164127485fbcSmrg		os=sysv3
16428dd3e0eeSmrg		;;
16438dd3e0eeSmrg	m68k-ccur)
164427485fbcSmrg		os=rtu
16458dd3e0eeSmrg		;;
16468dd3e0eeSmrg	m88k-omron*)
164727485fbcSmrg		os=luna
16488dd3e0eeSmrg		;;
1649c1d6e445Smrg	*-next)
165027485fbcSmrg		os=nextstep
16518dd3e0eeSmrg		;;
16528dd3e0eeSmrg	*-sequent)
165327485fbcSmrg		os=ptx
16548dd3e0eeSmrg		;;
16558dd3e0eeSmrg	*-crds)
165627485fbcSmrg		os=unos
16578dd3e0eeSmrg		;;
16588dd3e0eeSmrg	*-ns)
165927485fbcSmrg		os=genix
16608dd3e0eeSmrg		;;
16618dd3e0eeSmrg	i370-*)
166227485fbcSmrg		os=mvs
16638dd3e0eeSmrg		;;
16648dd3e0eeSmrg	*-gould)
166527485fbcSmrg		os=sysv
16668dd3e0eeSmrg		;;
16678dd3e0eeSmrg	*-highlevel)
166827485fbcSmrg		os=bsd
16698dd3e0eeSmrg		;;
16708dd3e0eeSmrg	*-encore)
167127485fbcSmrg		os=bsd
16728dd3e0eeSmrg		;;
16738dd3e0eeSmrg	*-sgi)
167427485fbcSmrg		os=irix
16758dd3e0eeSmrg		;;
16768dd3e0eeSmrg	*-siemens)
167727485fbcSmrg		os=sysv4
16788dd3e0eeSmrg		;;
16798dd3e0eeSmrg	*-masscomp)
168027485fbcSmrg		os=rtu
16818dd3e0eeSmrg		;;
16828dd3e0eeSmrg	f30[01]-fujitsu | f700-fujitsu)
168327485fbcSmrg		os=uxpv
16848dd3e0eeSmrg		;;
16858dd3e0eeSmrg	*-rom68k)
168627485fbcSmrg		os=coff
16878dd3e0eeSmrg		;;
16888dd3e0eeSmrg	*-*bug)
168927485fbcSmrg		os=coff
16908dd3e0eeSmrg		;;
16918dd3e0eeSmrg	*-apple)
169227485fbcSmrg		os=macos
16938dd3e0eeSmrg		;;
16948dd3e0eeSmrg	*-atari*)
169527485fbcSmrg		os=mint
169627485fbcSmrg		;;
169727485fbcSmrg	*-wrs)
169827485fbcSmrg		os=vxworks
16998dd3e0eeSmrg		;;
17008dd3e0eeSmrg	*)
170127485fbcSmrg		os=none
17028dd3e0eeSmrg		;;
17038dd3e0eeSmrgesac
170427485fbcSmrg
17058dd3e0eeSmrgfi
17068dd3e0eeSmrg
170727485fbcSmrg# Now, validate our (potentially fixed-up) OS.
170827485fbcSmrgcase $os in
170927485fbcSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
171027485fbcSmrg	musl* | newlib* | relibc* | uclibc*)
171127485fbcSmrg		;;
171227485fbcSmrg	# Likewise for "kernel-abi"
171327485fbcSmrg	eabi* | gnueabi*)
171427485fbcSmrg		;;
171527485fbcSmrg	# VxWorks passes extra cpu info in the 4th filed.
171627485fbcSmrg	simlinux | simwindows | spe)
171727485fbcSmrg		;;
171827485fbcSmrg	# Now accept the basic system types.
171927485fbcSmrg	# The portable systems comes first.
172027485fbcSmrg	# Each alternative MUST end in a * to match a version number.
172127485fbcSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
172227485fbcSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
172327485fbcSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
172427485fbcSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
172527485fbcSmrg	     | hiux* | abug | nacl* | netware* | windows* \
172627485fbcSmrg	     | os9* | macos* | osx* | ios* \
172727485fbcSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
172827485fbcSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
172927485fbcSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
173027485fbcSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
173127485fbcSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
173227485fbcSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
173327485fbcSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
173427485fbcSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
173527485fbcSmrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
173627485fbcSmrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
173727485fbcSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
173827485fbcSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
173927485fbcSmrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
174027485fbcSmrg	     | midipix* | mingw32* | mingw64* | mint* \
174127485fbcSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
174227485fbcSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
174327485fbcSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
174427485fbcSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
174527485fbcSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
174627485fbcSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
174727485fbcSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
174827485fbcSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
174927485fbcSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
175027485fbcSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
175127485fbcSmrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*)
175227485fbcSmrg		;;
175327485fbcSmrg	# This one is extra strict with allowed versions
175427485fbcSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
175527485fbcSmrg		# Don't forget version if it is 3.2v4 or newer.
175627485fbcSmrg		;;
175727485fbcSmrg	none)
175827485fbcSmrg		;;
175927485fbcSmrg	*)
176027485fbcSmrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
176127485fbcSmrg		exit 1
176227485fbcSmrg		;;
176327485fbcSmrgesac
176427485fbcSmrg
176527485fbcSmrg# As a final step for OS-related things, validate the OS-kernel combination
176627485fbcSmrg# (given a valid OS), if there is a kernel.
176727485fbcSmrgcase $kernel-$os in
176827485fbcSmrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
176927485fbcSmrg		   | linux-musl* | linux-relibc* | linux-uclibc* )
177027485fbcSmrg		;;
177127485fbcSmrg	uclinux-uclibc* )
177227485fbcSmrg		;;
177327485fbcSmrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
177427485fbcSmrg		# These are just libc implementations, not actual OSes, and thus
177527485fbcSmrg		# require a kernel.
177627485fbcSmrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
177727485fbcSmrg		exit 1
177827485fbcSmrg		;;
177927485fbcSmrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
178027485fbcSmrg		;;
178127485fbcSmrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
178227485fbcSmrg		;;
178327485fbcSmrg	nto-qnx*)
178427485fbcSmrg		;;
178527485fbcSmrg	os2-emx)
178627485fbcSmrg		;;
178727485fbcSmrg	*-eabi* | *-gnueabi*)
178827485fbcSmrg		;;
178927485fbcSmrg	-*)
179027485fbcSmrg		# Blank kernel with real OS is always fine.
179127485fbcSmrg		;;
179227485fbcSmrg	*-*)
179327485fbcSmrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
179427485fbcSmrg		exit 1
179527485fbcSmrg		;;
179627485fbcSmrgesac
179727485fbcSmrg
17988dd3e0eeSmrg# Here we handle the case where we know the os, and the CPU type, but not the
17998dd3e0eeSmrg# manufacturer.  We pick the logical manufacturer.
180027485fbcSmrgcase $vendor in
180127485fbcSmrg	unknown)
180227485fbcSmrg		case $cpu-$os in
180327485fbcSmrg			*-riscix*)
18048dd3e0eeSmrg				vendor=acorn
18058dd3e0eeSmrg				;;
180627485fbcSmrg			*-sunos*)
18078dd3e0eeSmrg				vendor=sun
18088dd3e0eeSmrg				;;
180927485fbcSmrg			*-cnk* | *-aix*)
18108dd3e0eeSmrg				vendor=ibm
18118dd3e0eeSmrg				;;
181227485fbcSmrg			*-beos*)
18138dd3e0eeSmrg				vendor=be
18148dd3e0eeSmrg				;;
181527485fbcSmrg			*-hpux*)
18168dd3e0eeSmrg				vendor=hp
18178dd3e0eeSmrg				;;
181827485fbcSmrg			*-mpeix*)
18198dd3e0eeSmrg				vendor=hp
18208dd3e0eeSmrg				;;
182127485fbcSmrg			*-hiux*)
18228dd3e0eeSmrg				vendor=hitachi
18238dd3e0eeSmrg				;;
182427485fbcSmrg			*-unos*)
18258dd3e0eeSmrg				vendor=crds
18268dd3e0eeSmrg				;;
182727485fbcSmrg			*-dgux*)
18288dd3e0eeSmrg				vendor=dg
18298dd3e0eeSmrg				;;
183027485fbcSmrg			*-luna*)
18318dd3e0eeSmrg				vendor=omron
18328dd3e0eeSmrg				;;
183327485fbcSmrg			*-genix*)
18348dd3e0eeSmrg				vendor=ns
18358dd3e0eeSmrg				;;
183627485fbcSmrg			*-clix*)
183727485fbcSmrg				vendor=intergraph
183827485fbcSmrg				;;
183927485fbcSmrg			*-mvs* | *-opened*)
184027485fbcSmrg				vendor=ibm
184127485fbcSmrg				;;
184227485fbcSmrg			*-os400*)
18438dd3e0eeSmrg				vendor=ibm
18448dd3e0eeSmrg				;;
184527485fbcSmrg			s390-* | s390x-*)
1846329fdfe9Smrg				vendor=ibm
1847329fdfe9Smrg				;;
184827485fbcSmrg			*-ptx*)
18498dd3e0eeSmrg				vendor=sequent
18508dd3e0eeSmrg				;;
185127485fbcSmrg			*-tpf*)
1852329fdfe9Smrg				vendor=ibm
1853329fdfe9Smrg				;;
185427485fbcSmrg			*-vxsim* | *-vxworks* | *-windiss*)
18558dd3e0eeSmrg				vendor=wrs
18568dd3e0eeSmrg				;;
185727485fbcSmrg			*-aux*)
18588dd3e0eeSmrg				vendor=apple
18598dd3e0eeSmrg				;;
186027485fbcSmrg			*-hms*)
18618dd3e0eeSmrg				vendor=hitachi
18628dd3e0eeSmrg				;;
186327485fbcSmrg			*-mpw* | *-macos*)
18648dd3e0eeSmrg				vendor=apple
18658dd3e0eeSmrg				;;
186627485fbcSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
18678dd3e0eeSmrg				vendor=atari
18688dd3e0eeSmrg				;;
186927485fbcSmrg			*-vos*)
18708dd3e0eeSmrg				vendor=stratus
18718dd3e0eeSmrg				;;
18728dd3e0eeSmrg		esac
18738dd3e0eeSmrg		;;
18748dd3e0eeSmrgesac
18758dd3e0eeSmrg
187627485fbcSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
1877329fdfe9Smrgexit
18788dd3e0eeSmrg
18798dd3e0eeSmrg# Local variables:
188027485fbcSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
18818dd3e0eeSmrg# time-stamp-start: "timestamp='"
18828dd3e0eeSmrg# time-stamp-format: "%:y-%02m-%02d"
18838dd3e0eeSmrg# time-stamp-end: "'"
18848dd3e0eeSmrg# End:
1885