config.sub revision 96d43ffd
15dfecf96Smrg#! /bin/sh
25dfecf96Smrg# Configuration validation subroutine script.
396d43ffdSmrg#   Copyright 1992-2021 Free Software Foundation, Inc.
45dfecf96Smrg
596d43ffdSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
696d43ffdSmrg
796d43ffdSmrgtimestamp='2021-08-14'
85dfecf96Smrg
9f765521fSmrg# This file is free software; you can redistribute it and/or modify it
10f765521fSmrg# under the terms of the GNU General Public License as published by
11f765521fSmrg# the Free Software Foundation; either version 3 of the License, or
125dfecf96Smrg# (at your option) any later version.
135dfecf96Smrg#
14f765521fSmrg# This program is distributed in the hope that it will be useful, but
15f765521fSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of
16f765521fSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17f765521fSmrg# General Public License for more details.
185dfecf96Smrg#
195dfecf96Smrg# You should have received a copy of the GNU General Public License
2096d43ffdSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
215dfecf96Smrg#
225dfecf96Smrg# As a special exception to the GNU General Public License, if you
235dfecf96Smrg# distribute this file as part of a program that contains a
245dfecf96Smrg# configuration script generated by Autoconf, you may include it under
25f765521fSmrg# the same distribution terms that you use for the rest of that
26f765521fSmrg# program.  This Exception is an additional permission under section 7
27f765521fSmrg# of the GNU General Public License, version 3 ("GPLv3").
285dfecf96Smrg
295dfecf96Smrg
3096d43ffdSmrg# Please send patches to <config-patches@gnu.org>.
315dfecf96Smrg#
325dfecf96Smrg# Configuration subroutine to validate and canonicalize a configuration type.
335dfecf96Smrg# Supply the specified configuration type as an argument.
345dfecf96Smrg# If it is invalid, we print an error message on stderr and exit with code 1.
355dfecf96Smrg# Otherwise, we print the canonical config type on stdout and succeed.
365dfecf96Smrg
37c05e22d7Smrg# You can get the latest version of this script from:
3896d43ffdSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
39c05e22d7Smrg
405dfecf96Smrg# This file is supposed to be the same for all GNU packages
415dfecf96Smrg# and recognize all the CPU types, system types and aliases
425dfecf96Smrg# that are meaningful with *any* GNU software.
435dfecf96Smrg# Each package is responsible for reporting which valid configurations
445dfecf96Smrg# it does not support.  The user should be able to distinguish
455dfecf96Smrg# a failure to support a valid configuration from a meaningless
465dfecf96Smrg# configuration.
475dfecf96Smrg
485dfecf96Smrg# The goal of this file is to map all the various variations of a given
495dfecf96Smrg# machine specification into a single specification in the form:
505dfecf96Smrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
515dfecf96Smrg# or in some cases, the newer four-part form:
525dfecf96Smrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
535dfecf96Smrg# It is wrong to echo any other type of specification.
545dfecf96Smrg
5596d43ffdSmrg# The "shellcheck disable" line above the timestamp inhibits complaints
5696d43ffdSmrg# about features and limitations of the classic Bourne shell that were
5796d43ffdSmrg# superseded or lifted in POSIX.  However, this script identifies a wide
5896d43ffdSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
5996d43ffdSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still
6096d43ffdSmrg# have a pre-POSIX /bin/sh.
6196d43ffdSmrg
625dfecf96Smrgme=`echo "$0" | sed -e 's,.*/,,'`
635dfecf96Smrg
645dfecf96Smrgusage="\
6596d43ffdSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
665dfecf96Smrg
675dfecf96SmrgCanonicalize a configuration name.
685dfecf96Smrg
6996d43ffdSmrgOptions:
705dfecf96Smrg  -h, --help         print this help, then exit
715dfecf96Smrg  -t, --time-stamp   print date of last modification, then exit
725dfecf96Smrg  -v, --version      print version number, then exit
735dfecf96Smrg
745dfecf96SmrgReport bugs and patches to <config-patches@gnu.org>."
755dfecf96Smrg
765dfecf96Smrgversion="\
775dfecf96SmrgGNU config.sub ($timestamp)
785dfecf96Smrg
7996d43ffdSmrgCopyright 1992-2021 Free Software Foundation, Inc.
805dfecf96Smrg
815dfecf96SmrgThis is free software; see the source for copying conditions.  There is NO
825dfecf96Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
835dfecf96Smrg
845dfecf96Smrghelp="
855dfecf96SmrgTry \`$me --help' for more information."
865dfecf96Smrg
875dfecf96Smrg# Parse command line
885dfecf96Smrgwhile test $# -gt 0 ; do
895dfecf96Smrg  case $1 in
905dfecf96Smrg    --time-stamp | --time* | -t )
915dfecf96Smrg       echo "$timestamp" ; exit ;;
925dfecf96Smrg    --version | -v )
935dfecf96Smrg       echo "$version" ; exit ;;
945dfecf96Smrg    --help | --h* | -h )
955dfecf96Smrg       echo "$usage"; exit ;;
965dfecf96Smrg    -- )     # Stop option processing
975dfecf96Smrg       shift; break ;;
985dfecf96Smrg    - )	# Use stdin as input.
995dfecf96Smrg       break ;;
1005dfecf96Smrg    -* )
10196d43ffdSmrg       echo "$me: invalid option $1$help" >&2
1025dfecf96Smrg       exit 1 ;;
1035dfecf96Smrg
1045dfecf96Smrg    *local*)
1055dfecf96Smrg       # First pass through any local machine types.
10696d43ffdSmrg       echo "$1"
1075dfecf96Smrg       exit ;;
1085dfecf96Smrg
1095dfecf96Smrg    * )
1105dfecf96Smrg       break ;;
1115dfecf96Smrg  esac
1125dfecf96Smrgdone
1135dfecf96Smrg
1145dfecf96Smrgcase $# in
1155dfecf96Smrg 0) echo "$me: missing argument$help" >&2
1165dfecf96Smrg    exit 1;;
1175dfecf96Smrg 1) ;;
1185dfecf96Smrg *) echo "$me: too many arguments$help" >&2
1195dfecf96Smrg    exit 1;;
1205dfecf96Smrgesac
1215dfecf96Smrg
12296d43ffdSmrg# Split fields of configuration type
12396d43ffdSmrg# shellcheck disable=SC2162
12496d43ffdSmrgsaved_IFS=$IFS
12596d43ffdSmrgIFS="-" read field1 field2 field3 field4 <<EOF
12696d43ffdSmrg$1
12796d43ffdSmrgEOF
12896d43ffdSmrgIFS=$saved_IFS
1295dfecf96Smrg
13096d43ffdSmrg# Separate into logical components for further validation
13196d43ffdSmrgcase $1 in
13296d43ffdSmrg	*-*-*-*-*)
13396d43ffdSmrg		echo Invalid configuration \`"$1"\': more than four components >&2
13496d43ffdSmrg		exit 1
1355dfecf96Smrg		;;
13696d43ffdSmrg	*-*-*-*)
13796d43ffdSmrg		basic_machine=$field1-$field2
13896d43ffdSmrg		basic_os=$field3-$field4
1395dfecf96Smrg		;;
14096d43ffdSmrg	*-*-*)
14196d43ffdSmrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
14296d43ffdSmrg		# parts
14396d43ffdSmrg		maybe_os=$field2-$field3
14496d43ffdSmrg		case $maybe_os in
14596d43ffdSmrg			nto-qnx* | linux-* | uclinux-uclibc* \
14696d43ffdSmrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
14796d43ffdSmrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
14896d43ffdSmrg			| storm-chaos* | os2-emx* | rtmk-nova*)
14996d43ffdSmrg				basic_machine=$field1
15096d43ffdSmrg				basic_os=$maybe_os
15196d43ffdSmrg				;;
15296d43ffdSmrg			android-linux)
15396d43ffdSmrg				basic_machine=$field1-unknown
15496d43ffdSmrg				basic_os=linux-android
15596d43ffdSmrg				;;
15696d43ffdSmrg			*)
15796d43ffdSmrg				basic_machine=$field1-$field2
15896d43ffdSmrg				basic_os=$field3
15996d43ffdSmrg				;;
16096d43ffdSmrg		esac
1615dfecf96Smrg		;;
16296d43ffdSmrg	*-*)
16396d43ffdSmrg		# A lone config we happen to match not fitting any pattern
16496d43ffdSmrg		case $field1-$field2 in
16596d43ffdSmrg			decstation-3100)
16696d43ffdSmrg				basic_machine=mips-dec
16796d43ffdSmrg				basic_os=
16896d43ffdSmrg				;;
16996d43ffdSmrg			*-*)
17096d43ffdSmrg				# Second component is usually, but not always the OS
17196d43ffdSmrg				case $field2 in
17296d43ffdSmrg					# Prevent following clause from handling this valid os
17396d43ffdSmrg					sun*os*)
17496d43ffdSmrg						basic_machine=$field1
17596d43ffdSmrg						basic_os=$field2
17696d43ffdSmrg						;;
17796d43ffdSmrg					zephyr*)
17896d43ffdSmrg						basic_machine=$field1-unknown
17996d43ffdSmrg						basic_os=$field2
18096d43ffdSmrg						;;
18196d43ffdSmrg					# Manufacturers
18296d43ffdSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
18396d43ffdSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
18496d43ffdSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
18596d43ffdSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
18696d43ffdSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
18796d43ffdSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
18896d43ffdSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
18996d43ffdSmrg					| microblaze* | sim | cisco \
19096d43ffdSmrg					| oki | wec | wrs | winbond)
19196d43ffdSmrg						basic_machine=$field1-$field2
19296d43ffdSmrg						basic_os=
19396d43ffdSmrg						;;
19496d43ffdSmrg					*)
19596d43ffdSmrg						basic_machine=$field1
19696d43ffdSmrg						basic_os=$field2
19796d43ffdSmrg						;;
19896d43ffdSmrg				esac
19996d43ffdSmrg			;;
20096d43ffdSmrg		esac
2015dfecf96Smrg		;;
20296d43ffdSmrg	*)
20396d43ffdSmrg		# Convert single-component short-hands not valid as part of
20496d43ffdSmrg		# multi-component configurations.
20596d43ffdSmrg		case $field1 in
20696d43ffdSmrg			386bsd)
20796d43ffdSmrg				basic_machine=i386-pc
20896d43ffdSmrg				basic_os=bsd
20996d43ffdSmrg				;;
21096d43ffdSmrg			a29khif)
21196d43ffdSmrg				basic_machine=a29k-amd
21296d43ffdSmrg				basic_os=udi
21396d43ffdSmrg				;;
21496d43ffdSmrg			adobe68k)
21596d43ffdSmrg				basic_machine=m68010-adobe
21696d43ffdSmrg				basic_os=scout
21796d43ffdSmrg				;;
21896d43ffdSmrg			alliant)
21996d43ffdSmrg				basic_machine=fx80-alliant
22096d43ffdSmrg				basic_os=
22196d43ffdSmrg				;;
22296d43ffdSmrg			altos | altos3068)
22396d43ffdSmrg				basic_machine=m68k-altos
22496d43ffdSmrg				basic_os=
22596d43ffdSmrg				;;
22696d43ffdSmrg			am29k)
22796d43ffdSmrg				basic_machine=a29k-none
22896d43ffdSmrg				basic_os=bsd
22996d43ffdSmrg				;;
23096d43ffdSmrg			amdahl)
23196d43ffdSmrg				basic_machine=580-amdahl
23296d43ffdSmrg				basic_os=sysv
23396d43ffdSmrg				;;
23496d43ffdSmrg			amiga)
23596d43ffdSmrg				basic_machine=m68k-unknown
23696d43ffdSmrg				basic_os=
23796d43ffdSmrg				;;
23896d43ffdSmrg			amigaos | amigados)
23996d43ffdSmrg				basic_machine=m68k-unknown
24096d43ffdSmrg				basic_os=amigaos
24196d43ffdSmrg				;;
24296d43ffdSmrg			amigaunix | amix)
24396d43ffdSmrg				basic_machine=m68k-unknown
24496d43ffdSmrg				basic_os=sysv4
24596d43ffdSmrg				;;
24696d43ffdSmrg			apollo68)
24796d43ffdSmrg				basic_machine=m68k-apollo
24896d43ffdSmrg				basic_os=sysv
24996d43ffdSmrg				;;
25096d43ffdSmrg			apollo68bsd)
25196d43ffdSmrg				basic_machine=m68k-apollo
25296d43ffdSmrg				basic_os=bsd
25396d43ffdSmrg				;;
25496d43ffdSmrg			aros)
25596d43ffdSmrg				basic_machine=i386-pc
25696d43ffdSmrg				basic_os=aros
25796d43ffdSmrg				;;
25896d43ffdSmrg			aux)
25996d43ffdSmrg				basic_machine=m68k-apple
26096d43ffdSmrg				basic_os=aux
26196d43ffdSmrg				;;
26296d43ffdSmrg			balance)
26396d43ffdSmrg				basic_machine=ns32k-sequent
26496d43ffdSmrg				basic_os=dynix
26596d43ffdSmrg				;;
26696d43ffdSmrg			blackfin)
26796d43ffdSmrg				basic_machine=bfin-unknown
26896d43ffdSmrg				basic_os=linux
26996d43ffdSmrg				;;
27096d43ffdSmrg			cegcc)
27196d43ffdSmrg				basic_machine=arm-unknown
27296d43ffdSmrg				basic_os=cegcc
27396d43ffdSmrg				;;
27496d43ffdSmrg			convex-c1)
27596d43ffdSmrg				basic_machine=c1-convex
27696d43ffdSmrg				basic_os=bsd
27796d43ffdSmrg				;;
27896d43ffdSmrg			convex-c2)
27996d43ffdSmrg				basic_machine=c2-convex
28096d43ffdSmrg				basic_os=bsd
28196d43ffdSmrg				;;
28296d43ffdSmrg			convex-c32)
28396d43ffdSmrg				basic_machine=c32-convex
28496d43ffdSmrg				basic_os=bsd
28596d43ffdSmrg				;;
28696d43ffdSmrg			convex-c34)
28796d43ffdSmrg				basic_machine=c34-convex
28896d43ffdSmrg				basic_os=bsd
28996d43ffdSmrg				;;
29096d43ffdSmrg			convex-c38)
29196d43ffdSmrg				basic_machine=c38-convex
29296d43ffdSmrg				basic_os=bsd
29396d43ffdSmrg				;;
29496d43ffdSmrg			cray)
29596d43ffdSmrg				basic_machine=j90-cray
29696d43ffdSmrg				basic_os=unicos
29796d43ffdSmrg				;;
29896d43ffdSmrg			crds | unos)
29996d43ffdSmrg				basic_machine=m68k-crds
30096d43ffdSmrg				basic_os=
30196d43ffdSmrg				;;
30296d43ffdSmrg			da30)
30396d43ffdSmrg				basic_machine=m68k-da30
30496d43ffdSmrg				basic_os=
30596d43ffdSmrg				;;
30696d43ffdSmrg			decstation | pmax | pmin | dec3100 | decstatn)
30796d43ffdSmrg				basic_machine=mips-dec
30896d43ffdSmrg				basic_os=
30996d43ffdSmrg				;;
31096d43ffdSmrg			delta88)
31196d43ffdSmrg				basic_machine=m88k-motorola
31296d43ffdSmrg				basic_os=sysv3
31396d43ffdSmrg				;;
31496d43ffdSmrg			dicos)
31596d43ffdSmrg				basic_machine=i686-pc
31696d43ffdSmrg				basic_os=dicos
31796d43ffdSmrg				;;
31896d43ffdSmrg			djgpp)
31996d43ffdSmrg				basic_machine=i586-pc
32096d43ffdSmrg				basic_os=msdosdjgpp
32196d43ffdSmrg				;;
32296d43ffdSmrg			ebmon29k)
32396d43ffdSmrg				basic_machine=a29k-amd
32496d43ffdSmrg				basic_os=ebmon
32596d43ffdSmrg				;;
32696d43ffdSmrg			es1800 | OSE68k | ose68k | ose | OSE)
32796d43ffdSmrg				basic_machine=m68k-ericsson
32896d43ffdSmrg				basic_os=ose
32996d43ffdSmrg				;;
33096d43ffdSmrg			gmicro)
33196d43ffdSmrg				basic_machine=tron-gmicro
33296d43ffdSmrg				basic_os=sysv
33396d43ffdSmrg				;;
33496d43ffdSmrg			go32)
33596d43ffdSmrg				basic_machine=i386-pc
33696d43ffdSmrg				basic_os=go32
33796d43ffdSmrg				;;
33896d43ffdSmrg			h8300hms)
33996d43ffdSmrg				basic_machine=h8300-hitachi
34096d43ffdSmrg				basic_os=hms
34196d43ffdSmrg				;;
34296d43ffdSmrg			h8300xray)
34396d43ffdSmrg				basic_machine=h8300-hitachi
34496d43ffdSmrg				basic_os=xray
34596d43ffdSmrg				;;
34696d43ffdSmrg			h8500hms)
34796d43ffdSmrg				basic_machine=h8500-hitachi
34896d43ffdSmrg				basic_os=hms
34996d43ffdSmrg				;;
35096d43ffdSmrg			harris)
35196d43ffdSmrg				basic_machine=m88k-harris
35296d43ffdSmrg				basic_os=sysv3
35396d43ffdSmrg				;;
35496d43ffdSmrg			hp300 | hp300hpux)
35596d43ffdSmrg				basic_machine=m68k-hp
35696d43ffdSmrg				basic_os=hpux
35796d43ffdSmrg				;;
35896d43ffdSmrg			hp300bsd)
35996d43ffdSmrg				basic_machine=m68k-hp
36096d43ffdSmrg				basic_os=bsd
36196d43ffdSmrg				;;
36296d43ffdSmrg			hppaosf)
36396d43ffdSmrg				basic_machine=hppa1.1-hp
36496d43ffdSmrg				basic_os=osf
36596d43ffdSmrg				;;
36696d43ffdSmrg			hppro)
36796d43ffdSmrg				basic_machine=hppa1.1-hp
36896d43ffdSmrg				basic_os=proelf
36996d43ffdSmrg				;;
37096d43ffdSmrg			i386mach)
37196d43ffdSmrg				basic_machine=i386-mach
37296d43ffdSmrg				basic_os=mach
37396d43ffdSmrg				;;
37496d43ffdSmrg			isi68 | isi)
37596d43ffdSmrg				basic_machine=m68k-isi
37696d43ffdSmrg				basic_os=sysv
37796d43ffdSmrg				;;
37896d43ffdSmrg			m68knommu)
37996d43ffdSmrg				basic_machine=m68k-unknown
38096d43ffdSmrg				basic_os=linux
38196d43ffdSmrg				;;
38296d43ffdSmrg			magnum | m3230)
38396d43ffdSmrg				basic_machine=mips-mips
38496d43ffdSmrg				basic_os=sysv
38596d43ffdSmrg				;;
38696d43ffdSmrg			merlin)
38796d43ffdSmrg				basic_machine=ns32k-utek
38896d43ffdSmrg				basic_os=sysv
38996d43ffdSmrg				;;
39096d43ffdSmrg			mingw64)
39196d43ffdSmrg				basic_machine=x86_64-pc
39296d43ffdSmrg				basic_os=mingw64
39396d43ffdSmrg				;;
39496d43ffdSmrg			mingw32)
39596d43ffdSmrg				basic_machine=i686-pc
39696d43ffdSmrg				basic_os=mingw32
39796d43ffdSmrg				;;
39896d43ffdSmrg			mingw32ce)
39996d43ffdSmrg				basic_machine=arm-unknown
40096d43ffdSmrg				basic_os=mingw32ce
40196d43ffdSmrg				;;
40296d43ffdSmrg			monitor)
40396d43ffdSmrg				basic_machine=m68k-rom68k
40496d43ffdSmrg				basic_os=coff
40596d43ffdSmrg				;;
40696d43ffdSmrg			morphos)
40796d43ffdSmrg				basic_machine=powerpc-unknown
40896d43ffdSmrg				basic_os=morphos
40996d43ffdSmrg				;;
41096d43ffdSmrg			moxiebox)
41196d43ffdSmrg				basic_machine=moxie-unknown
41296d43ffdSmrg				basic_os=moxiebox
41396d43ffdSmrg				;;
41496d43ffdSmrg			msdos)
41596d43ffdSmrg				basic_machine=i386-pc
41696d43ffdSmrg				basic_os=msdos
41796d43ffdSmrg				;;
41896d43ffdSmrg			msys)
41996d43ffdSmrg				basic_machine=i686-pc
42096d43ffdSmrg				basic_os=msys
42196d43ffdSmrg				;;
42296d43ffdSmrg			mvs)
42396d43ffdSmrg				basic_machine=i370-ibm
42496d43ffdSmrg				basic_os=mvs
42596d43ffdSmrg				;;
42696d43ffdSmrg			nacl)
42796d43ffdSmrg				basic_machine=le32-unknown
42896d43ffdSmrg				basic_os=nacl
42996d43ffdSmrg				;;
43096d43ffdSmrg			ncr3000)
43196d43ffdSmrg				basic_machine=i486-ncr
43296d43ffdSmrg				basic_os=sysv4
43396d43ffdSmrg				;;
43496d43ffdSmrg			netbsd386)
43596d43ffdSmrg				basic_machine=i386-pc
43696d43ffdSmrg				basic_os=netbsd
43796d43ffdSmrg				;;
43896d43ffdSmrg			netwinder)
43996d43ffdSmrg				basic_machine=armv4l-rebel
44096d43ffdSmrg				basic_os=linux
44196d43ffdSmrg				;;
44296d43ffdSmrg			news | news700 | news800 | news900)
44396d43ffdSmrg				basic_machine=m68k-sony
44496d43ffdSmrg				basic_os=newsos
44596d43ffdSmrg				;;
44696d43ffdSmrg			news1000)
44796d43ffdSmrg				basic_machine=m68030-sony
44896d43ffdSmrg				basic_os=newsos
44996d43ffdSmrg				;;
45096d43ffdSmrg			necv70)
45196d43ffdSmrg				basic_machine=v70-nec
45296d43ffdSmrg				basic_os=sysv
45396d43ffdSmrg				;;
45496d43ffdSmrg			nh3000)
45596d43ffdSmrg				basic_machine=m68k-harris
45696d43ffdSmrg				basic_os=cxux
45796d43ffdSmrg				;;
45896d43ffdSmrg			nh[45]000)
45996d43ffdSmrg				basic_machine=m88k-harris
46096d43ffdSmrg				basic_os=cxux
46196d43ffdSmrg				;;
46296d43ffdSmrg			nindy960)
46396d43ffdSmrg				basic_machine=i960-intel
46496d43ffdSmrg				basic_os=nindy
46596d43ffdSmrg				;;
46696d43ffdSmrg			mon960)
46796d43ffdSmrg				basic_machine=i960-intel
46896d43ffdSmrg				basic_os=mon960
46996d43ffdSmrg				;;
47096d43ffdSmrg			nonstopux)
47196d43ffdSmrg				basic_machine=mips-compaq
47296d43ffdSmrg				basic_os=nonstopux
47396d43ffdSmrg				;;
47496d43ffdSmrg			os400)
47596d43ffdSmrg				basic_machine=powerpc-ibm
47696d43ffdSmrg				basic_os=os400
47796d43ffdSmrg				;;
47896d43ffdSmrg			OSE68000 | ose68000)
47996d43ffdSmrg				basic_machine=m68000-ericsson
48096d43ffdSmrg				basic_os=ose
48196d43ffdSmrg				;;
48296d43ffdSmrg			os68k)
48396d43ffdSmrg				basic_machine=m68k-none
48496d43ffdSmrg				basic_os=os68k
48596d43ffdSmrg				;;
48696d43ffdSmrg			paragon)
48796d43ffdSmrg				basic_machine=i860-intel
48896d43ffdSmrg				basic_os=osf
48996d43ffdSmrg				;;
49096d43ffdSmrg			parisc)
49196d43ffdSmrg				basic_machine=hppa-unknown
49296d43ffdSmrg				basic_os=linux
49396d43ffdSmrg				;;
49496d43ffdSmrg			psp)
49596d43ffdSmrg				basic_machine=mipsallegrexel-sony
49696d43ffdSmrg				basic_os=psp
49796d43ffdSmrg				;;
49896d43ffdSmrg			pw32)
49996d43ffdSmrg				basic_machine=i586-unknown
50096d43ffdSmrg				basic_os=pw32
50196d43ffdSmrg				;;
50296d43ffdSmrg			rdos | rdos64)
50396d43ffdSmrg				basic_machine=x86_64-pc
50496d43ffdSmrg				basic_os=rdos
50596d43ffdSmrg				;;
50696d43ffdSmrg			rdos32)
50796d43ffdSmrg				basic_machine=i386-pc
50896d43ffdSmrg				basic_os=rdos
50996d43ffdSmrg				;;
51096d43ffdSmrg			rom68k)
51196d43ffdSmrg				basic_machine=m68k-rom68k
51296d43ffdSmrg				basic_os=coff
51396d43ffdSmrg				;;
51496d43ffdSmrg			sa29200)
51596d43ffdSmrg				basic_machine=a29k-amd
51696d43ffdSmrg				basic_os=udi
51796d43ffdSmrg				;;
51896d43ffdSmrg			sei)
51996d43ffdSmrg				basic_machine=mips-sei
52096d43ffdSmrg				basic_os=seiux
52196d43ffdSmrg				;;
52296d43ffdSmrg			sequent)
52396d43ffdSmrg				basic_machine=i386-sequent
52496d43ffdSmrg				basic_os=
52596d43ffdSmrg				;;
52696d43ffdSmrg			sps7)
52796d43ffdSmrg				basic_machine=m68k-bull
52896d43ffdSmrg				basic_os=sysv2
52996d43ffdSmrg				;;
53096d43ffdSmrg			st2000)
53196d43ffdSmrg				basic_machine=m68k-tandem
53296d43ffdSmrg				basic_os=
53396d43ffdSmrg				;;
53496d43ffdSmrg			stratus)
53596d43ffdSmrg				basic_machine=i860-stratus
53696d43ffdSmrg				basic_os=sysv4
53796d43ffdSmrg				;;
53896d43ffdSmrg			sun2)
53996d43ffdSmrg				basic_machine=m68000-sun
54096d43ffdSmrg				basic_os=
54196d43ffdSmrg				;;
54296d43ffdSmrg			sun2os3)
54396d43ffdSmrg				basic_machine=m68000-sun
54496d43ffdSmrg				basic_os=sunos3
54596d43ffdSmrg				;;
54696d43ffdSmrg			sun2os4)
54796d43ffdSmrg				basic_machine=m68000-sun
54896d43ffdSmrg				basic_os=sunos4
54996d43ffdSmrg				;;
55096d43ffdSmrg			sun3)
55196d43ffdSmrg				basic_machine=m68k-sun
55296d43ffdSmrg				basic_os=
55396d43ffdSmrg				;;
55496d43ffdSmrg			sun3os3)
55596d43ffdSmrg				basic_machine=m68k-sun
55696d43ffdSmrg				basic_os=sunos3
55796d43ffdSmrg				;;
55896d43ffdSmrg			sun3os4)
55996d43ffdSmrg				basic_machine=m68k-sun
56096d43ffdSmrg				basic_os=sunos4
56196d43ffdSmrg				;;
56296d43ffdSmrg			sun4)
56396d43ffdSmrg				basic_machine=sparc-sun
56496d43ffdSmrg				basic_os=
56596d43ffdSmrg				;;
56696d43ffdSmrg			sun4os3)
56796d43ffdSmrg				basic_machine=sparc-sun
56896d43ffdSmrg				basic_os=sunos3
56996d43ffdSmrg				;;
57096d43ffdSmrg			sun4os4)
57196d43ffdSmrg				basic_machine=sparc-sun
57296d43ffdSmrg				basic_os=sunos4
57396d43ffdSmrg				;;
57496d43ffdSmrg			sun4sol2)
57596d43ffdSmrg				basic_machine=sparc-sun
57696d43ffdSmrg				basic_os=solaris2
57796d43ffdSmrg				;;
57896d43ffdSmrg			sun386 | sun386i | roadrunner)
57996d43ffdSmrg				basic_machine=i386-sun
58096d43ffdSmrg				basic_os=
58196d43ffdSmrg				;;
58296d43ffdSmrg			sv1)
58396d43ffdSmrg				basic_machine=sv1-cray
58496d43ffdSmrg				basic_os=unicos
58596d43ffdSmrg				;;
58696d43ffdSmrg			symmetry)
58796d43ffdSmrg				basic_machine=i386-sequent
58896d43ffdSmrg				basic_os=dynix
58996d43ffdSmrg				;;
59096d43ffdSmrg			t3e)
59196d43ffdSmrg				basic_machine=alphaev5-cray
59296d43ffdSmrg				basic_os=unicos
59396d43ffdSmrg				;;
59496d43ffdSmrg			t90)
59596d43ffdSmrg				basic_machine=t90-cray
59696d43ffdSmrg				basic_os=unicos
59796d43ffdSmrg				;;
59896d43ffdSmrg			toad1)
59996d43ffdSmrg				basic_machine=pdp10-xkl
60096d43ffdSmrg				basic_os=tops20
60196d43ffdSmrg				;;
60296d43ffdSmrg			tpf)
60396d43ffdSmrg				basic_machine=s390x-ibm
60496d43ffdSmrg				basic_os=tpf
60596d43ffdSmrg				;;
60696d43ffdSmrg			udi29k)
60796d43ffdSmrg				basic_machine=a29k-amd
60896d43ffdSmrg				basic_os=udi
60996d43ffdSmrg				;;
61096d43ffdSmrg			ultra3)
61196d43ffdSmrg				basic_machine=a29k-nyu
61296d43ffdSmrg				basic_os=sym1
61396d43ffdSmrg				;;
61496d43ffdSmrg			v810 | necv810)
61596d43ffdSmrg				basic_machine=v810-nec
61696d43ffdSmrg				basic_os=none
61796d43ffdSmrg				;;
61896d43ffdSmrg			vaxv)
61996d43ffdSmrg				basic_machine=vax-dec
62096d43ffdSmrg				basic_os=sysv
62196d43ffdSmrg				;;
62296d43ffdSmrg			vms)
62396d43ffdSmrg				basic_machine=vax-dec
62496d43ffdSmrg				basic_os=vms
62596d43ffdSmrg				;;
62696d43ffdSmrg			vsta)
62796d43ffdSmrg				basic_machine=i386-pc
62896d43ffdSmrg				basic_os=vsta
62996d43ffdSmrg				;;
63096d43ffdSmrg			vxworks960)
63196d43ffdSmrg				basic_machine=i960-wrs
63296d43ffdSmrg				basic_os=vxworks
63396d43ffdSmrg				;;
63496d43ffdSmrg			vxworks68)
63596d43ffdSmrg				basic_machine=m68k-wrs
63696d43ffdSmrg				basic_os=vxworks
63796d43ffdSmrg				;;
63896d43ffdSmrg			vxworks29k)
63996d43ffdSmrg				basic_machine=a29k-wrs
64096d43ffdSmrg				basic_os=vxworks
64196d43ffdSmrg				;;
64296d43ffdSmrg			xbox)
64396d43ffdSmrg				basic_machine=i686-pc
64496d43ffdSmrg				basic_os=mingw32
64596d43ffdSmrg				;;
64696d43ffdSmrg			ymp)
64796d43ffdSmrg				basic_machine=ymp-cray
64896d43ffdSmrg				basic_os=unicos
64996d43ffdSmrg				;;
65096d43ffdSmrg			*)
65196d43ffdSmrg				basic_machine=$1
65296d43ffdSmrg				basic_os=
65396d43ffdSmrg				;;
65496d43ffdSmrg		esac
6555dfecf96Smrg		;;
6565dfecf96Smrgesac
6575dfecf96Smrg
65896d43ffdSmrg# Decode 1-component or ad-hoc basic machines
6595dfecf96Smrgcase $basic_machine in
66096d43ffdSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
66196d43ffdSmrg	# some cases the only manufacturer, in others, it is the most popular.
66296d43ffdSmrg	w89k)
66396d43ffdSmrg		cpu=hppa1.1
66496d43ffdSmrg		vendor=winbond
665f14f4646Smrg		;;
66696d43ffdSmrg	op50n)
66796d43ffdSmrg		cpu=hppa1.1
66896d43ffdSmrg		vendor=oki
66931de2854Smrg		;;
67096d43ffdSmrg	op60c)
67196d43ffdSmrg		cpu=hppa1.1
67296d43ffdSmrg		vendor=oki
673f765521fSmrg		;;
67496d43ffdSmrg	ibm*)
67596d43ffdSmrg		cpu=i370
67696d43ffdSmrg		vendor=ibm
67731de2854Smrg		;;
67896d43ffdSmrg	orion105)
67996d43ffdSmrg		cpu=clipper
68096d43ffdSmrg		vendor=highlevel
68131de2854Smrg		;;
68296d43ffdSmrg	mac | mpw | mac-mpw)
68396d43ffdSmrg		cpu=m68k
68496d43ffdSmrg		vendor=apple
6855dfecf96Smrg		;;
68696d43ffdSmrg	pmac | pmac-mpw)
68796d43ffdSmrg		cpu=powerpc
68896d43ffdSmrg		vendor=apple
6895dfecf96Smrg		;;
69096d43ffdSmrg
6915dfecf96Smrg	# Recognize the various machine names and aliases which stand
6925dfecf96Smrg	# for a CPU type and a company and sometimes even an OS.
6935dfecf96Smrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
69496d43ffdSmrg		cpu=m68000
69596d43ffdSmrg		vendor=att
6965dfecf96Smrg		;;
6975dfecf96Smrg	3b*)
69896d43ffdSmrg		cpu=we32k
69996d43ffdSmrg		vendor=att
700f14f4646Smrg		;;
701c05e22d7Smrg	bluegene*)
70296d43ffdSmrg		cpu=powerpc
70396d43ffdSmrg		vendor=ibm
70496d43ffdSmrg		basic_os=cnk
7055dfecf96Smrg		;;
7065dfecf96Smrg	decsystem10* | dec10*)
70796d43ffdSmrg		cpu=pdp10
70896d43ffdSmrg		vendor=dec
70996d43ffdSmrg		basic_os=tops10
7105dfecf96Smrg		;;
7115dfecf96Smrg	decsystem20* | dec20*)
71296d43ffdSmrg		cpu=pdp10
71396d43ffdSmrg		vendor=dec
71496d43ffdSmrg		basic_os=tops20
7155dfecf96Smrg		;;
7165dfecf96Smrg	delta | 3300 | motorola-3300 | motorola-delta \
7175dfecf96Smrg	      | 3300-motorola | delta-motorola)
71896d43ffdSmrg		cpu=m68k
71996d43ffdSmrg		vendor=motorola
7205dfecf96Smrg		;;
72196d43ffdSmrg	dpx2*)
72296d43ffdSmrg		cpu=m68k
72396d43ffdSmrg		vendor=bull
72496d43ffdSmrg		basic_os=sysv3
7255dfecf96Smrg		;;
7265dfecf96Smrg	encore | umax | mmax)
72796d43ffdSmrg		cpu=ns32k
72896d43ffdSmrg		vendor=encore
7295dfecf96Smrg		;;
73096d43ffdSmrg	elxsi)
73196d43ffdSmrg		cpu=elxsi
73296d43ffdSmrg		vendor=elxsi
73396d43ffdSmrg		basic_os=${basic_os:-bsd}
7345dfecf96Smrg		;;
7355dfecf96Smrg	fx2800)
73696d43ffdSmrg		cpu=i860
73796d43ffdSmrg		vendor=alliant
7385dfecf96Smrg		;;
7395dfecf96Smrg	genix)
74096d43ffdSmrg		cpu=ns32k
74196d43ffdSmrg		vendor=ns
7425dfecf96Smrg		;;
7435dfecf96Smrg	h3050r* | hiux*)
74496d43ffdSmrg		cpu=hppa1.1
74596d43ffdSmrg		vendor=hitachi
74696d43ffdSmrg		basic_os=hiuxwe2
7475dfecf96Smrg		;;
7485dfecf96Smrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
74996d43ffdSmrg		cpu=hppa1.0
75096d43ffdSmrg		vendor=hp
7515dfecf96Smrg		;;
7525dfecf96Smrg	hp9k2[0-9][0-9] | hp9k31[0-9])
75396d43ffdSmrg		cpu=m68000
75496d43ffdSmrg		vendor=hp
7555dfecf96Smrg		;;
7565dfecf96Smrg	hp9k3[2-9][0-9])
75796d43ffdSmrg		cpu=m68k
75896d43ffdSmrg		vendor=hp
7595dfecf96Smrg		;;
7605dfecf96Smrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
76196d43ffdSmrg		cpu=hppa1.0
76296d43ffdSmrg		vendor=hp
7635dfecf96Smrg		;;
7645dfecf96Smrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
76596d43ffdSmrg		cpu=hppa1.1
76696d43ffdSmrg		vendor=hp
7675dfecf96Smrg		;;
7685dfecf96Smrg	hp9k78[0-9] | hp78[0-9])
7695dfecf96Smrg		# FIXME: really hppa2.0-hp
77096d43ffdSmrg		cpu=hppa1.1
77196d43ffdSmrg		vendor=hp
7725dfecf96Smrg		;;
7735dfecf96Smrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
7745dfecf96Smrg		# FIXME: really hppa2.0-hp
77596d43ffdSmrg		cpu=hppa1.1
77696d43ffdSmrg		vendor=hp
7775dfecf96Smrg		;;
7785dfecf96Smrg	hp9k8[0-9][13679] | hp8[0-9][13679])
77996d43ffdSmrg		cpu=hppa1.1
78096d43ffdSmrg		vendor=hp
7815dfecf96Smrg		;;
7825dfecf96Smrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
78396d43ffdSmrg		cpu=hppa1.0
78496d43ffdSmrg		vendor=hp
7855dfecf96Smrg		;;
7865dfecf96Smrg	i*86v32)
78796d43ffdSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
78896d43ffdSmrg		vendor=pc
78996d43ffdSmrg		basic_os=sysv32
7905dfecf96Smrg		;;
7915dfecf96Smrg	i*86v4*)
79296d43ffdSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79396d43ffdSmrg		vendor=pc
79496d43ffdSmrg		basic_os=sysv4
7955dfecf96Smrg		;;
7965dfecf96Smrg	i*86v)
79796d43ffdSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
79896d43ffdSmrg		vendor=pc
79996d43ffdSmrg		basic_os=sysv
8005dfecf96Smrg		;;
8015dfecf96Smrg	i*86sol2)
80296d43ffdSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
80396d43ffdSmrg		vendor=pc
80496d43ffdSmrg		basic_os=solaris2
8055dfecf96Smrg		;;
80696d43ffdSmrg	j90 | j90-cray)
80796d43ffdSmrg		cpu=j90
80896d43ffdSmrg		vendor=cray
80996d43ffdSmrg		basic_os=${basic_os:-unicos}
8105dfecf96Smrg		;;
8115dfecf96Smrg	iris | iris4d)
81296d43ffdSmrg		cpu=mips
81396d43ffdSmrg		vendor=sgi
81496d43ffdSmrg		case $basic_os in
81596d43ffdSmrg		    irix*)
8165dfecf96Smrg			;;
8175dfecf96Smrg		    *)
81896d43ffdSmrg			basic_os=irix4
8195dfecf96Smrg			;;
8205dfecf96Smrg		esac
8215dfecf96Smrg		;;
8225dfecf96Smrg	miniframe)
82396d43ffdSmrg		cpu=m68000
82496d43ffdSmrg		vendor=convergent
8255dfecf96Smrg		;;
82696d43ffdSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
82796d43ffdSmrg		cpu=m68k
82896d43ffdSmrg		vendor=atari
82996d43ffdSmrg		basic_os=mint
8305dfecf96Smrg		;;
8315dfecf96Smrg	news-3600 | risc-news)
83296d43ffdSmrg		cpu=mips
83396d43ffdSmrg		vendor=sony
83496d43ffdSmrg		basic_os=newsos
83596d43ffdSmrg		;;
83696d43ffdSmrg	next | m*-next)
83796d43ffdSmrg		cpu=m68k
83896d43ffdSmrg		vendor=next
83996d43ffdSmrg		case $basic_os in
84096d43ffdSmrg		    openstep*)
84196d43ffdSmrg		        ;;
84296d43ffdSmrg		    nextstep*)
8435dfecf96Smrg			;;
84496d43ffdSmrg		    ns2*)
84596d43ffdSmrg		      basic_os=nextstep2
8465dfecf96Smrg			;;
8475dfecf96Smrg		    *)
84896d43ffdSmrg		      basic_os=nextstep3
8495dfecf96Smrg			;;
8505dfecf96Smrg		esac
8515dfecf96Smrg		;;
8525dfecf96Smrg	np1)
85396d43ffdSmrg		cpu=np1
85496d43ffdSmrg		vendor=gould
8555dfecf96Smrg		;;
8565dfecf96Smrg	op50n-* | op60c-*)
85796d43ffdSmrg		cpu=hppa1.1
85896d43ffdSmrg		vendor=oki
85996d43ffdSmrg		basic_os=proelf
8605dfecf96Smrg		;;
8615dfecf96Smrg	pa-hitachi)
86296d43ffdSmrg		cpu=hppa1.1
86396d43ffdSmrg		vendor=hitachi
86496d43ffdSmrg		basic_os=hiuxwe2
865f14f4646Smrg		;;
8665dfecf96Smrg	pbd)
86796d43ffdSmrg		cpu=sparc
86896d43ffdSmrg		vendor=tti
8695dfecf96Smrg		;;
8705dfecf96Smrg	pbb)
87196d43ffdSmrg		cpu=m68k
87296d43ffdSmrg		vendor=tti
8735dfecf96Smrg		;;
87496d43ffdSmrg	pc532)
87596d43ffdSmrg		cpu=ns32k
87696d43ffdSmrg		vendor=pc532
8775dfecf96Smrg		;;
8785dfecf96Smrg	pn)
87996d43ffdSmrg		cpu=pn
88096d43ffdSmrg		vendor=gould
8815dfecf96Smrg		;;
88296d43ffdSmrg	power)
88396d43ffdSmrg		cpu=power
88496d43ffdSmrg		vendor=ibm
8855dfecf96Smrg		;;
8865dfecf96Smrg	ps2)
88796d43ffdSmrg		cpu=i386
88896d43ffdSmrg		vendor=ibm
8895dfecf96Smrg		;;
8905dfecf96Smrg	rm[46]00)
89196d43ffdSmrg		cpu=mips
89296d43ffdSmrg		vendor=siemens
8935dfecf96Smrg		;;
8945dfecf96Smrg	rtpc | rtpc-*)
89596d43ffdSmrg		cpu=romp
89696d43ffdSmrg		vendor=ibm
8975dfecf96Smrg		;;
89896d43ffdSmrg	sde)
89996d43ffdSmrg		cpu=mipsisa32
90096d43ffdSmrg		vendor=sde
90196d43ffdSmrg		basic_os=${basic_os:-elf}
9025dfecf96Smrg		;;
90396d43ffdSmrg	simso-wrs)
90496d43ffdSmrg		cpu=sparclite
90596d43ffdSmrg		vendor=wrs
90696d43ffdSmrg		basic_os=vxworks
9075dfecf96Smrg		;;
90896d43ffdSmrg	tower | tower-32)
90996d43ffdSmrg		cpu=m68k
91096d43ffdSmrg		vendor=ncr
911f14f4646Smrg		;;
91296d43ffdSmrg	vpp*|vx|vx-*)
91396d43ffdSmrg		cpu=f301
91496d43ffdSmrg		vendor=fujitsu
9155dfecf96Smrg		;;
91696d43ffdSmrg	w65)
91796d43ffdSmrg		cpu=w65
91896d43ffdSmrg		vendor=wdc
9195dfecf96Smrg		;;
92096d43ffdSmrg	w89k-*)
92196d43ffdSmrg		cpu=hppa1.1
92296d43ffdSmrg		vendor=winbond
92396d43ffdSmrg		basic_os=proelf
9245dfecf96Smrg		;;
92596d43ffdSmrg	none)
92696d43ffdSmrg		cpu=none
92796d43ffdSmrg		vendor=none
928f14f4646Smrg		;;
92996d43ffdSmrg	leon|leon[3-9])
93096d43ffdSmrg		cpu=sparc
93196d43ffdSmrg		vendor=$basic_machine
9325dfecf96Smrg		;;
93396d43ffdSmrg	leon-*|leon[3-9]-*)
93496d43ffdSmrg		cpu=sparc
93596d43ffdSmrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
9365dfecf96Smrg		;;
93796d43ffdSmrg
93896d43ffdSmrg	*-*)
93996d43ffdSmrg		# shellcheck disable=SC2162
94096d43ffdSmrg		saved_IFS=$IFS
94196d43ffdSmrg		IFS="-" read cpu vendor <<EOF
94296d43ffdSmrg$basic_machine
94396d43ffdSmrgEOF
94496d43ffdSmrg		IFS=$saved_IFS
9455dfecf96Smrg		;;
94696d43ffdSmrg	# We use `pc' rather than `unknown'
94796d43ffdSmrg	# because (1) that's what they normally are, and
94896d43ffdSmrg	# (2) the word "unknown" tends to confuse beginning users.
94996d43ffdSmrg	i*86 | x86_64)
95096d43ffdSmrg		cpu=$basic_machine
95196d43ffdSmrg		vendor=pc
9525dfecf96Smrg		;;
95396d43ffdSmrg	# These rules are duplicated from below for sake of the special case above;
95496d43ffdSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
95596d43ffdSmrg	pc98)
95696d43ffdSmrg		cpu=i386
95796d43ffdSmrg		vendor=pc
9585dfecf96Smrg		;;
95996d43ffdSmrg	x64 | amd64)
96096d43ffdSmrg		cpu=x86_64
96196d43ffdSmrg		vendor=pc
9625dfecf96Smrg		;;
96396d43ffdSmrg	# Recognize the basic CPU types without company name.
96496d43ffdSmrg	*)
96596d43ffdSmrg		cpu=$basic_machine
96696d43ffdSmrg		vendor=unknown
96731de2854Smrg		;;
96896d43ffdSmrgesac
96996d43ffdSmrg
97096d43ffdSmrgunset -v basic_machine
97196d43ffdSmrg
97296d43ffdSmrg# Decode basic machines in the full and proper CPU-Company form.
97396d43ffdSmrgcase $cpu-$vendor in
97496d43ffdSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
97596d43ffdSmrg	# some cases the only manufacturer, in others, it is the most popular.
97696d43ffdSmrg	craynv-unknown)
97796d43ffdSmrg		vendor=cray
97896d43ffdSmrg		basic_os=${basic_os:-unicosmp}
9795dfecf96Smrg		;;
98096d43ffdSmrg	c90-unknown | c90-cray)
98196d43ffdSmrg		vendor=cray
98296d43ffdSmrg		basic_os=${Basic_os:-unicos}
9835dfecf96Smrg		;;
98496d43ffdSmrg	fx80-unknown)
98596d43ffdSmrg		vendor=alliant
9865dfecf96Smrg		;;
98796d43ffdSmrg	romp-unknown)
98896d43ffdSmrg		vendor=ibm
9895dfecf96Smrg		;;
99096d43ffdSmrg	mmix-unknown)
99196d43ffdSmrg		vendor=knuth
9925dfecf96Smrg		;;
99396d43ffdSmrg	microblaze-unknown | microblazeel-unknown)
99496d43ffdSmrg		vendor=xilinx
9955dfecf96Smrg		;;
99696d43ffdSmrg	rs6000-unknown)
99796d43ffdSmrg		vendor=ibm
9985dfecf96Smrg		;;
99996d43ffdSmrg	vax-unknown)
100096d43ffdSmrg		vendor=dec
10015dfecf96Smrg		;;
100296d43ffdSmrg	pdp11-unknown)
100396d43ffdSmrg		vendor=dec
10045dfecf96Smrg		;;
100596d43ffdSmrg	we32k-unknown)
100696d43ffdSmrg		vendor=att
10075dfecf96Smrg		;;
100896d43ffdSmrg	cydra-unknown)
100996d43ffdSmrg		vendor=cydrome
10105dfecf96Smrg		;;
101196d43ffdSmrg	i370-ibm*)
101296d43ffdSmrg		vendor=ibm
10135dfecf96Smrg		;;
101496d43ffdSmrg	orion-unknown)
101596d43ffdSmrg		vendor=highlevel
10165dfecf96Smrg		;;
101796d43ffdSmrg	xps-unknown | xps100-unknown)
101896d43ffdSmrg		cpu=xps100
101996d43ffdSmrg		vendor=honeywell
10205dfecf96Smrg		;;
102196d43ffdSmrg
102296d43ffdSmrg	# Here we normalize CPU types with a missing or matching vendor
102396d43ffdSmrg	dpx20-unknown | dpx20-bull)
102496d43ffdSmrg		cpu=rs6000
102596d43ffdSmrg		vendor=bull
102696d43ffdSmrg		basic_os=${basic_os:-bosx}
10275dfecf96Smrg		;;
102896d43ffdSmrg
102996d43ffdSmrg	# Here we normalize CPU types irrespective of the vendor
103096d43ffdSmrg	amd64-*)
103196d43ffdSmrg		cpu=x86_64
1032f14f4646Smrg		;;
103396d43ffdSmrg	blackfin-*)
103496d43ffdSmrg		cpu=bfin
103596d43ffdSmrg		basic_os=linux
10365dfecf96Smrg		;;
103796d43ffdSmrg	c54x-*)
103896d43ffdSmrg		cpu=tic54x
10395dfecf96Smrg		;;
104096d43ffdSmrg	c55x-*)
104196d43ffdSmrg		cpu=tic55x
10425dfecf96Smrg		;;
104396d43ffdSmrg	c6x-*)
104496d43ffdSmrg		cpu=tic6x
10455dfecf96Smrg		;;
104696d43ffdSmrg	e500v[12]-*)
104796d43ffdSmrg		cpu=powerpc
104896d43ffdSmrg		basic_os=${basic_os}"spe"
10495dfecf96Smrg		;;
105096d43ffdSmrg	mips3*-*)
105196d43ffdSmrg		cpu=mips64
10525dfecf96Smrg		;;
105396d43ffdSmrg	ms1-*)
105496d43ffdSmrg		cpu=mt
10555dfecf96Smrg		;;
105696d43ffdSmrg	m68knommu-*)
105796d43ffdSmrg		cpu=m68k
105896d43ffdSmrg		basic_os=linux
10595dfecf96Smrg		;;
106096d43ffdSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
106196d43ffdSmrg		cpu=s12z
10625dfecf96Smrg		;;
106396d43ffdSmrg	openrisc-*)
106496d43ffdSmrg		cpu=or32
10655dfecf96Smrg		;;
106696d43ffdSmrg	parisc-*)
106796d43ffdSmrg		cpu=hppa
106896d43ffdSmrg		basic_os=linux
10695dfecf96Smrg		;;
107096d43ffdSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
107196d43ffdSmrg		cpu=i586
10725dfecf96Smrg		;;
107396d43ffdSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
107496d43ffdSmrg		cpu=i686
10755dfecf96Smrg		;;
107696d43ffdSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
107796d43ffdSmrg		cpu=i686
10785dfecf96Smrg		;;
107996d43ffdSmrg	pentium4-*)
108096d43ffdSmrg		cpu=i786
10815dfecf96Smrg		;;
108296d43ffdSmrg	pc98-*)
108396d43ffdSmrg		cpu=i386
10845dfecf96Smrg		;;
108596d43ffdSmrg	ppc-* | ppcbe-*)
108696d43ffdSmrg		cpu=powerpc
10875dfecf96Smrg		;;
108896d43ffdSmrg	ppcle-* | powerpclittle-*)
108996d43ffdSmrg		cpu=powerpcle
10905dfecf96Smrg		;;
109196d43ffdSmrg	ppc64-*)
109296d43ffdSmrg		cpu=powerpc64
109331de2854Smrg		;;
109496d43ffdSmrg	ppc64le-* | powerpc64little-*)
109596d43ffdSmrg		cpu=powerpc64le
10965dfecf96Smrg		;;
109796d43ffdSmrg	sb1-*)
109896d43ffdSmrg		cpu=mipsisa64sb1
10995dfecf96Smrg		;;
110096d43ffdSmrg	sb1el-*)
110196d43ffdSmrg		cpu=mipsisa64sb1el
1102c05e22d7Smrg		;;
110396d43ffdSmrg	sh5e[lb]-*)
110496d43ffdSmrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
11055dfecf96Smrg		;;
110696d43ffdSmrg	spur-*)
110796d43ffdSmrg		cpu=spur
11085dfecf96Smrg		;;
110996d43ffdSmrg	strongarm-* | thumb-*)
111096d43ffdSmrg		cpu=arm
11115dfecf96Smrg		;;
111296d43ffdSmrg	tx39-*)
111396d43ffdSmrg		cpu=mipstx39
11145dfecf96Smrg		;;
111596d43ffdSmrg	tx39el-*)
111696d43ffdSmrg		cpu=mipstx39el
11175dfecf96Smrg		;;
111896d43ffdSmrg	x64-*)
111996d43ffdSmrg		cpu=x86_64
11205dfecf96Smrg		;;
112196d43ffdSmrg	xscale-* | xscalee[bl]-*)
112296d43ffdSmrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
11235dfecf96Smrg		;;
112496d43ffdSmrg	arm64-*)
112596d43ffdSmrg		cpu=aarch64
11265dfecf96Smrg		;;
112796d43ffdSmrg
112896d43ffdSmrg	# Recognize the canonical CPU Types that limit and/or modify the
112996d43ffdSmrg	# company names they are paired with.
113096d43ffdSmrg	cr16-*)
113196d43ffdSmrg		basic_os=${basic_os:-elf}
11325dfecf96Smrg		;;
113396d43ffdSmrg	crisv32-* | etraxfs*-*)
113496d43ffdSmrg		cpu=crisv32
113596d43ffdSmrg		vendor=axis
11365dfecf96Smrg		;;
113796d43ffdSmrg	cris-* | etrax*-*)
113896d43ffdSmrg		cpu=cris
113996d43ffdSmrg		vendor=axis
11405dfecf96Smrg		;;
114196d43ffdSmrg	crx-*)
114296d43ffdSmrg		basic_os=${basic_os:-elf}
11435dfecf96Smrg		;;
114496d43ffdSmrg	neo-tandem)
114596d43ffdSmrg		cpu=neo
114696d43ffdSmrg		vendor=tandem
11475dfecf96Smrg		;;
114896d43ffdSmrg	nse-tandem)
114996d43ffdSmrg		cpu=nse
115096d43ffdSmrg		vendor=tandem
11515dfecf96Smrg		;;
115296d43ffdSmrg	nsr-tandem)
115396d43ffdSmrg		cpu=nsr
115496d43ffdSmrg		vendor=tandem
11555dfecf96Smrg		;;
115696d43ffdSmrg	nsv-tandem)
115796d43ffdSmrg		cpu=nsv
115896d43ffdSmrg		vendor=tandem
11595dfecf96Smrg		;;
116096d43ffdSmrg	nsx-tandem)
116196d43ffdSmrg		cpu=nsx
116296d43ffdSmrg		vendor=tandem
11635dfecf96Smrg		;;
116496d43ffdSmrg	mipsallegrexel-sony)
116596d43ffdSmrg		cpu=mipsallegrexel
116696d43ffdSmrg		vendor=sony
11675dfecf96Smrg		;;
116896d43ffdSmrg	tile*-*)
116996d43ffdSmrg		basic_os=${basic_os:-linux-gnu}
11705dfecf96Smrg		;;
117196d43ffdSmrg
11725dfecf96Smrg	*)
117396d43ffdSmrg		# Recognize the canonical CPU types that are allowed with any
117496d43ffdSmrg		# company name.
117596d43ffdSmrg		case $cpu in
117696d43ffdSmrg			1750a | 580 \
117796d43ffdSmrg			| a29k \
117896d43ffdSmrg			| aarch64 | aarch64_be \
117996d43ffdSmrg			| abacus \
118096d43ffdSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
118196d43ffdSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
118296d43ffdSmrg			| alphapca5[67] | alpha64pca5[67] \
118396d43ffdSmrg			| am33_2.0 \
118496d43ffdSmrg			| amdgcn \
118596d43ffdSmrg			| arc | arceb | arc32 | arc64 \
118696d43ffdSmrg			| arm | arm[lb]e | arme[lb] | armv* \
118796d43ffdSmrg			| avr | avr32 \
118896d43ffdSmrg			| asmjs \
118996d43ffdSmrg			| ba \
119096d43ffdSmrg			| be32 | be64 \
119196d43ffdSmrg			| bfin | bpf | bs2000 \
119296d43ffdSmrg			| c[123]* | c30 | [cjt]90 | c4x \
119396d43ffdSmrg			| c8051 | clipper | craynv | csky | cydra \
119496d43ffdSmrg			| d10v | d30v | dlx | dsp16xx \
119596d43ffdSmrg			| e2k | elxsi | epiphany \
119696d43ffdSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
119796d43ffdSmrg			| h8300 | h8500 \
119896d43ffdSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
119996d43ffdSmrg			| hexagon \
120096d43ffdSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
120196d43ffdSmrg			| ip2k | iq2000 \
120296d43ffdSmrg			| k1om \
120396d43ffdSmrg			| le32 | le64 \
120496d43ffdSmrg			| lm32 \
120596d43ffdSmrg			| loongarch32 | loongarch64 | loongarchx32 \
120696d43ffdSmrg			| m32c | m32r | m32rle \
120796d43ffdSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
120896d43ffdSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
120996d43ffdSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
121096d43ffdSmrg			| microblaze | microblazeel \
121196d43ffdSmrg			| mips | mipsbe | mipseb | mipsel | mipsle \
121296d43ffdSmrg			| mips16 \
121396d43ffdSmrg			| mips64 | mips64eb | mips64el \
121496d43ffdSmrg			| mips64octeon | mips64octeonel \
121596d43ffdSmrg			| mips64orion | mips64orionel \
121696d43ffdSmrg			| mips64r5900 | mips64r5900el \
121796d43ffdSmrg			| mips64vr | mips64vrel \
121896d43ffdSmrg			| mips64vr4100 | mips64vr4100el \
121996d43ffdSmrg			| mips64vr4300 | mips64vr4300el \
122096d43ffdSmrg			| mips64vr5000 | mips64vr5000el \
122196d43ffdSmrg			| mips64vr5900 | mips64vr5900el \
122296d43ffdSmrg			| mipsisa32 | mipsisa32el \
122396d43ffdSmrg			| mipsisa32r2 | mipsisa32r2el \
122496d43ffdSmrg			| mipsisa32r3 | mipsisa32r3el \
122596d43ffdSmrg			| mipsisa32r5 | mipsisa32r5el \
122696d43ffdSmrg			| mipsisa32r6 | mipsisa32r6el \
122796d43ffdSmrg			| mipsisa64 | mipsisa64el \
122896d43ffdSmrg			| mipsisa64r2 | mipsisa64r2el \
122996d43ffdSmrg			| mipsisa64r3 | mipsisa64r3el \
123096d43ffdSmrg			| mipsisa64r5 | mipsisa64r5el \
123196d43ffdSmrg			| mipsisa64r6 | mipsisa64r6el \
123296d43ffdSmrg			| mipsisa64sb1 | mipsisa64sb1el \
123396d43ffdSmrg			| mipsisa64sr71k | mipsisa64sr71kel \
123496d43ffdSmrg			| mipsr5900 | mipsr5900el \
123596d43ffdSmrg			| mipstx39 | mipstx39el \
123696d43ffdSmrg			| mmix \
123796d43ffdSmrg			| mn10200 | mn10300 \
123896d43ffdSmrg			| moxie \
123996d43ffdSmrg			| mt \
124096d43ffdSmrg			| msp430 \
124196d43ffdSmrg			| nds32 | nds32le | nds32be \
124296d43ffdSmrg			| nfp \
124396d43ffdSmrg			| nios | nios2 | nios2eb | nios2el \
124496d43ffdSmrg			| none | np1 | ns16k | ns32k | nvptx \
124596d43ffdSmrg			| open8 \
124696d43ffdSmrg			| or1k* \
124796d43ffdSmrg			| or32 \
124896d43ffdSmrg			| orion \
124996d43ffdSmrg			| picochip \
125096d43ffdSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
125196d43ffdSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
125296d43ffdSmrg			| pru \
125396d43ffdSmrg			| pyramid \
125496d43ffdSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
125596d43ffdSmrg			| rl78 | romp | rs6000 | rx \
125696d43ffdSmrg			| s390 | s390x \
125796d43ffdSmrg			| score \
125896d43ffdSmrg			| sh | shl \
125996d43ffdSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
126096d43ffdSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
126196d43ffdSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
126296d43ffdSmrg			| sparclite \
126396d43ffdSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
126496d43ffdSmrg			| spu \
126596d43ffdSmrg			| tahoe \
126696d43ffdSmrg			| thumbv7* \
126796d43ffdSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
126896d43ffdSmrg			| tron \
126996d43ffdSmrg			| ubicom32 \
127096d43ffdSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
127196d43ffdSmrg			| vax \
127296d43ffdSmrg			| visium \
127396d43ffdSmrg			| w65 \
127496d43ffdSmrg			| wasm32 | wasm64 \
127596d43ffdSmrg			| we32k \
127696d43ffdSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
127796d43ffdSmrg			| xstormy16 | xtensa* \
127896d43ffdSmrg			| ymp \
127996d43ffdSmrg			| z8k | z80)
128096d43ffdSmrg				;;
128196d43ffdSmrg
128296d43ffdSmrg			*)
128396d43ffdSmrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
128496d43ffdSmrg				exit 1
128596d43ffdSmrg				;;
128696d43ffdSmrg		esac
12875dfecf96Smrg		;;
12885dfecf96Smrgesac
12895dfecf96Smrg
12905dfecf96Smrg# Here we canonicalize certain aliases for manufacturers.
129196d43ffdSmrgcase $vendor in
129296d43ffdSmrg	digital*)
129396d43ffdSmrg		vendor=dec
12945dfecf96Smrg		;;
129596d43ffdSmrg	commodore*)
129696d43ffdSmrg		vendor=cbm
12975dfecf96Smrg		;;
12985dfecf96Smrg	*)
12995dfecf96Smrg		;;
13005dfecf96Smrgesac
13015dfecf96Smrg
13025dfecf96Smrg# Decode manufacturer-specific aliases for certain operating systems.
13035dfecf96Smrg
130496d43ffdSmrgif test x$basic_os != x
13055dfecf96Smrgthen
130696d43ffdSmrg
130796d43ffdSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
130896d43ffdSmrg# set os.
130996d43ffdSmrgcase $basic_os in
131096d43ffdSmrg	gnu/linux*)
131196d43ffdSmrg		kernel=linux
131296d43ffdSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
131396d43ffdSmrg		;;
131496d43ffdSmrg	os2-emx)
131596d43ffdSmrg		kernel=os2
131696d43ffdSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
131796d43ffdSmrg		;;
131896d43ffdSmrg	nto-qnx*)
131996d43ffdSmrg		kernel=nto
132096d43ffdSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
132196d43ffdSmrg		;;
132296d43ffdSmrg	*-*)
132396d43ffdSmrg		# shellcheck disable=SC2162
132496d43ffdSmrg		saved_IFS=$IFS
132596d43ffdSmrg		IFS="-" read kernel os <<EOF
132696d43ffdSmrg$basic_os
132796d43ffdSmrgEOF
132896d43ffdSmrg		IFS=$saved_IFS
132996d43ffdSmrg		;;
133096d43ffdSmrg	# Default OS when just kernel was specified
133196d43ffdSmrg	nto*)
133296d43ffdSmrg		kernel=nto
133396d43ffdSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
133496d43ffdSmrg		;;
133596d43ffdSmrg	linux*)
133696d43ffdSmrg		kernel=linux
133796d43ffdSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
133896d43ffdSmrg		;;
133996d43ffdSmrg	*)
134096d43ffdSmrg		kernel=
134196d43ffdSmrg		os=$basic_os
134296d43ffdSmrg		;;
134396d43ffdSmrgesac
134496d43ffdSmrg
134596d43ffdSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
134696d43ffdSmrg# etc.)
13475dfecf96Smrgcase $os in
134896d43ffdSmrg	# First match some system type aliases that might get confused
134996d43ffdSmrg	# with valid system types.
135096d43ffdSmrg	# solaris* is a basic system type, with this one exception.
135196d43ffdSmrg	auroraux)
135296d43ffdSmrg		os=auroraux
1353c05e22d7Smrg		;;
135496d43ffdSmrg	bluegene*)
135596d43ffdSmrg		os=cnk
13565dfecf96Smrg		;;
135796d43ffdSmrg	solaris1 | solaris1.*)
135896d43ffdSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
13595dfecf96Smrg		;;
136096d43ffdSmrg	solaris)
136196d43ffdSmrg		os=solaris2
13625dfecf96Smrg		;;
136396d43ffdSmrg	unixware*)
136496d43ffdSmrg		os=sysv4.2uw
13655dfecf96Smrg		;;
136696d43ffdSmrg	# es1800 is here to avoid being matched by es* (a different OS)
136796d43ffdSmrg	es1800*)
136896d43ffdSmrg		os=ose
13695dfecf96Smrg		;;
137096d43ffdSmrg	# Some version numbers need modification
137196d43ffdSmrg	chorusos*)
137296d43ffdSmrg		os=chorusos
13735dfecf96Smrg		;;
137496d43ffdSmrg	isc)
137596d43ffdSmrg		os=isc2.2
13765dfecf96Smrg		;;
137796d43ffdSmrg	sco6)
137896d43ffdSmrg		os=sco5v6
13795dfecf96Smrg		;;
138096d43ffdSmrg	sco5)
138196d43ffdSmrg		os=sco3.2v5
13825dfecf96Smrg		;;
138396d43ffdSmrg	sco4)
138496d43ffdSmrg		os=sco3.2v4
13855dfecf96Smrg		;;
138696d43ffdSmrg	sco3.2.[4-9]*)
138796d43ffdSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
13885dfecf96Smrg		;;
138996d43ffdSmrg	sco*v* | scout)
139096d43ffdSmrg		# Don't match below
13915dfecf96Smrg		;;
139296d43ffdSmrg	sco*)
139396d43ffdSmrg		os=sco3.2v2
13945dfecf96Smrg		;;
139596d43ffdSmrg	psos*)
139696d43ffdSmrg		os=psos
13975dfecf96Smrg		;;
139896d43ffdSmrg	qnx*)
139996d43ffdSmrg		os=qnx
14005dfecf96Smrg		;;
140196d43ffdSmrg	hiux*)
140296d43ffdSmrg		os=hiuxwe2
14035dfecf96Smrg		;;
140496d43ffdSmrg	lynx*178)
140596d43ffdSmrg		os=lynxos178
14065dfecf96Smrg		;;
140796d43ffdSmrg	lynx*5)
140896d43ffdSmrg		os=lynxos5
14095dfecf96Smrg		;;
141096d43ffdSmrg	lynxos*)
141196d43ffdSmrg		# don't get caught up in next wildcard
14125dfecf96Smrg		;;
141396d43ffdSmrg	lynx*)
141496d43ffdSmrg		os=lynxos
14155dfecf96Smrg		;;
141696d43ffdSmrg	mac[0-9]*)
141796d43ffdSmrg		os=`echo "$os" | sed -e 's|mac|macos|'`
14185dfecf96Smrg		;;
141996d43ffdSmrg	opened*)
142096d43ffdSmrg		os=openedition
14215dfecf96Smrg		;;
142296d43ffdSmrg	os400*)
142396d43ffdSmrg		os=os400
14245dfecf96Smrg		;;
142596d43ffdSmrg	sunos5*)
142696d43ffdSmrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
14275dfecf96Smrg		;;
142896d43ffdSmrg	sunos6*)
142996d43ffdSmrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
14305dfecf96Smrg		;;
143196d43ffdSmrg	wince*)
143296d43ffdSmrg		os=wince
14335dfecf96Smrg		;;
143496d43ffdSmrg	utek*)
143596d43ffdSmrg		os=bsd
14365dfecf96Smrg		;;
143796d43ffdSmrg	dynix*)
143896d43ffdSmrg		os=bsd
14395dfecf96Smrg		;;
144096d43ffdSmrg	acis*)
144196d43ffdSmrg		os=aos
14425dfecf96Smrg		;;
144396d43ffdSmrg	atheos*)
144496d43ffdSmrg		os=atheos
14455dfecf96Smrg		;;
144696d43ffdSmrg	syllable*)
144796d43ffdSmrg		os=syllable
14485dfecf96Smrg		;;
144996d43ffdSmrg	386bsd)
145096d43ffdSmrg		os=bsd
14515dfecf96Smrg		;;
145296d43ffdSmrg	ctix* | uts*)
145396d43ffdSmrg		os=sysv
14545dfecf96Smrg		;;
145596d43ffdSmrg	nova*)
145696d43ffdSmrg		os=rtmk-nova
14575dfecf96Smrg		;;
145896d43ffdSmrg	ns2)
145996d43ffdSmrg		os=nextstep2
14605dfecf96Smrg		;;
146196d43ffdSmrg	# Preserve the version number of sinix5.
146296d43ffdSmrg	sinix5.*)
146396d43ffdSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
14645dfecf96Smrg		;;
146596d43ffdSmrg	sinix*)
146696d43ffdSmrg		os=sysv4
14675dfecf96Smrg		;;
146896d43ffdSmrg	tpf*)
146996d43ffdSmrg		os=tpf
14705dfecf96Smrg		;;
147196d43ffdSmrg	triton*)
147296d43ffdSmrg		os=sysv3
14735dfecf96Smrg		;;
147496d43ffdSmrg	oss*)
147596d43ffdSmrg		os=sysv3
14765dfecf96Smrg		;;
147796d43ffdSmrg	svr4*)
147896d43ffdSmrg		os=sysv4
14795dfecf96Smrg		;;
148096d43ffdSmrg	svr3)
148196d43ffdSmrg		os=sysv3
14825dfecf96Smrg		;;
148396d43ffdSmrg	sysvr4)
148496d43ffdSmrg		os=sysv4
14855dfecf96Smrg		;;
148696d43ffdSmrg	ose*)
148796d43ffdSmrg		os=ose
14885dfecf96Smrg		;;
148996d43ffdSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
149096d43ffdSmrg		os=mint
1491c05e22d7Smrg		;;
149296d43ffdSmrg	dicos*)
149396d43ffdSmrg		os=dicos
149431de2854Smrg		;;
149596d43ffdSmrg	pikeos*)
149696d43ffdSmrg		# Until real need of OS specific support for
149796d43ffdSmrg		# particular features comes up, bare metal
149896d43ffdSmrg		# configurations are quite functional.
149996d43ffdSmrg		case $cpu in
150096d43ffdSmrg		    arm*)
150196d43ffdSmrg			os=eabi
150296d43ffdSmrg			;;
150396d43ffdSmrg		    *)
150496d43ffdSmrg			os=elf
150596d43ffdSmrg			;;
150696d43ffdSmrg		esac
15075dfecf96Smrg		;;
15085dfecf96Smrg	*)
150996d43ffdSmrg		# No normalization, but not necessarily accepted, that comes below.
15105dfecf96Smrg		;;
15115dfecf96Smrgesac
151296d43ffdSmrg
15135dfecf96Smrgelse
15145dfecf96Smrg
15155dfecf96Smrg# Here we handle the default operating systems that come with various machines.
15165dfecf96Smrg# The value should be what the vendor currently ships out the door with their
15175dfecf96Smrg# machine or put another way, the most popular os provided with the machine.
15185dfecf96Smrg
15195dfecf96Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
15205dfecf96Smrg# "-sun"), then you have to tell the case statement up towards the top
15215dfecf96Smrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
15225dfecf96Smrg# will signal an error saying that MANUFACTURER isn't an operating
15235dfecf96Smrg# system, and we'll never get to this point.
15245dfecf96Smrg
152596d43ffdSmrgkernel=
152696d43ffdSmrgcase $cpu-$vendor in
152731de2854Smrg	score-*)
152896d43ffdSmrg		os=elf
1529f14f4646Smrg		;;
153031de2854Smrg	spu-*)
153196d43ffdSmrg		os=elf
1532f14f4646Smrg		;;
15335dfecf96Smrg	*-acorn)
153496d43ffdSmrg		os=riscix1.2
15355dfecf96Smrg		;;
15365dfecf96Smrg	arm*-rebel)
153796d43ffdSmrg		kernel=linux
153896d43ffdSmrg		os=gnu
15395dfecf96Smrg		;;
15405dfecf96Smrg	arm*-semi)
154196d43ffdSmrg		os=aout
15425dfecf96Smrg		;;
154331de2854Smrg	c4x-* | tic4x-*)
154496d43ffdSmrg		os=coff
1545f14f4646Smrg		;;
1546f765521fSmrg	c8051-*)
154796d43ffdSmrg		os=elf
154896d43ffdSmrg		;;
154996d43ffdSmrg	clipper-intergraph)
155096d43ffdSmrg		os=clix
1551f765521fSmrg		;;
1552f765521fSmrg	hexagon-*)
155396d43ffdSmrg		os=elf
1554f765521fSmrg		;;
1555c05e22d7Smrg	tic54x-*)
155696d43ffdSmrg		os=coff
1557c05e22d7Smrg		;;
1558c05e22d7Smrg	tic55x-*)
155996d43ffdSmrg		os=coff
1560c05e22d7Smrg		;;
1561c05e22d7Smrg	tic6x-*)
156296d43ffdSmrg		os=coff
1563c05e22d7Smrg		;;
15645dfecf96Smrg	# This must come before the *-dec entry.
15655dfecf96Smrg	pdp10-*)
156696d43ffdSmrg		os=tops20
15675dfecf96Smrg		;;
15685dfecf96Smrg	pdp11-*)
156996d43ffdSmrg		os=none
15705dfecf96Smrg		;;
15715dfecf96Smrg	*-dec | vax-*)
157296d43ffdSmrg		os=ultrix4.2
15735dfecf96Smrg		;;
15745dfecf96Smrg	m68*-apollo)
157596d43ffdSmrg		os=domain
15765dfecf96Smrg		;;
15775dfecf96Smrg	i386-sun)
157896d43ffdSmrg		os=sunos4.0.2
15795dfecf96Smrg		;;
15805dfecf96Smrg	m68000-sun)
158196d43ffdSmrg		os=sunos3
15825dfecf96Smrg		;;
15835dfecf96Smrg	m68*-cisco)
158496d43ffdSmrg		os=aout
15855dfecf96Smrg		;;
158631de2854Smrg	mep-*)
158796d43ffdSmrg		os=elf
1588f14f4646Smrg		;;
15895dfecf96Smrg	mips*-cisco)
159096d43ffdSmrg		os=elf
15915dfecf96Smrg		;;
15925dfecf96Smrg	mips*-*)
159396d43ffdSmrg		os=elf
1594f765521fSmrg		;;
15955dfecf96Smrg	or32-*)
159696d43ffdSmrg		os=coff
15975dfecf96Smrg		;;
15985dfecf96Smrg	*-tti)	# must be before sparc entry or we get the wrong os.
159996d43ffdSmrg		os=sysv3
16005dfecf96Smrg		;;
16015dfecf96Smrg	sparc-* | *-sun)
160296d43ffdSmrg		os=sunos4.1.1
16035dfecf96Smrg		;;
160496d43ffdSmrg	pru-*)
160596d43ffdSmrg		os=elf
16065dfecf96Smrg		;;
160796d43ffdSmrg	*-be)
160896d43ffdSmrg		os=beos
16095dfecf96Smrg		;;
16105dfecf96Smrg	*-ibm)
161196d43ffdSmrg		os=aix
16125dfecf96Smrg		;;
161331de2854Smrg	*-knuth)
161496d43ffdSmrg		os=mmixware
16155dfecf96Smrg		;;
16165dfecf96Smrg	*-wec)
161796d43ffdSmrg		os=proelf
16185dfecf96Smrg		;;
16195dfecf96Smrg	*-winbond)
162096d43ffdSmrg		os=proelf
16215dfecf96Smrg		;;
16225dfecf96Smrg	*-oki)
162396d43ffdSmrg		os=proelf
16245dfecf96Smrg		;;
16255dfecf96Smrg	*-hp)
162696d43ffdSmrg		os=hpux
16275dfecf96Smrg		;;
16285dfecf96Smrg	*-hitachi)
162996d43ffdSmrg		os=hiux
16305dfecf96Smrg		;;
16315dfecf96Smrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
163296d43ffdSmrg		os=sysv
16335dfecf96Smrg		;;
16345dfecf96Smrg	*-cbm)
163596d43ffdSmrg		os=amigaos
16365dfecf96Smrg		;;
16375dfecf96Smrg	*-dg)
163896d43ffdSmrg		os=dgux
16395dfecf96Smrg		;;
16405dfecf96Smrg	*-dolphin)
164196d43ffdSmrg		os=sysv3
16425dfecf96Smrg		;;
16435dfecf96Smrg	m68k-ccur)
164496d43ffdSmrg		os=rtu
16455dfecf96Smrg		;;
16465dfecf96Smrg	m88k-omron*)
164796d43ffdSmrg		os=luna
16485dfecf96Smrg		;;
164996d43ffdSmrg	*-next)
165096d43ffdSmrg		os=nextstep
16515dfecf96Smrg		;;
16525dfecf96Smrg	*-sequent)
165396d43ffdSmrg		os=ptx
16545dfecf96Smrg		;;
16555dfecf96Smrg	*-crds)
165696d43ffdSmrg		os=unos
16575dfecf96Smrg		;;
16585dfecf96Smrg	*-ns)
165996d43ffdSmrg		os=genix
16605dfecf96Smrg		;;
16615dfecf96Smrg	i370-*)
166296d43ffdSmrg		os=mvs
16635dfecf96Smrg		;;
16645dfecf96Smrg	*-gould)
166596d43ffdSmrg		os=sysv
16665dfecf96Smrg		;;
16675dfecf96Smrg	*-highlevel)
166896d43ffdSmrg		os=bsd
16695dfecf96Smrg		;;
16705dfecf96Smrg	*-encore)
167196d43ffdSmrg		os=bsd
16725dfecf96Smrg		;;
16735dfecf96Smrg	*-sgi)
167496d43ffdSmrg		os=irix
16755dfecf96Smrg		;;
16765dfecf96Smrg	*-siemens)
167796d43ffdSmrg		os=sysv4
16785dfecf96Smrg		;;
16795dfecf96Smrg	*-masscomp)
168096d43ffdSmrg		os=rtu
16815dfecf96Smrg		;;
16825dfecf96Smrg	f30[01]-fujitsu | f700-fujitsu)
168396d43ffdSmrg		os=uxpv
16845dfecf96Smrg		;;
16855dfecf96Smrg	*-rom68k)
168696d43ffdSmrg		os=coff
16875dfecf96Smrg		;;
16885dfecf96Smrg	*-*bug)
168996d43ffdSmrg		os=coff
16905dfecf96Smrg		;;
16915dfecf96Smrg	*-apple)
169296d43ffdSmrg		os=macos
16935dfecf96Smrg		;;
16945dfecf96Smrg	*-atari*)
169596d43ffdSmrg		os=mint
169696d43ffdSmrg		;;
169796d43ffdSmrg	*-wrs)
169896d43ffdSmrg		os=vxworks
16995dfecf96Smrg		;;
17005dfecf96Smrg	*)
170196d43ffdSmrg		os=none
17025dfecf96Smrg		;;
17035dfecf96Smrgesac
170496d43ffdSmrg
17055dfecf96Smrgfi
17065dfecf96Smrg
170796d43ffdSmrg# Now, validate our (potentially fixed-up) OS.
170896d43ffdSmrgcase $os in
170996d43ffdSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
171096d43ffdSmrg	musl* | newlib* | relibc* | uclibc*)
171196d43ffdSmrg		;;
171296d43ffdSmrg	# Likewise for "kernel-abi"
171396d43ffdSmrg	eabi* | gnueabi*)
171496d43ffdSmrg		;;
171596d43ffdSmrg	# VxWorks passes extra cpu info in the 4th filed.
171696d43ffdSmrg	simlinux | simwindows | spe)
171796d43ffdSmrg		;;
171896d43ffdSmrg	# Now accept the basic system types.
171996d43ffdSmrg	# The portable systems comes first.
172096d43ffdSmrg	# Each alternative MUST end in a * to match a version number.
172196d43ffdSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
172296d43ffdSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
172396d43ffdSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
172496d43ffdSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
172596d43ffdSmrg	     | hiux* | abug | nacl* | netware* | windows* \
172696d43ffdSmrg	     | os9* | macos* | osx* | ios* \
172796d43ffdSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
172896d43ffdSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
172996d43ffdSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
173096d43ffdSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
173196d43ffdSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
173296d43ffdSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
173396d43ffdSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
173496d43ffdSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
173596d43ffdSmrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
173696d43ffdSmrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
173796d43ffdSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
173896d43ffdSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
173996d43ffdSmrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
174096d43ffdSmrg	     | midipix* | mingw32* | mingw64* | mint* \
174196d43ffdSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
174296d43ffdSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
174396d43ffdSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
174496d43ffdSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
174596d43ffdSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
174696d43ffdSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
174796d43ffdSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
174896d43ffdSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
174996d43ffdSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
175096d43ffdSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
175196d43ffdSmrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*)
175296d43ffdSmrg		;;
175396d43ffdSmrg	# This one is extra strict with allowed versions
175496d43ffdSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
175596d43ffdSmrg		# Don't forget version if it is 3.2v4 or newer.
175696d43ffdSmrg		;;
175796d43ffdSmrg	none)
175896d43ffdSmrg		;;
175996d43ffdSmrg	*)
176096d43ffdSmrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
176196d43ffdSmrg		exit 1
176296d43ffdSmrg		;;
176396d43ffdSmrgesac
176496d43ffdSmrg
176596d43ffdSmrg# As a final step for OS-related things, validate the OS-kernel combination
176696d43ffdSmrg# (given a valid OS), if there is a kernel.
176796d43ffdSmrgcase $kernel-$os in
176896d43ffdSmrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
176996d43ffdSmrg		   | linux-musl* | linux-relibc* | linux-uclibc* )
177096d43ffdSmrg		;;
177196d43ffdSmrg	uclinux-uclibc* )
177296d43ffdSmrg		;;
177396d43ffdSmrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
177496d43ffdSmrg		# These are just libc implementations, not actual OSes, and thus
177596d43ffdSmrg		# require a kernel.
177696d43ffdSmrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
177796d43ffdSmrg		exit 1
177896d43ffdSmrg		;;
177996d43ffdSmrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
178096d43ffdSmrg		;;
178196d43ffdSmrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
178296d43ffdSmrg		;;
178396d43ffdSmrg	nto-qnx*)
178496d43ffdSmrg		;;
178596d43ffdSmrg	os2-emx)
178696d43ffdSmrg		;;
178796d43ffdSmrg	*-eabi* | *-gnueabi*)
178896d43ffdSmrg		;;
178996d43ffdSmrg	-*)
179096d43ffdSmrg		# Blank kernel with real OS is always fine.
179196d43ffdSmrg		;;
179296d43ffdSmrg	*-*)
179396d43ffdSmrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
179496d43ffdSmrg		exit 1
179596d43ffdSmrg		;;
179696d43ffdSmrgesac
179796d43ffdSmrg
17985dfecf96Smrg# Here we handle the case where we know the os, and the CPU type, but not the
17995dfecf96Smrg# manufacturer.  We pick the logical manufacturer.
180096d43ffdSmrgcase $vendor in
180196d43ffdSmrg	unknown)
180296d43ffdSmrg		case $cpu-$os in
180396d43ffdSmrg			*-riscix*)
18045dfecf96Smrg				vendor=acorn
18055dfecf96Smrg				;;
180696d43ffdSmrg			*-sunos*)
18075dfecf96Smrg				vendor=sun
18085dfecf96Smrg				;;
180996d43ffdSmrg			*-cnk* | *-aix*)
18105dfecf96Smrg				vendor=ibm
18115dfecf96Smrg				;;
181296d43ffdSmrg			*-beos*)
18135dfecf96Smrg				vendor=be
18145dfecf96Smrg				;;
181596d43ffdSmrg			*-hpux*)
18165dfecf96Smrg				vendor=hp
18175dfecf96Smrg				;;
181896d43ffdSmrg			*-mpeix*)
18195dfecf96Smrg				vendor=hp
18205dfecf96Smrg				;;
182196d43ffdSmrg			*-hiux*)
18225dfecf96Smrg				vendor=hitachi
18235dfecf96Smrg				;;
182496d43ffdSmrg			*-unos*)
18255dfecf96Smrg				vendor=crds
18265dfecf96Smrg				;;
182796d43ffdSmrg			*-dgux*)
18285dfecf96Smrg				vendor=dg
18295dfecf96Smrg				;;
183096d43ffdSmrg			*-luna*)
18315dfecf96Smrg				vendor=omron
18325dfecf96Smrg				;;
183396d43ffdSmrg			*-genix*)
18345dfecf96Smrg				vendor=ns
18355dfecf96Smrg				;;
183696d43ffdSmrg			*-clix*)
183796d43ffdSmrg				vendor=intergraph
183896d43ffdSmrg				;;
183996d43ffdSmrg			*-mvs* | *-opened*)
184096d43ffdSmrg				vendor=ibm
184196d43ffdSmrg				;;
184296d43ffdSmrg			*-os400*)
18435dfecf96Smrg				vendor=ibm
18445dfecf96Smrg				;;
184596d43ffdSmrg			s390-* | s390x-*)
18465dfecf96Smrg				vendor=ibm
18475dfecf96Smrg				;;
184896d43ffdSmrg			*-ptx*)
18495dfecf96Smrg				vendor=sequent
18505dfecf96Smrg				;;
185196d43ffdSmrg			*-tpf*)
18525dfecf96Smrg				vendor=ibm
18535dfecf96Smrg				;;
185496d43ffdSmrg			*-vxsim* | *-vxworks* | *-windiss*)
18555dfecf96Smrg				vendor=wrs
18565dfecf96Smrg				;;
185796d43ffdSmrg			*-aux*)
18585dfecf96Smrg				vendor=apple
18595dfecf96Smrg				;;
186096d43ffdSmrg			*-hms*)
18615dfecf96Smrg				vendor=hitachi
18625dfecf96Smrg				;;
186396d43ffdSmrg			*-mpw* | *-macos*)
18645dfecf96Smrg				vendor=apple
18655dfecf96Smrg				;;
186696d43ffdSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
18675dfecf96Smrg				vendor=atari
18685dfecf96Smrg				;;
186996d43ffdSmrg			*-vos*)
18705dfecf96Smrg				vendor=stratus
18715dfecf96Smrg				;;
18725dfecf96Smrg		esac
18735dfecf96Smrg		;;
18745dfecf96Smrgesac
18755dfecf96Smrg
187696d43ffdSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
18775dfecf96Smrgexit
18785dfecf96Smrg
18795dfecf96Smrg# Local variables:
188096d43ffdSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
18815dfecf96Smrg# time-stamp-start: "timestamp='"
18825dfecf96Smrg# time-stamp-format: "%:y-%02m-%02d"
18835dfecf96Smrg# time-stamp-end: "'"
18845dfecf96Smrg# End:
1885