175b29833Smrg#! /bin/sh
275b29833Smrg# Configuration validation subroutine script.
375b29833Smrg#   Copyright 1992-2023 Free Software Foundation, Inc.
475b29833Smrg
575b29833Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale
675b29833Smrg
775b29833Smrgtimestamp='2023-01-21'
875b29833Smrg
975b29833Smrg# This file is free software; you can redistribute it and/or modify it
1075b29833Smrg# under the terms of the GNU General Public License as published by
1175b29833Smrg# the Free Software Foundation, either version 3 of the License, or
1275b29833Smrg# (at your option) any later version.
1375b29833Smrg#
1475b29833Smrg# This program is distributed in the hope that it will be useful, but
1575b29833Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
1675b29833Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1775b29833Smrg# General Public License for more details.
1875b29833Smrg#
1975b29833Smrg# You should have received a copy of the GNU General Public License
2075b29833Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
2175b29833Smrg#
2275b29833Smrg# As a special exception to the GNU General Public License, if you
2375b29833Smrg# distribute this file as part of a program that contains a
2475b29833Smrg# configuration script generated by Autoconf, you may include it under
2575b29833Smrg# the same distribution terms that you use for the rest of that
2675b29833Smrg# program.  This Exception is an additional permission under section 7
2775b29833Smrg# of the GNU General Public License, version 3 ("GPLv3").
2875b29833Smrg
2975b29833Smrg
3075b29833Smrg# Please send patches to <config-patches@gnu.org>.
3175b29833Smrg#
3275b29833Smrg# Configuration subroutine to validate and canonicalize a configuration type.
3375b29833Smrg# Supply the specified configuration type as an argument.
3475b29833Smrg# If it is invalid, we print an error message on stderr and exit with code 1.
3575b29833Smrg# Otherwise, we print the canonical config type on stdout and succeed.
3675b29833Smrg
3775b29833Smrg# You can get the latest version of this script from:
3875b29833Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
3975b29833Smrg
4075b29833Smrg# This file is supposed to be the same for all GNU packages
4175b29833Smrg# and recognize all the CPU types, system types and aliases
4275b29833Smrg# that are meaningful with *any* GNU software.
4375b29833Smrg# Each package is responsible for reporting which valid configurations
4475b29833Smrg# it does not support.  The user should be able to distinguish
4575b29833Smrg# a failure to support a valid configuration from a meaningless
4675b29833Smrg# configuration.
4775b29833Smrg
4875b29833Smrg# The goal of this file is to map all the various variations of a given
4975b29833Smrg# machine specification into a single specification in the form:
5075b29833Smrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
5175b29833Smrg# or in some cases, the newer four-part form:
5275b29833Smrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
5375b29833Smrg# It is wrong to echo any other type of specification.
5475b29833Smrg
5575b29833Smrg# The "shellcheck disable" line above the timestamp inhibits complaints
5675b29833Smrg# about features and limitations of the classic Bourne shell that were
5775b29833Smrg# superseded or lifted in POSIX.  However, this script identifies a wide
5875b29833Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
5975b29833Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still
6075b29833Smrg# have a pre-POSIX /bin/sh.
6175b29833Smrg
6275b29833Smrgme=`echo "$0" | sed -e 's,.*/,,'`
6375b29833Smrg
6475b29833Smrgusage="\
6575b29833SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
6675b29833Smrg
6775b29833SmrgCanonicalize a configuration name.
6875b29833Smrg
6975b29833SmrgOptions:
7075b29833Smrg  -h, --help         print this help, then exit
7175b29833Smrg  -t, --time-stamp   print date of last modification, then exit
7275b29833Smrg  -v, --version      print version number, then exit
7375b29833Smrg
7475b29833SmrgReport bugs and patches to <config-patches@gnu.org>."
7575b29833Smrg
7675b29833Smrgversion="\
7775b29833SmrgGNU config.sub ($timestamp)
7875b29833Smrg
7975b29833SmrgCopyright 1992-2023 Free Software Foundation, Inc.
8075b29833Smrg
8175b29833SmrgThis is free software; see the source for copying conditions.  There is NO
8275b29833Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
8375b29833Smrg
8475b29833Smrghelp="
8575b29833SmrgTry \`$me --help' for more information."
8675b29833Smrg
8775b29833Smrg# Parse command line
8875b29833Smrgwhile test $# -gt 0 ; do
8975b29833Smrg  case $1 in
9075b29833Smrg    --time-stamp | --time* | -t )
9175b29833Smrg       echo "$timestamp" ; exit ;;
9275b29833Smrg    --version | -v )
9375b29833Smrg       echo "$version" ; exit ;;
9475b29833Smrg    --help | --h* | -h )
9575b29833Smrg       echo "$usage"; exit ;;
9675b29833Smrg    -- )     # Stop option processing
9775b29833Smrg       shift; break ;;
9875b29833Smrg    - )	# Use stdin as input.
9975b29833Smrg       break ;;
10075b29833Smrg    -* )
10175b29833Smrg       echo "$me: invalid option $1$help" >&2
10275b29833Smrg       exit 1 ;;
10375b29833Smrg
10475b29833Smrg    *local*)
10575b29833Smrg       # First pass through any local machine types.
10675b29833Smrg       echo "$1"
10775b29833Smrg       exit ;;
10875b29833Smrg
10975b29833Smrg    * )
11075b29833Smrg       break ;;
11175b29833Smrg  esac
11275b29833Smrgdone
11375b29833Smrg
11475b29833Smrgcase $# in
11575b29833Smrg 0) echo "$me: missing argument$help" >&2
11675b29833Smrg    exit 1;;
11775b29833Smrg 1) ;;
11875b29833Smrg *) echo "$me: too many arguments$help" >&2
11975b29833Smrg    exit 1;;
12075b29833Smrgesac
12175b29833Smrg
12275b29833Smrg# Split fields of configuration type
12375b29833Smrg# shellcheck disable=SC2162
12475b29833Smrgsaved_IFS=$IFS
12575b29833SmrgIFS="-" read field1 field2 field3 field4 <<EOF
12675b29833Smrg$1
12775b29833SmrgEOF
12875b29833SmrgIFS=$saved_IFS
12975b29833Smrg
13075b29833Smrg# Separate into logical components for further validation
13175b29833Smrgcase $1 in
13275b29833Smrg	*-*-*-*-*)
13375b29833Smrg		echo Invalid configuration \`"$1"\': more than four components >&2
13475b29833Smrg		exit 1
13575b29833Smrg		;;
13675b29833Smrg	*-*-*-*)
13775b29833Smrg		basic_machine=$field1-$field2
13875b29833Smrg		basic_os=$field3-$field4
13975b29833Smrg		;;
14075b29833Smrg	*-*-*)
14175b29833Smrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
14275b29833Smrg		# parts
14375b29833Smrg		maybe_os=$field2-$field3
14475b29833Smrg		case $maybe_os in
14575b29833Smrg			nto-qnx* | linux-* | uclinux-uclibc* \
14675b29833Smrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
14775b29833Smrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
14875b29833Smrg			| storm-chaos* | os2-emx* | rtmk-nova* | managarm-*)
14975b29833Smrg				basic_machine=$field1
15075b29833Smrg				basic_os=$maybe_os
15175b29833Smrg				;;
15275b29833Smrg			android-linux)
15375b29833Smrg				basic_machine=$field1-unknown
15475b29833Smrg				basic_os=linux-android
15575b29833Smrg				;;
15675b29833Smrg			*)
15775b29833Smrg				basic_machine=$field1-$field2
15875b29833Smrg				basic_os=$field3
15975b29833Smrg				;;
16075b29833Smrg		esac
16175b29833Smrg		;;
16275b29833Smrg	*-*)
16375b29833Smrg		# A lone config we happen to match not fitting any pattern
16475b29833Smrg		case $field1-$field2 in
16575b29833Smrg			decstation-3100)
16675b29833Smrg				basic_machine=mips-dec
16775b29833Smrg				basic_os=
16875b29833Smrg				;;
16975b29833Smrg			*-*)
17075b29833Smrg				# Second component is usually, but not always the OS
17175b29833Smrg				case $field2 in
17275b29833Smrg					# Prevent following clause from handling this valid os
17375b29833Smrg					sun*os*)
17475b29833Smrg						basic_machine=$field1
17575b29833Smrg						basic_os=$field2
17675b29833Smrg						;;
17775b29833Smrg					zephyr*)
17875b29833Smrg						basic_machine=$field1-unknown
17975b29833Smrg						basic_os=$field2
18075b29833Smrg						;;
18175b29833Smrg					# Manufacturers
18275b29833Smrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
18375b29833Smrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
18475b29833Smrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
18575b29833Smrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
18675b29833Smrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
18775b29833Smrg					| ultra | tti* | harris | dolphin | highlevel | gould \
18875b29833Smrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
18975b29833Smrg					| microblaze* | sim | cisco \
19075b29833Smrg					| oki | wec | wrs | winbond)
19175b29833Smrg						basic_machine=$field1-$field2
19275b29833Smrg						basic_os=
19375b29833Smrg						;;
19475b29833Smrg					*)
19575b29833Smrg						basic_machine=$field1
19675b29833Smrg						basic_os=$field2
19775b29833Smrg						;;
19875b29833Smrg				esac
19975b29833Smrg			;;
20075b29833Smrg		esac
20175b29833Smrg		;;
20275b29833Smrg	*)
20375b29833Smrg		# Convert single-component short-hands not valid as part of
20475b29833Smrg		# multi-component configurations.
20575b29833Smrg		case $field1 in
20675b29833Smrg			386bsd)
20775b29833Smrg				basic_machine=i386-pc
20875b29833Smrg				basic_os=bsd
20975b29833Smrg				;;
21075b29833Smrg			a29khif)
21175b29833Smrg				basic_machine=a29k-amd
21275b29833Smrg				basic_os=udi
21375b29833Smrg				;;
21475b29833Smrg			adobe68k)
21575b29833Smrg				basic_machine=m68010-adobe
21675b29833Smrg				basic_os=scout
21775b29833Smrg				;;
21875b29833Smrg			alliant)
21975b29833Smrg				basic_machine=fx80-alliant
22075b29833Smrg				basic_os=
22175b29833Smrg				;;
22275b29833Smrg			altos | altos3068)
22375b29833Smrg				basic_machine=m68k-altos
22475b29833Smrg				basic_os=
22575b29833Smrg				;;
22675b29833Smrg			am29k)
22775b29833Smrg				basic_machine=a29k-none
22875b29833Smrg				basic_os=bsd
22975b29833Smrg				;;
23075b29833Smrg			amdahl)
23175b29833Smrg				basic_machine=580-amdahl
23275b29833Smrg				basic_os=sysv
23375b29833Smrg				;;
23475b29833Smrg			amiga)
23575b29833Smrg				basic_machine=m68k-unknown
23675b29833Smrg				basic_os=
23775b29833Smrg				;;
23875b29833Smrg			amigaos | amigados)
23975b29833Smrg				basic_machine=m68k-unknown
24075b29833Smrg				basic_os=amigaos
24175b29833Smrg				;;
24275b29833Smrg			amigaunix | amix)
24375b29833Smrg				basic_machine=m68k-unknown
24475b29833Smrg				basic_os=sysv4
24575b29833Smrg				;;
24675b29833Smrg			apollo68)
24775b29833Smrg				basic_machine=m68k-apollo
24875b29833Smrg				basic_os=sysv
24975b29833Smrg				;;
25075b29833Smrg			apollo68bsd)
25175b29833Smrg				basic_machine=m68k-apollo
25275b29833Smrg				basic_os=bsd
25375b29833Smrg				;;
25475b29833Smrg			aros)
25575b29833Smrg				basic_machine=i386-pc
25675b29833Smrg				basic_os=aros
25775b29833Smrg				;;
25875b29833Smrg			aux)
25975b29833Smrg				basic_machine=m68k-apple
26075b29833Smrg				basic_os=aux
26175b29833Smrg				;;
26275b29833Smrg			balance)
26375b29833Smrg				basic_machine=ns32k-sequent
26475b29833Smrg				basic_os=dynix
26575b29833Smrg				;;
26675b29833Smrg			blackfin)
26775b29833Smrg				basic_machine=bfin-unknown
26875b29833Smrg				basic_os=linux
26975b29833Smrg				;;
27075b29833Smrg			cegcc)
27175b29833Smrg				basic_machine=arm-unknown
27275b29833Smrg				basic_os=cegcc
27375b29833Smrg				;;
27475b29833Smrg			convex-c1)
27575b29833Smrg				basic_machine=c1-convex
27675b29833Smrg				basic_os=bsd
27775b29833Smrg				;;
27875b29833Smrg			convex-c2)
27975b29833Smrg				basic_machine=c2-convex
28075b29833Smrg				basic_os=bsd
28175b29833Smrg				;;
28275b29833Smrg			convex-c32)
28375b29833Smrg				basic_machine=c32-convex
28475b29833Smrg				basic_os=bsd
28575b29833Smrg				;;
28675b29833Smrg			convex-c34)
28775b29833Smrg				basic_machine=c34-convex
28875b29833Smrg				basic_os=bsd
28975b29833Smrg				;;
29075b29833Smrg			convex-c38)
29175b29833Smrg				basic_machine=c38-convex
29275b29833Smrg				basic_os=bsd
29375b29833Smrg				;;
29475b29833Smrg			cray)
29575b29833Smrg				basic_machine=j90-cray
29675b29833Smrg				basic_os=unicos
29775b29833Smrg				;;
29875b29833Smrg			crds | unos)
29975b29833Smrg				basic_machine=m68k-crds
30075b29833Smrg				basic_os=
30175b29833Smrg				;;
30275b29833Smrg			da30)
30375b29833Smrg				basic_machine=m68k-da30
30475b29833Smrg				basic_os=
30575b29833Smrg				;;
30675b29833Smrg			decstation | pmax | pmin | dec3100 | decstatn)
30775b29833Smrg				basic_machine=mips-dec
30875b29833Smrg				basic_os=
30975b29833Smrg				;;
31075b29833Smrg			delta88)
31175b29833Smrg				basic_machine=m88k-motorola
31275b29833Smrg				basic_os=sysv3
31375b29833Smrg				;;
31475b29833Smrg			dicos)
31575b29833Smrg				basic_machine=i686-pc
31675b29833Smrg				basic_os=dicos
31775b29833Smrg				;;
31875b29833Smrg			djgpp)
31975b29833Smrg				basic_machine=i586-pc
32075b29833Smrg				basic_os=msdosdjgpp
32175b29833Smrg				;;
32275b29833Smrg			ebmon29k)
32375b29833Smrg				basic_machine=a29k-amd
32475b29833Smrg				basic_os=ebmon
32575b29833Smrg				;;
32675b29833Smrg			es1800 | OSE68k | ose68k | ose | OSE)
32775b29833Smrg				basic_machine=m68k-ericsson
32875b29833Smrg				basic_os=ose
32975b29833Smrg				;;
33075b29833Smrg			gmicro)
33175b29833Smrg				basic_machine=tron-gmicro
33275b29833Smrg				basic_os=sysv
33375b29833Smrg				;;
33475b29833Smrg			go32)
33575b29833Smrg				basic_machine=i386-pc
33675b29833Smrg				basic_os=go32
33775b29833Smrg				;;
33875b29833Smrg			h8300hms)
33975b29833Smrg				basic_machine=h8300-hitachi
34075b29833Smrg				basic_os=hms
34175b29833Smrg				;;
34275b29833Smrg			h8300xray)
34375b29833Smrg				basic_machine=h8300-hitachi
34475b29833Smrg				basic_os=xray
34575b29833Smrg				;;
34675b29833Smrg			h8500hms)
34775b29833Smrg				basic_machine=h8500-hitachi
34875b29833Smrg				basic_os=hms
34975b29833Smrg				;;
35075b29833Smrg			harris)
35175b29833Smrg				basic_machine=m88k-harris
35275b29833Smrg				basic_os=sysv3
35375b29833Smrg				;;
35475b29833Smrg			hp300 | hp300hpux)
35575b29833Smrg				basic_machine=m68k-hp
35675b29833Smrg				basic_os=hpux
35775b29833Smrg				;;
35875b29833Smrg			hp300bsd)
35975b29833Smrg				basic_machine=m68k-hp
36075b29833Smrg				basic_os=bsd
36175b29833Smrg				;;
36275b29833Smrg			hppaosf)
36375b29833Smrg				basic_machine=hppa1.1-hp
36475b29833Smrg				basic_os=osf
36575b29833Smrg				;;
36675b29833Smrg			hppro)
36775b29833Smrg				basic_machine=hppa1.1-hp
36875b29833Smrg				basic_os=proelf
36975b29833Smrg				;;
37075b29833Smrg			i386mach)
37175b29833Smrg				basic_machine=i386-mach
37275b29833Smrg				basic_os=mach
37375b29833Smrg				;;
37475b29833Smrg			isi68 | isi)
37575b29833Smrg				basic_machine=m68k-isi
37675b29833Smrg				basic_os=sysv
37775b29833Smrg				;;
37875b29833Smrg			m68knommu)
37975b29833Smrg				basic_machine=m68k-unknown
38075b29833Smrg				basic_os=linux
38175b29833Smrg				;;
38275b29833Smrg			magnum | m3230)
38375b29833Smrg				basic_machine=mips-mips
38475b29833Smrg				basic_os=sysv
38575b29833Smrg				;;
38675b29833Smrg			merlin)
38775b29833Smrg				basic_machine=ns32k-utek
38875b29833Smrg				basic_os=sysv
38975b29833Smrg				;;
39075b29833Smrg			mingw64)
39175b29833Smrg				basic_machine=x86_64-pc
39275b29833Smrg				basic_os=mingw64
39375b29833Smrg				;;
39475b29833Smrg			mingw32)
39575b29833Smrg				basic_machine=i686-pc
39675b29833Smrg				basic_os=mingw32
39775b29833Smrg				;;
39875b29833Smrg			mingw32ce)
39975b29833Smrg				basic_machine=arm-unknown
40075b29833Smrg				basic_os=mingw32ce
40175b29833Smrg				;;
40275b29833Smrg			monitor)
40375b29833Smrg				basic_machine=m68k-rom68k
40475b29833Smrg				basic_os=coff
40575b29833Smrg				;;
40675b29833Smrg			morphos)
40775b29833Smrg				basic_machine=powerpc-unknown
40875b29833Smrg				basic_os=morphos
40975b29833Smrg				;;
41075b29833Smrg			moxiebox)
41175b29833Smrg				basic_machine=moxie-unknown
41275b29833Smrg				basic_os=moxiebox
41375b29833Smrg				;;
41475b29833Smrg			msdos)
41575b29833Smrg				basic_machine=i386-pc
41675b29833Smrg				basic_os=msdos
41775b29833Smrg				;;
41875b29833Smrg			msys)
41975b29833Smrg				basic_machine=i686-pc
42075b29833Smrg				basic_os=msys
42175b29833Smrg				;;
42275b29833Smrg			mvs)
42375b29833Smrg				basic_machine=i370-ibm
42475b29833Smrg				basic_os=mvs
42575b29833Smrg				;;
42675b29833Smrg			nacl)
42775b29833Smrg				basic_machine=le32-unknown
42875b29833Smrg				basic_os=nacl
42975b29833Smrg				;;
43075b29833Smrg			ncr3000)
43175b29833Smrg				basic_machine=i486-ncr
43275b29833Smrg				basic_os=sysv4
43375b29833Smrg				;;
43475b29833Smrg			netbsd386)
43575b29833Smrg				basic_machine=i386-pc
43675b29833Smrg				basic_os=netbsd
43775b29833Smrg				;;
43875b29833Smrg			netwinder)
43975b29833Smrg				basic_machine=armv4l-rebel
44075b29833Smrg				basic_os=linux
44175b29833Smrg				;;
44275b29833Smrg			news | news700 | news800 | news900)
44375b29833Smrg				basic_machine=m68k-sony
44475b29833Smrg				basic_os=newsos
44575b29833Smrg				;;
44675b29833Smrg			news1000)
44775b29833Smrg				basic_machine=m68030-sony
44875b29833Smrg				basic_os=newsos
44975b29833Smrg				;;
45075b29833Smrg			necv70)
45175b29833Smrg				basic_machine=v70-nec
45275b29833Smrg				basic_os=sysv
45375b29833Smrg				;;
45475b29833Smrg			nh3000)
45575b29833Smrg				basic_machine=m68k-harris
45675b29833Smrg				basic_os=cxux
45775b29833Smrg				;;
45875b29833Smrg			nh[45]000)
45975b29833Smrg				basic_machine=m88k-harris
46075b29833Smrg				basic_os=cxux
46175b29833Smrg				;;
46275b29833Smrg			nindy960)
46375b29833Smrg				basic_machine=i960-intel
46475b29833Smrg				basic_os=nindy
46575b29833Smrg				;;
46675b29833Smrg			mon960)
46775b29833Smrg				basic_machine=i960-intel
46875b29833Smrg				basic_os=mon960
46975b29833Smrg				;;
47075b29833Smrg			nonstopux)
47175b29833Smrg				basic_machine=mips-compaq
47275b29833Smrg				basic_os=nonstopux
47375b29833Smrg				;;
47475b29833Smrg			os400)
47575b29833Smrg				basic_machine=powerpc-ibm
47675b29833Smrg				basic_os=os400
47775b29833Smrg				;;
47875b29833Smrg			OSE68000 | ose68000)
47975b29833Smrg				basic_machine=m68000-ericsson
48075b29833Smrg				basic_os=ose
48175b29833Smrg				;;
48275b29833Smrg			os68k)
48375b29833Smrg				basic_machine=m68k-none
48475b29833Smrg				basic_os=os68k
48575b29833Smrg				;;
48675b29833Smrg			paragon)
48775b29833Smrg				basic_machine=i860-intel
48875b29833Smrg				basic_os=osf
48975b29833Smrg				;;
49075b29833Smrg			parisc)
49175b29833Smrg				basic_machine=hppa-unknown
49275b29833Smrg				basic_os=linux
49375b29833Smrg				;;
49475b29833Smrg			psp)
49575b29833Smrg				basic_machine=mipsallegrexel-sony
49675b29833Smrg				basic_os=psp
49775b29833Smrg				;;
49875b29833Smrg			pw32)
49975b29833Smrg				basic_machine=i586-unknown
50075b29833Smrg				basic_os=pw32
50175b29833Smrg				;;
50275b29833Smrg			rdos | rdos64)
50375b29833Smrg				basic_machine=x86_64-pc
50475b29833Smrg				basic_os=rdos
50575b29833Smrg				;;
50675b29833Smrg			rdos32)
50775b29833Smrg				basic_machine=i386-pc
50875b29833Smrg				basic_os=rdos
50975b29833Smrg				;;
51075b29833Smrg			rom68k)
51175b29833Smrg				basic_machine=m68k-rom68k
51275b29833Smrg				basic_os=coff
51375b29833Smrg				;;
51475b29833Smrg			sa29200)
51575b29833Smrg				basic_machine=a29k-amd
51675b29833Smrg				basic_os=udi
51775b29833Smrg				;;
51875b29833Smrg			sei)
51975b29833Smrg				basic_machine=mips-sei
52075b29833Smrg				basic_os=seiux
52175b29833Smrg				;;
52275b29833Smrg			sequent)
52375b29833Smrg				basic_machine=i386-sequent
52475b29833Smrg				basic_os=
52575b29833Smrg				;;
52675b29833Smrg			sps7)
52775b29833Smrg				basic_machine=m68k-bull
52875b29833Smrg				basic_os=sysv2
52975b29833Smrg				;;
53075b29833Smrg			st2000)
53175b29833Smrg				basic_machine=m68k-tandem
53275b29833Smrg				basic_os=
53375b29833Smrg				;;
53475b29833Smrg			stratus)
53575b29833Smrg				basic_machine=i860-stratus
53675b29833Smrg				basic_os=sysv4
53775b29833Smrg				;;
53875b29833Smrg			sun2)
53975b29833Smrg				basic_machine=m68000-sun
54075b29833Smrg				basic_os=
54175b29833Smrg				;;
54275b29833Smrg			sun2os3)
54375b29833Smrg				basic_machine=m68000-sun
54475b29833Smrg				basic_os=sunos3
54575b29833Smrg				;;
54675b29833Smrg			sun2os4)
54775b29833Smrg				basic_machine=m68000-sun
54875b29833Smrg				basic_os=sunos4
54975b29833Smrg				;;
55075b29833Smrg			sun3)
55175b29833Smrg				basic_machine=m68k-sun
55275b29833Smrg				basic_os=
55375b29833Smrg				;;
55475b29833Smrg			sun3os3)
55575b29833Smrg				basic_machine=m68k-sun
55675b29833Smrg				basic_os=sunos3
55775b29833Smrg				;;
55875b29833Smrg			sun3os4)
55975b29833Smrg				basic_machine=m68k-sun
56075b29833Smrg				basic_os=sunos4
56175b29833Smrg				;;
56275b29833Smrg			sun4)
56375b29833Smrg				basic_machine=sparc-sun
56475b29833Smrg				basic_os=
56575b29833Smrg				;;
56675b29833Smrg			sun4os3)
56775b29833Smrg				basic_machine=sparc-sun
56875b29833Smrg				basic_os=sunos3
56975b29833Smrg				;;
57075b29833Smrg			sun4os4)
57175b29833Smrg				basic_machine=sparc-sun
57275b29833Smrg				basic_os=sunos4
57375b29833Smrg				;;
57475b29833Smrg			sun4sol2)
57575b29833Smrg				basic_machine=sparc-sun
57675b29833Smrg				basic_os=solaris2
57775b29833Smrg				;;
57875b29833Smrg			sun386 | sun386i | roadrunner)
57975b29833Smrg				basic_machine=i386-sun
58075b29833Smrg				basic_os=
58175b29833Smrg				;;
58275b29833Smrg			sv1)
58375b29833Smrg				basic_machine=sv1-cray
58475b29833Smrg				basic_os=unicos
58575b29833Smrg				;;
58675b29833Smrg			symmetry)
58775b29833Smrg				basic_machine=i386-sequent
58875b29833Smrg				basic_os=dynix
58975b29833Smrg				;;
59075b29833Smrg			t3e)
59175b29833Smrg				basic_machine=alphaev5-cray
59275b29833Smrg				basic_os=unicos
59375b29833Smrg				;;
59475b29833Smrg			t90)
59575b29833Smrg				basic_machine=t90-cray
59675b29833Smrg				basic_os=unicos
59775b29833Smrg				;;
59875b29833Smrg			toad1)
59975b29833Smrg				basic_machine=pdp10-xkl
60075b29833Smrg				basic_os=tops20
60175b29833Smrg				;;
60275b29833Smrg			tpf)
60375b29833Smrg				basic_machine=s390x-ibm
60475b29833Smrg				basic_os=tpf
60575b29833Smrg				;;
60675b29833Smrg			udi29k)
60775b29833Smrg				basic_machine=a29k-amd
60875b29833Smrg				basic_os=udi
60975b29833Smrg				;;
61075b29833Smrg			ultra3)
61175b29833Smrg				basic_machine=a29k-nyu
61275b29833Smrg				basic_os=sym1
61375b29833Smrg				;;
61475b29833Smrg			v810 | necv810)
61575b29833Smrg				basic_machine=v810-nec
61675b29833Smrg				basic_os=none
61775b29833Smrg				;;
61875b29833Smrg			vaxv)
61975b29833Smrg				basic_machine=vax-dec
62075b29833Smrg				basic_os=sysv
62175b29833Smrg				;;
62275b29833Smrg			vms)
62375b29833Smrg				basic_machine=vax-dec
62475b29833Smrg				basic_os=vms
62575b29833Smrg				;;
62675b29833Smrg			vsta)
62775b29833Smrg				basic_machine=i386-pc
62875b29833Smrg				basic_os=vsta
62975b29833Smrg				;;
63075b29833Smrg			vxworks960)
63175b29833Smrg				basic_machine=i960-wrs
63275b29833Smrg				basic_os=vxworks
63375b29833Smrg				;;
63475b29833Smrg			vxworks68)
63575b29833Smrg				basic_machine=m68k-wrs
63675b29833Smrg				basic_os=vxworks
63775b29833Smrg				;;
63875b29833Smrg			vxworks29k)
63975b29833Smrg				basic_machine=a29k-wrs
64075b29833Smrg				basic_os=vxworks
64175b29833Smrg				;;
64275b29833Smrg			xbox)
64375b29833Smrg				basic_machine=i686-pc
64475b29833Smrg				basic_os=mingw32
64575b29833Smrg				;;
64675b29833Smrg			ymp)
64775b29833Smrg				basic_machine=ymp-cray
64875b29833Smrg				basic_os=unicos
64975b29833Smrg				;;
65075b29833Smrg			*)
65175b29833Smrg				basic_machine=$1
65275b29833Smrg				basic_os=
65375b29833Smrg				;;
65475b29833Smrg		esac
65575b29833Smrg		;;
65675b29833Smrgesac
65775b29833Smrg
65875b29833Smrg# Decode 1-component or ad-hoc basic machines
65975b29833Smrgcase $basic_machine in
66075b29833Smrg	# Here we handle the default manufacturer of certain CPU types.  It is in
66175b29833Smrg	# some cases the only manufacturer, in others, it is the most popular.
66275b29833Smrg	w89k)
66375b29833Smrg		cpu=hppa1.1
66475b29833Smrg		vendor=winbond
66575b29833Smrg		;;
66675b29833Smrg	op50n)
66775b29833Smrg		cpu=hppa1.1
66875b29833Smrg		vendor=oki
66975b29833Smrg		;;
67075b29833Smrg	op60c)
67175b29833Smrg		cpu=hppa1.1
67275b29833Smrg		vendor=oki
67375b29833Smrg		;;
67475b29833Smrg	ibm*)
67575b29833Smrg		cpu=i370
67675b29833Smrg		vendor=ibm
67775b29833Smrg		;;
67875b29833Smrg	orion105)
67975b29833Smrg		cpu=clipper
68075b29833Smrg		vendor=highlevel
68175b29833Smrg		;;
68275b29833Smrg	mac | mpw | mac-mpw)
68375b29833Smrg		cpu=m68k
68475b29833Smrg		vendor=apple
68575b29833Smrg		;;
68675b29833Smrg	pmac | pmac-mpw)
68775b29833Smrg		cpu=powerpc
68875b29833Smrg		vendor=apple
68975b29833Smrg		;;
69075b29833Smrg
69175b29833Smrg	# Recognize the various machine names and aliases which stand
69275b29833Smrg	# for a CPU type and a company and sometimes even an OS.
69375b29833Smrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
69475b29833Smrg		cpu=m68000
69575b29833Smrg		vendor=att
69675b29833Smrg		;;
69775b29833Smrg	3b*)
69875b29833Smrg		cpu=we32k
69975b29833Smrg		vendor=att
70075b29833Smrg		;;
70175b29833Smrg	bluegene*)
70275b29833Smrg		cpu=powerpc
70375b29833Smrg		vendor=ibm
70475b29833Smrg		basic_os=cnk
70575b29833Smrg		;;
70675b29833Smrg	decsystem10* | dec10*)
70775b29833Smrg		cpu=pdp10
70875b29833Smrg		vendor=dec
70975b29833Smrg		basic_os=tops10
71075b29833Smrg		;;
71175b29833Smrg	decsystem20* | dec20*)
71275b29833Smrg		cpu=pdp10
71375b29833Smrg		vendor=dec
71475b29833Smrg		basic_os=tops20
71575b29833Smrg		;;
71675b29833Smrg	delta | 3300 | motorola-3300 | motorola-delta \
71775b29833Smrg	      | 3300-motorola | delta-motorola)
71875b29833Smrg		cpu=m68k
71975b29833Smrg		vendor=motorola
72075b29833Smrg		;;
72175b29833Smrg	dpx2*)
72275b29833Smrg		cpu=m68k
72375b29833Smrg		vendor=bull
72475b29833Smrg		basic_os=sysv3
72575b29833Smrg		;;
72675b29833Smrg	encore | umax | mmax)
72775b29833Smrg		cpu=ns32k
72875b29833Smrg		vendor=encore
72975b29833Smrg		;;
73075b29833Smrg	elxsi)
73175b29833Smrg		cpu=elxsi
73275b29833Smrg		vendor=elxsi
73375b29833Smrg		basic_os=${basic_os:-bsd}
73475b29833Smrg		;;
73575b29833Smrg	fx2800)
73675b29833Smrg		cpu=i860
73775b29833Smrg		vendor=alliant
73875b29833Smrg		;;
73975b29833Smrg	genix)
74075b29833Smrg		cpu=ns32k
74175b29833Smrg		vendor=ns
74275b29833Smrg		;;
74375b29833Smrg	h3050r* | hiux*)
74475b29833Smrg		cpu=hppa1.1
74575b29833Smrg		vendor=hitachi
74675b29833Smrg		basic_os=hiuxwe2
74775b29833Smrg		;;
74875b29833Smrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
74975b29833Smrg		cpu=hppa1.0
75075b29833Smrg		vendor=hp
75175b29833Smrg		;;
75275b29833Smrg	hp9k2[0-9][0-9] | hp9k31[0-9])
75375b29833Smrg		cpu=m68000
75475b29833Smrg		vendor=hp
75575b29833Smrg		;;
75675b29833Smrg	hp9k3[2-9][0-9])
75775b29833Smrg		cpu=m68k
75875b29833Smrg		vendor=hp
75975b29833Smrg		;;
76075b29833Smrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
76175b29833Smrg		cpu=hppa1.0
76275b29833Smrg		vendor=hp
76375b29833Smrg		;;
76475b29833Smrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
76575b29833Smrg		cpu=hppa1.1
76675b29833Smrg		vendor=hp
76775b29833Smrg		;;
76875b29833Smrg	hp9k78[0-9] | hp78[0-9])
76975b29833Smrg		# FIXME: really hppa2.0-hp
77075b29833Smrg		cpu=hppa1.1
77175b29833Smrg		vendor=hp
77275b29833Smrg		;;
77375b29833Smrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
77475b29833Smrg		# FIXME: really hppa2.0-hp
77575b29833Smrg		cpu=hppa1.1
77675b29833Smrg		vendor=hp
77775b29833Smrg		;;
77875b29833Smrg	hp9k8[0-9][13679] | hp8[0-9][13679])
77975b29833Smrg		cpu=hppa1.1
78075b29833Smrg		vendor=hp
78175b29833Smrg		;;
78275b29833Smrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
78375b29833Smrg		cpu=hppa1.0
78475b29833Smrg		vendor=hp
78575b29833Smrg		;;
78675b29833Smrg	i*86v32)
78775b29833Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
78875b29833Smrg		vendor=pc
78975b29833Smrg		basic_os=sysv32
79075b29833Smrg		;;
79175b29833Smrg	i*86v4*)
79275b29833Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79375b29833Smrg		vendor=pc
79475b29833Smrg		basic_os=sysv4
79575b29833Smrg		;;
79675b29833Smrg	i*86v)
79775b29833Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79875b29833Smrg		vendor=pc
79975b29833Smrg		basic_os=sysv
80075b29833Smrg		;;
80175b29833Smrg	i*86sol2)
80275b29833Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
80375b29833Smrg		vendor=pc
80475b29833Smrg		basic_os=solaris2
80575b29833Smrg		;;
80675b29833Smrg	j90 | j90-cray)
80775b29833Smrg		cpu=j90
80875b29833Smrg		vendor=cray
80975b29833Smrg		basic_os=${basic_os:-unicos}
81075b29833Smrg		;;
81175b29833Smrg	iris | iris4d)
81275b29833Smrg		cpu=mips
81375b29833Smrg		vendor=sgi
81475b29833Smrg		case $basic_os in
81575b29833Smrg		    irix*)
81675b29833Smrg			;;
81775b29833Smrg		    *)
81875b29833Smrg			basic_os=irix4
81975b29833Smrg			;;
82075b29833Smrg		esac
82175b29833Smrg		;;
82275b29833Smrg	miniframe)
82375b29833Smrg		cpu=m68000
82475b29833Smrg		vendor=convergent
82575b29833Smrg		;;
82675b29833Smrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
82775b29833Smrg		cpu=m68k
82875b29833Smrg		vendor=atari
82975b29833Smrg		basic_os=mint
83075b29833Smrg		;;
83175b29833Smrg	news-3600 | risc-news)
83275b29833Smrg		cpu=mips
83375b29833Smrg		vendor=sony
83475b29833Smrg		basic_os=newsos
83575b29833Smrg		;;
83675b29833Smrg	next | m*-next)
83775b29833Smrg		cpu=m68k
83875b29833Smrg		vendor=next
83975b29833Smrg		case $basic_os in
84075b29833Smrg		    openstep*)
84175b29833Smrg		        ;;
84275b29833Smrg		    nextstep*)
84375b29833Smrg			;;
84475b29833Smrg		    ns2*)
84575b29833Smrg		      basic_os=nextstep2
84675b29833Smrg			;;
84775b29833Smrg		    *)
84875b29833Smrg		      basic_os=nextstep3
84975b29833Smrg			;;
85075b29833Smrg		esac
85175b29833Smrg		;;
85275b29833Smrg	np1)
85375b29833Smrg		cpu=np1
85475b29833Smrg		vendor=gould
85575b29833Smrg		;;
85675b29833Smrg	op50n-* | op60c-*)
85775b29833Smrg		cpu=hppa1.1
85875b29833Smrg		vendor=oki
85975b29833Smrg		basic_os=proelf
86075b29833Smrg		;;
86175b29833Smrg	pa-hitachi)
86275b29833Smrg		cpu=hppa1.1
86375b29833Smrg		vendor=hitachi
86475b29833Smrg		basic_os=hiuxwe2
86575b29833Smrg		;;
86675b29833Smrg	pbd)
86775b29833Smrg		cpu=sparc
86875b29833Smrg		vendor=tti
86975b29833Smrg		;;
87075b29833Smrg	pbb)
87175b29833Smrg		cpu=m68k
87275b29833Smrg		vendor=tti
87375b29833Smrg		;;
87475b29833Smrg	pc532)
87575b29833Smrg		cpu=ns32k
87675b29833Smrg		vendor=pc532
87775b29833Smrg		;;
87875b29833Smrg	pn)
87975b29833Smrg		cpu=pn
88075b29833Smrg		vendor=gould
88175b29833Smrg		;;
88275b29833Smrg	power)
88375b29833Smrg		cpu=power
88475b29833Smrg		vendor=ibm
88575b29833Smrg		;;
88675b29833Smrg	ps2)
88775b29833Smrg		cpu=i386
88875b29833Smrg		vendor=ibm
88975b29833Smrg		;;
89075b29833Smrg	rm[46]00)
89175b29833Smrg		cpu=mips
89275b29833Smrg		vendor=siemens
89375b29833Smrg		;;
89475b29833Smrg	rtpc | rtpc-*)
89575b29833Smrg		cpu=romp
89675b29833Smrg		vendor=ibm
89775b29833Smrg		;;
89875b29833Smrg	sde)
89975b29833Smrg		cpu=mipsisa32
90075b29833Smrg		vendor=sde
90175b29833Smrg		basic_os=${basic_os:-elf}
90275b29833Smrg		;;
90375b29833Smrg	simso-wrs)
90475b29833Smrg		cpu=sparclite
90575b29833Smrg		vendor=wrs
90675b29833Smrg		basic_os=vxworks
90775b29833Smrg		;;
90875b29833Smrg	tower | tower-32)
90975b29833Smrg		cpu=m68k
91075b29833Smrg		vendor=ncr
91175b29833Smrg		;;
91275b29833Smrg	vpp*|vx|vx-*)
91375b29833Smrg		cpu=f301
91475b29833Smrg		vendor=fujitsu
91575b29833Smrg		;;
91675b29833Smrg	w65)
91775b29833Smrg		cpu=w65
91875b29833Smrg		vendor=wdc
91975b29833Smrg		;;
92075b29833Smrg	w89k-*)
92175b29833Smrg		cpu=hppa1.1
92275b29833Smrg		vendor=winbond
92375b29833Smrg		basic_os=proelf
92475b29833Smrg		;;
92575b29833Smrg	none)
92675b29833Smrg		cpu=none
92775b29833Smrg		vendor=none
92875b29833Smrg		;;
92975b29833Smrg	leon|leon[3-9])
93075b29833Smrg		cpu=sparc
93175b29833Smrg		vendor=$basic_machine
93275b29833Smrg		;;
93375b29833Smrg	leon-*|leon[3-9]-*)
93475b29833Smrg		cpu=sparc
93575b29833Smrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
93675b29833Smrg		;;
93775b29833Smrg
93875b29833Smrg	*-*)
93975b29833Smrg		# shellcheck disable=SC2162
94075b29833Smrg		saved_IFS=$IFS
94175b29833Smrg		IFS="-" read cpu vendor <<EOF
94275b29833Smrg$basic_machine
94375b29833SmrgEOF
94475b29833Smrg		IFS=$saved_IFS
94575b29833Smrg		;;
94675b29833Smrg	# We use `pc' rather than `unknown'
94775b29833Smrg	# because (1) that's what they normally are, and
94875b29833Smrg	# (2) the word "unknown" tends to confuse beginning users.
94975b29833Smrg	i*86 | x86_64)
95075b29833Smrg		cpu=$basic_machine
95175b29833Smrg		vendor=pc
95275b29833Smrg		;;
95375b29833Smrg	# These rules are duplicated from below for sake of the special case above;
95475b29833Smrg	# i.e. things that normalized to x86 arches should also default to "pc"
95575b29833Smrg	pc98)
95675b29833Smrg		cpu=i386
95775b29833Smrg		vendor=pc
95875b29833Smrg		;;
95975b29833Smrg	x64 | amd64)
96075b29833Smrg		cpu=x86_64
96175b29833Smrg		vendor=pc
96275b29833Smrg		;;
96375b29833Smrg	# Recognize the basic CPU types without company name.
96475b29833Smrg	*)
96575b29833Smrg		cpu=$basic_machine
96675b29833Smrg		vendor=unknown
96775b29833Smrg		;;
96875b29833Smrgesac
96975b29833Smrg
97075b29833Smrgunset -v basic_machine
97175b29833Smrg
97275b29833Smrg# Decode basic machines in the full and proper CPU-Company form.
97375b29833Smrgcase $cpu-$vendor in
97475b29833Smrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
97575b29833Smrg	# some cases the only manufacturer, in others, it is the most popular.
97675b29833Smrg	craynv-unknown)
97775b29833Smrg		vendor=cray
97875b29833Smrg		basic_os=${basic_os:-unicosmp}
97975b29833Smrg		;;
98075b29833Smrg	c90-unknown | c90-cray)
98175b29833Smrg		vendor=cray
98275b29833Smrg		basic_os=${Basic_os:-unicos}
98375b29833Smrg		;;
98475b29833Smrg	fx80-unknown)
98575b29833Smrg		vendor=alliant
98675b29833Smrg		;;
98775b29833Smrg	romp-unknown)
98875b29833Smrg		vendor=ibm
98975b29833Smrg		;;
99075b29833Smrg	mmix-unknown)
99175b29833Smrg		vendor=knuth
99275b29833Smrg		;;
99375b29833Smrg	microblaze-unknown | microblazeel-unknown)
99475b29833Smrg		vendor=xilinx
99575b29833Smrg		;;
99675b29833Smrg	rs6000-unknown)
99775b29833Smrg		vendor=ibm
99875b29833Smrg		;;
99975b29833Smrg	vax-unknown)
100075b29833Smrg		vendor=dec
100175b29833Smrg		;;
100275b29833Smrg	pdp11-unknown)
100375b29833Smrg		vendor=dec
100475b29833Smrg		;;
100575b29833Smrg	we32k-unknown)
100675b29833Smrg		vendor=att
100775b29833Smrg		;;
100875b29833Smrg	cydra-unknown)
100975b29833Smrg		vendor=cydrome
101075b29833Smrg		;;
101175b29833Smrg	i370-ibm*)
101275b29833Smrg		vendor=ibm
101375b29833Smrg		;;
101475b29833Smrg	orion-unknown)
101575b29833Smrg		vendor=highlevel
101675b29833Smrg		;;
101775b29833Smrg	xps-unknown | xps100-unknown)
101875b29833Smrg		cpu=xps100
101975b29833Smrg		vendor=honeywell
102075b29833Smrg		;;
102175b29833Smrg
102275b29833Smrg	# Here we normalize CPU types with a missing or matching vendor
102375b29833Smrg	armh-unknown | armh-alt)
102475b29833Smrg		cpu=armv7l
102575b29833Smrg		vendor=alt
102675b29833Smrg		basic_os=${basic_os:-linux-gnueabihf}
102775b29833Smrg		;;
102875b29833Smrg	dpx20-unknown | dpx20-bull)
102975b29833Smrg		cpu=rs6000
103075b29833Smrg		vendor=bull
103175b29833Smrg		basic_os=${basic_os:-bosx}
103275b29833Smrg		;;
103375b29833Smrg
103475b29833Smrg	# Here we normalize CPU types irrespective of the vendor
103575b29833Smrg	amd64-*)
103675b29833Smrg		cpu=x86_64
103775b29833Smrg		;;
103875b29833Smrg	blackfin-*)
103975b29833Smrg		cpu=bfin
104075b29833Smrg		basic_os=linux
104175b29833Smrg		;;
104275b29833Smrg	c54x-*)
104375b29833Smrg		cpu=tic54x
104475b29833Smrg		;;
104575b29833Smrg	c55x-*)
104675b29833Smrg		cpu=tic55x
104775b29833Smrg		;;
104875b29833Smrg	c6x-*)
104975b29833Smrg		cpu=tic6x
105075b29833Smrg		;;
105175b29833Smrg	e500v[12]-*)
105275b29833Smrg		cpu=powerpc
105375b29833Smrg		basic_os=${basic_os}"spe"
105475b29833Smrg		;;
105575b29833Smrg	mips3*-*)
105675b29833Smrg		cpu=mips64
105775b29833Smrg		;;
105875b29833Smrg	ms1-*)
105975b29833Smrg		cpu=mt
106075b29833Smrg		;;
106175b29833Smrg	m68knommu-*)
106275b29833Smrg		cpu=m68k
106375b29833Smrg		basic_os=linux
106475b29833Smrg		;;
106575b29833Smrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
106675b29833Smrg		cpu=s12z
106775b29833Smrg		;;
106875b29833Smrg	openrisc-*)
106975b29833Smrg		cpu=or32
107075b29833Smrg		;;
107175b29833Smrg	parisc-*)
107275b29833Smrg		cpu=hppa
107375b29833Smrg		basic_os=linux
107475b29833Smrg		;;
107575b29833Smrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
107675b29833Smrg		cpu=i586
107775b29833Smrg		;;
107875b29833Smrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
107975b29833Smrg		cpu=i686
108075b29833Smrg		;;
108175b29833Smrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
108275b29833Smrg		cpu=i686
108375b29833Smrg		;;
108475b29833Smrg	pentium4-*)
108575b29833Smrg		cpu=i786
108675b29833Smrg		;;
108775b29833Smrg	pc98-*)
108875b29833Smrg		cpu=i386
108975b29833Smrg		;;
109075b29833Smrg	ppc-* | ppcbe-*)
109175b29833Smrg		cpu=powerpc
109275b29833Smrg		;;
109375b29833Smrg	ppcle-* | powerpclittle-*)
109475b29833Smrg		cpu=powerpcle
109575b29833Smrg		;;
109675b29833Smrg	ppc64-*)
109775b29833Smrg		cpu=powerpc64
109875b29833Smrg		;;
109975b29833Smrg	ppc64le-* | powerpc64little-*)
110075b29833Smrg		cpu=powerpc64le
110175b29833Smrg		;;
110275b29833Smrg	sb1-*)
110375b29833Smrg		cpu=mipsisa64sb1
110475b29833Smrg		;;
110575b29833Smrg	sb1el-*)
110675b29833Smrg		cpu=mipsisa64sb1el
110775b29833Smrg		;;
110875b29833Smrg	sh5e[lb]-*)
110975b29833Smrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
111075b29833Smrg		;;
111175b29833Smrg	spur-*)
111275b29833Smrg		cpu=spur
111375b29833Smrg		;;
111475b29833Smrg	strongarm-* | thumb-*)
111575b29833Smrg		cpu=arm
111675b29833Smrg		;;
111775b29833Smrg	tx39-*)
111875b29833Smrg		cpu=mipstx39
111975b29833Smrg		;;
112075b29833Smrg	tx39el-*)
112175b29833Smrg		cpu=mipstx39el
112275b29833Smrg		;;
112375b29833Smrg	x64-*)
112475b29833Smrg		cpu=x86_64
112575b29833Smrg		;;
112675b29833Smrg	xscale-* | xscalee[bl]-*)
112775b29833Smrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
112875b29833Smrg		;;
112975b29833Smrg	arm64-* | aarch64le-*)
113075b29833Smrg		cpu=aarch64
113175b29833Smrg		;;
113275b29833Smrg
113375b29833Smrg	# Recognize the canonical CPU Types that limit and/or modify the
113475b29833Smrg	# company names they are paired with.
113575b29833Smrg	cr16-*)
113675b29833Smrg		basic_os=${basic_os:-elf}
113775b29833Smrg		;;
113875b29833Smrg	crisv32-* | etraxfs*-*)
113975b29833Smrg		cpu=crisv32
114075b29833Smrg		vendor=axis
114175b29833Smrg		;;
114275b29833Smrg	cris-* | etrax*-*)
114375b29833Smrg		cpu=cris
114475b29833Smrg		vendor=axis
114575b29833Smrg		;;
114675b29833Smrg	crx-*)
114775b29833Smrg		basic_os=${basic_os:-elf}
114875b29833Smrg		;;
114975b29833Smrg	neo-tandem)
115075b29833Smrg		cpu=neo
115175b29833Smrg		vendor=tandem
115275b29833Smrg		;;
115375b29833Smrg	nse-tandem)
115475b29833Smrg		cpu=nse
115575b29833Smrg		vendor=tandem
115675b29833Smrg		;;
115775b29833Smrg	nsr-tandem)
115875b29833Smrg		cpu=nsr
115975b29833Smrg		vendor=tandem
116075b29833Smrg		;;
116175b29833Smrg	nsv-tandem)
116275b29833Smrg		cpu=nsv
116375b29833Smrg		vendor=tandem
116475b29833Smrg		;;
116575b29833Smrg	nsx-tandem)
116675b29833Smrg		cpu=nsx
116775b29833Smrg		vendor=tandem
116875b29833Smrg		;;
116975b29833Smrg	mipsallegrexel-sony)
117075b29833Smrg		cpu=mipsallegrexel
117175b29833Smrg		vendor=sony
117275b29833Smrg		;;
117375b29833Smrg	tile*-*)
117475b29833Smrg		basic_os=${basic_os:-linux-gnu}
117575b29833Smrg		;;
117675b29833Smrg
117775b29833Smrg	*)
117875b29833Smrg		# Recognize the canonical CPU types that are allowed with any
117975b29833Smrg		# company name.
118075b29833Smrg		case $cpu in
118175b29833Smrg			1750a | 580 \
118275b29833Smrg			| a29k \
118375b29833Smrg			| aarch64 | aarch64_be \
118475b29833Smrg			| abacus \
118575b29833Smrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
118675b29833Smrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
118775b29833Smrg			| alphapca5[67] | alpha64pca5[67] \
118875b29833Smrg			| am33_2.0 \
118975b29833Smrg			| amdgcn \
119075b29833Smrg			| arc | arceb | arc32 | arc64 \
119175b29833Smrg			| arm | arm[lb]e | arme[lb] | armv* \
119275b29833Smrg			| avr | avr32 \
119375b29833Smrg			| asmjs \
119475b29833Smrg			| ba \
119575b29833Smrg			| be32 | be64 \
119675b29833Smrg			| bfin | bpf | bs2000 \
119775b29833Smrg			| c[123]* | c30 | [cjt]90 | c4x \
119875b29833Smrg			| c8051 | clipper | craynv | csky | cydra \
119975b29833Smrg			| d10v | d30v | dlx | dsp16xx \
120075b29833Smrg			| e2k | elxsi | epiphany \
120175b29833Smrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
120275b29833Smrg			| h8300 | h8500 \
120375b29833Smrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
120475b29833Smrg			| hexagon \
120575b29833Smrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
120675b29833Smrg			| ip2k | iq2000 \
120775b29833Smrg			| k1om \
120875b29833Smrg			| le32 | le64 \
120975b29833Smrg			| lm32 \
121075b29833Smrg			| loongarch32 | loongarch64 \
121175b29833Smrg			| m32c | m32r | m32rle \
121275b29833Smrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
121375b29833Smrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
121475b29833Smrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
121575b29833Smrg			| microblaze | microblazeel \
121675b29833Smrg			| mips | mipsbe | mipseb | mipsel | mipsle \
121775b29833Smrg			| mips16 \
121875b29833Smrg			| mips64 | mips64eb | mips64el \
121975b29833Smrg			| mips64octeon | mips64octeonel \
122075b29833Smrg			| mips64orion | mips64orionel \
122175b29833Smrg			| mips64r5900 | mips64r5900el \
122275b29833Smrg			| mips64vr | mips64vrel \
122375b29833Smrg			| mips64vr4100 | mips64vr4100el \
122475b29833Smrg			| mips64vr4300 | mips64vr4300el \
122575b29833Smrg			| mips64vr5000 | mips64vr5000el \
122675b29833Smrg			| mips64vr5900 | mips64vr5900el \
122775b29833Smrg			| mipsisa32 | mipsisa32el \
122875b29833Smrg			| mipsisa32r2 | mipsisa32r2el \
122975b29833Smrg			| mipsisa32r3 | mipsisa32r3el \
123075b29833Smrg			| mipsisa32r5 | mipsisa32r5el \
123175b29833Smrg			| mipsisa32r6 | mipsisa32r6el \
123275b29833Smrg			| mipsisa64 | mipsisa64el \
123375b29833Smrg			| mipsisa64r2 | mipsisa64r2el \
123475b29833Smrg			| mipsisa64r3 | mipsisa64r3el \
123575b29833Smrg			| mipsisa64r5 | mipsisa64r5el \
123675b29833Smrg			| mipsisa64r6 | mipsisa64r6el \
123775b29833Smrg			| mipsisa64sb1 | mipsisa64sb1el \
123875b29833Smrg			| mipsisa64sr71k | mipsisa64sr71kel \
123975b29833Smrg			| mipsr5900 | mipsr5900el \
124075b29833Smrg			| mipstx39 | mipstx39el \
124175b29833Smrg			| mmix \
124275b29833Smrg			| mn10200 | mn10300 \
124375b29833Smrg			| moxie \
124475b29833Smrg			| mt \
124575b29833Smrg			| msp430 \
124675b29833Smrg			| nds32 | nds32le | nds32be \
124775b29833Smrg			| nfp \
124875b29833Smrg			| nios | nios2 | nios2eb | nios2el \
124975b29833Smrg			| none | np1 | ns16k | ns32k | nvptx \
125075b29833Smrg			| open8 \
125175b29833Smrg			| or1k* \
125275b29833Smrg			| or32 \
125375b29833Smrg			| orion \
125475b29833Smrg			| picochip \
125575b29833Smrg			| pdp10 | pdp11 | pj | pjl | pn | power \
125675b29833Smrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
125775b29833Smrg			| pru \
125875b29833Smrg			| pyramid \
125975b29833Smrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
126075b29833Smrg			| rl78 | romp | rs6000 | rx \
126175b29833Smrg			| s390 | s390x \
126275b29833Smrg			| score \
126375b29833Smrg			| sh | shl \
126475b29833Smrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
126575b29833Smrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
126675b29833Smrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
126775b29833Smrg			| sparclite \
126875b29833Smrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
126975b29833Smrg			| spu \
127075b29833Smrg			| tahoe \
127175b29833Smrg			| thumbv7* \
127275b29833Smrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
127375b29833Smrg			| tron \
127475b29833Smrg			| ubicom32 \
127575b29833Smrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
127675b29833Smrg			| vax \
127775b29833Smrg			| visium \
127875b29833Smrg			| w65 \
127975b29833Smrg			| wasm32 | wasm64 \
128075b29833Smrg			| we32k \
128175b29833Smrg			| x86 | x86_64 | xc16x | xgate | xps100 \
128275b29833Smrg			| xstormy16 | xtensa* \
128375b29833Smrg			| ymp \
128475b29833Smrg			| z8k | z80)
128575b29833Smrg				;;
128675b29833Smrg
128775b29833Smrg			*)
128875b29833Smrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
128975b29833Smrg				exit 1
129075b29833Smrg				;;
129175b29833Smrg		esac
129275b29833Smrg		;;
129375b29833Smrgesac
129475b29833Smrg
129575b29833Smrg# Here we canonicalize certain aliases for manufacturers.
129675b29833Smrgcase $vendor in
129775b29833Smrg	digital*)
129875b29833Smrg		vendor=dec
129975b29833Smrg		;;
130075b29833Smrg	commodore*)
130175b29833Smrg		vendor=cbm
130275b29833Smrg		;;
130375b29833Smrg	*)
130475b29833Smrg		;;
130575b29833Smrgesac
130675b29833Smrg
130775b29833Smrg# Decode manufacturer-specific aliases for certain operating systems.
130875b29833Smrg
130975b29833Smrgif test x$basic_os != x
131075b29833Smrgthen
131175b29833Smrg
131275b29833Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
131375b29833Smrg# set os.
131475b29833Smrgcase $basic_os in
131575b29833Smrg	gnu/linux*)
131675b29833Smrg		kernel=linux
131775b29833Smrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
131875b29833Smrg		;;
131975b29833Smrg	os2-emx)
132075b29833Smrg		kernel=os2
132175b29833Smrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
132275b29833Smrg		;;
132375b29833Smrg	nto-qnx*)
132475b29833Smrg		kernel=nto
132575b29833Smrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
132675b29833Smrg		;;
132775b29833Smrg	*-*)
132875b29833Smrg		# shellcheck disable=SC2162
132975b29833Smrg		saved_IFS=$IFS
133075b29833Smrg		IFS="-" read kernel os <<EOF
133175b29833Smrg$basic_os
133275b29833SmrgEOF
133375b29833Smrg		IFS=$saved_IFS
133475b29833Smrg		;;
133575b29833Smrg	# Default OS when just kernel was specified
133675b29833Smrg	nto*)
133775b29833Smrg		kernel=nto
133875b29833Smrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
133975b29833Smrg		;;
134075b29833Smrg	linux*)
134175b29833Smrg		kernel=linux
134275b29833Smrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
134375b29833Smrg		;;
134475b29833Smrg	managarm*)
134575b29833Smrg		kernel=managarm
134675b29833Smrg		os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
134775b29833Smrg		;;
134875b29833Smrg	*)
134975b29833Smrg		kernel=
135075b29833Smrg		os=$basic_os
135175b29833Smrg		;;
135275b29833Smrgesac
135375b29833Smrg
135475b29833Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
135575b29833Smrg# etc.)
135675b29833Smrgcase $os in
135775b29833Smrg	# First match some system type aliases that might get confused
135875b29833Smrg	# with valid system types.
135975b29833Smrg	# solaris* is a basic system type, with this one exception.
136075b29833Smrg	auroraux)
136175b29833Smrg		os=auroraux
136275b29833Smrg		;;
136375b29833Smrg	bluegene*)
136475b29833Smrg		os=cnk
136575b29833Smrg		;;
136675b29833Smrg	solaris1 | solaris1.*)
136775b29833Smrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
136875b29833Smrg		;;
136975b29833Smrg	solaris)
137075b29833Smrg		os=solaris2
137175b29833Smrg		;;
137275b29833Smrg	unixware*)
137375b29833Smrg		os=sysv4.2uw
137475b29833Smrg		;;
137575b29833Smrg	# es1800 is here to avoid being matched by es* (a different OS)
137675b29833Smrg	es1800*)
137775b29833Smrg		os=ose
137875b29833Smrg		;;
137975b29833Smrg	# Some version numbers need modification
138075b29833Smrg	chorusos*)
138175b29833Smrg		os=chorusos
138275b29833Smrg		;;
138375b29833Smrg	isc)
138475b29833Smrg		os=isc2.2
138575b29833Smrg		;;
138675b29833Smrg	sco6)
138775b29833Smrg		os=sco5v6
138875b29833Smrg		;;
138975b29833Smrg	sco5)
139075b29833Smrg		os=sco3.2v5
139175b29833Smrg		;;
139275b29833Smrg	sco4)
139375b29833Smrg		os=sco3.2v4
139475b29833Smrg		;;
139575b29833Smrg	sco3.2.[4-9]*)
139675b29833Smrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
139775b29833Smrg		;;
139875b29833Smrg	sco*v* | scout)
139975b29833Smrg		# Don't match below
140075b29833Smrg		;;
140175b29833Smrg	sco*)
140275b29833Smrg		os=sco3.2v2
140375b29833Smrg		;;
140475b29833Smrg	psos*)
140575b29833Smrg		os=psos
140675b29833Smrg		;;
140775b29833Smrg	qnx*)
140875b29833Smrg		os=qnx
140975b29833Smrg		;;
141075b29833Smrg	hiux*)
141175b29833Smrg		os=hiuxwe2
141275b29833Smrg		;;
141375b29833Smrg	lynx*178)
141475b29833Smrg		os=lynxos178
141575b29833Smrg		;;
141675b29833Smrg	lynx*5)
141775b29833Smrg		os=lynxos5
141875b29833Smrg		;;
141975b29833Smrg	lynxos*)
142075b29833Smrg		# don't get caught up in next wildcard
142175b29833Smrg		;;
142275b29833Smrg	lynx*)
142375b29833Smrg		os=lynxos
142475b29833Smrg		;;
142575b29833Smrg	mac[0-9]*)
142675b29833Smrg		os=`echo "$os" | sed -e 's|mac|macos|'`
142775b29833Smrg		;;
142875b29833Smrg	opened*)
142975b29833Smrg		os=openedition
143075b29833Smrg		;;
143175b29833Smrg	os400*)
143275b29833Smrg		os=os400
143375b29833Smrg		;;
143475b29833Smrg	sunos5*)
143575b29833Smrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
143675b29833Smrg		;;
143775b29833Smrg	sunos6*)
143875b29833Smrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
143975b29833Smrg		;;
144075b29833Smrg	wince*)
144175b29833Smrg		os=wince
144275b29833Smrg		;;
144375b29833Smrg	utek*)
144475b29833Smrg		os=bsd
144575b29833Smrg		;;
144675b29833Smrg	dynix*)
144775b29833Smrg		os=bsd
144875b29833Smrg		;;
144975b29833Smrg	acis*)
145075b29833Smrg		os=aos
145175b29833Smrg		;;
145275b29833Smrg	atheos*)
145375b29833Smrg		os=atheos
145475b29833Smrg		;;
145575b29833Smrg	syllable*)
145675b29833Smrg		os=syllable
145775b29833Smrg		;;
145875b29833Smrg	386bsd)
145975b29833Smrg		os=bsd
146075b29833Smrg		;;
146175b29833Smrg	ctix* | uts*)
146275b29833Smrg		os=sysv
146375b29833Smrg		;;
146475b29833Smrg	nova*)
146575b29833Smrg		os=rtmk-nova
146675b29833Smrg		;;
146775b29833Smrg	ns2)
146875b29833Smrg		os=nextstep2
146975b29833Smrg		;;
147075b29833Smrg	# Preserve the version number of sinix5.
147175b29833Smrg	sinix5.*)
147275b29833Smrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
147375b29833Smrg		;;
147475b29833Smrg	sinix*)
147575b29833Smrg		os=sysv4
147675b29833Smrg		;;
147775b29833Smrg	tpf*)
147875b29833Smrg		os=tpf
147975b29833Smrg		;;
148075b29833Smrg	triton*)
148175b29833Smrg		os=sysv3
148275b29833Smrg		;;
148375b29833Smrg	oss*)
148475b29833Smrg		os=sysv3
148575b29833Smrg		;;
148675b29833Smrg	svr4*)
148775b29833Smrg		os=sysv4
148875b29833Smrg		;;
148975b29833Smrg	svr3)
149075b29833Smrg		os=sysv3
149175b29833Smrg		;;
149275b29833Smrg	sysvr4)
149375b29833Smrg		os=sysv4
149475b29833Smrg		;;
149575b29833Smrg	ose*)
149675b29833Smrg		os=ose
149775b29833Smrg		;;
149875b29833Smrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
149975b29833Smrg		os=mint
150075b29833Smrg		;;
150175b29833Smrg	dicos*)
150275b29833Smrg		os=dicos
150375b29833Smrg		;;
150475b29833Smrg	pikeos*)
150575b29833Smrg		# Until real need of OS specific support for
150675b29833Smrg		# particular features comes up, bare metal
150775b29833Smrg		# configurations are quite functional.
150875b29833Smrg		case $cpu in
150975b29833Smrg		    arm*)
151075b29833Smrg			os=eabi
151175b29833Smrg			;;
151275b29833Smrg		    *)
151375b29833Smrg			os=elf
151475b29833Smrg			;;
151575b29833Smrg		esac
151675b29833Smrg		;;
151775b29833Smrg	*)
151875b29833Smrg		# No normalization, but not necessarily accepted, that comes below.
151975b29833Smrg		;;
152075b29833Smrgesac
152175b29833Smrg
152275b29833Smrgelse
152375b29833Smrg
152475b29833Smrg# Here we handle the default operating systems that come with various machines.
152575b29833Smrg# The value should be what the vendor currently ships out the door with their
152675b29833Smrg# machine or put another way, the most popular os provided with the machine.
152775b29833Smrg
152875b29833Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
152975b29833Smrg# "-sun"), then you have to tell the case statement up towards the top
153075b29833Smrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
153175b29833Smrg# will signal an error saying that MANUFACTURER isn't an operating
153275b29833Smrg# system, and we'll never get to this point.
153375b29833Smrg
153475b29833Smrgkernel=
153575b29833Smrgcase $cpu-$vendor in
153675b29833Smrg	score-*)
153775b29833Smrg		os=elf
153875b29833Smrg		;;
153975b29833Smrg	spu-*)
154075b29833Smrg		os=elf
154175b29833Smrg		;;
154275b29833Smrg	*-acorn)
154375b29833Smrg		os=riscix1.2
154475b29833Smrg		;;
154575b29833Smrg	arm*-rebel)
154675b29833Smrg		kernel=linux
154775b29833Smrg		os=gnu
154875b29833Smrg		;;
154975b29833Smrg	arm*-semi)
155075b29833Smrg		os=aout
155175b29833Smrg		;;
155275b29833Smrg	c4x-* | tic4x-*)
155375b29833Smrg		os=coff
155475b29833Smrg		;;
155575b29833Smrg	c8051-*)
155675b29833Smrg		os=elf
155775b29833Smrg		;;
155875b29833Smrg	clipper-intergraph)
155975b29833Smrg		os=clix
156075b29833Smrg		;;
156175b29833Smrg	hexagon-*)
156275b29833Smrg		os=elf
156375b29833Smrg		;;
156475b29833Smrg	tic54x-*)
156575b29833Smrg		os=coff
156675b29833Smrg		;;
156775b29833Smrg	tic55x-*)
156875b29833Smrg		os=coff
156975b29833Smrg		;;
157075b29833Smrg	tic6x-*)
157175b29833Smrg		os=coff
157275b29833Smrg		;;
157375b29833Smrg	# This must come before the *-dec entry.
157475b29833Smrg	pdp10-*)
157575b29833Smrg		os=tops20
157675b29833Smrg		;;
157775b29833Smrg	pdp11-*)
157875b29833Smrg		os=none
157975b29833Smrg		;;
158075b29833Smrg	*-dec | vax-*)
158175b29833Smrg		os=ultrix4.2
158275b29833Smrg		;;
158375b29833Smrg	m68*-apollo)
158475b29833Smrg		os=domain
158575b29833Smrg		;;
158675b29833Smrg	i386-sun)
158775b29833Smrg		os=sunos4.0.2
158875b29833Smrg		;;
158975b29833Smrg	m68000-sun)
159075b29833Smrg		os=sunos3
159175b29833Smrg		;;
159275b29833Smrg	m68*-cisco)
159375b29833Smrg		os=aout
159475b29833Smrg		;;
159575b29833Smrg	mep-*)
159675b29833Smrg		os=elf
159775b29833Smrg		;;
159875b29833Smrg	mips*-cisco)
159975b29833Smrg		os=elf
160075b29833Smrg		;;
160175b29833Smrg	mips*-*)
160275b29833Smrg		os=elf
160375b29833Smrg		;;
160475b29833Smrg	or32-*)
160575b29833Smrg		os=coff
160675b29833Smrg		;;
160775b29833Smrg	*-tti)	# must be before sparc entry or we get the wrong os.
160875b29833Smrg		os=sysv3
160975b29833Smrg		;;
161075b29833Smrg	sparc-* | *-sun)
161175b29833Smrg		os=sunos4.1.1
161275b29833Smrg		;;
161375b29833Smrg	pru-*)
161475b29833Smrg		os=elf
161575b29833Smrg		;;
161675b29833Smrg	*-be)
161775b29833Smrg		os=beos
161875b29833Smrg		;;
161975b29833Smrg	*-ibm)
162075b29833Smrg		os=aix
162175b29833Smrg		;;
162275b29833Smrg	*-knuth)
162375b29833Smrg		os=mmixware
162475b29833Smrg		;;
162575b29833Smrg	*-wec)
162675b29833Smrg		os=proelf
162775b29833Smrg		;;
162875b29833Smrg	*-winbond)
162975b29833Smrg		os=proelf
163075b29833Smrg		;;
163175b29833Smrg	*-oki)
163275b29833Smrg		os=proelf
163375b29833Smrg		;;
163475b29833Smrg	*-hp)
163575b29833Smrg		os=hpux
163675b29833Smrg		;;
163775b29833Smrg	*-hitachi)
163875b29833Smrg		os=hiux
163975b29833Smrg		;;
164075b29833Smrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
164175b29833Smrg		os=sysv
164275b29833Smrg		;;
164375b29833Smrg	*-cbm)
164475b29833Smrg		os=amigaos
164575b29833Smrg		;;
164675b29833Smrg	*-dg)
164775b29833Smrg		os=dgux
164875b29833Smrg		;;
164975b29833Smrg	*-dolphin)
165075b29833Smrg		os=sysv3
165175b29833Smrg		;;
165275b29833Smrg	m68k-ccur)
165375b29833Smrg		os=rtu
165475b29833Smrg		;;
165575b29833Smrg	m88k-omron*)
165675b29833Smrg		os=luna
165775b29833Smrg		;;
165875b29833Smrg	*-next)
165975b29833Smrg		os=nextstep
166075b29833Smrg		;;
166175b29833Smrg	*-sequent)
166275b29833Smrg		os=ptx
166375b29833Smrg		;;
166475b29833Smrg	*-crds)
166575b29833Smrg		os=unos
166675b29833Smrg		;;
166775b29833Smrg	*-ns)
166875b29833Smrg		os=genix
166975b29833Smrg		;;
167075b29833Smrg	i370-*)
167175b29833Smrg		os=mvs
167275b29833Smrg		;;
167375b29833Smrg	*-gould)
167475b29833Smrg		os=sysv
167575b29833Smrg		;;
167675b29833Smrg	*-highlevel)
167775b29833Smrg		os=bsd
167875b29833Smrg		;;
167975b29833Smrg	*-encore)
168075b29833Smrg		os=bsd
168175b29833Smrg		;;
168275b29833Smrg	*-sgi)
168375b29833Smrg		os=irix
168475b29833Smrg		;;
168575b29833Smrg	*-siemens)
168675b29833Smrg		os=sysv4
168775b29833Smrg		;;
168875b29833Smrg	*-masscomp)
168975b29833Smrg		os=rtu
169075b29833Smrg		;;
169175b29833Smrg	f30[01]-fujitsu | f700-fujitsu)
169275b29833Smrg		os=uxpv
169375b29833Smrg		;;
169475b29833Smrg	*-rom68k)
169575b29833Smrg		os=coff
169675b29833Smrg		;;
169775b29833Smrg	*-*bug)
169875b29833Smrg		os=coff
169975b29833Smrg		;;
170075b29833Smrg	*-apple)
170175b29833Smrg		os=macos
170275b29833Smrg		;;
170375b29833Smrg	*-atari*)
170475b29833Smrg		os=mint
170575b29833Smrg		;;
170675b29833Smrg	*-wrs)
170775b29833Smrg		os=vxworks
170875b29833Smrg		;;
170975b29833Smrg	*)
171075b29833Smrg		os=none
171175b29833Smrg		;;
171275b29833Smrgesac
171375b29833Smrg
171475b29833Smrgfi
171575b29833Smrg
171675b29833Smrg# Now, validate our (potentially fixed-up) OS.
171775b29833Smrgcase $os in
171875b29833Smrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
171975b29833Smrg	musl* | newlib* | relibc* | uclibc*)
172075b29833Smrg		;;
172175b29833Smrg	# Likewise for "kernel-abi"
172275b29833Smrg	eabi* | gnueabi*)
172375b29833Smrg		;;
172475b29833Smrg	# VxWorks passes extra cpu info in the 4th filed.
172575b29833Smrg	simlinux | simwindows | spe)
172675b29833Smrg		;;
172775b29833Smrg	# Now accept the basic system types.
172875b29833Smrg	# The portable systems comes first.
172975b29833Smrg	# Each alternative MUST end in a * to match a version number.
173075b29833Smrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
173175b29833Smrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
173275b29833Smrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
173375b29833Smrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
173475b29833Smrg	     | hiux* | abug | nacl* | netware* | windows* \
173575b29833Smrg	     | os9* | macos* | osx* | ios* \
173675b29833Smrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
173775b29833Smrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
173875b29833Smrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
173975b29833Smrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
174075b29833Smrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
174175b29833Smrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
174275b29833Smrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
174375b29833Smrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
174475b29833Smrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
174575b29833Smrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
174675b29833Smrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
174775b29833Smrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
174875b29833Smrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
174975b29833Smrg	     | midipix* | mingw32* | mingw64* | mint* \
175075b29833Smrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
175175b29833Smrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
175275b29833Smrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
175375b29833Smrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
175475b29833Smrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
175575b29833Smrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
175675b29833Smrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
175775b29833Smrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
175875b29833Smrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
175975b29833Smrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
176075b29833Smrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
176175b29833Smrg	     | fiwix* | mlibc* )
176275b29833Smrg		;;
176375b29833Smrg	# This one is extra strict with allowed versions
176475b29833Smrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
176575b29833Smrg		# Don't forget version if it is 3.2v4 or newer.
176675b29833Smrg		;;
176775b29833Smrg	none)
176875b29833Smrg		;;
176975b29833Smrg	kernel* )
177075b29833Smrg		# Restricted further below
177175b29833Smrg		;;
177275b29833Smrg	*)
177375b29833Smrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
177475b29833Smrg		exit 1
177575b29833Smrg		;;
177675b29833Smrgesac
177775b29833Smrg
177875b29833Smrg# As a final step for OS-related things, validate the OS-kernel combination
177975b29833Smrg# (given a valid OS), if there is a kernel.
178075b29833Smrgcase $kernel-$os in
178175b29833Smrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
178275b29833Smrg		   | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* )
178375b29833Smrg		;;
178475b29833Smrg	uclinux-uclibc* )
178575b29833Smrg		;;
178675b29833Smrg	managarm-mlibc* | managarm-kernel* )
178775b29833Smrg		;;
178875b29833Smrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* )
178975b29833Smrg		# These are just libc implementations, not actual OSes, and thus
179075b29833Smrg		# require a kernel.
179175b29833Smrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
179275b29833Smrg		exit 1
179375b29833Smrg		;;
179475b29833Smrg	-kernel* )
179575b29833Smrg		echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2
179675b29833Smrg		exit 1
179775b29833Smrg		;;
179875b29833Smrg	*-kernel* )
179975b29833Smrg		echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2
180075b29833Smrg		exit 1
180175b29833Smrg		;;
180275b29833Smrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
180375b29833Smrg		;;
180475b29833Smrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
180575b29833Smrg		;;
180675b29833Smrg	nto-qnx*)
180775b29833Smrg		;;
180875b29833Smrg	os2-emx)
180975b29833Smrg		;;
181075b29833Smrg	*-eabi* | *-gnueabi*)
181175b29833Smrg		;;
181275b29833Smrg	-*)
181375b29833Smrg		# Blank kernel with real OS is always fine.
181475b29833Smrg		;;
181575b29833Smrg	*-*)
181675b29833Smrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
181775b29833Smrg		exit 1
181875b29833Smrg		;;
181975b29833Smrgesac
182075b29833Smrg
182175b29833Smrg# Here we handle the case where we know the os, and the CPU type, but not the
182275b29833Smrg# manufacturer.  We pick the logical manufacturer.
182375b29833Smrgcase $vendor in
182475b29833Smrg	unknown)
182575b29833Smrg		case $cpu-$os in
182675b29833Smrg			*-riscix*)
182775b29833Smrg				vendor=acorn
182875b29833Smrg				;;
182975b29833Smrg			*-sunos*)
183075b29833Smrg				vendor=sun
183175b29833Smrg				;;
183275b29833Smrg			*-cnk* | *-aix*)
183375b29833Smrg				vendor=ibm
183475b29833Smrg				;;
183575b29833Smrg			*-beos*)
183675b29833Smrg				vendor=be
183775b29833Smrg				;;
183875b29833Smrg			*-hpux*)
183975b29833Smrg				vendor=hp
184075b29833Smrg				;;
184175b29833Smrg			*-mpeix*)
184275b29833Smrg				vendor=hp
184375b29833Smrg				;;
184475b29833Smrg			*-hiux*)
184575b29833Smrg				vendor=hitachi
184675b29833Smrg				;;
184775b29833Smrg			*-unos*)
184875b29833Smrg				vendor=crds
184975b29833Smrg				;;
185075b29833Smrg			*-dgux*)
185175b29833Smrg				vendor=dg
185275b29833Smrg				;;
185375b29833Smrg			*-luna*)
185475b29833Smrg				vendor=omron
185575b29833Smrg				;;
185675b29833Smrg			*-genix*)
185775b29833Smrg				vendor=ns
185875b29833Smrg				;;
185975b29833Smrg			*-clix*)
186075b29833Smrg				vendor=intergraph
186175b29833Smrg				;;
186275b29833Smrg			*-mvs* | *-opened*)
186375b29833Smrg				vendor=ibm
186475b29833Smrg				;;
186575b29833Smrg			*-os400*)
186675b29833Smrg				vendor=ibm
186775b29833Smrg				;;
186875b29833Smrg			s390-* | s390x-*)
186975b29833Smrg				vendor=ibm
187075b29833Smrg				;;
187175b29833Smrg			*-ptx*)
187275b29833Smrg				vendor=sequent
187375b29833Smrg				;;
187475b29833Smrg			*-tpf*)
187575b29833Smrg				vendor=ibm
187675b29833Smrg				;;
187775b29833Smrg			*-vxsim* | *-vxworks* | *-windiss*)
187875b29833Smrg				vendor=wrs
187975b29833Smrg				;;
188075b29833Smrg			*-aux*)
188175b29833Smrg				vendor=apple
188275b29833Smrg				;;
188375b29833Smrg			*-hms*)
188475b29833Smrg				vendor=hitachi
188575b29833Smrg				;;
188675b29833Smrg			*-mpw* | *-macos*)
188775b29833Smrg				vendor=apple
188875b29833Smrg				;;
188975b29833Smrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
189075b29833Smrg				vendor=atari
189175b29833Smrg				;;
189275b29833Smrg			*-vos*)
189375b29833Smrg				vendor=stratus
189475b29833Smrg				;;
189575b29833Smrg		esac
189675b29833Smrg		;;
189775b29833Smrgesac
189875b29833Smrg
189975b29833Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
190075b29833Smrgexit
190175b29833Smrg
190275b29833Smrg# Local variables:
190375b29833Smrg# eval: (add-hook 'before-save-hook 'time-stamp)
190475b29833Smrg# time-stamp-start: "timestamp='"
190575b29833Smrg# time-stamp-format: "%:y-%02m-%02d"
190675b29833Smrg# time-stamp-end: "'"
190775b29833Smrg# End:
1908