config.sub revision 33adc6ac
1fda9279dSmrg#! /bin/sh
2fda9279dSmrg# Configuration validation subroutine script.
333adc6acSmrg#   Copyright 1992-2024 Free Software Foundation, Inc.
4fda9279dSmrg
533adc6acSmrg# shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale
633adc6acSmrg
733adc6acSmrgtimestamp='2024-05-27'
8fda9279dSmrg
9fda9279dSmrg# This file is free software; you can redistribute it and/or modify it
10fda9279dSmrg# under the terms of the GNU General Public License as published by
1133adc6acSmrg# the Free Software Foundation, either version 3 of the License, or
12fda9279dSmrg# (at your option) any later version.
13fda9279dSmrg#
14fda9279dSmrg# This program is distributed in the hope that it will be useful, but
15fda9279dSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of
16fda9279dSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17fda9279dSmrg# General Public License for more details.
18fda9279dSmrg#
19fda9279dSmrg# You should have received a copy of the GNU General Public License
2092405695Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
21fda9279dSmrg#
22fda9279dSmrg# As a special exception to the GNU General Public License, if you
23fda9279dSmrg# distribute this file as part of a program that contains a
24fda9279dSmrg# configuration script generated by Autoconf, you may include it under
25fda9279dSmrg# the same distribution terms that you use for the rest of that
26fda9279dSmrg# program.  This Exception is an additional permission under section 7
27fda9279dSmrg# of the GNU General Public License, version 3 ("GPLv3").
28fda9279dSmrg
29fda9279dSmrg
3016ee1e9aSmrg# Please send patches to <config-patches@gnu.org>.
31fda9279dSmrg#
32fda9279dSmrg# Configuration subroutine to validate and canonicalize a configuration type.
33fda9279dSmrg# Supply the specified configuration type as an argument.
34fda9279dSmrg# If it is invalid, we print an error message on stderr and exit with code 1.
35fda9279dSmrg# Otherwise, we print the canonical config type on stdout and succeed.
36fda9279dSmrg
37fda9279dSmrg# You can get the latest version of this script from:
3833adc6acSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
39fda9279dSmrg
40fda9279dSmrg# This file is supposed to be the same for all GNU packages
41fda9279dSmrg# and recognize all the CPU types, system types and aliases
42fda9279dSmrg# that are meaningful with *any* GNU software.
43fda9279dSmrg# Each package is responsible for reporting which valid configurations
44fda9279dSmrg# it does not support.  The user should be able to distinguish
45fda9279dSmrg# a failure to support a valid configuration from a meaningless
46fda9279dSmrg# configuration.
47fda9279dSmrg
48fda9279dSmrg# The goal of this file is to map all the various variations of a given
49fda9279dSmrg# machine specification into a single specification in the form:
50fda9279dSmrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
51fda9279dSmrg# or in some cases, the newer four-part form:
52fda9279dSmrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
53fda9279dSmrg# It is wrong to echo any other type of specification.
54fda9279dSmrg
5533adc6acSmrg# The "shellcheck disable" line above the timestamp inhibits complaints
5633adc6acSmrg# about features and limitations of the classic Bourne shell that were
5733adc6acSmrg# superseded or lifted in POSIX.  However, this script identifies a wide
5833adc6acSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
5933adc6acSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still
6033adc6acSmrg# have a pre-POSIX /bin/sh.
6133adc6acSmrg
62fda9279dSmrgme=`echo "$0" | sed -e 's,.*/,,'`
63fda9279dSmrg
64fda9279dSmrgusage="\
65dd52494dSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
66fda9279dSmrg
67fda9279dSmrgCanonicalize a configuration name.
68fda9279dSmrg
6992405695SmrgOptions:
70fda9279dSmrg  -h, --help         print this help, then exit
71fda9279dSmrg  -t, --time-stamp   print date of last modification, then exit
72fda9279dSmrg  -v, --version      print version number, then exit
73fda9279dSmrg
74fda9279dSmrgReport bugs and patches to <config-patches@gnu.org>."
75fda9279dSmrg
76fda9279dSmrgversion="\
77fda9279dSmrgGNU config.sub ($timestamp)
78fda9279dSmrg
7933adc6acSmrgCopyright 1992-2024 Free Software Foundation, Inc.
80fda9279dSmrg
81fda9279dSmrgThis is free software; see the source for copying conditions.  There is NO
82fda9279dSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
83fda9279dSmrg
84fda9279dSmrghelp="
8533adc6acSmrgTry '$me --help' for more information."
86fda9279dSmrg
87fda9279dSmrg# Parse command line
88fda9279dSmrgwhile test $# -gt 0 ; do
89fda9279dSmrg  case $1 in
90fda9279dSmrg    --time-stamp | --time* | -t )
91fda9279dSmrg       echo "$timestamp" ; exit ;;
92fda9279dSmrg    --version | -v )
93fda9279dSmrg       echo "$version" ; exit ;;
94fda9279dSmrg    --help | --h* | -h )
95fda9279dSmrg       echo "$usage"; exit ;;
96fda9279dSmrg    -- )     # Stop option processing
97fda9279dSmrg       shift; break ;;
98fda9279dSmrg    - )	# Use stdin as input.
99fda9279dSmrg       break ;;
100fda9279dSmrg    -* )
10192405695Smrg       echo "$me: invalid option $1$help" >&2
102fda9279dSmrg       exit 1 ;;
103fda9279dSmrg
104fda9279dSmrg    *local*)
105fda9279dSmrg       # First pass through any local machine types.
10692405695Smrg       echo "$1"
107fda9279dSmrg       exit ;;
108fda9279dSmrg
109fda9279dSmrg    * )
110fda9279dSmrg       break ;;
111fda9279dSmrg  esac
112fda9279dSmrgdone
113fda9279dSmrg
114fda9279dSmrgcase $# in
115fda9279dSmrg 0) echo "$me: missing argument$help" >&2
116fda9279dSmrg    exit 1;;
117fda9279dSmrg 1) ;;
118fda9279dSmrg *) echo "$me: too many arguments$help" >&2
119fda9279dSmrg    exit 1;;
120fda9279dSmrgesac
121fda9279dSmrg
12292405695Smrg# Split fields of configuration type
12333adc6acSmrgsaved_IFS=$IFS
12492405695SmrgIFS="-" read field1 field2 field3 field4 <<EOF
12592405695Smrg$1
12692405695SmrgEOF
12733adc6acSmrgIFS=$saved_IFS
128fda9279dSmrg
12992405695Smrg# Separate into logical components for further validation
13092405695Smrgcase $1 in
13192405695Smrg	*-*-*-*-*)
13233adc6acSmrg		echo "Invalid configuration '$1': more than four components" >&2
13392405695Smrg		exit 1
134fda9279dSmrg		;;
13592405695Smrg	*-*-*-*)
13692405695Smrg		basic_machine=$field1-$field2
13733adc6acSmrg		basic_os=$field3-$field4
138fda9279dSmrg		;;
13992405695Smrg	*-*-*)
14092405695Smrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
14192405695Smrg		# parts
14292405695Smrg		maybe_os=$field2-$field3
14392405695Smrg		case $maybe_os in
14433adc6acSmrg			  cloudabi*-eabi* \
14533adc6acSmrg			| kfreebsd*-gnu* \
14633adc6acSmrg			| knetbsd*-gnu* \
14733adc6acSmrg			| kopensolaris*-gnu* \
14833adc6acSmrg			| linux-* \
14933adc6acSmrg			| managarm-* \
15033adc6acSmrg			| netbsd*-eabi* \
15133adc6acSmrg			| netbsd*-gnu* \
15233adc6acSmrg			| nto-qnx* \
15333adc6acSmrg			| os2-emx* \
15433adc6acSmrg			| rtmk-nova* \
15533adc6acSmrg			| storm-chaos* \
15633adc6acSmrg			| uclinux-gnu* \
15733adc6acSmrg			| uclinux-uclibc* \
15833adc6acSmrg			| windows-* )
15992405695Smrg				basic_machine=$field1
16033adc6acSmrg				basic_os=$maybe_os
16192405695Smrg				;;
16292405695Smrg			android-linux)
16392405695Smrg				basic_machine=$field1-unknown
16433adc6acSmrg				basic_os=linux-android
16592405695Smrg				;;
16692405695Smrg			*)
16792405695Smrg				basic_machine=$field1-$field2
16833adc6acSmrg				basic_os=$field3
16992405695Smrg				;;
17092405695Smrg		esac
171fda9279dSmrg		;;
17292405695Smrg	*-*)
17392405695Smrg		case $field1-$field2 in
17433adc6acSmrg			# Shorthands that happen to contain a single dash
17533adc6acSmrg			convex-c[12] | convex-c3[248])
17633adc6acSmrg				basic_machine=$field2-convex
17733adc6acSmrg				basic_os=
17833adc6acSmrg				;;
17992405695Smrg			decstation-3100)
18092405695Smrg				basic_machine=mips-dec
18133adc6acSmrg				basic_os=
18292405695Smrg				;;
18392405695Smrg			*-*)
18492405695Smrg				# Second component is usually, but not always the OS
18592405695Smrg				case $field2 in
18633adc6acSmrg					# Do not treat sunos as a manufacturer
18792405695Smrg					sun*os*)
18892405695Smrg						basic_machine=$field1
18933adc6acSmrg						basic_os=$field2
19092405695Smrg						;;
19192405695Smrg					# Manufacturers
19233adc6acSmrg					  3100* \
19333adc6acSmrg					| 32* \
19433adc6acSmrg					| 3300* \
19533adc6acSmrg					| 3600* \
19633adc6acSmrg					| 7300* \
19733adc6acSmrg					| acorn \
19833adc6acSmrg					| altos* \
19933adc6acSmrg					| apollo \
20033adc6acSmrg					| apple \
20133adc6acSmrg					| atari \
20233adc6acSmrg					| att* \
20333adc6acSmrg					| axis \
20433adc6acSmrg					| be \
20533adc6acSmrg					| bull \
20633adc6acSmrg					| cbm \
20733adc6acSmrg					| ccur \
20833adc6acSmrg					| cisco \
20933adc6acSmrg					| commodore \
21033adc6acSmrg					| convergent* \
21133adc6acSmrg					| convex* \
21233adc6acSmrg					| cray \
21333adc6acSmrg					| crds \
21433adc6acSmrg					| dec* \
21533adc6acSmrg					| delta* \
21633adc6acSmrg					| dg \
21733adc6acSmrg					| digital \
21833adc6acSmrg					| dolphin \
21933adc6acSmrg					| encore* \
22033adc6acSmrg					| gould \
22133adc6acSmrg					| harris \
22233adc6acSmrg					| highlevel \
22333adc6acSmrg					| hitachi* \
22433adc6acSmrg					| hp \
22533adc6acSmrg					| ibm* \
22633adc6acSmrg					| intergraph \
22733adc6acSmrg					| isi* \
22833adc6acSmrg					| knuth \
22933adc6acSmrg					| masscomp \
23033adc6acSmrg					| microblaze* \
23133adc6acSmrg					| mips* \
23233adc6acSmrg					| motorola* \
23333adc6acSmrg					| ncr* \
23433adc6acSmrg					| news \
23533adc6acSmrg					| next \
23633adc6acSmrg					| ns \
23733adc6acSmrg					| oki \
23833adc6acSmrg					| omron* \
23933adc6acSmrg					| pc533* \
24033adc6acSmrg					| rebel \
24133adc6acSmrg					| rom68k \
24233adc6acSmrg					| rombug \
24333adc6acSmrg					| semi \
24433adc6acSmrg					| sequent* \
24533adc6acSmrg					| siemens \
24633adc6acSmrg					| sgi* \
24733adc6acSmrg					| siemens \
24833adc6acSmrg					| sim \
24933adc6acSmrg					| sni \
25033adc6acSmrg					| sony* \
25133adc6acSmrg					| stratus \
25233adc6acSmrg					| sun \
25333adc6acSmrg					| sun[234]* \
25433adc6acSmrg					| tektronix \
25533adc6acSmrg					| tti* \
25633adc6acSmrg					| ultra \
25733adc6acSmrg					| unicom* \
25833adc6acSmrg					| wec \
25933adc6acSmrg					| winbond \
26033adc6acSmrg					| wrs)
26192405695Smrg						basic_machine=$field1-$field2
26233adc6acSmrg						basic_os=
26333adc6acSmrg						;;
26433adc6acSmrg					zephyr*)
26533adc6acSmrg						basic_machine=$field1-unknown
26633adc6acSmrg						basic_os=$field2
26792405695Smrg						;;
26892405695Smrg					*)
26992405695Smrg						basic_machine=$field1
27033adc6acSmrg						basic_os=$field2
27192405695Smrg						;;
27292405695Smrg				esac
27392405695Smrg			;;
27492405695Smrg		esac
275fda9279dSmrg		;;
27692405695Smrg	*)
27792405695Smrg		# Convert single-component short-hands not valid as part of
27892405695Smrg		# multi-component configurations.
27992405695Smrg		case $field1 in
28092405695Smrg			386bsd)
28192405695Smrg				basic_machine=i386-pc
28233adc6acSmrg				basic_os=bsd
28392405695Smrg				;;
28492405695Smrg			a29khif)
28592405695Smrg				basic_machine=a29k-amd
28633adc6acSmrg				basic_os=udi
28792405695Smrg				;;
28892405695Smrg			adobe68k)
28992405695Smrg				basic_machine=m68010-adobe
29033adc6acSmrg				basic_os=scout
29192405695Smrg				;;
29292405695Smrg			alliant)
29392405695Smrg				basic_machine=fx80-alliant
29433adc6acSmrg				basic_os=
29592405695Smrg				;;
29692405695Smrg			altos | altos3068)
29792405695Smrg				basic_machine=m68k-altos
29833adc6acSmrg				basic_os=
29992405695Smrg				;;
30092405695Smrg			am29k)
30192405695Smrg				basic_machine=a29k-none
30233adc6acSmrg				basic_os=bsd
30392405695Smrg				;;
30492405695Smrg			amdahl)
30592405695Smrg				basic_machine=580-amdahl
30633adc6acSmrg				basic_os=sysv
30792405695Smrg				;;
30892405695Smrg			amiga)
30992405695Smrg				basic_machine=m68k-unknown
31033adc6acSmrg				basic_os=
31192405695Smrg				;;
31292405695Smrg			amigaos | amigados)
31392405695Smrg				basic_machine=m68k-unknown
31433adc6acSmrg				basic_os=amigaos
31592405695Smrg				;;
31692405695Smrg			amigaunix | amix)
31792405695Smrg				basic_machine=m68k-unknown
31833adc6acSmrg				basic_os=sysv4
31992405695Smrg				;;
32092405695Smrg			apollo68)
32192405695Smrg				basic_machine=m68k-apollo
32233adc6acSmrg				basic_os=sysv
32392405695Smrg				;;
32492405695Smrg			apollo68bsd)
32592405695Smrg				basic_machine=m68k-apollo
32633adc6acSmrg				basic_os=bsd
32792405695Smrg				;;
32892405695Smrg			aros)
32992405695Smrg				basic_machine=i386-pc
33033adc6acSmrg				basic_os=aros
33192405695Smrg				;;
33292405695Smrg			aux)
33392405695Smrg				basic_machine=m68k-apple
33433adc6acSmrg				basic_os=aux
33592405695Smrg				;;
33692405695Smrg			balance)
33792405695Smrg				basic_machine=ns32k-sequent
33833adc6acSmrg				basic_os=dynix
33992405695Smrg				;;
34092405695Smrg			blackfin)
34192405695Smrg				basic_machine=bfin-unknown
34233adc6acSmrg				basic_os=linux
34392405695Smrg				;;
34492405695Smrg			cegcc)
34592405695Smrg				basic_machine=arm-unknown
34633adc6acSmrg				basic_os=cegcc
34792405695Smrg				;;
34892405695Smrg			cray)
34992405695Smrg				basic_machine=j90-cray
35033adc6acSmrg				basic_os=unicos
35192405695Smrg				;;
35292405695Smrg			crds | unos)
35392405695Smrg				basic_machine=m68k-crds
35433adc6acSmrg				basic_os=
35592405695Smrg				;;
35692405695Smrg			da30)
35792405695Smrg				basic_machine=m68k-da30
35833adc6acSmrg				basic_os=
35992405695Smrg				;;
36092405695Smrg			decstation | pmax | pmin | dec3100 | decstatn)
36192405695Smrg				basic_machine=mips-dec
36233adc6acSmrg				basic_os=
36392405695Smrg				;;
36492405695Smrg			delta88)
36592405695Smrg				basic_machine=m88k-motorola
36633adc6acSmrg				basic_os=sysv3
36792405695Smrg				;;
36892405695Smrg			dicos)
36992405695Smrg				basic_machine=i686-pc
37033adc6acSmrg				basic_os=dicos
37192405695Smrg				;;
37292405695Smrg			djgpp)
37392405695Smrg				basic_machine=i586-pc
37433adc6acSmrg				basic_os=msdosdjgpp
37592405695Smrg				;;
37692405695Smrg			ebmon29k)
37792405695Smrg				basic_machine=a29k-amd
37833adc6acSmrg				basic_os=ebmon
37992405695Smrg				;;
38092405695Smrg			es1800 | OSE68k | ose68k | ose | OSE)
38192405695Smrg				basic_machine=m68k-ericsson
38233adc6acSmrg				basic_os=ose
38392405695Smrg				;;
38492405695Smrg			gmicro)
38592405695Smrg				basic_machine=tron-gmicro
38633adc6acSmrg				basic_os=sysv
38792405695Smrg				;;
38892405695Smrg			go32)
38992405695Smrg				basic_machine=i386-pc
39033adc6acSmrg				basic_os=go32
39192405695Smrg				;;
39292405695Smrg			h8300hms)
39392405695Smrg				basic_machine=h8300-hitachi
39433adc6acSmrg				basic_os=hms
39592405695Smrg				;;
39692405695Smrg			h8300xray)
39792405695Smrg				basic_machine=h8300-hitachi
39833adc6acSmrg				basic_os=xray
39992405695Smrg				;;
40092405695Smrg			h8500hms)
40192405695Smrg				basic_machine=h8500-hitachi
40233adc6acSmrg				basic_os=hms
40392405695Smrg				;;
40492405695Smrg			harris)
40592405695Smrg				basic_machine=m88k-harris
40633adc6acSmrg				basic_os=sysv3
40792405695Smrg				;;
40892405695Smrg			hp300 | hp300hpux)
40992405695Smrg				basic_machine=m68k-hp
41033adc6acSmrg				basic_os=hpux
41192405695Smrg				;;
41292405695Smrg			hp300bsd)
41392405695Smrg				basic_machine=m68k-hp
41433adc6acSmrg				basic_os=bsd
41592405695Smrg				;;
41692405695Smrg			hppaosf)
41792405695Smrg				basic_machine=hppa1.1-hp
41833adc6acSmrg				basic_os=osf
41992405695Smrg				;;
42092405695Smrg			hppro)
42192405695Smrg				basic_machine=hppa1.1-hp
42233adc6acSmrg				basic_os=proelf
42392405695Smrg				;;
42492405695Smrg			i386mach)
42592405695Smrg				basic_machine=i386-mach
42633adc6acSmrg				basic_os=mach
42792405695Smrg				;;
42892405695Smrg			isi68 | isi)
42992405695Smrg				basic_machine=m68k-isi
43033adc6acSmrg				basic_os=sysv
43192405695Smrg				;;
43292405695Smrg			m68knommu)
43392405695Smrg				basic_machine=m68k-unknown
43433adc6acSmrg				basic_os=linux
43592405695Smrg				;;
43692405695Smrg			magnum | m3230)
43792405695Smrg				basic_machine=mips-mips
43833adc6acSmrg				basic_os=sysv
43992405695Smrg				;;
44092405695Smrg			merlin)
44192405695Smrg				basic_machine=ns32k-utek
44233adc6acSmrg				basic_os=sysv
44392405695Smrg				;;
44492405695Smrg			mingw64)
44592405695Smrg				basic_machine=x86_64-pc
44633adc6acSmrg				basic_os=mingw64
44792405695Smrg				;;
44892405695Smrg			mingw32)
44992405695Smrg				basic_machine=i686-pc
45033adc6acSmrg				basic_os=mingw32
45192405695Smrg				;;
45292405695Smrg			mingw32ce)
45392405695Smrg				basic_machine=arm-unknown
45433adc6acSmrg				basic_os=mingw32ce
45592405695Smrg				;;
45692405695Smrg			monitor)
45792405695Smrg				basic_machine=m68k-rom68k
45833adc6acSmrg				basic_os=coff
45992405695Smrg				;;
46092405695Smrg			morphos)
46192405695Smrg				basic_machine=powerpc-unknown
46233adc6acSmrg				basic_os=morphos
46392405695Smrg				;;
46492405695Smrg			moxiebox)
46592405695Smrg				basic_machine=moxie-unknown
46633adc6acSmrg				basic_os=moxiebox
46792405695Smrg				;;
46892405695Smrg			msdos)
46992405695Smrg				basic_machine=i386-pc
47033adc6acSmrg				basic_os=msdos
47192405695Smrg				;;
47292405695Smrg			msys)
47392405695Smrg				basic_machine=i686-pc
47433adc6acSmrg				basic_os=msys
47592405695Smrg				;;
47692405695Smrg			mvs)
47792405695Smrg				basic_machine=i370-ibm
47833adc6acSmrg				basic_os=mvs
47992405695Smrg				;;
48092405695Smrg			nacl)
48192405695Smrg				basic_machine=le32-unknown
48233adc6acSmrg				basic_os=nacl
48392405695Smrg				;;
48492405695Smrg			ncr3000)
48592405695Smrg				basic_machine=i486-ncr
48633adc6acSmrg				basic_os=sysv4
48792405695Smrg				;;
48892405695Smrg			netbsd386)
48992405695Smrg				basic_machine=i386-pc
49033adc6acSmrg				basic_os=netbsd
49192405695Smrg				;;
49292405695Smrg			netwinder)
49392405695Smrg				basic_machine=armv4l-rebel
49433adc6acSmrg				basic_os=linux
49592405695Smrg				;;
49692405695Smrg			news | news700 | news800 | news900)
49792405695Smrg				basic_machine=m68k-sony
49833adc6acSmrg				basic_os=newsos
49992405695Smrg				;;
50092405695Smrg			news1000)
50192405695Smrg				basic_machine=m68030-sony
50233adc6acSmrg				basic_os=newsos
50392405695Smrg				;;
50492405695Smrg			necv70)
50592405695Smrg				basic_machine=v70-nec
50633adc6acSmrg				basic_os=sysv
50792405695Smrg				;;
50892405695Smrg			nh3000)
50992405695Smrg				basic_machine=m68k-harris
51033adc6acSmrg				basic_os=cxux
51192405695Smrg				;;
51292405695Smrg			nh[45]000)
51392405695Smrg				basic_machine=m88k-harris
51433adc6acSmrg				basic_os=cxux
51592405695Smrg				;;
51692405695Smrg			nindy960)
51792405695Smrg				basic_machine=i960-intel
51833adc6acSmrg				basic_os=nindy
51992405695Smrg				;;
52092405695Smrg			mon960)
52192405695Smrg				basic_machine=i960-intel
52233adc6acSmrg				basic_os=mon960
52392405695Smrg				;;
52492405695Smrg			nonstopux)
52592405695Smrg				basic_machine=mips-compaq
52633adc6acSmrg				basic_os=nonstopux
52792405695Smrg				;;
52892405695Smrg			os400)
52992405695Smrg				basic_machine=powerpc-ibm
53033adc6acSmrg				basic_os=os400
53192405695Smrg				;;
53292405695Smrg			OSE68000 | ose68000)
53392405695Smrg				basic_machine=m68000-ericsson
53433adc6acSmrg				basic_os=ose
53592405695Smrg				;;
53692405695Smrg			os68k)
53792405695Smrg				basic_machine=m68k-none
53833adc6acSmrg				basic_os=os68k
53992405695Smrg				;;
54092405695Smrg			paragon)
54192405695Smrg				basic_machine=i860-intel
54233adc6acSmrg				basic_os=osf
54392405695Smrg				;;
54492405695Smrg			parisc)
54592405695Smrg				basic_machine=hppa-unknown
54633adc6acSmrg				basic_os=linux
54792405695Smrg				;;
54892405695Smrg			psp)
54992405695Smrg				basic_machine=mipsallegrexel-sony
55033adc6acSmrg				basic_os=psp
55192405695Smrg				;;
55292405695Smrg			pw32)
55392405695Smrg				basic_machine=i586-unknown
55433adc6acSmrg				basic_os=pw32
55592405695Smrg				;;
55692405695Smrg			rdos | rdos64)
55792405695Smrg				basic_machine=x86_64-pc
55833adc6acSmrg				basic_os=rdos
55992405695Smrg				;;
56092405695Smrg			rdos32)
56192405695Smrg				basic_machine=i386-pc
56233adc6acSmrg				basic_os=rdos
56392405695Smrg				;;
56492405695Smrg			rom68k)
56592405695Smrg				basic_machine=m68k-rom68k
56633adc6acSmrg				basic_os=coff
56792405695Smrg				;;
56892405695Smrg			sa29200)
56992405695Smrg				basic_machine=a29k-amd
57033adc6acSmrg				basic_os=udi
57192405695Smrg				;;
57292405695Smrg			sei)
57392405695Smrg				basic_machine=mips-sei
57433adc6acSmrg				basic_os=seiux
57592405695Smrg				;;
57692405695Smrg			sequent)
57792405695Smrg				basic_machine=i386-sequent
57833adc6acSmrg				basic_os=
57992405695Smrg				;;
58092405695Smrg			sps7)
58192405695Smrg				basic_machine=m68k-bull
58233adc6acSmrg				basic_os=sysv2
58392405695Smrg				;;
58492405695Smrg			st2000)
58592405695Smrg				basic_machine=m68k-tandem
58633adc6acSmrg				basic_os=
58792405695Smrg				;;
58892405695Smrg			stratus)
58992405695Smrg				basic_machine=i860-stratus
59033adc6acSmrg				basic_os=sysv4
59192405695Smrg				;;
59292405695Smrg			sun2)
59392405695Smrg				basic_machine=m68000-sun
59433adc6acSmrg				basic_os=
59592405695Smrg				;;
59692405695Smrg			sun2os3)
59792405695Smrg				basic_machine=m68000-sun
59833adc6acSmrg				basic_os=sunos3
59992405695Smrg				;;
60092405695Smrg			sun2os4)
60192405695Smrg				basic_machine=m68000-sun
60233adc6acSmrg				basic_os=sunos4
60392405695Smrg				;;
60492405695Smrg			sun3)
60592405695Smrg				basic_machine=m68k-sun
60633adc6acSmrg				basic_os=
60792405695Smrg				;;
60892405695Smrg			sun3os3)
60992405695Smrg				basic_machine=m68k-sun
61033adc6acSmrg				basic_os=sunos3
61192405695Smrg				;;
61292405695Smrg			sun3os4)
61392405695Smrg				basic_machine=m68k-sun
61433adc6acSmrg				basic_os=sunos4
61592405695Smrg				;;
61692405695Smrg			sun4)
61792405695Smrg				basic_machine=sparc-sun
61833adc6acSmrg				basic_os=
61992405695Smrg				;;
62092405695Smrg			sun4os3)
62192405695Smrg				basic_machine=sparc-sun
62233adc6acSmrg				basic_os=sunos3
62392405695Smrg				;;
62492405695Smrg			sun4os4)
62592405695Smrg				basic_machine=sparc-sun
62633adc6acSmrg				basic_os=sunos4
62792405695Smrg				;;
62892405695Smrg			sun4sol2)
62992405695Smrg				basic_machine=sparc-sun
63033adc6acSmrg				basic_os=solaris2
63192405695Smrg				;;
63292405695Smrg			sun386 | sun386i | roadrunner)
63392405695Smrg				basic_machine=i386-sun
63433adc6acSmrg				basic_os=
63592405695Smrg				;;
63692405695Smrg			sv1)
63792405695Smrg				basic_machine=sv1-cray
63833adc6acSmrg				basic_os=unicos
63992405695Smrg				;;
64092405695Smrg			symmetry)
64192405695Smrg				basic_machine=i386-sequent
64233adc6acSmrg				basic_os=dynix
64392405695Smrg				;;
64492405695Smrg			t3e)
64592405695Smrg				basic_machine=alphaev5-cray
64633adc6acSmrg				basic_os=unicos
64792405695Smrg				;;
64892405695Smrg			t90)
64992405695Smrg				basic_machine=t90-cray
65033adc6acSmrg				basic_os=unicos
65192405695Smrg				;;
65292405695Smrg			toad1)
65392405695Smrg				basic_machine=pdp10-xkl
65433adc6acSmrg				basic_os=tops20
65592405695Smrg				;;
65692405695Smrg			tpf)
65792405695Smrg				basic_machine=s390x-ibm
65833adc6acSmrg				basic_os=tpf
65992405695Smrg				;;
66092405695Smrg			udi29k)
66192405695Smrg				basic_machine=a29k-amd
66233adc6acSmrg				basic_os=udi
66392405695Smrg				;;
66492405695Smrg			ultra3)
66592405695Smrg				basic_machine=a29k-nyu
66633adc6acSmrg				basic_os=sym1
66792405695Smrg				;;
66892405695Smrg			v810 | necv810)
66992405695Smrg				basic_machine=v810-nec
67033adc6acSmrg				basic_os=none
67192405695Smrg				;;
67292405695Smrg			vaxv)
67392405695Smrg				basic_machine=vax-dec
67433adc6acSmrg				basic_os=sysv
67592405695Smrg				;;
67692405695Smrg			vms)
67792405695Smrg				basic_machine=vax-dec
67833adc6acSmrg				basic_os=vms
67992405695Smrg				;;
68092405695Smrg			vsta)
68192405695Smrg				basic_machine=i386-pc
68233adc6acSmrg				basic_os=vsta
68392405695Smrg				;;
68492405695Smrg			vxworks960)
68592405695Smrg				basic_machine=i960-wrs
68633adc6acSmrg				basic_os=vxworks
68792405695Smrg				;;
68892405695Smrg			vxworks68)
68992405695Smrg				basic_machine=m68k-wrs
69033adc6acSmrg				basic_os=vxworks
69192405695Smrg				;;
69292405695Smrg			vxworks29k)
69392405695Smrg				basic_machine=a29k-wrs
69433adc6acSmrg				basic_os=vxworks
69592405695Smrg				;;
69692405695Smrg			xbox)
69792405695Smrg				basic_machine=i686-pc
69833adc6acSmrg				basic_os=mingw32
69992405695Smrg				;;
70092405695Smrg			ymp)
70192405695Smrg				basic_machine=ymp-cray
70233adc6acSmrg				basic_os=unicos
70392405695Smrg				;;
70492405695Smrg			*)
70592405695Smrg				basic_machine=$1
70633adc6acSmrg				basic_os=
70792405695Smrg				;;
70892405695Smrg		esac
709fda9279dSmrg		;;
710fda9279dSmrgesac
711fda9279dSmrg
71292405695Smrg# Decode 1-component or ad-hoc basic machines
713fda9279dSmrgcase $basic_machine in
71492405695Smrg	# Here we handle the default manufacturer of certain CPU types.  It is in
71592405695Smrg	# some cases the only manufacturer, in others, it is the most popular.
71692405695Smrg	w89k)
71792405695Smrg		cpu=hppa1.1
71892405695Smrg		vendor=winbond
719fda9279dSmrg		;;
72092405695Smrg	op50n)
72192405695Smrg		cpu=hppa1.1
72292405695Smrg		vendor=oki
723fda9279dSmrg		;;
72492405695Smrg	op60c)
72592405695Smrg		cpu=hppa1.1
72692405695Smrg		vendor=oki
727fda9279dSmrg		;;
72892405695Smrg	ibm*)
72992405695Smrg		cpu=i370
73092405695Smrg		vendor=ibm
731fda9279dSmrg		;;
73292405695Smrg	orion105)
73392405695Smrg		cpu=clipper
73492405695Smrg		vendor=highlevel
735fda9279dSmrg		;;
73692405695Smrg	mac | mpw | mac-mpw)
73792405695Smrg		cpu=m68k
73892405695Smrg		vendor=apple
739fda9279dSmrg		;;
74092405695Smrg	pmac | pmac-mpw)
74192405695Smrg		cpu=powerpc
74292405695Smrg		vendor=apple
743fda9279dSmrg		;;
744fda9279dSmrg
745fda9279dSmrg	# Recognize the various machine names and aliases which stand
746fda9279dSmrg	# for a CPU type and a company and sometimes even an OS.
747fda9279dSmrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
74892405695Smrg		cpu=m68000
74992405695Smrg		vendor=att
750fda9279dSmrg		;;
751fda9279dSmrg	3b*)
75292405695Smrg		cpu=we32k
75392405695Smrg		vendor=att
754fda9279dSmrg		;;
755fda9279dSmrg	bluegene*)
75692405695Smrg		cpu=powerpc
75792405695Smrg		vendor=ibm
75833adc6acSmrg		basic_os=cnk
759fda9279dSmrg		;;
760fda9279dSmrg	decsystem10* | dec10*)
76192405695Smrg		cpu=pdp10
76292405695Smrg		vendor=dec
76333adc6acSmrg		basic_os=tops10
764fda9279dSmrg		;;
765fda9279dSmrg	decsystem20* | dec20*)
76692405695Smrg		cpu=pdp10
76792405695Smrg		vendor=dec
76833adc6acSmrg		basic_os=tops20
769fda9279dSmrg		;;
77033adc6acSmrg	delta | 3300 | delta-motorola | 3300-motorola | motorola-delta | motorola-3300)
77192405695Smrg		cpu=m68k
77292405695Smrg		vendor=motorola
773fda9279dSmrg		;;
77433adc6acSmrg	# This used to be dpx2*, but that gets the RS6000-based
77533adc6acSmrg	# DPX/20 and the x86-based DPX/2-100 wrong.  See
77633adc6acSmrg	# https://oldskool.silicium.org/stations/bull_dpx20.htm
77733adc6acSmrg	# https://www.feb-patrimoine.com/english/bull_dpx2.htm
77833adc6acSmrg	# https://www.feb-patrimoine.com/english/unix_and_bull.htm
77933adc6acSmrg	dpx2 | dpx2[23]00 | dpx2[23]xx)
78092405695Smrg		cpu=m68k
78192405695Smrg		vendor=bull
78233adc6acSmrg		;;
78333adc6acSmrg	dpx2100 | dpx21xx)
78433adc6acSmrg		cpu=i386
78533adc6acSmrg		vendor=bull
78633adc6acSmrg		;;
78733adc6acSmrg	dpx20)
78833adc6acSmrg		cpu=rs6000
78933adc6acSmrg		vendor=bull
790fda9279dSmrg		;;
791fda9279dSmrg	encore | umax | mmax)
79292405695Smrg		cpu=ns32k
79392405695Smrg		vendor=encore
794fda9279dSmrg		;;
79592405695Smrg	elxsi)
79692405695Smrg		cpu=elxsi
79792405695Smrg		vendor=elxsi
79833adc6acSmrg		basic_os=${basic_os:-bsd}
799fda9279dSmrg		;;
800fda9279dSmrg	fx2800)
80192405695Smrg		cpu=i860
80292405695Smrg		vendor=alliant
803fda9279dSmrg		;;
804fda9279dSmrg	genix)
80592405695Smrg		cpu=ns32k
80692405695Smrg		vendor=ns
807fda9279dSmrg		;;
808fda9279dSmrg	h3050r* | hiux*)
80992405695Smrg		cpu=hppa1.1
81092405695Smrg		vendor=hitachi
81133adc6acSmrg		basic_os=hiuxwe2
812fda9279dSmrg		;;
813fda9279dSmrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
81492405695Smrg		cpu=hppa1.0
81592405695Smrg		vendor=hp
816fda9279dSmrg		;;
817fda9279dSmrg	hp9k2[0-9][0-9] | hp9k31[0-9])
81892405695Smrg		cpu=m68000
81992405695Smrg		vendor=hp
820fda9279dSmrg		;;
821fda9279dSmrg	hp9k3[2-9][0-9])
82292405695Smrg		cpu=m68k
82392405695Smrg		vendor=hp
824fda9279dSmrg		;;
825fda9279dSmrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
82692405695Smrg		cpu=hppa1.0
82792405695Smrg		vendor=hp
828fda9279dSmrg		;;
829fda9279dSmrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
83092405695Smrg		cpu=hppa1.1
83192405695Smrg		vendor=hp
832fda9279dSmrg		;;
833fda9279dSmrg	hp9k78[0-9] | hp78[0-9])
834fda9279dSmrg		# FIXME: really hppa2.0-hp
83592405695Smrg		cpu=hppa1.1
83692405695Smrg		vendor=hp
837fda9279dSmrg		;;
838fda9279dSmrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
839fda9279dSmrg		# FIXME: really hppa2.0-hp
84092405695Smrg		cpu=hppa1.1
84192405695Smrg		vendor=hp
842fda9279dSmrg		;;
843fda9279dSmrg	hp9k8[0-9][13679] | hp8[0-9][13679])
84492405695Smrg		cpu=hppa1.1
84592405695Smrg		vendor=hp
846fda9279dSmrg		;;
847fda9279dSmrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
84892405695Smrg		cpu=hppa1.0
84992405695Smrg		vendor=hp
850fda9279dSmrg		;;
851fda9279dSmrg	i*86v32)
85292405695Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
85392405695Smrg		vendor=pc
85433adc6acSmrg		basic_os=sysv32
855fda9279dSmrg		;;
856fda9279dSmrg	i*86v4*)
85792405695Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
85892405695Smrg		vendor=pc
85933adc6acSmrg		basic_os=sysv4
860fda9279dSmrg		;;
861fda9279dSmrg	i*86v)
86292405695Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
86392405695Smrg		vendor=pc
86433adc6acSmrg		basic_os=sysv
865fda9279dSmrg		;;
866fda9279dSmrg	i*86sol2)
86792405695Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
86892405695Smrg		vendor=pc
86933adc6acSmrg		basic_os=solaris2
870fda9279dSmrg		;;
87192405695Smrg	j90 | j90-cray)
87292405695Smrg		cpu=j90
87392405695Smrg		vendor=cray
87433adc6acSmrg		basic_os=${basic_os:-unicos}
875fda9279dSmrg		;;
876fda9279dSmrg	iris | iris4d)
87792405695Smrg		cpu=mips
87892405695Smrg		vendor=sgi
87933adc6acSmrg		case $basic_os in
88092405695Smrg		    irix*)
881fda9279dSmrg			;;
882fda9279dSmrg		    *)
88333adc6acSmrg			basic_os=irix4
884fda9279dSmrg			;;
885fda9279dSmrg		esac
886fda9279dSmrg		;;
887fda9279dSmrg	miniframe)
88892405695Smrg		cpu=m68000
88992405695Smrg		vendor=convergent
890fda9279dSmrg		;;
89192405695Smrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
89292405695Smrg		cpu=m68k
89392405695Smrg		vendor=atari
89433adc6acSmrg		basic_os=mint
895fda9279dSmrg		;;
896fda9279dSmrg	news-3600 | risc-news)
89792405695Smrg		cpu=mips
89892405695Smrg		vendor=sony
89933adc6acSmrg		basic_os=newsos
900fda9279dSmrg		;;
90192405695Smrg	next | m*-next)
90292405695Smrg		cpu=m68k
90392405695Smrg		vendor=next
904fda9279dSmrg		;;
905fda9279dSmrg	np1)
90692405695Smrg		cpu=np1
90792405695Smrg		vendor=gould
908fda9279dSmrg		;;
909fda9279dSmrg	op50n-* | op60c-*)
91092405695Smrg		cpu=hppa1.1
91192405695Smrg		vendor=oki
91233adc6acSmrg		basic_os=proelf
913fda9279dSmrg		;;
914fda9279dSmrg	pa-hitachi)
91592405695Smrg		cpu=hppa1.1
91692405695Smrg		vendor=hitachi
91733adc6acSmrg		basic_os=hiuxwe2
918fda9279dSmrg		;;
919fda9279dSmrg	pbd)
92092405695Smrg		cpu=sparc
92192405695Smrg		vendor=tti
922fda9279dSmrg		;;
923fda9279dSmrg	pbb)
92492405695Smrg		cpu=m68k
92592405695Smrg		vendor=tti
926fda9279dSmrg		;;
92792405695Smrg	pc532)
92892405695Smrg		cpu=ns32k
92992405695Smrg		vendor=pc532
930fda9279dSmrg		;;
931fda9279dSmrg	pn)
93292405695Smrg		cpu=pn
93392405695Smrg		vendor=gould
934fda9279dSmrg		;;
93592405695Smrg	power)
93692405695Smrg		cpu=power
93792405695Smrg		vendor=ibm
938fda9279dSmrg		;;
939fda9279dSmrg	ps2)
94092405695Smrg		cpu=i386
94192405695Smrg		vendor=ibm
942fda9279dSmrg		;;
943fda9279dSmrg	rm[46]00)
94492405695Smrg		cpu=mips
94592405695Smrg		vendor=siemens
946fda9279dSmrg		;;
947fda9279dSmrg	rtpc | rtpc-*)
94892405695Smrg		cpu=romp
94992405695Smrg		vendor=ibm
950fda9279dSmrg		;;
951fda9279dSmrg	sde)
95292405695Smrg		cpu=mipsisa32
95392405695Smrg		vendor=sde
95433adc6acSmrg		basic_os=${basic_os:-elf}
955fda9279dSmrg		;;
95692405695Smrg	simso-wrs)
95792405695Smrg		cpu=sparclite
95892405695Smrg		vendor=wrs
95933adc6acSmrg		basic_os=vxworks
960fda9279dSmrg		;;
96192405695Smrg	tower | tower-32)
96292405695Smrg		cpu=m68k
96392405695Smrg		vendor=ncr
964fda9279dSmrg		;;
96592405695Smrg	vpp*|vx|vx-*)
96692405695Smrg		cpu=f301
96792405695Smrg		vendor=fujitsu
968fda9279dSmrg		;;
96992405695Smrg	w65)
97092405695Smrg		cpu=w65
97192405695Smrg		vendor=wdc
972fda9279dSmrg		;;
97392405695Smrg	w89k-*)
97492405695Smrg		cpu=hppa1.1
97592405695Smrg		vendor=winbond
97633adc6acSmrg		basic_os=proelf
977fda9279dSmrg		;;
97892405695Smrg	none)
97992405695Smrg		cpu=none
98092405695Smrg		vendor=none
981fda9279dSmrg		;;
98292405695Smrg	leon|leon[3-9])
98392405695Smrg		cpu=sparc
98492405695Smrg		vendor=$basic_machine
985fda9279dSmrg		;;
98692405695Smrg	leon-*|leon[3-9]-*)
98792405695Smrg		cpu=sparc
98892405695Smrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
989fda9279dSmrg		;;
99092405695Smrg
99192405695Smrg	*-*)
99233adc6acSmrg		saved_IFS=$IFS
99392405695Smrg		IFS="-" read cpu vendor <<EOF
99492405695Smrg$basic_machine
99592405695SmrgEOF
99633adc6acSmrg		IFS=$saved_IFS
997fda9279dSmrg		;;
99833adc6acSmrg	# We use 'pc' rather than 'unknown'
99992405695Smrg	# because (1) that's what they normally are, and
100092405695Smrg	# (2) the word "unknown" tends to confuse beginning users.
100192405695Smrg	i*86 | x86_64)
100292405695Smrg		cpu=$basic_machine
100392405695Smrg		vendor=pc
1004fda9279dSmrg		;;
100592405695Smrg	# These rules are duplicated from below for sake of the special case above;
100692405695Smrg	# i.e. things that normalized to x86 arches should also default to "pc"
100792405695Smrg	pc98)
100892405695Smrg		cpu=i386
100992405695Smrg		vendor=pc
1010fda9279dSmrg		;;
101192405695Smrg	x64 | amd64)
101292405695Smrg		cpu=x86_64
101392405695Smrg		vendor=pc
1014fda9279dSmrg		;;
101592405695Smrg	# Recognize the basic CPU types without company name.
101692405695Smrg	*)
101792405695Smrg		cpu=$basic_machine
101892405695Smrg		vendor=unknown
1019fda9279dSmrg		;;
102092405695Smrgesac
102192405695Smrg
102292405695Smrgunset -v basic_machine
102392405695Smrg
102492405695Smrg# Decode basic machines in the full and proper CPU-Company form.
102592405695Smrgcase $cpu-$vendor in
102633adc6acSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form.
102733adc6acSmrg	# It is in some cases the only manufacturer, in others, it is the most popular.
102833adc6acSmrg	c[12]-convex | c[12]-unknown | c3[248]-convex | c3[248]-unknown)
102933adc6acSmrg		vendor=convex
103033adc6acSmrg		basic_os=${basic_os:-bsd}
103133adc6acSmrg		;;
103292405695Smrg	craynv-unknown)
103392405695Smrg		vendor=cray
103433adc6acSmrg		basic_os=${basic_os:-unicosmp}
1035fda9279dSmrg		;;
103692405695Smrg	c90-unknown | c90-cray)
103792405695Smrg		vendor=cray
103833adc6acSmrg		basic_os=${basic_os:-unicos}
1039fda9279dSmrg		;;
104092405695Smrg	fx80-unknown)
104192405695Smrg		vendor=alliant
1042fda9279dSmrg		;;
104392405695Smrg	romp-unknown)
104492405695Smrg		vendor=ibm
1045fda9279dSmrg		;;
104692405695Smrg	mmix-unknown)
104792405695Smrg		vendor=knuth
1048fda9279dSmrg		;;
104992405695Smrg	microblaze-unknown | microblazeel-unknown)
105092405695Smrg		vendor=xilinx
1051fda9279dSmrg		;;
105292405695Smrg	rs6000-unknown)
105392405695Smrg		vendor=ibm
1054fda9279dSmrg		;;
105592405695Smrg	vax-unknown)
105692405695Smrg		vendor=dec
1057fda9279dSmrg		;;
105892405695Smrg	pdp11-unknown)
105992405695Smrg		vendor=dec
1060fda9279dSmrg		;;
106192405695Smrg	we32k-unknown)
106292405695Smrg		vendor=att
1063fda9279dSmrg		;;
106492405695Smrg	cydra-unknown)
106592405695Smrg		vendor=cydrome
1066fda9279dSmrg		;;
106792405695Smrg	i370-ibm*)
106892405695Smrg		vendor=ibm
1069fda9279dSmrg		;;
107092405695Smrg	orion-unknown)
107192405695Smrg		vendor=highlevel
1072fda9279dSmrg		;;
107392405695Smrg	xps-unknown | xps100-unknown)
107492405695Smrg		cpu=xps100
107592405695Smrg		vendor=honeywell
1076fda9279dSmrg		;;
107792405695Smrg
107892405695Smrg	# Here we normalize CPU types with a missing or matching vendor
107933adc6acSmrg	armh-unknown | armh-alt)
108033adc6acSmrg		cpu=armv7l
108133adc6acSmrg		vendor=alt
108233adc6acSmrg		basic_os=${basic_os:-linux-gnueabihf}
108333adc6acSmrg		;;
108433adc6acSmrg
108533adc6acSmrg	# Normalized CPU+vendor pairs that imply an OS, if not otherwise specified
108633adc6acSmrg	m68k-isi)
108733adc6acSmrg		basic_os=${basic_os:-sysv}
108833adc6acSmrg		;;
108933adc6acSmrg	m68k-sony)
109033adc6acSmrg		basic_os=${basic_os:-newsos}
109133adc6acSmrg		;;
109233adc6acSmrg	m68k-tektronix)
109333adc6acSmrg		basic_os=${basic_os:-bsd}
109433adc6acSmrg		;;
109533adc6acSmrg	m88k-harris)
109633adc6acSmrg		basic_os=${basic_os:-sysv3}
109733adc6acSmrg		;;
109833adc6acSmrg	i386-bull | m68k-bull)
109933adc6acSmrg		basic_os=${basic_os:-sysv3}
110033adc6acSmrg		;;
110133adc6acSmrg	rs6000-bull)
110233adc6acSmrg		basic_os=${basic_os:-bosx}
110333adc6acSmrg		;;
110433adc6acSmrg	mips-sni)
110533adc6acSmrg		basic_os=${basic_os:-sysv4}
1106fda9279dSmrg		;;
110792405695Smrg
110892405695Smrg	# Here we normalize CPU types irrespective of the vendor
110992405695Smrg	amd64-*)
111092405695Smrg		cpu=x86_64
1111fda9279dSmrg		;;
111292405695Smrg	blackfin-*)
111392405695Smrg		cpu=bfin
111433adc6acSmrg		basic_os=${basic_os:-linux}
1115fda9279dSmrg		;;
111692405695Smrg	c54x-*)
111792405695Smrg		cpu=tic54x
1118fda9279dSmrg		;;
111992405695Smrg	c55x-*)
112092405695Smrg		cpu=tic55x
1121fda9279dSmrg		;;
112292405695Smrg	c6x-*)
112392405695Smrg		cpu=tic6x
1124fda9279dSmrg		;;
112592405695Smrg	e500v[12]-*)
112692405695Smrg		cpu=powerpc
112733adc6acSmrg		basic_os=${basic_os}"spe"
1128fda9279dSmrg		;;
112992405695Smrg	mips3*-*)
113092405695Smrg		cpu=mips64
1131fda9279dSmrg		;;
113292405695Smrg	ms1-*)
113392405695Smrg		cpu=mt
1134fda9279dSmrg		;;
113592405695Smrg	m68knommu-*)
113692405695Smrg		cpu=m68k
113733adc6acSmrg		basic_os=${basic_os:-linux}
1138fda9279dSmrg		;;
113992405695Smrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
114092405695Smrg		cpu=s12z
1141fda9279dSmrg		;;
114292405695Smrg	openrisc-*)
114392405695Smrg		cpu=or32
1144fda9279dSmrg		;;
114592405695Smrg	parisc-*)
114692405695Smrg		cpu=hppa
114733adc6acSmrg		basic_os=${basic_os:-linux}
1148fda9279dSmrg		;;
114992405695Smrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
115092405695Smrg		cpu=i586
1151fda9279dSmrg		;;
115233adc6acSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
115392405695Smrg		cpu=i686
1154fda9279dSmrg		;;
115592405695Smrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
115692405695Smrg		cpu=i686
1157fda9279dSmrg		;;
115892405695Smrg	pentium4-*)
115992405695Smrg		cpu=i786
1160fda9279dSmrg		;;
116192405695Smrg	ppc-* | ppcbe-*)
116292405695Smrg		cpu=powerpc
1163fda9279dSmrg		;;
116492405695Smrg	ppcle-* | powerpclittle-*)
116592405695Smrg		cpu=powerpcle
1166fda9279dSmrg		;;
116792405695Smrg	ppc64-*)
116892405695Smrg		cpu=powerpc64
1169fda9279dSmrg		;;
117092405695Smrg	ppc64le-* | powerpc64little-*)
117192405695Smrg		cpu=powerpc64le
1172fda9279dSmrg		;;
117392405695Smrg	sb1-*)
117492405695Smrg		cpu=mipsisa64sb1
1175fda9279dSmrg		;;
117692405695Smrg	sb1el-*)
117792405695Smrg		cpu=mipsisa64sb1el
1178fda9279dSmrg		;;
117992405695Smrg	sh5e[lb]-*)
118092405695Smrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
1181fda9279dSmrg		;;
118292405695Smrg	spur-*)
118392405695Smrg		cpu=spur
1184fda9279dSmrg		;;
118592405695Smrg	strongarm-* | thumb-*)
118692405695Smrg		cpu=arm
1187fda9279dSmrg		;;
118892405695Smrg	tx39-*)
118992405695Smrg		cpu=mipstx39
1190fda9279dSmrg		;;
119192405695Smrg	tx39el-*)
119292405695Smrg		cpu=mipstx39el
1193fda9279dSmrg		;;
119492405695Smrg	xscale-* | xscalee[bl]-*)
119592405695Smrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
1196fda9279dSmrg		;;
119733adc6acSmrg	arm64-* | aarch64le-*)
119833adc6acSmrg		cpu=aarch64
119933adc6acSmrg		;;
120092405695Smrg
120192405695Smrg	# Recognize the canonical CPU Types that limit and/or modify the
120292405695Smrg	# company names they are paired with.
120392405695Smrg	cr16-*)
120433adc6acSmrg		basic_os=${basic_os:-elf}
120592405695Smrg		;;
120692405695Smrg	crisv32-* | etraxfs*-*)
120792405695Smrg		cpu=crisv32
120892405695Smrg		vendor=axis
1209fda9279dSmrg		;;
121092405695Smrg	cris-* | etrax*-*)
121192405695Smrg		cpu=cris
121292405695Smrg		vendor=axis
1213fda9279dSmrg		;;
121492405695Smrg	crx-*)
121533adc6acSmrg		basic_os=${basic_os:-elf}
1216fda9279dSmrg		;;
121792405695Smrg	neo-tandem)
121892405695Smrg		cpu=neo
121992405695Smrg		vendor=tandem
1220fda9279dSmrg		;;
122192405695Smrg	nse-tandem)
122292405695Smrg		cpu=nse
122392405695Smrg		vendor=tandem
1224fda9279dSmrg		;;
122592405695Smrg	nsr-tandem)
122692405695Smrg		cpu=nsr
122792405695Smrg		vendor=tandem
1228fda9279dSmrg		;;
122992405695Smrg	nsv-tandem)
123092405695Smrg		cpu=nsv
123192405695Smrg		vendor=tandem
1232fda9279dSmrg		;;
123392405695Smrg	nsx-tandem)
123492405695Smrg		cpu=nsx
123592405695Smrg		vendor=tandem
1236fda9279dSmrg		;;
123792405695Smrg	mipsallegrexel-sony)
123892405695Smrg		cpu=mipsallegrexel
123992405695Smrg		vendor=sony
1240fda9279dSmrg		;;
124192405695Smrg	tile*-*)
124233adc6acSmrg		basic_os=${basic_os:-linux-gnu}
1243fda9279dSmrg		;;
124492405695Smrg
1245fda9279dSmrg	*)
124692405695Smrg		# Recognize the canonical CPU types that are allowed with any
124792405695Smrg		# company name.
124892405695Smrg		case $cpu in
124933adc6acSmrg			  1750a \
125033adc6acSmrg			| 580 \
125133adc6acSmrg			| [cjt]90 \
125292405695Smrg			| a29k \
125333adc6acSmrg			| aarch64 \
125433adc6acSmrg			| aarch64_be \
125533adc6acSmrg			| aarch64c \
125692405695Smrg			| abacus \
125733adc6acSmrg			| alpha \
125833adc6acSmrg			| alpha64 \
125933adc6acSmrg			| alpha64ev56 \
126033adc6acSmrg			| alpha64ev6[78] \
126133adc6acSmrg			| alpha64ev[4-8] \
126233adc6acSmrg			| alpha64pca5[67] \
126333adc6acSmrg			| alphaev56 \
126433adc6acSmrg			| alphaev6[78] \
126533adc6acSmrg			| alphaev[4-8] \
126633adc6acSmrg			| alphapca5[67] \
126792405695Smrg			| am33_2.0 \
126892405695Smrg			| amdgcn \
126933adc6acSmrg			| arc \
127033adc6acSmrg			| arc32 \
127133adc6acSmrg			| arc64 \
127233adc6acSmrg			| arceb \
127333adc6acSmrg			| arm \
127433adc6acSmrg			| arm64e \
127533adc6acSmrg			| arm64ec \
127633adc6acSmrg			| arm[lb]e \
127733adc6acSmrg			| arme[lb] \
127833adc6acSmrg			| armv* \
127992405695Smrg			| asmjs \
128033adc6acSmrg			| avr \
128133adc6acSmrg			| avr32 \
128292405695Smrg			| ba \
128333adc6acSmrg			| be32 \
128433adc6acSmrg			| be64 \
128533adc6acSmrg			| bfin \
128633adc6acSmrg			| bpf \
128733adc6acSmrg			| bs2000 \
128833adc6acSmrg			| c30 \
128933adc6acSmrg			| c4x \
129033adc6acSmrg			| c8051 \
129133adc6acSmrg			| c[123]* \
129233adc6acSmrg			| clipper \
129333adc6acSmrg			| craynv \
129433adc6acSmrg			| csky \
129533adc6acSmrg			| cydra \
129633adc6acSmrg			| d10v \
129733adc6acSmrg			| d30v \
129833adc6acSmrg			| dlx \
129933adc6acSmrg			| dsp16xx \
130033adc6acSmrg			| e2k \
130133adc6acSmrg			| elxsi \
130233adc6acSmrg			| epiphany \
130333adc6acSmrg			| f30[01] \
130433adc6acSmrg			| f700 \
130533adc6acSmrg			| fido \
130633adc6acSmrg			| fr30 \
130733adc6acSmrg			| frv \
130833adc6acSmrg			| ft32 \
130933adc6acSmrg			| fx80 \
131033adc6acSmrg			| h8300 \
131133adc6acSmrg			| h8500 \
131292405695Smrg			| hexagon \
131333adc6acSmrg			| hppa \
131433adc6acSmrg			| hppa1.[01] \
131533adc6acSmrg			| hppa2.0 \
131633adc6acSmrg			| hppa2.0[nw] \
131733adc6acSmrg			| hppa64 \
131833adc6acSmrg			| i*86 \
131933adc6acSmrg			| i370 \
132033adc6acSmrg			| i860 \
132133adc6acSmrg			| i960 \
132233adc6acSmrg			| ia16 \
132333adc6acSmrg			| ia64 \
132433adc6acSmrg			| ip2k \
132533adc6acSmrg			| iq2000 \
132633adc6acSmrg			| javascript \
132792405695Smrg			| k1om \
132833adc6acSmrg			| kvx \
132933adc6acSmrg			| le32 \
133033adc6acSmrg			| le64 \
133192405695Smrg			| lm32 \
133233adc6acSmrg			| loongarch32 \
133333adc6acSmrg			| loongarch64 \
133433adc6acSmrg			| m32c \
133533adc6acSmrg			| m32r \
133633adc6acSmrg			| m32rle \
133733adc6acSmrg			| m5200 \
133833adc6acSmrg			| m68000 \
133933adc6acSmrg			| m680[012346]0 \
134033adc6acSmrg			| m6811 \
134133adc6acSmrg			| m6812 \
134233adc6acSmrg			| m68360 \
134333adc6acSmrg			| m683?2 \
134433adc6acSmrg			| m68hc11 \
134533adc6acSmrg			| m68hc12 \
134633adc6acSmrg			| m68hcs12x \
134733adc6acSmrg			| m68k \
134833adc6acSmrg			| m88110 \
134933adc6acSmrg			| m88k \
135033adc6acSmrg			| maxq \
135133adc6acSmrg			| mb \
135233adc6acSmrg			| mcore \
135333adc6acSmrg			| mep \
135433adc6acSmrg			| metag \
135533adc6acSmrg			| microblaze \
135633adc6acSmrg			| microblazeel \
135733adc6acSmrg			| mips* \
135892405695Smrg			| mmix \
135933adc6acSmrg			| mn10200 \
136033adc6acSmrg			| mn10300 \
136192405695Smrg			| moxie \
136292405695Smrg			| msp430 \
136333adc6acSmrg			| mt \
136433adc6acSmrg			| nanomips* \
136533adc6acSmrg			| nds32 \
136633adc6acSmrg			| nds32be \
136733adc6acSmrg			| nds32le \
136892405695Smrg			| nfp \
136933adc6acSmrg			| nios \
137033adc6acSmrg			| nios2 \
137133adc6acSmrg			| nios2eb \
137233adc6acSmrg			| nios2el \
137333adc6acSmrg			| none \
137433adc6acSmrg			| np1 \
137533adc6acSmrg			| ns16k \
137633adc6acSmrg			| ns32k \
137733adc6acSmrg			| nvptx \
137892405695Smrg			| open8 \
137992405695Smrg			| or1k* \
138092405695Smrg			| or32 \
138192405695Smrg			| orion \
138233adc6acSmrg			| pdp10 \
138333adc6acSmrg			| pdp11 \
138492405695Smrg			| picochip \
138533adc6acSmrg			| pj \
138633adc6acSmrg			| pjl \
138733adc6acSmrg			| pn \
138833adc6acSmrg			| power \
138933adc6acSmrg			| powerpc \
139033adc6acSmrg			| powerpc64 \
139133adc6acSmrg			| powerpc64le \
139233adc6acSmrg			| powerpcle \
139333adc6acSmrg			| powerpcspe \
139492405695Smrg			| pru \
139592405695Smrg			| pyramid \
139633adc6acSmrg			| riscv \
139733adc6acSmrg			| riscv32 \
139833adc6acSmrg			| riscv32be \
139933adc6acSmrg			| riscv64 \
140033adc6acSmrg			| riscv64be \
140133adc6acSmrg			| rl78 \
140233adc6acSmrg			| romp \
140333adc6acSmrg			| rs6000 \
140433adc6acSmrg			| rx \
140533adc6acSmrg			| s390 \
140633adc6acSmrg			| s390x \
140792405695Smrg			| score \
140833adc6acSmrg			| sh \
140933adc6acSmrg			| sh64 \
141033adc6acSmrg			| sh64le \
141133adc6acSmrg			| sh[12345][lb]e \
141233adc6acSmrg			| sh[1234] \
141333adc6acSmrg			| sh[1234]e[lb] \
141433adc6acSmrg			| sh[23]e \
141533adc6acSmrg			| sh[23]ele \
141633adc6acSmrg			| sh[24]a \
141733adc6acSmrg			| sh[24]ae[lb] \
141833adc6acSmrg			| sh[lb]e \
141933adc6acSmrg			| she[lb] \
142033adc6acSmrg			| shl \
142133adc6acSmrg			| sparc \
142233adc6acSmrg			| sparc64 \
142333adc6acSmrg			| sparc64b \
142433adc6acSmrg			| sparc64v \
142533adc6acSmrg			| sparc86x \
142633adc6acSmrg			| sparclet \
142792405695Smrg			| sparclite \
142833adc6acSmrg			| sparcv8 \
142933adc6acSmrg			| sparcv9 \
143033adc6acSmrg			| sparcv9b \
143133adc6acSmrg			| sparcv9v \
143292405695Smrg			| spu \
143333adc6acSmrg			| sv1 \
143433adc6acSmrg			| sx* \
143592405695Smrg			| tahoe \
143633adc6acSmrg			| thumbv7* \
143733adc6acSmrg			| tic30 \
143833adc6acSmrg			| tic4x \
143933adc6acSmrg			| tic54x \
144033adc6acSmrg			| tic55x \
144133adc6acSmrg			| tic6x \
144233adc6acSmrg			| tic80 \
144392405695Smrg			| tron \
144492405695Smrg			| ubicom32 \
144533adc6acSmrg			| v70 \
144633adc6acSmrg			| v810 \
144733adc6acSmrg			| v850 \
144833adc6acSmrg			| v850e \
144933adc6acSmrg			| v850e1 \
145033adc6acSmrg			| v850e2 \
145133adc6acSmrg			| v850e2v3 \
145233adc6acSmrg			| v850es \
145392405695Smrg			| vax \
145433adc6acSmrg			| vc4 \
145592405695Smrg			| visium \
145692405695Smrg			| w65 \
145733adc6acSmrg			| wasm32 \
145833adc6acSmrg			| wasm64 \
145992405695Smrg			| we32k \
146033adc6acSmrg			| x86 \
146133adc6acSmrg			| x86_64 \
146233adc6acSmrg			| xc16x \
146333adc6acSmrg			| xgate \
146433adc6acSmrg			| xps100 \
146533adc6acSmrg			| xstormy16 \
146633adc6acSmrg			| xtensa* \
146792405695Smrg			| ymp \
146833adc6acSmrg			| z80 \
146933adc6acSmrg			| z8k)
147092405695Smrg				;;
147192405695Smrg
147292405695Smrg			*)
147333adc6acSmrg				echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
147492405695Smrg				exit 1
147592405695Smrg				;;
147692405695Smrg		esac
1477fda9279dSmrg		;;
1478fda9279dSmrgesac
1479fda9279dSmrg
1480fda9279dSmrg# Here we canonicalize certain aliases for manufacturers.
148192405695Smrgcase $vendor in
148292405695Smrg	digital*)
148392405695Smrg		vendor=dec
1484fda9279dSmrg		;;
148592405695Smrg	commodore*)
148692405695Smrg		vendor=cbm
1487fda9279dSmrg		;;
1488fda9279dSmrg	*)
1489fda9279dSmrg		;;
1490fda9279dSmrgesac
1491fda9279dSmrg
1492fda9279dSmrg# Decode manufacturer-specific aliases for certain operating systems.
1493fda9279dSmrg
149433adc6acSmrgif test x"$basic_os" != x
1495fda9279dSmrgthen
149633adc6acSmrg
149733adc6acSmrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
149833adc6acSmrg# set os.
149933adc6acSmrgobj=
150033adc6acSmrgcase $basic_os in
150133adc6acSmrg	gnu/linux*)
150233adc6acSmrg		kernel=linux
150333adc6acSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
150433adc6acSmrg		;;
150533adc6acSmrg	os2-emx)
150633adc6acSmrg		kernel=os2
150733adc6acSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
150833adc6acSmrg		;;
150933adc6acSmrg	nto-qnx*)
151033adc6acSmrg		kernel=nto
151133adc6acSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
151233adc6acSmrg		;;
151333adc6acSmrg	*-*)
151433adc6acSmrg		saved_IFS=$IFS
151533adc6acSmrg		IFS="-" read kernel os <<EOF
151633adc6acSmrg$basic_os
151733adc6acSmrgEOF
151833adc6acSmrg		IFS=$saved_IFS
151933adc6acSmrg		;;
152033adc6acSmrg	# Default OS when just kernel was specified
152133adc6acSmrg	nto*)
152233adc6acSmrg		kernel=nto
152333adc6acSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
152433adc6acSmrg		;;
152533adc6acSmrg	linux*)
152633adc6acSmrg		kernel=linux
152733adc6acSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
152833adc6acSmrg		;;
152933adc6acSmrg	managarm*)
153033adc6acSmrg		kernel=managarm
153133adc6acSmrg		os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
153233adc6acSmrg		;;
153333adc6acSmrg	*)
153433adc6acSmrg		kernel=
153533adc6acSmrg		os=$basic_os
153633adc6acSmrg		;;
153733adc6acSmrgesac
153833adc6acSmrg
153933adc6acSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
154033adc6acSmrg# etc.)
1541fda9279dSmrgcase $os in
154292405695Smrg	# First match some system type aliases that might get confused
154392405695Smrg	# with valid system types.
154492405695Smrg	# solaris* is a basic system type, with this one exception.
154592405695Smrg	auroraux)
154692405695Smrg		os=auroraux
1547fda9279dSmrg		;;
154892405695Smrg	bluegene*)
154992405695Smrg		os=cnk
1550fda9279dSmrg		;;
155192405695Smrg	solaris1 | solaris1.*)
155233adc6acSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
1553fda9279dSmrg		;;
155492405695Smrg	solaris)
155592405695Smrg		os=solaris2
1556fda9279dSmrg		;;
155792405695Smrg	unixware*)
155892405695Smrg		os=sysv4.2uw
1559fda9279dSmrg		;;
156033adc6acSmrg	# The marketing names for NeXT's operating systems were
156133adc6acSmrg	# NeXTSTEP, NeXTSTEP 2, OpenSTEP 3, OpenSTEP 4.  'openstep' is
156233adc6acSmrg	# mapped to 'openstep3', but 'openstep1' and 'openstep2' are
156333adc6acSmrg	# mapped to 'nextstep' and 'nextstep2', consistent with the
156433adc6acSmrg	# treatment of SunOS/Solaris.
156533adc6acSmrg	ns | ns1 | nextstep | nextstep1 | openstep1)
156633adc6acSmrg		os=nextstep
156733adc6acSmrg		;;
156833adc6acSmrg	ns2 | nextstep2 | openstep2)
156933adc6acSmrg		os=nextstep2
157033adc6acSmrg		;;
157133adc6acSmrg	ns3 | nextstep3 | openstep | openstep3)
157233adc6acSmrg		os=openstep3
157333adc6acSmrg		;;
157433adc6acSmrg	ns4 | nextstep4 | openstep4)
157533adc6acSmrg		os=openstep4
1576fda9279dSmrg		;;
157792405695Smrg	# es1800 is here to avoid being matched by es* (a different OS)
157892405695Smrg	es1800*)
157992405695Smrg		os=ose
158092405695Smrg		;;
158192405695Smrg	# Some version numbers need modification
158292405695Smrg	chorusos*)
158392405695Smrg		os=chorusos
158492405695Smrg		;;
158592405695Smrg	isc)
158692405695Smrg		os=isc2.2
158792405695Smrg		;;
158892405695Smrg	sco6)
158992405695Smrg		os=sco5v6
159092405695Smrg		;;
159192405695Smrg	sco5)
159292405695Smrg		os=sco3.2v5
159392405695Smrg		;;
159492405695Smrg	sco4)
159592405695Smrg		os=sco3.2v4
159692405695Smrg		;;
159792405695Smrg	sco3.2.[4-9]*)
159833adc6acSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
159992405695Smrg		;;
160033adc6acSmrg	sco*v* | scout)
160192405695Smrg		# Don't match below
160292405695Smrg		;;
160392405695Smrg	sco*)
160492405695Smrg		os=sco3.2v2
160592405695Smrg		;;
160692405695Smrg	psos*)
160792405695Smrg		os=psos
160892405695Smrg		;;
160992405695Smrg	qnx*)
161033adc6acSmrg		os=qnx
1611fda9279dSmrg		;;
161292405695Smrg	hiux*)
161392405695Smrg		os=hiuxwe2
1614fda9279dSmrg		;;
161592405695Smrg	lynx*178)
161692405695Smrg		os=lynxos178
1617fda9279dSmrg		;;
161892405695Smrg	lynx*5)
161992405695Smrg		os=lynxos5
1620fda9279dSmrg		;;
162133adc6acSmrg	lynxos*)
162233adc6acSmrg		# don't get caught up in next wildcard
162333adc6acSmrg		;;
162492405695Smrg	lynx*)
162592405695Smrg		os=lynxos
1626fda9279dSmrg		;;
162733adc6acSmrg	mac[0-9]*)
162892405695Smrg		os=`echo "$os" | sed -e 's|mac|macos|'`
1629fda9279dSmrg		;;
163092405695Smrg	opened*)
163192405695Smrg		os=openedition
1632fda9279dSmrg		;;
163392405695Smrg	os400*)
163492405695Smrg		os=os400
1635fda9279dSmrg		;;
163692405695Smrg	sunos5*)
163792405695Smrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
1638fda9279dSmrg		;;
163992405695Smrg	sunos6*)
164092405695Smrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
1641fda9279dSmrg		;;
164292405695Smrg	wince*)
164392405695Smrg		os=wince
1644fda9279dSmrg		;;
164592405695Smrg	utek*)
164692405695Smrg		os=bsd
164733adc6acSmrg		vendor=`echo "$vendor" | sed -e 's|^unknown$|tektronix|'`
1648fda9279dSmrg		;;
164992405695Smrg	dynix*)
165092405695Smrg		os=bsd
1651fda9279dSmrg		;;
165292405695Smrg	acis*)
165392405695Smrg		os=aos
1654fda9279dSmrg		;;
165592405695Smrg	atheos*)
165692405695Smrg		os=atheos
1657fda9279dSmrg		;;
165892405695Smrg	syllable*)
165992405695Smrg		os=syllable
1660fda9279dSmrg		;;
166192405695Smrg	386bsd)
166292405695Smrg		os=bsd
166392405695Smrg		;;
166433adc6acSmrg	ctix*)
166592405695Smrg		os=sysv
166633adc6acSmrg		vendor=`echo "$vendor" | sed -e 's|^unknown$|convergent|'`
1667fda9279dSmrg		;;
166833adc6acSmrg	uts*)
166933adc6acSmrg		os=sysv
1670fda9279dSmrg		;;
167133adc6acSmrg	nova*)
167233adc6acSmrg		kernel=rtmk
167333adc6acSmrg		os=nova
1674fda9279dSmrg		;;
1675fda9279dSmrg	# Preserve the version number of sinix5.
167692405695Smrg	sinix5.*)
167733adc6acSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
167833adc6acSmrg		vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'`
1679fda9279dSmrg		;;
168092405695Smrg	sinix*)
168192405695Smrg		os=sysv4
168233adc6acSmrg		vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'`
1683fda9279dSmrg		;;
168492405695Smrg	tpf*)
168592405695Smrg		os=tpf
1686fda9279dSmrg		;;
168792405695Smrg	triton*)
168892405695Smrg		os=sysv3
1689fda9279dSmrg		;;
169092405695Smrg	oss*)
169192405695Smrg		os=sysv3
1692fda9279dSmrg		;;
169392405695Smrg	svr4*)
169492405695Smrg		os=sysv4
1695fda9279dSmrg		;;
169692405695Smrg	svr3)
169792405695Smrg		os=sysv3
1698fda9279dSmrg		;;
169992405695Smrg	sysvr4)
170092405695Smrg		os=sysv4
1701fda9279dSmrg		;;
170292405695Smrg	ose*)
170392405695Smrg		os=ose
1704fda9279dSmrg		;;
170592405695Smrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
170692405695Smrg		os=mint
1707fda9279dSmrg		;;
170892405695Smrg	dicos*)
170992405695Smrg		os=dicos
1710fda9279dSmrg		;;
171192405695Smrg	pikeos*)
171292405695Smrg		# Until real need of OS specific support for
171392405695Smrg		# particular features comes up, bare metal
171492405695Smrg		# configurations are quite functional.
171592405695Smrg		case $cpu in
171692405695Smrg		    arm*)
171792405695Smrg			os=eabi
171892405695Smrg			;;
171992405695Smrg		    *)
172033adc6acSmrg			os=
172133adc6acSmrg			obj=elf
172292405695Smrg			;;
172392405695Smrg		esac
1724fda9279dSmrg		;;
172533adc6acSmrg	aout* | coff* | elf* | pe*)
172633adc6acSmrg		# These are machine code file formats, not OSes
172733adc6acSmrg		obj=$os
172833adc6acSmrg		os=
1729fda9279dSmrg		;;
1730fda9279dSmrg	*)
173133adc6acSmrg		# No normalization, but not necessarily accepted, that comes below.
1732fda9279dSmrg		;;
1733fda9279dSmrgesac
173433adc6acSmrg
1735fda9279dSmrgelse
1736fda9279dSmrg
1737fda9279dSmrg# Here we handle the default operating systems that come with various machines.
1738fda9279dSmrg# The value should be what the vendor currently ships out the door with their
1739fda9279dSmrg# machine or put another way, the most popular os provided with the machine.
1740fda9279dSmrg
1741fda9279dSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
1742fda9279dSmrg# "-sun"), then you have to tell the case statement up towards the top
1743fda9279dSmrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
1744fda9279dSmrg# will signal an error saying that MANUFACTURER isn't an operating
1745fda9279dSmrg# system, and we'll never get to this point.
1746fda9279dSmrg
174733adc6acSmrgkernel=
174833adc6acSmrgobj=
174992405695Smrgcase $cpu-$vendor in
1750fda9279dSmrg	score-*)
175133adc6acSmrg		os=
175233adc6acSmrg		obj=elf
1753fda9279dSmrg		;;
1754fda9279dSmrg	spu-*)
175533adc6acSmrg		os=
175633adc6acSmrg		obj=elf
1757fda9279dSmrg		;;
1758fda9279dSmrg	*-acorn)
175992405695Smrg		os=riscix1.2
1760fda9279dSmrg		;;
1761fda9279dSmrg	arm*-rebel)
176233adc6acSmrg		kernel=linux
176333adc6acSmrg		os=gnu
1764fda9279dSmrg		;;
1765fda9279dSmrg	arm*-semi)
176633adc6acSmrg		os=
176733adc6acSmrg		obj=aout
1768fda9279dSmrg		;;
1769fda9279dSmrg	c4x-* | tic4x-*)
177033adc6acSmrg		os=
177133adc6acSmrg		obj=coff
1772fda9279dSmrg		;;
1773fda9279dSmrg	c8051-*)
177433adc6acSmrg		os=
177533adc6acSmrg		obj=elf
177692405695Smrg		;;
177792405695Smrg	clipper-intergraph)
177892405695Smrg		os=clix
1779fda9279dSmrg		;;
1780fda9279dSmrg	hexagon-*)
178133adc6acSmrg		os=
178233adc6acSmrg		obj=elf
1783fda9279dSmrg		;;
1784fda9279dSmrg	tic54x-*)
178533adc6acSmrg		os=
178633adc6acSmrg		obj=coff
1787fda9279dSmrg		;;
1788fda9279dSmrg	tic55x-*)
178933adc6acSmrg		os=
179033adc6acSmrg		obj=coff
1791fda9279dSmrg		;;
1792fda9279dSmrg	tic6x-*)
179333adc6acSmrg		os=
179433adc6acSmrg		obj=coff
1795fda9279dSmrg		;;
1796fda9279dSmrg	# This must come before the *-dec entry.
1797fda9279dSmrg	pdp10-*)
179892405695Smrg		os=tops20
1799fda9279dSmrg		;;
1800fda9279dSmrg	pdp11-*)
180192405695Smrg		os=none
1802fda9279dSmrg		;;
1803fda9279dSmrg	*-dec | vax-*)
180492405695Smrg		os=ultrix4.2
1805fda9279dSmrg		;;
1806fda9279dSmrg	m68*-apollo)
180792405695Smrg		os=domain
1808fda9279dSmrg		;;
1809fda9279dSmrg	i386-sun)
181092405695Smrg		os=sunos4.0.2
1811fda9279dSmrg		;;
1812fda9279dSmrg	m68000-sun)
181392405695Smrg		os=sunos3
1814fda9279dSmrg		;;
1815fda9279dSmrg	m68*-cisco)
181633adc6acSmrg		os=
181733adc6acSmrg		obj=aout
1818fda9279dSmrg		;;
1819fda9279dSmrg	mep-*)
182033adc6acSmrg		os=
182133adc6acSmrg		obj=elf
182233adc6acSmrg		;;
182333adc6acSmrg	# The -sgi and -siemens entries must be before the mips- entry
182433adc6acSmrg	# or we get the wrong os.
182533adc6acSmrg	*-sgi)
182633adc6acSmrg		os=irix
182733adc6acSmrg		;;
182833adc6acSmrg	*-siemens)
182933adc6acSmrg		os=sysv4
1830fda9279dSmrg		;;
1831fda9279dSmrg	mips*-cisco)
183233adc6acSmrg		os=
183333adc6acSmrg		obj=elf
1834fda9279dSmrg		;;
183533adc6acSmrg	mips*-*|nanomips*-*)
183633adc6acSmrg		os=
183733adc6acSmrg		obj=elf
1838fda9279dSmrg		;;
1839fda9279dSmrg	or32-*)
184033adc6acSmrg		os=
184133adc6acSmrg		obj=coff
1842fda9279dSmrg		;;
184333adc6acSmrg	# This must be before the sparc-* entry or we get the wrong os.
184433adc6acSmrg	*-tti)
184592405695Smrg		os=sysv3
1846fda9279dSmrg		;;
1847fda9279dSmrg	sparc-* | *-sun)
184892405695Smrg		os=sunos4.1.1
1849fda9279dSmrg		;;
1850dd52494dSmrg	pru-*)
185133adc6acSmrg		os=
185233adc6acSmrg		obj=elf
1853dd52494dSmrg		;;
1854fda9279dSmrg	*-be)
185592405695Smrg		os=beos
1856fda9279dSmrg		;;
1857fda9279dSmrg	*-ibm)
185892405695Smrg		os=aix
1859fda9279dSmrg		;;
1860fda9279dSmrg	*-knuth)
186192405695Smrg		os=mmixware
1862fda9279dSmrg		;;
1863fda9279dSmrg	*-wec)
186492405695Smrg		os=proelf
1865fda9279dSmrg		;;
1866fda9279dSmrg	*-winbond)
186792405695Smrg		os=proelf
1868fda9279dSmrg		;;
1869fda9279dSmrg	*-oki)
187092405695Smrg		os=proelf
1871fda9279dSmrg		;;
1872fda9279dSmrg	*-hp)
187392405695Smrg		os=hpux
1874fda9279dSmrg		;;
1875fda9279dSmrg	*-hitachi)
187633adc6acSmrg		os=hiuxwe2
1877fda9279dSmrg		;;
1878fda9279dSmrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
187992405695Smrg		os=sysv
1880fda9279dSmrg		;;
1881fda9279dSmrg	*-cbm)
188292405695Smrg		os=amigaos
1883fda9279dSmrg		;;
1884fda9279dSmrg	*-dg)
188592405695Smrg		os=dgux
1886fda9279dSmrg		;;
1887fda9279dSmrg	*-dolphin)
188892405695Smrg		os=sysv3
1889fda9279dSmrg		;;
1890fda9279dSmrg	m68k-ccur)
189192405695Smrg		os=rtu
1892fda9279dSmrg		;;
1893fda9279dSmrg	m88k-omron*)
189492405695Smrg		os=luna
1895fda9279dSmrg		;;
189692405695Smrg	*-next)
189792405695Smrg		os=nextstep
1898fda9279dSmrg		;;
1899fda9279dSmrg	*-sequent)
190092405695Smrg		os=ptx
1901fda9279dSmrg		;;
1902fda9279dSmrg	*-crds)
190392405695Smrg		os=unos
1904fda9279dSmrg		;;
1905fda9279dSmrg	*-ns)
190692405695Smrg		os=genix
1907fda9279dSmrg		;;
1908fda9279dSmrg	i370-*)
190992405695Smrg		os=mvs
1910fda9279dSmrg		;;
1911fda9279dSmrg	*-gould)
191292405695Smrg		os=sysv
1913fda9279dSmrg		;;
1914fda9279dSmrg	*-highlevel)
191592405695Smrg		os=bsd
1916fda9279dSmrg		;;
1917fda9279dSmrg	*-encore)
191892405695Smrg		os=bsd
1919fda9279dSmrg		;;
1920fda9279dSmrg	*-masscomp)
192192405695Smrg		os=rtu
1922fda9279dSmrg		;;
1923fda9279dSmrg	f30[01]-fujitsu | f700-fujitsu)
192492405695Smrg		os=uxpv
1925fda9279dSmrg		;;
1926fda9279dSmrg	*-rom68k)
192733adc6acSmrg		os=
192833adc6acSmrg		obj=coff
1929fda9279dSmrg		;;
1930fda9279dSmrg	*-*bug)
193133adc6acSmrg		os=
193233adc6acSmrg		obj=coff
1933fda9279dSmrg		;;
1934fda9279dSmrg	*-apple)
193592405695Smrg		os=macos
1936fda9279dSmrg		;;
1937fda9279dSmrg	*-atari*)
193892405695Smrg		os=mint
193992405695Smrg		;;
194092405695Smrg	*-wrs)
194192405695Smrg		os=vxworks
1942fda9279dSmrg		;;
1943fda9279dSmrg	*)
194492405695Smrg		os=none
1945fda9279dSmrg		;;
1946fda9279dSmrgesac
194733adc6acSmrg
1948fda9279dSmrgfi
1949fda9279dSmrg
195033adc6acSmrg# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ).
195133adc6acSmrg
195233adc6acSmrgcase $os in
195333adc6acSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
195433adc6acSmrg	llvm* | musl* | newlib* | relibc* | uclibc*)
195533adc6acSmrg		;;
195633adc6acSmrg	# Likewise for "kernel-abi"
195733adc6acSmrg	eabi* | gnueabi*)
195833adc6acSmrg		;;
195933adc6acSmrg	# VxWorks passes extra cpu info in the 4th filed.
196033adc6acSmrg	simlinux | simwindows | spe)
196133adc6acSmrg		;;
196233adc6acSmrg	# See `case $cpu-$os` validation below
196333adc6acSmrg	ghcjs)
196433adc6acSmrg		;;
196533adc6acSmrg	# Now accept the basic system types.
196633adc6acSmrg	# Each alternative MUST end in a * to match a version number.
196733adc6acSmrg	  abug \
196833adc6acSmrg	| aix* \
196933adc6acSmrg	| amdhsa* \
197033adc6acSmrg	| amigados* \
197133adc6acSmrg	| amigaos* \
197233adc6acSmrg	| android* \
197333adc6acSmrg	| aof* \
197433adc6acSmrg	| aos* \
197533adc6acSmrg	| aros* \
197633adc6acSmrg	| atheos* \
197733adc6acSmrg	| auroraux* \
197833adc6acSmrg	| aux* \
197933adc6acSmrg	| beos* \
198033adc6acSmrg	| bitrig* \
198133adc6acSmrg	| bme* \
198233adc6acSmrg	| bosx* \
198333adc6acSmrg	| bsd* \
198433adc6acSmrg	| cegcc* \
198533adc6acSmrg	| chorusos* \
198633adc6acSmrg	| chorusrdb* \
198733adc6acSmrg	| clix* \
198833adc6acSmrg	| cloudabi* \
198933adc6acSmrg	| cnk* \
199033adc6acSmrg	| conix* \
199133adc6acSmrg	| cos* \
199233adc6acSmrg	| cxux* \
199333adc6acSmrg	| cygwin* \
199433adc6acSmrg	| darwin* \
199533adc6acSmrg	| dgux* \
199633adc6acSmrg	| dicos* \
199733adc6acSmrg	| dnix* \
199833adc6acSmrg	| domain* \
199933adc6acSmrg	| dragonfly* \
200033adc6acSmrg	| drops* \
200133adc6acSmrg	| ebmon* \
200233adc6acSmrg	| ecoff* \
200333adc6acSmrg	| ekkobsd* \
200433adc6acSmrg	| emscripten* \
200533adc6acSmrg	| emx* \
200633adc6acSmrg	| es* \
200733adc6acSmrg	| fiwix* \
200833adc6acSmrg	| freebsd* \
200933adc6acSmrg	| fuchsia* \
201033adc6acSmrg	| genix* \
201133adc6acSmrg	| genode* \
201233adc6acSmrg	| glidix* \
201333adc6acSmrg	| gnu* \
201433adc6acSmrg	| go32* \
201533adc6acSmrg	| haiku* \
201633adc6acSmrg	| hcos* \
201733adc6acSmrg	| hiux* \
201833adc6acSmrg	| hms* \
201933adc6acSmrg	| hpux* \
202033adc6acSmrg	| ieee* \
202133adc6acSmrg	| interix* \
202233adc6acSmrg	| ios* \
202333adc6acSmrg	| iris* \
202433adc6acSmrg	| irix* \
202533adc6acSmrg	| ironclad* \
202633adc6acSmrg	| isc* \
202733adc6acSmrg	| its* \
202833adc6acSmrg	| l4re* \
202933adc6acSmrg	| libertybsd* \
203033adc6acSmrg	| lites* \
203133adc6acSmrg	| lnews* \
203233adc6acSmrg	| luna* \
203333adc6acSmrg	| lynxos* \
203433adc6acSmrg	| mach* \
203533adc6acSmrg	| macos* \
203633adc6acSmrg	| magic* \
203733adc6acSmrg	| mbr* \
203833adc6acSmrg	| midipix* \
203933adc6acSmrg	| midnightbsd* \
204033adc6acSmrg	| mingw32* \
204133adc6acSmrg	| mingw64* \
204233adc6acSmrg	| minix* \
204333adc6acSmrg	| mint* \
204433adc6acSmrg	| mirbsd* \
204533adc6acSmrg	| mks* \
204633adc6acSmrg	| mlibc* \
204733adc6acSmrg	| mmixware* \
204833adc6acSmrg	| mon960* \
204933adc6acSmrg	| morphos* \
205033adc6acSmrg	| moss* \
205133adc6acSmrg	| moxiebox* \
205233adc6acSmrg	| mpeix* \
205333adc6acSmrg	| mpw* \
205433adc6acSmrg	| msdos* \
205533adc6acSmrg	| msys* \
205633adc6acSmrg	| mvs* \
205733adc6acSmrg	| nacl* \
205833adc6acSmrg	| netbsd* \
205933adc6acSmrg	| netware* \
206033adc6acSmrg	| newsos* \
206133adc6acSmrg	| nextstep* \
206233adc6acSmrg	| nindy* \
206333adc6acSmrg	| nonstopux* \
206433adc6acSmrg	| nova* \
206533adc6acSmrg	| nsk* \
206633adc6acSmrg	| nucleus* \
206733adc6acSmrg	| nx6 \
206833adc6acSmrg	| nx7 \
206933adc6acSmrg	| oabi* \
207033adc6acSmrg	| ohos* \
207133adc6acSmrg	| onefs* \
207233adc6acSmrg	| openbsd* \
207333adc6acSmrg	| openedition* \
207433adc6acSmrg	| openstep* \
207533adc6acSmrg	| os108* \
207633adc6acSmrg	| os2* \
207733adc6acSmrg	| os400* \
207833adc6acSmrg	| os68k* \
207933adc6acSmrg	| os9* \
208033adc6acSmrg	| ose* \
208133adc6acSmrg	| osf* \
208233adc6acSmrg	| oskit* \
208333adc6acSmrg	| osx* \
208433adc6acSmrg	| palmos* \
208533adc6acSmrg	| phoenix* \
208633adc6acSmrg	| plan9* \
208733adc6acSmrg	| powermax* \
208833adc6acSmrg	| powerunix* \
208933adc6acSmrg	| proelf* \
209033adc6acSmrg	| psos* \
209133adc6acSmrg	| psp* \
209233adc6acSmrg	| ptx* \
209333adc6acSmrg	| pw32* \
209433adc6acSmrg	| qnx* \
209533adc6acSmrg	| rdos* \
209633adc6acSmrg	| redox* \
209733adc6acSmrg	| rhapsody* \
209833adc6acSmrg	| riscix* \
209933adc6acSmrg	| riscos* \
210033adc6acSmrg	| rtems* \
210133adc6acSmrg	| rtmk* \
210233adc6acSmrg	| rtu* \
210333adc6acSmrg	| scout* \
210433adc6acSmrg	| secbsd* \
210533adc6acSmrg	| sei* \
210633adc6acSmrg	| serenity* \
210733adc6acSmrg	| sim* \
210833adc6acSmrg	| skyos* \
210933adc6acSmrg	| solaris* \
211033adc6acSmrg	| solidbsd* \
211133adc6acSmrg	| sortix* \
211233adc6acSmrg	| storm-chaos* \
211333adc6acSmrg	| sunos \
211433adc6acSmrg	| sunos[34]* \
211533adc6acSmrg	| superux* \
211633adc6acSmrg	| syllable* \
211733adc6acSmrg	| sym* \
211833adc6acSmrg	| sysv* \
211933adc6acSmrg	| tenex* \
212033adc6acSmrg	| tirtos* \
212133adc6acSmrg	| toppers* \
212233adc6acSmrg	| tops10* \
212333adc6acSmrg	| tops20* \
212433adc6acSmrg	| tpf* \
212533adc6acSmrg	| tvos* \
212633adc6acSmrg	| twizzler* \
212733adc6acSmrg	| uclinux* \
212833adc6acSmrg	| udi* \
212933adc6acSmrg	| udk* \
213033adc6acSmrg	| ultrix* \
213133adc6acSmrg	| unicos* \
213233adc6acSmrg	| uniplus* \
213333adc6acSmrg	| unleashed* \
213433adc6acSmrg	| unos* \
213533adc6acSmrg	| uwin* \
213633adc6acSmrg	| uxpv* \
213733adc6acSmrg	| v88r* \
213833adc6acSmrg	|*vms* \
213933adc6acSmrg	| vos* \
214033adc6acSmrg	| vsta* \
214133adc6acSmrg	| vxsim* \
214233adc6acSmrg	| vxworks* \
214333adc6acSmrg	| wasi* \
214433adc6acSmrg	| watchos* \
214533adc6acSmrg	| wince* \
214633adc6acSmrg	| windiss* \
214733adc6acSmrg	| windows* \
214833adc6acSmrg	| winnt* \
214933adc6acSmrg	| xenix* \
215033adc6acSmrg	| xray* \
215133adc6acSmrg	| zephyr* \
215233adc6acSmrg	| zvmoe* )
215333adc6acSmrg		;;
215433adc6acSmrg	# This one is extra strict with allowed versions
215533adc6acSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
215633adc6acSmrg		# Don't forget version if it is 3.2v4 or newer.
215733adc6acSmrg		;;
215833adc6acSmrg	# This refers to builds using the UEFI calling convention
215933adc6acSmrg	# (which depends on the architecture) and PE file format.
216033adc6acSmrg	# Note that this is both a different calling convention and
216133adc6acSmrg	# different file format than that of GNU-EFI
216233adc6acSmrg	# (x86_64-w64-mingw32).
216333adc6acSmrg	uefi)
216433adc6acSmrg		;;
216533adc6acSmrg	none)
216633adc6acSmrg		;;
216733adc6acSmrg	kernel* | msvc* )
216833adc6acSmrg		# Restricted further below
216933adc6acSmrg		;;
217033adc6acSmrg	'')
217133adc6acSmrg		if test x"$obj" = x
217233adc6acSmrg		then
217333adc6acSmrg			echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
217433adc6acSmrg		fi
217533adc6acSmrg		;;
217633adc6acSmrg	*)
217733adc6acSmrg		echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
217833adc6acSmrg		exit 1
217933adc6acSmrg		;;
218033adc6acSmrgesac
218133adc6acSmrg
218233adc6acSmrgcase $obj in
218333adc6acSmrg	aout* | coff* | elf* | pe*)
218433adc6acSmrg		;;
218533adc6acSmrg	'')
218633adc6acSmrg		# empty is fine
218733adc6acSmrg		;;
218833adc6acSmrg	*)
218933adc6acSmrg		echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
219033adc6acSmrg		exit 1
219133adc6acSmrg		;;
219233adc6acSmrgesac
219333adc6acSmrg
219433adc6acSmrg# Here we handle the constraint that a (synthetic) cpu and os are
219533adc6acSmrg# valid only in combination with each other and nowhere else.
219633adc6acSmrgcase $cpu-$os in
219733adc6acSmrg	# The "javascript-unknown-ghcjs" triple is used by GHC; we
219833adc6acSmrg	# accept it here in order to tolerate that, but reject any
219933adc6acSmrg	# variations.
220033adc6acSmrg	javascript-ghcjs)
220133adc6acSmrg		;;
220233adc6acSmrg	javascript-* | *-ghcjs)
220333adc6acSmrg		echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
220433adc6acSmrg		exit 1
220533adc6acSmrg		;;
220633adc6acSmrgesac
220733adc6acSmrg
220833adc6acSmrg# As a final step for OS-related things, validate the OS-kernel combination
220933adc6acSmrg# (given a valid OS), if there is a kernel.
221033adc6acSmrgcase $kernel-$os-$obj in
221133adc6acSmrg	linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
221233adc6acSmrg		    | linux-mlibc*- | linux-musl*- | linux-newlib*- \
221333adc6acSmrg		    | linux-relibc*- | linux-uclibc*- | linux-ohos*- )
221433adc6acSmrg		;;
221533adc6acSmrg	uclinux-uclibc*- | uclinux-gnu*- )
221633adc6acSmrg		;;
221733adc6acSmrg	managarm-mlibc*- | managarm-kernel*- )
221833adc6acSmrg		;;
221933adc6acSmrg	windows*-msvc*-)
222033adc6acSmrg		;;
222133adc6acSmrg	-dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
222233adc6acSmrg		    | -uclibc*- )
222333adc6acSmrg		# These are just libc implementations, not actual OSes, and thus
222433adc6acSmrg		# require a kernel.
222533adc6acSmrg		echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
222633adc6acSmrg		exit 1
222733adc6acSmrg		;;
222833adc6acSmrg	-kernel*- )
222933adc6acSmrg		echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
223033adc6acSmrg		exit 1
223133adc6acSmrg		;;
223233adc6acSmrg	*-kernel*- )
223333adc6acSmrg		echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
223433adc6acSmrg		exit 1
223533adc6acSmrg		;;
223633adc6acSmrg	*-msvc*- )
223733adc6acSmrg		echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
223833adc6acSmrg		exit 1
223933adc6acSmrg		;;
224033adc6acSmrg	kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-)
224133adc6acSmrg		;;
224233adc6acSmrg	vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
224333adc6acSmrg		;;
224433adc6acSmrg	nto-qnx*-)
224533adc6acSmrg		;;
224633adc6acSmrg	os2-emx-)
224733adc6acSmrg		;;
224833adc6acSmrg	rtmk-nova-)
224933adc6acSmrg		;;
225033adc6acSmrg	*-eabi*- | *-gnueabi*-)
225133adc6acSmrg		;;
225233adc6acSmrg	none--*)
225333adc6acSmrg		# None (no kernel, i.e. freestanding / bare metal),
225433adc6acSmrg		# can be paired with an machine code file format
225533adc6acSmrg		;;
225633adc6acSmrg	-*-)
225733adc6acSmrg		# Blank kernel with real OS is always fine.
225833adc6acSmrg		;;
225933adc6acSmrg	--*)
226033adc6acSmrg		# Blank kernel and OS with real machine code file format is always fine.
226133adc6acSmrg		;;
226233adc6acSmrg	*-*-*)
226333adc6acSmrg		echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
226433adc6acSmrg		exit 1
226533adc6acSmrg		;;
226633adc6acSmrgesac
226733adc6acSmrg
2268fda9279dSmrg# Here we handle the case where we know the os, and the CPU type, but not the
2269fda9279dSmrg# manufacturer.  We pick the logical manufacturer.
227092405695Smrgcase $vendor in
227192405695Smrg	unknown)
227233adc6acSmrg		case $cpu-$os in
227333adc6acSmrg			*-riscix*)
2274fda9279dSmrg				vendor=acorn
2275fda9279dSmrg				;;
227633adc6acSmrg			*-sunos* | *-solaris*)
2277fda9279dSmrg				vendor=sun
2278fda9279dSmrg				;;
227933adc6acSmrg			*-cnk* | *-aix*)
2280fda9279dSmrg				vendor=ibm
2281fda9279dSmrg				;;
228233adc6acSmrg			*-beos*)
2283fda9279dSmrg				vendor=be
2284fda9279dSmrg				;;
228533adc6acSmrg			*-hpux*)
2286fda9279dSmrg				vendor=hp
2287fda9279dSmrg				;;
228833adc6acSmrg			*-mpeix*)
2289fda9279dSmrg				vendor=hp
2290fda9279dSmrg				;;
229133adc6acSmrg			*-hiux*)
2292fda9279dSmrg				vendor=hitachi
2293fda9279dSmrg				;;
229433adc6acSmrg			*-unos*)
2295fda9279dSmrg				vendor=crds
2296fda9279dSmrg				;;
229733adc6acSmrg			*-dgux*)
2298fda9279dSmrg				vendor=dg
2299fda9279dSmrg				;;
230033adc6acSmrg			*-luna*)
2301fda9279dSmrg				vendor=omron
2302fda9279dSmrg				;;
230333adc6acSmrg			*-genix*)
2304fda9279dSmrg				vendor=ns
2305fda9279dSmrg				;;
230633adc6acSmrg			*-clix*)
230792405695Smrg				vendor=intergraph
230892405695Smrg				;;
230933adc6acSmrg			*-mvs* | *-opened*)
231033adc6acSmrg				vendor=ibm
231133adc6acSmrg				;;
231233adc6acSmrg			*-os400*)
2313fda9279dSmrg				vendor=ibm
2314fda9279dSmrg				;;
231533adc6acSmrg			s390-* | s390x-*)
2316fda9279dSmrg				vendor=ibm
2317fda9279dSmrg				;;
231833adc6acSmrg			*-ptx*)
2319fda9279dSmrg				vendor=sequent
2320fda9279dSmrg				;;
232133adc6acSmrg			*-tpf*)
2322fda9279dSmrg				vendor=ibm
2323fda9279dSmrg				;;
232433adc6acSmrg			*-vxsim* | *-vxworks* | *-windiss*)
2325fda9279dSmrg				vendor=wrs
2326fda9279dSmrg				;;
232733adc6acSmrg			*-aux*)
2328fda9279dSmrg				vendor=apple
2329fda9279dSmrg				;;
233033adc6acSmrg			*-hms*)
2331fda9279dSmrg				vendor=hitachi
2332fda9279dSmrg				;;
233333adc6acSmrg			*-mpw* | *-macos*)
2334fda9279dSmrg				vendor=apple
2335fda9279dSmrg				;;
233633adc6acSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
2337fda9279dSmrg				vendor=atari
2338fda9279dSmrg				;;
233933adc6acSmrg			*-vos*)
2340fda9279dSmrg				vendor=stratus
2341fda9279dSmrg				;;
2342fda9279dSmrg		esac
2343fda9279dSmrg		;;
2344fda9279dSmrgesac
2345fda9279dSmrg
234633adc6acSmrgecho "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
2347fda9279dSmrgexit
2348fda9279dSmrg
2349fda9279dSmrg# Local variables:
235092405695Smrg# eval: (add-hook 'before-save-hook 'time-stamp)
2351fda9279dSmrg# time-stamp-start: "timestamp='"
2352fda9279dSmrg# time-stamp-format: "%:y-%02m-%02d"
2353fda9279dSmrg# time-stamp-end: "'"
2354fda9279dSmrg# End:
2355