config.sub revision e9628295
11ab64890Smrg#! /bin/sh
21ab64890Smrg# Configuration validation subroutine script.
3e9628295Smrg#   Copyright 1992-2021 Free Software Foundation, Inc.
41ab64890Smrg
5e9628295Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale
6e9628295Smrg
7e9628295Smrgtimestamp='2021-08-14'
81ab64890Smrg
9eb411b4bSmrg# This file is free software; you can redistribute it and/or modify it
10eb411b4bSmrg# under the terms of the GNU General Public License as published by
11eb411b4bSmrg# the Free Software Foundation; either version 3 of the License, or
121ab64890Smrg# (at your option) any later version.
131ab64890Smrg#
14eb411b4bSmrg# This program is distributed in the hope that it will be useful, but
15eb411b4bSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of
16eb411b4bSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17eb411b4bSmrg# General Public License for more details.
181ab64890Smrg#
191ab64890Smrg# You should have received a copy of the GNU General Public License
205afda2e6Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
211ab64890Smrg#
221ab64890Smrg# As a special exception to the GNU General Public License, if you
231ab64890Smrg# distribute this file as part of a program that contains a
241ab64890Smrg# configuration script generated by Autoconf, you may include it under
25eb411b4bSmrg# the same distribution terms that you use for the rest of that
26eb411b4bSmrg# program.  This Exception is an additional permission under section 7
27eb411b4bSmrg# of the GNU General Public License, version 3 ("GPLv3").
281ab64890Smrg
291ab64890Smrg
30862bcd1aSmrg# Please send patches to <config-patches@gnu.org>.
311ab64890Smrg#
321ab64890Smrg# Configuration subroutine to validate and canonicalize a configuration type.
331ab64890Smrg# Supply the specified configuration type as an argument.
341ab64890Smrg# If it is invalid, we print an error message on stderr and exit with code 1.
351ab64890Smrg# Otherwise, we print the canonical config type on stdout and succeed.
361ab64890Smrg
3788de56ccSmrg# You can get the latest version of this script from:
38e9628295Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
3988de56ccSmrg
401ab64890Smrg# This file is supposed to be the same for all GNU packages
411ab64890Smrg# and recognize all the CPU types, system types and aliases
421ab64890Smrg# that are meaningful with *any* GNU software.
431ab64890Smrg# Each package is responsible for reporting which valid configurations
441ab64890Smrg# it does not support.  The user should be able to distinguish
451ab64890Smrg# a failure to support a valid configuration from a meaningless
461ab64890Smrg# configuration.
471ab64890Smrg
481ab64890Smrg# The goal of this file is to map all the various variations of a given
491ab64890Smrg# machine specification into a single specification in the form:
501ab64890Smrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
511ab64890Smrg# or in some cases, the newer four-part form:
521ab64890Smrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
531ab64890Smrg# It is wrong to echo any other type of specification.
541ab64890Smrg
55e9628295Smrg# The "shellcheck disable" line above the timestamp inhibits complaints
56e9628295Smrg# about features and limitations of the classic Bourne shell that were
57e9628295Smrg# superseded or lifted in POSIX.  However, this script identifies a wide
58e9628295Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
59e9628295Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still
60e9628295Smrg# have a pre-POSIX /bin/sh.
61e9628295Smrg
62e9628295Smrgme=`echo "$0" | sed -e 's,.*/,,'`
631ab64890Smrg
641ab64890Smrgusage="\
6538ae11fcSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
661ab64890Smrg
671ab64890SmrgCanonicalize a configuration name.
681ab64890Smrg
695afda2e6SmrgOptions:
701ab64890Smrg  -h, --help         print this help, then exit
711ab64890Smrg  -t, --time-stamp   print date of last modification, then exit
721ab64890Smrg  -v, --version      print version number, then exit
731ab64890Smrg
741ab64890SmrgReport bugs and patches to <config-patches@gnu.org>."
751ab64890Smrg
761ab64890Smrgversion="\
771ab64890SmrgGNU config.sub ($timestamp)
781ab64890Smrg
79e9628295SmrgCopyright 1992-2021 Free Software Foundation, Inc.
801ab64890Smrg
811ab64890SmrgThis is free software; see the source for copying conditions.  There is NO
821ab64890Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
831ab64890Smrg
841ab64890Smrghelp="
851ab64890SmrgTry \`$me --help' for more information."
861ab64890Smrg
871ab64890Smrg# Parse command line
881ab64890Smrgwhile test $# -gt 0 ; do
891ab64890Smrg  case $1 in
901ab64890Smrg    --time-stamp | --time* | -t )
911ab64890Smrg       echo "$timestamp" ; exit ;;
921ab64890Smrg    --version | -v )
931ab64890Smrg       echo "$version" ; exit ;;
941ab64890Smrg    --help | --h* | -h )
951ab64890Smrg       echo "$usage"; exit ;;
961ab64890Smrg    -- )     # Stop option processing
971ab64890Smrg       shift; break ;;
981ab64890Smrg    - )	# Use stdin as input.
991ab64890Smrg       break ;;
1001ab64890Smrg    -* )
10103ea5dc6Smrg       echo "$me: invalid option $1$help" >&2
1021ab64890Smrg       exit 1 ;;
1031ab64890Smrg
1041ab64890Smrg    *local*)
1051ab64890Smrg       # First pass through any local machine types.
1065afda2e6Smrg       echo "$1"
1071ab64890Smrg       exit ;;
1081ab64890Smrg
1091ab64890Smrg    * )
1101ab64890Smrg       break ;;
1111ab64890Smrg  esac
1121ab64890Smrgdone
1131ab64890Smrg
1141ab64890Smrgcase $# in
1151ab64890Smrg 0) echo "$me: missing argument$help" >&2
1161ab64890Smrg    exit 1;;
1171ab64890Smrg 1) ;;
1181ab64890Smrg *) echo "$me: too many arguments$help" >&2
1191ab64890Smrg    exit 1;;
1201ab64890Smrgesac
1211ab64890Smrg
12203ea5dc6Smrg# Split fields of configuration type
12303ea5dc6Smrg# shellcheck disable=SC2162
124e9628295Smrgsaved_IFS=$IFS
12503ea5dc6SmrgIFS="-" read field1 field2 field3 field4 <<EOF
12603ea5dc6Smrg$1
12703ea5dc6SmrgEOF
128e9628295SmrgIFS=$saved_IFS
1291ab64890Smrg
13003ea5dc6Smrg# Separate into logical components for further validation
13103ea5dc6Smrgcase $1 in
13203ea5dc6Smrg	*-*-*-*-*)
13303ea5dc6Smrg		echo Invalid configuration \`"$1"\': more than four components >&2
13403ea5dc6Smrg		exit 1
1359c019ec5Smaya		;;
13603ea5dc6Smrg	*-*-*-*)
13703ea5dc6Smrg		basic_machine=$field1-$field2
13803ea5dc6Smrg		basic_os=$field3-$field4
1399c019ec5Smaya		;;
14003ea5dc6Smrg	*-*-*)
14103ea5dc6Smrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
14203ea5dc6Smrg		# parts
14303ea5dc6Smrg		maybe_os=$field2-$field3
14403ea5dc6Smrg		case $maybe_os in
14503ea5dc6Smrg			nto-qnx* | linux-* | uclinux-uclibc* \
14603ea5dc6Smrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
14703ea5dc6Smrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
14803ea5dc6Smrg			| storm-chaos* | os2-emx* | rtmk-nova*)
14903ea5dc6Smrg				basic_machine=$field1
15003ea5dc6Smrg				basic_os=$maybe_os
15103ea5dc6Smrg				;;
15203ea5dc6Smrg			android-linux)
15303ea5dc6Smrg				basic_machine=$field1-unknown
15403ea5dc6Smrg				basic_os=linux-android
15503ea5dc6Smrg				;;
15603ea5dc6Smrg			*)
15703ea5dc6Smrg				basic_machine=$field1-$field2
15803ea5dc6Smrg				basic_os=$field3
15903ea5dc6Smrg				;;
16003ea5dc6Smrg		esac
1619c019ec5Smaya		;;
16203ea5dc6Smrg	*-*)
16303ea5dc6Smrg		# A lone config we happen to match not fitting any pattern
16403ea5dc6Smrg		case $field1-$field2 in
16503ea5dc6Smrg			decstation-3100)
16603ea5dc6Smrg				basic_machine=mips-dec
16703ea5dc6Smrg				basic_os=
16803ea5dc6Smrg				;;
16903ea5dc6Smrg			*-*)
17003ea5dc6Smrg				# Second component is usually, but not always the OS
17103ea5dc6Smrg				case $field2 in
17203ea5dc6Smrg					# Prevent following clause from handling this valid os
17303ea5dc6Smrg					sun*os*)
17403ea5dc6Smrg						basic_machine=$field1
17503ea5dc6Smrg						basic_os=$field2
17603ea5dc6Smrg						;;
177e9628295Smrg					zephyr*)
178e9628295Smrg						basic_machine=$field1-unknown
179e9628295Smrg						basic_os=$field2
180e9628295Smrg						;;
18103ea5dc6Smrg					# Manufacturers
18203ea5dc6Smrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
18303ea5dc6Smrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
18403ea5dc6Smrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
18503ea5dc6Smrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
18603ea5dc6Smrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
18703ea5dc6Smrg					| ultra | tti* | harris | dolphin | highlevel | gould \
18803ea5dc6Smrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
18903ea5dc6Smrg					| microblaze* | sim | cisco \
19003ea5dc6Smrg					| oki | wec | wrs | winbond)
19103ea5dc6Smrg						basic_machine=$field1-$field2
19203ea5dc6Smrg						basic_os=
19303ea5dc6Smrg						;;
19403ea5dc6Smrg					*)
19503ea5dc6Smrg						basic_machine=$field1
19603ea5dc6Smrg						basic_os=$field2
19703ea5dc6Smrg						;;
19803ea5dc6Smrg				esac
19903ea5dc6Smrg			;;
20003ea5dc6Smrg		esac
2019c019ec5Smaya		;;
20203ea5dc6Smrg	*)
20303ea5dc6Smrg		# Convert single-component short-hands not valid as part of
20403ea5dc6Smrg		# multi-component configurations.
20503ea5dc6Smrg		case $field1 in
20603ea5dc6Smrg			386bsd)
20703ea5dc6Smrg				basic_machine=i386-pc
20803ea5dc6Smrg				basic_os=bsd
20903ea5dc6Smrg				;;
21003ea5dc6Smrg			a29khif)
21103ea5dc6Smrg				basic_machine=a29k-amd
21203ea5dc6Smrg				basic_os=udi
21303ea5dc6Smrg				;;
21403ea5dc6Smrg			adobe68k)
21503ea5dc6Smrg				basic_machine=m68010-adobe
21603ea5dc6Smrg				basic_os=scout
21703ea5dc6Smrg				;;
21803ea5dc6Smrg			alliant)
21903ea5dc6Smrg				basic_machine=fx80-alliant
22003ea5dc6Smrg				basic_os=
22103ea5dc6Smrg				;;
22203ea5dc6Smrg			altos | altos3068)
22303ea5dc6Smrg				basic_machine=m68k-altos
22403ea5dc6Smrg				basic_os=
22503ea5dc6Smrg				;;
22603ea5dc6Smrg			am29k)
22703ea5dc6Smrg				basic_machine=a29k-none
22803ea5dc6Smrg				basic_os=bsd
22903ea5dc6Smrg				;;
23003ea5dc6Smrg			amdahl)
23103ea5dc6Smrg				basic_machine=580-amdahl
23203ea5dc6Smrg				basic_os=sysv
23303ea5dc6Smrg				;;
23403ea5dc6Smrg			amiga)
23503ea5dc6Smrg				basic_machine=m68k-unknown
23603ea5dc6Smrg				basic_os=
23703ea5dc6Smrg				;;
23803ea5dc6Smrg			amigaos | amigados)
23903ea5dc6Smrg				basic_machine=m68k-unknown
24003ea5dc6Smrg				basic_os=amigaos
24103ea5dc6Smrg				;;
24203ea5dc6Smrg			amigaunix | amix)
24303ea5dc6Smrg				basic_machine=m68k-unknown
24403ea5dc6Smrg				basic_os=sysv4
24503ea5dc6Smrg				;;
24603ea5dc6Smrg			apollo68)
24703ea5dc6Smrg				basic_machine=m68k-apollo
24803ea5dc6Smrg				basic_os=sysv
24903ea5dc6Smrg				;;
25003ea5dc6Smrg			apollo68bsd)
25103ea5dc6Smrg				basic_machine=m68k-apollo
25203ea5dc6Smrg				basic_os=bsd
25303ea5dc6Smrg				;;
25403ea5dc6Smrg			aros)
25503ea5dc6Smrg				basic_machine=i386-pc
25603ea5dc6Smrg				basic_os=aros
25703ea5dc6Smrg				;;
25803ea5dc6Smrg			aux)
25903ea5dc6Smrg				basic_machine=m68k-apple
26003ea5dc6Smrg				basic_os=aux
26103ea5dc6Smrg				;;
26203ea5dc6Smrg			balance)
26303ea5dc6Smrg				basic_machine=ns32k-sequent
26403ea5dc6Smrg				basic_os=dynix
26503ea5dc6Smrg				;;
26603ea5dc6Smrg			blackfin)
26703ea5dc6Smrg				basic_machine=bfin-unknown
26803ea5dc6Smrg				basic_os=linux
26903ea5dc6Smrg				;;
27003ea5dc6Smrg			cegcc)
27103ea5dc6Smrg				basic_machine=arm-unknown
27203ea5dc6Smrg				basic_os=cegcc
27303ea5dc6Smrg				;;
27403ea5dc6Smrg			convex-c1)
27503ea5dc6Smrg				basic_machine=c1-convex
27603ea5dc6Smrg				basic_os=bsd
27703ea5dc6Smrg				;;
27803ea5dc6Smrg			convex-c2)
27903ea5dc6Smrg				basic_machine=c2-convex
28003ea5dc6Smrg				basic_os=bsd
28103ea5dc6Smrg				;;
28203ea5dc6Smrg			convex-c32)
28303ea5dc6Smrg				basic_machine=c32-convex
28403ea5dc6Smrg				basic_os=bsd
28503ea5dc6Smrg				;;
28603ea5dc6Smrg			convex-c34)
28703ea5dc6Smrg				basic_machine=c34-convex
28803ea5dc6Smrg				basic_os=bsd
28903ea5dc6Smrg				;;
29003ea5dc6Smrg			convex-c38)
29103ea5dc6Smrg				basic_machine=c38-convex
29203ea5dc6Smrg				basic_os=bsd
29303ea5dc6Smrg				;;
29403ea5dc6Smrg			cray)
29503ea5dc6Smrg				basic_machine=j90-cray
29603ea5dc6Smrg				basic_os=unicos
29703ea5dc6Smrg				;;
29803ea5dc6Smrg			crds | unos)
29903ea5dc6Smrg				basic_machine=m68k-crds
30003ea5dc6Smrg				basic_os=
30103ea5dc6Smrg				;;
30203ea5dc6Smrg			da30)
30303ea5dc6Smrg				basic_machine=m68k-da30
30403ea5dc6Smrg				basic_os=
30503ea5dc6Smrg				;;
30603ea5dc6Smrg			decstation | pmax | pmin | dec3100 | decstatn)
30703ea5dc6Smrg				basic_machine=mips-dec
30803ea5dc6Smrg				basic_os=
30903ea5dc6Smrg				;;
31003ea5dc6Smrg			delta88)
31103ea5dc6Smrg				basic_machine=m88k-motorola
31203ea5dc6Smrg				basic_os=sysv3
31303ea5dc6Smrg				;;
31403ea5dc6Smrg			dicos)
31503ea5dc6Smrg				basic_machine=i686-pc
31603ea5dc6Smrg				basic_os=dicos
31703ea5dc6Smrg				;;
31803ea5dc6Smrg			djgpp)
31903ea5dc6Smrg				basic_machine=i586-pc
32003ea5dc6Smrg				basic_os=msdosdjgpp
32103ea5dc6Smrg				;;
32203ea5dc6Smrg			ebmon29k)
32303ea5dc6Smrg				basic_machine=a29k-amd
32403ea5dc6Smrg				basic_os=ebmon
32503ea5dc6Smrg				;;
32603ea5dc6Smrg			es1800 | OSE68k | ose68k | ose | OSE)
32703ea5dc6Smrg				basic_machine=m68k-ericsson
32803ea5dc6Smrg				basic_os=ose
32903ea5dc6Smrg				;;
33003ea5dc6Smrg			gmicro)
33103ea5dc6Smrg				basic_machine=tron-gmicro
33203ea5dc6Smrg				basic_os=sysv
33303ea5dc6Smrg				;;
33403ea5dc6Smrg			go32)
33503ea5dc6Smrg				basic_machine=i386-pc
33603ea5dc6Smrg				basic_os=go32
33703ea5dc6Smrg				;;
33803ea5dc6Smrg			h8300hms)
33903ea5dc6Smrg				basic_machine=h8300-hitachi
34003ea5dc6Smrg				basic_os=hms
34103ea5dc6Smrg				;;
34203ea5dc6Smrg			h8300xray)
34303ea5dc6Smrg				basic_machine=h8300-hitachi
34403ea5dc6Smrg				basic_os=xray
34503ea5dc6Smrg				;;
34603ea5dc6Smrg			h8500hms)
34703ea5dc6Smrg				basic_machine=h8500-hitachi
34803ea5dc6Smrg				basic_os=hms
34903ea5dc6Smrg				;;
35003ea5dc6Smrg			harris)
35103ea5dc6Smrg				basic_machine=m88k-harris
35203ea5dc6Smrg				basic_os=sysv3
35303ea5dc6Smrg				;;
35403ea5dc6Smrg			hp300 | hp300hpux)
35503ea5dc6Smrg				basic_machine=m68k-hp
35603ea5dc6Smrg				basic_os=hpux
35703ea5dc6Smrg				;;
35803ea5dc6Smrg			hp300bsd)
35903ea5dc6Smrg				basic_machine=m68k-hp
36003ea5dc6Smrg				basic_os=bsd
36103ea5dc6Smrg				;;
36203ea5dc6Smrg			hppaosf)
36303ea5dc6Smrg				basic_machine=hppa1.1-hp
36403ea5dc6Smrg				basic_os=osf
36503ea5dc6Smrg				;;
36603ea5dc6Smrg			hppro)
36703ea5dc6Smrg				basic_machine=hppa1.1-hp
36803ea5dc6Smrg				basic_os=proelf
36903ea5dc6Smrg				;;
37003ea5dc6Smrg			i386mach)
37103ea5dc6Smrg				basic_machine=i386-mach
37203ea5dc6Smrg				basic_os=mach
37303ea5dc6Smrg				;;
37403ea5dc6Smrg			isi68 | isi)
37503ea5dc6Smrg				basic_machine=m68k-isi
37603ea5dc6Smrg				basic_os=sysv
37703ea5dc6Smrg				;;
37803ea5dc6Smrg			m68knommu)
37903ea5dc6Smrg				basic_machine=m68k-unknown
38003ea5dc6Smrg				basic_os=linux
38103ea5dc6Smrg				;;
38203ea5dc6Smrg			magnum | m3230)
38303ea5dc6Smrg				basic_machine=mips-mips
38403ea5dc6Smrg				basic_os=sysv
38503ea5dc6Smrg				;;
38603ea5dc6Smrg			merlin)
38703ea5dc6Smrg				basic_machine=ns32k-utek
38803ea5dc6Smrg				basic_os=sysv
38903ea5dc6Smrg				;;
39003ea5dc6Smrg			mingw64)
39103ea5dc6Smrg				basic_machine=x86_64-pc
39203ea5dc6Smrg				basic_os=mingw64
39303ea5dc6Smrg				;;
39403ea5dc6Smrg			mingw32)
39503ea5dc6Smrg				basic_machine=i686-pc
39603ea5dc6Smrg				basic_os=mingw32
39703ea5dc6Smrg				;;
39803ea5dc6Smrg			mingw32ce)
39903ea5dc6Smrg				basic_machine=arm-unknown
40003ea5dc6Smrg				basic_os=mingw32ce
40103ea5dc6Smrg				;;
40203ea5dc6Smrg			monitor)
40303ea5dc6Smrg				basic_machine=m68k-rom68k
40403ea5dc6Smrg				basic_os=coff
40503ea5dc6Smrg				;;
40603ea5dc6Smrg			morphos)
40703ea5dc6Smrg				basic_machine=powerpc-unknown
40803ea5dc6Smrg				basic_os=morphos
40903ea5dc6Smrg				;;
41003ea5dc6Smrg			moxiebox)
41103ea5dc6Smrg				basic_machine=moxie-unknown
41203ea5dc6Smrg				basic_os=moxiebox
41303ea5dc6Smrg				;;
41403ea5dc6Smrg			msdos)
41503ea5dc6Smrg				basic_machine=i386-pc
41603ea5dc6Smrg				basic_os=msdos
41703ea5dc6Smrg				;;
41803ea5dc6Smrg			msys)
41903ea5dc6Smrg				basic_machine=i686-pc
42003ea5dc6Smrg				basic_os=msys
42103ea5dc6Smrg				;;
42203ea5dc6Smrg			mvs)
42303ea5dc6Smrg				basic_machine=i370-ibm
42403ea5dc6Smrg				basic_os=mvs
42503ea5dc6Smrg				;;
42603ea5dc6Smrg			nacl)
42703ea5dc6Smrg				basic_machine=le32-unknown
42803ea5dc6Smrg				basic_os=nacl
42903ea5dc6Smrg				;;
43003ea5dc6Smrg			ncr3000)
43103ea5dc6Smrg				basic_machine=i486-ncr
43203ea5dc6Smrg				basic_os=sysv4
43303ea5dc6Smrg				;;
43403ea5dc6Smrg			netbsd386)
43503ea5dc6Smrg				basic_machine=i386-pc
43603ea5dc6Smrg				basic_os=netbsd
43703ea5dc6Smrg				;;
43803ea5dc6Smrg			netwinder)
43903ea5dc6Smrg				basic_machine=armv4l-rebel
44003ea5dc6Smrg				basic_os=linux
44103ea5dc6Smrg				;;
44203ea5dc6Smrg			news | news700 | news800 | news900)
44303ea5dc6Smrg				basic_machine=m68k-sony
44403ea5dc6Smrg				basic_os=newsos
44503ea5dc6Smrg				;;
44603ea5dc6Smrg			news1000)
44703ea5dc6Smrg				basic_machine=m68030-sony
44803ea5dc6Smrg				basic_os=newsos
44903ea5dc6Smrg				;;
45003ea5dc6Smrg			necv70)
45103ea5dc6Smrg				basic_machine=v70-nec
45203ea5dc6Smrg				basic_os=sysv
45303ea5dc6Smrg				;;
45403ea5dc6Smrg			nh3000)
45503ea5dc6Smrg				basic_machine=m68k-harris
45603ea5dc6Smrg				basic_os=cxux
45703ea5dc6Smrg				;;
45803ea5dc6Smrg			nh[45]000)
45903ea5dc6Smrg				basic_machine=m88k-harris
46003ea5dc6Smrg				basic_os=cxux
46103ea5dc6Smrg				;;
46203ea5dc6Smrg			nindy960)
46303ea5dc6Smrg				basic_machine=i960-intel
46403ea5dc6Smrg				basic_os=nindy
46503ea5dc6Smrg				;;
46603ea5dc6Smrg			mon960)
46703ea5dc6Smrg				basic_machine=i960-intel
46803ea5dc6Smrg				basic_os=mon960
46903ea5dc6Smrg				;;
47003ea5dc6Smrg			nonstopux)
47103ea5dc6Smrg				basic_machine=mips-compaq
47203ea5dc6Smrg				basic_os=nonstopux
47303ea5dc6Smrg				;;
47403ea5dc6Smrg			os400)
47503ea5dc6Smrg				basic_machine=powerpc-ibm
47603ea5dc6Smrg				basic_os=os400
47703ea5dc6Smrg				;;
47803ea5dc6Smrg			OSE68000 | ose68000)
47903ea5dc6Smrg				basic_machine=m68000-ericsson
48003ea5dc6Smrg				basic_os=ose
48103ea5dc6Smrg				;;
48203ea5dc6Smrg			os68k)
48303ea5dc6Smrg				basic_machine=m68k-none
48403ea5dc6Smrg				basic_os=os68k
48503ea5dc6Smrg				;;
48603ea5dc6Smrg			paragon)
48703ea5dc6Smrg				basic_machine=i860-intel
48803ea5dc6Smrg				basic_os=osf
48903ea5dc6Smrg				;;
49003ea5dc6Smrg			parisc)
49103ea5dc6Smrg				basic_machine=hppa-unknown
49203ea5dc6Smrg				basic_os=linux
49303ea5dc6Smrg				;;
49403ea5dc6Smrg			psp)
49503ea5dc6Smrg				basic_machine=mipsallegrexel-sony
49603ea5dc6Smrg				basic_os=psp
49703ea5dc6Smrg				;;
49803ea5dc6Smrg			pw32)
49903ea5dc6Smrg				basic_machine=i586-unknown
50003ea5dc6Smrg				basic_os=pw32
50103ea5dc6Smrg				;;
50203ea5dc6Smrg			rdos | rdos64)
50303ea5dc6Smrg				basic_machine=x86_64-pc
50403ea5dc6Smrg				basic_os=rdos
50503ea5dc6Smrg				;;
50603ea5dc6Smrg			rdos32)
50703ea5dc6Smrg				basic_machine=i386-pc
50803ea5dc6Smrg				basic_os=rdos
50903ea5dc6Smrg				;;
51003ea5dc6Smrg			rom68k)
51103ea5dc6Smrg				basic_machine=m68k-rom68k
51203ea5dc6Smrg				basic_os=coff
51303ea5dc6Smrg				;;
51403ea5dc6Smrg			sa29200)
51503ea5dc6Smrg				basic_machine=a29k-amd
51603ea5dc6Smrg				basic_os=udi
51703ea5dc6Smrg				;;
51803ea5dc6Smrg			sei)
51903ea5dc6Smrg				basic_machine=mips-sei
52003ea5dc6Smrg				basic_os=seiux
52103ea5dc6Smrg				;;
52203ea5dc6Smrg			sequent)
52303ea5dc6Smrg				basic_machine=i386-sequent
52403ea5dc6Smrg				basic_os=
52503ea5dc6Smrg				;;
52603ea5dc6Smrg			sps7)
52703ea5dc6Smrg				basic_machine=m68k-bull
52803ea5dc6Smrg				basic_os=sysv2
52903ea5dc6Smrg				;;
53003ea5dc6Smrg			st2000)
53103ea5dc6Smrg				basic_machine=m68k-tandem
53203ea5dc6Smrg				basic_os=
53303ea5dc6Smrg				;;
53403ea5dc6Smrg			stratus)
53503ea5dc6Smrg				basic_machine=i860-stratus
53603ea5dc6Smrg				basic_os=sysv4
53703ea5dc6Smrg				;;
53803ea5dc6Smrg			sun2)
53903ea5dc6Smrg				basic_machine=m68000-sun
54003ea5dc6Smrg				basic_os=
54103ea5dc6Smrg				;;
54203ea5dc6Smrg			sun2os3)
54303ea5dc6Smrg				basic_machine=m68000-sun
54403ea5dc6Smrg				basic_os=sunos3
54503ea5dc6Smrg				;;
54603ea5dc6Smrg			sun2os4)
54703ea5dc6Smrg				basic_machine=m68000-sun
54803ea5dc6Smrg				basic_os=sunos4
54903ea5dc6Smrg				;;
55003ea5dc6Smrg			sun3)
55103ea5dc6Smrg				basic_machine=m68k-sun
55203ea5dc6Smrg				basic_os=
55303ea5dc6Smrg				;;
55403ea5dc6Smrg			sun3os3)
55503ea5dc6Smrg				basic_machine=m68k-sun
55603ea5dc6Smrg				basic_os=sunos3
55703ea5dc6Smrg				;;
55803ea5dc6Smrg			sun3os4)
55903ea5dc6Smrg				basic_machine=m68k-sun
56003ea5dc6Smrg				basic_os=sunos4
56103ea5dc6Smrg				;;
56203ea5dc6Smrg			sun4)
56303ea5dc6Smrg				basic_machine=sparc-sun
56403ea5dc6Smrg				basic_os=
56503ea5dc6Smrg				;;
56603ea5dc6Smrg			sun4os3)
56703ea5dc6Smrg				basic_machine=sparc-sun
56803ea5dc6Smrg				basic_os=sunos3
56903ea5dc6Smrg				;;
57003ea5dc6Smrg			sun4os4)
57103ea5dc6Smrg				basic_machine=sparc-sun
57203ea5dc6Smrg				basic_os=sunos4
57303ea5dc6Smrg				;;
57403ea5dc6Smrg			sun4sol2)
57503ea5dc6Smrg				basic_machine=sparc-sun
57603ea5dc6Smrg				basic_os=solaris2
57703ea5dc6Smrg				;;
57803ea5dc6Smrg			sun386 | sun386i | roadrunner)
57903ea5dc6Smrg				basic_machine=i386-sun
58003ea5dc6Smrg				basic_os=
58103ea5dc6Smrg				;;
58203ea5dc6Smrg			sv1)
58303ea5dc6Smrg				basic_machine=sv1-cray
58403ea5dc6Smrg				basic_os=unicos
58503ea5dc6Smrg				;;
58603ea5dc6Smrg			symmetry)
58703ea5dc6Smrg				basic_machine=i386-sequent
58803ea5dc6Smrg				basic_os=dynix
58903ea5dc6Smrg				;;
59003ea5dc6Smrg			t3e)
59103ea5dc6Smrg				basic_machine=alphaev5-cray
59203ea5dc6Smrg				basic_os=unicos
59303ea5dc6Smrg				;;
59403ea5dc6Smrg			t90)
59503ea5dc6Smrg				basic_machine=t90-cray
59603ea5dc6Smrg				basic_os=unicos
59703ea5dc6Smrg				;;
59803ea5dc6Smrg			toad1)
59903ea5dc6Smrg				basic_machine=pdp10-xkl
60003ea5dc6Smrg				basic_os=tops20
60103ea5dc6Smrg				;;
60203ea5dc6Smrg			tpf)
60303ea5dc6Smrg				basic_machine=s390x-ibm
60403ea5dc6Smrg				basic_os=tpf
60503ea5dc6Smrg				;;
60603ea5dc6Smrg			udi29k)
60703ea5dc6Smrg				basic_machine=a29k-amd
60803ea5dc6Smrg				basic_os=udi
60903ea5dc6Smrg				;;
61003ea5dc6Smrg			ultra3)
61103ea5dc6Smrg				basic_machine=a29k-nyu
61203ea5dc6Smrg				basic_os=sym1
61303ea5dc6Smrg				;;
61403ea5dc6Smrg			v810 | necv810)
61503ea5dc6Smrg				basic_machine=v810-nec
61603ea5dc6Smrg				basic_os=none
61703ea5dc6Smrg				;;
61803ea5dc6Smrg			vaxv)
61903ea5dc6Smrg				basic_machine=vax-dec
62003ea5dc6Smrg				basic_os=sysv
62103ea5dc6Smrg				;;
62203ea5dc6Smrg			vms)
62303ea5dc6Smrg				basic_machine=vax-dec
62403ea5dc6Smrg				basic_os=vms
62503ea5dc6Smrg				;;
62603ea5dc6Smrg			vsta)
62703ea5dc6Smrg				basic_machine=i386-pc
62803ea5dc6Smrg				basic_os=vsta
62903ea5dc6Smrg				;;
63003ea5dc6Smrg			vxworks960)
63103ea5dc6Smrg				basic_machine=i960-wrs
63203ea5dc6Smrg				basic_os=vxworks
63303ea5dc6Smrg				;;
63403ea5dc6Smrg			vxworks68)
63503ea5dc6Smrg				basic_machine=m68k-wrs
63603ea5dc6Smrg				basic_os=vxworks
63703ea5dc6Smrg				;;
63803ea5dc6Smrg			vxworks29k)
63903ea5dc6Smrg				basic_machine=a29k-wrs
64003ea5dc6Smrg				basic_os=vxworks
64103ea5dc6Smrg				;;
64203ea5dc6Smrg			xbox)
64303ea5dc6Smrg				basic_machine=i686-pc
64403ea5dc6Smrg				basic_os=mingw32
64503ea5dc6Smrg				;;
64603ea5dc6Smrg			ymp)
64703ea5dc6Smrg				basic_machine=ymp-cray
64803ea5dc6Smrg				basic_os=unicos
64903ea5dc6Smrg				;;
65003ea5dc6Smrg			*)
65103ea5dc6Smrg				basic_machine=$1
65203ea5dc6Smrg				basic_os=
65303ea5dc6Smrg				;;
65403ea5dc6Smrg		esac
6551ab64890Smrg		;;
6561ab64890Smrgesac
6571ab64890Smrg
65803ea5dc6Smrg# Decode 1-component or ad-hoc basic machines
6591ab64890Smrgcase $basic_machine in
66003ea5dc6Smrg	# Here we handle the default manufacturer of certain CPU types.  It is in
66103ea5dc6Smrg	# some cases the only manufacturer, in others, it is the most popular.
66203ea5dc6Smrg	w89k)
66303ea5dc6Smrg		cpu=hppa1.1
66403ea5dc6Smrg		vendor=winbond
6651ab64890Smrg		;;
66603ea5dc6Smrg	op50n)
66703ea5dc6Smrg		cpu=hppa1.1
66803ea5dc6Smrg		vendor=oki
669eb411b4bSmrg		;;
67003ea5dc6Smrg	op60c)
67103ea5dc6Smrg		cpu=hppa1.1
67203ea5dc6Smrg		vendor=oki
673eb411b4bSmrg		;;
67403ea5dc6Smrg	ibm*)
67503ea5dc6Smrg		cpu=i370
67603ea5dc6Smrg		vendor=ibm
677eb411b4bSmrg		;;
67803ea5dc6Smrg	orion105)
67903ea5dc6Smrg		cpu=clipper
68003ea5dc6Smrg		vendor=highlevel
6819c019ec5Smaya		;;
68203ea5dc6Smrg	mac | mpw | mac-mpw)
68303ea5dc6Smrg		cpu=m68k
68403ea5dc6Smrg		vendor=apple
6859c019ec5Smaya		;;
68603ea5dc6Smrg	pmac | pmac-mpw)
68703ea5dc6Smrg		cpu=powerpc
68803ea5dc6Smrg		vendor=apple
689eb411b4bSmrg		;;
690eb411b4bSmrg
6911ab64890Smrg	# Recognize the various machine names and aliases which stand
6921ab64890Smrg	# for a CPU type and a company and sometimes even an OS.
6931ab64890Smrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
69403ea5dc6Smrg		cpu=m68000
69503ea5dc6Smrg		vendor=att
6961ab64890Smrg		;;
6971ab64890Smrg	3b*)
69803ea5dc6Smrg		cpu=we32k
69903ea5dc6Smrg		vendor=att
70061b2299dSmrg		;;
70188de56ccSmrg	bluegene*)
70203ea5dc6Smrg		cpu=powerpc
70303ea5dc6Smrg		vendor=ibm
70403ea5dc6Smrg		basic_os=cnk
7051ab64890Smrg		;;
7061ab64890Smrg	decsystem10* | dec10*)
70703ea5dc6Smrg		cpu=pdp10
70803ea5dc6Smrg		vendor=dec
70903ea5dc6Smrg		basic_os=tops10
7101ab64890Smrg		;;
7111ab64890Smrg	decsystem20* | dec20*)
71203ea5dc6Smrg		cpu=pdp10
71303ea5dc6Smrg		vendor=dec
71403ea5dc6Smrg		basic_os=tops20
7151ab64890Smrg		;;
7161ab64890Smrg	delta | 3300 | motorola-3300 | motorola-delta \
7171ab64890Smrg	      | 3300-motorola | delta-motorola)
71803ea5dc6Smrg		cpu=m68k
71903ea5dc6Smrg		vendor=motorola
72088de56ccSmrg		;;
7215afda2e6Smrg	dpx2*)
72203ea5dc6Smrg		cpu=m68k
72303ea5dc6Smrg		vendor=bull
72403ea5dc6Smrg		basic_os=sysv3
7259c019ec5Smaya		;;
7269c019ec5Smaya	encore | umax | mmax)
72703ea5dc6Smrg		cpu=ns32k
72803ea5dc6Smrg		vendor=encore
7299c019ec5Smaya		;;
73003ea5dc6Smrg	elxsi)
73103ea5dc6Smrg		cpu=elxsi
73203ea5dc6Smrg		vendor=elxsi
73303ea5dc6Smrg		basic_os=${basic_os:-bsd}
7341ab64890Smrg		;;
7351ab64890Smrg	fx2800)
73603ea5dc6Smrg		cpu=i860
73703ea5dc6Smrg		vendor=alliant
7381ab64890Smrg		;;
7391ab64890Smrg	genix)
74003ea5dc6Smrg		cpu=ns32k
74103ea5dc6Smrg		vendor=ns
7421ab64890Smrg		;;
7431ab64890Smrg	h3050r* | hiux*)
74403ea5dc6Smrg		cpu=hppa1.1
74503ea5dc6Smrg		vendor=hitachi
74603ea5dc6Smrg		basic_os=hiuxwe2
7471ab64890Smrg		;;
7481ab64890Smrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
74903ea5dc6Smrg		cpu=hppa1.0
75003ea5dc6Smrg		vendor=hp
7511ab64890Smrg		;;
7521ab64890Smrg	hp9k2[0-9][0-9] | hp9k31[0-9])
75303ea5dc6Smrg		cpu=m68000
75403ea5dc6Smrg		vendor=hp
7551ab64890Smrg		;;
7561ab64890Smrg	hp9k3[2-9][0-9])
75703ea5dc6Smrg		cpu=m68k
75803ea5dc6Smrg		vendor=hp
7591ab64890Smrg		;;
7601ab64890Smrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
76103ea5dc6Smrg		cpu=hppa1.0
76203ea5dc6Smrg		vendor=hp
7631ab64890Smrg		;;
7641ab64890Smrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
76503ea5dc6Smrg		cpu=hppa1.1
76603ea5dc6Smrg		vendor=hp
7671ab64890Smrg		;;
7681ab64890Smrg	hp9k78[0-9] | hp78[0-9])
7691ab64890Smrg		# FIXME: really hppa2.0-hp
77003ea5dc6Smrg		cpu=hppa1.1
77103ea5dc6Smrg		vendor=hp
7721ab64890Smrg		;;
7731ab64890Smrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
7741ab64890Smrg		# FIXME: really hppa2.0-hp
77503ea5dc6Smrg		cpu=hppa1.1
77603ea5dc6Smrg		vendor=hp
7771ab64890Smrg		;;
7781ab64890Smrg	hp9k8[0-9][13679] | hp8[0-9][13679])
77903ea5dc6Smrg		cpu=hppa1.1
78003ea5dc6Smrg		vendor=hp
7811ab64890Smrg		;;
7821ab64890Smrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
78303ea5dc6Smrg		cpu=hppa1.0
78403ea5dc6Smrg		vendor=hp
7851ab64890Smrg		;;
7861ab64890Smrg	i*86v32)
787e9628295Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
78803ea5dc6Smrg		vendor=pc
78903ea5dc6Smrg		basic_os=sysv32
7901ab64890Smrg		;;
7911ab64890Smrg	i*86v4*)
792e9628295Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79303ea5dc6Smrg		vendor=pc
79403ea5dc6Smrg		basic_os=sysv4
7951ab64890Smrg		;;
7961ab64890Smrg	i*86v)
797e9628295Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79803ea5dc6Smrg		vendor=pc
79903ea5dc6Smrg		basic_os=sysv
8001ab64890Smrg		;;
8011ab64890Smrg	i*86sol2)
802e9628295Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
80303ea5dc6Smrg		vendor=pc
80403ea5dc6Smrg		basic_os=solaris2
8051ab64890Smrg		;;
80603ea5dc6Smrg	j90 | j90-cray)
80703ea5dc6Smrg		cpu=j90
80803ea5dc6Smrg		vendor=cray
80903ea5dc6Smrg		basic_os=${basic_os:-unicos}
8101ab64890Smrg		;;
8111ab64890Smrg	iris | iris4d)
81203ea5dc6Smrg		cpu=mips
81303ea5dc6Smrg		vendor=sgi
81403ea5dc6Smrg		case $basic_os in
81503ea5dc6Smrg		    irix*)
8161ab64890Smrg			;;
8171ab64890Smrg		    *)
81803ea5dc6Smrg			basic_os=irix4
8191ab64890Smrg			;;
8201ab64890Smrg		esac
8211ab64890Smrg		;;
8221ab64890Smrg	miniframe)
82303ea5dc6Smrg		cpu=m68000
82403ea5dc6Smrg		vendor=convergent
8259c019ec5Smaya		;;
82603ea5dc6Smrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
82703ea5dc6Smrg		cpu=m68k
82803ea5dc6Smrg		vendor=atari
82903ea5dc6Smrg		basic_os=mint
8301ab64890Smrg		;;
8311ab64890Smrg	news-3600 | risc-news)
83203ea5dc6Smrg		cpu=mips
83303ea5dc6Smrg		vendor=sony
83403ea5dc6Smrg		basic_os=newsos
8351ab64890Smrg		;;
8365afda2e6Smrg	next | m*-next)
83703ea5dc6Smrg		cpu=m68k
83803ea5dc6Smrg		vendor=next
83903ea5dc6Smrg		case $basic_os in
84003ea5dc6Smrg		    openstep*)
84103ea5dc6Smrg		        ;;
84203ea5dc6Smrg		    nextstep*)
8431ab64890Smrg			;;
84403ea5dc6Smrg		    ns2*)
84503ea5dc6Smrg		      basic_os=nextstep2
8461ab64890Smrg			;;
8471ab64890Smrg		    *)
84803ea5dc6Smrg		      basic_os=nextstep3
8491ab64890Smrg			;;
8501ab64890Smrg		esac
8511ab64890Smrg		;;
8521ab64890Smrg	np1)
85303ea5dc6Smrg		cpu=np1
85403ea5dc6Smrg		vendor=gould
8551ab64890Smrg		;;
8561ab64890Smrg	op50n-* | op60c-*)
85703ea5dc6Smrg		cpu=hppa1.1
85803ea5dc6Smrg		vendor=oki
85903ea5dc6Smrg		basic_os=proelf
8601ab64890Smrg		;;
8611ab64890Smrg	pa-hitachi)
86203ea5dc6Smrg		cpu=hppa1.1
86303ea5dc6Smrg		vendor=hitachi
86403ea5dc6Smrg		basic_os=hiuxwe2
86561b2299dSmrg		;;
8661ab64890Smrg	pbd)
86703ea5dc6Smrg		cpu=sparc
86803ea5dc6Smrg		vendor=tti
8691ab64890Smrg		;;
8701ab64890Smrg	pbb)
87103ea5dc6Smrg		cpu=m68k
87203ea5dc6Smrg		vendor=tti
8739c019ec5Smaya		;;
87403ea5dc6Smrg	pc532)
87503ea5dc6Smrg		cpu=ns32k
87603ea5dc6Smrg		vendor=pc532
8771ab64890Smrg		;;
8781ab64890Smrg	pn)
87903ea5dc6Smrg		cpu=pn
88003ea5dc6Smrg		vendor=gould
8811ab64890Smrg		;;
88203ea5dc6Smrg	power)
88303ea5dc6Smrg		cpu=power
88403ea5dc6Smrg		vendor=ibm
8851ab64890Smrg		;;
88603ea5dc6Smrg	ps2)
88703ea5dc6Smrg		cpu=i386
88803ea5dc6Smrg		vendor=ibm
8891ab64890Smrg		;;
89003ea5dc6Smrg	rm[46]00)
89103ea5dc6Smrg		cpu=mips
89203ea5dc6Smrg		vendor=siemens
8931ab64890Smrg		;;
89403ea5dc6Smrg	rtpc | rtpc-*)
89503ea5dc6Smrg		cpu=romp
89603ea5dc6Smrg		vendor=ibm
8979c019ec5Smaya		;;
89803ea5dc6Smrg	sde)
89903ea5dc6Smrg		cpu=mipsisa32
90003ea5dc6Smrg		vendor=sde
90103ea5dc6Smrg		basic_os=${basic_os:-elf}
9021ab64890Smrg		;;
90303ea5dc6Smrg	simso-wrs)
90403ea5dc6Smrg		cpu=sparclite
90503ea5dc6Smrg		vendor=wrs
90603ea5dc6Smrg		basic_os=vxworks
9071ab64890Smrg		;;
90803ea5dc6Smrg	tower | tower-32)
90903ea5dc6Smrg		cpu=m68k
91003ea5dc6Smrg		vendor=ncr
9111ab64890Smrg		;;
91203ea5dc6Smrg	vpp*|vx|vx-*)
91303ea5dc6Smrg		cpu=f301
91403ea5dc6Smrg		vendor=fujitsu
9151ab64890Smrg		;;
91603ea5dc6Smrg	w65)
91703ea5dc6Smrg		cpu=w65
91803ea5dc6Smrg		vendor=wdc
9191ab64890Smrg		;;
92003ea5dc6Smrg	w89k-*)
92103ea5dc6Smrg		cpu=hppa1.1
92203ea5dc6Smrg		vendor=winbond
92303ea5dc6Smrg		basic_os=proelf
9241ab64890Smrg		;;
92503ea5dc6Smrg	none)
92603ea5dc6Smrg		cpu=none
92703ea5dc6Smrg		vendor=none
9281ab64890Smrg		;;
92903ea5dc6Smrg	leon|leon[3-9])
93003ea5dc6Smrg		cpu=sparc
93103ea5dc6Smrg		vendor=$basic_machine
9321ab64890Smrg		;;
93303ea5dc6Smrg	leon-*|leon[3-9]-*)
93403ea5dc6Smrg		cpu=sparc
935e9628295Smrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
9361ab64890Smrg		;;
93703ea5dc6Smrg
93803ea5dc6Smrg	*-*)
93903ea5dc6Smrg		# shellcheck disable=SC2162
940e9628295Smrg		saved_IFS=$IFS
94103ea5dc6Smrg		IFS="-" read cpu vendor <<EOF
94203ea5dc6Smrg$basic_machine
94303ea5dc6SmrgEOF
944e9628295Smrg		IFS=$saved_IFS
9451ab64890Smrg		;;
94603ea5dc6Smrg	# We use `pc' rather than `unknown'
94703ea5dc6Smrg	# because (1) that's what they normally are, and
94803ea5dc6Smrg	# (2) the word "unknown" tends to confuse beginning users.
94903ea5dc6Smrg	i*86 | x86_64)
95003ea5dc6Smrg		cpu=$basic_machine
95103ea5dc6Smrg		vendor=pc
952eb411b4bSmrg		;;
95303ea5dc6Smrg	# These rules are duplicated from below for sake of the special case above;
95403ea5dc6Smrg	# i.e. things that normalized to x86 arches should also default to "pc"
95503ea5dc6Smrg	pc98)
95603ea5dc6Smrg		cpu=i386
95703ea5dc6Smrg		vendor=pc
9581ab64890Smrg		;;
95903ea5dc6Smrg	x64 | amd64)
96003ea5dc6Smrg		cpu=x86_64
96103ea5dc6Smrg		vendor=pc
9621ab64890Smrg		;;
96303ea5dc6Smrg	# Recognize the basic CPU types without company name.
96403ea5dc6Smrg	*)
96503ea5dc6Smrg		cpu=$basic_machine
96603ea5dc6Smrg		vendor=unknown
9671ab64890Smrg		;;
96803ea5dc6Smrgesac
96903ea5dc6Smrg
97003ea5dc6Smrgunset -v basic_machine
97103ea5dc6Smrg
97203ea5dc6Smrg# Decode basic machines in the full and proper CPU-Company form.
97303ea5dc6Smrgcase $cpu-$vendor in
97403ea5dc6Smrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
97503ea5dc6Smrg	# some cases the only manufacturer, in others, it is the most popular.
97603ea5dc6Smrg	craynv-unknown)
97703ea5dc6Smrg		vendor=cray
97803ea5dc6Smrg		basic_os=${basic_os:-unicosmp}
9791ab64890Smrg		;;
98003ea5dc6Smrg	c90-unknown | c90-cray)
98103ea5dc6Smrg		vendor=cray
98203ea5dc6Smrg		basic_os=${Basic_os:-unicos}
9831ab64890Smrg		;;
98403ea5dc6Smrg	fx80-unknown)
98503ea5dc6Smrg		vendor=alliant
9861ab64890Smrg		;;
98703ea5dc6Smrg	romp-unknown)
98803ea5dc6Smrg		vendor=ibm
9891ab64890Smrg		;;
99003ea5dc6Smrg	mmix-unknown)
99103ea5dc6Smrg		vendor=knuth
9921ab64890Smrg		;;
99303ea5dc6Smrg	microblaze-unknown | microblazeel-unknown)
99403ea5dc6Smrg		vendor=xilinx
9951ab64890Smrg		;;
99603ea5dc6Smrg	rs6000-unknown)
99703ea5dc6Smrg		vendor=ibm
9981ab64890Smrg		;;
99903ea5dc6Smrg	vax-unknown)
100003ea5dc6Smrg		vendor=dec
10011ab64890Smrg		;;
100203ea5dc6Smrg	pdp11-unknown)
100303ea5dc6Smrg		vendor=dec
10041ab64890Smrg		;;
100503ea5dc6Smrg	we32k-unknown)
100603ea5dc6Smrg		vendor=att
10071ab64890Smrg		;;
100803ea5dc6Smrg	cydra-unknown)
100903ea5dc6Smrg		vendor=cydrome
10101ab64890Smrg		;;
101103ea5dc6Smrg	i370-ibm*)
101203ea5dc6Smrg		vendor=ibm
10131ab64890Smrg		;;
101403ea5dc6Smrg	orion-unknown)
101503ea5dc6Smrg		vendor=highlevel
101661b2299dSmrg		;;
101703ea5dc6Smrg	xps-unknown | xps100-unknown)
101803ea5dc6Smrg		cpu=xps100
101903ea5dc6Smrg		vendor=honeywell
10201ab64890Smrg		;;
102103ea5dc6Smrg
102203ea5dc6Smrg	# Here we normalize CPU types with a missing or matching vendor
102303ea5dc6Smrg	dpx20-unknown | dpx20-bull)
102403ea5dc6Smrg		cpu=rs6000
102503ea5dc6Smrg		vendor=bull
102603ea5dc6Smrg		basic_os=${basic_os:-bosx}
10271ab64890Smrg		;;
102803ea5dc6Smrg
102903ea5dc6Smrg	# Here we normalize CPU types irrespective of the vendor
103003ea5dc6Smrg	amd64-*)
103103ea5dc6Smrg		cpu=x86_64
10321ab64890Smrg		;;
103303ea5dc6Smrg	blackfin-*)
103403ea5dc6Smrg		cpu=bfin
103503ea5dc6Smrg		basic_os=linux
10361ab64890Smrg		;;
103703ea5dc6Smrg	c54x-*)
103803ea5dc6Smrg		cpu=tic54x
10391ab64890Smrg		;;
104003ea5dc6Smrg	c55x-*)
104103ea5dc6Smrg		cpu=tic55x
10421ab64890Smrg		;;
104303ea5dc6Smrg	c6x-*)
104403ea5dc6Smrg		cpu=tic6x
10451ab64890Smrg		;;
104603ea5dc6Smrg	e500v[12]-*)
104703ea5dc6Smrg		cpu=powerpc
104803ea5dc6Smrg		basic_os=${basic_os}"spe"
10491ab64890Smrg		;;
105003ea5dc6Smrg	mips3*-*)
105103ea5dc6Smrg		cpu=mips64
10521ab64890Smrg		;;
105303ea5dc6Smrg	ms1-*)
105403ea5dc6Smrg		cpu=mt
10551ab64890Smrg		;;
105603ea5dc6Smrg	m68knommu-*)
105703ea5dc6Smrg		cpu=m68k
105803ea5dc6Smrg		basic_os=linux
10591ab64890Smrg		;;
106003ea5dc6Smrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
106103ea5dc6Smrg		cpu=s12z
10621ab64890Smrg		;;
106303ea5dc6Smrg	openrisc-*)
106403ea5dc6Smrg		cpu=or32
10651ab64890Smrg		;;
106603ea5dc6Smrg	parisc-*)
106703ea5dc6Smrg		cpu=hppa
106803ea5dc6Smrg		basic_os=linux
10691ab64890Smrg		;;
107003ea5dc6Smrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
107103ea5dc6Smrg		cpu=i586
10721ab64890Smrg		;;
107303ea5dc6Smrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
107403ea5dc6Smrg		cpu=i686
10751ab64890Smrg		;;
107603ea5dc6Smrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
107703ea5dc6Smrg		cpu=i686
10781ab64890Smrg		;;
107903ea5dc6Smrg	pentium4-*)
108003ea5dc6Smrg		cpu=i786
10811ab64890Smrg		;;
108203ea5dc6Smrg	pc98-*)
108303ea5dc6Smrg		cpu=i386
1084eb411b4bSmrg		;;
108503ea5dc6Smrg	ppc-* | ppcbe-*)
108603ea5dc6Smrg		cpu=powerpc
10871ab64890Smrg		;;
108803ea5dc6Smrg	ppcle-* | powerpclittle-*)
108903ea5dc6Smrg		cpu=powerpcle
10901ab64890Smrg		;;
109103ea5dc6Smrg	ppc64-*)
109203ea5dc6Smrg		cpu=powerpc64
109388de56ccSmrg		;;
109403ea5dc6Smrg	ppc64le-* | powerpc64little-*)
109503ea5dc6Smrg		cpu=powerpc64le
10961ab64890Smrg		;;
109703ea5dc6Smrg	sb1-*)
109803ea5dc6Smrg		cpu=mipsisa64sb1
10991ab64890Smrg		;;
110003ea5dc6Smrg	sb1el-*)
110103ea5dc6Smrg		cpu=mipsisa64sb1el
11029c019ec5Smaya		;;
110303ea5dc6Smrg	sh5e[lb]-*)
1104e9628295Smrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
11051ab64890Smrg		;;
110603ea5dc6Smrg	spur-*)
110703ea5dc6Smrg		cpu=spur
11081ab64890Smrg		;;
110903ea5dc6Smrg	strongarm-* | thumb-*)
111003ea5dc6Smrg		cpu=arm
11111ab64890Smrg		;;
111203ea5dc6Smrg	tx39-*)
111303ea5dc6Smrg		cpu=mipstx39
11149c019ec5Smaya		;;
111503ea5dc6Smrg	tx39el-*)
111603ea5dc6Smrg		cpu=mipstx39el
11179c019ec5Smaya		;;
111803ea5dc6Smrg	x64-*)
111903ea5dc6Smrg		cpu=x86_64
11201ab64890Smrg		;;
11215afda2e6Smrg	xscale-* | xscalee[bl]-*)
1122e9628295Smrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
11239c019ec5Smaya		;;
112403ea5dc6Smrg	arm64-*)
112503ea5dc6Smrg		cpu=aarch64
11261ab64890Smrg		;;
11275afda2e6Smrg
112803ea5dc6Smrg	# Recognize the canonical CPU Types that limit and/or modify the
112903ea5dc6Smrg	# company names they are paired with.
113003ea5dc6Smrg	cr16-*)
113103ea5dc6Smrg		basic_os=${basic_os:-elf}
11321ab64890Smrg		;;
113303ea5dc6Smrg	crisv32-* | etraxfs*-*)
113403ea5dc6Smrg		cpu=crisv32
113503ea5dc6Smrg		vendor=axis
11361ab64890Smrg		;;
113703ea5dc6Smrg	cris-* | etrax*-*)
113803ea5dc6Smrg		cpu=cris
113903ea5dc6Smrg		vendor=axis
11401ab64890Smrg		;;
114103ea5dc6Smrg	crx-*)
114203ea5dc6Smrg		basic_os=${basic_os:-elf}
11431ab64890Smrg		;;
114403ea5dc6Smrg	neo-tandem)
114503ea5dc6Smrg		cpu=neo
114603ea5dc6Smrg		vendor=tandem
11471ab64890Smrg		;;
114803ea5dc6Smrg	nse-tandem)
114903ea5dc6Smrg		cpu=nse
115003ea5dc6Smrg		vendor=tandem
11511ab64890Smrg		;;
115203ea5dc6Smrg	nsr-tandem)
115303ea5dc6Smrg		cpu=nsr
115403ea5dc6Smrg		vendor=tandem
11559c019ec5Smaya		;;
115603ea5dc6Smrg	nsv-tandem)
115703ea5dc6Smrg		cpu=nsv
115803ea5dc6Smrg		vendor=tandem
11599c019ec5Smaya		;;
116003ea5dc6Smrg	nsx-tandem)
116103ea5dc6Smrg		cpu=nsx
116203ea5dc6Smrg		vendor=tandem
11639c019ec5Smaya		;;
116403ea5dc6Smrg	mipsallegrexel-sony)
116503ea5dc6Smrg		cpu=mipsallegrexel
116603ea5dc6Smrg		vendor=sony
11679c019ec5Smaya		;;
116803ea5dc6Smrg	tile*-*)
116903ea5dc6Smrg		basic_os=${basic_os:-linux-gnu}
11701ab64890Smrg		;;
117103ea5dc6Smrg
11721ab64890Smrg	*)
117303ea5dc6Smrg		# Recognize the canonical CPU types that are allowed with any
117403ea5dc6Smrg		# company name.
117503ea5dc6Smrg		case $cpu in
117603ea5dc6Smrg			1750a | 580 \
117703ea5dc6Smrg			| a29k \
117803ea5dc6Smrg			| aarch64 | aarch64_be \
117903ea5dc6Smrg			| abacus \
118003ea5dc6Smrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
118103ea5dc6Smrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
118203ea5dc6Smrg			| alphapca5[67] | alpha64pca5[67] \
118303ea5dc6Smrg			| am33_2.0 \
118403ea5dc6Smrg			| amdgcn \
1185e9628295Smrg			| arc | arceb | arc32 | arc64 \
118603ea5dc6Smrg			| arm | arm[lb]e | arme[lb] | armv* \
118703ea5dc6Smrg			| avr | avr32 \
118803ea5dc6Smrg			| asmjs \
118903ea5dc6Smrg			| ba \
119003ea5dc6Smrg			| be32 | be64 \
119103ea5dc6Smrg			| bfin | bpf | bs2000 \
119203ea5dc6Smrg			| c[123]* | c30 | [cjt]90 | c4x \
119303ea5dc6Smrg			| c8051 | clipper | craynv | csky | cydra \
119403ea5dc6Smrg			| d10v | d30v | dlx | dsp16xx \
119503ea5dc6Smrg			| e2k | elxsi | epiphany \
119603ea5dc6Smrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
119703ea5dc6Smrg			| h8300 | h8500 \
119803ea5dc6Smrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
119903ea5dc6Smrg			| hexagon \
120003ea5dc6Smrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
120103ea5dc6Smrg			| ip2k | iq2000 \
120203ea5dc6Smrg			| k1om \
120303ea5dc6Smrg			| le32 | le64 \
120403ea5dc6Smrg			| lm32 \
1205e9628295Smrg			| loongarch32 | loongarch64 | loongarchx32 \
120603ea5dc6Smrg			| m32c | m32r | m32rle \
120703ea5dc6Smrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
120803ea5dc6Smrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
120903ea5dc6Smrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
121003ea5dc6Smrg			| microblaze | microblazeel \
121103ea5dc6Smrg			| mips | mipsbe | mipseb | mipsel | mipsle \
121203ea5dc6Smrg			| mips16 \
121303ea5dc6Smrg			| mips64 | mips64eb | mips64el \
121403ea5dc6Smrg			| mips64octeon | mips64octeonel \
121503ea5dc6Smrg			| mips64orion | mips64orionel \
121603ea5dc6Smrg			| mips64r5900 | mips64r5900el \
121703ea5dc6Smrg			| mips64vr | mips64vrel \
121803ea5dc6Smrg			| mips64vr4100 | mips64vr4100el \
121903ea5dc6Smrg			| mips64vr4300 | mips64vr4300el \
122003ea5dc6Smrg			| mips64vr5000 | mips64vr5000el \
122103ea5dc6Smrg			| mips64vr5900 | mips64vr5900el \
122203ea5dc6Smrg			| mipsisa32 | mipsisa32el \
122303ea5dc6Smrg			| mipsisa32r2 | mipsisa32r2el \
1224e9628295Smrg			| mipsisa32r3 | mipsisa32r3el \
1225e9628295Smrg			| mipsisa32r5 | mipsisa32r5el \
122603ea5dc6Smrg			| mipsisa32r6 | mipsisa32r6el \
122703ea5dc6Smrg			| mipsisa64 | mipsisa64el \
122803ea5dc6Smrg			| mipsisa64r2 | mipsisa64r2el \
1229e9628295Smrg			| mipsisa64r3 | mipsisa64r3el \
1230e9628295Smrg			| mipsisa64r5 | mipsisa64r5el \
123103ea5dc6Smrg			| mipsisa64r6 | mipsisa64r6el \
123203ea5dc6Smrg			| mipsisa64sb1 | mipsisa64sb1el \
123303ea5dc6Smrg			| mipsisa64sr71k | mipsisa64sr71kel \
123403ea5dc6Smrg			| mipsr5900 | mipsr5900el \
123503ea5dc6Smrg			| mipstx39 | mipstx39el \
123603ea5dc6Smrg			| mmix \
123703ea5dc6Smrg			| mn10200 | mn10300 \
123803ea5dc6Smrg			| moxie \
123903ea5dc6Smrg			| mt \
124003ea5dc6Smrg			| msp430 \
124103ea5dc6Smrg			| nds32 | nds32le | nds32be \
124203ea5dc6Smrg			| nfp \
124303ea5dc6Smrg			| nios | nios2 | nios2eb | nios2el \
124403ea5dc6Smrg			| none | np1 | ns16k | ns32k | nvptx \
124503ea5dc6Smrg			| open8 \
124603ea5dc6Smrg			| or1k* \
124703ea5dc6Smrg			| or32 \
124803ea5dc6Smrg			| orion \
124903ea5dc6Smrg			| picochip \
125003ea5dc6Smrg			| pdp10 | pdp11 | pj | pjl | pn | power \
125103ea5dc6Smrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
125203ea5dc6Smrg			| pru \
125303ea5dc6Smrg			| pyramid \
1254e9628295Smrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
125503ea5dc6Smrg			| rl78 | romp | rs6000 | rx \
125603ea5dc6Smrg			| s390 | s390x \
125703ea5dc6Smrg			| score \
125803ea5dc6Smrg			| sh | shl \
125903ea5dc6Smrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
126003ea5dc6Smrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
126103ea5dc6Smrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
126203ea5dc6Smrg			| sparclite \
126303ea5dc6Smrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
126403ea5dc6Smrg			| spu \
126503ea5dc6Smrg			| tahoe \
1266e9628295Smrg			| thumbv7* \
126703ea5dc6Smrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
126803ea5dc6Smrg			| tron \
126903ea5dc6Smrg			| ubicom32 \
127003ea5dc6Smrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
127103ea5dc6Smrg			| vax \
127203ea5dc6Smrg			| visium \
127303ea5dc6Smrg			| w65 \
127403ea5dc6Smrg			| wasm32 | wasm64 \
127503ea5dc6Smrg			| we32k \
127603ea5dc6Smrg			| x86 | x86_64 | xc16x | xgate | xps100 \
127703ea5dc6Smrg			| xstormy16 | xtensa* \
127803ea5dc6Smrg			| ymp \
127903ea5dc6Smrg			| z8k | z80)
128003ea5dc6Smrg				;;
128103ea5dc6Smrg
128203ea5dc6Smrg			*)
128303ea5dc6Smrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
128403ea5dc6Smrg				exit 1
128503ea5dc6Smrg				;;
128603ea5dc6Smrg		esac
12871ab64890Smrg		;;
12881ab64890Smrgesac
12891ab64890Smrg
12901ab64890Smrg# Here we canonicalize certain aliases for manufacturers.
129103ea5dc6Smrgcase $vendor in
129203ea5dc6Smrg	digital*)
129303ea5dc6Smrg		vendor=dec
12941ab64890Smrg		;;
129503ea5dc6Smrg	commodore*)
129603ea5dc6Smrg		vendor=cbm
12971ab64890Smrg		;;
12981ab64890Smrg	*)
12991ab64890Smrg		;;
13001ab64890Smrgesac
13011ab64890Smrg
13021ab64890Smrg# Decode manufacturer-specific aliases for certain operating systems.
13031ab64890Smrg
130403ea5dc6Smrgif test x$basic_os != x
13051ab64890Smrgthen
130603ea5dc6Smrg
130703ea5dc6Smrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
130803ea5dc6Smrg# set os.
130903ea5dc6Smrgcase $basic_os in
131003ea5dc6Smrg	gnu/linux*)
131103ea5dc6Smrg		kernel=linux
1312e9628295Smrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
131303ea5dc6Smrg		;;
131403ea5dc6Smrg	os2-emx)
131503ea5dc6Smrg		kernel=os2
1316e9628295Smrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
131703ea5dc6Smrg		;;
131803ea5dc6Smrg	nto-qnx*)
131903ea5dc6Smrg		kernel=nto
1320e9628295Smrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
132103ea5dc6Smrg		;;
132203ea5dc6Smrg	*-*)
132303ea5dc6Smrg		# shellcheck disable=SC2162
1324e9628295Smrg		saved_IFS=$IFS
132503ea5dc6Smrg		IFS="-" read kernel os <<EOF
132603ea5dc6Smrg$basic_os
132703ea5dc6SmrgEOF
1328e9628295Smrg		IFS=$saved_IFS
132903ea5dc6Smrg		;;
133003ea5dc6Smrg	# Default OS when just kernel was specified
133103ea5dc6Smrg	nto*)
133203ea5dc6Smrg		kernel=nto
1333e9628295Smrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
133403ea5dc6Smrg		;;
133503ea5dc6Smrg	linux*)
133603ea5dc6Smrg		kernel=linux
1337e9628295Smrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
133803ea5dc6Smrg		;;
133903ea5dc6Smrg	*)
134003ea5dc6Smrg		kernel=
134103ea5dc6Smrg		os=$basic_os
134203ea5dc6Smrg		;;
134303ea5dc6Smrgesac
134403ea5dc6Smrg
134503ea5dc6Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
134603ea5dc6Smrg# etc.)
13471ab64890Smrgcase $os in
13485afda2e6Smrg	# First match some system type aliases that might get confused
13495afda2e6Smrg	# with valid system types.
135003ea5dc6Smrg	# solaris* is a basic system type, with this one exception.
135103ea5dc6Smrg	auroraux)
135203ea5dc6Smrg		os=auroraux
135388de56ccSmrg		;;
135403ea5dc6Smrg	bluegene*)
135503ea5dc6Smrg		os=cnk
13561ab64890Smrg		;;
135703ea5dc6Smrg	solaris1 | solaris1.*)
1358e9628295Smrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
13591ab64890Smrg		;;
136003ea5dc6Smrg	solaris)
136103ea5dc6Smrg		os=solaris2
13621ab64890Smrg		;;
136303ea5dc6Smrg	unixware*)
136403ea5dc6Smrg		os=sysv4.2uw
13651ab64890Smrg		;;
13665afda2e6Smrg	# es1800 is here to avoid being matched by es* (a different OS)
136703ea5dc6Smrg	es1800*)
136803ea5dc6Smrg		os=ose
13695afda2e6Smrg		;;
137003ea5dc6Smrg	# Some version numbers need modification
137103ea5dc6Smrg	chorusos*)
137203ea5dc6Smrg		os=chorusos
13731ab64890Smrg		;;
137403ea5dc6Smrg	isc)
137503ea5dc6Smrg		os=isc2.2
13761ab64890Smrg		;;
137703ea5dc6Smrg	sco6)
137803ea5dc6Smrg		os=sco5v6
13791ab64890Smrg		;;
138003ea5dc6Smrg	sco5)
138103ea5dc6Smrg		os=sco3.2v5
13821ab64890Smrg		;;
138303ea5dc6Smrg	sco4)
138403ea5dc6Smrg		os=sco3.2v4
13851ab64890Smrg		;;
138603ea5dc6Smrg	sco3.2.[4-9]*)
1387e9628295Smrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
13881ab64890Smrg		;;
138903ea5dc6Smrg	sco*v* | scout)
139003ea5dc6Smrg		# Don't match below
13911ab64890Smrg		;;
139203ea5dc6Smrg	sco*)
139303ea5dc6Smrg		os=sco3.2v2
13941ab64890Smrg		;;
139503ea5dc6Smrg	psos*)
139603ea5dc6Smrg		os=psos
13971ab64890Smrg		;;
139803ea5dc6Smrg	qnx*)
139903ea5dc6Smrg		os=qnx
14001ab64890Smrg		;;
140103ea5dc6Smrg	hiux*)
140203ea5dc6Smrg		os=hiuxwe2
14031ab64890Smrg		;;
140403ea5dc6Smrg	lynx*178)
140503ea5dc6Smrg		os=lynxos178
14061ab64890Smrg		;;
140703ea5dc6Smrg	lynx*5)
140803ea5dc6Smrg		os=lynxos5
14091ab64890Smrg		;;
141003ea5dc6Smrg	lynxos*)
141103ea5dc6Smrg		# don't get caught up in next wildcard
14121ab64890Smrg		;;
141303ea5dc6Smrg	lynx*)
141403ea5dc6Smrg		os=lynxos
14155afda2e6Smrg		;;
141603ea5dc6Smrg	mac[0-9]*)
1417e9628295Smrg		os=`echo "$os" | sed -e 's|mac|macos|'`
14181ab64890Smrg		;;
141903ea5dc6Smrg	opened*)
142003ea5dc6Smrg		os=openedition
14211ab64890Smrg		;;
142203ea5dc6Smrg	os400*)
142303ea5dc6Smrg		os=os400
14241ab64890Smrg		;;
142503ea5dc6Smrg	sunos5*)
1426e9628295Smrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
14275afda2e6Smrg		;;
142803ea5dc6Smrg	sunos6*)
1429e9628295Smrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
14309c019ec5Smaya		;;
143103ea5dc6Smrg	wince*)
143203ea5dc6Smrg		os=wince
14339c019ec5Smaya		;;
143403ea5dc6Smrg	utek*)
143503ea5dc6Smrg		os=bsd
14361ab64890Smrg		;;
143703ea5dc6Smrg	dynix*)
143803ea5dc6Smrg		os=bsd
143903ea5dc6Smrg		;;
144003ea5dc6Smrg	acis*)
144103ea5dc6Smrg		os=aos
144203ea5dc6Smrg		;;
144303ea5dc6Smrg	atheos*)
144403ea5dc6Smrg		os=atheos
144503ea5dc6Smrg		;;
144603ea5dc6Smrg	syllable*)
144703ea5dc6Smrg		os=syllable
144803ea5dc6Smrg		;;
144903ea5dc6Smrg	386bsd)
145003ea5dc6Smrg		os=bsd
145103ea5dc6Smrg		;;
145203ea5dc6Smrg	ctix* | uts*)
145303ea5dc6Smrg		os=sysv
145403ea5dc6Smrg		;;
145503ea5dc6Smrg	nova*)
145603ea5dc6Smrg		os=rtmk-nova
14571ab64890Smrg		;;
145803ea5dc6Smrg	ns2)
145903ea5dc6Smrg		os=nextstep2
14601ab64890Smrg		;;
146103ea5dc6Smrg	# Preserve the version number of sinix5.
146203ea5dc6Smrg	sinix5.*)
1463e9628295Smrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
14641ab64890Smrg		;;
146503ea5dc6Smrg	sinix*)
146603ea5dc6Smrg		os=sysv4
14671ab64890Smrg		;;
146803ea5dc6Smrg	tpf*)
146903ea5dc6Smrg		os=tpf
14701ab64890Smrg		;;
147103ea5dc6Smrg	triton*)
147203ea5dc6Smrg		os=sysv3
14731ab64890Smrg		;;
147403ea5dc6Smrg	oss*)
147503ea5dc6Smrg		os=sysv3
14761ab64890Smrg		;;
147703ea5dc6Smrg	svr4*)
147803ea5dc6Smrg		os=sysv4
14791ab64890Smrg		;;
148003ea5dc6Smrg	svr3)
148103ea5dc6Smrg		os=sysv3
14821ab64890Smrg		;;
148303ea5dc6Smrg	sysvr4)
148403ea5dc6Smrg		os=sysv4
14851ab64890Smrg		;;
148603ea5dc6Smrg	ose*)
148703ea5dc6Smrg		os=ose
14881ab64890Smrg		;;
148903ea5dc6Smrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
149003ea5dc6Smrg		os=mint
14911ab64890Smrg		;;
149203ea5dc6Smrg	dicos*)
149303ea5dc6Smrg		os=dicos
14941ab64890Smrg		;;
149503ea5dc6Smrg	pikeos*)
14965afda2e6Smrg		# Until real need of OS specific support for
14975afda2e6Smrg		# particular features comes up, bare metal
14985afda2e6Smrg		# configurations are quite functional.
149903ea5dc6Smrg		case $cpu in
15005afda2e6Smrg		    arm*)
150103ea5dc6Smrg			os=eabi
15025afda2e6Smrg			;;
15035afda2e6Smrg		    *)
150403ea5dc6Smrg			os=elf
15055afda2e6Smrg			;;
15065afda2e6Smrg		esac
15071ab64890Smrg		;;
15081ab64890Smrg	*)
150903ea5dc6Smrg		# No normalization, but not necessarily accepted, that comes below.
15101ab64890Smrg		;;
15111ab64890Smrgesac
151203ea5dc6Smrg
15131ab64890Smrgelse
15141ab64890Smrg
15151ab64890Smrg# Here we handle the default operating systems that come with various machines.
15161ab64890Smrg# The value should be what the vendor currently ships out the door with their
15171ab64890Smrg# machine or put another way, the most popular os provided with the machine.
15181ab64890Smrg
15191ab64890Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
15201ab64890Smrg# "-sun"), then you have to tell the case statement up towards the top
15211ab64890Smrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
15221ab64890Smrg# will signal an error saying that MANUFACTURER isn't an operating
15231ab64890Smrg# system, and we'll never get to this point.
15241ab64890Smrg
152503ea5dc6Smrgkernel=
152603ea5dc6Smrgcase $cpu-$vendor in
1527eb411b4bSmrg	score-*)
152803ea5dc6Smrg		os=elf
15291ab64890Smrg		;;
1530eb411b4bSmrg	spu-*)
153103ea5dc6Smrg		os=elf
15321ab64890Smrg		;;
15331ab64890Smrg	*-acorn)
153403ea5dc6Smrg		os=riscix1.2
15351ab64890Smrg		;;
15361ab64890Smrg	arm*-rebel)
153703ea5dc6Smrg		kernel=linux
153803ea5dc6Smrg		os=gnu
15391ab64890Smrg		;;
15401ab64890Smrg	arm*-semi)
154103ea5dc6Smrg		os=aout
15421ab64890Smrg		;;
1543eb411b4bSmrg	c4x-* | tic4x-*)
154403ea5dc6Smrg		os=coff
1545eb411b4bSmrg		;;
15460f8248bfSmrg	c8051-*)
154703ea5dc6Smrg		os=elf
154803ea5dc6Smrg		;;
154903ea5dc6Smrg	clipper-intergraph)
155003ea5dc6Smrg		os=clix
15510f8248bfSmrg		;;
1552eb411b4bSmrg	hexagon-*)
155303ea5dc6Smrg		os=elf
15541ab64890Smrg		;;
1555e9fcaa8aSmrg	tic54x-*)
155603ea5dc6Smrg		os=coff
1557e9fcaa8aSmrg		;;
1558e9fcaa8aSmrg	tic55x-*)
155903ea5dc6Smrg		os=coff
1560e9fcaa8aSmrg		;;
1561e9fcaa8aSmrg	tic6x-*)
156203ea5dc6Smrg		os=coff
1563e9fcaa8aSmrg		;;
15641ab64890Smrg	# This must come before the *-dec entry.
15651ab64890Smrg	pdp10-*)
156603ea5dc6Smrg		os=tops20
15671ab64890Smrg		;;
15681ab64890Smrg	pdp11-*)
156903ea5dc6Smrg		os=none
15701ab64890Smrg		;;
15711ab64890Smrg	*-dec | vax-*)
157203ea5dc6Smrg		os=ultrix4.2
15731ab64890Smrg		;;
15741ab64890Smrg	m68*-apollo)
157503ea5dc6Smrg		os=domain
15761ab64890Smrg		;;
15771ab64890Smrg	i386-sun)
157803ea5dc6Smrg		os=sunos4.0.2
15791ab64890Smrg		;;
15801ab64890Smrg	m68000-sun)
158103ea5dc6Smrg		os=sunos3
15821ab64890Smrg		;;
15831ab64890Smrg	m68*-cisco)
158403ea5dc6Smrg		os=aout
15851ab64890Smrg		;;
1586eb411b4bSmrg	mep-*)
158703ea5dc6Smrg		os=elf
15881ab64890Smrg		;;
15891ab64890Smrg	mips*-cisco)
159003ea5dc6Smrg		os=elf
15911ab64890Smrg		;;
15921ab64890Smrg	mips*-*)
159303ea5dc6Smrg		os=elf
15941ab64890Smrg		;;
15951ab64890Smrg	or32-*)
159603ea5dc6Smrg		os=coff
15971ab64890Smrg		;;
15981ab64890Smrg	*-tti)	# must be before sparc entry or we get the wrong os.
159903ea5dc6Smrg		os=sysv3
16001ab64890Smrg		;;
16011ab64890Smrg	sparc-* | *-sun)
160203ea5dc6Smrg		os=sunos4.1.1
16031ab64890Smrg		;;
160438ae11fcSmrg	pru-*)
160503ea5dc6Smrg		os=elf
160638ae11fcSmrg		;;
16071ab64890Smrg	*-be)
160803ea5dc6Smrg		os=beos
16091ab64890Smrg		;;
16101ab64890Smrg	*-ibm)
161103ea5dc6Smrg		os=aix
16121ab64890Smrg		;;
1613eb411b4bSmrg	*-knuth)
161403ea5dc6Smrg		os=mmixware
16151ab64890Smrg		;;
16161ab64890Smrg	*-wec)
161703ea5dc6Smrg		os=proelf
16181ab64890Smrg		;;
16191ab64890Smrg	*-winbond)
162003ea5dc6Smrg		os=proelf
16211ab64890Smrg		;;
16221ab64890Smrg	*-oki)
162303ea5dc6Smrg		os=proelf
16241ab64890Smrg		;;
16251ab64890Smrg	*-hp)
162603ea5dc6Smrg		os=hpux
16271ab64890Smrg		;;
16281ab64890Smrg	*-hitachi)
162903ea5dc6Smrg		os=hiux
16301ab64890Smrg		;;
16311ab64890Smrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
163203ea5dc6Smrg		os=sysv
16331ab64890Smrg		;;
16341ab64890Smrg	*-cbm)
163503ea5dc6Smrg		os=amigaos
16361ab64890Smrg		;;
16371ab64890Smrg	*-dg)
163803ea5dc6Smrg		os=dgux
16391ab64890Smrg		;;
16401ab64890Smrg	*-dolphin)
164103ea5dc6Smrg		os=sysv3
16421ab64890Smrg		;;
16431ab64890Smrg	m68k-ccur)
164403ea5dc6Smrg		os=rtu
16451ab64890Smrg		;;
16461ab64890Smrg	m88k-omron*)
164703ea5dc6Smrg		os=luna
16481ab64890Smrg		;;
16495afda2e6Smrg	*-next)
165003ea5dc6Smrg		os=nextstep
16511ab64890Smrg		;;
16521ab64890Smrg	*-sequent)
165303ea5dc6Smrg		os=ptx
16541ab64890Smrg		;;
16551ab64890Smrg	*-crds)
165603ea5dc6Smrg		os=unos
16571ab64890Smrg		;;
16581ab64890Smrg	*-ns)
165903ea5dc6Smrg		os=genix
16601ab64890Smrg		;;
16611ab64890Smrg	i370-*)
166203ea5dc6Smrg		os=mvs
16631ab64890Smrg		;;
16641ab64890Smrg	*-gould)
166503ea5dc6Smrg		os=sysv
16661ab64890Smrg		;;
16671ab64890Smrg	*-highlevel)
166803ea5dc6Smrg		os=bsd
16691ab64890Smrg		;;
16701ab64890Smrg	*-encore)
167103ea5dc6Smrg		os=bsd
16721ab64890Smrg		;;
16731ab64890Smrg	*-sgi)
167403ea5dc6Smrg		os=irix
16751ab64890Smrg		;;
16761ab64890Smrg	*-siemens)
167703ea5dc6Smrg		os=sysv4
16781ab64890Smrg		;;
16791ab64890Smrg	*-masscomp)
168003ea5dc6Smrg		os=rtu
16811ab64890Smrg		;;
16821ab64890Smrg	f30[01]-fujitsu | f700-fujitsu)
168303ea5dc6Smrg		os=uxpv
16841ab64890Smrg		;;
16851ab64890Smrg	*-rom68k)
168603ea5dc6Smrg		os=coff
16871ab64890Smrg		;;
16881ab64890Smrg	*-*bug)
168903ea5dc6Smrg		os=coff
16901ab64890Smrg		;;
16911ab64890Smrg	*-apple)
169203ea5dc6Smrg		os=macos
16931ab64890Smrg		;;
16941ab64890Smrg	*-atari*)
169503ea5dc6Smrg		os=mint
169603ea5dc6Smrg		;;
169703ea5dc6Smrg	*-wrs)
169803ea5dc6Smrg		os=vxworks
16991ab64890Smrg		;;
17001ab64890Smrg	*)
170103ea5dc6Smrg		os=none
17021ab64890Smrg		;;
17031ab64890Smrgesac
170403ea5dc6Smrg
17051ab64890Smrgfi
17061ab64890Smrg
170703ea5dc6Smrg# Now, validate our (potentially fixed-up) OS.
170803ea5dc6Smrgcase $os in
1709e9628295Smrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
1710e9628295Smrg	musl* | newlib* | relibc* | uclibc*)
1711e9628295Smrg		;;
1712e9628295Smrg	# Likewise for "kernel-abi"
1713e9628295Smrg	eabi* | gnueabi*)
171403ea5dc6Smrg		;;
1715e9628295Smrg	# VxWorks passes extra cpu info in the 4th filed.
1716e9628295Smrg	simlinux | simwindows | spe)
171703ea5dc6Smrg		;;
171803ea5dc6Smrg	# Now accept the basic system types.
171903ea5dc6Smrg	# The portable systems comes first.
172003ea5dc6Smrg	# Each alternative MUST end in a * to match a version number.
172103ea5dc6Smrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
172203ea5dc6Smrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
172303ea5dc6Smrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
172403ea5dc6Smrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
172503ea5dc6Smrg	     | hiux* | abug | nacl* | netware* | windows* \
172603ea5dc6Smrg	     | os9* | macos* | osx* | ios* \
172703ea5dc6Smrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
172803ea5dc6Smrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
172903ea5dc6Smrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
173003ea5dc6Smrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
173103ea5dc6Smrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
173203ea5dc6Smrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
1733e9628295Smrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
173403ea5dc6Smrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
173503ea5dc6Smrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
173603ea5dc6Smrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
173703ea5dc6Smrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
1738e9628295Smrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
173903ea5dc6Smrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
174003ea5dc6Smrg	     | midipix* | mingw32* | mingw64* | mint* \
174103ea5dc6Smrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
174203ea5dc6Smrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
174303ea5dc6Smrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
174403ea5dc6Smrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
174503ea5dc6Smrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
174603ea5dc6Smrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
174703ea5dc6Smrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
174803ea5dc6Smrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
174903ea5dc6Smrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
175003ea5dc6Smrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
1751e9628295Smrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*)
175203ea5dc6Smrg		;;
175303ea5dc6Smrg	# This one is extra strict with allowed versions
175403ea5dc6Smrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
175503ea5dc6Smrg		# Don't forget version if it is 3.2v4 or newer.
175603ea5dc6Smrg		;;
175703ea5dc6Smrg	none)
175803ea5dc6Smrg		;;
175903ea5dc6Smrg	*)
176003ea5dc6Smrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
176103ea5dc6Smrg		exit 1
176203ea5dc6Smrg		;;
176303ea5dc6Smrgesac
176403ea5dc6Smrg
176503ea5dc6Smrg# As a final step for OS-related things, validate the OS-kernel combination
176603ea5dc6Smrg# (given a valid OS), if there is a kernel.
176703ea5dc6Smrgcase $kernel-$os in
1768e9628295Smrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
1769e9628295Smrg		   | linux-musl* | linux-relibc* | linux-uclibc* )
177003ea5dc6Smrg		;;
177103ea5dc6Smrg	uclinux-uclibc* )
177203ea5dc6Smrg		;;
1773e9628295Smrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
177403ea5dc6Smrg		# These are just libc implementations, not actual OSes, and thus
177503ea5dc6Smrg		# require a kernel.
177603ea5dc6Smrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
177703ea5dc6Smrg		exit 1
177803ea5dc6Smrg		;;
177903ea5dc6Smrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
178003ea5dc6Smrg		;;
1781e9628295Smrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
1782e9628295Smrg		;;
178303ea5dc6Smrg	nto-qnx*)
178403ea5dc6Smrg		;;
178503ea5dc6Smrg	os2-emx)
178603ea5dc6Smrg		;;
178703ea5dc6Smrg	*-eabi* | *-gnueabi*)
178803ea5dc6Smrg		;;
178903ea5dc6Smrg	-*)
179003ea5dc6Smrg		# Blank kernel with real OS is always fine.
179103ea5dc6Smrg		;;
179203ea5dc6Smrg	*-*)
179303ea5dc6Smrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
179403ea5dc6Smrg		exit 1
179503ea5dc6Smrg		;;
179603ea5dc6Smrgesac
179703ea5dc6Smrg
17981ab64890Smrg# Here we handle the case where we know the os, and the CPU type, but not the
17991ab64890Smrg# manufacturer.  We pick the logical manufacturer.
180003ea5dc6Smrgcase $vendor in
180103ea5dc6Smrg	unknown)
180203ea5dc6Smrg		case $cpu-$os in
180303ea5dc6Smrg			*-riscix*)
18041ab64890Smrg				vendor=acorn
18051ab64890Smrg				;;
180603ea5dc6Smrg			*-sunos*)
18071ab64890Smrg				vendor=sun
18081ab64890Smrg				;;
180903ea5dc6Smrg			*-cnk* | *-aix*)
18101ab64890Smrg				vendor=ibm
18111ab64890Smrg				;;
181203ea5dc6Smrg			*-beos*)
18131ab64890Smrg				vendor=be
18141ab64890Smrg				;;
181503ea5dc6Smrg			*-hpux*)
18161ab64890Smrg				vendor=hp
18171ab64890Smrg				;;
181803ea5dc6Smrg			*-mpeix*)
18191ab64890Smrg				vendor=hp
18201ab64890Smrg				;;
182103ea5dc6Smrg			*-hiux*)
18221ab64890Smrg				vendor=hitachi
18231ab64890Smrg				;;
182403ea5dc6Smrg			*-unos*)
18251ab64890Smrg				vendor=crds
18261ab64890Smrg				;;
182703ea5dc6Smrg			*-dgux*)
18281ab64890Smrg				vendor=dg
18291ab64890Smrg				;;
183003ea5dc6Smrg			*-luna*)
18311ab64890Smrg				vendor=omron
18321ab64890Smrg				;;
183303ea5dc6Smrg			*-genix*)
18341ab64890Smrg				vendor=ns
18351ab64890Smrg				;;
183603ea5dc6Smrg			*-clix*)
183703ea5dc6Smrg				vendor=intergraph
183803ea5dc6Smrg				;;
183903ea5dc6Smrg			*-mvs* | *-opened*)
184003ea5dc6Smrg				vendor=ibm
184103ea5dc6Smrg				;;
184203ea5dc6Smrg			*-os400*)
18431ab64890Smrg				vendor=ibm
18441ab64890Smrg				;;
184503ea5dc6Smrg			s390-* | s390x-*)
18461ab64890Smrg				vendor=ibm
18471ab64890Smrg				;;
184803ea5dc6Smrg			*-ptx*)
18491ab64890Smrg				vendor=sequent
18501ab64890Smrg				;;
185103ea5dc6Smrg			*-tpf*)
18521ab64890Smrg				vendor=ibm
18531ab64890Smrg				;;
185403ea5dc6Smrg			*-vxsim* | *-vxworks* | *-windiss*)
18551ab64890Smrg				vendor=wrs
18561ab64890Smrg				;;
185703ea5dc6Smrg			*-aux*)
18581ab64890Smrg				vendor=apple
18591ab64890Smrg				;;
186003ea5dc6Smrg			*-hms*)
18611ab64890Smrg				vendor=hitachi
18621ab64890Smrg				;;
186303ea5dc6Smrg			*-mpw* | *-macos*)
18641ab64890Smrg				vendor=apple
18651ab64890Smrg				;;
186603ea5dc6Smrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
18671ab64890Smrg				vendor=atari
18681ab64890Smrg				;;
186903ea5dc6Smrg			*-vos*)
18701ab64890Smrg				vendor=stratus
18711ab64890Smrg				;;
18721ab64890Smrg		esac
18731ab64890Smrg		;;
18741ab64890Smrgesac
18751ab64890Smrg
187603ea5dc6Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
18771ab64890Smrgexit
18781ab64890Smrg
18791ab64890Smrg# Local variables:
188003ea5dc6Smrg# eval: (add-hook 'before-save-hook 'time-stamp)
18811ab64890Smrg# time-stamp-start: "timestamp='"
18821ab64890Smrg# time-stamp-format: "%:y-%02m-%02d"
18831ab64890Smrg# time-stamp-end: "'"
18841ab64890Smrg# End:
1885