138b41dabSmrg#! /bin/sh
238b41dabSmrg# Configuration validation subroutine script.
338b41dabSmrg#   Copyright 1992-2023 Free Software Foundation, Inc.
438b41dabSmrg
538b41dabSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
638b41dabSmrg
738b41dabSmrgtimestamp='2023-01-21'
838b41dabSmrg
938b41dabSmrg# This file is free software; you can redistribute it and/or modify it
1038b41dabSmrg# under the terms of the GNU General Public License as published by
1138b41dabSmrg# the Free Software Foundation, either version 3 of the License, or
1238b41dabSmrg# (at your option) any later version.
1338b41dabSmrg#
1438b41dabSmrg# This program is distributed in the hope that it will be useful, but
1538b41dabSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of
1638b41dabSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1738b41dabSmrg# General Public License for more details.
1838b41dabSmrg#
1938b41dabSmrg# You should have received a copy of the GNU General Public License
2038b41dabSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
2138b41dabSmrg#
2238b41dabSmrg# As a special exception to the GNU General Public License, if you
2338b41dabSmrg# distribute this file as part of a program that contains a
2438b41dabSmrg# configuration script generated by Autoconf, you may include it under
2538b41dabSmrg# the same distribution terms that you use for the rest of that
2638b41dabSmrg# program.  This Exception is an additional permission under section 7
2738b41dabSmrg# of the GNU General Public License, version 3 ("GPLv3").
2838b41dabSmrg
2938b41dabSmrg
3038b41dabSmrg# Please send patches to <config-patches@gnu.org>.
3138b41dabSmrg#
3238b41dabSmrg# Configuration subroutine to validate and canonicalize a configuration type.
3338b41dabSmrg# Supply the specified configuration type as an argument.
3438b41dabSmrg# If it is invalid, we print an error message on stderr and exit with code 1.
3538b41dabSmrg# Otherwise, we print the canonical config type on stdout and succeed.
3638b41dabSmrg
3738b41dabSmrg# You can get the latest version of this script from:
3838b41dabSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
3938b41dabSmrg
4038b41dabSmrg# This file is supposed to be the same for all GNU packages
4138b41dabSmrg# and recognize all the CPU types, system types and aliases
4238b41dabSmrg# that are meaningful with *any* GNU software.
4338b41dabSmrg# Each package is responsible for reporting which valid configurations
4438b41dabSmrg# it does not support.  The user should be able to distinguish
4538b41dabSmrg# a failure to support a valid configuration from a meaningless
4638b41dabSmrg# configuration.
4738b41dabSmrg
4838b41dabSmrg# The goal of this file is to map all the various variations of a given
4938b41dabSmrg# machine specification into a single specification in the form:
5038b41dabSmrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
5138b41dabSmrg# or in some cases, the newer four-part form:
5238b41dabSmrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
5338b41dabSmrg# It is wrong to echo any other type of specification.
5438b41dabSmrg
5538b41dabSmrg# The "shellcheck disable" line above the timestamp inhibits complaints
5638b41dabSmrg# about features and limitations of the classic Bourne shell that were
5738b41dabSmrg# superseded or lifted in POSIX.  However, this script identifies a wide
5838b41dabSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
5938b41dabSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still
6038b41dabSmrg# have a pre-POSIX /bin/sh.
6138b41dabSmrg
6238b41dabSmrgme=`echo "$0" | sed -e 's,.*/,,'`
6338b41dabSmrg
6438b41dabSmrgusage="\
6538b41dabSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
6638b41dabSmrg
6738b41dabSmrgCanonicalize a configuration name.
6838b41dabSmrg
6938b41dabSmrgOptions:
7038b41dabSmrg  -h, --help         print this help, then exit
7138b41dabSmrg  -t, --time-stamp   print date of last modification, then exit
7238b41dabSmrg  -v, --version      print version number, then exit
7338b41dabSmrg
7438b41dabSmrgReport bugs and patches to <config-patches@gnu.org>."
7538b41dabSmrg
7638b41dabSmrgversion="\
7738b41dabSmrgGNU config.sub ($timestamp)
7838b41dabSmrg
7938b41dabSmrgCopyright 1992-2023 Free Software Foundation, Inc.
8038b41dabSmrg
8138b41dabSmrgThis is free software; see the source for copying conditions.  There is NO
8238b41dabSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
8338b41dabSmrg
8438b41dabSmrghelp="
8538b41dabSmrgTry \`$me --help' for more information."
8638b41dabSmrg
8738b41dabSmrg# Parse command line
8838b41dabSmrgwhile test $# -gt 0 ; do
8938b41dabSmrg  case $1 in
9038b41dabSmrg    --time-stamp | --time* | -t )
9138b41dabSmrg       echo "$timestamp" ; exit ;;
9238b41dabSmrg    --version | -v )
9338b41dabSmrg       echo "$version" ; exit ;;
9438b41dabSmrg    --help | --h* | -h )
9538b41dabSmrg       echo "$usage"; exit ;;
9638b41dabSmrg    -- )     # Stop option processing
9738b41dabSmrg       shift; break ;;
9838b41dabSmrg    - )	# Use stdin as input.
9938b41dabSmrg       break ;;
10038b41dabSmrg    -* )
10138b41dabSmrg       echo "$me: invalid option $1$help" >&2
10238b41dabSmrg       exit 1 ;;
10338b41dabSmrg
10438b41dabSmrg    *local*)
10538b41dabSmrg       # First pass through any local machine types.
10638b41dabSmrg       echo "$1"
10738b41dabSmrg       exit ;;
10838b41dabSmrg
10938b41dabSmrg    * )
11038b41dabSmrg       break ;;
11138b41dabSmrg  esac
11238b41dabSmrgdone
11338b41dabSmrg
11438b41dabSmrgcase $# in
11538b41dabSmrg 0) echo "$me: missing argument$help" >&2
11638b41dabSmrg    exit 1;;
11738b41dabSmrg 1) ;;
11838b41dabSmrg *) echo "$me: too many arguments$help" >&2
11938b41dabSmrg    exit 1;;
12038b41dabSmrgesac
12138b41dabSmrg
12238b41dabSmrg# Split fields of configuration type
12338b41dabSmrg# shellcheck disable=SC2162
12438b41dabSmrgsaved_IFS=$IFS
12538b41dabSmrgIFS="-" read field1 field2 field3 field4 <<EOF
12638b41dabSmrg$1
12738b41dabSmrgEOF
12838b41dabSmrgIFS=$saved_IFS
12938b41dabSmrg
13038b41dabSmrg# Separate into logical components for further validation
13138b41dabSmrgcase $1 in
13238b41dabSmrg	*-*-*-*-*)
13338b41dabSmrg		echo Invalid configuration \`"$1"\': more than four components >&2
13438b41dabSmrg		exit 1
13538b41dabSmrg		;;
13638b41dabSmrg	*-*-*-*)
13738b41dabSmrg		basic_machine=$field1-$field2
13838b41dabSmrg		basic_os=$field3-$field4
13938b41dabSmrg		;;
14038b41dabSmrg	*-*-*)
14138b41dabSmrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
14238b41dabSmrg		# parts
14338b41dabSmrg		maybe_os=$field2-$field3
14438b41dabSmrg		case $maybe_os in
14538b41dabSmrg			nto-qnx* | linux-* | uclinux-uclibc* \
14638b41dabSmrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
14738b41dabSmrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
14838b41dabSmrg			| storm-chaos* | os2-emx* | rtmk-nova* | managarm-*)
14938b41dabSmrg				basic_machine=$field1
15038b41dabSmrg				basic_os=$maybe_os
15138b41dabSmrg				;;
15238b41dabSmrg			android-linux)
15338b41dabSmrg				basic_machine=$field1-unknown
15438b41dabSmrg				basic_os=linux-android
15538b41dabSmrg				;;
15638b41dabSmrg			*)
15738b41dabSmrg				basic_machine=$field1-$field2
15838b41dabSmrg				basic_os=$field3
15938b41dabSmrg				;;
16038b41dabSmrg		esac
16138b41dabSmrg		;;
16238b41dabSmrg	*-*)
16338b41dabSmrg		# A lone config we happen to match not fitting any pattern
16438b41dabSmrg		case $field1-$field2 in
16538b41dabSmrg			decstation-3100)
16638b41dabSmrg				basic_machine=mips-dec
16738b41dabSmrg				basic_os=
16838b41dabSmrg				;;
16938b41dabSmrg			*-*)
17038b41dabSmrg				# Second component is usually, but not always the OS
17138b41dabSmrg				case $field2 in
17238b41dabSmrg					# Prevent following clause from handling this valid os
17338b41dabSmrg					sun*os*)
17438b41dabSmrg						basic_machine=$field1
17538b41dabSmrg						basic_os=$field2
17638b41dabSmrg						;;
17738b41dabSmrg					zephyr*)
17838b41dabSmrg						basic_machine=$field1-unknown
17938b41dabSmrg						basic_os=$field2
18038b41dabSmrg						;;
18138b41dabSmrg					# Manufacturers
18238b41dabSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
18338b41dabSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
18438b41dabSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
18538b41dabSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
18638b41dabSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
18738b41dabSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
18838b41dabSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
18938b41dabSmrg					| microblaze* | sim | cisco \
19038b41dabSmrg					| oki | wec | wrs | winbond)
19138b41dabSmrg						basic_machine=$field1-$field2
19238b41dabSmrg						basic_os=
19338b41dabSmrg						;;
19438b41dabSmrg					*)
19538b41dabSmrg						basic_machine=$field1
19638b41dabSmrg						basic_os=$field2
19738b41dabSmrg						;;
19838b41dabSmrg				esac
19938b41dabSmrg			;;
20038b41dabSmrg		esac
20138b41dabSmrg		;;
20238b41dabSmrg	*)
20338b41dabSmrg		# Convert single-component short-hands not valid as part of
20438b41dabSmrg		# multi-component configurations.
20538b41dabSmrg		case $field1 in
20638b41dabSmrg			386bsd)
20738b41dabSmrg				basic_machine=i386-pc
20838b41dabSmrg				basic_os=bsd
20938b41dabSmrg				;;
21038b41dabSmrg			a29khif)
21138b41dabSmrg				basic_machine=a29k-amd
21238b41dabSmrg				basic_os=udi
21338b41dabSmrg				;;
21438b41dabSmrg			adobe68k)
21538b41dabSmrg				basic_machine=m68010-adobe
21638b41dabSmrg				basic_os=scout
21738b41dabSmrg				;;
21838b41dabSmrg			alliant)
21938b41dabSmrg				basic_machine=fx80-alliant
22038b41dabSmrg				basic_os=
22138b41dabSmrg				;;
22238b41dabSmrg			altos | altos3068)
22338b41dabSmrg				basic_machine=m68k-altos
22438b41dabSmrg				basic_os=
22538b41dabSmrg				;;
22638b41dabSmrg			am29k)
22738b41dabSmrg				basic_machine=a29k-none
22838b41dabSmrg				basic_os=bsd
22938b41dabSmrg				;;
23038b41dabSmrg			amdahl)
23138b41dabSmrg				basic_machine=580-amdahl
23238b41dabSmrg				basic_os=sysv
23338b41dabSmrg				;;
23438b41dabSmrg			amiga)
23538b41dabSmrg				basic_machine=m68k-unknown
23638b41dabSmrg				basic_os=
23738b41dabSmrg				;;
23838b41dabSmrg			amigaos | amigados)
23938b41dabSmrg				basic_machine=m68k-unknown
24038b41dabSmrg				basic_os=amigaos
24138b41dabSmrg				;;
24238b41dabSmrg			amigaunix | amix)
24338b41dabSmrg				basic_machine=m68k-unknown
24438b41dabSmrg				basic_os=sysv4
24538b41dabSmrg				;;
24638b41dabSmrg			apollo68)
24738b41dabSmrg				basic_machine=m68k-apollo
24838b41dabSmrg				basic_os=sysv
24938b41dabSmrg				;;
25038b41dabSmrg			apollo68bsd)
25138b41dabSmrg				basic_machine=m68k-apollo
25238b41dabSmrg				basic_os=bsd
25338b41dabSmrg				;;
25438b41dabSmrg			aros)
25538b41dabSmrg				basic_machine=i386-pc
25638b41dabSmrg				basic_os=aros
25738b41dabSmrg				;;
25838b41dabSmrg			aux)
25938b41dabSmrg				basic_machine=m68k-apple
26038b41dabSmrg				basic_os=aux
26138b41dabSmrg				;;
26238b41dabSmrg			balance)
26338b41dabSmrg				basic_machine=ns32k-sequent
26438b41dabSmrg				basic_os=dynix
26538b41dabSmrg				;;
26638b41dabSmrg			blackfin)
26738b41dabSmrg				basic_machine=bfin-unknown
26838b41dabSmrg				basic_os=linux
26938b41dabSmrg				;;
27038b41dabSmrg			cegcc)
27138b41dabSmrg				basic_machine=arm-unknown
27238b41dabSmrg				basic_os=cegcc
27338b41dabSmrg				;;
27438b41dabSmrg			convex-c1)
27538b41dabSmrg				basic_machine=c1-convex
27638b41dabSmrg				basic_os=bsd
27738b41dabSmrg				;;
27838b41dabSmrg			convex-c2)
27938b41dabSmrg				basic_machine=c2-convex
28038b41dabSmrg				basic_os=bsd
28138b41dabSmrg				;;
28238b41dabSmrg			convex-c32)
28338b41dabSmrg				basic_machine=c32-convex
28438b41dabSmrg				basic_os=bsd
28538b41dabSmrg				;;
28638b41dabSmrg			convex-c34)
28738b41dabSmrg				basic_machine=c34-convex
28838b41dabSmrg				basic_os=bsd
28938b41dabSmrg				;;
29038b41dabSmrg			convex-c38)
29138b41dabSmrg				basic_machine=c38-convex
29238b41dabSmrg				basic_os=bsd
29338b41dabSmrg				;;
29438b41dabSmrg			cray)
29538b41dabSmrg				basic_machine=j90-cray
29638b41dabSmrg				basic_os=unicos
29738b41dabSmrg				;;
29838b41dabSmrg			crds | unos)
29938b41dabSmrg				basic_machine=m68k-crds
30038b41dabSmrg				basic_os=
30138b41dabSmrg				;;
30238b41dabSmrg			da30)
30338b41dabSmrg				basic_machine=m68k-da30
30438b41dabSmrg				basic_os=
30538b41dabSmrg				;;
30638b41dabSmrg			decstation | pmax | pmin | dec3100 | decstatn)
30738b41dabSmrg				basic_machine=mips-dec
30838b41dabSmrg				basic_os=
30938b41dabSmrg				;;
31038b41dabSmrg			delta88)
31138b41dabSmrg				basic_machine=m88k-motorola
31238b41dabSmrg				basic_os=sysv3
31338b41dabSmrg				;;
31438b41dabSmrg			dicos)
31538b41dabSmrg				basic_machine=i686-pc
31638b41dabSmrg				basic_os=dicos
31738b41dabSmrg				;;
31838b41dabSmrg			djgpp)
31938b41dabSmrg				basic_machine=i586-pc
32038b41dabSmrg				basic_os=msdosdjgpp
32138b41dabSmrg				;;
32238b41dabSmrg			ebmon29k)
32338b41dabSmrg				basic_machine=a29k-amd
32438b41dabSmrg				basic_os=ebmon
32538b41dabSmrg				;;
32638b41dabSmrg			es1800 | OSE68k | ose68k | ose | OSE)
32738b41dabSmrg				basic_machine=m68k-ericsson
32838b41dabSmrg				basic_os=ose
32938b41dabSmrg				;;
33038b41dabSmrg			gmicro)
33138b41dabSmrg				basic_machine=tron-gmicro
33238b41dabSmrg				basic_os=sysv
33338b41dabSmrg				;;
33438b41dabSmrg			go32)
33538b41dabSmrg				basic_machine=i386-pc
33638b41dabSmrg				basic_os=go32
33738b41dabSmrg				;;
33838b41dabSmrg			h8300hms)
33938b41dabSmrg				basic_machine=h8300-hitachi
34038b41dabSmrg				basic_os=hms
34138b41dabSmrg				;;
34238b41dabSmrg			h8300xray)
34338b41dabSmrg				basic_machine=h8300-hitachi
34438b41dabSmrg				basic_os=xray
34538b41dabSmrg				;;
34638b41dabSmrg			h8500hms)
34738b41dabSmrg				basic_machine=h8500-hitachi
34838b41dabSmrg				basic_os=hms
34938b41dabSmrg				;;
35038b41dabSmrg			harris)
35138b41dabSmrg				basic_machine=m88k-harris
35238b41dabSmrg				basic_os=sysv3
35338b41dabSmrg				;;
35438b41dabSmrg			hp300 | hp300hpux)
35538b41dabSmrg				basic_machine=m68k-hp
35638b41dabSmrg				basic_os=hpux
35738b41dabSmrg				;;
35838b41dabSmrg			hp300bsd)
35938b41dabSmrg				basic_machine=m68k-hp
36038b41dabSmrg				basic_os=bsd
36138b41dabSmrg				;;
36238b41dabSmrg			hppaosf)
36338b41dabSmrg				basic_machine=hppa1.1-hp
36438b41dabSmrg				basic_os=osf
36538b41dabSmrg				;;
36638b41dabSmrg			hppro)
36738b41dabSmrg				basic_machine=hppa1.1-hp
36838b41dabSmrg				basic_os=proelf
36938b41dabSmrg				;;
37038b41dabSmrg			i386mach)
37138b41dabSmrg				basic_machine=i386-mach
37238b41dabSmrg				basic_os=mach
37338b41dabSmrg				;;
37438b41dabSmrg			isi68 | isi)
37538b41dabSmrg				basic_machine=m68k-isi
37638b41dabSmrg				basic_os=sysv
37738b41dabSmrg				;;
37838b41dabSmrg			m68knommu)
37938b41dabSmrg				basic_machine=m68k-unknown
38038b41dabSmrg				basic_os=linux
38138b41dabSmrg				;;
38238b41dabSmrg			magnum | m3230)
38338b41dabSmrg				basic_machine=mips-mips
38438b41dabSmrg				basic_os=sysv
38538b41dabSmrg				;;
38638b41dabSmrg			merlin)
38738b41dabSmrg				basic_machine=ns32k-utek
38838b41dabSmrg				basic_os=sysv
38938b41dabSmrg				;;
39038b41dabSmrg			mingw64)
39138b41dabSmrg				basic_machine=x86_64-pc
39238b41dabSmrg				basic_os=mingw64
39338b41dabSmrg				;;
39438b41dabSmrg			mingw32)
39538b41dabSmrg				basic_machine=i686-pc
39638b41dabSmrg				basic_os=mingw32
39738b41dabSmrg				;;
39838b41dabSmrg			mingw32ce)
39938b41dabSmrg				basic_machine=arm-unknown
40038b41dabSmrg				basic_os=mingw32ce
40138b41dabSmrg				;;
40238b41dabSmrg			monitor)
40338b41dabSmrg				basic_machine=m68k-rom68k
40438b41dabSmrg				basic_os=coff
40538b41dabSmrg				;;
40638b41dabSmrg			morphos)
40738b41dabSmrg				basic_machine=powerpc-unknown
40838b41dabSmrg				basic_os=morphos
40938b41dabSmrg				;;
41038b41dabSmrg			moxiebox)
41138b41dabSmrg				basic_machine=moxie-unknown
41238b41dabSmrg				basic_os=moxiebox
41338b41dabSmrg				;;
41438b41dabSmrg			msdos)
41538b41dabSmrg				basic_machine=i386-pc
41638b41dabSmrg				basic_os=msdos
41738b41dabSmrg				;;
41838b41dabSmrg			msys)
41938b41dabSmrg				basic_machine=i686-pc
42038b41dabSmrg				basic_os=msys
42138b41dabSmrg				;;
42238b41dabSmrg			mvs)
42338b41dabSmrg				basic_machine=i370-ibm
42438b41dabSmrg				basic_os=mvs
42538b41dabSmrg				;;
42638b41dabSmrg			nacl)
42738b41dabSmrg				basic_machine=le32-unknown
42838b41dabSmrg				basic_os=nacl
42938b41dabSmrg				;;
43038b41dabSmrg			ncr3000)
43138b41dabSmrg				basic_machine=i486-ncr
43238b41dabSmrg				basic_os=sysv4
43338b41dabSmrg				;;
43438b41dabSmrg			netbsd386)
43538b41dabSmrg				basic_machine=i386-pc
43638b41dabSmrg				basic_os=netbsd
43738b41dabSmrg				;;
43838b41dabSmrg			netwinder)
43938b41dabSmrg				basic_machine=armv4l-rebel
44038b41dabSmrg				basic_os=linux
44138b41dabSmrg				;;
44238b41dabSmrg			news | news700 | news800 | news900)
44338b41dabSmrg				basic_machine=m68k-sony
44438b41dabSmrg				basic_os=newsos
44538b41dabSmrg				;;
44638b41dabSmrg			news1000)
44738b41dabSmrg				basic_machine=m68030-sony
44838b41dabSmrg				basic_os=newsos
44938b41dabSmrg				;;
45038b41dabSmrg			necv70)
45138b41dabSmrg				basic_machine=v70-nec
45238b41dabSmrg				basic_os=sysv
45338b41dabSmrg				;;
45438b41dabSmrg			nh3000)
45538b41dabSmrg				basic_machine=m68k-harris
45638b41dabSmrg				basic_os=cxux
45738b41dabSmrg				;;
45838b41dabSmrg			nh[45]000)
45938b41dabSmrg				basic_machine=m88k-harris
46038b41dabSmrg				basic_os=cxux
46138b41dabSmrg				;;
46238b41dabSmrg			nindy960)
46338b41dabSmrg				basic_machine=i960-intel
46438b41dabSmrg				basic_os=nindy
46538b41dabSmrg				;;
46638b41dabSmrg			mon960)
46738b41dabSmrg				basic_machine=i960-intel
46838b41dabSmrg				basic_os=mon960
46938b41dabSmrg				;;
47038b41dabSmrg			nonstopux)
47138b41dabSmrg				basic_machine=mips-compaq
47238b41dabSmrg				basic_os=nonstopux
47338b41dabSmrg				;;
47438b41dabSmrg			os400)
47538b41dabSmrg				basic_machine=powerpc-ibm
47638b41dabSmrg				basic_os=os400
47738b41dabSmrg				;;
47838b41dabSmrg			OSE68000 | ose68000)
47938b41dabSmrg				basic_machine=m68000-ericsson
48038b41dabSmrg				basic_os=ose
48138b41dabSmrg				;;
48238b41dabSmrg			os68k)
48338b41dabSmrg				basic_machine=m68k-none
48438b41dabSmrg				basic_os=os68k
48538b41dabSmrg				;;
48638b41dabSmrg			paragon)
48738b41dabSmrg				basic_machine=i860-intel
48838b41dabSmrg				basic_os=osf
48938b41dabSmrg				;;
49038b41dabSmrg			parisc)
49138b41dabSmrg				basic_machine=hppa-unknown
49238b41dabSmrg				basic_os=linux
49338b41dabSmrg				;;
49438b41dabSmrg			psp)
49538b41dabSmrg				basic_machine=mipsallegrexel-sony
49638b41dabSmrg				basic_os=psp
49738b41dabSmrg				;;
49838b41dabSmrg			pw32)
49938b41dabSmrg				basic_machine=i586-unknown
50038b41dabSmrg				basic_os=pw32
50138b41dabSmrg				;;
50238b41dabSmrg			rdos | rdos64)
50338b41dabSmrg				basic_machine=x86_64-pc
50438b41dabSmrg				basic_os=rdos
50538b41dabSmrg				;;
50638b41dabSmrg			rdos32)
50738b41dabSmrg				basic_machine=i386-pc
50838b41dabSmrg				basic_os=rdos
50938b41dabSmrg				;;
51038b41dabSmrg			rom68k)
51138b41dabSmrg				basic_machine=m68k-rom68k
51238b41dabSmrg				basic_os=coff
51338b41dabSmrg				;;
51438b41dabSmrg			sa29200)
51538b41dabSmrg				basic_machine=a29k-amd
51638b41dabSmrg				basic_os=udi
51738b41dabSmrg				;;
51838b41dabSmrg			sei)
51938b41dabSmrg				basic_machine=mips-sei
52038b41dabSmrg				basic_os=seiux
52138b41dabSmrg				;;
52238b41dabSmrg			sequent)
52338b41dabSmrg				basic_machine=i386-sequent
52438b41dabSmrg				basic_os=
52538b41dabSmrg				;;
52638b41dabSmrg			sps7)
52738b41dabSmrg				basic_machine=m68k-bull
52838b41dabSmrg				basic_os=sysv2
52938b41dabSmrg				;;
53038b41dabSmrg			st2000)
53138b41dabSmrg				basic_machine=m68k-tandem
53238b41dabSmrg				basic_os=
53338b41dabSmrg				;;
53438b41dabSmrg			stratus)
53538b41dabSmrg				basic_machine=i860-stratus
53638b41dabSmrg				basic_os=sysv4
53738b41dabSmrg				;;
53838b41dabSmrg			sun2)
53938b41dabSmrg				basic_machine=m68000-sun
54038b41dabSmrg				basic_os=
54138b41dabSmrg				;;
54238b41dabSmrg			sun2os3)
54338b41dabSmrg				basic_machine=m68000-sun
54438b41dabSmrg				basic_os=sunos3
54538b41dabSmrg				;;
54638b41dabSmrg			sun2os4)
54738b41dabSmrg				basic_machine=m68000-sun
54838b41dabSmrg				basic_os=sunos4
54938b41dabSmrg				;;
55038b41dabSmrg			sun3)
55138b41dabSmrg				basic_machine=m68k-sun
55238b41dabSmrg				basic_os=
55338b41dabSmrg				;;
55438b41dabSmrg			sun3os3)
55538b41dabSmrg				basic_machine=m68k-sun
55638b41dabSmrg				basic_os=sunos3
55738b41dabSmrg				;;
55838b41dabSmrg			sun3os4)
55938b41dabSmrg				basic_machine=m68k-sun
56038b41dabSmrg				basic_os=sunos4
56138b41dabSmrg				;;
56238b41dabSmrg			sun4)
56338b41dabSmrg				basic_machine=sparc-sun
56438b41dabSmrg				basic_os=
56538b41dabSmrg				;;
56638b41dabSmrg			sun4os3)
56738b41dabSmrg				basic_machine=sparc-sun
56838b41dabSmrg				basic_os=sunos3
56938b41dabSmrg				;;
57038b41dabSmrg			sun4os4)
57138b41dabSmrg				basic_machine=sparc-sun
57238b41dabSmrg				basic_os=sunos4
57338b41dabSmrg				;;
57438b41dabSmrg			sun4sol2)
57538b41dabSmrg				basic_machine=sparc-sun
57638b41dabSmrg				basic_os=solaris2
57738b41dabSmrg				;;
57838b41dabSmrg			sun386 | sun386i | roadrunner)
57938b41dabSmrg				basic_machine=i386-sun
58038b41dabSmrg				basic_os=
58138b41dabSmrg				;;
58238b41dabSmrg			sv1)
58338b41dabSmrg				basic_machine=sv1-cray
58438b41dabSmrg				basic_os=unicos
58538b41dabSmrg				;;
58638b41dabSmrg			symmetry)
58738b41dabSmrg				basic_machine=i386-sequent
58838b41dabSmrg				basic_os=dynix
58938b41dabSmrg				;;
59038b41dabSmrg			t3e)
59138b41dabSmrg				basic_machine=alphaev5-cray
59238b41dabSmrg				basic_os=unicos
59338b41dabSmrg				;;
59438b41dabSmrg			t90)
59538b41dabSmrg				basic_machine=t90-cray
59638b41dabSmrg				basic_os=unicos
59738b41dabSmrg				;;
59838b41dabSmrg			toad1)
59938b41dabSmrg				basic_machine=pdp10-xkl
60038b41dabSmrg				basic_os=tops20
60138b41dabSmrg				;;
60238b41dabSmrg			tpf)
60338b41dabSmrg				basic_machine=s390x-ibm
60438b41dabSmrg				basic_os=tpf
60538b41dabSmrg				;;
60638b41dabSmrg			udi29k)
60738b41dabSmrg				basic_machine=a29k-amd
60838b41dabSmrg				basic_os=udi
60938b41dabSmrg				;;
61038b41dabSmrg			ultra3)
61138b41dabSmrg				basic_machine=a29k-nyu
61238b41dabSmrg				basic_os=sym1
61338b41dabSmrg				;;
61438b41dabSmrg			v810 | necv810)
61538b41dabSmrg				basic_machine=v810-nec
61638b41dabSmrg				basic_os=none
61738b41dabSmrg				;;
61838b41dabSmrg			vaxv)
61938b41dabSmrg				basic_machine=vax-dec
62038b41dabSmrg				basic_os=sysv
62138b41dabSmrg				;;
62238b41dabSmrg			vms)
62338b41dabSmrg				basic_machine=vax-dec
62438b41dabSmrg				basic_os=vms
62538b41dabSmrg				;;
62638b41dabSmrg			vsta)
62738b41dabSmrg				basic_machine=i386-pc
62838b41dabSmrg				basic_os=vsta
62938b41dabSmrg				;;
63038b41dabSmrg			vxworks960)
63138b41dabSmrg				basic_machine=i960-wrs
63238b41dabSmrg				basic_os=vxworks
63338b41dabSmrg				;;
63438b41dabSmrg			vxworks68)
63538b41dabSmrg				basic_machine=m68k-wrs
63638b41dabSmrg				basic_os=vxworks
63738b41dabSmrg				;;
63838b41dabSmrg			vxworks29k)
63938b41dabSmrg				basic_machine=a29k-wrs
64038b41dabSmrg				basic_os=vxworks
64138b41dabSmrg				;;
64238b41dabSmrg			xbox)
64338b41dabSmrg				basic_machine=i686-pc
64438b41dabSmrg				basic_os=mingw32
64538b41dabSmrg				;;
64638b41dabSmrg			ymp)
64738b41dabSmrg				basic_machine=ymp-cray
64838b41dabSmrg				basic_os=unicos
64938b41dabSmrg				;;
65038b41dabSmrg			*)
65138b41dabSmrg				basic_machine=$1
65238b41dabSmrg				basic_os=
65338b41dabSmrg				;;
65438b41dabSmrg		esac
65538b41dabSmrg		;;
65638b41dabSmrgesac
65738b41dabSmrg
65838b41dabSmrg# Decode 1-component or ad-hoc basic machines
65938b41dabSmrgcase $basic_machine in
66038b41dabSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
66138b41dabSmrg	# some cases the only manufacturer, in others, it is the most popular.
66238b41dabSmrg	w89k)
66338b41dabSmrg		cpu=hppa1.1
66438b41dabSmrg		vendor=winbond
66538b41dabSmrg		;;
66638b41dabSmrg	op50n)
66738b41dabSmrg		cpu=hppa1.1
66838b41dabSmrg		vendor=oki
66938b41dabSmrg		;;
67038b41dabSmrg	op60c)
67138b41dabSmrg		cpu=hppa1.1
67238b41dabSmrg		vendor=oki
67338b41dabSmrg		;;
67438b41dabSmrg	ibm*)
67538b41dabSmrg		cpu=i370
67638b41dabSmrg		vendor=ibm
67738b41dabSmrg		;;
67838b41dabSmrg	orion105)
67938b41dabSmrg		cpu=clipper
68038b41dabSmrg		vendor=highlevel
68138b41dabSmrg		;;
68238b41dabSmrg	mac | mpw | mac-mpw)
68338b41dabSmrg		cpu=m68k
68438b41dabSmrg		vendor=apple
68538b41dabSmrg		;;
68638b41dabSmrg	pmac | pmac-mpw)
68738b41dabSmrg		cpu=powerpc
68838b41dabSmrg		vendor=apple
68938b41dabSmrg		;;
69038b41dabSmrg
69138b41dabSmrg	# Recognize the various machine names and aliases which stand
69238b41dabSmrg	# for a CPU type and a company and sometimes even an OS.
69338b41dabSmrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
69438b41dabSmrg		cpu=m68000
69538b41dabSmrg		vendor=att
69638b41dabSmrg		;;
69738b41dabSmrg	3b*)
69838b41dabSmrg		cpu=we32k
69938b41dabSmrg		vendor=att
70038b41dabSmrg		;;
70138b41dabSmrg	bluegene*)
70238b41dabSmrg		cpu=powerpc
70338b41dabSmrg		vendor=ibm
70438b41dabSmrg		basic_os=cnk
70538b41dabSmrg		;;
70638b41dabSmrg	decsystem10* | dec10*)
70738b41dabSmrg		cpu=pdp10
70838b41dabSmrg		vendor=dec
70938b41dabSmrg		basic_os=tops10
71038b41dabSmrg		;;
71138b41dabSmrg	decsystem20* | dec20*)
71238b41dabSmrg		cpu=pdp10
71338b41dabSmrg		vendor=dec
71438b41dabSmrg		basic_os=tops20
71538b41dabSmrg		;;
71638b41dabSmrg	delta | 3300 | motorola-3300 | motorola-delta \
71738b41dabSmrg	      | 3300-motorola | delta-motorola)
71838b41dabSmrg		cpu=m68k
71938b41dabSmrg		vendor=motorola
72038b41dabSmrg		;;
72138b41dabSmrg	dpx2*)
72238b41dabSmrg		cpu=m68k
72338b41dabSmrg		vendor=bull
72438b41dabSmrg		basic_os=sysv3
72538b41dabSmrg		;;
72638b41dabSmrg	encore | umax | mmax)
72738b41dabSmrg		cpu=ns32k
72838b41dabSmrg		vendor=encore
72938b41dabSmrg		;;
73038b41dabSmrg	elxsi)
73138b41dabSmrg		cpu=elxsi
73238b41dabSmrg		vendor=elxsi
73338b41dabSmrg		basic_os=${basic_os:-bsd}
73438b41dabSmrg		;;
73538b41dabSmrg	fx2800)
73638b41dabSmrg		cpu=i860
73738b41dabSmrg		vendor=alliant
73838b41dabSmrg		;;
73938b41dabSmrg	genix)
74038b41dabSmrg		cpu=ns32k
74138b41dabSmrg		vendor=ns
74238b41dabSmrg		;;
74338b41dabSmrg	h3050r* | hiux*)
74438b41dabSmrg		cpu=hppa1.1
74538b41dabSmrg		vendor=hitachi
74638b41dabSmrg		basic_os=hiuxwe2
74738b41dabSmrg		;;
74838b41dabSmrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
74938b41dabSmrg		cpu=hppa1.0
75038b41dabSmrg		vendor=hp
75138b41dabSmrg		;;
75238b41dabSmrg	hp9k2[0-9][0-9] | hp9k31[0-9])
75338b41dabSmrg		cpu=m68000
75438b41dabSmrg		vendor=hp
75538b41dabSmrg		;;
75638b41dabSmrg	hp9k3[2-9][0-9])
75738b41dabSmrg		cpu=m68k
75838b41dabSmrg		vendor=hp
75938b41dabSmrg		;;
76038b41dabSmrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
76138b41dabSmrg		cpu=hppa1.0
76238b41dabSmrg		vendor=hp
76338b41dabSmrg		;;
76438b41dabSmrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
76538b41dabSmrg		cpu=hppa1.1
76638b41dabSmrg		vendor=hp
76738b41dabSmrg		;;
76838b41dabSmrg	hp9k78[0-9] | hp78[0-9])
76938b41dabSmrg		# FIXME: really hppa2.0-hp
77038b41dabSmrg		cpu=hppa1.1
77138b41dabSmrg		vendor=hp
77238b41dabSmrg		;;
77338b41dabSmrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
77438b41dabSmrg		# FIXME: really hppa2.0-hp
77538b41dabSmrg		cpu=hppa1.1
77638b41dabSmrg		vendor=hp
77738b41dabSmrg		;;
77838b41dabSmrg	hp9k8[0-9][13679] | hp8[0-9][13679])
77938b41dabSmrg		cpu=hppa1.1
78038b41dabSmrg		vendor=hp
78138b41dabSmrg		;;
78238b41dabSmrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
78338b41dabSmrg		cpu=hppa1.0
78438b41dabSmrg		vendor=hp
78538b41dabSmrg		;;
78638b41dabSmrg	i*86v32)
78738b41dabSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
78838b41dabSmrg		vendor=pc
78938b41dabSmrg		basic_os=sysv32
79038b41dabSmrg		;;
79138b41dabSmrg	i*86v4*)
79238b41dabSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79338b41dabSmrg		vendor=pc
79438b41dabSmrg		basic_os=sysv4
79538b41dabSmrg		;;
79638b41dabSmrg	i*86v)
79738b41dabSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79838b41dabSmrg		vendor=pc
79938b41dabSmrg		basic_os=sysv
80038b41dabSmrg		;;
80138b41dabSmrg	i*86sol2)
80238b41dabSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
80338b41dabSmrg		vendor=pc
80438b41dabSmrg		basic_os=solaris2
80538b41dabSmrg		;;
80638b41dabSmrg	j90 | j90-cray)
80738b41dabSmrg		cpu=j90
80838b41dabSmrg		vendor=cray
80938b41dabSmrg		basic_os=${basic_os:-unicos}
81038b41dabSmrg		;;
81138b41dabSmrg	iris | iris4d)
81238b41dabSmrg		cpu=mips
81338b41dabSmrg		vendor=sgi
81438b41dabSmrg		case $basic_os in
81538b41dabSmrg		    irix*)
81638b41dabSmrg			;;
81738b41dabSmrg		    *)
81838b41dabSmrg			basic_os=irix4
81938b41dabSmrg			;;
82038b41dabSmrg		esac
82138b41dabSmrg		;;
82238b41dabSmrg	miniframe)
82338b41dabSmrg		cpu=m68000
82438b41dabSmrg		vendor=convergent
82538b41dabSmrg		;;
82638b41dabSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
82738b41dabSmrg		cpu=m68k
82838b41dabSmrg		vendor=atari
82938b41dabSmrg		basic_os=mint
83038b41dabSmrg		;;
83138b41dabSmrg	news-3600 | risc-news)
83238b41dabSmrg		cpu=mips
83338b41dabSmrg		vendor=sony
83438b41dabSmrg		basic_os=newsos
83538b41dabSmrg		;;
83638b41dabSmrg	next | m*-next)
83738b41dabSmrg		cpu=m68k
83838b41dabSmrg		vendor=next
83938b41dabSmrg		case $basic_os in
84038b41dabSmrg		    openstep*)
84138b41dabSmrg		        ;;
84238b41dabSmrg		    nextstep*)
84338b41dabSmrg			;;
84438b41dabSmrg		    ns2*)
84538b41dabSmrg		      basic_os=nextstep2
84638b41dabSmrg			;;
84738b41dabSmrg		    *)
84838b41dabSmrg		      basic_os=nextstep3
84938b41dabSmrg			;;
85038b41dabSmrg		esac
85138b41dabSmrg		;;
85238b41dabSmrg	np1)
85338b41dabSmrg		cpu=np1
85438b41dabSmrg		vendor=gould
85538b41dabSmrg		;;
85638b41dabSmrg	op50n-* | op60c-*)
85738b41dabSmrg		cpu=hppa1.1
85838b41dabSmrg		vendor=oki
85938b41dabSmrg		basic_os=proelf
86038b41dabSmrg		;;
86138b41dabSmrg	pa-hitachi)
86238b41dabSmrg		cpu=hppa1.1
86338b41dabSmrg		vendor=hitachi
86438b41dabSmrg		basic_os=hiuxwe2
86538b41dabSmrg		;;
86638b41dabSmrg	pbd)
86738b41dabSmrg		cpu=sparc
86838b41dabSmrg		vendor=tti
86938b41dabSmrg		;;
87038b41dabSmrg	pbb)
87138b41dabSmrg		cpu=m68k
87238b41dabSmrg		vendor=tti
87338b41dabSmrg		;;
87438b41dabSmrg	pc532)
87538b41dabSmrg		cpu=ns32k
87638b41dabSmrg		vendor=pc532
87738b41dabSmrg		;;
87838b41dabSmrg	pn)
87938b41dabSmrg		cpu=pn
88038b41dabSmrg		vendor=gould
88138b41dabSmrg		;;
88238b41dabSmrg	power)
88338b41dabSmrg		cpu=power
88438b41dabSmrg		vendor=ibm
88538b41dabSmrg		;;
88638b41dabSmrg	ps2)
88738b41dabSmrg		cpu=i386
88838b41dabSmrg		vendor=ibm
88938b41dabSmrg		;;
89038b41dabSmrg	rm[46]00)
89138b41dabSmrg		cpu=mips
89238b41dabSmrg		vendor=siemens
89338b41dabSmrg		;;
89438b41dabSmrg	rtpc | rtpc-*)
89538b41dabSmrg		cpu=romp
89638b41dabSmrg		vendor=ibm
89738b41dabSmrg		;;
89838b41dabSmrg	sde)
89938b41dabSmrg		cpu=mipsisa32
90038b41dabSmrg		vendor=sde
90138b41dabSmrg		basic_os=${basic_os:-elf}
90238b41dabSmrg		;;
90338b41dabSmrg	simso-wrs)
90438b41dabSmrg		cpu=sparclite
90538b41dabSmrg		vendor=wrs
90638b41dabSmrg		basic_os=vxworks
90738b41dabSmrg		;;
90838b41dabSmrg	tower | tower-32)
90938b41dabSmrg		cpu=m68k
91038b41dabSmrg		vendor=ncr
91138b41dabSmrg		;;
91238b41dabSmrg	vpp*|vx|vx-*)
91338b41dabSmrg		cpu=f301
91438b41dabSmrg		vendor=fujitsu
91538b41dabSmrg		;;
91638b41dabSmrg	w65)
91738b41dabSmrg		cpu=w65
91838b41dabSmrg		vendor=wdc
91938b41dabSmrg		;;
92038b41dabSmrg	w89k-*)
92138b41dabSmrg		cpu=hppa1.1
92238b41dabSmrg		vendor=winbond
92338b41dabSmrg		basic_os=proelf
92438b41dabSmrg		;;
92538b41dabSmrg	none)
92638b41dabSmrg		cpu=none
92738b41dabSmrg		vendor=none
92838b41dabSmrg		;;
92938b41dabSmrg	leon|leon[3-9])
93038b41dabSmrg		cpu=sparc
93138b41dabSmrg		vendor=$basic_machine
93238b41dabSmrg		;;
93338b41dabSmrg	leon-*|leon[3-9]-*)
93438b41dabSmrg		cpu=sparc
93538b41dabSmrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
93638b41dabSmrg		;;
93738b41dabSmrg
93838b41dabSmrg	*-*)
93938b41dabSmrg		# shellcheck disable=SC2162
94038b41dabSmrg		saved_IFS=$IFS
94138b41dabSmrg		IFS="-" read cpu vendor <<EOF
94238b41dabSmrg$basic_machine
94338b41dabSmrgEOF
94438b41dabSmrg		IFS=$saved_IFS
94538b41dabSmrg		;;
94638b41dabSmrg	# We use `pc' rather than `unknown'
94738b41dabSmrg	# because (1) that's what they normally are, and
94838b41dabSmrg	# (2) the word "unknown" tends to confuse beginning users.
94938b41dabSmrg	i*86 | x86_64)
95038b41dabSmrg		cpu=$basic_machine
95138b41dabSmrg		vendor=pc
95238b41dabSmrg		;;
95338b41dabSmrg	# These rules are duplicated from below for sake of the special case above;
95438b41dabSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
95538b41dabSmrg	pc98)
95638b41dabSmrg		cpu=i386
95738b41dabSmrg		vendor=pc
95838b41dabSmrg		;;
95938b41dabSmrg	x64 | amd64)
96038b41dabSmrg		cpu=x86_64
96138b41dabSmrg		vendor=pc
96238b41dabSmrg		;;
96338b41dabSmrg	# Recognize the basic CPU types without company name.
96438b41dabSmrg	*)
96538b41dabSmrg		cpu=$basic_machine
96638b41dabSmrg		vendor=unknown
96738b41dabSmrg		;;
96838b41dabSmrgesac
96938b41dabSmrg
97038b41dabSmrgunset -v basic_machine
97138b41dabSmrg
97238b41dabSmrg# Decode basic machines in the full and proper CPU-Company form.
97338b41dabSmrgcase $cpu-$vendor in
97438b41dabSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
97538b41dabSmrg	# some cases the only manufacturer, in others, it is the most popular.
97638b41dabSmrg	craynv-unknown)
97738b41dabSmrg		vendor=cray
97838b41dabSmrg		basic_os=${basic_os:-unicosmp}
97938b41dabSmrg		;;
98038b41dabSmrg	c90-unknown | c90-cray)
98138b41dabSmrg		vendor=cray
98238b41dabSmrg		basic_os=${Basic_os:-unicos}
98338b41dabSmrg		;;
98438b41dabSmrg	fx80-unknown)
98538b41dabSmrg		vendor=alliant
98638b41dabSmrg		;;
98738b41dabSmrg	romp-unknown)
98838b41dabSmrg		vendor=ibm
98938b41dabSmrg		;;
99038b41dabSmrg	mmix-unknown)
99138b41dabSmrg		vendor=knuth
99238b41dabSmrg		;;
99338b41dabSmrg	microblaze-unknown | microblazeel-unknown)
99438b41dabSmrg		vendor=xilinx
99538b41dabSmrg		;;
99638b41dabSmrg	rs6000-unknown)
99738b41dabSmrg		vendor=ibm
99838b41dabSmrg		;;
99938b41dabSmrg	vax-unknown)
100038b41dabSmrg		vendor=dec
100138b41dabSmrg		;;
100238b41dabSmrg	pdp11-unknown)
100338b41dabSmrg		vendor=dec
100438b41dabSmrg		;;
100538b41dabSmrg	we32k-unknown)
100638b41dabSmrg		vendor=att
100738b41dabSmrg		;;
100838b41dabSmrg	cydra-unknown)
100938b41dabSmrg		vendor=cydrome
101038b41dabSmrg		;;
101138b41dabSmrg	i370-ibm*)
101238b41dabSmrg		vendor=ibm
101338b41dabSmrg		;;
101438b41dabSmrg	orion-unknown)
101538b41dabSmrg		vendor=highlevel
101638b41dabSmrg		;;
101738b41dabSmrg	xps-unknown | xps100-unknown)
101838b41dabSmrg		cpu=xps100
101938b41dabSmrg		vendor=honeywell
102038b41dabSmrg		;;
102138b41dabSmrg
102238b41dabSmrg	# Here we normalize CPU types with a missing or matching vendor
102338b41dabSmrg	armh-unknown | armh-alt)
102438b41dabSmrg		cpu=armv7l
102538b41dabSmrg		vendor=alt
102638b41dabSmrg		basic_os=${basic_os:-linux-gnueabihf}
102738b41dabSmrg		;;
102838b41dabSmrg	dpx20-unknown | dpx20-bull)
102938b41dabSmrg		cpu=rs6000
103038b41dabSmrg		vendor=bull
103138b41dabSmrg		basic_os=${basic_os:-bosx}
103238b41dabSmrg		;;
103338b41dabSmrg
103438b41dabSmrg	# Here we normalize CPU types irrespective of the vendor
103538b41dabSmrg	amd64-*)
103638b41dabSmrg		cpu=x86_64
103738b41dabSmrg		;;
103838b41dabSmrg	blackfin-*)
103938b41dabSmrg		cpu=bfin
104038b41dabSmrg		basic_os=linux
104138b41dabSmrg		;;
104238b41dabSmrg	c54x-*)
104338b41dabSmrg		cpu=tic54x
104438b41dabSmrg		;;
104538b41dabSmrg	c55x-*)
104638b41dabSmrg		cpu=tic55x
104738b41dabSmrg		;;
104838b41dabSmrg	c6x-*)
104938b41dabSmrg		cpu=tic6x
105038b41dabSmrg		;;
105138b41dabSmrg	e500v[12]-*)
105238b41dabSmrg		cpu=powerpc
105338b41dabSmrg		basic_os=${basic_os}"spe"
105438b41dabSmrg		;;
105538b41dabSmrg	mips3*-*)
105638b41dabSmrg		cpu=mips64
105738b41dabSmrg		;;
105838b41dabSmrg	ms1-*)
105938b41dabSmrg		cpu=mt
106038b41dabSmrg		;;
106138b41dabSmrg	m68knommu-*)
106238b41dabSmrg		cpu=m68k
106338b41dabSmrg		basic_os=linux
106438b41dabSmrg		;;
106538b41dabSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
106638b41dabSmrg		cpu=s12z
106738b41dabSmrg		;;
106838b41dabSmrg	openrisc-*)
106938b41dabSmrg		cpu=or32
107038b41dabSmrg		;;
107138b41dabSmrg	parisc-*)
107238b41dabSmrg		cpu=hppa
107338b41dabSmrg		basic_os=linux
107438b41dabSmrg		;;
107538b41dabSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
107638b41dabSmrg		cpu=i586
107738b41dabSmrg		;;
107838b41dabSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
107938b41dabSmrg		cpu=i686
108038b41dabSmrg		;;
108138b41dabSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
108238b41dabSmrg		cpu=i686
108338b41dabSmrg		;;
108438b41dabSmrg	pentium4-*)
108538b41dabSmrg		cpu=i786
108638b41dabSmrg		;;
108738b41dabSmrg	pc98-*)
108838b41dabSmrg		cpu=i386
108938b41dabSmrg		;;
109038b41dabSmrg	ppc-* | ppcbe-*)
109138b41dabSmrg		cpu=powerpc
109238b41dabSmrg		;;
109338b41dabSmrg	ppcle-* | powerpclittle-*)
109438b41dabSmrg		cpu=powerpcle
109538b41dabSmrg		;;
109638b41dabSmrg	ppc64-*)
109738b41dabSmrg		cpu=powerpc64
109838b41dabSmrg		;;
109938b41dabSmrg	ppc64le-* | powerpc64little-*)
110038b41dabSmrg		cpu=powerpc64le
110138b41dabSmrg		;;
110238b41dabSmrg	sb1-*)
110338b41dabSmrg		cpu=mipsisa64sb1
110438b41dabSmrg		;;
110538b41dabSmrg	sb1el-*)
110638b41dabSmrg		cpu=mipsisa64sb1el
110738b41dabSmrg		;;
110838b41dabSmrg	sh5e[lb]-*)
110938b41dabSmrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
111038b41dabSmrg		;;
111138b41dabSmrg	spur-*)
111238b41dabSmrg		cpu=spur
111338b41dabSmrg		;;
111438b41dabSmrg	strongarm-* | thumb-*)
111538b41dabSmrg		cpu=arm
111638b41dabSmrg		;;
111738b41dabSmrg	tx39-*)
111838b41dabSmrg		cpu=mipstx39
111938b41dabSmrg		;;
112038b41dabSmrg	tx39el-*)
112138b41dabSmrg		cpu=mipstx39el
112238b41dabSmrg		;;
112338b41dabSmrg	x64-*)
112438b41dabSmrg		cpu=x86_64
112538b41dabSmrg		;;
112638b41dabSmrg	xscale-* | xscalee[bl]-*)
112738b41dabSmrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
112838b41dabSmrg		;;
112938b41dabSmrg	arm64-* | aarch64le-*)
113038b41dabSmrg		cpu=aarch64
113138b41dabSmrg		;;
113238b41dabSmrg
113338b41dabSmrg	# Recognize the canonical CPU Types that limit and/or modify the
113438b41dabSmrg	# company names they are paired with.
113538b41dabSmrg	cr16-*)
113638b41dabSmrg		basic_os=${basic_os:-elf}
113738b41dabSmrg		;;
113838b41dabSmrg	crisv32-* | etraxfs*-*)
113938b41dabSmrg		cpu=crisv32
114038b41dabSmrg		vendor=axis
114138b41dabSmrg		;;
114238b41dabSmrg	cris-* | etrax*-*)
114338b41dabSmrg		cpu=cris
114438b41dabSmrg		vendor=axis
114538b41dabSmrg		;;
114638b41dabSmrg	crx-*)
114738b41dabSmrg		basic_os=${basic_os:-elf}
114838b41dabSmrg		;;
114938b41dabSmrg	neo-tandem)
115038b41dabSmrg		cpu=neo
115138b41dabSmrg		vendor=tandem
115238b41dabSmrg		;;
115338b41dabSmrg	nse-tandem)
115438b41dabSmrg		cpu=nse
115538b41dabSmrg		vendor=tandem
115638b41dabSmrg		;;
115738b41dabSmrg	nsr-tandem)
115838b41dabSmrg		cpu=nsr
115938b41dabSmrg		vendor=tandem
116038b41dabSmrg		;;
116138b41dabSmrg	nsv-tandem)
116238b41dabSmrg		cpu=nsv
116338b41dabSmrg		vendor=tandem
116438b41dabSmrg		;;
116538b41dabSmrg	nsx-tandem)
116638b41dabSmrg		cpu=nsx
116738b41dabSmrg		vendor=tandem
116838b41dabSmrg		;;
116938b41dabSmrg	mipsallegrexel-sony)
117038b41dabSmrg		cpu=mipsallegrexel
117138b41dabSmrg		vendor=sony
117238b41dabSmrg		;;
117338b41dabSmrg	tile*-*)
117438b41dabSmrg		basic_os=${basic_os:-linux-gnu}
117538b41dabSmrg		;;
117638b41dabSmrg
117738b41dabSmrg	*)
117838b41dabSmrg		# Recognize the canonical CPU types that are allowed with any
117938b41dabSmrg		# company name.
118038b41dabSmrg		case $cpu in
118138b41dabSmrg			1750a | 580 \
118238b41dabSmrg			| a29k \
118338b41dabSmrg			| aarch64 | aarch64_be \
118438b41dabSmrg			| abacus \
118538b41dabSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
118638b41dabSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
118738b41dabSmrg			| alphapca5[67] | alpha64pca5[67] \
118838b41dabSmrg			| am33_2.0 \
118938b41dabSmrg			| amdgcn \
119038b41dabSmrg			| arc | arceb | arc32 | arc64 \
119138b41dabSmrg			| arm | arm[lb]e | arme[lb] | armv* \
119238b41dabSmrg			| avr | avr32 \
119338b41dabSmrg			| asmjs \
119438b41dabSmrg			| ba \
119538b41dabSmrg			| be32 | be64 \
119638b41dabSmrg			| bfin | bpf | bs2000 \
119738b41dabSmrg			| c[123]* | c30 | [cjt]90 | c4x \
119838b41dabSmrg			| c8051 | clipper | craynv | csky | cydra \
119938b41dabSmrg			| d10v | d30v | dlx | dsp16xx \
120038b41dabSmrg			| e2k | elxsi | epiphany \
120138b41dabSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
120238b41dabSmrg			| h8300 | h8500 \
120338b41dabSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
120438b41dabSmrg			| hexagon \
120538b41dabSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
120638b41dabSmrg			| ip2k | iq2000 \
120738b41dabSmrg			| k1om \
120838b41dabSmrg			| le32 | le64 \
120938b41dabSmrg			| lm32 \
121038b41dabSmrg			| loongarch32 | loongarch64 \
121138b41dabSmrg			| m32c | m32r | m32rle \
121238b41dabSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
121338b41dabSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
121438b41dabSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
121538b41dabSmrg			| microblaze | microblazeel \
121638b41dabSmrg			| mips | mipsbe | mipseb | mipsel | mipsle \
121738b41dabSmrg			| mips16 \
121838b41dabSmrg			| mips64 | mips64eb | mips64el \
121938b41dabSmrg			| mips64octeon | mips64octeonel \
122038b41dabSmrg			| mips64orion | mips64orionel \
122138b41dabSmrg			| mips64r5900 | mips64r5900el \
122238b41dabSmrg			| mips64vr | mips64vrel \
122338b41dabSmrg			| mips64vr4100 | mips64vr4100el \
122438b41dabSmrg			| mips64vr4300 | mips64vr4300el \
122538b41dabSmrg			| mips64vr5000 | mips64vr5000el \
122638b41dabSmrg			| mips64vr5900 | mips64vr5900el \
122738b41dabSmrg			| mipsisa32 | mipsisa32el \
122838b41dabSmrg			| mipsisa32r2 | mipsisa32r2el \
122938b41dabSmrg			| mipsisa32r3 | mipsisa32r3el \
123038b41dabSmrg			| mipsisa32r5 | mipsisa32r5el \
123138b41dabSmrg			| mipsisa32r6 | mipsisa32r6el \
123238b41dabSmrg			| mipsisa64 | mipsisa64el \
123338b41dabSmrg			| mipsisa64r2 | mipsisa64r2el \
123438b41dabSmrg			| mipsisa64r3 | mipsisa64r3el \
123538b41dabSmrg			| mipsisa64r5 | mipsisa64r5el \
123638b41dabSmrg			| mipsisa64r6 | mipsisa64r6el \
123738b41dabSmrg			| mipsisa64sb1 | mipsisa64sb1el \
123838b41dabSmrg			| mipsisa64sr71k | mipsisa64sr71kel \
123938b41dabSmrg			| mipsr5900 | mipsr5900el \
124038b41dabSmrg			| mipstx39 | mipstx39el \
124138b41dabSmrg			| mmix \
124238b41dabSmrg			| mn10200 | mn10300 \
124338b41dabSmrg			| moxie \
124438b41dabSmrg			| mt \
124538b41dabSmrg			| msp430 \
124638b41dabSmrg			| nds32 | nds32le | nds32be \
124738b41dabSmrg			| nfp \
124838b41dabSmrg			| nios | nios2 | nios2eb | nios2el \
124938b41dabSmrg			| none | np1 | ns16k | ns32k | nvptx \
125038b41dabSmrg			| open8 \
125138b41dabSmrg			| or1k* \
125238b41dabSmrg			| or32 \
125338b41dabSmrg			| orion \
125438b41dabSmrg			| picochip \
125538b41dabSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
125638b41dabSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
125738b41dabSmrg			| pru \
125838b41dabSmrg			| pyramid \
125938b41dabSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
126038b41dabSmrg			| rl78 | romp | rs6000 | rx \
126138b41dabSmrg			| s390 | s390x \
126238b41dabSmrg			| score \
126338b41dabSmrg			| sh | shl \
126438b41dabSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
126538b41dabSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
126638b41dabSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
126738b41dabSmrg			| sparclite \
126838b41dabSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
126938b41dabSmrg			| spu \
127038b41dabSmrg			| tahoe \
127138b41dabSmrg			| thumbv7* \
127238b41dabSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
127338b41dabSmrg			| tron \
127438b41dabSmrg			| ubicom32 \
127538b41dabSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
127638b41dabSmrg			| vax \
127738b41dabSmrg			| visium \
127838b41dabSmrg			| w65 \
127938b41dabSmrg			| wasm32 | wasm64 \
128038b41dabSmrg			| we32k \
128138b41dabSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
128238b41dabSmrg			| xstormy16 | xtensa* \
128338b41dabSmrg			| ymp \
128438b41dabSmrg			| z8k | z80)
128538b41dabSmrg				;;
128638b41dabSmrg
128738b41dabSmrg			*)
128838b41dabSmrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
128938b41dabSmrg				exit 1
129038b41dabSmrg				;;
129138b41dabSmrg		esac
129238b41dabSmrg		;;
129338b41dabSmrgesac
129438b41dabSmrg
129538b41dabSmrg# Here we canonicalize certain aliases for manufacturers.
129638b41dabSmrgcase $vendor in
129738b41dabSmrg	digital*)
129838b41dabSmrg		vendor=dec
129938b41dabSmrg		;;
130038b41dabSmrg	commodore*)
130138b41dabSmrg		vendor=cbm
130238b41dabSmrg		;;
130338b41dabSmrg	*)
130438b41dabSmrg		;;
130538b41dabSmrgesac
130638b41dabSmrg
130738b41dabSmrg# Decode manufacturer-specific aliases for certain operating systems.
130838b41dabSmrg
130938b41dabSmrgif test x$basic_os != x
131038b41dabSmrgthen
131138b41dabSmrg
131238b41dabSmrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
131338b41dabSmrg# set os.
131438b41dabSmrgcase $basic_os in
131538b41dabSmrg	gnu/linux*)
131638b41dabSmrg		kernel=linux
131738b41dabSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
131838b41dabSmrg		;;
131938b41dabSmrg	os2-emx)
132038b41dabSmrg		kernel=os2
132138b41dabSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
132238b41dabSmrg		;;
132338b41dabSmrg	nto-qnx*)
132438b41dabSmrg		kernel=nto
132538b41dabSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
132638b41dabSmrg		;;
132738b41dabSmrg	*-*)
132838b41dabSmrg		# shellcheck disable=SC2162
132938b41dabSmrg		saved_IFS=$IFS
133038b41dabSmrg		IFS="-" read kernel os <<EOF
133138b41dabSmrg$basic_os
133238b41dabSmrgEOF
133338b41dabSmrg		IFS=$saved_IFS
133438b41dabSmrg		;;
133538b41dabSmrg	# Default OS when just kernel was specified
133638b41dabSmrg	nto*)
133738b41dabSmrg		kernel=nto
133838b41dabSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
133938b41dabSmrg		;;
134038b41dabSmrg	linux*)
134138b41dabSmrg		kernel=linux
134238b41dabSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
134338b41dabSmrg		;;
134438b41dabSmrg	managarm*)
134538b41dabSmrg		kernel=managarm
134638b41dabSmrg		os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
134738b41dabSmrg		;;
134838b41dabSmrg	*)
134938b41dabSmrg		kernel=
135038b41dabSmrg		os=$basic_os
135138b41dabSmrg		;;
135238b41dabSmrgesac
135338b41dabSmrg
135438b41dabSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
135538b41dabSmrg# etc.)
135638b41dabSmrgcase $os in
135738b41dabSmrg	# First match some system type aliases that might get confused
135838b41dabSmrg	# with valid system types.
135938b41dabSmrg	# solaris* is a basic system type, with this one exception.
136038b41dabSmrg	auroraux)
136138b41dabSmrg		os=auroraux
136238b41dabSmrg		;;
136338b41dabSmrg	bluegene*)
136438b41dabSmrg		os=cnk
136538b41dabSmrg		;;
136638b41dabSmrg	solaris1 | solaris1.*)
136738b41dabSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
136838b41dabSmrg		;;
136938b41dabSmrg	solaris)
137038b41dabSmrg		os=solaris2
137138b41dabSmrg		;;
137238b41dabSmrg	unixware*)
137338b41dabSmrg		os=sysv4.2uw
137438b41dabSmrg		;;
137538b41dabSmrg	# es1800 is here to avoid being matched by es* (a different OS)
137638b41dabSmrg	es1800*)
137738b41dabSmrg		os=ose
137838b41dabSmrg		;;
137938b41dabSmrg	# Some version numbers need modification
138038b41dabSmrg	chorusos*)
138138b41dabSmrg		os=chorusos
138238b41dabSmrg		;;
138338b41dabSmrg	isc)
138438b41dabSmrg		os=isc2.2
138538b41dabSmrg		;;
138638b41dabSmrg	sco6)
138738b41dabSmrg		os=sco5v6
138838b41dabSmrg		;;
138938b41dabSmrg	sco5)
139038b41dabSmrg		os=sco3.2v5
139138b41dabSmrg		;;
139238b41dabSmrg	sco4)
139338b41dabSmrg		os=sco3.2v4
139438b41dabSmrg		;;
139538b41dabSmrg	sco3.2.[4-9]*)
139638b41dabSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
139738b41dabSmrg		;;
139838b41dabSmrg	sco*v* | scout)
139938b41dabSmrg		# Don't match below
140038b41dabSmrg		;;
140138b41dabSmrg	sco*)
140238b41dabSmrg		os=sco3.2v2
140338b41dabSmrg		;;
140438b41dabSmrg	psos*)
140538b41dabSmrg		os=psos
140638b41dabSmrg		;;
140738b41dabSmrg	qnx*)
140838b41dabSmrg		os=qnx
140938b41dabSmrg		;;
141038b41dabSmrg	hiux*)
141138b41dabSmrg		os=hiuxwe2
141238b41dabSmrg		;;
141338b41dabSmrg	lynx*178)
141438b41dabSmrg		os=lynxos178
141538b41dabSmrg		;;
141638b41dabSmrg	lynx*5)
141738b41dabSmrg		os=lynxos5
141838b41dabSmrg		;;
141938b41dabSmrg	lynxos*)
142038b41dabSmrg		# don't get caught up in next wildcard
142138b41dabSmrg		;;
142238b41dabSmrg	lynx*)
142338b41dabSmrg		os=lynxos
142438b41dabSmrg		;;
142538b41dabSmrg	mac[0-9]*)
142638b41dabSmrg		os=`echo "$os" | sed -e 's|mac|macos|'`
142738b41dabSmrg		;;
142838b41dabSmrg	opened*)
142938b41dabSmrg		os=openedition
143038b41dabSmrg		;;
143138b41dabSmrg	os400*)
143238b41dabSmrg		os=os400
143338b41dabSmrg		;;
143438b41dabSmrg	sunos5*)
143538b41dabSmrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
143638b41dabSmrg		;;
143738b41dabSmrg	sunos6*)
143838b41dabSmrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
143938b41dabSmrg		;;
144038b41dabSmrg	wince*)
144138b41dabSmrg		os=wince
144238b41dabSmrg		;;
144338b41dabSmrg	utek*)
144438b41dabSmrg		os=bsd
144538b41dabSmrg		;;
144638b41dabSmrg	dynix*)
144738b41dabSmrg		os=bsd
144838b41dabSmrg		;;
144938b41dabSmrg	acis*)
145038b41dabSmrg		os=aos
145138b41dabSmrg		;;
145238b41dabSmrg	atheos*)
145338b41dabSmrg		os=atheos
145438b41dabSmrg		;;
145538b41dabSmrg	syllable*)
145638b41dabSmrg		os=syllable
145738b41dabSmrg		;;
145838b41dabSmrg	386bsd)
145938b41dabSmrg		os=bsd
146038b41dabSmrg		;;
146138b41dabSmrg	ctix* | uts*)
146238b41dabSmrg		os=sysv
146338b41dabSmrg		;;
146438b41dabSmrg	nova*)
146538b41dabSmrg		os=rtmk-nova
146638b41dabSmrg		;;
146738b41dabSmrg	ns2)
146838b41dabSmrg		os=nextstep2
146938b41dabSmrg		;;
147038b41dabSmrg	# Preserve the version number of sinix5.
147138b41dabSmrg	sinix5.*)
147238b41dabSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
147338b41dabSmrg		;;
147438b41dabSmrg	sinix*)
147538b41dabSmrg		os=sysv4
147638b41dabSmrg		;;
147738b41dabSmrg	tpf*)
147838b41dabSmrg		os=tpf
147938b41dabSmrg		;;
148038b41dabSmrg	triton*)
148138b41dabSmrg		os=sysv3
148238b41dabSmrg		;;
148338b41dabSmrg	oss*)
148438b41dabSmrg		os=sysv3
148538b41dabSmrg		;;
148638b41dabSmrg	svr4*)
148738b41dabSmrg		os=sysv4
148838b41dabSmrg		;;
148938b41dabSmrg	svr3)
149038b41dabSmrg		os=sysv3
149138b41dabSmrg		;;
149238b41dabSmrg	sysvr4)
149338b41dabSmrg		os=sysv4
149438b41dabSmrg		;;
149538b41dabSmrg	ose*)
149638b41dabSmrg		os=ose
149738b41dabSmrg		;;
149838b41dabSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
149938b41dabSmrg		os=mint
150038b41dabSmrg		;;
150138b41dabSmrg	dicos*)
150238b41dabSmrg		os=dicos
150338b41dabSmrg		;;
150438b41dabSmrg	pikeos*)
150538b41dabSmrg		# Until real need of OS specific support for
150638b41dabSmrg		# particular features comes up, bare metal
150738b41dabSmrg		# configurations are quite functional.
150838b41dabSmrg		case $cpu in
150938b41dabSmrg		    arm*)
151038b41dabSmrg			os=eabi
151138b41dabSmrg			;;
151238b41dabSmrg		    *)
151338b41dabSmrg			os=elf
151438b41dabSmrg			;;
151538b41dabSmrg		esac
151638b41dabSmrg		;;
151738b41dabSmrg	*)
151838b41dabSmrg		# No normalization, but not necessarily accepted, that comes below.
151938b41dabSmrg		;;
152038b41dabSmrgesac
152138b41dabSmrg
152238b41dabSmrgelse
152338b41dabSmrg
152438b41dabSmrg# Here we handle the default operating systems that come with various machines.
152538b41dabSmrg# The value should be what the vendor currently ships out the door with their
152638b41dabSmrg# machine or put another way, the most popular os provided with the machine.
152738b41dabSmrg
152838b41dabSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
152938b41dabSmrg# "-sun"), then you have to tell the case statement up towards the top
153038b41dabSmrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
153138b41dabSmrg# will signal an error saying that MANUFACTURER isn't an operating
153238b41dabSmrg# system, and we'll never get to this point.
153338b41dabSmrg
153438b41dabSmrgkernel=
153538b41dabSmrgcase $cpu-$vendor in
153638b41dabSmrg	score-*)
153738b41dabSmrg		os=elf
153838b41dabSmrg		;;
153938b41dabSmrg	spu-*)
154038b41dabSmrg		os=elf
154138b41dabSmrg		;;
154238b41dabSmrg	*-acorn)
154338b41dabSmrg		os=riscix1.2
154438b41dabSmrg		;;
154538b41dabSmrg	arm*-rebel)
154638b41dabSmrg		kernel=linux
154738b41dabSmrg		os=gnu
154838b41dabSmrg		;;
154938b41dabSmrg	arm*-semi)
155038b41dabSmrg		os=aout
155138b41dabSmrg		;;
155238b41dabSmrg	c4x-* | tic4x-*)
155338b41dabSmrg		os=coff
155438b41dabSmrg		;;
155538b41dabSmrg	c8051-*)
155638b41dabSmrg		os=elf
155738b41dabSmrg		;;
155838b41dabSmrg	clipper-intergraph)
155938b41dabSmrg		os=clix
156038b41dabSmrg		;;
156138b41dabSmrg	hexagon-*)
156238b41dabSmrg		os=elf
156338b41dabSmrg		;;
156438b41dabSmrg	tic54x-*)
156538b41dabSmrg		os=coff
156638b41dabSmrg		;;
156738b41dabSmrg	tic55x-*)
156838b41dabSmrg		os=coff
156938b41dabSmrg		;;
157038b41dabSmrg	tic6x-*)
157138b41dabSmrg		os=coff
157238b41dabSmrg		;;
157338b41dabSmrg	# This must come before the *-dec entry.
157438b41dabSmrg	pdp10-*)
157538b41dabSmrg		os=tops20
157638b41dabSmrg		;;
157738b41dabSmrg	pdp11-*)
157838b41dabSmrg		os=none
157938b41dabSmrg		;;
158038b41dabSmrg	*-dec | vax-*)
158138b41dabSmrg		os=ultrix4.2
158238b41dabSmrg		;;
158338b41dabSmrg	m68*-apollo)
158438b41dabSmrg		os=domain
158538b41dabSmrg		;;
158638b41dabSmrg	i386-sun)
158738b41dabSmrg		os=sunos4.0.2
158838b41dabSmrg		;;
158938b41dabSmrg	m68000-sun)
159038b41dabSmrg		os=sunos3
159138b41dabSmrg		;;
159238b41dabSmrg	m68*-cisco)
159338b41dabSmrg		os=aout
159438b41dabSmrg		;;
159538b41dabSmrg	mep-*)
159638b41dabSmrg		os=elf
159738b41dabSmrg		;;
159838b41dabSmrg	mips*-cisco)
159938b41dabSmrg		os=elf
160038b41dabSmrg		;;
160138b41dabSmrg	mips*-*)
160238b41dabSmrg		os=elf
160338b41dabSmrg		;;
160438b41dabSmrg	or32-*)
160538b41dabSmrg		os=coff
160638b41dabSmrg		;;
160738b41dabSmrg	*-tti)	# must be before sparc entry or we get the wrong os.
160838b41dabSmrg		os=sysv3
160938b41dabSmrg		;;
161038b41dabSmrg	sparc-* | *-sun)
161138b41dabSmrg		os=sunos4.1.1
161238b41dabSmrg		;;
161338b41dabSmrg	pru-*)
161438b41dabSmrg		os=elf
161538b41dabSmrg		;;
161638b41dabSmrg	*-be)
161738b41dabSmrg		os=beos
161838b41dabSmrg		;;
161938b41dabSmrg	*-ibm)
162038b41dabSmrg		os=aix
162138b41dabSmrg		;;
162238b41dabSmrg	*-knuth)
162338b41dabSmrg		os=mmixware
162438b41dabSmrg		;;
162538b41dabSmrg	*-wec)
162638b41dabSmrg		os=proelf
162738b41dabSmrg		;;
162838b41dabSmrg	*-winbond)
162938b41dabSmrg		os=proelf
163038b41dabSmrg		;;
163138b41dabSmrg	*-oki)
163238b41dabSmrg		os=proelf
163338b41dabSmrg		;;
163438b41dabSmrg	*-hp)
163538b41dabSmrg		os=hpux
163638b41dabSmrg		;;
163738b41dabSmrg	*-hitachi)
163838b41dabSmrg		os=hiux
163938b41dabSmrg		;;
164038b41dabSmrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
164138b41dabSmrg		os=sysv
164238b41dabSmrg		;;
164338b41dabSmrg	*-cbm)
164438b41dabSmrg		os=amigaos
164538b41dabSmrg		;;
164638b41dabSmrg	*-dg)
164738b41dabSmrg		os=dgux
164838b41dabSmrg		;;
164938b41dabSmrg	*-dolphin)
165038b41dabSmrg		os=sysv3
165138b41dabSmrg		;;
165238b41dabSmrg	m68k-ccur)
165338b41dabSmrg		os=rtu
165438b41dabSmrg		;;
165538b41dabSmrg	m88k-omron*)
165638b41dabSmrg		os=luna
165738b41dabSmrg		;;
165838b41dabSmrg	*-next)
165938b41dabSmrg		os=nextstep
166038b41dabSmrg		;;
166138b41dabSmrg	*-sequent)
166238b41dabSmrg		os=ptx
166338b41dabSmrg		;;
166438b41dabSmrg	*-crds)
166538b41dabSmrg		os=unos
166638b41dabSmrg		;;
166738b41dabSmrg	*-ns)
166838b41dabSmrg		os=genix
166938b41dabSmrg		;;
167038b41dabSmrg	i370-*)
167138b41dabSmrg		os=mvs
167238b41dabSmrg		;;
167338b41dabSmrg	*-gould)
167438b41dabSmrg		os=sysv
167538b41dabSmrg		;;
167638b41dabSmrg	*-highlevel)
167738b41dabSmrg		os=bsd
167838b41dabSmrg		;;
167938b41dabSmrg	*-encore)
168038b41dabSmrg		os=bsd
168138b41dabSmrg		;;
168238b41dabSmrg	*-sgi)
168338b41dabSmrg		os=irix
168438b41dabSmrg		;;
168538b41dabSmrg	*-siemens)
168638b41dabSmrg		os=sysv4
168738b41dabSmrg		;;
168838b41dabSmrg	*-masscomp)
168938b41dabSmrg		os=rtu
169038b41dabSmrg		;;
169138b41dabSmrg	f30[01]-fujitsu | f700-fujitsu)
169238b41dabSmrg		os=uxpv
169338b41dabSmrg		;;
169438b41dabSmrg	*-rom68k)
169538b41dabSmrg		os=coff
169638b41dabSmrg		;;
169738b41dabSmrg	*-*bug)
169838b41dabSmrg		os=coff
169938b41dabSmrg		;;
170038b41dabSmrg	*-apple)
170138b41dabSmrg		os=macos
170238b41dabSmrg		;;
170338b41dabSmrg	*-atari*)
170438b41dabSmrg		os=mint
170538b41dabSmrg		;;
170638b41dabSmrg	*-wrs)
170738b41dabSmrg		os=vxworks
170838b41dabSmrg		;;
170938b41dabSmrg	*)
171038b41dabSmrg		os=none
171138b41dabSmrg		;;
171238b41dabSmrgesac
171338b41dabSmrg
171438b41dabSmrgfi
171538b41dabSmrg
171638b41dabSmrg# Now, validate our (potentially fixed-up) OS.
171738b41dabSmrgcase $os in
171838b41dabSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
171938b41dabSmrg	musl* | newlib* | relibc* | uclibc*)
172038b41dabSmrg		;;
172138b41dabSmrg	# Likewise for "kernel-abi"
172238b41dabSmrg	eabi* | gnueabi*)
172338b41dabSmrg		;;
172438b41dabSmrg	# VxWorks passes extra cpu info in the 4th filed.
172538b41dabSmrg	simlinux | simwindows | spe)
172638b41dabSmrg		;;
172738b41dabSmrg	# Now accept the basic system types.
172838b41dabSmrg	# The portable systems comes first.
172938b41dabSmrg	# Each alternative MUST end in a * to match a version number.
173038b41dabSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
173138b41dabSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
173238b41dabSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
173338b41dabSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
173438b41dabSmrg	     | hiux* | abug | nacl* | netware* | windows* \
173538b41dabSmrg	     | os9* | macos* | osx* | ios* \
173638b41dabSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
173738b41dabSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
173838b41dabSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
173938b41dabSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
174038b41dabSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
174138b41dabSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
174238b41dabSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
174338b41dabSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
174438b41dabSmrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
174538b41dabSmrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
174638b41dabSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
174738b41dabSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
174838b41dabSmrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
174938b41dabSmrg	     | midipix* | mingw32* | mingw64* | mint* \
175038b41dabSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
175138b41dabSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
175238b41dabSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
175338b41dabSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
175438b41dabSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
175538b41dabSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
175638b41dabSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
175738b41dabSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
175838b41dabSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
175938b41dabSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
176038b41dabSmrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
176138b41dabSmrg	     | fiwix* | mlibc* )
176238b41dabSmrg		;;
176338b41dabSmrg	# This one is extra strict with allowed versions
176438b41dabSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
176538b41dabSmrg		# Don't forget version if it is 3.2v4 or newer.
176638b41dabSmrg		;;
176738b41dabSmrg	none)
176838b41dabSmrg		;;
176938b41dabSmrg	kernel* )
177038b41dabSmrg		# Restricted further below
177138b41dabSmrg		;;
177238b41dabSmrg	*)
177338b41dabSmrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
177438b41dabSmrg		exit 1
177538b41dabSmrg		;;
177638b41dabSmrgesac
177738b41dabSmrg
177838b41dabSmrg# As a final step for OS-related things, validate the OS-kernel combination
177938b41dabSmrg# (given a valid OS), if there is a kernel.
178038b41dabSmrgcase $kernel-$os in
178138b41dabSmrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
178238b41dabSmrg		   | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* )
178338b41dabSmrg		;;
178438b41dabSmrg	uclinux-uclibc* )
178538b41dabSmrg		;;
178638b41dabSmrg	managarm-mlibc* | managarm-kernel* )
178738b41dabSmrg		;;
178838b41dabSmrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* )
178938b41dabSmrg		# These are just libc implementations, not actual OSes, and thus
179038b41dabSmrg		# require a kernel.
179138b41dabSmrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
179238b41dabSmrg		exit 1
179338b41dabSmrg		;;
179438b41dabSmrg	-kernel* )
179538b41dabSmrg		echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2
179638b41dabSmrg		exit 1
179738b41dabSmrg		;;
179838b41dabSmrg	*-kernel* )
179938b41dabSmrg		echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2
180038b41dabSmrg		exit 1
180138b41dabSmrg		;;
180238b41dabSmrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
180338b41dabSmrg		;;
180438b41dabSmrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
180538b41dabSmrg		;;
180638b41dabSmrg	nto-qnx*)
180738b41dabSmrg		;;
180838b41dabSmrg	os2-emx)
180938b41dabSmrg		;;
181038b41dabSmrg	*-eabi* | *-gnueabi*)
181138b41dabSmrg		;;
181238b41dabSmrg	-*)
181338b41dabSmrg		# Blank kernel with real OS is always fine.
181438b41dabSmrg		;;
181538b41dabSmrg	*-*)
181638b41dabSmrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
181738b41dabSmrg		exit 1
181838b41dabSmrg		;;
181938b41dabSmrgesac
182038b41dabSmrg
182138b41dabSmrg# Here we handle the case where we know the os, and the CPU type, but not the
182238b41dabSmrg# manufacturer.  We pick the logical manufacturer.
182338b41dabSmrgcase $vendor in
182438b41dabSmrg	unknown)
182538b41dabSmrg		case $cpu-$os in
182638b41dabSmrg			*-riscix*)
182738b41dabSmrg				vendor=acorn
182838b41dabSmrg				;;
182938b41dabSmrg			*-sunos*)
183038b41dabSmrg				vendor=sun
183138b41dabSmrg				;;
183238b41dabSmrg			*-cnk* | *-aix*)
183338b41dabSmrg				vendor=ibm
183438b41dabSmrg				;;
183538b41dabSmrg			*-beos*)
183638b41dabSmrg				vendor=be
183738b41dabSmrg				;;
183838b41dabSmrg			*-hpux*)
183938b41dabSmrg				vendor=hp
184038b41dabSmrg				;;
184138b41dabSmrg			*-mpeix*)
184238b41dabSmrg				vendor=hp
184338b41dabSmrg				;;
184438b41dabSmrg			*-hiux*)
184538b41dabSmrg				vendor=hitachi
184638b41dabSmrg				;;
184738b41dabSmrg			*-unos*)
184838b41dabSmrg				vendor=crds
184938b41dabSmrg				;;
185038b41dabSmrg			*-dgux*)
185138b41dabSmrg				vendor=dg
185238b41dabSmrg				;;
185338b41dabSmrg			*-luna*)
185438b41dabSmrg				vendor=omron
185538b41dabSmrg				;;
185638b41dabSmrg			*-genix*)
185738b41dabSmrg				vendor=ns
185838b41dabSmrg				;;
185938b41dabSmrg			*-clix*)
186038b41dabSmrg				vendor=intergraph
186138b41dabSmrg				;;
186238b41dabSmrg			*-mvs* | *-opened*)
186338b41dabSmrg				vendor=ibm
186438b41dabSmrg				;;
186538b41dabSmrg			*-os400*)
186638b41dabSmrg				vendor=ibm
186738b41dabSmrg				;;
186838b41dabSmrg			s390-* | s390x-*)
186938b41dabSmrg				vendor=ibm
187038b41dabSmrg				;;
187138b41dabSmrg			*-ptx*)
187238b41dabSmrg				vendor=sequent
187338b41dabSmrg				;;
187438b41dabSmrg			*-tpf*)
187538b41dabSmrg				vendor=ibm
187638b41dabSmrg				;;
187738b41dabSmrg			*-vxsim* | *-vxworks* | *-windiss*)
187838b41dabSmrg				vendor=wrs
187938b41dabSmrg				;;
188038b41dabSmrg			*-aux*)
188138b41dabSmrg				vendor=apple
188238b41dabSmrg				;;
188338b41dabSmrg			*-hms*)
188438b41dabSmrg				vendor=hitachi
188538b41dabSmrg				;;
188638b41dabSmrg			*-mpw* | *-macos*)
188738b41dabSmrg				vendor=apple
188838b41dabSmrg				;;
188938b41dabSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
189038b41dabSmrg				vendor=atari
189138b41dabSmrg				;;
189238b41dabSmrg			*-vos*)
189338b41dabSmrg				vendor=stratus
189438b41dabSmrg				;;
189538b41dabSmrg		esac
189638b41dabSmrg		;;
189738b41dabSmrgesac
189838b41dabSmrg
189938b41dabSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
190038b41dabSmrgexit
190138b41dabSmrg
190238b41dabSmrg# Local variables:
190338b41dabSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
190438b41dabSmrg# time-stamp-start: "timestamp='"
190538b41dabSmrg# time-stamp-format: "%:y-%02m-%02d"
190638b41dabSmrg# time-stamp-end: "'"
190738b41dabSmrg# End:
1908