1ab47cfaaSmrg#! /bin/sh
2ab47cfaaSmrg# Configuration validation subroutine script.
32b2b4fcbSmrg#   Copyright 1992-2023 Free Software Foundation, Inc.
4ab47cfaaSmrg
52b2b4fcbSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
62b2b4fcbSmrg
72b2b4fcbSmrgtimestamp='2023-01-21'
8ab47cfaaSmrg
91e449e82Smrg# This file is free software; you can redistribute it and/or modify it
101e449e82Smrg# under the terms of the GNU General Public License as published by
112b2b4fcbSmrg# the Free Software Foundation, either version 3 of the License, or
12ab47cfaaSmrg# (at your option) any later version.
13ab47cfaaSmrg#
141e449e82Smrg# This program is distributed in the hope that it will be useful, but
151e449e82Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
161e449e82Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
171e449e82Smrg# General Public License for more details.
18ab47cfaaSmrg#
19ab47cfaaSmrg# You should have received a copy of the GNU General Public License
202b2b4fcbSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
21ab47cfaaSmrg#
22ab47cfaaSmrg# As a special exception to the GNU General Public License, if you
23ab47cfaaSmrg# distribute this file as part of a program that contains a
24ab47cfaaSmrg# configuration script generated by Autoconf, you may include it under
251e449e82Smrg# the same distribution terms that you use for the rest of that
261e449e82Smrg# program.  This Exception is an additional permission under section 7
271e449e82Smrg# of the GNU General Public License, version 3 ("GPLv3").
28ab47cfaaSmrg
29ab47cfaaSmrg
30300bf1aeSmrg# Please send patches to <config-patches@gnu.org>.
31ab47cfaaSmrg#
32ab47cfaaSmrg# Configuration subroutine to validate and canonicalize a configuration type.
33ab47cfaaSmrg# Supply the specified configuration type as an argument.
34ab47cfaaSmrg# If it is invalid, we print an error message on stderr and exit with code 1.
35ab47cfaaSmrg# Otherwise, we print the canonical config type on stdout and succeed.
36ab47cfaaSmrg
376aec45a7Smrg# You can get the latest version of this script from:
382b2b4fcbSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
396aec45a7Smrg
40ab47cfaaSmrg# This file is supposed to be the same for all GNU packages
41ab47cfaaSmrg# and recognize all the CPU types, system types and aliases
42ab47cfaaSmrg# that are meaningful with *any* GNU software.
43ab47cfaaSmrg# Each package is responsible for reporting which valid configurations
44ab47cfaaSmrg# it does not support.  The user should be able to distinguish
45ab47cfaaSmrg# a failure to support a valid configuration from a meaningless
46ab47cfaaSmrg# configuration.
47ab47cfaaSmrg
48ab47cfaaSmrg# The goal of this file is to map all the various variations of a given
49ab47cfaaSmrg# machine specification into a single specification in the form:
50ab47cfaaSmrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
51ab47cfaaSmrg# or in some cases, the newer four-part form:
52ab47cfaaSmrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
53ab47cfaaSmrg# It is wrong to echo any other type of specification.
54ab47cfaaSmrg
552b2b4fcbSmrg# The "shellcheck disable" line above the timestamp inhibits complaints
562b2b4fcbSmrg# about features and limitations of the classic Bourne shell that were
572b2b4fcbSmrg# superseded or lifted in POSIX.  However, this script identifies a wide
582b2b4fcbSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
592b2b4fcbSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still
602b2b4fcbSmrg# have a pre-POSIX /bin/sh.
612b2b4fcbSmrg
62ab47cfaaSmrgme=`echo "$0" | sed -e 's,.*/,,'`
63ab47cfaaSmrg
64ab47cfaaSmrgusage="\
65300bf1aeSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
66ab47cfaaSmrg
67ab47cfaaSmrgCanonicalize a configuration name.
68ab47cfaaSmrg
692b2b4fcbSmrgOptions:
70ab47cfaaSmrg  -h, --help         print this help, then exit
71ab47cfaaSmrg  -t, --time-stamp   print date of last modification, then exit
72ab47cfaaSmrg  -v, --version      print version number, then exit
73ab47cfaaSmrg
74ab47cfaaSmrgReport bugs and patches to <config-patches@gnu.org>."
75ab47cfaaSmrg
76ab47cfaaSmrgversion="\
77ab47cfaaSmrgGNU config.sub ($timestamp)
78ab47cfaaSmrg
792b2b4fcbSmrgCopyright 1992-2023 Free Software Foundation, Inc.
80ab47cfaaSmrg
81ab47cfaaSmrgThis is free software; see the source for copying conditions.  There is NO
82ab47cfaaSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
83ab47cfaaSmrg
84ab47cfaaSmrghelp="
85ab47cfaaSmrgTry \`$me --help' for more information."
86ab47cfaaSmrg
87ab47cfaaSmrg# Parse command line
88ab47cfaaSmrgwhile test $# -gt 0 ; do
89ab47cfaaSmrg  case $1 in
90ab47cfaaSmrg    --time-stamp | --time* | -t )
91ab47cfaaSmrg       echo "$timestamp" ; exit ;;
92ab47cfaaSmrg    --version | -v )
93ab47cfaaSmrg       echo "$version" ; exit ;;
94ab47cfaaSmrg    --help | --h* | -h )
95ab47cfaaSmrg       echo "$usage"; exit ;;
96ab47cfaaSmrg    -- )     # Stop option processing
97ab47cfaaSmrg       shift; break ;;
98ab47cfaaSmrg    - )	# Use stdin as input.
99ab47cfaaSmrg       break ;;
100ab47cfaaSmrg    -* )
1012b2b4fcbSmrg       echo "$me: invalid option $1$help" >&2
102ab47cfaaSmrg       exit 1 ;;
103ab47cfaaSmrg
104ab47cfaaSmrg    *local*)
105ab47cfaaSmrg       # First pass through any local machine types.
1062b2b4fcbSmrg       echo "$1"
107ab47cfaaSmrg       exit ;;
108ab47cfaaSmrg
109ab47cfaaSmrg    * )
110ab47cfaaSmrg       break ;;
111ab47cfaaSmrg  esac
112ab47cfaaSmrgdone
113ab47cfaaSmrg
114ab47cfaaSmrgcase $# in
115ab47cfaaSmrg 0) echo "$me: missing argument$help" >&2
116ab47cfaaSmrg    exit 1;;
117ab47cfaaSmrg 1) ;;
118ab47cfaaSmrg *) echo "$me: too many arguments$help" >&2
119ab47cfaaSmrg    exit 1;;
120ab47cfaaSmrgesac
121ab47cfaaSmrg
1222b2b4fcbSmrg# Split fields of configuration type
1232b2b4fcbSmrg# shellcheck disable=SC2162
1242b2b4fcbSmrgsaved_IFS=$IFS
1252b2b4fcbSmrgIFS="-" read field1 field2 field3 field4 <<EOF
1262b2b4fcbSmrg$1
1272b2b4fcbSmrgEOF
1282b2b4fcbSmrgIFS=$saved_IFS
129ab47cfaaSmrg
1302b2b4fcbSmrg# Separate into logical components for further validation
1312b2b4fcbSmrgcase $1 in
1322b2b4fcbSmrg	*-*-*-*-*)
1332b2b4fcbSmrg		echo Invalid configuration \`"$1"\': more than four components >&2
1342b2b4fcbSmrg		exit 1
135ab47cfaaSmrg		;;
1362b2b4fcbSmrg	*-*-*-*)
1372b2b4fcbSmrg		basic_machine=$field1-$field2
1382b2b4fcbSmrg		basic_os=$field3-$field4
139ab47cfaaSmrg		;;
1402b2b4fcbSmrg	*-*-*)
1412b2b4fcbSmrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
1422b2b4fcbSmrg		# parts
1432b2b4fcbSmrg		maybe_os=$field2-$field3
1442b2b4fcbSmrg		case $maybe_os in
1452b2b4fcbSmrg			nto-qnx* | linux-* | uclinux-uclibc* \
1462b2b4fcbSmrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
1472b2b4fcbSmrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
1482b2b4fcbSmrg			| storm-chaos* | os2-emx* | rtmk-nova* | managarm-*)
1492b2b4fcbSmrg				basic_machine=$field1
1502b2b4fcbSmrg				basic_os=$maybe_os
1512b2b4fcbSmrg				;;
1522b2b4fcbSmrg			android-linux)
1532b2b4fcbSmrg				basic_machine=$field1-unknown
1542b2b4fcbSmrg				basic_os=linux-android
1552b2b4fcbSmrg				;;
1562b2b4fcbSmrg			*)
1572b2b4fcbSmrg				basic_machine=$field1-$field2
1582b2b4fcbSmrg				basic_os=$field3
1592b2b4fcbSmrg				;;
1602b2b4fcbSmrg		esac
161ab47cfaaSmrg		;;
1622b2b4fcbSmrg	*-*)
1632b2b4fcbSmrg		# A lone config we happen to match not fitting any pattern
1642b2b4fcbSmrg		case $field1-$field2 in
1652b2b4fcbSmrg			decstation-3100)
1662b2b4fcbSmrg				basic_machine=mips-dec
1672b2b4fcbSmrg				basic_os=
1682b2b4fcbSmrg				;;
1692b2b4fcbSmrg			*-*)
1702b2b4fcbSmrg				# Second component is usually, but not always the OS
1712b2b4fcbSmrg				case $field2 in
1722b2b4fcbSmrg					# Prevent following clause from handling this valid os
1732b2b4fcbSmrg					sun*os*)
1742b2b4fcbSmrg						basic_machine=$field1
1752b2b4fcbSmrg						basic_os=$field2
1762b2b4fcbSmrg						;;
1772b2b4fcbSmrg					zephyr*)
1782b2b4fcbSmrg						basic_machine=$field1-unknown
1792b2b4fcbSmrg						basic_os=$field2
1802b2b4fcbSmrg						;;
1812b2b4fcbSmrg					# Manufacturers
1822b2b4fcbSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
1832b2b4fcbSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
1842b2b4fcbSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
1852b2b4fcbSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
1862b2b4fcbSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
1872b2b4fcbSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
1882b2b4fcbSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
1892b2b4fcbSmrg					| microblaze* | sim | cisco \
1902b2b4fcbSmrg					| oki | wec | wrs | winbond)
1912b2b4fcbSmrg						basic_machine=$field1-$field2
1922b2b4fcbSmrg						basic_os=
1932b2b4fcbSmrg						;;
1942b2b4fcbSmrg					*)
1952b2b4fcbSmrg						basic_machine=$field1
1962b2b4fcbSmrg						basic_os=$field2
1972b2b4fcbSmrg						;;
1982b2b4fcbSmrg				esac
1992b2b4fcbSmrg			;;
2002b2b4fcbSmrg		esac
201ab47cfaaSmrg		;;
2022b2b4fcbSmrg	*)
2032b2b4fcbSmrg		# Convert single-component short-hands not valid as part of
2042b2b4fcbSmrg		# multi-component configurations.
2052b2b4fcbSmrg		case $field1 in
2062b2b4fcbSmrg			386bsd)
2072b2b4fcbSmrg				basic_machine=i386-pc
2082b2b4fcbSmrg				basic_os=bsd
2092b2b4fcbSmrg				;;
2102b2b4fcbSmrg			a29khif)
2112b2b4fcbSmrg				basic_machine=a29k-amd
2122b2b4fcbSmrg				basic_os=udi
2132b2b4fcbSmrg				;;
2142b2b4fcbSmrg			adobe68k)
2152b2b4fcbSmrg				basic_machine=m68010-adobe
2162b2b4fcbSmrg				basic_os=scout
2172b2b4fcbSmrg				;;
2182b2b4fcbSmrg			alliant)
2192b2b4fcbSmrg				basic_machine=fx80-alliant
2202b2b4fcbSmrg				basic_os=
2212b2b4fcbSmrg				;;
2222b2b4fcbSmrg			altos | altos3068)
2232b2b4fcbSmrg				basic_machine=m68k-altos
2242b2b4fcbSmrg				basic_os=
2252b2b4fcbSmrg				;;
2262b2b4fcbSmrg			am29k)
2272b2b4fcbSmrg				basic_machine=a29k-none
2282b2b4fcbSmrg				basic_os=bsd
2292b2b4fcbSmrg				;;
2302b2b4fcbSmrg			amdahl)
2312b2b4fcbSmrg				basic_machine=580-amdahl
2322b2b4fcbSmrg				basic_os=sysv
2332b2b4fcbSmrg				;;
2342b2b4fcbSmrg			amiga)
2352b2b4fcbSmrg				basic_machine=m68k-unknown
2362b2b4fcbSmrg				basic_os=
2372b2b4fcbSmrg				;;
2382b2b4fcbSmrg			amigaos | amigados)
2392b2b4fcbSmrg				basic_machine=m68k-unknown
2402b2b4fcbSmrg				basic_os=amigaos
2412b2b4fcbSmrg				;;
2422b2b4fcbSmrg			amigaunix | amix)
2432b2b4fcbSmrg				basic_machine=m68k-unknown
2442b2b4fcbSmrg				basic_os=sysv4
2452b2b4fcbSmrg				;;
2462b2b4fcbSmrg			apollo68)
2472b2b4fcbSmrg				basic_machine=m68k-apollo
2482b2b4fcbSmrg				basic_os=sysv
2492b2b4fcbSmrg				;;
2502b2b4fcbSmrg			apollo68bsd)
2512b2b4fcbSmrg				basic_machine=m68k-apollo
2522b2b4fcbSmrg				basic_os=bsd
2532b2b4fcbSmrg				;;
2542b2b4fcbSmrg			aros)
2552b2b4fcbSmrg				basic_machine=i386-pc
2562b2b4fcbSmrg				basic_os=aros
2572b2b4fcbSmrg				;;
2582b2b4fcbSmrg			aux)
2592b2b4fcbSmrg				basic_machine=m68k-apple
2602b2b4fcbSmrg				basic_os=aux
2612b2b4fcbSmrg				;;
2622b2b4fcbSmrg			balance)
2632b2b4fcbSmrg				basic_machine=ns32k-sequent
2642b2b4fcbSmrg				basic_os=dynix
2652b2b4fcbSmrg				;;
2662b2b4fcbSmrg			blackfin)
2672b2b4fcbSmrg				basic_machine=bfin-unknown
2682b2b4fcbSmrg				basic_os=linux
2692b2b4fcbSmrg				;;
2702b2b4fcbSmrg			cegcc)
2712b2b4fcbSmrg				basic_machine=arm-unknown
2722b2b4fcbSmrg				basic_os=cegcc
2732b2b4fcbSmrg				;;
2742b2b4fcbSmrg			convex-c1)
2752b2b4fcbSmrg				basic_machine=c1-convex
2762b2b4fcbSmrg				basic_os=bsd
2772b2b4fcbSmrg				;;
2782b2b4fcbSmrg			convex-c2)
2792b2b4fcbSmrg				basic_machine=c2-convex
2802b2b4fcbSmrg				basic_os=bsd
2812b2b4fcbSmrg				;;
2822b2b4fcbSmrg			convex-c32)
2832b2b4fcbSmrg				basic_machine=c32-convex
2842b2b4fcbSmrg				basic_os=bsd
2852b2b4fcbSmrg				;;
2862b2b4fcbSmrg			convex-c34)
2872b2b4fcbSmrg				basic_machine=c34-convex
2882b2b4fcbSmrg				basic_os=bsd
2892b2b4fcbSmrg				;;
2902b2b4fcbSmrg			convex-c38)
2912b2b4fcbSmrg				basic_machine=c38-convex
2922b2b4fcbSmrg				basic_os=bsd
2932b2b4fcbSmrg				;;
2942b2b4fcbSmrg			cray)
2952b2b4fcbSmrg				basic_machine=j90-cray
2962b2b4fcbSmrg				basic_os=unicos
2972b2b4fcbSmrg				;;
2982b2b4fcbSmrg			crds | unos)
2992b2b4fcbSmrg				basic_machine=m68k-crds
3002b2b4fcbSmrg				basic_os=
3012b2b4fcbSmrg				;;
3022b2b4fcbSmrg			da30)
3032b2b4fcbSmrg				basic_machine=m68k-da30
3042b2b4fcbSmrg				basic_os=
3052b2b4fcbSmrg				;;
3062b2b4fcbSmrg			decstation | pmax | pmin | dec3100 | decstatn)
3072b2b4fcbSmrg				basic_machine=mips-dec
3082b2b4fcbSmrg				basic_os=
3092b2b4fcbSmrg				;;
3102b2b4fcbSmrg			delta88)
3112b2b4fcbSmrg				basic_machine=m88k-motorola
3122b2b4fcbSmrg				basic_os=sysv3
3132b2b4fcbSmrg				;;
3142b2b4fcbSmrg			dicos)
3152b2b4fcbSmrg				basic_machine=i686-pc
3162b2b4fcbSmrg				basic_os=dicos
3172b2b4fcbSmrg				;;
3182b2b4fcbSmrg			djgpp)
3192b2b4fcbSmrg				basic_machine=i586-pc
3202b2b4fcbSmrg				basic_os=msdosdjgpp
3212b2b4fcbSmrg				;;
3222b2b4fcbSmrg			ebmon29k)
3232b2b4fcbSmrg				basic_machine=a29k-amd
3242b2b4fcbSmrg				basic_os=ebmon
3252b2b4fcbSmrg				;;
3262b2b4fcbSmrg			es1800 | OSE68k | ose68k | ose | OSE)
3272b2b4fcbSmrg				basic_machine=m68k-ericsson
3282b2b4fcbSmrg				basic_os=ose
3292b2b4fcbSmrg				;;
3302b2b4fcbSmrg			gmicro)
3312b2b4fcbSmrg				basic_machine=tron-gmicro
3322b2b4fcbSmrg				basic_os=sysv
3332b2b4fcbSmrg				;;
3342b2b4fcbSmrg			go32)
3352b2b4fcbSmrg				basic_machine=i386-pc
3362b2b4fcbSmrg				basic_os=go32
3372b2b4fcbSmrg				;;
3382b2b4fcbSmrg			h8300hms)
3392b2b4fcbSmrg				basic_machine=h8300-hitachi
3402b2b4fcbSmrg				basic_os=hms
3412b2b4fcbSmrg				;;
3422b2b4fcbSmrg			h8300xray)
3432b2b4fcbSmrg				basic_machine=h8300-hitachi
3442b2b4fcbSmrg				basic_os=xray
3452b2b4fcbSmrg				;;
3462b2b4fcbSmrg			h8500hms)
3472b2b4fcbSmrg				basic_machine=h8500-hitachi
3482b2b4fcbSmrg				basic_os=hms
3492b2b4fcbSmrg				;;
3502b2b4fcbSmrg			harris)
3512b2b4fcbSmrg				basic_machine=m88k-harris
3522b2b4fcbSmrg				basic_os=sysv3
3532b2b4fcbSmrg				;;
3542b2b4fcbSmrg			hp300 | hp300hpux)
3552b2b4fcbSmrg				basic_machine=m68k-hp
3562b2b4fcbSmrg				basic_os=hpux
3572b2b4fcbSmrg				;;
3582b2b4fcbSmrg			hp300bsd)
3592b2b4fcbSmrg				basic_machine=m68k-hp
3602b2b4fcbSmrg				basic_os=bsd
3612b2b4fcbSmrg				;;
3622b2b4fcbSmrg			hppaosf)
3632b2b4fcbSmrg				basic_machine=hppa1.1-hp
3642b2b4fcbSmrg				basic_os=osf
3652b2b4fcbSmrg				;;
3662b2b4fcbSmrg			hppro)
3672b2b4fcbSmrg				basic_machine=hppa1.1-hp
3682b2b4fcbSmrg				basic_os=proelf
3692b2b4fcbSmrg				;;
3702b2b4fcbSmrg			i386mach)
3712b2b4fcbSmrg				basic_machine=i386-mach
3722b2b4fcbSmrg				basic_os=mach
3732b2b4fcbSmrg				;;
3742b2b4fcbSmrg			isi68 | isi)
3752b2b4fcbSmrg				basic_machine=m68k-isi
3762b2b4fcbSmrg				basic_os=sysv
3772b2b4fcbSmrg				;;
3782b2b4fcbSmrg			m68knommu)
3792b2b4fcbSmrg				basic_machine=m68k-unknown
3802b2b4fcbSmrg				basic_os=linux
3812b2b4fcbSmrg				;;
3822b2b4fcbSmrg			magnum | m3230)
3832b2b4fcbSmrg				basic_machine=mips-mips
3842b2b4fcbSmrg				basic_os=sysv
3852b2b4fcbSmrg				;;
3862b2b4fcbSmrg			merlin)
3872b2b4fcbSmrg				basic_machine=ns32k-utek
3882b2b4fcbSmrg				basic_os=sysv
3892b2b4fcbSmrg				;;
3902b2b4fcbSmrg			mingw64)
3912b2b4fcbSmrg				basic_machine=x86_64-pc
3922b2b4fcbSmrg				basic_os=mingw64
3932b2b4fcbSmrg				;;
3942b2b4fcbSmrg			mingw32)
3952b2b4fcbSmrg				basic_machine=i686-pc
3962b2b4fcbSmrg				basic_os=mingw32
3972b2b4fcbSmrg				;;
3982b2b4fcbSmrg			mingw32ce)
3992b2b4fcbSmrg				basic_machine=arm-unknown
4002b2b4fcbSmrg				basic_os=mingw32ce
4012b2b4fcbSmrg				;;
4022b2b4fcbSmrg			monitor)
4032b2b4fcbSmrg				basic_machine=m68k-rom68k
4042b2b4fcbSmrg				basic_os=coff
4052b2b4fcbSmrg				;;
4062b2b4fcbSmrg			morphos)
4072b2b4fcbSmrg				basic_machine=powerpc-unknown
4082b2b4fcbSmrg				basic_os=morphos
4092b2b4fcbSmrg				;;
4102b2b4fcbSmrg			moxiebox)
4112b2b4fcbSmrg				basic_machine=moxie-unknown
4122b2b4fcbSmrg				basic_os=moxiebox
4132b2b4fcbSmrg				;;
4142b2b4fcbSmrg			msdos)
4152b2b4fcbSmrg				basic_machine=i386-pc
4162b2b4fcbSmrg				basic_os=msdos
4172b2b4fcbSmrg				;;
4182b2b4fcbSmrg			msys)
4192b2b4fcbSmrg				basic_machine=i686-pc
4202b2b4fcbSmrg				basic_os=msys
4212b2b4fcbSmrg				;;
4222b2b4fcbSmrg			mvs)
4232b2b4fcbSmrg				basic_machine=i370-ibm
4242b2b4fcbSmrg				basic_os=mvs
4252b2b4fcbSmrg				;;
4262b2b4fcbSmrg			nacl)
4272b2b4fcbSmrg				basic_machine=le32-unknown
4282b2b4fcbSmrg				basic_os=nacl
4292b2b4fcbSmrg				;;
4302b2b4fcbSmrg			ncr3000)
4312b2b4fcbSmrg				basic_machine=i486-ncr
4322b2b4fcbSmrg				basic_os=sysv4
4332b2b4fcbSmrg				;;
4342b2b4fcbSmrg			netbsd386)
4352b2b4fcbSmrg				basic_machine=i386-pc
4362b2b4fcbSmrg				basic_os=netbsd
4372b2b4fcbSmrg				;;
4382b2b4fcbSmrg			netwinder)
4392b2b4fcbSmrg				basic_machine=armv4l-rebel
4402b2b4fcbSmrg				basic_os=linux
4412b2b4fcbSmrg				;;
4422b2b4fcbSmrg			news | news700 | news800 | news900)
4432b2b4fcbSmrg				basic_machine=m68k-sony
4442b2b4fcbSmrg				basic_os=newsos
4452b2b4fcbSmrg				;;
4462b2b4fcbSmrg			news1000)
4472b2b4fcbSmrg				basic_machine=m68030-sony
4482b2b4fcbSmrg				basic_os=newsos
4492b2b4fcbSmrg				;;
4502b2b4fcbSmrg			necv70)
4512b2b4fcbSmrg				basic_machine=v70-nec
4522b2b4fcbSmrg				basic_os=sysv
4532b2b4fcbSmrg				;;
4542b2b4fcbSmrg			nh3000)
4552b2b4fcbSmrg				basic_machine=m68k-harris
4562b2b4fcbSmrg				basic_os=cxux
4572b2b4fcbSmrg				;;
4582b2b4fcbSmrg			nh[45]000)
4592b2b4fcbSmrg				basic_machine=m88k-harris
4602b2b4fcbSmrg				basic_os=cxux
4612b2b4fcbSmrg				;;
4622b2b4fcbSmrg			nindy960)
4632b2b4fcbSmrg				basic_machine=i960-intel
4642b2b4fcbSmrg				basic_os=nindy
4652b2b4fcbSmrg				;;
4662b2b4fcbSmrg			mon960)
4672b2b4fcbSmrg				basic_machine=i960-intel
4682b2b4fcbSmrg				basic_os=mon960
4692b2b4fcbSmrg				;;
4702b2b4fcbSmrg			nonstopux)
4712b2b4fcbSmrg				basic_machine=mips-compaq
4722b2b4fcbSmrg				basic_os=nonstopux
4732b2b4fcbSmrg				;;
4742b2b4fcbSmrg			os400)
4752b2b4fcbSmrg				basic_machine=powerpc-ibm
4762b2b4fcbSmrg				basic_os=os400
4772b2b4fcbSmrg				;;
4782b2b4fcbSmrg			OSE68000 | ose68000)
4792b2b4fcbSmrg				basic_machine=m68000-ericsson
4802b2b4fcbSmrg				basic_os=ose
4812b2b4fcbSmrg				;;
4822b2b4fcbSmrg			os68k)
4832b2b4fcbSmrg				basic_machine=m68k-none
4842b2b4fcbSmrg				basic_os=os68k
4852b2b4fcbSmrg				;;
4862b2b4fcbSmrg			paragon)
4872b2b4fcbSmrg				basic_machine=i860-intel
4882b2b4fcbSmrg				basic_os=osf
4892b2b4fcbSmrg				;;
4902b2b4fcbSmrg			parisc)
4912b2b4fcbSmrg				basic_machine=hppa-unknown
4922b2b4fcbSmrg				basic_os=linux
4932b2b4fcbSmrg				;;
4942b2b4fcbSmrg			psp)
4952b2b4fcbSmrg				basic_machine=mipsallegrexel-sony
4962b2b4fcbSmrg				basic_os=psp
4972b2b4fcbSmrg				;;
4982b2b4fcbSmrg			pw32)
4992b2b4fcbSmrg				basic_machine=i586-unknown
5002b2b4fcbSmrg				basic_os=pw32
5012b2b4fcbSmrg				;;
5022b2b4fcbSmrg			rdos | rdos64)
5032b2b4fcbSmrg				basic_machine=x86_64-pc
5042b2b4fcbSmrg				basic_os=rdos
5052b2b4fcbSmrg				;;
5062b2b4fcbSmrg			rdos32)
5072b2b4fcbSmrg				basic_machine=i386-pc
5082b2b4fcbSmrg				basic_os=rdos
5092b2b4fcbSmrg				;;
5102b2b4fcbSmrg			rom68k)
5112b2b4fcbSmrg				basic_machine=m68k-rom68k
5122b2b4fcbSmrg				basic_os=coff
5132b2b4fcbSmrg				;;
5142b2b4fcbSmrg			sa29200)
5152b2b4fcbSmrg				basic_machine=a29k-amd
5162b2b4fcbSmrg				basic_os=udi
5172b2b4fcbSmrg				;;
5182b2b4fcbSmrg			sei)
5192b2b4fcbSmrg				basic_machine=mips-sei
5202b2b4fcbSmrg				basic_os=seiux
5212b2b4fcbSmrg				;;
5222b2b4fcbSmrg			sequent)
5232b2b4fcbSmrg				basic_machine=i386-sequent
5242b2b4fcbSmrg				basic_os=
5252b2b4fcbSmrg				;;
5262b2b4fcbSmrg			sps7)
5272b2b4fcbSmrg				basic_machine=m68k-bull
5282b2b4fcbSmrg				basic_os=sysv2
5292b2b4fcbSmrg				;;
5302b2b4fcbSmrg			st2000)
5312b2b4fcbSmrg				basic_machine=m68k-tandem
5322b2b4fcbSmrg				basic_os=
5332b2b4fcbSmrg				;;
5342b2b4fcbSmrg			stratus)
5352b2b4fcbSmrg				basic_machine=i860-stratus
5362b2b4fcbSmrg				basic_os=sysv4
5372b2b4fcbSmrg				;;
5382b2b4fcbSmrg			sun2)
5392b2b4fcbSmrg				basic_machine=m68000-sun
5402b2b4fcbSmrg				basic_os=
5412b2b4fcbSmrg				;;
5422b2b4fcbSmrg			sun2os3)
5432b2b4fcbSmrg				basic_machine=m68000-sun
5442b2b4fcbSmrg				basic_os=sunos3
5452b2b4fcbSmrg				;;
5462b2b4fcbSmrg			sun2os4)
5472b2b4fcbSmrg				basic_machine=m68000-sun
5482b2b4fcbSmrg				basic_os=sunos4
5492b2b4fcbSmrg				;;
5502b2b4fcbSmrg			sun3)
5512b2b4fcbSmrg				basic_machine=m68k-sun
5522b2b4fcbSmrg				basic_os=
5532b2b4fcbSmrg				;;
5542b2b4fcbSmrg			sun3os3)
5552b2b4fcbSmrg				basic_machine=m68k-sun
5562b2b4fcbSmrg				basic_os=sunos3
5572b2b4fcbSmrg				;;
5582b2b4fcbSmrg			sun3os4)
5592b2b4fcbSmrg				basic_machine=m68k-sun
5602b2b4fcbSmrg				basic_os=sunos4
5612b2b4fcbSmrg				;;
5622b2b4fcbSmrg			sun4)
5632b2b4fcbSmrg				basic_machine=sparc-sun
5642b2b4fcbSmrg				basic_os=
5652b2b4fcbSmrg				;;
5662b2b4fcbSmrg			sun4os3)
5672b2b4fcbSmrg				basic_machine=sparc-sun
5682b2b4fcbSmrg				basic_os=sunos3
5692b2b4fcbSmrg				;;
5702b2b4fcbSmrg			sun4os4)
5712b2b4fcbSmrg				basic_machine=sparc-sun
5722b2b4fcbSmrg				basic_os=sunos4
5732b2b4fcbSmrg				;;
5742b2b4fcbSmrg			sun4sol2)
5752b2b4fcbSmrg				basic_machine=sparc-sun
5762b2b4fcbSmrg				basic_os=solaris2
5772b2b4fcbSmrg				;;
5782b2b4fcbSmrg			sun386 | sun386i | roadrunner)
5792b2b4fcbSmrg				basic_machine=i386-sun
5802b2b4fcbSmrg				basic_os=
5812b2b4fcbSmrg				;;
5822b2b4fcbSmrg			sv1)
5832b2b4fcbSmrg				basic_machine=sv1-cray
5842b2b4fcbSmrg				basic_os=unicos
5852b2b4fcbSmrg				;;
5862b2b4fcbSmrg			symmetry)
5872b2b4fcbSmrg				basic_machine=i386-sequent
5882b2b4fcbSmrg				basic_os=dynix
5892b2b4fcbSmrg				;;
5902b2b4fcbSmrg			t3e)
5912b2b4fcbSmrg				basic_machine=alphaev5-cray
5922b2b4fcbSmrg				basic_os=unicos
5932b2b4fcbSmrg				;;
5942b2b4fcbSmrg			t90)
5952b2b4fcbSmrg				basic_machine=t90-cray
5962b2b4fcbSmrg				basic_os=unicos
5972b2b4fcbSmrg				;;
5982b2b4fcbSmrg			toad1)
5992b2b4fcbSmrg				basic_machine=pdp10-xkl
6002b2b4fcbSmrg				basic_os=tops20
6012b2b4fcbSmrg				;;
6022b2b4fcbSmrg			tpf)
6032b2b4fcbSmrg				basic_machine=s390x-ibm
6042b2b4fcbSmrg				basic_os=tpf
6052b2b4fcbSmrg				;;
6062b2b4fcbSmrg			udi29k)
6072b2b4fcbSmrg				basic_machine=a29k-amd
6082b2b4fcbSmrg				basic_os=udi
6092b2b4fcbSmrg				;;
6102b2b4fcbSmrg			ultra3)
6112b2b4fcbSmrg				basic_machine=a29k-nyu
6122b2b4fcbSmrg				basic_os=sym1
6132b2b4fcbSmrg				;;
6142b2b4fcbSmrg			v810 | necv810)
6152b2b4fcbSmrg				basic_machine=v810-nec
6162b2b4fcbSmrg				basic_os=none
6172b2b4fcbSmrg				;;
6182b2b4fcbSmrg			vaxv)
6192b2b4fcbSmrg				basic_machine=vax-dec
6202b2b4fcbSmrg				basic_os=sysv
6212b2b4fcbSmrg				;;
6222b2b4fcbSmrg			vms)
6232b2b4fcbSmrg				basic_machine=vax-dec
6242b2b4fcbSmrg				basic_os=vms
6252b2b4fcbSmrg				;;
6262b2b4fcbSmrg			vsta)
6272b2b4fcbSmrg				basic_machine=i386-pc
6282b2b4fcbSmrg				basic_os=vsta
6292b2b4fcbSmrg				;;
6302b2b4fcbSmrg			vxworks960)
6312b2b4fcbSmrg				basic_machine=i960-wrs
6322b2b4fcbSmrg				basic_os=vxworks
6332b2b4fcbSmrg				;;
6342b2b4fcbSmrg			vxworks68)
6352b2b4fcbSmrg				basic_machine=m68k-wrs
6362b2b4fcbSmrg				basic_os=vxworks
6372b2b4fcbSmrg				;;
6382b2b4fcbSmrg			vxworks29k)
6392b2b4fcbSmrg				basic_machine=a29k-wrs
6402b2b4fcbSmrg				basic_os=vxworks
6412b2b4fcbSmrg				;;
6422b2b4fcbSmrg			xbox)
6432b2b4fcbSmrg				basic_machine=i686-pc
6442b2b4fcbSmrg				basic_os=mingw32
6452b2b4fcbSmrg				;;
6462b2b4fcbSmrg			ymp)
6472b2b4fcbSmrg				basic_machine=ymp-cray
6482b2b4fcbSmrg				basic_os=unicos
6492b2b4fcbSmrg				;;
6502b2b4fcbSmrg			*)
6512b2b4fcbSmrg				basic_machine=$1
6522b2b4fcbSmrg				basic_os=
6532b2b4fcbSmrg				;;
6542b2b4fcbSmrg		esac
655ab47cfaaSmrg		;;
656ab47cfaaSmrgesac
657ab47cfaaSmrg
6582b2b4fcbSmrg# Decode 1-component or ad-hoc basic machines
659ab47cfaaSmrgcase $basic_machine in
6602b2b4fcbSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
6612b2b4fcbSmrg	# some cases the only manufacturer, in others, it is the most popular.
6622b2b4fcbSmrg	w89k)
6632b2b4fcbSmrg		cpu=hppa1.1
6642b2b4fcbSmrg		vendor=winbond
665ab47cfaaSmrg		;;
6662b2b4fcbSmrg	op50n)
6672b2b4fcbSmrg		cpu=hppa1.1
6682b2b4fcbSmrg		vendor=oki
669ab47cfaaSmrg		;;
6702b2b4fcbSmrg	op60c)
6712b2b4fcbSmrg		cpu=hppa1.1
6722b2b4fcbSmrg		vendor=oki
673ab47cfaaSmrg		;;
6742b2b4fcbSmrg	ibm*)
6752b2b4fcbSmrg		cpu=i370
6762b2b4fcbSmrg		vendor=ibm
677aa9e3350Smrg		;;
6782b2b4fcbSmrg	orion105)
6792b2b4fcbSmrg		cpu=clipper
6802b2b4fcbSmrg		vendor=highlevel
68138770048Smrg		;;
6822b2b4fcbSmrg	mac | mpw | mac-mpw)
6832b2b4fcbSmrg		cpu=m68k
6842b2b4fcbSmrg		vendor=apple
685aa9e3350Smrg		;;
6862b2b4fcbSmrg	pmac | pmac-mpw)
6872b2b4fcbSmrg		cpu=powerpc
6882b2b4fcbSmrg		vendor=apple
689aa9e3350Smrg		;;
690aa9e3350Smrg
691ab47cfaaSmrg	# Recognize the various machine names and aliases which stand
692ab47cfaaSmrg	# for a CPU type and a company and sometimes even an OS.
693ab47cfaaSmrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
6942b2b4fcbSmrg		cpu=m68000
6952b2b4fcbSmrg		vendor=att
696ab47cfaaSmrg		;;
697ab47cfaaSmrg	3b*)
6982b2b4fcbSmrg		cpu=we32k
6992b2b4fcbSmrg		vendor=att
7001473d951Smrg		;;
7016aec45a7Smrg	bluegene*)
7022b2b4fcbSmrg		cpu=powerpc
7032b2b4fcbSmrg		vendor=ibm
7042b2b4fcbSmrg		basic_os=cnk
705ab47cfaaSmrg		;;
706ab47cfaaSmrg	decsystem10* | dec10*)
7072b2b4fcbSmrg		cpu=pdp10
7082b2b4fcbSmrg		vendor=dec
7092b2b4fcbSmrg		basic_os=tops10
710ab47cfaaSmrg		;;
711ab47cfaaSmrg	decsystem20* | dec20*)
7122b2b4fcbSmrg		cpu=pdp10
7132b2b4fcbSmrg		vendor=dec
7142b2b4fcbSmrg		basic_os=tops20
715ab47cfaaSmrg		;;
716ab47cfaaSmrg	delta | 3300 | motorola-3300 | motorola-delta \
717ab47cfaaSmrg	      | 3300-motorola | delta-motorola)
7182b2b4fcbSmrg		cpu=m68k
7192b2b4fcbSmrg		vendor=motorola
720ab47cfaaSmrg		;;
7212b2b4fcbSmrg	dpx2*)
7222b2b4fcbSmrg		cpu=m68k
7232b2b4fcbSmrg		vendor=bull
7242b2b4fcbSmrg		basic_os=sysv3
725ab47cfaaSmrg		;;
726ab47cfaaSmrg	encore | umax | mmax)
7272b2b4fcbSmrg		cpu=ns32k
7282b2b4fcbSmrg		vendor=encore
729ab47cfaaSmrg		;;
7302b2b4fcbSmrg	elxsi)
7312b2b4fcbSmrg		cpu=elxsi
7322b2b4fcbSmrg		vendor=elxsi
7332b2b4fcbSmrg		basic_os=${basic_os:-bsd}
734ab47cfaaSmrg		;;
735ab47cfaaSmrg	fx2800)
7362b2b4fcbSmrg		cpu=i860
7372b2b4fcbSmrg		vendor=alliant
738ab47cfaaSmrg		;;
739ab47cfaaSmrg	genix)
7402b2b4fcbSmrg		cpu=ns32k
7412b2b4fcbSmrg		vendor=ns
742ab47cfaaSmrg		;;
743ab47cfaaSmrg	h3050r* | hiux*)
7442b2b4fcbSmrg		cpu=hppa1.1
7452b2b4fcbSmrg		vendor=hitachi
7462b2b4fcbSmrg		basic_os=hiuxwe2
747ab47cfaaSmrg		;;
748ab47cfaaSmrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
7492b2b4fcbSmrg		cpu=hppa1.0
7502b2b4fcbSmrg		vendor=hp
751ab47cfaaSmrg		;;
752ab47cfaaSmrg	hp9k2[0-9][0-9] | hp9k31[0-9])
7532b2b4fcbSmrg		cpu=m68000
7542b2b4fcbSmrg		vendor=hp
755ab47cfaaSmrg		;;
756ab47cfaaSmrg	hp9k3[2-9][0-9])
7572b2b4fcbSmrg		cpu=m68k
7582b2b4fcbSmrg		vendor=hp
759ab47cfaaSmrg		;;
760ab47cfaaSmrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
7612b2b4fcbSmrg		cpu=hppa1.0
7622b2b4fcbSmrg		vendor=hp
763ab47cfaaSmrg		;;
764ab47cfaaSmrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
7652b2b4fcbSmrg		cpu=hppa1.1
7662b2b4fcbSmrg		vendor=hp
767ab47cfaaSmrg		;;
768ab47cfaaSmrg	hp9k78[0-9] | hp78[0-9])
769ab47cfaaSmrg		# FIXME: really hppa2.0-hp
7702b2b4fcbSmrg		cpu=hppa1.1
7712b2b4fcbSmrg		vendor=hp
772ab47cfaaSmrg		;;
773ab47cfaaSmrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
774ab47cfaaSmrg		# FIXME: really hppa2.0-hp
7752b2b4fcbSmrg		cpu=hppa1.1
7762b2b4fcbSmrg		vendor=hp
777ab47cfaaSmrg		;;
778ab47cfaaSmrg	hp9k8[0-9][13679] | hp8[0-9][13679])
7792b2b4fcbSmrg		cpu=hppa1.1
7802b2b4fcbSmrg		vendor=hp
781ab47cfaaSmrg		;;
782ab47cfaaSmrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
7832b2b4fcbSmrg		cpu=hppa1.0
7842b2b4fcbSmrg		vendor=hp
785ab47cfaaSmrg		;;
786ab47cfaaSmrg	i*86v32)
7872b2b4fcbSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7882b2b4fcbSmrg		vendor=pc
7892b2b4fcbSmrg		basic_os=sysv32
790ab47cfaaSmrg		;;
791ab47cfaaSmrg	i*86v4*)
7922b2b4fcbSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7932b2b4fcbSmrg		vendor=pc
7942b2b4fcbSmrg		basic_os=sysv4
795ab47cfaaSmrg		;;
796ab47cfaaSmrg	i*86v)
7972b2b4fcbSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7982b2b4fcbSmrg		vendor=pc
7992b2b4fcbSmrg		basic_os=sysv
800ab47cfaaSmrg		;;
801ab47cfaaSmrg	i*86sol2)
8022b2b4fcbSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
8032b2b4fcbSmrg		vendor=pc
8042b2b4fcbSmrg		basic_os=solaris2
805ab47cfaaSmrg		;;
8062b2b4fcbSmrg	j90 | j90-cray)
8072b2b4fcbSmrg		cpu=j90
8082b2b4fcbSmrg		vendor=cray
8092b2b4fcbSmrg		basic_os=${basic_os:-unicos}
810ab47cfaaSmrg		;;
811ab47cfaaSmrg	iris | iris4d)
8122b2b4fcbSmrg		cpu=mips
8132b2b4fcbSmrg		vendor=sgi
8142b2b4fcbSmrg		case $basic_os in
8152b2b4fcbSmrg		    irix*)
816ab47cfaaSmrg			;;
817ab47cfaaSmrg		    *)
8182b2b4fcbSmrg			basic_os=irix4
819ab47cfaaSmrg			;;
820ab47cfaaSmrg		esac
821ab47cfaaSmrg		;;
822ab47cfaaSmrg	miniframe)
8232b2b4fcbSmrg		cpu=m68000
8242b2b4fcbSmrg		vendor=convergent
825300bf1aeSmrg		;;
8262b2b4fcbSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
8272b2b4fcbSmrg		cpu=m68k
8282b2b4fcbSmrg		vendor=atari
8292b2b4fcbSmrg		basic_os=mint
830ab47cfaaSmrg		;;
831ab47cfaaSmrg	news-3600 | risc-news)
8322b2b4fcbSmrg		cpu=mips
8332b2b4fcbSmrg		vendor=sony
8342b2b4fcbSmrg		basic_os=newsos
8352b2b4fcbSmrg		;;
8362b2b4fcbSmrg	next | m*-next)
8372b2b4fcbSmrg		cpu=m68k
8382b2b4fcbSmrg		vendor=next
8392b2b4fcbSmrg		case $basic_os in
8402b2b4fcbSmrg		    openstep*)
8412b2b4fcbSmrg		        ;;
8422b2b4fcbSmrg		    nextstep*)
843ab47cfaaSmrg			;;
8442b2b4fcbSmrg		    ns2*)
8452b2b4fcbSmrg		      basic_os=nextstep2
846ab47cfaaSmrg			;;
847ab47cfaaSmrg		    *)
8482b2b4fcbSmrg		      basic_os=nextstep3
849ab47cfaaSmrg			;;
850ab47cfaaSmrg		esac
851ab47cfaaSmrg		;;
852ab47cfaaSmrg	np1)
8532b2b4fcbSmrg		cpu=np1
8542b2b4fcbSmrg		vendor=gould
855ab47cfaaSmrg		;;
856ab47cfaaSmrg	op50n-* | op60c-*)
8572b2b4fcbSmrg		cpu=hppa1.1
8582b2b4fcbSmrg		vendor=oki
8592b2b4fcbSmrg		basic_os=proelf
860ab47cfaaSmrg		;;
861ab47cfaaSmrg	pa-hitachi)
8622b2b4fcbSmrg		cpu=hppa1.1
8632b2b4fcbSmrg		vendor=hitachi
8642b2b4fcbSmrg		basic_os=hiuxwe2
8651473d951Smrg		;;
866ab47cfaaSmrg	pbd)
8672b2b4fcbSmrg		cpu=sparc
8682b2b4fcbSmrg		vendor=tti
869ab47cfaaSmrg		;;
870ab47cfaaSmrg	pbb)
8712b2b4fcbSmrg		cpu=m68k
8722b2b4fcbSmrg		vendor=tti
873ab47cfaaSmrg		;;
8742b2b4fcbSmrg	pc532)
8752b2b4fcbSmrg		cpu=ns32k
8762b2b4fcbSmrg		vendor=pc532
877ab47cfaaSmrg		;;
878ab47cfaaSmrg	pn)
8792b2b4fcbSmrg		cpu=pn
8802b2b4fcbSmrg		vendor=gould
881ab47cfaaSmrg		;;
8822b2b4fcbSmrg	power)
8832b2b4fcbSmrg		cpu=power
8842b2b4fcbSmrg		vendor=ibm
885ab47cfaaSmrg		;;
886ab47cfaaSmrg	ps2)
8872b2b4fcbSmrg		cpu=i386
8882b2b4fcbSmrg		vendor=ibm
889ab47cfaaSmrg		;;
890ab47cfaaSmrg	rm[46]00)
8912b2b4fcbSmrg		cpu=mips
8922b2b4fcbSmrg		vendor=siemens
893ab47cfaaSmrg		;;
894ab47cfaaSmrg	rtpc | rtpc-*)
8952b2b4fcbSmrg		cpu=romp
8962b2b4fcbSmrg		vendor=ibm
897ab47cfaaSmrg		;;
8982b2b4fcbSmrg	sde)
8992b2b4fcbSmrg		cpu=mipsisa32
9002b2b4fcbSmrg		vendor=sde
9012b2b4fcbSmrg		basic_os=${basic_os:-elf}
902ab47cfaaSmrg		;;
9032b2b4fcbSmrg	simso-wrs)
9042b2b4fcbSmrg		cpu=sparclite
9052b2b4fcbSmrg		vendor=wrs
9062b2b4fcbSmrg		basic_os=vxworks
907ab47cfaaSmrg		;;
9082b2b4fcbSmrg	tower | tower-32)
9092b2b4fcbSmrg		cpu=m68k
9102b2b4fcbSmrg		vendor=ncr
911ab47cfaaSmrg		;;
9122b2b4fcbSmrg	vpp*|vx|vx-*)
9132b2b4fcbSmrg		cpu=f301
9142b2b4fcbSmrg		vendor=fujitsu
915ab47cfaaSmrg		;;
9162b2b4fcbSmrg	w65)
9172b2b4fcbSmrg		cpu=w65
9182b2b4fcbSmrg		vendor=wdc
919ab47cfaaSmrg		;;
9202b2b4fcbSmrg	w89k-*)
9212b2b4fcbSmrg		cpu=hppa1.1
9222b2b4fcbSmrg		vendor=winbond
9232b2b4fcbSmrg		basic_os=proelf
924ab47cfaaSmrg		;;
9252b2b4fcbSmrg	none)
9262b2b4fcbSmrg		cpu=none
9272b2b4fcbSmrg		vendor=none
928ab47cfaaSmrg		;;
9292b2b4fcbSmrg	leon|leon[3-9])
9302b2b4fcbSmrg		cpu=sparc
9312b2b4fcbSmrg		vendor=$basic_machine
9328697ee19Smrg		;;
9332b2b4fcbSmrg	leon-*|leon[3-9]-*)
9342b2b4fcbSmrg		cpu=sparc
9352b2b4fcbSmrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
936ab47cfaaSmrg		;;
9372b2b4fcbSmrg
9382b2b4fcbSmrg	*-*)
9392b2b4fcbSmrg		# shellcheck disable=SC2162
9402b2b4fcbSmrg		saved_IFS=$IFS
9412b2b4fcbSmrg		IFS="-" read cpu vendor <<EOF
9422b2b4fcbSmrg$basic_machine
9432b2b4fcbSmrgEOF
9442b2b4fcbSmrg		IFS=$saved_IFS
945ab47cfaaSmrg		;;
9462b2b4fcbSmrg	# We use `pc' rather than `unknown'
9472b2b4fcbSmrg	# because (1) that's what they normally are, and
9482b2b4fcbSmrg	# (2) the word "unknown" tends to confuse beginning users.
9492b2b4fcbSmrg	i*86 | x86_64)
9502b2b4fcbSmrg		cpu=$basic_machine
9512b2b4fcbSmrg		vendor=pc
952ab47cfaaSmrg		;;
9532b2b4fcbSmrg	# These rules are duplicated from below for sake of the special case above;
9542b2b4fcbSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
9552b2b4fcbSmrg	pc98)
9562b2b4fcbSmrg		cpu=i386
9572b2b4fcbSmrg		vendor=pc
958ab47cfaaSmrg		;;
9592b2b4fcbSmrg	x64 | amd64)
9602b2b4fcbSmrg		cpu=x86_64
9612b2b4fcbSmrg		vendor=pc
962ab47cfaaSmrg		;;
9632b2b4fcbSmrg	# Recognize the basic CPU types without company name.
9642b2b4fcbSmrg	*)
9652b2b4fcbSmrg		cpu=$basic_machine
9662b2b4fcbSmrg		vendor=unknown
967ab47cfaaSmrg		;;
9682b2b4fcbSmrgesac
9692b2b4fcbSmrg
9702b2b4fcbSmrgunset -v basic_machine
9712b2b4fcbSmrg
9722b2b4fcbSmrg# Decode basic machines in the full and proper CPU-Company form.
9732b2b4fcbSmrgcase $cpu-$vendor in
9742b2b4fcbSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
9752b2b4fcbSmrg	# some cases the only manufacturer, in others, it is the most popular.
9762b2b4fcbSmrg	craynv-unknown)
9772b2b4fcbSmrg		vendor=cray
9782b2b4fcbSmrg		basic_os=${basic_os:-unicosmp}
979aa9e3350Smrg		;;
9802b2b4fcbSmrg	c90-unknown | c90-cray)
9812b2b4fcbSmrg		vendor=cray
9822b2b4fcbSmrg		basic_os=${Basic_os:-unicos}
983ab47cfaaSmrg		;;
9842b2b4fcbSmrg	fx80-unknown)
9852b2b4fcbSmrg		vendor=alliant
986ab47cfaaSmrg		;;
9872b2b4fcbSmrg	romp-unknown)
9882b2b4fcbSmrg		vendor=ibm
989ab47cfaaSmrg		;;
9902b2b4fcbSmrg	mmix-unknown)
9912b2b4fcbSmrg		vendor=knuth
992ab47cfaaSmrg		;;
9932b2b4fcbSmrg	microblaze-unknown | microblazeel-unknown)
9942b2b4fcbSmrg		vendor=xilinx
995ab47cfaaSmrg		;;
9962b2b4fcbSmrg	rs6000-unknown)
9972b2b4fcbSmrg		vendor=ibm
998ab47cfaaSmrg		;;
9992b2b4fcbSmrg	vax-unknown)
10002b2b4fcbSmrg		vendor=dec
1001ab47cfaaSmrg		;;
10022b2b4fcbSmrg	pdp11-unknown)
10032b2b4fcbSmrg		vendor=dec
1004ab47cfaaSmrg		;;
10052b2b4fcbSmrg	we32k-unknown)
10062b2b4fcbSmrg		vendor=att
1007ab47cfaaSmrg		;;
10082b2b4fcbSmrg	cydra-unknown)
10092b2b4fcbSmrg		vendor=cydrome
1010ab47cfaaSmrg		;;
10112b2b4fcbSmrg	i370-ibm*)
10122b2b4fcbSmrg		vendor=ibm
1013ab47cfaaSmrg		;;
10142b2b4fcbSmrg	orion-unknown)
10152b2b4fcbSmrg		vendor=highlevel
1016ab47cfaaSmrg		;;
10172b2b4fcbSmrg	xps-unknown | xps100-unknown)
10182b2b4fcbSmrg		cpu=xps100
10192b2b4fcbSmrg		vendor=honeywell
1020ab47cfaaSmrg		;;
10212b2b4fcbSmrg
10222b2b4fcbSmrg	# Here we normalize CPU types with a missing or matching vendor
10232b2b4fcbSmrg	armh-unknown | armh-alt)
10242b2b4fcbSmrg		cpu=armv7l
10252b2b4fcbSmrg		vendor=alt
10262b2b4fcbSmrg		basic_os=${basic_os:-linux-gnueabihf}
1027ab47cfaaSmrg		;;
10282b2b4fcbSmrg	dpx20-unknown | dpx20-bull)
10292b2b4fcbSmrg		cpu=rs6000
10302b2b4fcbSmrg		vendor=bull
10312b2b4fcbSmrg		basic_os=${basic_os:-bosx}
1032ab47cfaaSmrg		;;
10332b2b4fcbSmrg
10342b2b4fcbSmrg	# Here we normalize CPU types irrespective of the vendor
10352b2b4fcbSmrg	amd64-*)
10362b2b4fcbSmrg		cpu=x86_64
10371473d951Smrg		;;
10382b2b4fcbSmrg	blackfin-*)
10392b2b4fcbSmrg		cpu=bfin
10402b2b4fcbSmrg		basic_os=linux
1041ab47cfaaSmrg		;;
10422b2b4fcbSmrg	c54x-*)
10432b2b4fcbSmrg		cpu=tic54x
1044ab47cfaaSmrg		;;
10452b2b4fcbSmrg	c55x-*)
10462b2b4fcbSmrg		cpu=tic55x
1047ab47cfaaSmrg		;;
10482b2b4fcbSmrg	c6x-*)
10492b2b4fcbSmrg		cpu=tic6x
1050ab47cfaaSmrg		;;
10512b2b4fcbSmrg	e500v[12]-*)
10522b2b4fcbSmrg		cpu=powerpc
10532b2b4fcbSmrg		basic_os=${basic_os}"spe"
1054ab47cfaaSmrg		;;
10552b2b4fcbSmrg	mips3*-*)
10562b2b4fcbSmrg		cpu=mips64
1057ab47cfaaSmrg		;;
10582b2b4fcbSmrg	ms1-*)
10592b2b4fcbSmrg		cpu=mt
1060ab47cfaaSmrg		;;
10612b2b4fcbSmrg	m68knommu-*)
10622b2b4fcbSmrg		cpu=m68k
10632b2b4fcbSmrg		basic_os=linux
1064ab47cfaaSmrg		;;
10652b2b4fcbSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
10662b2b4fcbSmrg		cpu=s12z
1067ab47cfaaSmrg		;;
10682b2b4fcbSmrg	openrisc-*)
10692b2b4fcbSmrg		cpu=or32
1070ab47cfaaSmrg		;;
10712b2b4fcbSmrg	parisc-*)
10722b2b4fcbSmrg		cpu=hppa
10732b2b4fcbSmrg		basic_os=linux
1074ab47cfaaSmrg		;;
10752b2b4fcbSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
10762b2b4fcbSmrg		cpu=i586
1077ab47cfaaSmrg		;;
10782b2b4fcbSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
10792b2b4fcbSmrg		cpu=i686
1080ab47cfaaSmrg		;;
10812b2b4fcbSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
10822b2b4fcbSmrg		cpu=i686
1083ab47cfaaSmrg		;;
10842b2b4fcbSmrg	pentium4-*)
10852b2b4fcbSmrg		cpu=i786
1086ab47cfaaSmrg		;;
10872b2b4fcbSmrg	pc98-*)
10882b2b4fcbSmrg		cpu=i386
1089ab47cfaaSmrg		;;
10902b2b4fcbSmrg	ppc-* | ppcbe-*)
10912b2b4fcbSmrg		cpu=powerpc
1092ab47cfaaSmrg		;;
10932b2b4fcbSmrg	ppcle-* | powerpclittle-*)
10942b2b4fcbSmrg		cpu=powerpcle
1095ab47cfaaSmrg		;;
10962b2b4fcbSmrg	ppc64-*)
10972b2b4fcbSmrg		cpu=powerpc64
1098aa9e3350Smrg		;;
10992b2b4fcbSmrg	ppc64le-* | powerpc64little-*)
11002b2b4fcbSmrg		cpu=powerpc64le
1101ab47cfaaSmrg		;;
11022b2b4fcbSmrg	sb1-*)
11032b2b4fcbSmrg		cpu=mipsisa64sb1
1104ab47cfaaSmrg		;;
11052b2b4fcbSmrg	sb1el-*)
11062b2b4fcbSmrg		cpu=mipsisa64sb1el
11076aec45a7Smrg		;;
11082b2b4fcbSmrg	sh5e[lb]-*)
11092b2b4fcbSmrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
1110ab47cfaaSmrg		;;
11112b2b4fcbSmrg	spur-*)
11122b2b4fcbSmrg		cpu=spur
1113ab47cfaaSmrg		;;
11142b2b4fcbSmrg	strongarm-* | thumb-*)
11152b2b4fcbSmrg		cpu=arm
1116ab47cfaaSmrg		;;
11172b2b4fcbSmrg	tx39-*)
11182b2b4fcbSmrg		cpu=mipstx39
1119ab47cfaaSmrg		;;
11202b2b4fcbSmrg	tx39el-*)
11212b2b4fcbSmrg		cpu=mipstx39el
1122ab47cfaaSmrg		;;
11232b2b4fcbSmrg	x64-*)
11242b2b4fcbSmrg		cpu=x86_64
1125ab47cfaaSmrg		;;
11262b2b4fcbSmrg	xscale-* | xscalee[bl]-*)
11272b2b4fcbSmrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
1128ab47cfaaSmrg		;;
11292b2b4fcbSmrg	arm64-* | aarch64le-*)
11302b2b4fcbSmrg		cpu=aarch64
1131ab47cfaaSmrg		;;
11322b2b4fcbSmrg
11332b2b4fcbSmrg	# Recognize the canonical CPU Types that limit and/or modify the
11342b2b4fcbSmrg	# company names they are paired with.
11352b2b4fcbSmrg	cr16-*)
11362b2b4fcbSmrg		basic_os=${basic_os:-elf}
1137ab47cfaaSmrg		;;
11382b2b4fcbSmrg	crisv32-* | etraxfs*-*)
11392b2b4fcbSmrg		cpu=crisv32
11402b2b4fcbSmrg		vendor=axis
1141ab47cfaaSmrg		;;
11422b2b4fcbSmrg	cris-* | etrax*-*)
11432b2b4fcbSmrg		cpu=cris
11442b2b4fcbSmrg		vendor=axis
1145ab47cfaaSmrg		;;
11462b2b4fcbSmrg	crx-*)
11472b2b4fcbSmrg		basic_os=${basic_os:-elf}
1148ab47cfaaSmrg		;;
11492b2b4fcbSmrg	neo-tandem)
11502b2b4fcbSmrg		cpu=neo
11512b2b4fcbSmrg		vendor=tandem
1152ab47cfaaSmrg		;;
11532b2b4fcbSmrg	nse-tandem)
11542b2b4fcbSmrg		cpu=nse
11552b2b4fcbSmrg		vendor=tandem
1156ab47cfaaSmrg		;;
11572b2b4fcbSmrg	nsr-tandem)
11582b2b4fcbSmrg		cpu=nsr
11592b2b4fcbSmrg		vendor=tandem
1160ab47cfaaSmrg		;;
11612b2b4fcbSmrg	nsv-tandem)
11622b2b4fcbSmrg		cpu=nsv
11632b2b4fcbSmrg		vendor=tandem
1164ab47cfaaSmrg		;;
11652b2b4fcbSmrg	nsx-tandem)
11662b2b4fcbSmrg		cpu=nsx
11672b2b4fcbSmrg		vendor=tandem
1168ab47cfaaSmrg		;;
11692b2b4fcbSmrg	mipsallegrexel-sony)
11702b2b4fcbSmrg		cpu=mipsallegrexel
11712b2b4fcbSmrg		vendor=sony
1172ab47cfaaSmrg		;;
11732b2b4fcbSmrg	tile*-*)
11742b2b4fcbSmrg		basic_os=${basic_os:-linux-gnu}
1175ab47cfaaSmrg		;;
11762b2b4fcbSmrg
1177ab47cfaaSmrg	*)
11782b2b4fcbSmrg		# Recognize the canonical CPU types that are allowed with any
11792b2b4fcbSmrg		# company name.
11802b2b4fcbSmrg		case $cpu in
11812b2b4fcbSmrg			1750a | 580 \
11822b2b4fcbSmrg			| a29k \
11832b2b4fcbSmrg			| aarch64 | aarch64_be \
11842b2b4fcbSmrg			| abacus \
11852b2b4fcbSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
11862b2b4fcbSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
11872b2b4fcbSmrg			| alphapca5[67] | alpha64pca5[67] \
11882b2b4fcbSmrg			| am33_2.0 \
11892b2b4fcbSmrg			| amdgcn \
11902b2b4fcbSmrg			| arc | arceb | arc32 | arc64 \
11912b2b4fcbSmrg			| arm | arm[lb]e | arme[lb] | armv* \
11922b2b4fcbSmrg			| avr | avr32 \
11932b2b4fcbSmrg			| asmjs \
11942b2b4fcbSmrg			| ba \
11952b2b4fcbSmrg			| be32 | be64 \
11962b2b4fcbSmrg			| bfin | bpf | bs2000 \
11972b2b4fcbSmrg			| c[123]* | c30 | [cjt]90 | c4x \
11982b2b4fcbSmrg			| c8051 | clipper | craynv | csky | cydra \
11992b2b4fcbSmrg			| d10v | d30v | dlx | dsp16xx \
12002b2b4fcbSmrg			| e2k | elxsi | epiphany \
12012b2b4fcbSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
12022b2b4fcbSmrg			| h8300 | h8500 \
12032b2b4fcbSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
12042b2b4fcbSmrg			| hexagon \
12052b2b4fcbSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
12062b2b4fcbSmrg			| ip2k | iq2000 \
12072b2b4fcbSmrg			| k1om \
12082b2b4fcbSmrg			| le32 | le64 \
12092b2b4fcbSmrg			| lm32 \
12102b2b4fcbSmrg			| loongarch32 | loongarch64 \
12112b2b4fcbSmrg			| m32c | m32r | m32rle \
12122b2b4fcbSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
12132b2b4fcbSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
12142b2b4fcbSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
12152b2b4fcbSmrg			| microblaze | microblazeel \
12162b2b4fcbSmrg			| mips | mipsbe | mipseb | mipsel | mipsle \
12172b2b4fcbSmrg			| mips16 \
12182b2b4fcbSmrg			| mips64 | mips64eb | mips64el \
12192b2b4fcbSmrg			| mips64octeon | mips64octeonel \
12202b2b4fcbSmrg			| mips64orion | mips64orionel \
12212b2b4fcbSmrg			| mips64r5900 | mips64r5900el \
12222b2b4fcbSmrg			| mips64vr | mips64vrel \
12232b2b4fcbSmrg			| mips64vr4100 | mips64vr4100el \
12242b2b4fcbSmrg			| mips64vr4300 | mips64vr4300el \
12252b2b4fcbSmrg			| mips64vr5000 | mips64vr5000el \
12262b2b4fcbSmrg			| mips64vr5900 | mips64vr5900el \
12272b2b4fcbSmrg			| mipsisa32 | mipsisa32el \
12282b2b4fcbSmrg			| mipsisa32r2 | mipsisa32r2el \
12292b2b4fcbSmrg			| mipsisa32r3 | mipsisa32r3el \
12302b2b4fcbSmrg			| mipsisa32r5 | mipsisa32r5el \
12312b2b4fcbSmrg			| mipsisa32r6 | mipsisa32r6el \
12322b2b4fcbSmrg			| mipsisa64 | mipsisa64el \
12332b2b4fcbSmrg			| mipsisa64r2 | mipsisa64r2el \
12342b2b4fcbSmrg			| mipsisa64r3 | mipsisa64r3el \
12352b2b4fcbSmrg			| mipsisa64r5 | mipsisa64r5el \
12362b2b4fcbSmrg			| mipsisa64r6 | mipsisa64r6el \
12372b2b4fcbSmrg			| mipsisa64sb1 | mipsisa64sb1el \
12382b2b4fcbSmrg			| mipsisa64sr71k | mipsisa64sr71kel \
12392b2b4fcbSmrg			| mipsr5900 | mipsr5900el \
12402b2b4fcbSmrg			| mipstx39 | mipstx39el \
12412b2b4fcbSmrg			| mmix \
12422b2b4fcbSmrg			| mn10200 | mn10300 \
12432b2b4fcbSmrg			| moxie \
12442b2b4fcbSmrg			| mt \
12452b2b4fcbSmrg			| msp430 \
12462b2b4fcbSmrg			| nds32 | nds32le | nds32be \
12472b2b4fcbSmrg			| nfp \
12482b2b4fcbSmrg			| nios | nios2 | nios2eb | nios2el \
12492b2b4fcbSmrg			| none | np1 | ns16k | ns32k | nvptx \
12502b2b4fcbSmrg			| open8 \
12512b2b4fcbSmrg			| or1k* \
12522b2b4fcbSmrg			| or32 \
12532b2b4fcbSmrg			| orion \
12542b2b4fcbSmrg			| picochip \
12552b2b4fcbSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
12562b2b4fcbSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
12572b2b4fcbSmrg			| pru \
12582b2b4fcbSmrg			| pyramid \
12592b2b4fcbSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
12602b2b4fcbSmrg			| rl78 | romp | rs6000 | rx \
12612b2b4fcbSmrg			| s390 | s390x \
12622b2b4fcbSmrg			| score \
12632b2b4fcbSmrg			| sh | shl \
12642b2b4fcbSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
12652b2b4fcbSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
12662b2b4fcbSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
12672b2b4fcbSmrg			| sparclite \
12682b2b4fcbSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
12692b2b4fcbSmrg			| spu \
12702b2b4fcbSmrg			| tahoe \
12712b2b4fcbSmrg			| thumbv7* \
12722b2b4fcbSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
12732b2b4fcbSmrg			| tron \
12742b2b4fcbSmrg			| ubicom32 \
12752b2b4fcbSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
12762b2b4fcbSmrg			| vax \
12772b2b4fcbSmrg			| visium \
12782b2b4fcbSmrg			| w65 \
12792b2b4fcbSmrg			| wasm32 | wasm64 \
12802b2b4fcbSmrg			| we32k \
12812b2b4fcbSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
12822b2b4fcbSmrg			| xstormy16 | xtensa* \
12832b2b4fcbSmrg			| ymp \
12842b2b4fcbSmrg			| z8k | z80)
12852b2b4fcbSmrg				;;
12862b2b4fcbSmrg
12872b2b4fcbSmrg			*)
12882b2b4fcbSmrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
12892b2b4fcbSmrg				exit 1
12902b2b4fcbSmrg				;;
12912b2b4fcbSmrg		esac
1292ab47cfaaSmrg		;;
1293ab47cfaaSmrgesac
1294ab47cfaaSmrg
1295ab47cfaaSmrg# Here we canonicalize certain aliases for manufacturers.
12962b2b4fcbSmrgcase $vendor in
12972b2b4fcbSmrg	digital*)
12982b2b4fcbSmrg		vendor=dec
1299ab47cfaaSmrg		;;
13002b2b4fcbSmrg	commodore*)
13012b2b4fcbSmrg		vendor=cbm
1302ab47cfaaSmrg		;;
1303ab47cfaaSmrg	*)
1304ab47cfaaSmrg		;;
1305ab47cfaaSmrgesac
1306ab47cfaaSmrg
1307ab47cfaaSmrg# Decode manufacturer-specific aliases for certain operating systems.
1308ab47cfaaSmrg
13092b2b4fcbSmrgif test x$basic_os != x
1310ab47cfaaSmrgthen
13112b2b4fcbSmrg
13122b2b4fcbSmrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
13132b2b4fcbSmrg# set os.
13142b2b4fcbSmrgcase $basic_os in
13152b2b4fcbSmrg	gnu/linux*)
13162b2b4fcbSmrg		kernel=linux
13172b2b4fcbSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
13182b2b4fcbSmrg		;;
13192b2b4fcbSmrg	os2-emx)
13202b2b4fcbSmrg		kernel=os2
13212b2b4fcbSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
13222b2b4fcbSmrg		;;
13232b2b4fcbSmrg	nto-qnx*)
13242b2b4fcbSmrg		kernel=nto
13252b2b4fcbSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
13262b2b4fcbSmrg		;;
13272b2b4fcbSmrg	*-*)
13282b2b4fcbSmrg		# shellcheck disable=SC2162
13292b2b4fcbSmrg		saved_IFS=$IFS
13302b2b4fcbSmrg		IFS="-" read kernel os <<EOF
13312b2b4fcbSmrg$basic_os
13322b2b4fcbSmrgEOF
13332b2b4fcbSmrg		IFS=$saved_IFS
13342b2b4fcbSmrg		;;
13352b2b4fcbSmrg	# Default OS when just kernel was specified
13362b2b4fcbSmrg	nto*)
13372b2b4fcbSmrg		kernel=nto
13382b2b4fcbSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
13392b2b4fcbSmrg		;;
13402b2b4fcbSmrg	linux*)
13412b2b4fcbSmrg		kernel=linux
13422b2b4fcbSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
13432b2b4fcbSmrg		;;
13442b2b4fcbSmrg	managarm*)
13452b2b4fcbSmrg		kernel=managarm
13462b2b4fcbSmrg		os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
13476aec45a7Smrg		;;
13482b2b4fcbSmrg	*)
13492b2b4fcbSmrg		kernel=
13502b2b4fcbSmrg		os=$basic_os
1351ab47cfaaSmrg		;;
13522b2b4fcbSmrgesac
13532b2b4fcbSmrg
13542b2b4fcbSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
13552b2b4fcbSmrg# etc.)
13562b2b4fcbSmrgcase $os in
13572b2b4fcbSmrg	# First match some system type aliases that might get confused
13582b2b4fcbSmrg	# with valid system types.
13592b2b4fcbSmrg	# solaris* is a basic system type, with this one exception.
13602b2b4fcbSmrg	auroraux)
13612b2b4fcbSmrg		os=auroraux
1362ab47cfaaSmrg		;;
13632b2b4fcbSmrg	bluegene*)
13642b2b4fcbSmrg		os=cnk
1365ab47cfaaSmrg		;;
13662b2b4fcbSmrg	solaris1 | solaris1.*)
13672b2b4fcbSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
1368ab47cfaaSmrg		;;
13692b2b4fcbSmrg	solaris)
13702b2b4fcbSmrg		os=solaris2
1371ab47cfaaSmrg		;;
13722b2b4fcbSmrg	unixware*)
13732b2b4fcbSmrg		os=sysv4.2uw
1374ab47cfaaSmrg		;;
13752b2b4fcbSmrg	# es1800 is here to avoid being matched by es* (a different OS)
13762b2b4fcbSmrg	es1800*)
13772b2b4fcbSmrg		os=ose
1378ab47cfaaSmrg		;;
13792b2b4fcbSmrg	# Some version numbers need modification
13802b2b4fcbSmrg	chorusos*)
13812b2b4fcbSmrg		os=chorusos
1382ab47cfaaSmrg		;;
13832b2b4fcbSmrg	isc)
13842b2b4fcbSmrg		os=isc2.2
1385ab47cfaaSmrg		;;
13862b2b4fcbSmrg	sco6)
13872b2b4fcbSmrg		os=sco5v6
1388ab47cfaaSmrg		;;
13892b2b4fcbSmrg	sco5)
13902b2b4fcbSmrg		os=sco3.2v5
1391ab47cfaaSmrg		;;
13922b2b4fcbSmrg	sco4)
13932b2b4fcbSmrg		os=sco3.2v4
1394ab47cfaaSmrg		;;
13952b2b4fcbSmrg	sco3.2.[4-9]*)
13962b2b4fcbSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
1397ab47cfaaSmrg		;;
13982b2b4fcbSmrg	sco*v* | scout)
13992b2b4fcbSmrg		# Don't match below
1400ab47cfaaSmrg		;;
14012b2b4fcbSmrg	sco*)
14022b2b4fcbSmrg		os=sco3.2v2
1403ab47cfaaSmrg		;;
14042b2b4fcbSmrg	psos*)
14052b2b4fcbSmrg		os=psos
1406ab47cfaaSmrg		;;
14072b2b4fcbSmrg	qnx*)
14082b2b4fcbSmrg		os=qnx
1409ab47cfaaSmrg		;;
14102b2b4fcbSmrg	hiux*)
14112b2b4fcbSmrg		os=hiuxwe2
1412ab47cfaaSmrg		;;
14132b2b4fcbSmrg	lynx*178)
14142b2b4fcbSmrg		os=lynxos178
1415ab47cfaaSmrg		;;
14162b2b4fcbSmrg	lynx*5)
14172b2b4fcbSmrg		os=lynxos5
1418ab47cfaaSmrg		;;
14192b2b4fcbSmrg	lynxos*)
14202b2b4fcbSmrg		# don't get caught up in next wildcard
1421ab47cfaaSmrg		;;
14222b2b4fcbSmrg	lynx*)
14232b2b4fcbSmrg		os=lynxos
1424ab47cfaaSmrg		;;
14252b2b4fcbSmrg	mac[0-9]*)
14262b2b4fcbSmrg		os=`echo "$os" | sed -e 's|mac|macos|'`
1427ab47cfaaSmrg		;;
14282b2b4fcbSmrg	opened*)
14292b2b4fcbSmrg		os=openedition
1430ab47cfaaSmrg		;;
14312b2b4fcbSmrg	os400*)
14322b2b4fcbSmrg		os=os400
1433ab47cfaaSmrg		;;
14342b2b4fcbSmrg	sunos5*)
14352b2b4fcbSmrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
1436ab47cfaaSmrg		;;
14372b2b4fcbSmrg	sunos6*)
14382b2b4fcbSmrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
1439ab47cfaaSmrg		;;
14402b2b4fcbSmrg	wince*)
14412b2b4fcbSmrg		os=wince
1442ab47cfaaSmrg		;;
14432b2b4fcbSmrg	utek*)
14442b2b4fcbSmrg		os=bsd
1445ab47cfaaSmrg		;;
14462b2b4fcbSmrg	dynix*)
14472b2b4fcbSmrg		os=bsd
14482b2b4fcbSmrg		;;
14492b2b4fcbSmrg	acis*)
14502b2b4fcbSmrg		os=aos
1451ab47cfaaSmrg		;;
14522b2b4fcbSmrg	atheos*)
14532b2b4fcbSmrg		os=atheos
1454ab47cfaaSmrg		;;
14552b2b4fcbSmrg	syllable*)
14562b2b4fcbSmrg		os=syllable
1457ab47cfaaSmrg		;;
14582b2b4fcbSmrg	386bsd)
14592b2b4fcbSmrg		os=bsd
1460ab47cfaaSmrg		;;
14612b2b4fcbSmrg	ctix* | uts*)
14622b2b4fcbSmrg		os=sysv
1463ab47cfaaSmrg		;;
14642b2b4fcbSmrg	nova*)
14652b2b4fcbSmrg		os=rtmk-nova
1466ab47cfaaSmrg		;;
14672b2b4fcbSmrg	ns2)
14682b2b4fcbSmrg		os=nextstep2
1469ab47cfaaSmrg		;;
14702b2b4fcbSmrg	# Preserve the version number of sinix5.
14712b2b4fcbSmrg	sinix5.*)
14722b2b4fcbSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
1473ab47cfaaSmrg		;;
14742b2b4fcbSmrg	sinix*)
14752b2b4fcbSmrg		os=sysv4
1476ab47cfaaSmrg		;;
14772b2b4fcbSmrg	tpf*)
14782b2b4fcbSmrg		os=tpf
1479ab47cfaaSmrg		;;
14802b2b4fcbSmrg	triton*)
14812b2b4fcbSmrg		os=sysv3
1482ab47cfaaSmrg		;;
14832b2b4fcbSmrg	oss*)
14842b2b4fcbSmrg		os=sysv3
1485ab47cfaaSmrg		;;
14862b2b4fcbSmrg	svr4*)
14872b2b4fcbSmrg		os=sysv4
1488ab47cfaaSmrg		;;
14892b2b4fcbSmrg	svr3)
14902b2b4fcbSmrg		os=sysv3
1491ab47cfaaSmrg		;;
14922b2b4fcbSmrg	sysvr4)
14932b2b4fcbSmrg		os=sysv4
1494ab47cfaaSmrg		;;
14952b2b4fcbSmrg	ose*)
14962b2b4fcbSmrg		os=ose
14976aec45a7Smrg		;;
14982b2b4fcbSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
14992b2b4fcbSmrg		os=mint
1500aa9e3350Smrg		;;
15012b2b4fcbSmrg	dicos*)
15022b2b4fcbSmrg		os=dicos
1503300bf1aeSmrg		;;
15042b2b4fcbSmrg	pikeos*)
15052b2b4fcbSmrg		# Until real need of OS specific support for
15062b2b4fcbSmrg		# particular features comes up, bare metal
15072b2b4fcbSmrg		# configurations are quite functional.
15082b2b4fcbSmrg		case $cpu in
15092b2b4fcbSmrg		    arm*)
15102b2b4fcbSmrg			os=eabi
15112b2b4fcbSmrg			;;
15122b2b4fcbSmrg		    *)
15132b2b4fcbSmrg			os=elf
15142b2b4fcbSmrg			;;
15152b2b4fcbSmrg		esac
1516ab47cfaaSmrg		;;
1517ab47cfaaSmrg	*)
15182b2b4fcbSmrg		# No normalization, but not necessarily accepted, that comes below.
1519ab47cfaaSmrg		;;
1520ab47cfaaSmrgesac
15212b2b4fcbSmrg
1522ab47cfaaSmrgelse
1523ab47cfaaSmrg
1524ab47cfaaSmrg# Here we handle the default operating systems that come with various machines.
1525ab47cfaaSmrg# The value should be what the vendor currently ships out the door with their
1526ab47cfaaSmrg# machine or put another way, the most popular os provided with the machine.
1527ab47cfaaSmrg
1528ab47cfaaSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
1529ab47cfaaSmrg# "-sun"), then you have to tell the case statement up towards the top
1530ab47cfaaSmrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
1531ab47cfaaSmrg# will signal an error saying that MANUFACTURER isn't an operating
1532ab47cfaaSmrg# system, and we'll never get to this point.
1533ab47cfaaSmrg
15342b2b4fcbSmrgkernel=
15352b2b4fcbSmrgcase $cpu-$vendor in
1536aa9e3350Smrg	score-*)
15372b2b4fcbSmrg		os=elf
1538ab47cfaaSmrg		;;
1539aa9e3350Smrg	spu-*)
15402b2b4fcbSmrg		os=elf
1541ab47cfaaSmrg		;;
1542ab47cfaaSmrg	*-acorn)
15432b2b4fcbSmrg		os=riscix1.2
1544ab47cfaaSmrg		;;
1545ab47cfaaSmrg	arm*-rebel)
15462b2b4fcbSmrg		kernel=linux
15472b2b4fcbSmrg		os=gnu
1548ab47cfaaSmrg		;;
1549ab47cfaaSmrg	arm*-semi)
15502b2b4fcbSmrg		os=aout
1551ab47cfaaSmrg		;;
1552aa9e3350Smrg	c4x-* | tic4x-*)
15532b2b4fcbSmrg		os=coff
1554aa9e3350Smrg		;;
15551e449e82Smrg	c8051-*)
15562b2b4fcbSmrg		os=elf
15572b2b4fcbSmrg		;;
15582b2b4fcbSmrg	clipper-intergraph)
15592b2b4fcbSmrg		os=clix
15601e449e82Smrg		;;
15611e449e82Smrg	hexagon-*)
15622b2b4fcbSmrg		os=elf
15631e449e82Smrg		;;
1564aa9e3350Smrg	tic54x-*)
15652b2b4fcbSmrg		os=coff
1566aa9e3350Smrg		;;
1567aa9e3350Smrg	tic55x-*)
15682b2b4fcbSmrg		os=coff
1569aa9e3350Smrg		;;
1570aa9e3350Smrg	tic6x-*)
15712b2b4fcbSmrg		os=coff
1572ab47cfaaSmrg		;;
1573ab47cfaaSmrg	# This must come before the *-dec entry.
1574ab47cfaaSmrg	pdp10-*)
15752b2b4fcbSmrg		os=tops20
1576ab47cfaaSmrg		;;
1577ab47cfaaSmrg	pdp11-*)
15782b2b4fcbSmrg		os=none
1579ab47cfaaSmrg		;;
1580ab47cfaaSmrg	*-dec | vax-*)
15812b2b4fcbSmrg		os=ultrix4.2
1582ab47cfaaSmrg		;;
1583ab47cfaaSmrg	m68*-apollo)
15842b2b4fcbSmrg		os=domain
1585ab47cfaaSmrg		;;
1586ab47cfaaSmrg	i386-sun)
15872b2b4fcbSmrg		os=sunos4.0.2
1588ab47cfaaSmrg		;;
1589ab47cfaaSmrg	m68000-sun)
15902b2b4fcbSmrg		os=sunos3
1591ab47cfaaSmrg		;;
1592ab47cfaaSmrg	m68*-cisco)
15932b2b4fcbSmrg		os=aout
1594ab47cfaaSmrg		;;
1595aa9e3350Smrg	mep-*)
15962b2b4fcbSmrg		os=elf
15978697ee19Smrg		;;
1598ab47cfaaSmrg	mips*-cisco)
15992b2b4fcbSmrg		os=elf
1600ab47cfaaSmrg		;;
1601ab47cfaaSmrg	mips*-*)
16022b2b4fcbSmrg		os=elf
1603ab47cfaaSmrg		;;
1604ab47cfaaSmrg	or32-*)
16052b2b4fcbSmrg		os=coff
1606ab47cfaaSmrg		;;
1607ab47cfaaSmrg	*-tti)	# must be before sparc entry or we get the wrong os.
16082b2b4fcbSmrg		os=sysv3
1609ab47cfaaSmrg		;;
1610ab47cfaaSmrg	sparc-* | *-sun)
16112b2b4fcbSmrg		os=sunos4.1.1
1612ab47cfaaSmrg		;;
16132b2b4fcbSmrg	pru-*)
16142b2b4fcbSmrg		os=elf
1615ab47cfaaSmrg		;;
16162b2b4fcbSmrg	*-be)
16172b2b4fcbSmrg		os=beos
1618ab47cfaaSmrg		;;
1619ab47cfaaSmrg	*-ibm)
16202b2b4fcbSmrg		os=aix
1621ab47cfaaSmrg		;;
1622aa9e3350Smrg	*-knuth)
16232b2b4fcbSmrg		os=mmixware
1624ab47cfaaSmrg		;;
1625ab47cfaaSmrg	*-wec)
16262b2b4fcbSmrg		os=proelf
1627ab47cfaaSmrg		;;
1628ab47cfaaSmrg	*-winbond)
16292b2b4fcbSmrg		os=proelf
1630ab47cfaaSmrg		;;
1631ab47cfaaSmrg	*-oki)
16322b2b4fcbSmrg		os=proelf
1633ab47cfaaSmrg		;;
1634ab47cfaaSmrg	*-hp)
16352b2b4fcbSmrg		os=hpux
1636ab47cfaaSmrg		;;
1637ab47cfaaSmrg	*-hitachi)
16382b2b4fcbSmrg		os=hiux
1639ab47cfaaSmrg		;;
1640ab47cfaaSmrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
16412b2b4fcbSmrg		os=sysv
1642ab47cfaaSmrg		;;
1643ab47cfaaSmrg	*-cbm)
16442b2b4fcbSmrg		os=amigaos
1645ab47cfaaSmrg		;;
1646ab47cfaaSmrg	*-dg)
16472b2b4fcbSmrg		os=dgux
1648ab47cfaaSmrg		;;
1649ab47cfaaSmrg	*-dolphin)
16502b2b4fcbSmrg		os=sysv3
1651ab47cfaaSmrg		;;
1652ab47cfaaSmrg	m68k-ccur)
16532b2b4fcbSmrg		os=rtu
1654ab47cfaaSmrg		;;
1655ab47cfaaSmrg	m88k-omron*)
16562b2b4fcbSmrg		os=luna
1657ab47cfaaSmrg		;;
16582b2b4fcbSmrg	*-next)
16592b2b4fcbSmrg		os=nextstep
1660ab47cfaaSmrg		;;
1661ab47cfaaSmrg	*-sequent)
16622b2b4fcbSmrg		os=ptx
1663ab47cfaaSmrg		;;
1664ab47cfaaSmrg	*-crds)
16652b2b4fcbSmrg		os=unos
1666ab47cfaaSmrg		;;
1667ab47cfaaSmrg	*-ns)
16682b2b4fcbSmrg		os=genix
1669ab47cfaaSmrg		;;
1670ab47cfaaSmrg	i370-*)
16712b2b4fcbSmrg		os=mvs
1672ab47cfaaSmrg		;;
1673ab47cfaaSmrg	*-gould)
16742b2b4fcbSmrg		os=sysv
1675ab47cfaaSmrg		;;
1676ab47cfaaSmrg	*-highlevel)
16772b2b4fcbSmrg		os=bsd
1678ab47cfaaSmrg		;;
1679ab47cfaaSmrg	*-encore)
16802b2b4fcbSmrg		os=bsd
1681ab47cfaaSmrg		;;
1682ab47cfaaSmrg	*-sgi)
16832b2b4fcbSmrg		os=irix
1684ab47cfaaSmrg		;;
1685ab47cfaaSmrg	*-siemens)
16862b2b4fcbSmrg		os=sysv4
1687ab47cfaaSmrg		;;
1688ab47cfaaSmrg	*-masscomp)
16892b2b4fcbSmrg		os=rtu
1690ab47cfaaSmrg		;;
1691ab47cfaaSmrg	f30[01]-fujitsu | f700-fujitsu)
16922b2b4fcbSmrg		os=uxpv
1693ab47cfaaSmrg		;;
1694ab47cfaaSmrg	*-rom68k)
16952b2b4fcbSmrg		os=coff
1696ab47cfaaSmrg		;;
1697ab47cfaaSmrg	*-*bug)
16982b2b4fcbSmrg		os=coff
1699ab47cfaaSmrg		;;
1700ab47cfaaSmrg	*-apple)
17012b2b4fcbSmrg		os=macos
1702ab47cfaaSmrg		;;
1703ab47cfaaSmrg	*-atari*)
17042b2b4fcbSmrg		os=mint
17052b2b4fcbSmrg		;;
17062b2b4fcbSmrg	*-wrs)
17072b2b4fcbSmrg		os=vxworks
1708ab47cfaaSmrg		;;
1709ab47cfaaSmrg	*)
17102b2b4fcbSmrg		os=none
1711ab47cfaaSmrg		;;
1712ab47cfaaSmrgesac
17132b2b4fcbSmrg
1714ab47cfaaSmrgfi
1715ab47cfaaSmrg
17162b2b4fcbSmrg# Now, validate our (potentially fixed-up) OS.
17172b2b4fcbSmrgcase $os in
17182b2b4fcbSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
17192b2b4fcbSmrg	musl* | newlib* | relibc* | uclibc*)
17202b2b4fcbSmrg		;;
17212b2b4fcbSmrg	# Likewise for "kernel-abi"
17222b2b4fcbSmrg	eabi* | gnueabi*)
17232b2b4fcbSmrg		;;
17242b2b4fcbSmrg	# VxWorks passes extra cpu info in the 4th filed.
17252b2b4fcbSmrg	simlinux | simwindows | spe)
17262b2b4fcbSmrg		;;
17272b2b4fcbSmrg	# Now accept the basic system types.
17282b2b4fcbSmrg	# The portable systems comes first.
17292b2b4fcbSmrg	# Each alternative MUST end in a * to match a version number.
17302b2b4fcbSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
17312b2b4fcbSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
17322b2b4fcbSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
17332b2b4fcbSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
17342b2b4fcbSmrg	     | hiux* | abug | nacl* | netware* | windows* \
17352b2b4fcbSmrg	     | os9* | macos* | osx* | ios* \
17362b2b4fcbSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
17372b2b4fcbSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
17382b2b4fcbSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
17392b2b4fcbSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
17402b2b4fcbSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
17412b2b4fcbSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
17422b2b4fcbSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
17432b2b4fcbSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
17442b2b4fcbSmrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
17452b2b4fcbSmrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
17462b2b4fcbSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
17472b2b4fcbSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
17482b2b4fcbSmrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
17492b2b4fcbSmrg	     | midipix* | mingw32* | mingw64* | mint* \
17502b2b4fcbSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
17512b2b4fcbSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
17522b2b4fcbSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
17532b2b4fcbSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
17542b2b4fcbSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
17552b2b4fcbSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
17562b2b4fcbSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
17572b2b4fcbSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
17582b2b4fcbSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
17592b2b4fcbSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
17602b2b4fcbSmrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
17612b2b4fcbSmrg	     | fiwix* | mlibc* )
17622b2b4fcbSmrg		;;
17632b2b4fcbSmrg	# This one is extra strict with allowed versions
17642b2b4fcbSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
17652b2b4fcbSmrg		# Don't forget version if it is 3.2v4 or newer.
17662b2b4fcbSmrg		;;
17672b2b4fcbSmrg	none)
17682b2b4fcbSmrg		;;
17692b2b4fcbSmrg	kernel* )
17702b2b4fcbSmrg		# Restricted further below
17712b2b4fcbSmrg		;;
17722b2b4fcbSmrg	*)
17732b2b4fcbSmrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
17742b2b4fcbSmrg		exit 1
17752b2b4fcbSmrg		;;
17762b2b4fcbSmrgesac
17772b2b4fcbSmrg
17782b2b4fcbSmrg# As a final step for OS-related things, validate the OS-kernel combination
17792b2b4fcbSmrg# (given a valid OS), if there is a kernel.
17802b2b4fcbSmrgcase $kernel-$os in
17812b2b4fcbSmrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
17822b2b4fcbSmrg		   | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* )
17832b2b4fcbSmrg		;;
17842b2b4fcbSmrg	uclinux-uclibc* )
17852b2b4fcbSmrg		;;
17862b2b4fcbSmrg	managarm-mlibc* | managarm-kernel* )
17872b2b4fcbSmrg		;;
17882b2b4fcbSmrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* )
17892b2b4fcbSmrg		# These are just libc implementations, not actual OSes, and thus
17902b2b4fcbSmrg		# require a kernel.
17912b2b4fcbSmrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
17922b2b4fcbSmrg		exit 1
17932b2b4fcbSmrg		;;
17942b2b4fcbSmrg	-kernel* )
17952b2b4fcbSmrg		echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2
17962b2b4fcbSmrg		exit 1
17972b2b4fcbSmrg		;;
17982b2b4fcbSmrg	*-kernel* )
17992b2b4fcbSmrg		echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2
18002b2b4fcbSmrg		exit 1
18012b2b4fcbSmrg		;;
18022b2b4fcbSmrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
18032b2b4fcbSmrg		;;
18042b2b4fcbSmrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
18052b2b4fcbSmrg		;;
18062b2b4fcbSmrg	nto-qnx*)
18072b2b4fcbSmrg		;;
18082b2b4fcbSmrg	os2-emx)
18092b2b4fcbSmrg		;;
18102b2b4fcbSmrg	*-eabi* | *-gnueabi*)
18112b2b4fcbSmrg		;;
18122b2b4fcbSmrg	-*)
18132b2b4fcbSmrg		# Blank kernel with real OS is always fine.
18142b2b4fcbSmrg		;;
18152b2b4fcbSmrg	*-*)
18162b2b4fcbSmrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
18172b2b4fcbSmrg		exit 1
18182b2b4fcbSmrg		;;
18192b2b4fcbSmrgesac
18202b2b4fcbSmrg
1821ab47cfaaSmrg# Here we handle the case where we know the os, and the CPU type, but not the
1822ab47cfaaSmrg# manufacturer.  We pick the logical manufacturer.
18232b2b4fcbSmrgcase $vendor in
18242b2b4fcbSmrg	unknown)
18252b2b4fcbSmrg		case $cpu-$os in
18262b2b4fcbSmrg			*-riscix*)
1827ab47cfaaSmrg				vendor=acorn
1828ab47cfaaSmrg				;;
18292b2b4fcbSmrg			*-sunos*)
1830ab47cfaaSmrg				vendor=sun
1831ab47cfaaSmrg				;;
18322b2b4fcbSmrg			*-cnk* | *-aix*)
1833ab47cfaaSmrg				vendor=ibm
1834ab47cfaaSmrg				;;
18352b2b4fcbSmrg			*-beos*)
1836ab47cfaaSmrg				vendor=be
1837ab47cfaaSmrg				;;
18382b2b4fcbSmrg			*-hpux*)
1839ab47cfaaSmrg				vendor=hp
1840ab47cfaaSmrg				;;
18412b2b4fcbSmrg			*-mpeix*)
1842ab47cfaaSmrg				vendor=hp
1843ab47cfaaSmrg				;;
18442b2b4fcbSmrg			*-hiux*)
1845ab47cfaaSmrg				vendor=hitachi
1846ab47cfaaSmrg				;;
18472b2b4fcbSmrg			*-unos*)
1848ab47cfaaSmrg				vendor=crds
1849ab47cfaaSmrg				;;
18502b2b4fcbSmrg			*-dgux*)
1851ab47cfaaSmrg				vendor=dg
1852ab47cfaaSmrg				;;
18532b2b4fcbSmrg			*-luna*)
1854ab47cfaaSmrg				vendor=omron
1855ab47cfaaSmrg				;;
18562b2b4fcbSmrg			*-genix*)
1857ab47cfaaSmrg				vendor=ns
1858ab47cfaaSmrg				;;
18592b2b4fcbSmrg			*-clix*)
18602b2b4fcbSmrg				vendor=intergraph
18612b2b4fcbSmrg				;;
18622b2b4fcbSmrg			*-mvs* | *-opened*)
18632b2b4fcbSmrg				vendor=ibm
18642b2b4fcbSmrg				;;
18652b2b4fcbSmrg			*-os400*)
1866ab47cfaaSmrg				vendor=ibm
1867ab47cfaaSmrg				;;
18682b2b4fcbSmrg			s390-* | s390x-*)
1869ab47cfaaSmrg				vendor=ibm
1870ab47cfaaSmrg				;;
18712b2b4fcbSmrg			*-ptx*)
1872ab47cfaaSmrg				vendor=sequent
1873ab47cfaaSmrg				;;
18742b2b4fcbSmrg			*-tpf*)
1875ab47cfaaSmrg				vendor=ibm
1876ab47cfaaSmrg				;;
18772b2b4fcbSmrg			*-vxsim* | *-vxworks* | *-windiss*)
1878ab47cfaaSmrg				vendor=wrs
1879ab47cfaaSmrg				;;
18802b2b4fcbSmrg			*-aux*)
1881ab47cfaaSmrg				vendor=apple
1882ab47cfaaSmrg				;;
18832b2b4fcbSmrg			*-hms*)
1884ab47cfaaSmrg				vendor=hitachi
1885ab47cfaaSmrg				;;
18862b2b4fcbSmrg			*-mpw* | *-macos*)
1887ab47cfaaSmrg				vendor=apple
1888ab47cfaaSmrg				;;
18892b2b4fcbSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
1890ab47cfaaSmrg				vendor=atari
1891ab47cfaaSmrg				;;
18922b2b4fcbSmrg			*-vos*)
1893ab47cfaaSmrg				vendor=stratus
1894ab47cfaaSmrg				;;
1895ab47cfaaSmrg		esac
1896ab47cfaaSmrg		;;
1897ab47cfaaSmrgesac
1898ab47cfaaSmrg
18992b2b4fcbSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
1900ab47cfaaSmrgexit
1901ab47cfaaSmrg
1902ab47cfaaSmrg# Local variables:
19032b2b4fcbSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
1904ab47cfaaSmrg# time-stamp-start: "timestamp='"
1905ab47cfaaSmrg# time-stamp-format: "%:y-%02m-%02d"
1906ab47cfaaSmrg# time-stamp-end: "'"
1907ab47cfaaSmrg# End:
1908