1fe5e51b7Smrg#! /bin/sh
2fe5e51b7Smrg# Configuration validation subroutine script.
31e423a8fSmrg#   Copyright 1992-2021 Free Software Foundation, Inc.
4fe5e51b7Smrg
51e423a8fSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
61e423a8fSmrg
71e423a8fSmrgtimestamp='2021-08-14'
8fe5e51b7Smrg
9493f84f4Smrg# This file is free software; you can redistribute it and/or modify it
10493f84f4Smrg# under the terms of the GNU General Public License as published by
11493f84f4Smrg# the Free Software Foundation; either version 3 of the License, or
12fe5e51b7Smrg# (at your option) any later version.
13fe5e51b7Smrg#
14493f84f4Smrg# This program is distributed in the hope that it will be useful, but
15493f84f4Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
16493f84f4Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17493f84f4Smrg# General Public License for more details.
18fe5e51b7Smrg#
19fe5e51b7Smrg# You should have received a copy of the GNU General Public License
201e423a8fSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
21fe5e51b7Smrg#
22fe5e51b7Smrg# As a special exception to the GNU General Public License, if you
23fe5e51b7Smrg# distribute this file as part of a program that contains a
24fe5e51b7Smrg# configuration script generated by Autoconf, you may include it under
25493f84f4Smrg# the same distribution terms that you use for the rest of that
26493f84f4Smrg# program.  This Exception is an additional permission under section 7
27493f84f4Smrg# of the GNU General Public License, version 3 ("GPLv3").
28fe5e51b7Smrg
29fe5e51b7Smrg
30ee82cb62Smrg# Please send patches to <config-patches@gnu.org>.
31fe5e51b7Smrg#
32fe5e51b7Smrg# Configuration subroutine to validate and canonicalize a configuration type.
33fe5e51b7Smrg# Supply the specified configuration type as an argument.
34fe5e51b7Smrg# If it is invalid, we print an error message on stderr and exit with code 1.
35fe5e51b7Smrg# Otherwise, we print the canonical config type on stdout and succeed.
36fe5e51b7Smrg
370bb88ba4Smrg# You can get the latest version of this script from:
381e423a8fSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
390bb88ba4Smrg
40fe5e51b7Smrg# This file is supposed to be the same for all GNU packages
41fe5e51b7Smrg# and recognize all the CPU types, system types and aliases
42fe5e51b7Smrg# that are meaningful with *any* GNU software.
43fe5e51b7Smrg# Each package is responsible for reporting which valid configurations
44fe5e51b7Smrg# it does not support.  The user should be able to distinguish
45fe5e51b7Smrg# a failure to support a valid configuration from a meaningless
46fe5e51b7Smrg# configuration.
47fe5e51b7Smrg
48fe5e51b7Smrg# The goal of this file is to map all the various variations of a given
49fe5e51b7Smrg# machine specification into a single specification in the form:
50fe5e51b7Smrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
51fe5e51b7Smrg# or in some cases, the newer four-part form:
52fe5e51b7Smrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
53fe5e51b7Smrg# It is wrong to echo any other type of specification.
54fe5e51b7Smrg
551e423a8fSmrg# The "shellcheck disable" line above the timestamp inhibits complaints
561e423a8fSmrg# about features and limitations of the classic Bourne shell that were
571e423a8fSmrg# superseded or lifted in POSIX.  However, this script identifies a wide
581e423a8fSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
591e423a8fSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still
601e423a8fSmrg# have a pre-POSIX /bin/sh.
611e423a8fSmrg
62fe5e51b7Smrgme=`echo "$0" | sed -e 's,.*/,,'`
63fe5e51b7Smrg
64fe5e51b7Smrgusage="\
651e423a8fSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
66fe5e51b7Smrg
67fe5e51b7SmrgCanonicalize a configuration name.
68fe5e51b7Smrg
691e423a8fSmrgOptions:
70fe5e51b7Smrg  -h, --help         print this help, then exit
71fe5e51b7Smrg  -t, --time-stamp   print date of last modification, then exit
72fe5e51b7Smrg  -v, --version      print version number, then exit
73fe5e51b7Smrg
74fe5e51b7SmrgReport bugs and patches to <config-patches@gnu.org>."
75fe5e51b7Smrg
76fe5e51b7Smrgversion="\
77fe5e51b7SmrgGNU config.sub ($timestamp)
78fe5e51b7Smrg
791e423a8fSmrgCopyright 1992-2021 Free Software Foundation, Inc.
80fe5e51b7Smrg
81fe5e51b7SmrgThis is free software; see the source for copying conditions.  There is NO
82fe5e51b7Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
83fe5e51b7Smrg
84fe5e51b7Smrghelp="
85fe5e51b7SmrgTry \`$me --help' for more information."
86fe5e51b7Smrg
87fe5e51b7Smrg# Parse command line
88fe5e51b7Smrgwhile test $# -gt 0 ; do
89fe5e51b7Smrg  case $1 in
90fe5e51b7Smrg    --time-stamp | --time* | -t )
91fe5e51b7Smrg       echo "$timestamp" ; exit ;;
92fe5e51b7Smrg    --version | -v )
93fe5e51b7Smrg       echo "$version" ; exit ;;
94fe5e51b7Smrg    --help | --h* | -h )
95fe5e51b7Smrg       echo "$usage"; exit ;;
96fe5e51b7Smrg    -- )     # Stop option processing
97fe5e51b7Smrg       shift; break ;;
98fe5e51b7Smrg    - )	# Use stdin as input.
99fe5e51b7Smrg       break ;;
100fe5e51b7Smrg    -* )
1011e423a8fSmrg       echo "$me: invalid option $1$help" >&2
102fe5e51b7Smrg       exit 1 ;;
103fe5e51b7Smrg
104fe5e51b7Smrg    *local*)
105fe5e51b7Smrg       # First pass through any local machine types.
1061e423a8fSmrg       echo "$1"
107fe5e51b7Smrg       exit ;;
108fe5e51b7Smrg
109fe5e51b7Smrg    * )
110fe5e51b7Smrg       break ;;
111fe5e51b7Smrg  esac
112fe5e51b7Smrgdone
113fe5e51b7Smrg
114fe5e51b7Smrgcase $# in
115fe5e51b7Smrg 0) echo "$me: missing argument$help" >&2
116fe5e51b7Smrg    exit 1;;
117fe5e51b7Smrg 1) ;;
118fe5e51b7Smrg *) echo "$me: too many arguments$help" >&2
119fe5e51b7Smrg    exit 1;;
120fe5e51b7Smrgesac
121fe5e51b7Smrg
1221e423a8fSmrg# Split fields of configuration type
1231e423a8fSmrg# shellcheck disable=SC2162
1241e423a8fSmrgsaved_IFS=$IFS
1251e423a8fSmrgIFS="-" read field1 field2 field3 field4 <<EOF
1261e423a8fSmrg$1
1271e423a8fSmrgEOF
1281e423a8fSmrgIFS=$saved_IFS
129fe5e51b7Smrg
1301e423a8fSmrg# Separate into logical components for further validation
1311e423a8fSmrgcase $1 in
1321e423a8fSmrg	*-*-*-*-*)
1331e423a8fSmrg		echo Invalid configuration \`"$1"\': more than four components >&2
1341e423a8fSmrg		exit 1
135fe5e51b7Smrg		;;
1361e423a8fSmrg	*-*-*-*)
1371e423a8fSmrg		basic_machine=$field1-$field2
1381e423a8fSmrg		basic_os=$field3-$field4
139fe5e51b7Smrg		;;
1401e423a8fSmrg	*-*-*)
1411e423a8fSmrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
1421e423a8fSmrg		# parts
1431e423a8fSmrg		maybe_os=$field2-$field3
1441e423a8fSmrg		case $maybe_os in
1451e423a8fSmrg			nto-qnx* | linux-* | uclinux-uclibc* \
1461e423a8fSmrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
1471e423a8fSmrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
1481e423a8fSmrg			| storm-chaos* | os2-emx* | rtmk-nova*)
1491e423a8fSmrg				basic_machine=$field1
1501e423a8fSmrg				basic_os=$maybe_os
1511e423a8fSmrg				;;
1521e423a8fSmrg			android-linux)
1531e423a8fSmrg				basic_machine=$field1-unknown
1541e423a8fSmrg				basic_os=linux-android
1551e423a8fSmrg				;;
1561e423a8fSmrg			*)
1571e423a8fSmrg				basic_machine=$field1-$field2
1581e423a8fSmrg				basic_os=$field3
1591e423a8fSmrg				;;
1601e423a8fSmrg		esac
161fe5e51b7Smrg		;;
1621e423a8fSmrg	*-*)
1631e423a8fSmrg		# A lone config we happen to match not fitting any pattern
1641e423a8fSmrg		case $field1-$field2 in
1651e423a8fSmrg			decstation-3100)
1661e423a8fSmrg				basic_machine=mips-dec
1671e423a8fSmrg				basic_os=
1681e423a8fSmrg				;;
1691e423a8fSmrg			*-*)
1701e423a8fSmrg				# Second component is usually, but not always the OS
1711e423a8fSmrg				case $field2 in
1721e423a8fSmrg					# Prevent following clause from handling this valid os
1731e423a8fSmrg					sun*os*)
1741e423a8fSmrg						basic_machine=$field1
1751e423a8fSmrg						basic_os=$field2
1761e423a8fSmrg						;;
1771e423a8fSmrg					zephyr*)
1781e423a8fSmrg						basic_machine=$field1-unknown
1791e423a8fSmrg						basic_os=$field2
1801e423a8fSmrg						;;
1811e423a8fSmrg					# Manufacturers
1821e423a8fSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
1831e423a8fSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
1841e423a8fSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
1851e423a8fSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
1861e423a8fSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
1871e423a8fSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
1881e423a8fSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
1891e423a8fSmrg					| microblaze* | sim | cisco \
1901e423a8fSmrg					| oki | wec | wrs | winbond)
1911e423a8fSmrg						basic_machine=$field1-$field2
1921e423a8fSmrg						basic_os=
1931e423a8fSmrg						;;
1941e423a8fSmrg					*)
1951e423a8fSmrg						basic_machine=$field1
1961e423a8fSmrg						basic_os=$field2
1971e423a8fSmrg						;;
1981e423a8fSmrg				esac
1991e423a8fSmrg			;;
2001e423a8fSmrg		esac
201fe5e51b7Smrg		;;
2021e423a8fSmrg	*)
2031e423a8fSmrg		# Convert single-component short-hands not valid as part of
2041e423a8fSmrg		# multi-component configurations.
2051e423a8fSmrg		case $field1 in
2061e423a8fSmrg			386bsd)
2071e423a8fSmrg				basic_machine=i386-pc
2081e423a8fSmrg				basic_os=bsd
2091e423a8fSmrg				;;
2101e423a8fSmrg			a29khif)
2111e423a8fSmrg				basic_machine=a29k-amd
2121e423a8fSmrg				basic_os=udi
2131e423a8fSmrg				;;
2141e423a8fSmrg			adobe68k)
2151e423a8fSmrg				basic_machine=m68010-adobe
2161e423a8fSmrg				basic_os=scout
2171e423a8fSmrg				;;
2181e423a8fSmrg			alliant)
2191e423a8fSmrg				basic_machine=fx80-alliant
2201e423a8fSmrg				basic_os=
2211e423a8fSmrg				;;
2221e423a8fSmrg			altos | altos3068)
2231e423a8fSmrg				basic_machine=m68k-altos
2241e423a8fSmrg				basic_os=
2251e423a8fSmrg				;;
2261e423a8fSmrg			am29k)
2271e423a8fSmrg				basic_machine=a29k-none
2281e423a8fSmrg				basic_os=bsd
2291e423a8fSmrg				;;
2301e423a8fSmrg			amdahl)
2311e423a8fSmrg				basic_machine=580-amdahl
2321e423a8fSmrg				basic_os=sysv
2331e423a8fSmrg				;;
2341e423a8fSmrg			amiga)
2351e423a8fSmrg				basic_machine=m68k-unknown
2361e423a8fSmrg				basic_os=
2371e423a8fSmrg				;;
2381e423a8fSmrg			amigaos | amigados)
2391e423a8fSmrg				basic_machine=m68k-unknown
2401e423a8fSmrg				basic_os=amigaos
2411e423a8fSmrg				;;
2421e423a8fSmrg			amigaunix | amix)
2431e423a8fSmrg				basic_machine=m68k-unknown
2441e423a8fSmrg				basic_os=sysv4
2451e423a8fSmrg				;;
2461e423a8fSmrg			apollo68)
2471e423a8fSmrg				basic_machine=m68k-apollo
2481e423a8fSmrg				basic_os=sysv
2491e423a8fSmrg				;;
2501e423a8fSmrg			apollo68bsd)
2511e423a8fSmrg				basic_machine=m68k-apollo
2521e423a8fSmrg				basic_os=bsd
2531e423a8fSmrg				;;
2541e423a8fSmrg			aros)
2551e423a8fSmrg				basic_machine=i386-pc
2561e423a8fSmrg				basic_os=aros
2571e423a8fSmrg				;;
2581e423a8fSmrg			aux)
2591e423a8fSmrg				basic_machine=m68k-apple
2601e423a8fSmrg				basic_os=aux
2611e423a8fSmrg				;;
2621e423a8fSmrg			balance)
2631e423a8fSmrg				basic_machine=ns32k-sequent
2641e423a8fSmrg				basic_os=dynix
2651e423a8fSmrg				;;
2661e423a8fSmrg			blackfin)
2671e423a8fSmrg				basic_machine=bfin-unknown
2681e423a8fSmrg				basic_os=linux
2691e423a8fSmrg				;;
2701e423a8fSmrg			cegcc)
2711e423a8fSmrg				basic_machine=arm-unknown
2721e423a8fSmrg				basic_os=cegcc
2731e423a8fSmrg				;;
2741e423a8fSmrg			convex-c1)
2751e423a8fSmrg				basic_machine=c1-convex
2761e423a8fSmrg				basic_os=bsd
2771e423a8fSmrg				;;
2781e423a8fSmrg			convex-c2)
2791e423a8fSmrg				basic_machine=c2-convex
2801e423a8fSmrg				basic_os=bsd
2811e423a8fSmrg				;;
2821e423a8fSmrg			convex-c32)
2831e423a8fSmrg				basic_machine=c32-convex
2841e423a8fSmrg				basic_os=bsd
2851e423a8fSmrg				;;
2861e423a8fSmrg			convex-c34)
2871e423a8fSmrg				basic_machine=c34-convex
2881e423a8fSmrg				basic_os=bsd
2891e423a8fSmrg				;;
2901e423a8fSmrg			convex-c38)
2911e423a8fSmrg				basic_machine=c38-convex
2921e423a8fSmrg				basic_os=bsd
2931e423a8fSmrg				;;
2941e423a8fSmrg			cray)
2951e423a8fSmrg				basic_machine=j90-cray
2961e423a8fSmrg				basic_os=unicos
2971e423a8fSmrg				;;
2981e423a8fSmrg			crds | unos)
2991e423a8fSmrg				basic_machine=m68k-crds
3001e423a8fSmrg				basic_os=
3011e423a8fSmrg				;;
3021e423a8fSmrg			da30)
3031e423a8fSmrg				basic_machine=m68k-da30
3041e423a8fSmrg				basic_os=
3051e423a8fSmrg				;;
3061e423a8fSmrg			decstation | pmax | pmin | dec3100 | decstatn)
3071e423a8fSmrg				basic_machine=mips-dec
3081e423a8fSmrg				basic_os=
3091e423a8fSmrg				;;
3101e423a8fSmrg			delta88)
3111e423a8fSmrg				basic_machine=m88k-motorola
3121e423a8fSmrg				basic_os=sysv3
3131e423a8fSmrg				;;
3141e423a8fSmrg			dicos)
3151e423a8fSmrg				basic_machine=i686-pc
3161e423a8fSmrg				basic_os=dicos
3171e423a8fSmrg				;;
3181e423a8fSmrg			djgpp)
3191e423a8fSmrg				basic_machine=i586-pc
3201e423a8fSmrg				basic_os=msdosdjgpp
3211e423a8fSmrg				;;
3221e423a8fSmrg			ebmon29k)
3231e423a8fSmrg				basic_machine=a29k-amd
3241e423a8fSmrg				basic_os=ebmon
3251e423a8fSmrg				;;
3261e423a8fSmrg			es1800 | OSE68k | ose68k | ose | OSE)
3271e423a8fSmrg				basic_machine=m68k-ericsson
3281e423a8fSmrg				basic_os=ose
3291e423a8fSmrg				;;
3301e423a8fSmrg			gmicro)
3311e423a8fSmrg				basic_machine=tron-gmicro
3321e423a8fSmrg				basic_os=sysv
3331e423a8fSmrg				;;
3341e423a8fSmrg			go32)
3351e423a8fSmrg				basic_machine=i386-pc
3361e423a8fSmrg				basic_os=go32
3371e423a8fSmrg				;;
3381e423a8fSmrg			h8300hms)
3391e423a8fSmrg				basic_machine=h8300-hitachi
3401e423a8fSmrg				basic_os=hms
3411e423a8fSmrg				;;
3421e423a8fSmrg			h8300xray)
3431e423a8fSmrg				basic_machine=h8300-hitachi
3441e423a8fSmrg				basic_os=xray
3451e423a8fSmrg				;;
3461e423a8fSmrg			h8500hms)
3471e423a8fSmrg				basic_machine=h8500-hitachi
3481e423a8fSmrg				basic_os=hms
3491e423a8fSmrg				;;
3501e423a8fSmrg			harris)
3511e423a8fSmrg				basic_machine=m88k-harris
3521e423a8fSmrg				basic_os=sysv3
3531e423a8fSmrg				;;
3541e423a8fSmrg			hp300 | hp300hpux)
3551e423a8fSmrg				basic_machine=m68k-hp
3561e423a8fSmrg				basic_os=hpux
3571e423a8fSmrg				;;
3581e423a8fSmrg			hp300bsd)
3591e423a8fSmrg				basic_machine=m68k-hp
3601e423a8fSmrg				basic_os=bsd
3611e423a8fSmrg				;;
3621e423a8fSmrg			hppaosf)
3631e423a8fSmrg				basic_machine=hppa1.1-hp
3641e423a8fSmrg				basic_os=osf
3651e423a8fSmrg				;;
3661e423a8fSmrg			hppro)
3671e423a8fSmrg				basic_machine=hppa1.1-hp
3681e423a8fSmrg				basic_os=proelf
3691e423a8fSmrg				;;
3701e423a8fSmrg			i386mach)
3711e423a8fSmrg				basic_machine=i386-mach
3721e423a8fSmrg				basic_os=mach
3731e423a8fSmrg				;;
3741e423a8fSmrg			isi68 | isi)
3751e423a8fSmrg				basic_machine=m68k-isi
3761e423a8fSmrg				basic_os=sysv
3771e423a8fSmrg				;;
3781e423a8fSmrg			m68knommu)
3791e423a8fSmrg				basic_machine=m68k-unknown
3801e423a8fSmrg				basic_os=linux
3811e423a8fSmrg				;;
3821e423a8fSmrg			magnum | m3230)
3831e423a8fSmrg				basic_machine=mips-mips
3841e423a8fSmrg				basic_os=sysv
3851e423a8fSmrg				;;
3861e423a8fSmrg			merlin)
3871e423a8fSmrg				basic_machine=ns32k-utek
3881e423a8fSmrg				basic_os=sysv
3891e423a8fSmrg				;;
3901e423a8fSmrg			mingw64)
3911e423a8fSmrg				basic_machine=x86_64-pc
3921e423a8fSmrg				basic_os=mingw64
3931e423a8fSmrg				;;
3941e423a8fSmrg			mingw32)
3951e423a8fSmrg				basic_machine=i686-pc
3961e423a8fSmrg				basic_os=mingw32
3971e423a8fSmrg				;;
3981e423a8fSmrg			mingw32ce)
3991e423a8fSmrg				basic_machine=arm-unknown
4001e423a8fSmrg				basic_os=mingw32ce
4011e423a8fSmrg				;;
4021e423a8fSmrg			monitor)
4031e423a8fSmrg				basic_machine=m68k-rom68k
4041e423a8fSmrg				basic_os=coff
4051e423a8fSmrg				;;
4061e423a8fSmrg			morphos)
4071e423a8fSmrg				basic_machine=powerpc-unknown
4081e423a8fSmrg				basic_os=morphos
4091e423a8fSmrg				;;
4101e423a8fSmrg			moxiebox)
4111e423a8fSmrg				basic_machine=moxie-unknown
4121e423a8fSmrg				basic_os=moxiebox
4131e423a8fSmrg				;;
4141e423a8fSmrg			msdos)
4151e423a8fSmrg				basic_machine=i386-pc
4161e423a8fSmrg				basic_os=msdos
4171e423a8fSmrg				;;
4181e423a8fSmrg			msys)
4191e423a8fSmrg				basic_machine=i686-pc
4201e423a8fSmrg				basic_os=msys
4211e423a8fSmrg				;;
4221e423a8fSmrg			mvs)
4231e423a8fSmrg				basic_machine=i370-ibm
4241e423a8fSmrg				basic_os=mvs
4251e423a8fSmrg				;;
4261e423a8fSmrg			nacl)
4271e423a8fSmrg				basic_machine=le32-unknown
4281e423a8fSmrg				basic_os=nacl
4291e423a8fSmrg				;;
4301e423a8fSmrg			ncr3000)
4311e423a8fSmrg				basic_machine=i486-ncr
4321e423a8fSmrg				basic_os=sysv4
4331e423a8fSmrg				;;
4341e423a8fSmrg			netbsd386)
4351e423a8fSmrg				basic_machine=i386-pc
4361e423a8fSmrg				basic_os=netbsd
4371e423a8fSmrg				;;
4381e423a8fSmrg			netwinder)
4391e423a8fSmrg				basic_machine=armv4l-rebel
4401e423a8fSmrg				basic_os=linux
4411e423a8fSmrg				;;
4421e423a8fSmrg			news | news700 | news800 | news900)
4431e423a8fSmrg				basic_machine=m68k-sony
4441e423a8fSmrg				basic_os=newsos
4451e423a8fSmrg				;;
4461e423a8fSmrg			news1000)
4471e423a8fSmrg				basic_machine=m68030-sony
4481e423a8fSmrg				basic_os=newsos
4491e423a8fSmrg				;;
4501e423a8fSmrg			necv70)
4511e423a8fSmrg				basic_machine=v70-nec
4521e423a8fSmrg				basic_os=sysv
4531e423a8fSmrg				;;
4541e423a8fSmrg			nh3000)
4551e423a8fSmrg				basic_machine=m68k-harris
4561e423a8fSmrg				basic_os=cxux
4571e423a8fSmrg				;;
4581e423a8fSmrg			nh[45]000)
4591e423a8fSmrg				basic_machine=m88k-harris
4601e423a8fSmrg				basic_os=cxux
4611e423a8fSmrg				;;
4621e423a8fSmrg			nindy960)
4631e423a8fSmrg				basic_machine=i960-intel
4641e423a8fSmrg				basic_os=nindy
4651e423a8fSmrg				;;
4661e423a8fSmrg			mon960)
4671e423a8fSmrg				basic_machine=i960-intel
4681e423a8fSmrg				basic_os=mon960
4691e423a8fSmrg				;;
4701e423a8fSmrg			nonstopux)
4711e423a8fSmrg				basic_machine=mips-compaq
4721e423a8fSmrg				basic_os=nonstopux
4731e423a8fSmrg				;;
4741e423a8fSmrg			os400)
4751e423a8fSmrg				basic_machine=powerpc-ibm
4761e423a8fSmrg				basic_os=os400
4771e423a8fSmrg				;;
4781e423a8fSmrg			OSE68000 | ose68000)
4791e423a8fSmrg				basic_machine=m68000-ericsson
4801e423a8fSmrg				basic_os=ose
4811e423a8fSmrg				;;
4821e423a8fSmrg			os68k)
4831e423a8fSmrg				basic_machine=m68k-none
4841e423a8fSmrg				basic_os=os68k
4851e423a8fSmrg				;;
4861e423a8fSmrg			paragon)
4871e423a8fSmrg				basic_machine=i860-intel
4881e423a8fSmrg				basic_os=osf
4891e423a8fSmrg				;;
4901e423a8fSmrg			parisc)
4911e423a8fSmrg				basic_machine=hppa-unknown
4921e423a8fSmrg				basic_os=linux
4931e423a8fSmrg				;;
4941e423a8fSmrg			psp)
4951e423a8fSmrg				basic_machine=mipsallegrexel-sony
4961e423a8fSmrg				basic_os=psp
4971e423a8fSmrg				;;
4981e423a8fSmrg			pw32)
4991e423a8fSmrg				basic_machine=i586-unknown
5001e423a8fSmrg				basic_os=pw32
5011e423a8fSmrg				;;
5021e423a8fSmrg			rdos | rdos64)
5031e423a8fSmrg				basic_machine=x86_64-pc
5041e423a8fSmrg				basic_os=rdos
5051e423a8fSmrg				;;
5061e423a8fSmrg			rdos32)
5071e423a8fSmrg				basic_machine=i386-pc
5081e423a8fSmrg				basic_os=rdos
5091e423a8fSmrg				;;
5101e423a8fSmrg			rom68k)
5111e423a8fSmrg				basic_machine=m68k-rom68k
5121e423a8fSmrg				basic_os=coff
5131e423a8fSmrg				;;
5141e423a8fSmrg			sa29200)
5151e423a8fSmrg				basic_machine=a29k-amd
5161e423a8fSmrg				basic_os=udi
5171e423a8fSmrg				;;
5181e423a8fSmrg			sei)
5191e423a8fSmrg				basic_machine=mips-sei
5201e423a8fSmrg				basic_os=seiux
5211e423a8fSmrg				;;
5221e423a8fSmrg			sequent)
5231e423a8fSmrg				basic_machine=i386-sequent
5241e423a8fSmrg				basic_os=
5251e423a8fSmrg				;;
5261e423a8fSmrg			sps7)
5271e423a8fSmrg				basic_machine=m68k-bull
5281e423a8fSmrg				basic_os=sysv2
5291e423a8fSmrg				;;
5301e423a8fSmrg			st2000)
5311e423a8fSmrg				basic_machine=m68k-tandem
5321e423a8fSmrg				basic_os=
5331e423a8fSmrg				;;
5341e423a8fSmrg			stratus)
5351e423a8fSmrg				basic_machine=i860-stratus
5361e423a8fSmrg				basic_os=sysv4
5371e423a8fSmrg				;;
5381e423a8fSmrg			sun2)
5391e423a8fSmrg				basic_machine=m68000-sun
5401e423a8fSmrg				basic_os=
5411e423a8fSmrg				;;
5421e423a8fSmrg			sun2os3)
5431e423a8fSmrg				basic_machine=m68000-sun
5441e423a8fSmrg				basic_os=sunos3
5451e423a8fSmrg				;;
5461e423a8fSmrg			sun2os4)
5471e423a8fSmrg				basic_machine=m68000-sun
5481e423a8fSmrg				basic_os=sunos4
5491e423a8fSmrg				;;
5501e423a8fSmrg			sun3)
5511e423a8fSmrg				basic_machine=m68k-sun
5521e423a8fSmrg				basic_os=
5531e423a8fSmrg				;;
5541e423a8fSmrg			sun3os3)
5551e423a8fSmrg				basic_machine=m68k-sun
5561e423a8fSmrg				basic_os=sunos3
5571e423a8fSmrg				;;
5581e423a8fSmrg			sun3os4)
5591e423a8fSmrg				basic_machine=m68k-sun
5601e423a8fSmrg				basic_os=sunos4
5611e423a8fSmrg				;;
5621e423a8fSmrg			sun4)
5631e423a8fSmrg				basic_machine=sparc-sun
5641e423a8fSmrg				basic_os=
5651e423a8fSmrg				;;
5661e423a8fSmrg			sun4os3)
5671e423a8fSmrg				basic_machine=sparc-sun
5681e423a8fSmrg				basic_os=sunos3
5691e423a8fSmrg				;;
5701e423a8fSmrg			sun4os4)
5711e423a8fSmrg				basic_machine=sparc-sun
5721e423a8fSmrg				basic_os=sunos4
5731e423a8fSmrg				;;
5741e423a8fSmrg			sun4sol2)
5751e423a8fSmrg				basic_machine=sparc-sun
5761e423a8fSmrg				basic_os=solaris2
5771e423a8fSmrg				;;
5781e423a8fSmrg			sun386 | sun386i | roadrunner)
5791e423a8fSmrg				basic_machine=i386-sun
5801e423a8fSmrg				basic_os=
5811e423a8fSmrg				;;
5821e423a8fSmrg			sv1)
5831e423a8fSmrg				basic_machine=sv1-cray
5841e423a8fSmrg				basic_os=unicos
5851e423a8fSmrg				;;
5861e423a8fSmrg			symmetry)
5871e423a8fSmrg				basic_machine=i386-sequent
5881e423a8fSmrg				basic_os=dynix
5891e423a8fSmrg				;;
5901e423a8fSmrg			t3e)
5911e423a8fSmrg				basic_machine=alphaev5-cray
5921e423a8fSmrg				basic_os=unicos
5931e423a8fSmrg				;;
5941e423a8fSmrg			t90)
5951e423a8fSmrg				basic_machine=t90-cray
5961e423a8fSmrg				basic_os=unicos
5971e423a8fSmrg				;;
5981e423a8fSmrg			toad1)
5991e423a8fSmrg				basic_machine=pdp10-xkl
6001e423a8fSmrg				basic_os=tops20
6011e423a8fSmrg				;;
6021e423a8fSmrg			tpf)
6031e423a8fSmrg				basic_machine=s390x-ibm
6041e423a8fSmrg				basic_os=tpf
6051e423a8fSmrg				;;
6061e423a8fSmrg			udi29k)
6071e423a8fSmrg				basic_machine=a29k-amd
6081e423a8fSmrg				basic_os=udi
6091e423a8fSmrg				;;
6101e423a8fSmrg			ultra3)
6111e423a8fSmrg				basic_machine=a29k-nyu
6121e423a8fSmrg				basic_os=sym1
6131e423a8fSmrg				;;
6141e423a8fSmrg			v810 | necv810)
6151e423a8fSmrg				basic_machine=v810-nec
6161e423a8fSmrg				basic_os=none
6171e423a8fSmrg				;;
6181e423a8fSmrg			vaxv)
6191e423a8fSmrg				basic_machine=vax-dec
6201e423a8fSmrg				basic_os=sysv
6211e423a8fSmrg				;;
6221e423a8fSmrg			vms)
6231e423a8fSmrg				basic_machine=vax-dec
6241e423a8fSmrg				basic_os=vms
6251e423a8fSmrg				;;
6261e423a8fSmrg			vsta)
6271e423a8fSmrg				basic_machine=i386-pc
6281e423a8fSmrg				basic_os=vsta
6291e423a8fSmrg				;;
6301e423a8fSmrg			vxworks960)
6311e423a8fSmrg				basic_machine=i960-wrs
6321e423a8fSmrg				basic_os=vxworks
6331e423a8fSmrg				;;
6341e423a8fSmrg			vxworks68)
6351e423a8fSmrg				basic_machine=m68k-wrs
6361e423a8fSmrg				basic_os=vxworks
6371e423a8fSmrg				;;
6381e423a8fSmrg			vxworks29k)
6391e423a8fSmrg				basic_machine=a29k-wrs
6401e423a8fSmrg				basic_os=vxworks
6411e423a8fSmrg				;;
6421e423a8fSmrg			xbox)
6431e423a8fSmrg				basic_machine=i686-pc
6441e423a8fSmrg				basic_os=mingw32
6451e423a8fSmrg				;;
6461e423a8fSmrg			ymp)
6471e423a8fSmrg				basic_machine=ymp-cray
6481e423a8fSmrg				basic_os=unicos
6491e423a8fSmrg				;;
6501e423a8fSmrg			*)
6511e423a8fSmrg				basic_machine=$1
6521e423a8fSmrg				basic_os=
6531e423a8fSmrg				;;
6541e423a8fSmrg		esac
655fe5e51b7Smrg		;;
656fe5e51b7Smrgesac
657fe5e51b7Smrg
6581e423a8fSmrg# Decode 1-component or ad-hoc basic machines
659fe5e51b7Smrgcase $basic_machine in
6601e423a8fSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
6611e423a8fSmrg	# some cases the only manufacturer, in others, it is the most popular.
6621e423a8fSmrg	w89k)
6631e423a8fSmrg		cpu=hppa1.1
6641e423a8fSmrg		vendor=winbond
665ee82cb62Smrg		;;
6661e423a8fSmrg	op50n)
6671e423a8fSmrg		cpu=hppa1.1
6681e423a8fSmrg		vendor=oki
669fe5e51b7Smrg		;;
6701e423a8fSmrg	op60c)
6711e423a8fSmrg		cpu=hppa1.1
6721e423a8fSmrg		vendor=oki
673fe5e51b7Smrg		;;
6741e423a8fSmrg	ibm*)
6751e423a8fSmrg		cpu=i370
6761e423a8fSmrg		vendor=ibm
677fe5e51b7Smrg		;;
6781e423a8fSmrg	orion105)
6791e423a8fSmrg		cpu=clipper
6801e423a8fSmrg		vendor=highlevel
681acd6767fSmrg		;;
6821e423a8fSmrg	mac | mpw | mac-mpw)
6831e423a8fSmrg		cpu=m68k
6841e423a8fSmrg		vendor=apple
6850bb88ba4Smrg		;;
6861e423a8fSmrg	pmac | pmac-mpw)
6871e423a8fSmrg		cpu=powerpc
6881e423a8fSmrg		vendor=apple
6890bb88ba4Smrg		;;
6900bb88ba4Smrg
691fe5e51b7Smrg	# Recognize the various machine names and aliases which stand
692fe5e51b7Smrg	# for a CPU type and a company and sometimes even an OS.
693fe5e51b7Smrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
6941e423a8fSmrg		cpu=m68000
6951e423a8fSmrg		vendor=att
696fe5e51b7Smrg		;;
697fe5e51b7Smrg	3b*)
6981e423a8fSmrg		cpu=we32k
6991e423a8fSmrg		vendor=att
700eda3803bSmrg		;;
7010bb88ba4Smrg	bluegene*)
7021e423a8fSmrg		cpu=powerpc
7031e423a8fSmrg		vendor=ibm
7041e423a8fSmrg		basic_os=cnk
705fe5e51b7Smrg		;;
706fe5e51b7Smrg	decsystem10* | dec10*)
7071e423a8fSmrg		cpu=pdp10
7081e423a8fSmrg		vendor=dec
7091e423a8fSmrg		basic_os=tops10
710fe5e51b7Smrg		;;
711fe5e51b7Smrg	decsystem20* | dec20*)
7121e423a8fSmrg		cpu=pdp10
7131e423a8fSmrg		vendor=dec
7141e423a8fSmrg		basic_os=tops20
715fe5e51b7Smrg		;;
716fe5e51b7Smrg	delta | 3300 | motorola-3300 | motorola-delta \
717fe5e51b7Smrg	      | 3300-motorola | delta-motorola)
7181e423a8fSmrg		cpu=m68k
7191e423a8fSmrg		vendor=motorola
720fe5e51b7Smrg		;;
7211e423a8fSmrg	dpx2*)
7221e423a8fSmrg		cpu=m68k
7231e423a8fSmrg		vendor=bull
7241e423a8fSmrg		basic_os=sysv3
725fe5e51b7Smrg		;;
726fe5e51b7Smrg	encore | umax | mmax)
7271e423a8fSmrg		cpu=ns32k
7281e423a8fSmrg		vendor=encore
729fe5e51b7Smrg		;;
7301e423a8fSmrg	elxsi)
7311e423a8fSmrg		cpu=elxsi
7321e423a8fSmrg		vendor=elxsi
7331e423a8fSmrg		basic_os=${basic_os:-bsd}
734fe5e51b7Smrg		;;
735fe5e51b7Smrg	fx2800)
7361e423a8fSmrg		cpu=i860
7371e423a8fSmrg		vendor=alliant
738fe5e51b7Smrg		;;
739fe5e51b7Smrg	genix)
7401e423a8fSmrg		cpu=ns32k
7411e423a8fSmrg		vendor=ns
742fe5e51b7Smrg		;;
743fe5e51b7Smrg	h3050r* | hiux*)
7441e423a8fSmrg		cpu=hppa1.1
7451e423a8fSmrg		vendor=hitachi
7461e423a8fSmrg		basic_os=hiuxwe2
747fe5e51b7Smrg		;;
748fe5e51b7Smrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
7491e423a8fSmrg		cpu=hppa1.0
7501e423a8fSmrg		vendor=hp
751fe5e51b7Smrg		;;
752fe5e51b7Smrg	hp9k2[0-9][0-9] | hp9k31[0-9])
7531e423a8fSmrg		cpu=m68000
7541e423a8fSmrg		vendor=hp
755fe5e51b7Smrg		;;
756fe5e51b7Smrg	hp9k3[2-9][0-9])
7571e423a8fSmrg		cpu=m68k
7581e423a8fSmrg		vendor=hp
759fe5e51b7Smrg		;;
760fe5e51b7Smrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
7611e423a8fSmrg		cpu=hppa1.0
7621e423a8fSmrg		vendor=hp
763fe5e51b7Smrg		;;
764fe5e51b7Smrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
7651e423a8fSmrg		cpu=hppa1.1
7661e423a8fSmrg		vendor=hp
767fe5e51b7Smrg		;;
768fe5e51b7Smrg	hp9k78[0-9] | hp78[0-9])
769fe5e51b7Smrg		# FIXME: really hppa2.0-hp
7701e423a8fSmrg		cpu=hppa1.1
7711e423a8fSmrg		vendor=hp
772fe5e51b7Smrg		;;
773fe5e51b7Smrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
774fe5e51b7Smrg		# FIXME: really hppa2.0-hp
7751e423a8fSmrg		cpu=hppa1.1
7761e423a8fSmrg		vendor=hp
777fe5e51b7Smrg		;;
778fe5e51b7Smrg	hp9k8[0-9][13679] | hp8[0-9][13679])
7791e423a8fSmrg		cpu=hppa1.1
7801e423a8fSmrg		vendor=hp
781fe5e51b7Smrg		;;
782fe5e51b7Smrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
7831e423a8fSmrg		cpu=hppa1.0
7841e423a8fSmrg		vendor=hp
785fe5e51b7Smrg		;;
786fe5e51b7Smrg	i*86v32)
7871e423a8fSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7881e423a8fSmrg		vendor=pc
7891e423a8fSmrg		basic_os=sysv32
790fe5e51b7Smrg		;;
791fe5e51b7Smrg	i*86v4*)
7921e423a8fSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7931e423a8fSmrg		vendor=pc
7941e423a8fSmrg		basic_os=sysv4
795fe5e51b7Smrg		;;
796fe5e51b7Smrg	i*86v)
7971e423a8fSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7981e423a8fSmrg		vendor=pc
7991e423a8fSmrg		basic_os=sysv
800fe5e51b7Smrg		;;
801fe5e51b7Smrg	i*86sol2)
8021e423a8fSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
8031e423a8fSmrg		vendor=pc
8041e423a8fSmrg		basic_os=solaris2
805fe5e51b7Smrg		;;
8061e423a8fSmrg	j90 | j90-cray)
8071e423a8fSmrg		cpu=j90
8081e423a8fSmrg		vendor=cray
8091e423a8fSmrg		basic_os=${basic_os:-unicos}
810fe5e51b7Smrg		;;
811fe5e51b7Smrg	iris | iris4d)
8121e423a8fSmrg		cpu=mips
8131e423a8fSmrg		vendor=sgi
8141e423a8fSmrg		case $basic_os in
8151e423a8fSmrg		    irix*)
816fe5e51b7Smrg			;;
817fe5e51b7Smrg		    *)
8181e423a8fSmrg			basic_os=irix4
819fe5e51b7Smrg			;;
820fe5e51b7Smrg		esac
821fe5e51b7Smrg		;;
822fe5e51b7Smrg	miniframe)
8231e423a8fSmrg		cpu=m68000
8241e423a8fSmrg		vendor=convergent
8250bb88ba4Smrg		;;
8261e423a8fSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
8271e423a8fSmrg		cpu=m68k
8281e423a8fSmrg		vendor=atari
8291e423a8fSmrg		basic_os=mint
830fe5e51b7Smrg		;;
831fe5e51b7Smrg	news-3600 | risc-news)
8321e423a8fSmrg		cpu=mips
8331e423a8fSmrg		vendor=sony
8341e423a8fSmrg		basic_os=newsos
8351e423a8fSmrg		;;
8361e423a8fSmrg	next | m*-next)
8371e423a8fSmrg		cpu=m68k
8381e423a8fSmrg		vendor=next
8391e423a8fSmrg		case $basic_os in
8401e423a8fSmrg		    openstep*)
8411e423a8fSmrg		        ;;
8421e423a8fSmrg		    nextstep*)
843fe5e51b7Smrg			;;
8441e423a8fSmrg		    ns2*)
8451e423a8fSmrg		      basic_os=nextstep2
846fe5e51b7Smrg			;;
847fe5e51b7Smrg		    *)
8481e423a8fSmrg		      basic_os=nextstep3
849fe5e51b7Smrg			;;
850fe5e51b7Smrg		esac
851fe5e51b7Smrg		;;
852fe5e51b7Smrg	np1)
8531e423a8fSmrg		cpu=np1
8541e423a8fSmrg		vendor=gould
855fe5e51b7Smrg		;;
856fe5e51b7Smrg	op50n-* | op60c-*)
8571e423a8fSmrg		cpu=hppa1.1
8581e423a8fSmrg		vendor=oki
8591e423a8fSmrg		basic_os=proelf
860fe5e51b7Smrg		;;
861fe5e51b7Smrg	pa-hitachi)
8621e423a8fSmrg		cpu=hppa1.1
8631e423a8fSmrg		vendor=hitachi
8641e423a8fSmrg		basic_os=hiuxwe2
865eda3803bSmrg		;;
866fe5e51b7Smrg	pbd)
8671e423a8fSmrg		cpu=sparc
8681e423a8fSmrg		vendor=tti
869fe5e51b7Smrg		;;
870fe5e51b7Smrg	pbb)
8711e423a8fSmrg		cpu=m68k
8721e423a8fSmrg		vendor=tti
873fe5e51b7Smrg		;;
8741e423a8fSmrg	pc532)
8751e423a8fSmrg		cpu=ns32k
8761e423a8fSmrg		vendor=pc532
877fe5e51b7Smrg		;;
878fe5e51b7Smrg	pn)
8791e423a8fSmrg		cpu=pn
8801e423a8fSmrg		vendor=gould
881fe5e51b7Smrg		;;
8821e423a8fSmrg	power)
8831e423a8fSmrg		cpu=power
8841e423a8fSmrg		vendor=ibm
885fe5e51b7Smrg		;;
886fe5e51b7Smrg	ps2)
8871e423a8fSmrg		cpu=i386
8881e423a8fSmrg		vendor=ibm
889fe5e51b7Smrg		;;
890fe5e51b7Smrg	rm[46]00)
8911e423a8fSmrg		cpu=mips
8921e423a8fSmrg		vendor=siemens
893fe5e51b7Smrg		;;
894fe5e51b7Smrg	rtpc | rtpc-*)
8951e423a8fSmrg		cpu=romp
8961e423a8fSmrg		vendor=ibm
897fe5e51b7Smrg		;;
8981e423a8fSmrg	sde)
8991e423a8fSmrg		cpu=mipsisa32
9001e423a8fSmrg		vendor=sde
9011e423a8fSmrg		basic_os=${basic_os:-elf}
902fe5e51b7Smrg		;;
9031e423a8fSmrg	simso-wrs)
9041e423a8fSmrg		cpu=sparclite
9051e423a8fSmrg		vendor=wrs
9061e423a8fSmrg		basic_os=vxworks
907fe5e51b7Smrg		;;
9081e423a8fSmrg	tower | tower-32)
9091e423a8fSmrg		cpu=m68k
9101e423a8fSmrg		vendor=ncr
911fe5e51b7Smrg		;;
9121e423a8fSmrg	vpp*|vx|vx-*)
9131e423a8fSmrg		cpu=f301
9141e423a8fSmrg		vendor=fujitsu
915fe5e51b7Smrg		;;
9161e423a8fSmrg	w65)
9171e423a8fSmrg		cpu=w65
9181e423a8fSmrg		vendor=wdc
919fe5e51b7Smrg		;;
9201e423a8fSmrg	w89k-*)
9211e423a8fSmrg		cpu=hppa1.1
9221e423a8fSmrg		vendor=winbond
9231e423a8fSmrg		basic_os=proelf
924fe5e51b7Smrg		;;
9251e423a8fSmrg	none)
9261e423a8fSmrg		cpu=none
9271e423a8fSmrg		vendor=none
928fe5e51b7Smrg		;;
9291e423a8fSmrg	leon|leon[3-9])
9301e423a8fSmrg		cpu=sparc
9311e423a8fSmrg		vendor=$basic_machine
932fe5e51b7Smrg		;;
9331e423a8fSmrg	leon-*|leon[3-9]-*)
9341e423a8fSmrg		cpu=sparc
9351e423a8fSmrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
936fe5e51b7Smrg		;;
9371e423a8fSmrg
9381e423a8fSmrg	*-*)
9391e423a8fSmrg		# shellcheck disable=SC2162
9401e423a8fSmrg		saved_IFS=$IFS
9411e423a8fSmrg		IFS="-" read cpu vendor <<EOF
9421e423a8fSmrg$basic_machine
9431e423a8fSmrgEOF
9441e423a8fSmrg		IFS=$saved_IFS
945fe5e51b7Smrg		;;
9461e423a8fSmrg	# We use `pc' rather than `unknown'
9471e423a8fSmrg	# because (1) that's what they normally are, and
9481e423a8fSmrg	# (2) the word "unknown" tends to confuse beginning users.
9491e423a8fSmrg	i*86 | x86_64)
9501e423a8fSmrg		cpu=$basic_machine
9511e423a8fSmrg		vendor=pc
952fe5e51b7Smrg		;;
9531e423a8fSmrg	# These rules are duplicated from below for sake of the special case above;
9541e423a8fSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
9551e423a8fSmrg	pc98)
9561e423a8fSmrg		cpu=i386
9571e423a8fSmrg		vendor=pc
958fe5e51b7Smrg		;;
9591e423a8fSmrg	x64 | amd64)
9601e423a8fSmrg		cpu=x86_64
9611e423a8fSmrg		vendor=pc
962fe5e51b7Smrg		;;
9631e423a8fSmrg	# Recognize the basic CPU types without company name.
9641e423a8fSmrg	*)
9651e423a8fSmrg		cpu=$basic_machine
9661e423a8fSmrg		vendor=unknown
9670bb88ba4Smrg		;;
9681e423a8fSmrgesac
9691e423a8fSmrg
9701e423a8fSmrgunset -v basic_machine
9711e423a8fSmrg
9721e423a8fSmrg# Decode basic machines in the full and proper CPU-Company form.
9731e423a8fSmrgcase $cpu-$vendor in
9741e423a8fSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
9751e423a8fSmrg	# some cases the only manufacturer, in others, it is the most popular.
9761e423a8fSmrg	craynv-unknown)
9771e423a8fSmrg		vendor=cray
9781e423a8fSmrg		basic_os=${basic_os:-unicosmp}
979fe5e51b7Smrg		;;
9801e423a8fSmrg	c90-unknown | c90-cray)
9811e423a8fSmrg		vendor=cray
9821e423a8fSmrg		basic_os=${Basic_os:-unicos}
983fe5e51b7Smrg		;;
9841e423a8fSmrg	fx80-unknown)
9851e423a8fSmrg		vendor=alliant
986fe5e51b7Smrg		;;
9871e423a8fSmrg	romp-unknown)
9881e423a8fSmrg		vendor=ibm
989fe5e51b7Smrg		;;
9901e423a8fSmrg	mmix-unknown)
9911e423a8fSmrg		vendor=knuth
992fe5e51b7Smrg		;;
9931e423a8fSmrg	microblaze-unknown | microblazeel-unknown)
9941e423a8fSmrg		vendor=xilinx
995fe5e51b7Smrg		;;
9961e423a8fSmrg	rs6000-unknown)
9971e423a8fSmrg		vendor=ibm
998fe5e51b7Smrg		;;
9991e423a8fSmrg	vax-unknown)
10001e423a8fSmrg		vendor=dec
1001fe5e51b7Smrg		;;
10021e423a8fSmrg	pdp11-unknown)
10031e423a8fSmrg		vendor=dec
1004fe5e51b7Smrg		;;
10051e423a8fSmrg	we32k-unknown)
10061e423a8fSmrg		vendor=att
1007fe5e51b7Smrg		;;
10081e423a8fSmrg	cydra-unknown)
10091e423a8fSmrg		vendor=cydrome
1010fe5e51b7Smrg		;;
10111e423a8fSmrg	i370-ibm*)
10121e423a8fSmrg		vendor=ibm
1013fe5e51b7Smrg		;;
10141e423a8fSmrg	orion-unknown)
10151e423a8fSmrg		vendor=highlevel
1016fe5e51b7Smrg		;;
10171e423a8fSmrg	xps-unknown | xps100-unknown)
10181e423a8fSmrg		cpu=xps100
10191e423a8fSmrg		vendor=honeywell
1020fe5e51b7Smrg		;;
10211e423a8fSmrg
10221e423a8fSmrg	# Here we normalize CPU types with a missing or matching vendor
10231e423a8fSmrg	dpx20-unknown | dpx20-bull)
10241e423a8fSmrg		cpu=rs6000
10251e423a8fSmrg		vendor=bull
10261e423a8fSmrg		basic_os=${basic_os:-bosx}
1027fe5e51b7Smrg		;;
10281e423a8fSmrg
10291e423a8fSmrg	# Here we normalize CPU types irrespective of the vendor
10301e423a8fSmrg	amd64-*)
10311e423a8fSmrg		cpu=x86_64
1032eda3803bSmrg		;;
10331e423a8fSmrg	blackfin-*)
10341e423a8fSmrg		cpu=bfin
10351e423a8fSmrg		basic_os=linux
1036fe5e51b7Smrg		;;
10371e423a8fSmrg	c54x-*)
10381e423a8fSmrg		cpu=tic54x
1039fe5e51b7Smrg		;;
10401e423a8fSmrg	c55x-*)
10411e423a8fSmrg		cpu=tic55x
1042fe5e51b7Smrg		;;
10431e423a8fSmrg	c6x-*)
10441e423a8fSmrg		cpu=tic6x
1045fe5e51b7Smrg		;;
10461e423a8fSmrg	e500v[12]-*)
10471e423a8fSmrg		cpu=powerpc
10481e423a8fSmrg		basic_os=${basic_os}"spe"
1049fe5e51b7Smrg		;;
10501e423a8fSmrg	mips3*-*)
10511e423a8fSmrg		cpu=mips64
1052fe5e51b7Smrg		;;
10531e423a8fSmrg	ms1-*)
10541e423a8fSmrg		cpu=mt
1055fe5e51b7Smrg		;;
10561e423a8fSmrg	m68knommu-*)
10571e423a8fSmrg		cpu=m68k
10581e423a8fSmrg		basic_os=linux
1059fe5e51b7Smrg		;;
10601e423a8fSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
10611e423a8fSmrg		cpu=s12z
1062fe5e51b7Smrg		;;
10631e423a8fSmrg	openrisc-*)
10641e423a8fSmrg		cpu=or32
1065fe5e51b7Smrg		;;
10661e423a8fSmrg	parisc-*)
10671e423a8fSmrg		cpu=hppa
10681e423a8fSmrg		basic_os=linux
1069fe5e51b7Smrg		;;
10701e423a8fSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
10711e423a8fSmrg		cpu=i586
1072fe5e51b7Smrg		;;
10731e423a8fSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
10741e423a8fSmrg		cpu=i686
1075fe5e51b7Smrg		;;
10761e423a8fSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
10771e423a8fSmrg		cpu=i686
1078fe5e51b7Smrg		;;
10791e423a8fSmrg	pentium4-*)
10801e423a8fSmrg		cpu=i786
1081fe5e51b7Smrg		;;
10821e423a8fSmrg	pc98-*)
10831e423a8fSmrg		cpu=i386
1084fe5e51b7Smrg		;;
10851e423a8fSmrg	ppc-* | ppcbe-*)
10861e423a8fSmrg		cpu=powerpc
1087fe5e51b7Smrg		;;
10881e423a8fSmrg	ppcle-* | powerpclittle-*)
10891e423a8fSmrg		cpu=powerpcle
1090fe5e51b7Smrg		;;
10911e423a8fSmrg	ppc64-*)
10921e423a8fSmrg		cpu=powerpc64
10930bb88ba4Smrg		;;
10941e423a8fSmrg	ppc64le-* | powerpc64little-*)
10951e423a8fSmrg		cpu=powerpc64le
1096fe5e51b7Smrg		;;
10971e423a8fSmrg	sb1-*)
10981e423a8fSmrg		cpu=mipsisa64sb1
1099fe5e51b7Smrg		;;
11001e423a8fSmrg	sb1el-*)
11011e423a8fSmrg		cpu=mipsisa64sb1el
1102a31a186aSmrg		;;
11031e423a8fSmrg	sh5e[lb]-*)
11041e423a8fSmrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
1105fe5e51b7Smrg		;;
11061e423a8fSmrg	spur-*)
11071e423a8fSmrg		cpu=spur
1108fe5e51b7Smrg		;;
11091e423a8fSmrg	strongarm-* | thumb-*)
11101e423a8fSmrg		cpu=arm
1111fe5e51b7Smrg		;;
11121e423a8fSmrg	tx39-*)
11131e423a8fSmrg		cpu=mipstx39
1114fe5e51b7Smrg		;;
11151e423a8fSmrg	tx39el-*)
11161e423a8fSmrg		cpu=mipstx39el
1117fe5e51b7Smrg		;;
11181e423a8fSmrg	x64-*)
11191e423a8fSmrg		cpu=x86_64
1120fe5e51b7Smrg		;;
11211e423a8fSmrg	xscale-* | xscalee[bl]-*)
11221e423a8fSmrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
1123fe5e51b7Smrg		;;
11241e423a8fSmrg	arm64-*)
11251e423a8fSmrg		cpu=aarch64
1126fe5e51b7Smrg		;;
11271e423a8fSmrg
11281e423a8fSmrg	# Recognize the canonical CPU Types that limit and/or modify the
11291e423a8fSmrg	# company names they are paired with.
11301e423a8fSmrg	cr16-*)
11311e423a8fSmrg		basic_os=${basic_os:-elf}
1132fe5e51b7Smrg		;;
11331e423a8fSmrg	crisv32-* | etraxfs*-*)
11341e423a8fSmrg		cpu=crisv32
11351e423a8fSmrg		vendor=axis
1136fe5e51b7Smrg		;;
11371e423a8fSmrg	cris-* | etrax*-*)
11381e423a8fSmrg		cpu=cris
11391e423a8fSmrg		vendor=axis
1140fe5e51b7Smrg		;;
11411e423a8fSmrg	crx-*)
11421e423a8fSmrg		basic_os=${basic_os:-elf}
1143fe5e51b7Smrg		;;
11441e423a8fSmrg	neo-tandem)
11451e423a8fSmrg		cpu=neo
11461e423a8fSmrg		vendor=tandem
1147fe5e51b7Smrg		;;
11481e423a8fSmrg	nse-tandem)
11491e423a8fSmrg		cpu=nse
11501e423a8fSmrg		vendor=tandem
1151fe5e51b7Smrg		;;
11521e423a8fSmrg	nsr-tandem)
11531e423a8fSmrg		cpu=nsr
11541e423a8fSmrg		vendor=tandem
1155fe5e51b7Smrg		;;
11561e423a8fSmrg	nsv-tandem)
11571e423a8fSmrg		cpu=nsv
11581e423a8fSmrg		vendor=tandem
1159fe5e51b7Smrg		;;
11601e423a8fSmrg	nsx-tandem)
11611e423a8fSmrg		cpu=nsx
11621e423a8fSmrg		vendor=tandem
1163fe5e51b7Smrg		;;
11641e423a8fSmrg	mipsallegrexel-sony)
11651e423a8fSmrg		cpu=mipsallegrexel
11661e423a8fSmrg		vendor=sony
1167fe5e51b7Smrg		;;
11681e423a8fSmrg	tile*-*)
11691e423a8fSmrg		basic_os=${basic_os:-linux-gnu}
1170fe5e51b7Smrg		;;
11711e423a8fSmrg
1172fe5e51b7Smrg	*)
11731e423a8fSmrg		# Recognize the canonical CPU types that are allowed with any
11741e423a8fSmrg		# company name.
11751e423a8fSmrg		case $cpu in
11761e423a8fSmrg			1750a | 580 \
11771e423a8fSmrg			| a29k \
11781e423a8fSmrg			| aarch64 | aarch64_be \
11791e423a8fSmrg			| abacus \
11801e423a8fSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
11811e423a8fSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
11821e423a8fSmrg			| alphapca5[67] | alpha64pca5[67] \
11831e423a8fSmrg			| am33_2.0 \
11841e423a8fSmrg			| amdgcn \
11851e423a8fSmrg			| arc | arceb | arc32 | arc64 \
11861e423a8fSmrg			| arm | arm[lb]e | arme[lb] | armv* \
11871e423a8fSmrg			| avr | avr32 \
11881e423a8fSmrg			| asmjs \
11891e423a8fSmrg			| ba \
11901e423a8fSmrg			| be32 | be64 \
11911e423a8fSmrg			| bfin | bpf | bs2000 \
11921e423a8fSmrg			| c[123]* | c30 | [cjt]90 | c4x \
11931e423a8fSmrg			| c8051 | clipper | craynv | csky | cydra \
11941e423a8fSmrg			| d10v | d30v | dlx | dsp16xx \
11951e423a8fSmrg			| e2k | elxsi | epiphany \
11961e423a8fSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
11971e423a8fSmrg			| h8300 | h8500 \
11981e423a8fSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
11991e423a8fSmrg			| hexagon \
12001e423a8fSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
12011e423a8fSmrg			| ip2k | iq2000 \
12021e423a8fSmrg			| k1om \
12031e423a8fSmrg			| le32 | le64 \
12041e423a8fSmrg			| lm32 \
12051e423a8fSmrg			| loongarch32 | loongarch64 | loongarchx32 \
12061e423a8fSmrg			| m32c | m32r | m32rle \
12071e423a8fSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
12081e423a8fSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
12091e423a8fSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
12101e423a8fSmrg			| microblaze | microblazeel \
12111e423a8fSmrg			| mips | mipsbe | mipseb | mipsel | mipsle \
12121e423a8fSmrg			| mips16 \
12131e423a8fSmrg			| mips64 | mips64eb | mips64el \
12141e423a8fSmrg			| mips64octeon | mips64octeonel \
12151e423a8fSmrg			| mips64orion | mips64orionel \
12161e423a8fSmrg			| mips64r5900 | mips64r5900el \
12171e423a8fSmrg			| mips64vr | mips64vrel \
12181e423a8fSmrg			| mips64vr4100 | mips64vr4100el \
12191e423a8fSmrg			| mips64vr4300 | mips64vr4300el \
12201e423a8fSmrg			| mips64vr5000 | mips64vr5000el \
12211e423a8fSmrg			| mips64vr5900 | mips64vr5900el \
12221e423a8fSmrg			| mipsisa32 | mipsisa32el \
12231e423a8fSmrg			| mipsisa32r2 | mipsisa32r2el \
12241e423a8fSmrg			| mipsisa32r3 | mipsisa32r3el \
12251e423a8fSmrg			| mipsisa32r5 | mipsisa32r5el \
12261e423a8fSmrg			| mipsisa32r6 | mipsisa32r6el \
12271e423a8fSmrg			| mipsisa64 | mipsisa64el \
12281e423a8fSmrg			| mipsisa64r2 | mipsisa64r2el \
12291e423a8fSmrg			| mipsisa64r3 | mipsisa64r3el \
12301e423a8fSmrg			| mipsisa64r5 | mipsisa64r5el \
12311e423a8fSmrg			| mipsisa64r6 | mipsisa64r6el \
12321e423a8fSmrg			| mipsisa64sb1 | mipsisa64sb1el \
12331e423a8fSmrg			| mipsisa64sr71k | mipsisa64sr71kel \
12341e423a8fSmrg			| mipsr5900 | mipsr5900el \
12351e423a8fSmrg			| mipstx39 | mipstx39el \
12361e423a8fSmrg			| mmix \
12371e423a8fSmrg			| mn10200 | mn10300 \
12381e423a8fSmrg			| moxie \
12391e423a8fSmrg			| mt \
12401e423a8fSmrg			| msp430 \
12411e423a8fSmrg			| nds32 | nds32le | nds32be \
12421e423a8fSmrg			| nfp \
12431e423a8fSmrg			| nios | nios2 | nios2eb | nios2el \
12441e423a8fSmrg			| none | np1 | ns16k | ns32k | nvptx \
12451e423a8fSmrg			| open8 \
12461e423a8fSmrg			| or1k* \
12471e423a8fSmrg			| or32 \
12481e423a8fSmrg			| orion \
12491e423a8fSmrg			| picochip \
12501e423a8fSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
12511e423a8fSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
12521e423a8fSmrg			| pru \
12531e423a8fSmrg			| pyramid \
12541e423a8fSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
12551e423a8fSmrg			| rl78 | romp | rs6000 | rx \
12561e423a8fSmrg			| s390 | s390x \
12571e423a8fSmrg			| score \
12581e423a8fSmrg			| sh | shl \
12591e423a8fSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
12601e423a8fSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
12611e423a8fSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
12621e423a8fSmrg			| sparclite \
12631e423a8fSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
12641e423a8fSmrg			| spu \
12651e423a8fSmrg			| tahoe \
12661e423a8fSmrg			| thumbv7* \
12671e423a8fSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
12681e423a8fSmrg			| tron \
12691e423a8fSmrg			| ubicom32 \
12701e423a8fSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
12711e423a8fSmrg			| vax \
12721e423a8fSmrg			| visium \
12731e423a8fSmrg			| w65 \
12741e423a8fSmrg			| wasm32 | wasm64 \
12751e423a8fSmrg			| we32k \
12761e423a8fSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
12771e423a8fSmrg			| xstormy16 | xtensa* \
12781e423a8fSmrg			| ymp \
12791e423a8fSmrg			| z8k | z80)
12801e423a8fSmrg				;;
12811e423a8fSmrg
12821e423a8fSmrg			*)
12831e423a8fSmrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
12841e423a8fSmrg				exit 1
12851e423a8fSmrg				;;
12861e423a8fSmrg		esac
1287fe5e51b7Smrg		;;
1288fe5e51b7Smrgesac
1289fe5e51b7Smrg
1290fe5e51b7Smrg# Here we canonicalize certain aliases for manufacturers.
12911e423a8fSmrgcase $vendor in
12921e423a8fSmrg	digital*)
12931e423a8fSmrg		vendor=dec
1294fe5e51b7Smrg		;;
12951e423a8fSmrg	commodore*)
12961e423a8fSmrg		vendor=cbm
1297fe5e51b7Smrg		;;
1298fe5e51b7Smrg	*)
1299fe5e51b7Smrg		;;
1300fe5e51b7Smrgesac
1301fe5e51b7Smrg
1302fe5e51b7Smrg# Decode manufacturer-specific aliases for certain operating systems.
1303fe5e51b7Smrg
13041e423a8fSmrgif test x$basic_os != x
1305fe5e51b7Smrgthen
13061e423a8fSmrg
13071e423a8fSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
13081e423a8fSmrg# set os.
13091e423a8fSmrgcase $basic_os in
13101e423a8fSmrg	gnu/linux*)
13111e423a8fSmrg		kernel=linux
13121e423a8fSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
13131e423a8fSmrg		;;
13141e423a8fSmrg	os2-emx)
13151e423a8fSmrg		kernel=os2
13161e423a8fSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
13171e423a8fSmrg		;;
13181e423a8fSmrg	nto-qnx*)
13191e423a8fSmrg		kernel=nto
13201e423a8fSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
13211e423a8fSmrg		;;
13221e423a8fSmrg	*-*)
13231e423a8fSmrg		# shellcheck disable=SC2162
13241e423a8fSmrg		saved_IFS=$IFS
13251e423a8fSmrg		IFS="-" read kernel os <<EOF
13261e423a8fSmrg$basic_os
13271e423a8fSmrgEOF
13281e423a8fSmrg		IFS=$saved_IFS
13291e423a8fSmrg		;;
13301e423a8fSmrg	# Default OS when just kernel was specified
13311e423a8fSmrg	nto*)
13321e423a8fSmrg		kernel=nto
13331e423a8fSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
13341e423a8fSmrg		;;
13351e423a8fSmrg	linux*)
13361e423a8fSmrg		kernel=linux
13371e423a8fSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
13381e423a8fSmrg		;;
13391e423a8fSmrg	*)
13401e423a8fSmrg		kernel=
13411e423a8fSmrg		os=$basic_os
13421e423a8fSmrg		;;
13431e423a8fSmrgesac
13441e423a8fSmrg
13451e423a8fSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
13461e423a8fSmrg# etc.)
1347fe5e51b7Smrgcase $os in
13481e423a8fSmrg	# First match some system type aliases that might get confused
13491e423a8fSmrg	# with valid system types.
13501e423a8fSmrg	# solaris* is a basic system type, with this one exception.
13511e423a8fSmrg	auroraux)
13521e423a8fSmrg		os=auroraux
13530bb88ba4Smrg		;;
13541e423a8fSmrg	bluegene*)
13551e423a8fSmrg		os=cnk
1356fe5e51b7Smrg		;;
13571e423a8fSmrg	solaris1 | solaris1.*)
13581e423a8fSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
1359fe5e51b7Smrg		;;
13601e423a8fSmrg	solaris)
13611e423a8fSmrg		os=solaris2
1362fe5e51b7Smrg		;;
13631e423a8fSmrg	unixware*)
13641e423a8fSmrg		os=sysv4.2uw
1365fe5e51b7Smrg		;;
13661e423a8fSmrg	# es1800 is here to avoid being matched by es* (a different OS)
13671e423a8fSmrg	es1800*)
13681e423a8fSmrg		os=ose
1369fe5e51b7Smrg		;;
13701e423a8fSmrg	# Some version numbers need modification
13711e423a8fSmrg	chorusos*)
13721e423a8fSmrg		os=chorusos
1373fe5e51b7Smrg		;;
13741e423a8fSmrg	isc)
13751e423a8fSmrg		os=isc2.2
1376fe5e51b7Smrg		;;
13771e423a8fSmrg	sco6)
13781e423a8fSmrg		os=sco5v6
1379fe5e51b7Smrg		;;
13801e423a8fSmrg	sco5)
13811e423a8fSmrg		os=sco3.2v5
1382fe5e51b7Smrg		;;
13831e423a8fSmrg	sco4)
13841e423a8fSmrg		os=sco3.2v4
1385fe5e51b7Smrg		;;
13861e423a8fSmrg	sco3.2.[4-9]*)
13871e423a8fSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
1388fe5e51b7Smrg		;;
13891e423a8fSmrg	sco*v* | scout)
13901e423a8fSmrg		# Don't match below
1391fe5e51b7Smrg		;;
13921e423a8fSmrg	sco*)
13931e423a8fSmrg		os=sco3.2v2
1394fe5e51b7Smrg		;;
13951e423a8fSmrg	psos*)
13961e423a8fSmrg		os=psos
1397fe5e51b7Smrg		;;
13981e423a8fSmrg	qnx*)
13991e423a8fSmrg		os=qnx
1400fe5e51b7Smrg		;;
14011e423a8fSmrg	hiux*)
14021e423a8fSmrg		os=hiuxwe2
1403fe5e51b7Smrg		;;
14041e423a8fSmrg	lynx*178)
14051e423a8fSmrg		os=lynxos178
1406fe5e51b7Smrg		;;
14071e423a8fSmrg	lynx*5)
14081e423a8fSmrg		os=lynxos5
1409fe5e51b7Smrg		;;
14101e423a8fSmrg	lynxos*)
14111e423a8fSmrg		# don't get caught up in next wildcard
1412fe5e51b7Smrg		;;
14131e423a8fSmrg	lynx*)
14141e423a8fSmrg		os=lynxos
1415fe5e51b7Smrg		;;
14161e423a8fSmrg	mac[0-9]*)
14171e423a8fSmrg		os=`echo "$os" | sed -e 's|mac|macos|'`
1418fe5e51b7Smrg		;;
14191e423a8fSmrg	opened*)
14201e423a8fSmrg		os=openedition
1421fe5e51b7Smrg		;;
14221e423a8fSmrg	os400*)
14231e423a8fSmrg		os=os400
1424fe5e51b7Smrg		;;
14251e423a8fSmrg	sunos5*)
14261e423a8fSmrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
1427fe5e51b7Smrg		;;
14281e423a8fSmrg	sunos6*)
14291e423a8fSmrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
1430fe5e51b7Smrg		;;
14311e423a8fSmrg	wince*)
14321e423a8fSmrg		os=wince
1433fe5e51b7Smrg		;;
14341e423a8fSmrg	utek*)
14351e423a8fSmrg		os=bsd
1436fe5e51b7Smrg		;;
14371e423a8fSmrg	dynix*)
14381e423a8fSmrg		os=bsd
1439fe5e51b7Smrg		;;
14401e423a8fSmrg	acis*)
14411e423a8fSmrg		os=aos
1442fe5e51b7Smrg		;;
14431e423a8fSmrg	atheos*)
14441e423a8fSmrg		os=atheos
1445fe5e51b7Smrg		;;
14461e423a8fSmrg	syllable*)
14471e423a8fSmrg		os=syllable
1448fe5e51b7Smrg		;;
14491e423a8fSmrg	386bsd)
14501e423a8fSmrg		os=bsd
1451fe5e51b7Smrg		;;
14521e423a8fSmrg	ctix* | uts*)
14531e423a8fSmrg		os=sysv
1454fe5e51b7Smrg		;;
14551e423a8fSmrg	nova*)
14561e423a8fSmrg		os=rtmk-nova
1457fe5e51b7Smrg		;;
14581e423a8fSmrg	ns2)
14591e423a8fSmrg		os=nextstep2
1460fe5e51b7Smrg		;;
14611e423a8fSmrg	# Preserve the version number of sinix5.
14621e423a8fSmrg	sinix5.*)
14631e423a8fSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
1464fe5e51b7Smrg		;;
14651e423a8fSmrg	sinix*)
14661e423a8fSmrg		os=sysv4
1467fe5e51b7Smrg		;;
14681e423a8fSmrg	tpf*)
14691e423a8fSmrg		os=tpf
1470fe5e51b7Smrg		;;
14711e423a8fSmrg	triton*)
14721e423a8fSmrg		os=sysv3
1473fe5e51b7Smrg		;;
14741e423a8fSmrg	oss*)
14751e423a8fSmrg		os=sysv3
1476fe5e51b7Smrg		;;
14771e423a8fSmrg	svr4*)
14781e423a8fSmrg		os=sysv4
1479fe5e51b7Smrg		;;
14801e423a8fSmrg	svr3)
14811e423a8fSmrg		os=sysv3
1482fe5e51b7Smrg		;;
14831e423a8fSmrg	sysvr4)
14841e423a8fSmrg		os=sysv4
1485fe5e51b7Smrg		;;
14861e423a8fSmrg	ose*)
14871e423a8fSmrg		os=ose
1488fe5e51b7Smrg		;;
14891e423a8fSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
14901e423a8fSmrg		os=mint
1491a31a186aSmrg		;;
14921e423a8fSmrg	dicos*)
14931e423a8fSmrg		os=dicos
14940bb88ba4Smrg		;;
14951e423a8fSmrg	pikeos*)
14961e423a8fSmrg		# Until real need of OS specific support for
14971e423a8fSmrg		# particular features comes up, bare metal
14981e423a8fSmrg		# configurations are quite functional.
14991e423a8fSmrg		case $cpu in
15001e423a8fSmrg		    arm*)
15011e423a8fSmrg			os=eabi
15021e423a8fSmrg			;;
15031e423a8fSmrg		    *)
15041e423a8fSmrg			os=elf
15051e423a8fSmrg			;;
15061e423a8fSmrg		esac
1507fe5e51b7Smrg		;;
1508fe5e51b7Smrg	*)
15091e423a8fSmrg		# No normalization, but not necessarily accepted, that comes below.
1510fe5e51b7Smrg		;;
1511fe5e51b7Smrgesac
15121e423a8fSmrg
1513fe5e51b7Smrgelse
1514fe5e51b7Smrg
1515fe5e51b7Smrg# Here we handle the default operating systems that come with various machines.
1516fe5e51b7Smrg# The value should be what the vendor currently ships out the door with their
1517fe5e51b7Smrg# machine or put another way, the most popular os provided with the machine.
1518fe5e51b7Smrg
1519fe5e51b7Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
1520fe5e51b7Smrg# "-sun"), then you have to tell the case statement up towards the top
1521fe5e51b7Smrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
1522fe5e51b7Smrg# will signal an error saying that MANUFACTURER isn't an operating
1523fe5e51b7Smrg# system, and we'll never get to this point.
1524fe5e51b7Smrg
15251e423a8fSmrgkernel=
15261e423a8fSmrgcase $cpu-$vendor in
15270bb88ba4Smrg	score-*)
15281e423a8fSmrg		os=elf
1529fe5e51b7Smrg		;;
15300bb88ba4Smrg	spu-*)
15311e423a8fSmrg		os=elf
1532fe5e51b7Smrg		;;
1533fe5e51b7Smrg	*-acorn)
15341e423a8fSmrg		os=riscix1.2
1535fe5e51b7Smrg		;;
1536fe5e51b7Smrg	arm*-rebel)
15371e423a8fSmrg		kernel=linux
15381e423a8fSmrg		os=gnu
1539fe5e51b7Smrg		;;
1540fe5e51b7Smrg	arm*-semi)
15411e423a8fSmrg		os=aout
1542fe5e51b7Smrg		;;
15430bb88ba4Smrg	c4x-* | tic4x-*)
15441e423a8fSmrg		os=coff
15450bb88ba4Smrg		;;
1546493f84f4Smrg	c8051-*)
15471e423a8fSmrg		os=elf
15481e423a8fSmrg		;;
15491e423a8fSmrg	clipper-intergraph)
15501e423a8fSmrg		os=clix
1551493f84f4Smrg		;;
1552acd6767fSmrg	hexagon-*)
15531e423a8fSmrg		os=elf
1554acd6767fSmrg		;;
15550bb88ba4Smrg	tic54x-*)
15561e423a8fSmrg		os=coff
15570bb88ba4Smrg		;;
15580bb88ba4Smrg	tic55x-*)
15591e423a8fSmrg		os=coff
15600bb88ba4Smrg		;;
15610bb88ba4Smrg	tic6x-*)
15621e423a8fSmrg		os=coff
1563fe5e51b7Smrg		;;
1564fe5e51b7Smrg	# This must come before the *-dec entry.
1565fe5e51b7Smrg	pdp10-*)
15661e423a8fSmrg		os=tops20
1567fe5e51b7Smrg		;;
1568fe5e51b7Smrg	pdp11-*)
15691e423a8fSmrg		os=none
1570fe5e51b7Smrg		;;
1571fe5e51b7Smrg	*-dec | vax-*)
15721e423a8fSmrg		os=ultrix4.2
1573fe5e51b7Smrg		;;
1574fe5e51b7Smrg	m68*-apollo)
15751e423a8fSmrg		os=domain
1576fe5e51b7Smrg		;;
1577fe5e51b7Smrg	i386-sun)
15781e423a8fSmrg		os=sunos4.0.2
1579fe5e51b7Smrg		;;
1580fe5e51b7Smrg	m68000-sun)
15811e423a8fSmrg		os=sunos3
1582fe5e51b7Smrg		;;
1583fe5e51b7Smrg	m68*-cisco)
15841e423a8fSmrg		os=aout
1585fe5e51b7Smrg		;;
15860bb88ba4Smrg	mep-*)
15871e423a8fSmrg		os=elf
1588fe5e51b7Smrg		;;
1589fe5e51b7Smrg	mips*-cisco)
15901e423a8fSmrg		os=elf
1591fe5e51b7Smrg		;;
1592fe5e51b7Smrg	mips*-*)
15931e423a8fSmrg		os=elf
1594fe5e51b7Smrg		;;
1595fe5e51b7Smrg	or32-*)
15961e423a8fSmrg		os=coff
1597fe5e51b7Smrg		;;
1598fe5e51b7Smrg	*-tti)	# must be before sparc entry or we get the wrong os.
15991e423a8fSmrg		os=sysv3
1600fe5e51b7Smrg		;;
1601fe5e51b7Smrg	sparc-* | *-sun)
16021e423a8fSmrg		os=sunos4.1.1
1603fe5e51b7Smrg		;;
16041e423a8fSmrg	pru-*)
16051e423a8fSmrg		os=elf
1606fe5e51b7Smrg		;;
16071e423a8fSmrg	*-be)
16081e423a8fSmrg		os=beos
1609fe5e51b7Smrg		;;
1610fe5e51b7Smrg	*-ibm)
16111e423a8fSmrg		os=aix
1612fe5e51b7Smrg		;;
16130bb88ba4Smrg	*-knuth)
16141e423a8fSmrg		os=mmixware
1615fe5e51b7Smrg		;;
1616fe5e51b7Smrg	*-wec)
16171e423a8fSmrg		os=proelf
1618fe5e51b7Smrg		;;
1619fe5e51b7Smrg	*-winbond)
16201e423a8fSmrg		os=proelf
1621fe5e51b7Smrg		;;
1622fe5e51b7Smrg	*-oki)
16231e423a8fSmrg		os=proelf
1624fe5e51b7Smrg		;;
1625fe5e51b7Smrg	*-hp)
16261e423a8fSmrg		os=hpux
1627fe5e51b7Smrg		;;
1628fe5e51b7Smrg	*-hitachi)
16291e423a8fSmrg		os=hiux
1630fe5e51b7Smrg		;;
1631fe5e51b7Smrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
16321e423a8fSmrg		os=sysv
1633fe5e51b7Smrg		;;
1634fe5e51b7Smrg	*-cbm)
16351e423a8fSmrg		os=amigaos
1636fe5e51b7Smrg		;;
1637fe5e51b7Smrg	*-dg)
16381e423a8fSmrg		os=dgux
1639fe5e51b7Smrg		;;
1640fe5e51b7Smrg	*-dolphin)
16411e423a8fSmrg		os=sysv3
1642fe5e51b7Smrg		;;
1643fe5e51b7Smrg	m68k-ccur)
16441e423a8fSmrg		os=rtu
1645fe5e51b7Smrg		;;
1646fe5e51b7Smrg	m88k-omron*)
16471e423a8fSmrg		os=luna
1648fe5e51b7Smrg		;;
16491e423a8fSmrg	*-next)
16501e423a8fSmrg		os=nextstep
1651fe5e51b7Smrg		;;
1652fe5e51b7Smrg	*-sequent)
16531e423a8fSmrg		os=ptx
1654fe5e51b7Smrg		;;
1655fe5e51b7Smrg	*-crds)
16561e423a8fSmrg		os=unos
1657fe5e51b7Smrg		;;
1658fe5e51b7Smrg	*-ns)
16591e423a8fSmrg		os=genix
1660fe5e51b7Smrg		;;
1661fe5e51b7Smrg	i370-*)
16621e423a8fSmrg		os=mvs
1663fe5e51b7Smrg		;;
1664fe5e51b7Smrg	*-gould)
16651e423a8fSmrg		os=sysv
1666fe5e51b7Smrg		;;
1667fe5e51b7Smrg	*-highlevel)
16681e423a8fSmrg		os=bsd
1669fe5e51b7Smrg		;;
1670fe5e51b7Smrg	*-encore)
16711e423a8fSmrg		os=bsd
1672fe5e51b7Smrg		;;
1673fe5e51b7Smrg	*-sgi)
16741e423a8fSmrg		os=irix
1675fe5e51b7Smrg		;;
1676fe5e51b7Smrg	*-siemens)
16771e423a8fSmrg		os=sysv4
1678fe5e51b7Smrg		;;
1679fe5e51b7Smrg	*-masscomp)
16801e423a8fSmrg		os=rtu
1681fe5e51b7Smrg		;;
1682fe5e51b7Smrg	f30[01]-fujitsu | f700-fujitsu)
16831e423a8fSmrg		os=uxpv
1684fe5e51b7Smrg		;;
1685fe5e51b7Smrg	*-rom68k)
16861e423a8fSmrg		os=coff
1687fe5e51b7Smrg		;;
1688fe5e51b7Smrg	*-*bug)
16891e423a8fSmrg		os=coff
1690fe5e51b7Smrg		;;
1691fe5e51b7Smrg	*-apple)
16921e423a8fSmrg		os=macos
1693fe5e51b7Smrg		;;
1694fe5e51b7Smrg	*-atari*)
16951e423a8fSmrg		os=mint
16961e423a8fSmrg		;;
16971e423a8fSmrg	*-wrs)
16981e423a8fSmrg		os=vxworks
1699fe5e51b7Smrg		;;
1700fe5e51b7Smrg	*)
17011e423a8fSmrg		os=none
1702fe5e51b7Smrg		;;
1703fe5e51b7Smrgesac
17041e423a8fSmrg
1705fe5e51b7Smrgfi
1706fe5e51b7Smrg
17071e423a8fSmrg# Now, validate our (potentially fixed-up) OS.
17081e423a8fSmrgcase $os in
17091e423a8fSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
17101e423a8fSmrg	musl* | newlib* | relibc* | uclibc*)
17111e423a8fSmrg		;;
17121e423a8fSmrg	# Likewise for "kernel-abi"
17131e423a8fSmrg	eabi* | gnueabi*)
17141e423a8fSmrg		;;
17151e423a8fSmrg	# VxWorks passes extra cpu info in the 4th filed.
17161e423a8fSmrg	simlinux | simwindows | spe)
17171e423a8fSmrg		;;
17181e423a8fSmrg	# Now accept the basic system types.
17191e423a8fSmrg	# The portable systems comes first.
17201e423a8fSmrg	# Each alternative MUST end in a * to match a version number.
17211e423a8fSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
17221e423a8fSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
17231e423a8fSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
17241e423a8fSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
17251e423a8fSmrg	     | hiux* | abug | nacl* | netware* | windows* \
17261e423a8fSmrg	     | os9* | macos* | osx* | ios* \
17271e423a8fSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
17281e423a8fSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
17291e423a8fSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
17301e423a8fSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
17311e423a8fSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
17321e423a8fSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
17331e423a8fSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
17341e423a8fSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
17351e423a8fSmrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
17361e423a8fSmrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
17371e423a8fSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
17381e423a8fSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
17391e423a8fSmrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
17401e423a8fSmrg	     | midipix* | mingw32* | mingw64* | mint* \
17411e423a8fSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
17421e423a8fSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
17431e423a8fSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
17441e423a8fSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
17451e423a8fSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
17461e423a8fSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
17471e423a8fSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
17481e423a8fSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
17491e423a8fSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
17501e423a8fSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
17511e423a8fSmrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*)
17521e423a8fSmrg		;;
17531e423a8fSmrg	# This one is extra strict with allowed versions
17541e423a8fSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
17551e423a8fSmrg		# Don't forget version if it is 3.2v4 or newer.
17561e423a8fSmrg		;;
17571e423a8fSmrg	none)
17581e423a8fSmrg		;;
17591e423a8fSmrg	*)
17601e423a8fSmrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
17611e423a8fSmrg		exit 1
17621e423a8fSmrg		;;
17631e423a8fSmrgesac
17641e423a8fSmrg
17651e423a8fSmrg# As a final step for OS-related things, validate the OS-kernel combination
17661e423a8fSmrg# (given a valid OS), if there is a kernel.
17671e423a8fSmrgcase $kernel-$os in
17681e423a8fSmrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
17691e423a8fSmrg		   | linux-musl* | linux-relibc* | linux-uclibc* )
17701e423a8fSmrg		;;
17711e423a8fSmrg	uclinux-uclibc* )
17721e423a8fSmrg		;;
17731e423a8fSmrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
17741e423a8fSmrg		# These are just libc implementations, not actual OSes, and thus
17751e423a8fSmrg		# require a kernel.
17761e423a8fSmrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
17771e423a8fSmrg		exit 1
17781e423a8fSmrg		;;
17791e423a8fSmrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
17801e423a8fSmrg		;;
17811e423a8fSmrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
17821e423a8fSmrg		;;
17831e423a8fSmrg	nto-qnx*)
17841e423a8fSmrg		;;
17851e423a8fSmrg	os2-emx)
17861e423a8fSmrg		;;
17871e423a8fSmrg	*-eabi* | *-gnueabi*)
17881e423a8fSmrg		;;
17891e423a8fSmrg	-*)
17901e423a8fSmrg		# Blank kernel with real OS is always fine.
17911e423a8fSmrg		;;
17921e423a8fSmrg	*-*)
17931e423a8fSmrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
17941e423a8fSmrg		exit 1
17951e423a8fSmrg		;;
17961e423a8fSmrgesac
17971e423a8fSmrg
1798fe5e51b7Smrg# Here we handle the case where we know the os, and the CPU type, but not the
1799fe5e51b7Smrg# manufacturer.  We pick the logical manufacturer.
18001e423a8fSmrgcase $vendor in
18011e423a8fSmrg	unknown)
18021e423a8fSmrg		case $cpu-$os in
18031e423a8fSmrg			*-riscix*)
1804fe5e51b7Smrg				vendor=acorn
1805fe5e51b7Smrg				;;
18061e423a8fSmrg			*-sunos*)
1807fe5e51b7Smrg				vendor=sun
1808fe5e51b7Smrg				;;
18091e423a8fSmrg			*-cnk* | *-aix*)
1810fe5e51b7Smrg				vendor=ibm
1811fe5e51b7Smrg				;;
18121e423a8fSmrg			*-beos*)
1813fe5e51b7Smrg				vendor=be
1814fe5e51b7Smrg				;;
18151e423a8fSmrg			*-hpux*)
1816fe5e51b7Smrg				vendor=hp
1817fe5e51b7Smrg				;;
18181e423a8fSmrg			*-mpeix*)
1819fe5e51b7Smrg				vendor=hp
1820fe5e51b7Smrg				;;
18211e423a8fSmrg			*-hiux*)
1822fe5e51b7Smrg				vendor=hitachi
1823fe5e51b7Smrg				;;
18241e423a8fSmrg			*-unos*)
1825fe5e51b7Smrg				vendor=crds
1826fe5e51b7Smrg				;;
18271e423a8fSmrg			*-dgux*)
1828fe5e51b7Smrg				vendor=dg
1829fe5e51b7Smrg				;;
18301e423a8fSmrg			*-luna*)
1831fe5e51b7Smrg				vendor=omron
1832fe5e51b7Smrg				;;
18331e423a8fSmrg			*-genix*)
1834fe5e51b7Smrg				vendor=ns
1835fe5e51b7Smrg				;;
18361e423a8fSmrg			*-clix*)
18371e423a8fSmrg				vendor=intergraph
18381e423a8fSmrg				;;
18391e423a8fSmrg			*-mvs* | *-opened*)
18401e423a8fSmrg				vendor=ibm
18411e423a8fSmrg				;;
18421e423a8fSmrg			*-os400*)
1843fe5e51b7Smrg				vendor=ibm
1844fe5e51b7Smrg				;;
18451e423a8fSmrg			s390-* | s390x-*)
1846fe5e51b7Smrg				vendor=ibm
1847fe5e51b7Smrg				;;
18481e423a8fSmrg			*-ptx*)
1849fe5e51b7Smrg				vendor=sequent
1850fe5e51b7Smrg				;;
18511e423a8fSmrg			*-tpf*)
1852fe5e51b7Smrg				vendor=ibm
1853fe5e51b7Smrg				;;
18541e423a8fSmrg			*-vxsim* | *-vxworks* | *-windiss*)
1855fe5e51b7Smrg				vendor=wrs
1856fe5e51b7Smrg				;;
18571e423a8fSmrg			*-aux*)
1858fe5e51b7Smrg				vendor=apple
1859fe5e51b7Smrg				;;
18601e423a8fSmrg			*-hms*)
1861fe5e51b7Smrg				vendor=hitachi
1862fe5e51b7Smrg				;;
18631e423a8fSmrg			*-mpw* | *-macos*)
1864fe5e51b7Smrg				vendor=apple
1865fe5e51b7Smrg				;;
18661e423a8fSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
1867fe5e51b7Smrg				vendor=atari
1868fe5e51b7Smrg				;;
18691e423a8fSmrg			*-vos*)
1870fe5e51b7Smrg				vendor=stratus
1871fe5e51b7Smrg				;;
1872fe5e51b7Smrg		esac
1873fe5e51b7Smrg		;;
1874fe5e51b7Smrgesac
1875fe5e51b7Smrg
18761e423a8fSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
1877fe5e51b7Smrgexit
1878fe5e51b7Smrg
1879fe5e51b7Smrg# Local variables:
18801e423a8fSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
1881fe5e51b7Smrg# time-stamp-start: "timestamp='"
1882fe5e51b7Smrg# time-stamp-format: "%:y-%02m-%02d"
1883fe5e51b7Smrg# time-stamp-end: "'"
1884fe5e51b7Smrg# End:
1885