config.sub revision 3458e6c2
12c7c4e3dSmrg#! /bin/sh
22c7c4e3dSmrg# Configuration validation subroutine script.
33458e6c2Smrg#   Copyright 1992-2021 Free Software Foundation, Inc.
42c7c4e3dSmrg
53458e6c2Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale
63458e6c2Smrg
73458e6c2Smrgtimestamp='2021-08-14'
82c7c4e3dSmrg
92becc446Smrg# This file is free software; you can redistribute it and/or modify it
102becc446Smrg# under the terms of the GNU General Public License as published by
112becc446Smrg# the Free Software Foundation; either version 3 of the License, or
122c7c4e3dSmrg# (at your option) any later version.
132c7c4e3dSmrg#
142becc446Smrg# This program is distributed in the hope that it will be useful, but
152becc446Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
162becc446Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
172becc446Smrg# General Public License for more details.
182c7c4e3dSmrg#
192c7c4e3dSmrg# You should have received a copy of the GNU General Public License
203458e6c2Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
218650bb69Smrg#
222c7c4e3dSmrg# As a special exception to the GNU General Public License, if you
232c7c4e3dSmrg# distribute this file as part of a program that contains a
242c7c4e3dSmrg# configuration script generated by Autoconf, you may include it under
252becc446Smrg# the same distribution terms that you use for the rest of that
262becc446Smrg# program.  This Exception is an additional permission under section 7
272becc446Smrg# of the GNU General Public License, version 3 ("GPLv3").
282c7c4e3dSmrg
298650bb69Smrg
302becc446Smrg# Please send patches to <config-patches@gnu.org>.
312c7c4e3dSmrg#
322c7c4e3dSmrg# Configuration subroutine to validate and canonicalize a configuration type.
332c7c4e3dSmrg# Supply the specified configuration type as an argument.
342c7c4e3dSmrg# If it is invalid, we print an error message on stderr and exit with code 1.
352c7c4e3dSmrg# Otherwise, we print the canonical config type on stdout and succeed.
362c7c4e3dSmrg
3716d7e2f1Smrg# You can get the latest version of this script from:
383458e6c2Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
3916d7e2f1Smrg
402c7c4e3dSmrg# This file is supposed to be the same for all GNU packages
412c7c4e3dSmrg# and recognize all the CPU types, system types and aliases
422c7c4e3dSmrg# that are meaningful with *any* GNU software.
432c7c4e3dSmrg# Each package is responsible for reporting which valid configurations
442c7c4e3dSmrg# it does not support.  The user should be able to distinguish
452c7c4e3dSmrg# a failure to support a valid configuration from a meaningless
462c7c4e3dSmrg# configuration.
472c7c4e3dSmrg
482c7c4e3dSmrg# The goal of this file is to map all the various variations of a given
492c7c4e3dSmrg# machine specification into a single specification in the form:
502c7c4e3dSmrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
512c7c4e3dSmrg# or in some cases, the newer four-part form:
522c7c4e3dSmrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
532c7c4e3dSmrg# It is wrong to echo any other type of specification.
542c7c4e3dSmrg
553458e6c2Smrg# The "shellcheck disable" line above the timestamp inhibits complaints
563458e6c2Smrg# about features and limitations of the classic Bourne shell that were
573458e6c2Smrg# superseded or lifted in POSIX.  However, this script identifies a wide
583458e6c2Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
593458e6c2Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still
603458e6c2Smrg# have a pre-POSIX /bin/sh.
613458e6c2Smrg
622c7c4e3dSmrgme=`echo "$0" | sed -e 's,.*/,,'`
632c7c4e3dSmrg
642c7c4e3dSmrgusage="\
653458e6c2SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
662c7c4e3dSmrg
672c7c4e3dSmrgCanonicalize a configuration name.
682c7c4e3dSmrg
693458e6c2SmrgOptions:
702c7c4e3dSmrg  -h, --help         print this help, then exit
712c7c4e3dSmrg  -t, --time-stamp   print date of last modification, then exit
722c7c4e3dSmrg  -v, --version      print version number, then exit
732c7c4e3dSmrg
742c7c4e3dSmrgReport bugs and patches to <config-patches@gnu.org>."
752c7c4e3dSmrg
762c7c4e3dSmrgversion="\
772c7c4e3dSmrgGNU config.sub ($timestamp)
782c7c4e3dSmrg
793458e6c2SmrgCopyright 1992-2021 Free Software Foundation, Inc.
802c7c4e3dSmrg
812c7c4e3dSmrgThis is free software; see the source for copying conditions.  There is NO
822c7c4e3dSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
832c7c4e3dSmrg
842c7c4e3dSmrghelp="
852c7c4e3dSmrgTry \`$me --help' for more information."
862c7c4e3dSmrg
872c7c4e3dSmrg# Parse command line
882c7c4e3dSmrgwhile test $# -gt 0 ; do
892c7c4e3dSmrg  case $1 in
902c7c4e3dSmrg    --time-stamp | --time* | -t )
918650bb69Smrg       echo "$timestamp" ; exit ;;
922c7c4e3dSmrg    --version | -v )
938650bb69Smrg       echo "$version" ; exit ;;
942c7c4e3dSmrg    --help | --h* | -h )
958650bb69Smrg       echo "$usage"; exit ;;
962c7c4e3dSmrg    -- )     # Stop option processing
972c7c4e3dSmrg       shift; break ;;
982c7c4e3dSmrg    - )	# Use stdin as input.
992c7c4e3dSmrg       break ;;
1002c7c4e3dSmrg    -* )
1013458e6c2Smrg       echo "$me: invalid option $1$help" >&2
1022c7c4e3dSmrg       exit 1 ;;
1032c7c4e3dSmrg
1042c7c4e3dSmrg    *local*)
1052c7c4e3dSmrg       # First pass through any local machine types.
1063458e6c2Smrg       echo "$1"
1078650bb69Smrg       exit ;;
1082c7c4e3dSmrg
1092c7c4e3dSmrg    * )
1102c7c4e3dSmrg       break ;;
1112c7c4e3dSmrg  esac
1122c7c4e3dSmrgdone
1132c7c4e3dSmrg
1142c7c4e3dSmrgcase $# in
1152c7c4e3dSmrg 0) echo "$me: missing argument$help" >&2
1162c7c4e3dSmrg    exit 1;;
1172c7c4e3dSmrg 1) ;;
1182c7c4e3dSmrg *) echo "$me: too many arguments$help" >&2
1192c7c4e3dSmrg    exit 1;;
1202c7c4e3dSmrgesac
1212c7c4e3dSmrg
1223458e6c2Smrg# Split fields of configuration type
1233458e6c2Smrg# shellcheck disable=SC2162
1243458e6c2Smrgsaved_IFS=$IFS
1253458e6c2SmrgIFS="-" read field1 field2 field3 field4 <<EOF
1263458e6c2Smrg$1
1273458e6c2SmrgEOF
1283458e6c2SmrgIFS=$saved_IFS
1292c7c4e3dSmrg
1303458e6c2Smrg# Separate into logical components for further validation
1313458e6c2Smrgcase $1 in
1323458e6c2Smrg	*-*-*-*-*)
1333458e6c2Smrg		echo Invalid configuration \`"$1"\': more than four components >&2
1343458e6c2Smrg		exit 1
1352c7c4e3dSmrg		;;
1363458e6c2Smrg	*-*-*-*)
1373458e6c2Smrg		basic_machine=$field1-$field2
1383458e6c2Smrg		basic_os=$field3-$field4
1392c7c4e3dSmrg		;;
1403458e6c2Smrg	*-*-*)
1413458e6c2Smrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
1423458e6c2Smrg		# parts
1433458e6c2Smrg		maybe_os=$field2-$field3
1443458e6c2Smrg		case $maybe_os in
1453458e6c2Smrg			nto-qnx* | linux-* | uclinux-uclibc* \
1463458e6c2Smrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
1473458e6c2Smrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
1483458e6c2Smrg			| storm-chaos* | os2-emx* | rtmk-nova*)
1493458e6c2Smrg				basic_machine=$field1
1503458e6c2Smrg				basic_os=$maybe_os
1513458e6c2Smrg				;;
1523458e6c2Smrg			android-linux)
1533458e6c2Smrg				basic_machine=$field1-unknown
1543458e6c2Smrg				basic_os=linux-android
1553458e6c2Smrg				;;
1563458e6c2Smrg			*)
1573458e6c2Smrg				basic_machine=$field1-$field2
1583458e6c2Smrg				basic_os=$field3
1593458e6c2Smrg				;;
1603458e6c2Smrg		esac
1612c7c4e3dSmrg		;;
1623458e6c2Smrg	*-*)
1633458e6c2Smrg		# A lone config we happen to match not fitting any pattern
1643458e6c2Smrg		case $field1-$field2 in
1653458e6c2Smrg			decstation-3100)
1663458e6c2Smrg				basic_machine=mips-dec
1673458e6c2Smrg				basic_os=
1683458e6c2Smrg				;;
1693458e6c2Smrg			*-*)
1703458e6c2Smrg				# Second component is usually, but not always the OS
1713458e6c2Smrg				case $field2 in
1723458e6c2Smrg					# Prevent following clause from handling this valid os
1733458e6c2Smrg					sun*os*)
1743458e6c2Smrg						basic_machine=$field1
1753458e6c2Smrg						basic_os=$field2
1763458e6c2Smrg						;;
1773458e6c2Smrg					zephyr*)
1783458e6c2Smrg						basic_machine=$field1-unknown
1793458e6c2Smrg						basic_os=$field2
1803458e6c2Smrg						;;
1813458e6c2Smrg					# Manufacturers
1823458e6c2Smrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
1833458e6c2Smrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
1843458e6c2Smrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
1853458e6c2Smrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
1863458e6c2Smrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
1873458e6c2Smrg					| ultra | tti* | harris | dolphin | highlevel | gould \
1883458e6c2Smrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
1893458e6c2Smrg					| microblaze* | sim | cisco \
1903458e6c2Smrg					| oki | wec | wrs | winbond)
1913458e6c2Smrg						basic_machine=$field1-$field2
1923458e6c2Smrg						basic_os=
1933458e6c2Smrg						;;
1943458e6c2Smrg					*)
1953458e6c2Smrg						basic_machine=$field1
1963458e6c2Smrg						basic_os=$field2
1973458e6c2Smrg						;;
1983458e6c2Smrg				esac
1993458e6c2Smrg			;;
2003458e6c2Smrg		esac
2012c7c4e3dSmrg		;;
2023458e6c2Smrg	*)
2033458e6c2Smrg		# Convert single-component short-hands not valid as part of
2043458e6c2Smrg		# multi-component configurations.
2053458e6c2Smrg		case $field1 in
2063458e6c2Smrg			386bsd)
2073458e6c2Smrg				basic_machine=i386-pc
2083458e6c2Smrg				basic_os=bsd
2093458e6c2Smrg				;;
2103458e6c2Smrg			a29khif)
2113458e6c2Smrg				basic_machine=a29k-amd
2123458e6c2Smrg				basic_os=udi
2133458e6c2Smrg				;;
2143458e6c2Smrg			adobe68k)
2153458e6c2Smrg				basic_machine=m68010-adobe
2163458e6c2Smrg				basic_os=scout
2173458e6c2Smrg				;;
2183458e6c2Smrg			alliant)
2193458e6c2Smrg				basic_machine=fx80-alliant
2203458e6c2Smrg				basic_os=
2213458e6c2Smrg				;;
2223458e6c2Smrg			altos | altos3068)
2233458e6c2Smrg				basic_machine=m68k-altos
2243458e6c2Smrg				basic_os=
2253458e6c2Smrg				;;
2263458e6c2Smrg			am29k)
2273458e6c2Smrg				basic_machine=a29k-none
2283458e6c2Smrg				basic_os=bsd
2293458e6c2Smrg				;;
2303458e6c2Smrg			amdahl)
2313458e6c2Smrg				basic_machine=580-amdahl
2323458e6c2Smrg				basic_os=sysv
2333458e6c2Smrg				;;
2343458e6c2Smrg			amiga)
2353458e6c2Smrg				basic_machine=m68k-unknown
2363458e6c2Smrg				basic_os=
2373458e6c2Smrg				;;
2383458e6c2Smrg			amigaos | amigados)
2393458e6c2Smrg				basic_machine=m68k-unknown
2403458e6c2Smrg				basic_os=amigaos
2413458e6c2Smrg				;;
2423458e6c2Smrg			amigaunix | amix)
2433458e6c2Smrg				basic_machine=m68k-unknown
2443458e6c2Smrg				basic_os=sysv4
2453458e6c2Smrg				;;
2463458e6c2Smrg			apollo68)
2473458e6c2Smrg				basic_machine=m68k-apollo
2483458e6c2Smrg				basic_os=sysv
2493458e6c2Smrg				;;
2503458e6c2Smrg			apollo68bsd)
2513458e6c2Smrg				basic_machine=m68k-apollo
2523458e6c2Smrg				basic_os=bsd
2533458e6c2Smrg				;;
2543458e6c2Smrg			aros)
2553458e6c2Smrg				basic_machine=i386-pc
2563458e6c2Smrg				basic_os=aros
2573458e6c2Smrg				;;
2583458e6c2Smrg			aux)
2593458e6c2Smrg				basic_machine=m68k-apple
2603458e6c2Smrg				basic_os=aux
2613458e6c2Smrg				;;
2623458e6c2Smrg			balance)
2633458e6c2Smrg				basic_machine=ns32k-sequent
2643458e6c2Smrg				basic_os=dynix
2653458e6c2Smrg				;;
2663458e6c2Smrg			blackfin)
2673458e6c2Smrg				basic_machine=bfin-unknown
2683458e6c2Smrg				basic_os=linux
2693458e6c2Smrg				;;
2703458e6c2Smrg			cegcc)
2713458e6c2Smrg				basic_machine=arm-unknown
2723458e6c2Smrg				basic_os=cegcc
2733458e6c2Smrg				;;
2743458e6c2Smrg			convex-c1)
2753458e6c2Smrg				basic_machine=c1-convex
2763458e6c2Smrg				basic_os=bsd
2773458e6c2Smrg				;;
2783458e6c2Smrg			convex-c2)
2793458e6c2Smrg				basic_machine=c2-convex
2803458e6c2Smrg				basic_os=bsd
2813458e6c2Smrg				;;
2823458e6c2Smrg			convex-c32)
2833458e6c2Smrg				basic_machine=c32-convex
2843458e6c2Smrg				basic_os=bsd
2853458e6c2Smrg				;;
2863458e6c2Smrg			convex-c34)
2873458e6c2Smrg				basic_machine=c34-convex
2883458e6c2Smrg				basic_os=bsd
2893458e6c2Smrg				;;
2903458e6c2Smrg			convex-c38)
2913458e6c2Smrg				basic_machine=c38-convex
2923458e6c2Smrg				basic_os=bsd
2933458e6c2Smrg				;;
2943458e6c2Smrg			cray)
2953458e6c2Smrg				basic_machine=j90-cray
2963458e6c2Smrg				basic_os=unicos
2973458e6c2Smrg				;;
2983458e6c2Smrg			crds | unos)
2993458e6c2Smrg				basic_machine=m68k-crds
3003458e6c2Smrg				basic_os=
3013458e6c2Smrg				;;
3023458e6c2Smrg			da30)
3033458e6c2Smrg				basic_machine=m68k-da30
3043458e6c2Smrg				basic_os=
3053458e6c2Smrg				;;
3063458e6c2Smrg			decstation | pmax | pmin | dec3100 | decstatn)
3073458e6c2Smrg				basic_machine=mips-dec
3083458e6c2Smrg				basic_os=
3093458e6c2Smrg				;;
3103458e6c2Smrg			delta88)
3113458e6c2Smrg				basic_machine=m88k-motorola
3123458e6c2Smrg				basic_os=sysv3
3133458e6c2Smrg				;;
3143458e6c2Smrg			dicos)
3153458e6c2Smrg				basic_machine=i686-pc
3163458e6c2Smrg				basic_os=dicos
3173458e6c2Smrg				;;
3183458e6c2Smrg			djgpp)
3193458e6c2Smrg				basic_machine=i586-pc
3203458e6c2Smrg				basic_os=msdosdjgpp
3213458e6c2Smrg				;;
3223458e6c2Smrg			ebmon29k)
3233458e6c2Smrg				basic_machine=a29k-amd
3243458e6c2Smrg				basic_os=ebmon
3253458e6c2Smrg				;;
3263458e6c2Smrg			es1800 | OSE68k | ose68k | ose | OSE)
3273458e6c2Smrg				basic_machine=m68k-ericsson
3283458e6c2Smrg				basic_os=ose
3293458e6c2Smrg				;;
3303458e6c2Smrg			gmicro)
3313458e6c2Smrg				basic_machine=tron-gmicro
3323458e6c2Smrg				basic_os=sysv
3333458e6c2Smrg				;;
3343458e6c2Smrg			go32)
3353458e6c2Smrg				basic_machine=i386-pc
3363458e6c2Smrg				basic_os=go32
3373458e6c2Smrg				;;
3383458e6c2Smrg			h8300hms)
3393458e6c2Smrg				basic_machine=h8300-hitachi
3403458e6c2Smrg				basic_os=hms
3413458e6c2Smrg				;;
3423458e6c2Smrg			h8300xray)
3433458e6c2Smrg				basic_machine=h8300-hitachi
3443458e6c2Smrg				basic_os=xray
3453458e6c2Smrg				;;
3463458e6c2Smrg			h8500hms)
3473458e6c2Smrg				basic_machine=h8500-hitachi
3483458e6c2Smrg				basic_os=hms
3493458e6c2Smrg				;;
3503458e6c2Smrg			harris)
3513458e6c2Smrg				basic_machine=m88k-harris
3523458e6c2Smrg				basic_os=sysv3
3533458e6c2Smrg				;;
3543458e6c2Smrg			hp300 | hp300hpux)
3553458e6c2Smrg				basic_machine=m68k-hp
3563458e6c2Smrg				basic_os=hpux
3573458e6c2Smrg				;;
3583458e6c2Smrg			hp300bsd)
3593458e6c2Smrg				basic_machine=m68k-hp
3603458e6c2Smrg				basic_os=bsd
3613458e6c2Smrg				;;
3623458e6c2Smrg			hppaosf)
3633458e6c2Smrg				basic_machine=hppa1.1-hp
3643458e6c2Smrg				basic_os=osf
3653458e6c2Smrg				;;
3663458e6c2Smrg			hppro)
3673458e6c2Smrg				basic_machine=hppa1.1-hp
3683458e6c2Smrg				basic_os=proelf
3693458e6c2Smrg				;;
3703458e6c2Smrg			i386mach)
3713458e6c2Smrg				basic_machine=i386-mach
3723458e6c2Smrg				basic_os=mach
3733458e6c2Smrg				;;
3743458e6c2Smrg			isi68 | isi)
3753458e6c2Smrg				basic_machine=m68k-isi
3763458e6c2Smrg				basic_os=sysv
3773458e6c2Smrg				;;
3783458e6c2Smrg			m68knommu)
3793458e6c2Smrg				basic_machine=m68k-unknown
3803458e6c2Smrg				basic_os=linux
3813458e6c2Smrg				;;
3823458e6c2Smrg			magnum | m3230)
3833458e6c2Smrg				basic_machine=mips-mips
3843458e6c2Smrg				basic_os=sysv
3853458e6c2Smrg				;;
3863458e6c2Smrg			merlin)
3873458e6c2Smrg				basic_machine=ns32k-utek
3883458e6c2Smrg				basic_os=sysv
3893458e6c2Smrg				;;
3903458e6c2Smrg			mingw64)
3913458e6c2Smrg				basic_machine=x86_64-pc
3923458e6c2Smrg				basic_os=mingw64
3933458e6c2Smrg				;;
3943458e6c2Smrg			mingw32)
3953458e6c2Smrg				basic_machine=i686-pc
3963458e6c2Smrg				basic_os=mingw32
3973458e6c2Smrg				;;
3983458e6c2Smrg			mingw32ce)
3993458e6c2Smrg				basic_machine=arm-unknown
4003458e6c2Smrg				basic_os=mingw32ce
4013458e6c2Smrg				;;
4023458e6c2Smrg			monitor)
4033458e6c2Smrg				basic_machine=m68k-rom68k
4043458e6c2Smrg				basic_os=coff
4053458e6c2Smrg				;;
4063458e6c2Smrg			morphos)
4073458e6c2Smrg				basic_machine=powerpc-unknown
4083458e6c2Smrg				basic_os=morphos
4093458e6c2Smrg				;;
4103458e6c2Smrg			moxiebox)
4113458e6c2Smrg				basic_machine=moxie-unknown
4123458e6c2Smrg				basic_os=moxiebox
4133458e6c2Smrg				;;
4143458e6c2Smrg			msdos)
4153458e6c2Smrg				basic_machine=i386-pc
4163458e6c2Smrg				basic_os=msdos
4173458e6c2Smrg				;;
4183458e6c2Smrg			msys)
4193458e6c2Smrg				basic_machine=i686-pc
4203458e6c2Smrg				basic_os=msys
4213458e6c2Smrg				;;
4223458e6c2Smrg			mvs)
4233458e6c2Smrg				basic_machine=i370-ibm
4243458e6c2Smrg				basic_os=mvs
4253458e6c2Smrg				;;
4263458e6c2Smrg			nacl)
4273458e6c2Smrg				basic_machine=le32-unknown
4283458e6c2Smrg				basic_os=nacl
4293458e6c2Smrg				;;
4303458e6c2Smrg			ncr3000)
4313458e6c2Smrg				basic_machine=i486-ncr
4323458e6c2Smrg				basic_os=sysv4
4333458e6c2Smrg				;;
4343458e6c2Smrg			netbsd386)
4353458e6c2Smrg				basic_machine=i386-pc
4363458e6c2Smrg				basic_os=netbsd
4373458e6c2Smrg				;;
4383458e6c2Smrg			netwinder)
4393458e6c2Smrg				basic_machine=armv4l-rebel
4403458e6c2Smrg				basic_os=linux
4413458e6c2Smrg				;;
4423458e6c2Smrg			news | news700 | news800 | news900)
4433458e6c2Smrg				basic_machine=m68k-sony
4443458e6c2Smrg				basic_os=newsos
4453458e6c2Smrg				;;
4463458e6c2Smrg			news1000)
4473458e6c2Smrg				basic_machine=m68030-sony
4483458e6c2Smrg				basic_os=newsos
4493458e6c2Smrg				;;
4503458e6c2Smrg			necv70)
4513458e6c2Smrg				basic_machine=v70-nec
4523458e6c2Smrg				basic_os=sysv
4533458e6c2Smrg				;;
4543458e6c2Smrg			nh3000)
4553458e6c2Smrg				basic_machine=m68k-harris
4563458e6c2Smrg				basic_os=cxux
4573458e6c2Smrg				;;
4583458e6c2Smrg			nh[45]000)
4593458e6c2Smrg				basic_machine=m88k-harris
4603458e6c2Smrg				basic_os=cxux
4613458e6c2Smrg				;;
4623458e6c2Smrg			nindy960)
4633458e6c2Smrg				basic_machine=i960-intel
4643458e6c2Smrg				basic_os=nindy
4653458e6c2Smrg				;;
4663458e6c2Smrg			mon960)
4673458e6c2Smrg				basic_machine=i960-intel
4683458e6c2Smrg				basic_os=mon960
4693458e6c2Smrg				;;
4703458e6c2Smrg			nonstopux)
4713458e6c2Smrg				basic_machine=mips-compaq
4723458e6c2Smrg				basic_os=nonstopux
4733458e6c2Smrg				;;
4743458e6c2Smrg			os400)
4753458e6c2Smrg				basic_machine=powerpc-ibm
4763458e6c2Smrg				basic_os=os400
4773458e6c2Smrg				;;
4783458e6c2Smrg			OSE68000 | ose68000)
4793458e6c2Smrg				basic_machine=m68000-ericsson
4803458e6c2Smrg				basic_os=ose
4813458e6c2Smrg				;;
4823458e6c2Smrg			os68k)
4833458e6c2Smrg				basic_machine=m68k-none
4843458e6c2Smrg				basic_os=os68k
4853458e6c2Smrg				;;
4863458e6c2Smrg			paragon)
4873458e6c2Smrg				basic_machine=i860-intel
4883458e6c2Smrg				basic_os=osf
4893458e6c2Smrg				;;
4903458e6c2Smrg			parisc)
4913458e6c2Smrg				basic_machine=hppa-unknown
4923458e6c2Smrg				basic_os=linux
4933458e6c2Smrg				;;
4943458e6c2Smrg			psp)
4953458e6c2Smrg				basic_machine=mipsallegrexel-sony
4963458e6c2Smrg				basic_os=psp
4973458e6c2Smrg				;;
4983458e6c2Smrg			pw32)
4993458e6c2Smrg				basic_machine=i586-unknown
5003458e6c2Smrg				basic_os=pw32
5013458e6c2Smrg				;;
5023458e6c2Smrg			rdos | rdos64)
5033458e6c2Smrg				basic_machine=x86_64-pc
5043458e6c2Smrg				basic_os=rdos
5053458e6c2Smrg				;;
5063458e6c2Smrg			rdos32)
5073458e6c2Smrg				basic_machine=i386-pc
5083458e6c2Smrg				basic_os=rdos
5093458e6c2Smrg				;;
5103458e6c2Smrg			rom68k)
5113458e6c2Smrg				basic_machine=m68k-rom68k
5123458e6c2Smrg				basic_os=coff
5133458e6c2Smrg				;;
5143458e6c2Smrg			sa29200)
5153458e6c2Smrg				basic_machine=a29k-amd
5163458e6c2Smrg				basic_os=udi
5173458e6c2Smrg				;;
5183458e6c2Smrg			sei)
5193458e6c2Smrg				basic_machine=mips-sei
5203458e6c2Smrg				basic_os=seiux
5213458e6c2Smrg				;;
5223458e6c2Smrg			sequent)
5233458e6c2Smrg				basic_machine=i386-sequent
5243458e6c2Smrg				basic_os=
5253458e6c2Smrg				;;
5263458e6c2Smrg			sps7)
5273458e6c2Smrg				basic_machine=m68k-bull
5283458e6c2Smrg				basic_os=sysv2
5293458e6c2Smrg				;;
5303458e6c2Smrg			st2000)
5313458e6c2Smrg				basic_machine=m68k-tandem
5323458e6c2Smrg				basic_os=
5333458e6c2Smrg				;;
5343458e6c2Smrg			stratus)
5353458e6c2Smrg				basic_machine=i860-stratus
5363458e6c2Smrg				basic_os=sysv4
5373458e6c2Smrg				;;
5383458e6c2Smrg			sun2)
5393458e6c2Smrg				basic_machine=m68000-sun
5403458e6c2Smrg				basic_os=
5413458e6c2Smrg				;;
5423458e6c2Smrg			sun2os3)
5433458e6c2Smrg				basic_machine=m68000-sun
5443458e6c2Smrg				basic_os=sunos3
5453458e6c2Smrg				;;
5463458e6c2Smrg			sun2os4)
5473458e6c2Smrg				basic_machine=m68000-sun
5483458e6c2Smrg				basic_os=sunos4
5493458e6c2Smrg				;;
5503458e6c2Smrg			sun3)
5513458e6c2Smrg				basic_machine=m68k-sun
5523458e6c2Smrg				basic_os=
5533458e6c2Smrg				;;
5543458e6c2Smrg			sun3os3)
5553458e6c2Smrg				basic_machine=m68k-sun
5563458e6c2Smrg				basic_os=sunos3
5573458e6c2Smrg				;;
5583458e6c2Smrg			sun3os4)
5593458e6c2Smrg				basic_machine=m68k-sun
5603458e6c2Smrg				basic_os=sunos4
5613458e6c2Smrg				;;
5623458e6c2Smrg			sun4)
5633458e6c2Smrg				basic_machine=sparc-sun
5643458e6c2Smrg				basic_os=
5653458e6c2Smrg				;;
5663458e6c2Smrg			sun4os3)
5673458e6c2Smrg				basic_machine=sparc-sun
5683458e6c2Smrg				basic_os=sunos3
5693458e6c2Smrg				;;
5703458e6c2Smrg			sun4os4)
5713458e6c2Smrg				basic_machine=sparc-sun
5723458e6c2Smrg				basic_os=sunos4
5733458e6c2Smrg				;;
5743458e6c2Smrg			sun4sol2)
5753458e6c2Smrg				basic_machine=sparc-sun
5763458e6c2Smrg				basic_os=solaris2
5773458e6c2Smrg				;;
5783458e6c2Smrg			sun386 | sun386i | roadrunner)
5793458e6c2Smrg				basic_machine=i386-sun
5803458e6c2Smrg				basic_os=
5813458e6c2Smrg				;;
5823458e6c2Smrg			sv1)
5833458e6c2Smrg				basic_machine=sv1-cray
5843458e6c2Smrg				basic_os=unicos
5853458e6c2Smrg				;;
5863458e6c2Smrg			symmetry)
5873458e6c2Smrg				basic_machine=i386-sequent
5883458e6c2Smrg				basic_os=dynix
5893458e6c2Smrg				;;
5903458e6c2Smrg			t3e)
5913458e6c2Smrg				basic_machine=alphaev5-cray
5923458e6c2Smrg				basic_os=unicos
5933458e6c2Smrg				;;
5943458e6c2Smrg			t90)
5953458e6c2Smrg				basic_machine=t90-cray
5963458e6c2Smrg				basic_os=unicos
5973458e6c2Smrg				;;
5983458e6c2Smrg			toad1)
5993458e6c2Smrg				basic_machine=pdp10-xkl
6003458e6c2Smrg				basic_os=tops20
6013458e6c2Smrg				;;
6023458e6c2Smrg			tpf)
6033458e6c2Smrg				basic_machine=s390x-ibm
6043458e6c2Smrg				basic_os=tpf
6053458e6c2Smrg				;;
6063458e6c2Smrg			udi29k)
6073458e6c2Smrg				basic_machine=a29k-amd
6083458e6c2Smrg				basic_os=udi
6093458e6c2Smrg				;;
6103458e6c2Smrg			ultra3)
6113458e6c2Smrg				basic_machine=a29k-nyu
6123458e6c2Smrg				basic_os=sym1
6133458e6c2Smrg				;;
6143458e6c2Smrg			v810 | necv810)
6153458e6c2Smrg				basic_machine=v810-nec
6163458e6c2Smrg				basic_os=none
6173458e6c2Smrg				;;
6183458e6c2Smrg			vaxv)
6193458e6c2Smrg				basic_machine=vax-dec
6203458e6c2Smrg				basic_os=sysv
6213458e6c2Smrg				;;
6223458e6c2Smrg			vms)
6233458e6c2Smrg				basic_machine=vax-dec
6243458e6c2Smrg				basic_os=vms
6253458e6c2Smrg				;;
6263458e6c2Smrg			vsta)
6273458e6c2Smrg				basic_machine=i386-pc
6283458e6c2Smrg				basic_os=vsta
6293458e6c2Smrg				;;
6303458e6c2Smrg			vxworks960)
6313458e6c2Smrg				basic_machine=i960-wrs
6323458e6c2Smrg				basic_os=vxworks
6333458e6c2Smrg				;;
6343458e6c2Smrg			vxworks68)
6353458e6c2Smrg				basic_machine=m68k-wrs
6363458e6c2Smrg				basic_os=vxworks
6373458e6c2Smrg				;;
6383458e6c2Smrg			vxworks29k)
6393458e6c2Smrg				basic_machine=a29k-wrs
6403458e6c2Smrg				basic_os=vxworks
6413458e6c2Smrg				;;
6423458e6c2Smrg			xbox)
6433458e6c2Smrg				basic_machine=i686-pc
6443458e6c2Smrg				basic_os=mingw32
6453458e6c2Smrg				;;
6463458e6c2Smrg			ymp)
6473458e6c2Smrg				basic_machine=ymp-cray
6483458e6c2Smrg				basic_os=unicos
6493458e6c2Smrg				;;
6503458e6c2Smrg			*)
6513458e6c2Smrg				basic_machine=$1
6523458e6c2Smrg				basic_os=
6533458e6c2Smrg				;;
6543458e6c2Smrg		esac
6552c7c4e3dSmrg		;;
6562c7c4e3dSmrgesac
6572c7c4e3dSmrg
6583458e6c2Smrg# Decode 1-component or ad-hoc basic machines
6592c7c4e3dSmrgcase $basic_machine in
6603458e6c2Smrg	# Here we handle the default manufacturer of certain CPU types.  It is in
6613458e6c2Smrg	# some cases the only manufacturer, in others, it is the most popular.
6623458e6c2Smrg	w89k)
6633458e6c2Smrg		cpu=hppa1.1
6643458e6c2Smrg		vendor=winbond
6652becc446Smrg		;;
6663458e6c2Smrg	op50n)
6673458e6c2Smrg		cpu=hppa1.1
6683458e6c2Smrg		vendor=oki
6692c7c4e3dSmrg		;;
6703458e6c2Smrg	op60c)
6713458e6c2Smrg		cpu=hppa1.1
6723458e6c2Smrg		vendor=oki
6732c7c4e3dSmrg		;;
6743458e6c2Smrg	ibm*)
6753458e6c2Smrg		cpu=i370
6763458e6c2Smrg		vendor=ibm
6778650bb69Smrg		;;
6783458e6c2Smrg	orion105)
6793458e6c2Smrg		cpu=clipper
6803458e6c2Smrg		vendor=highlevel
6812becc446Smrg		;;
6823458e6c2Smrg	mac | mpw | mac-mpw)
6833458e6c2Smrg		cpu=m68k
6843458e6c2Smrg		vendor=apple
6852becc446Smrg		;;
6863458e6c2Smrg	pmac | pmac-mpw)
6873458e6c2Smrg		cpu=powerpc
6883458e6c2Smrg		vendor=apple
6892becc446Smrg		;;
6902becc446Smrg
6912c7c4e3dSmrg	# Recognize the various machine names and aliases which stand
6922c7c4e3dSmrg	# for a CPU type and a company and sometimes even an OS.
6932c7c4e3dSmrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
6943458e6c2Smrg		cpu=m68000
6953458e6c2Smrg		vendor=att
6962c7c4e3dSmrg		;;
6972c7c4e3dSmrg	3b*)
6983458e6c2Smrg		cpu=we32k
6993458e6c2Smrg		vendor=att
7008650bb69Smrg		;;
70116d7e2f1Smrg	bluegene*)
7023458e6c2Smrg		cpu=powerpc
7033458e6c2Smrg		vendor=ibm
7043458e6c2Smrg		basic_os=cnk
7052c7c4e3dSmrg		;;
7062c7c4e3dSmrg	decsystem10* | dec10*)
7073458e6c2Smrg		cpu=pdp10
7083458e6c2Smrg		vendor=dec
7093458e6c2Smrg		basic_os=tops10
7102c7c4e3dSmrg		;;
7112c7c4e3dSmrg	decsystem20* | dec20*)
7123458e6c2Smrg		cpu=pdp10
7133458e6c2Smrg		vendor=dec
7143458e6c2Smrg		basic_os=tops20
7152c7c4e3dSmrg		;;
7162c7c4e3dSmrg	delta | 3300 | motorola-3300 | motorola-delta \
7172c7c4e3dSmrg	      | 3300-motorola | delta-motorola)
7183458e6c2Smrg		cpu=m68k
7193458e6c2Smrg		vendor=motorola
7202c7c4e3dSmrg		;;
7213458e6c2Smrg	dpx2*)
7223458e6c2Smrg		cpu=m68k
7233458e6c2Smrg		vendor=bull
7243458e6c2Smrg		basic_os=sysv3
7252c7c4e3dSmrg		;;
7262c7c4e3dSmrg	encore | umax | mmax)
7273458e6c2Smrg		cpu=ns32k
7283458e6c2Smrg		vendor=encore
7292c7c4e3dSmrg		;;
7303458e6c2Smrg	elxsi)
7313458e6c2Smrg		cpu=elxsi
7323458e6c2Smrg		vendor=elxsi
7333458e6c2Smrg		basic_os=${basic_os:-bsd}
7342c7c4e3dSmrg		;;
7352c7c4e3dSmrg	fx2800)
7363458e6c2Smrg		cpu=i860
7373458e6c2Smrg		vendor=alliant
7382c7c4e3dSmrg		;;
7392c7c4e3dSmrg	genix)
7403458e6c2Smrg		cpu=ns32k
7413458e6c2Smrg		vendor=ns
7422c7c4e3dSmrg		;;
7432c7c4e3dSmrg	h3050r* | hiux*)
7443458e6c2Smrg		cpu=hppa1.1
7453458e6c2Smrg		vendor=hitachi
7463458e6c2Smrg		basic_os=hiuxwe2
7472c7c4e3dSmrg		;;
7482c7c4e3dSmrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
7493458e6c2Smrg		cpu=hppa1.0
7503458e6c2Smrg		vendor=hp
7512c7c4e3dSmrg		;;
7522c7c4e3dSmrg	hp9k2[0-9][0-9] | hp9k31[0-9])
7533458e6c2Smrg		cpu=m68000
7543458e6c2Smrg		vendor=hp
7552c7c4e3dSmrg		;;
7562c7c4e3dSmrg	hp9k3[2-9][0-9])
7573458e6c2Smrg		cpu=m68k
7583458e6c2Smrg		vendor=hp
7592c7c4e3dSmrg		;;
7602c7c4e3dSmrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
7613458e6c2Smrg		cpu=hppa1.0
7623458e6c2Smrg		vendor=hp
7632c7c4e3dSmrg		;;
7642c7c4e3dSmrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
7653458e6c2Smrg		cpu=hppa1.1
7663458e6c2Smrg		vendor=hp
7672c7c4e3dSmrg		;;
7682c7c4e3dSmrg	hp9k78[0-9] | hp78[0-9])
7692c7c4e3dSmrg		# FIXME: really hppa2.0-hp
7703458e6c2Smrg		cpu=hppa1.1
7713458e6c2Smrg		vendor=hp
7722c7c4e3dSmrg		;;
7732c7c4e3dSmrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
7742c7c4e3dSmrg		# FIXME: really hppa2.0-hp
7753458e6c2Smrg		cpu=hppa1.1
7763458e6c2Smrg		vendor=hp
7772c7c4e3dSmrg		;;
7782c7c4e3dSmrg	hp9k8[0-9][13679] | hp8[0-9][13679])
7793458e6c2Smrg		cpu=hppa1.1
7803458e6c2Smrg		vendor=hp
7812c7c4e3dSmrg		;;
7822c7c4e3dSmrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
7833458e6c2Smrg		cpu=hppa1.0
7843458e6c2Smrg		vendor=hp
7852c7c4e3dSmrg		;;
7862c7c4e3dSmrg	i*86v32)
7873458e6c2Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7883458e6c2Smrg		vendor=pc
7893458e6c2Smrg		basic_os=sysv32
7902c7c4e3dSmrg		;;
7912c7c4e3dSmrg	i*86v4*)
7923458e6c2Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7933458e6c2Smrg		vendor=pc
7943458e6c2Smrg		basic_os=sysv4
7952c7c4e3dSmrg		;;
7962c7c4e3dSmrg	i*86v)
7973458e6c2Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7983458e6c2Smrg		vendor=pc
7993458e6c2Smrg		basic_os=sysv
8002c7c4e3dSmrg		;;
8012c7c4e3dSmrg	i*86sol2)
8023458e6c2Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
8033458e6c2Smrg		vendor=pc
8043458e6c2Smrg		basic_os=solaris2
8052c7c4e3dSmrg		;;
8063458e6c2Smrg	j90 | j90-cray)
8073458e6c2Smrg		cpu=j90
8083458e6c2Smrg		vendor=cray
8093458e6c2Smrg		basic_os=${basic_os:-unicos}
8102c7c4e3dSmrg		;;
8112c7c4e3dSmrg	iris | iris4d)
8123458e6c2Smrg		cpu=mips
8133458e6c2Smrg		vendor=sgi
8143458e6c2Smrg		case $basic_os in
8153458e6c2Smrg		    irix*)
8162c7c4e3dSmrg			;;
8172c7c4e3dSmrg		    *)
8183458e6c2Smrg			basic_os=irix4
8192c7c4e3dSmrg			;;
8202c7c4e3dSmrg		esac
8212c7c4e3dSmrg		;;
8222c7c4e3dSmrg	miniframe)
8233458e6c2Smrg		cpu=m68000
8243458e6c2Smrg		vendor=convergent
8252becc446Smrg		;;
8263458e6c2Smrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
8273458e6c2Smrg		cpu=m68k
8283458e6c2Smrg		vendor=atari
8293458e6c2Smrg		basic_os=mint
8302c7c4e3dSmrg		;;
8312c7c4e3dSmrg	news-3600 | risc-news)
8323458e6c2Smrg		cpu=mips
8333458e6c2Smrg		vendor=sony
8343458e6c2Smrg		basic_os=newsos
8353458e6c2Smrg		;;
8363458e6c2Smrg	next | m*-next)
8373458e6c2Smrg		cpu=m68k
8383458e6c2Smrg		vendor=next
8393458e6c2Smrg		case $basic_os in
8403458e6c2Smrg		    openstep*)
8413458e6c2Smrg		        ;;
8423458e6c2Smrg		    nextstep*)
8432c7c4e3dSmrg			;;
8443458e6c2Smrg		    ns2*)
8453458e6c2Smrg		      basic_os=nextstep2
8462c7c4e3dSmrg			;;
8472c7c4e3dSmrg		    *)
8483458e6c2Smrg		      basic_os=nextstep3
8492c7c4e3dSmrg			;;
8502c7c4e3dSmrg		esac
8512c7c4e3dSmrg		;;
8522c7c4e3dSmrg	np1)
8533458e6c2Smrg		cpu=np1
8543458e6c2Smrg		vendor=gould
8552c7c4e3dSmrg		;;
8562c7c4e3dSmrg	op50n-* | op60c-*)
8573458e6c2Smrg		cpu=hppa1.1
8583458e6c2Smrg		vendor=oki
8593458e6c2Smrg		basic_os=proelf
8602c7c4e3dSmrg		;;
8612c7c4e3dSmrg	pa-hitachi)
8623458e6c2Smrg		cpu=hppa1.1
8633458e6c2Smrg		vendor=hitachi
8643458e6c2Smrg		basic_os=hiuxwe2
8658650bb69Smrg		;;
8662c7c4e3dSmrg	pbd)
8673458e6c2Smrg		cpu=sparc
8683458e6c2Smrg		vendor=tti
8692c7c4e3dSmrg		;;
8702c7c4e3dSmrg	pbb)
8713458e6c2Smrg		cpu=m68k
8723458e6c2Smrg		vendor=tti
8738650bb69Smrg		;;
8743458e6c2Smrg	pc532)
8753458e6c2Smrg		cpu=ns32k
8763458e6c2Smrg		vendor=pc532
8772c7c4e3dSmrg		;;
8782c7c4e3dSmrg	pn)
8793458e6c2Smrg		cpu=pn
8803458e6c2Smrg		vendor=gould
8812c7c4e3dSmrg		;;
8823458e6c2Smrg	power)
8833458e6c2Smrg		cpu=power
8843458e6c2Smrg		vendor=ibm
8852c7c4e3dSmrg		;;
8862c7c4e3dSmrg	ps2)
8873458e6c2Smrg		cpu=i386
8883458e6c2Smrg		vendor=ibm
8892c7c4e3dSmrg		;;
8902c7c4e3dSmrg	rm[46]00)
8913458e6c2Smrg		cpu=mips
8923458e6c2Smrg		vendor=siemens
8932c7c4e3dSmrg		;;
8942c7c4e3dSmrg	rtpc | rtpc-*)
8953458e6c2Smrg		cpu=romp
8963458e6c2Smrg		vendor=ibm
8978650bb69Smrg		;;
8983458e6c2Smrg	sde)
8993458e6c2Smrg		cpu=mipsisa32
9003458e6c2Smrg		vendor=sde
9013458e6c2Smrg		basic_os=${basic_os:-elf}
9022c7c4e3dSmrg		;;
9033458e6c2Smrg	simso-wrs)
9043458e6c2Smrg		cpu=sparclite
9053458e6c2Smrg		vendor=wrs
9063458e6c2Smrg		basic_os=vxworks
9072c7c4e3dSmrg		;;
9083458e6c2Smrg	tower | tower-32)
9093458e6c2Smrg		cpu=m68k
9103458e6c2Smrg		vendor=ncr
9118650bb69Smrg		;;
9123458e6c2Smrg	vpp*|vx|vx-*)
9133458e6c2Smrg		cpu=f301
9143458e6c2Smrg		vendor=fujitsu
9152c7c4e3dSmrg		;;
9163458e6c2Smrg	w65)
9173458e6c2Smrg		cpu=w65
9183458e6c2Smrg		vendor=wdc
9192c7c4e3dSmrg		;;
9203458e6c2Smrg	w89k-*)
9213458e6c2Smrg		cpu=hppa1.1
9223458e6c2Smrg		vendor=winbond
9233458e6c2Smrg		basic_os=proelf
9242c7c4e3dSmrg		;;
9253458e6c2Smrg	none)
9263458e6c2Smrg		cpu=none
9273458e6c2Smrg		vendor=none
9288650bb69Smrg		;;
9293458e6c2Smrg	leon|leon[3-9])
9303458e6c2Smrg		cpu=sparc
9313458e6c2Smrg		vendor=$basic_machine
9322c7c4e3dSmrg		;;
9333458e6c2Smrg	leon-*|leon[3-9]-*)
9343458e6c2Smrg		cpu=sparc
9353458e6c2Smrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
9362c7c4e3dSmrg		;;
9373458e6c2Smrg
9383458e6c2Smrg	*-*)
9393458e6c2Smrg		# shellcheck disable=SC2162
9403458e6c2Smrg		saved_IFS=$IFS
9413458e6c2Smrg		IFS="-" read cpu vendor <<EOF
9423458e6c2Smrg$basic_machine
9433458e6c2SmrgEOF
9443458e6c2Smrg		IFS=$saved_IFS
9452c7c4e3dSmrg		;;
9463458e6c2Smrg	# We use `pc' rather than `unknown'
9473458e6c2Smrg	# because (1) that's what they normally are, and
9483458e6c2Smrg	# (2) the word "unknown" tends to confuse beginning users.
9493458e6c2Smrg	i*86 | x86_64)
9503458e6c2Smrg		cpu=$basic_machine
9513458e6c2Smrg		vendor=pc
9522c7c4e3dSmrg		;;
9533458e6c2Smrg	# These rules are duplicated from below for sake of the special case above;
9543458e6c2Smrg	# i.e. things that normalized to x86 arches should also default to "pc"
9553458e6c2Smrg	pc98)
9563458e6c2Smrg		cpu=i386
9573458e6c2Smrg		vendor=pc
9582c7c4e3dSmrg		;;
9593458e6c2Smrg	x64 | amd64)
9603458e6c2Smrg		cpu=x86_64
9613458e6c2Smrg		vendor=pc
9622c7c4e3dSmrg		;;
9633458e6c2Smrg	# Recognize the basic CPU types without company name.
9643458e6c2Smrg	*)
9653458e6c2Smrg		cpu=$basic_machine
9663458e6c2Smrg		vendor=unknown
9672becc446Smrg		;;
9683458e6c2Smrgesac
9693458e6c2Smrg
9703458e6c2Smrgunset -v basic_machine
9713458e6c2Smrg
9723458e6c2Smrg# Decode basic machines in the full and proper CPU-Company form.
9733458e6c2Smrgcase $cpu-$vendor in
9743458e6c2Smrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
9753458e6c2Smrg	# some cases the only manufacturer, in others, it is the most popular.
9763458e6c2Smrg	craynv-unknown)
9773458e6c2Smrg		vendor=cray
9783458e6c2Smrg		basic_os=${basic_os:-unicosmp}
9792c7c4e3dSmrg		;;
9803458e6c2Smrg	c90-unknown | c90-cray)
9813458e6c2Smrg		vendor=cray
9823458e6c2Smrg		basic_os=${Basic_os:-unicos}
9832c7c4e3dSmrg		;;
9843458e6c2Smrg	fx80-unknown)
9853458e6c2Smrg		vendor=alliant
9862c7c4e3dSmrg		;;
9873458e6c2Smrg	romp-unknown)
9883458e6c2Smrg		vendor=ibm
9892c7c4e3dSmrg		;;
9903458e6c2Smrg	mmix-unknown)
9913458e6c2Smrg		vendor=knuth
9922c7c4e3dSmrg		;;
9933458e6c2Smrg	microblaze-unknown | microblazeel-unknown)
9943458e6c2Smrg		vendor=xilinx
9952c7c4e3dSmrg		;;
9963458e6c2Smrg	rs6000-unknown)
9973458e6c2Smrg		vendor=ibm
9982c7c4e3dSmrg		;;
9993458e6c2Smrg	vax-unknown)
10003458e6c2Smrg		vendor=dec
10012c7c4e3dSmrg		;;
10023458e6c2Smrg	pdp11-unknown)
10033458e6c2Smrg		vendor=dec
10042c7c4e3dSmrg		;;
10053458e6c2Smrg	we32k-unknown)
10063458e6c2Smrg		vendor=att
10072c7c4e3dSmrg		;;
10083458e6c2Smrg	cydra-unknown)
10093458e6c2Smrg		vendor=cydrome
10102c7c4e3dSmrg		;;
10113458e6c2Smrg	i370-ibm*)
10123458e6c2Smrg		vendor=ibm
10132c7c4e3dSmrg		;;
10143458e6c2Smrg	orion-unknown)
10153458e6c2Smrg		vendor=highlevel
10162c7c4e3dSmrg		;;
10173458e6c2Smrg	xps-unknown | xps100-unknown)
10183458e6c2Smrg		cpu=xps100
10193458e6c2Smrg		vendor=honeywell
10202c7c4e3dSmrg		;;
10213458e6c2Smrg
10223458e6c2Smrg	# Here we normalize CPU types with a missing or matching vendor
10233458e6c2Smrg	dpx20-unknown | dpx20-bull)
10243458e6c2Smrg		cpu=rs6000
10253458e6c2Smrg		vendor=bull
10263458e6c2Smrg		basic_os=${basic_os:-bosx}
10272c7c4e3dSmrg		;;
10283458e6c2Smrg
10293458e6c2Smrg	# Here we normalize CPU types irrespective of the vendor
10303458e6c2Smrg	amd64-*)
10313458e6c2Smrg		cpu=x86_64
10328650bb69Smrg		;;
10333458e6c2Smrg	blackfin-*)
10343458e6c2Smrg		cpu=bfin
10353458e6c2Smrg		basic_os=linux
10362c7c4e3dSmrg		;;
10373458e6c2Smrg	c54x-*)
10383458e6c2Smrg		cpu=tic54x
10392c7c4e3dSmrg		;;
10403458e6c2Smrg	c55x-*)
10413458e6c2Smrg		cpu=tic55x
10422c7c4e3dSmrg		;;
10433458e6c2Smrg	c6x-*)
10443458e6c2Smrg		cpu=tic6x
10452c7c4e3dSmrg		;;
10463458e6c2Smrg	e500v[12]-*)
10473458e6c2Smrg		cpu=powerpc
10483458e6c2Smrg		basic_os=${basic_os}"spe"
10498650bb69Smrg		;;
10503458e6c2Smrg	mips3*-*)
10513458e6c2Smrg		cpu=mips64
10522c7c4e3dSmrg		;;
10533458e6c2Smrg	ms1-*)
10543458e6c2Smrg		cpu=mt
10552c7c4e3dSmrg		;;
10563458e6c2Smrg	m68knommu-*)
10573458e6c2Smrg		cpu=m68k
10583458e6c2Smrg		basic_os=linux
10592c7c4e3dSmrg		;;
10603458e6c2Smrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
10613458e6c2Smrg		cpu=s12z
10622c7c4e3dSmrg		;;
10633458e6c2Smrg	openrisc-*)
10643458e6c2Smrg		cpu=or32
10652c7c4e3dSmrg		;;
10663458e6c2Smrg	parisc-*)
10673458e6c2Smrg		cpu=hppa
10683458e6c2Smrg		basic_os=linux
10692c7c4e3dSmrg		;;
10703458e6c2Smrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
10713458e6c2Smrg		cpu=i586
10722c7c4e3dSmrg		;;
10733458e6c2Smrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
10743458e6c2Smrg		cpu=i686
10752c7c4e3dSmrg		;;
10763458e6c2Smrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
10773458e6c2Smrg		cpu=i686
10782c7c4e3dSmrg		;;
10793458e6c2Smrg	pentium4-*)
10803458e6c2Smrg		cpu=i786
10812c7c4e3dSmrg		;;
10823458e6c2Smrg	pc98-*)
10833458e6c2Smrg		cpu=i386
10842c7c4e3dSmrg		;;
10853458e6c2Smrg	ppc-* | ppcbe-*)
10863458e6c2Smrg		cpu=powerpc
10878650bb69Smrg		;;
10883458e6c2Smrg	ppcle-* | powerpclittle-*)
10893458e6c2Smrg		cpu=powerpcle
10902c7c4e3dSmrg		;;
10913458e6c2Smrg	ppc64-*)
10923458e6c2Smrg		cpu=powerpc64
10932becc446Smrg		;;
10943458e6c2Smrg	ppc64le-* | powerpc64little-*)
10953458e6c2Smrg		cpu=powerpc64le
10962c7c4e3dSmrg		;;
10973458e6c2Smrg	sb1-*)
10983458e6c2Smrg		cpu=mipsisa64sb1
10992c7c4e3dSmrg		;;
11003458e6c2Smrg	sb1el-*)
11013458e6c2Smrg		cpu=mipsisa64sb1el
11028650bb69Smrg		;;
11033458e6c2Smrg	sh5e[lb]-*)
11043458e6c2Smrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
11052c7c4e3dSmrg		;;
11063458e6c2Smrg	spur-*)
11073458e6c2Smrg		cpu=spur
11082c7c4e3dSmrg		;;
11093458e6c2Smrg	strongarm-* | thumb-*)
11103458e6c2Smrg		cpu=arm
11112c7c4e3dSmrg		;;
11123458e6c2Smrg	tx39-*)
11133458e6c2Smrg		cpu=mipstx39
11142c7c4e3dSmrg		;;
11153458e6c2Smrg	tx39el-*)
11163458e6c2Smrg		cpu=mipstx39el
11172c7c4e3dSmrg		;;
11183458e6c2Smrg	x64-*)
11193458e6c2Smrg		cpu=x86_64
11208650bb69Smrg		;;
11213458e6c2Smrg	xscale-* | xscalee[bl]-*)
11223458e6c2Smrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
11232c7c4e3dSmrg		;;
11243458e6c2Smrg	arm64-*)
11253458e6c2Smrg		cpu=aarch64
11262c7c4e3dSmrg		;;
11273458e6c2Smrg
11283458e6c2Smrg	# Recognize the canonical CPU Types that limit and/or modify the
11293458e6c2Smrg	# company names they are paired with.
11303458e6c2Smrg	cr16-*)
11313458e6c2Smrg		basic_os=${basic_os:-elf}
11322c7c4e3dSmrg		;;
11333458e6c2Smrg	crisv32-* | etraxfs*-*)
11343458e6c2Smrg		cpu=crisv32
11353458e6c2Smrg		vendor=axis
11362c7c4e3dSmrg		;;
11373458e6c2Smrg	cris-* | etrax*-*)
11383458e6c2Smrg		cpu=cris
11393458e6c2Smrg		vendor=axis
11402c7c4e3dSmrg		;;
11413458e6c2Smrg	crx-*)
11423458e6c2Smrg		basic_os=${basic_os:-elf}
11432c7c4e3dSmrg		;;
11443458e6c2Smrg	neo-tandem)
11453458e6c2Smrg		cpu=neo
11463458e6c2Smrg		vendor=tandem
11472c7c4e3dSmrg		;;
11483458e6c2Smrg	nse-tandem)
11493458e6c2Smrg		cpu=nse
11503458e6c2Smrg		vendor=tandem
11512c7c4e3dSmrg		;;
11523458e6c2Smrg	nsr-tandem)
11533458e6c2Smrg		cpu=nsr
11543458e6c2Smrg		vendor=tandem
11552c7c4e3dSmrg		;;
11563458e6c2Smrg	nsv-tandem)
11573458e6c2Smrg		cpu=nsv
11583458e6c2Smrg		vendor=tandem
11592c7c4e3dSmrg		;;
11603458e6c2Smrg	nsx-tandem)
11613458e6c2Smrg		cpu=nsx
11623458e6c2Smrg		vendor=tandem
11632c7c4e3dSmrg		;;
11643458e6c2Smrg	mipsallegrexel-sony)
11653458e6c2Smrg		cpu=mipsallegrexel
11663458e6c2Smrg		vendor=sony
11672c7c4e3dSmrg		;;
11683458e6c2Smrg	tile*-*)
11693458e6c2Smrg		basic_os=${basic_os:-linux-gnu}
11702c7c4e3dSmrg		;;
11713458e6c2Smrg
11722c7c4e3dSmrg	*)
11733458e6c2Smrg		# Recognize the canonical CPU types that are allowed with any
11743458e6c2Smrg		# company name.
11753458e6c2Smrg		case $cpu in
11763458e6c2Smrg			1750a | 580 \
11773458e6c2Smrg			| a29k \
11783458e6c2Smrg			| aarch64 | aarch64_be \
11793458e6c2Smrg			| abacus \
11803458e6c2Smrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
11813458e6c2Smrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
11823458e6c2Smrg			| alphapca5[67] | alpha64pca5[67] \
11833458e6c2Smrg			| am33_2.0 \
11843458e6c2Smrg			| amdgcn \
11853458e6c2Smrg			| arc | arceb | arc32 | arc64 \
11863458e6c2Smrg			| arm | arm[lb]e | arme[lb] | armv* \
11873458e6c2Smrg			| avr | avr32 \
11883458e6c2Smrg			| asmjs \
11893458e6c2Smrg			| ba \
11903458e6c2Smrg			| be32 | be64 \
11913458e6c2Smrg			| bfin | bpf | bs2000 \
11923458e6c2Smrg			| c[123]* | c30 | [cjt]90 | c4x \
11933458e6c2Smrg			| c8051 | clipper | craynv | csky | cydra \
11943458e6c2Smrg			| d10v | d30v | dlx | dsp16xx \
11953458e6c2Smrg			| e2k | elxsi | epiphany \
11963458e6c2Smrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
11973458e6c2Smrg			| h8300 | h8500 \
11983458e6c2Smrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
11993458e6c2Smrg			| hexagon \
12003458e6c2Smrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
12013458e6c2Smrg			| ip2k | iq2000 \
12023458e6c2Smrg			| k1om \
12033458e6c2Smrg			| le32 | le64 \
12043458e6c2Smrg			| lm32 \
12053458e6c2Smrg			| loongarch32 | loongarch64 | loongarchx32 \
12063458e6c2Smrg			| m32c | m32r | m32rle \
12073458e6c2Smrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
12083458e6c2Smrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
12093458e6c2Smrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
12103458e6c2Smrg			| microblaze | microblazeel \
12113458e6c2Smrg			| mips | mipsbe | mipseb | mipsel | mipsle \
12123458e6c2Smrg			| mips16 \
12133458e6c2Smrg			| mips64 | mips64eb | mips64el \
12143458e6c2Smrg			| mips64octeon | mips64octeonel \
12153458e6c2Smrg			| mips64orion | mips64orionel \
12163458e6c2Smrg			| mips64r5900 | mips64r5900el \
12173458e6c2Smrg			| mips64vr | mips64vrel \
12183458e6c2Smrg			| mips64vr4100 | mips64vr4100el \
12193458e6c2Smrg			| mips64vr4300 | mips64vr4300el \
12203458e6c2Smrg			| mips64vr5000 | mips64vr5000el \
12213458e6c2Smrg			| mips64vr5900 | mips64vr5900el \
12223458e6c2Smrg			| mipsisa32 | mipsisa32el \
12233458e6c2Smrg			| mipsisa32r2 | mipsisa32r2el \
12243458e6c2Smrg			| mipsisa32r3 | mipsisa32r3el \
12253458e6c2Smrg			| mipsisa32r5 | mipsisa32r5el \
12263458e6c2Smrg			| mipsisa32r6 | mipsisa32r6el \
12273458e6c2Smrg			| mipsisa64 | mipsisa64el \
12283458e6c2Smrg			| mipsisa64r2 | mipsisa64r2el \
12293458e6c2Smrg			| mipsisa64r3 | mipsisa64r3el \
12303458e6c2Smrg			| mipsisa64r5 | mipsisa64r5el \
12313458e6c2Smrg			| mipsisa64r6 | mipsisa64r6el \
12323458e6c2Smrg			| mipsisa64sb1 | mipsisa64sb1el \
12333458e6c2Smrg			| mipsisa64sr71k | mipsisa64sr71kel \
12343458e6c2Smrg			| mipsr5900 | mipsr5900el \
12353458e6c2Smrg			| mipstx39 | mipstx39el \
12363458e6c2Smrg			| mmix \
12373458e6c2Smrg			| mn10200 | mn10300 \
12383458e6c2Smrg			| moxie \
12393458e6c2Smrg			| mt \
12403458e6c2Smrg			| msp430 \
12413458e6c2Smrg			| nds32 | nds32le | nds32be \
12423458e6c2Smrg			| nfp \
12433458e6c2Smrg			| nios | nios2 | nios2eb | nios2el \
12443458e6c2Smrg			| none | np1 | ns16k | ns32k | nvptx \
12453458e6c2Smrg			| open8 \
12463458e6c2Smrg			| or1k* \
12473458e6c2Smrg			| or32 \
12483458e6c2Smrg			| orion \
12493458e6c2Smrg			| picochip \
12503458e6c2Smrg			| pdp10 | pdp11 | pj | pjl | pn | power \
12513458e6c2Smrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
12523458e6c2Smrg			| pru \
12533458e6c2Smrg			| pyramid \
12543458e6c2Smrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
12553458e6c2Smrg			| rl78 | romp | rs6000 | rx \
12563458e6c2Smrg			| s390 | s390x \
12573458e6c2Smrg			| score \
12583458e6c2Smrg			| sh | shl \
12593458e6c2Smrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
12603458e6c2Smrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
12613458e6c2Smrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
12623458e6c2Smrg			| sparclite \
12633458e6c2Smrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
12643458e6c2Smrg			| spu \
12653458e6c2Smrg			| tahoe \
12663458e6c2Smrg			| thumbv7* \
12673458e6c2Smrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
12683458e6c2Smrg			| tron \
12693458e6c2Smrg			| ubicom32 \
12703458e6c2Smrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
12713458e6c2Smrg			| vax \
12723458e6c2Smrg			| visium \
12733458e6c2Smrg			| w65 \
12743458e6c2Smrg			| wasm32 | wasm64 \
12753458e6c2Smrg			| we32k \
12763458e6c2Smrg			| x86 | x86_64 | xc16x | xgate | xps100 \
12773458e6c2Smrg			| xstormy16 | xtensa* \
12783458e6c2Smrg			| ymp \
12793458e6c2Smrg			| z8k | z80)
12803458e6c2Smrg				;;
12813458e6c2Smrg
12823458e6c2Smrg			*)
12833458e6c2Smrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
12843458e6c2Smrg				exit 1
12853458e6c2Smrg				;;
12863458e6c2Smrg		esac
12872c7c4e3dSmrg		;;
12882c7c4e3dSmrgesac
12892c7c4e3dSmrg
12902c7c4e3dSmrg# Here we canonicalize certain aliases for manufacturers.
12913458e6c2Smrgcase $vendor in
12923458e6c2Smrg	digital*)
12933458e6c2Smrg		vendor=dec
12942c7c4e3dSmrg		;;
12953458e6c2Smrg	commodore*)
12963458e6c2Smrg		vendor=cbm
12972c7c4e3dSmrg		;;
12982c7c4e3dSmrg	*)
12992c7c4e3dSmrg		;;
13002c7c4e3dSmrgesac
13012c7c4e3dSmrg
13022c7c4e3dSmrg# Decode manufacturer-specific aliases for certain operating systems.
13032c7c4e3dSmrg
13043458e6c2Smrgif test x$basic_os != x
13052c7c4e3dSmrgthen
13063458e6c2Smrg
13073458e6c2Smrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
13083458e6c2Smrg# set os.
13093458e6c2Smrgcase $basic_os in
13103458e6c2Smrg	gnu/linux*)
13113458e6c2Smrg		kernel=linux
13123458e6c2Smrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
13133458e6c2Smrg		;;
13143458e6c2Smrg	os2-emx)
13153458e6c2Smrg		kernel=os2
13163458e6c2Smrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
13173458e6c2Smrg		;;
13183458e6c2Smrg	nto-qnx*)
13193458e6c2Smrg		kernel=nto
13203458e6c2Smrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
13213458e6c2Smrg		;;
13223458e6c2Smrg	*-*)
13233458e6c2Smrg		# shellcheck disable=SC2162
13243458e6c2Smrg		saved_IFS=$IFS
13253458e6c2Smrg		IFS="-" read kernel os <<EOF
13263458e6c2Smrg$basic_os
13273458e6c2SmrgEOF
13283458e6c2Smrg		IFS=$saved_IFS
13293458e6c2Smrg		;;
13303458e6c2Smrg	# Default OS when just kernel was specified
13313458e6c2Smrg	nto*)
13323458e6c2Smrg		kernel=nto
13333458e6c2Smrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
13343458e6c2Smrg		;;
13353458e6c2Smrg	linux*)
13363458e6c2Smrg		kernel=linux
13373458e6c2Smrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
13383458e6c2Smrg		;;
13393458e6c2Smrg	*)
13403458e6c2Smrg		kernel=
13413458e6c2Smrg		os=$basic_os
13423458e6c2Smrg		;;
13433458e6c2Smrgesac
13443458e6c2Smrg
13453458e6c2Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
13463458e6c2Smrg# etc.)
13472c7c4e3dSmrgcase $os in
13483458e6c2Smrg	# First match some system type aliases that might get confused
13493458e6c2Smrg	# with valid system types.
13503458e6c2Smrg	# solaris* is a basic system type, with this one exception.
13513458e6c2Smrg	auroraux)
13523458e6c2Smrg		os=auroraux
135316d7e2f1Smrg		;;
13543458e6c2Smrg	bluegene*)
13553458e6c2Smrg		os=cnk
13562c7c4e3dSmrg		;;
13573458e6c2Smrg	solaris1 | solaris1.*)
13583458e6c2Smrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
13592c7c4e3dSmrg		;;
13603458e6c2Smrg	solaris)
13613458e6c2Smrg		os=solaris2
13622c7c4e3dSmrg		;;
13633458e6c2Smrg	unixware*)
13643458e6c2Smrg		os=sysv4.2uw
13652c7c4e3dSmrg		;;
13663458e6c2Smrg	# es1800 is here to avoid being matched by es* (a different OS)
13673458e6c2Smrg	es1800*)
13683458e6c2Smrg		os=ose
13692c7c4e3dSmrg		;;
13703458e6c2Smrg	# Some version numbers need modification
13713458e6c2Smrg	chorusos*)
13723458e6c2Smrg		os=chorusos
13732c7c4e3dSmrg		;;
13743458e6c2Smrg	isc)
13753458e6c2Smrg		os=isc2.2
13762c7c4e3dSmrg		;;
13773458e6c2Smrg	sco6)
13783458e6c2Smrg		os=sco5v6
13792c7c4e3dSmrg		;;
13803458e6c2Smrg	sco5)
13813458e6c2Smrg		os=sco3.2v5
13822c7c4e3dSmrg		;;
13833458e6c2Smrg	sco4)
13843458e6c2Smrg		os=sco3.2v4
13852c7c4e3dSmrg		;;
13863458e6c2Smrg	sco3.2.[4-9]*)
13873458e6c2Smrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
13888650bb69Smrg		;;
13893458e6c2Smrg	sco*v* | scout)
13903458e6c2Smrg		# Don't match below
13912c7c4e3dSmrg		;;
13923458e6c2Smrg	sco*)
13933458e6c2Smrg		os=sco3.2v2
13942c7c4e3dSmrg		;;
13953458e6c2Smrg	psos*)
13963458e6c2Smrg		os=psos
13972c7c4e3dSmrg		;;
13983458e6c2Smrg	qnx*)
13993458e6c2Smrg		os=qnx
14002c7c4e3dSmrg		;;
14013458e6c2Smrg	hiux*)
14023458e6c2Smrg		os=hiuxwe2
14038650bb69Smrg		;;
14043458e6c2Smrg	lynx*178)
14053458e6c2Smrg		os=lynxos178
14062c7c4e3dSmrg		;;
14073458e6c2Smrg	lynx*5)
14083458e6c2Smrg		os=lynxos5
14092c7c4e3dSmrg		;;
14103458e6c2Smrg	lynxos*)
14113458e6c2Smrg		# don't get caught up in next wildcard
14122c7c4e3dSmrg		;;
14133458e6c2Smrg	lynx*)
14143458e6c2Smrg		os=lynxos
14152c7c4e3dSmrg		;;
14163458e6c2Smrg	mac[0-9]*)
14173458e6c2Smrg		os=`echo "$os" | sed -e 's|mac|macos|'`
14182c7c4e3dSmrg		;;
14193458e6c2Smrg	opened*)
14203458e6c2Smrg		os=openedition
14212c7c4e3dSmrg		;;
14223458e6c2Smrg	os400*)
14233458e6c2Smrg		os=os400
14242c7c4e3dSmrg		;;
14253458e6c2Smrg	sunos5*)
14263458e6c2Smrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
14278650bb69Smrg		;;
14283458e6c2Smrg	sunos6*)
14293458e6c2Smrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
14302c7c4e3dSmrg		;;
14313458e6c2Smrg	wince*)
14323458e6c2Smrg		os=wince
14332c7c4e3dSmrg		;;
14343458e6c2Smrg	utek*)
14353458e6c2Smrg		os=bsd
14362c7c4e3dSmrg		;;
14373458e6c2Smrg	dynix*)
14383458e6c2Smrg		os=bsd
14392c7c4e3dSmrg		;;
14403458e6c2Smrg	acis*)
14413458e6c2Smrg		os=aos
14422c7c4e3dSmrg		;;
14433458e6c2Smrg	atheos*)
14443458e6c2Smrg		os=atheos
14452c7c4e3dSmrg		;;
14463458e6c2Smrg	syllable*)
14473458e6c2Smrg		os=syllable
14482c7c4e3dSmrg		;;
14493458e6c2Smrg	386bsd)
14503458e6c2Smrg		os=bsd
14518650bb69Smrg		;;
14523458e6c2Smrg	ctix* | uts*)
14533458e6c2Smrg		os=sysv
14542c7c4e3dSmrg		;;
14553458e6c2Smrg	nova*)
14563458e6c2Smrg		os=rtmk-nova
14572c7c4e3dSmrg		;;
14583458e6c2Smrg	ns2)
14593458e6c2Smrg		os=nextstep2
14602c7c4e3dSmrg		;;
14613458e6c2Smrg	# Preserve the version number of sinix5.
14623458e6c2Smrg	sinix5.*)
14633458e6c2Smrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
14642c7c4e3dSmrg		;;
14653458e6c2Smrg	sinix*)
14663458e6c2Smrg		os=sysv4
14672c7c4e3dSmrg		;;
14683458e6c2Smrg	tpf*)
14693458e6c2Smrg		os=tpf
14702c7c4e3dSmrg		;;
14713458e6c2Smrg	triton*)
14723458e6c2Smrg		os=sysv3
14732c7c4e3dSmrg		;;
14743458e6c2Smrg	oss*)
14753458e6c2Smrg		os=sysv3
14762c7c4e3dSmrg		;;
14773458e6c2Smrg	svr4*)
14783458e6c2Smrg		os=sysv4
14792c7c4e3dSmrg		;;
14803458e6c2Smrg	svr3)
14813458e6c2Smrg		os=sysv3
14822c7c4e3dSmrg		;;
14833458e6c2Smrg	sysvr4)
14843458e6c2Smrg		os=sysv4
14852c7c4e3dSmrg		;;
14863458e6c2Smrg	ose*)
14873458e6c2Smrg		os=ose
14888650bb69Smrg		;;
14893458e6c2Smrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
14903458e6c2Smrg		os=mint
14918650bb69Smrg		;;
14923458e6c2Smrg	dicos*)
14933458e6c2Smrg		os=dicos
14942becc446Smrg		;;
14953458e6c2Smrg	pikeos*)
14963458e6c2Smrg		# Until real need of OS specific support for
14973458e6c2Smrg		# particular features comes up, bare metal
14983458e6c2Smrg		# configurations are quite functional.
14993458e6c2Smrg		case $cpu in
15003458e6c2Smrg		    arm*)
15013458e6c2Smrg			os=eabi
15023458e6c2Smrg			;;
15033458e6c2Smrg		    *)
15043458e6c2Smrg			os=elf
15053458e6c2Smrg			;;
15063458e6c2Smrg		esac
15072c7c4e3dSmrg		;;
15082c7c4e3dSmrg	*)
15093458e6c2Smrg		# No normalization, but not necessarily accepted, that comes below.
15102c7c4e3dSmrg		;;
15112c7c4e3dSmrgesac
15123458e6c2Smrg
15132c7c4e3dSmrgelse
15142c7c4e3dSmrg
15152c7c4e3dSmrg# Here we handle the default operating systems that come with various machines.
15162c7c4e3dSmrg# The value should be what the vendor currently ships out the door with their
15172c7c4e3dSmrg# machine or put another way, the most popular os provided with the machine.
15182c7c4e3dSmrg
15192c7c4e3dSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
15202c7c4e3dSmrg# "-sun"), then you have to tell the case statement up towards the top
15212c7c4e3dSmrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
15222c7c4e3dSmrg# will signal an error saying that MANUFACTURER isn't an operating
15232c7c4e3dSmrg# system, and we'll never get to this point.
15242c7c4e3dSmrg
15253458e6c2Smrgkernel=
15263458e6c2Smrgcase $cpu-$vendor in
15272becc446Smrg	score-*)
15283458e6c2Smrg		os=elf
15298650bb69Smrg		;;
15302becc446Smrg	spu-*)
15313458e6c2Smrg		os=elf
15328650bb69Smrg		;;
15332c7c4e3dSmrg	*-acorn)
15343458e6c2Smrg		os=riscix1.2
15352c7c4e3dSmrg		;;
15362c7c4e3dSmrg	arm*-rebel)
15373458e6c2Smrg		kernel=linux
15383458e6c2Smrg		os=gnu
15392c7c4e3dSmrg		;;
15402c7c4e3dSmrg	arm*-semi)
15413458e6c2Smrg		os=aout
15422c7c4e3dSmrg		;;
15432becc446Smrg	c4x-* | tic4x-*)
15443458e6c2Smrg		os=coff
15452becc446Smrg		;;
15462becc446Smrg	c8051-*)
15473458e6c2Smrg		os=elf
15483458e6c2Smrg		;;
15493458e6c2Smrg	clipper-intergraph)
15503458e6c2Smrg		os=clix
15512becc446Smrg		;;
15522becc446Smrg	hexagon-*)
15533458e6c2Smrg		os=elf
15542c7c4e3dSmrg		;;
155516d7e2f1Smrg	tic54x-*)
15563458e6c2Smrg		os=coff
155716d7e2f1Smrg		;;
155816d7e2f1Smrg	tic55x-*)
15593458e6c2Smrg		os=coff
156016d7e2f1Smrg		;;
156116d7e2f1Smrg	tic6x-*)
15623458e6c2Smrg		os=coff
156316d7e2f1Smrg		;;
15642c7c4e3dSmrg	# This must come before the *-dec entry.
15652c7c4e3dSmrg	pdp10-*)
15663458e6c2Smrg		os=tops20
15672c7c4e3dSmrg		;;
15682c7c4e3dSmrg	pdp11-*)
15693458e6c2Smrg		os=none
15702c7c4e3dSmrg		;;
15712c7c4e3dSmrg	*-dec | vax-*)
15723458e6c2Smrg		os=ultrix4.2
15732c7c4e3dSmrg		;;
15742c7c4e3dSmrg	m68*-apollo)
15753458e6c2Smrg		os=domain
15762c7c4e3dSmrg		;;
15772c7c4e3dSmrg	i386-sun)
15783458e6c2Smrg		os=sunos4.0.2
15792c7c4e3dSmrg		;;
15802c7c4e3dSmrg	m68000-sun)
15813458e6c2Smrg		os=sunos3
15822c7c4e3dSmrg		;;
15832c7c4e3dSmrg	m68*-cisco)
15843458e6c2Smrg		os=aout
15852c7c4e3dSmrg		;;
15862becc446Smrg	mep-*)
15873458e6c2Smrg		os=elf
15888650bb69Smrg		;;
15892c7c4e3dSmrg	mips*-cisco)
15903458e6c2Smrg		os=elf
15912c7c4e3dSmrg		;;
15922c7c4e3dSmrg	mips*-*)
15933458e6c2Smrg		os=elf
15942c7c4e3dSmrg		;;
15952c7c4e3dSmrg	or32-*)
15963458e6c2Smrg		os=coff
15972c7c4e3dSmrg		;;
15982c7c4e3dSmrg	*-tti)	# must be before sparc entry or we get the wrong os.
15993458e6c2Smrg		os=sysv3
16002c7c4e3dSmrg		;;
16012c7c4e3dSmrg	sparc-* | *-sun)
16023458e6c2Smrg		os=sunos4.1.1
16032c7c4e3dSmrg		;;
16043458e6c2Smrg	pru-*)
16053458e6c2Smrg		os=elf
16062c7c4e3dSmrg		;;
16073458e6c2Smrg	*-be)
16083458e6c2Smrg		os=beos
16098650bb69Smrg		;;
16102c7c4e3dSmrg	*-ibm)
16113458e6c2Smrg		os=aix
16122c7c4e3dSmrg		;;
16132becc446Smrg	*-knuth)
16143458e6c2Smrg		os=mmixware
16158650bb69Smrg		;;
16162c7c4e3dSmrg	*-wec)
16173458e6c2Smrg		os=proelf
16182c7c4e3dSmrg		;;
16192c7c4e3dSmrg	*-winbond)
16203458e6c2Smrg		os=proelf
16212c7c4e3dSmrg		;;
16222c7c4e3dSmrg	*-oki)
16233458e6c2Smrg		os=proelf
16242c7c4e3dSmrg		;;
16252c7c4e3dSmrg	*-hp)
16263458e6c2Smrg		os=hpux
16272c7c4e3dSmrg		;;
16282c7c4e3dSmrg	*-hitachi)
16293458e6c2Smrg		os=hiux
16302c7c4e3dSmrg		;;
16312c7c4e3dSmrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
16323458e6c2Smrg		os=sysv
16332c7c4e3dSmrg		;;
16342c7c4e3dSmrg	*-cbm)
16353458e6c2Smrg		os=amigaos
16362c7c4e3dSmrg		;;
16372c7c4e3dSmrg	*-dg)
16383458e6c2Smrg		os=dgux
16392c7c4e3dSmrg		;;
16402c7c4e3dSmrg	*-dolphin)
16413458e6c2Smrg		os=sysv3
16422c7c4e3dSmrg		;;
16432c7c4e3dSmrg	m68k-ccur)
16443458e6c2Smrg		os=rtu
16452c7c4e3dSmrg		;;
16462c7c4e3dSmrg	m88k-omron*)
16473458e6c2Smrg		os=luna
16482c7c4e3dSmrg		;;
16493458e6c2Smrg	*-next)
16503458e6c2Smrg		os=nextstep
16512c7c4e3dSmrg		;;
16522c7c4e3dSmrg	*-sequent)
16533458e6c2Smrg		os=ptx
16542c7c4e3dSmrg		;;
16552c7c4e3dSmrg	*-crds)
16563458e6c2Smrg		os=unos
16572c7c4e3dSmrg		;;
16582c7c4e3dSmrg	*-ns)
16593458e6c2Smrg		os=genix
16602c7c4e3dSmrg		;;
16612c7c4e3dSmrg	i370-*)
16623458e6c2Smrg		os=mvs
16632c7c4e3dSmrg		;;
16642c7c4e3dSmrg	*-gould)
16653458e6c2Smrg		os=sysv
16662c7c4e3dSmrg		;;
16672c7c4e3dSmrg	*-highlevel)
16683458e6c2Smrg		os=bsd
16692c7c4e3dSmrg		;;
16702c7c4e3dSmrg	*-encore)
16713458e6c2Smrg		os=bsd
16722c7c4e3dSmrg		;;
16732c7c4e3dSmrg	*-sgi)
16743458e6c2Smrg		os=irix
16752c7c4e3dSmrg		;;
16762c7c4e3dSmrg	*-siemens)
16773458e6c2Smrg		os=sysv4
16782c7c4e3dSmrg		;;
16792c7c4e3dSmrg	*-masscomp)
16803458e6c2Smrg		os=rtu
16812c7c4e3dSmrg		;;
16822c7c4e3dSmrg	f30[01]-fujitsu | f700-fujitsu)
16833458e6c2Smrg		os=uxpv
16842c7c4e3dSmrg		;;
16852c7c4e3dSmrg	*-rom68k)
16863458e6c2Smrg		os=coff
16872c7c4e3dSmrg		;;
16882c7c4e3dSmrg	*-*bug)
16893458e6c2Smrg		os=coff
16902c7c4e3dSmrg		;;
16912c7c4e3dSmrg	*-apple)
16923458e6c2Smrg		os=macos
16932c7c4e3dSmrg		;;
16942c7c4e3dSmrg	*-atari*)
16953458e6c2Smrg		os=mint
16963458e6c2Smrg		;;
16973458e6c2Smrg	*-wrs)
16983458e6c2Smrg		os=vxworks
16992c7c4e3dSmrg		;;
17002c7c4e3dSmrg	*)
17013458e6c2Smrg		os=none
17022c7c4e3dSmrg		;;
17032c7c4e3dSmrgesac
17043458e6c2Smrg
17052c7c4e3dSmrgfi
17062c7c4e3dSmrg
17073458e6c2Smrg# Now, validate our (potentially fixed-up) OS.
17083458e6c2Smrgcase $os in
17093458e6c2Smrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
17103458e6c2Smrg	musl* | newlib* | relibc* | uclibc*)
17113458e6c2Smrg		;;
17123458e6c2Smrg	# Likewise for "kernel-abi"
17133458e6c2Smrg	eabi* | gnueabi*)
17143458e6c2Smrg		;;
17153458e6c2Smrg	# VxWorks passes extra cpu info in the 4th filed.
17163458e6c2Smrg	simlinux | simwindows | spe)
17173458e6c2Smrg		;;
17183458e6c2Smrg	# Now accept the basic system types.
17193458e6c2Smrg	# The portable systems comes first.
17203458e6c2Smrg	# Each alternative MUST end in a * to match a version number.
17213458e6c2Smrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
17223458e6c2Smrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
17233458e6c2Smrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
17243458e6c2Smrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
17253458e6c2Smrg	     | hiux* | abug | nacl* | netware* | windows* \
17263458e6c2Smrg	     | os9* | macos* | osx* | ios* \
17273458e6c2Smrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
17283458e6c2Smrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
17293458e6c2Smrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
17303458e6c2Smrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
17313458e6c2Smrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
17323458e6c2Smrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
17333458e6c2Smrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
17343458e6c2Smrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
17353458e6c2Smrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
17363458e6c2Smrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
17373458e6c2Smrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
17383458e6c2Smrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
17393458e6c2Smrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
17403458e6c2Smrg	     | midipix* | mingw32* | mingw64* | mint* \
17413458e6c2Smrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
17423458e6c2Smrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
17433458e6c2Smrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
17443458e6c2Smrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
17453458e6c2Smrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
17463458e6c2Smrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
17473458e6c2Smrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
17483458e6c2Smrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
17493458e6c2Smrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
17503458e6c2Smrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
17513458e6c2Smrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*)
17523458e6c2Smrg		;;
17533458e6c2Smrg	# This one is extra strict with allowed versions
17543458e6c2Smrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
17553458e6c2Smrg		# Don't forget version if it is 3.2v4 or newer.
17563458e6c2Smrg		;;
17573458e6c2Smrg	none)
17583458e6c2Smrg		;;
17593458e6c2Smrg	*)
17603458e6c2Smrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
17613458e6c2Smrg		exit 1
17623458e6c2Smrg		;;
17633458e6c2Smrgesac
17643458e6c2Smrg
17653458e6c2Smrg# As a final step for OS-related things, validate the OS-kernel combination
17663458e6c2Smrg# (given a valid OS), if there is a kernel.
17673458e6c2Smrgcase $kernel-$os in
17683458e6c2Smrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
17693458e6c2Smrg		   | linux-musl* | linux-relibc* | linux-uclibc* )
17703458e6c2Smrg		;;
17713458e6c2Smrg	uclinux-uclibc* )
17723458e6c2Smrg		;;
17733458e6c2Smrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
17743458e6c2Smrg		# These are just libc implementations, not actual OSes, and thus
17753458e6c2Smrg		# require a kernel.
17763458e6c2Smrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
17773458e6c2Smrg		exit 1
17783458e6c2Smrg		;;
17793458e6c2Smrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
17803458e6c2Smrg		;;
17813458e6c2Smrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
17823458e6c2Smrg		;;
17833458e6c2Smrg	nto-qnx*)
17843458e6c2Smrg		;;
17853458e6c2Smrg	os2-emx)
17863458e6c2Smrg		;;
17873458e6c2Smrg	*-eabi* | *-gnueabi*)
17883458e6c2Smrg		;;
17893458e6c2Smrg	-*)
17903458e6c2Smrg		# Blank kernel with real OS is always fine.
17913458e6c2Smrg		;;
17923458e6c2Smrg	*-*)
17933458e6c2Smrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
17943458e6c2Smrg		exit 1
17953458e6c2Smrg		;;
17963458e6c2Smrgesac
17973458e6c2Smrg
17982c7c4e3dSmrg# Here we handle the case where we know the os, and the CPU type, but not the
17992c7c4e3dSmrg# manufacturer.  We pick the logical manufacturer.
18003458e6c2Smrgcase $vendor in
18013458e6c2Smrg	unknown)
18023458e6c2Smrg		case $cpu-$os in
18033458e6c2Smrg			*-riscix*)
18042c7c4e3dSmrg				vendor=acorn
18052c7c4e3dSmrg				;;
18063458e6c2Smrg			*-sunos*)
18072c7c4e3dSmrg				vendor=sun
18082c7c4e3dSmrg				;;
18093458e6c2Smrg			*-cnk* | *-aix*)
18102c7c4e3dSmrg				vendor=ibm
18112c7c4e3dSmrg				;;
18123458e6c2Smrg			*-beos*)
18132c7c4e3dSmrg				vendor=be
18142c7c4e3dSmrg				;;
18153458e6c2Smrg			*-hpux*)
18162c7c4e3dSmrg				vendor=hp
18172c7c4e3dSmrg				;;
18183458e6c2Smrg			*-mpeix*)
18192c7c4e3dSmrg				vendor=hp
18202c7c4e3dSmrg				;;
18213458e6c2Smrg			*-hiux*)
18222c7c4e3dSmrg				vendor=hitachi
18232c7c4e3dSmrg				;;
18243458e6c2Smrg			*-unos*)
18252c7c4e3dSmrg				vendor=crds
18262c7c4e3dSmrg				;;
18273458e6c2Smrg			*-dgux*)
18282c7c4e3dSmrg				vendor=dg
18292c7c4e3dSmrg				;;
18303458e6c2Smrg			*-luna*)
18312c7c4e3dSmrg				vendor=omron
18322c7c4e3dSmrg				;;
18333458e6c2Smrg			*-genix*)
18342c7c4e3dSmrg				vendor=ns
18352c7c4e3dSmrg				;;
18363458e6c2Smrg			*-clix*)
18373458e6c2Smrg				vendor=intergraph
18383458e6c2Smrg				;;
18393458e6c2Smrg			*-mvs* | *-opened*)
18403458e6c2Smrg				vendor=ibm
18413458e6c2Smrg				;;
18423458e6c2Smrg			*-os400*)
18432c7c4e3dSmrg				vendor=ibm
18442c7c4e3dSmrg				;;
18453458e6c2Smrg			s390-* | s390x-*)
18468650bb69Smrg				vendor=ibm
18478650bb69Smrg				;;
18483458e6c2Smrg			*-ptx*)
18492c7c4e3dSmrg				vendor=sequent
18502c7c4e3dSmrg				;;
18513458e6c2Smrg			*-tpf*)
18528650bb69Smrg				vendor=ibm
18538650bb69Smrg				;;
18543458e6c2Smrg			*-vxsim* | *-vxworks* | *-windiss*)
18552c7c4e3dSmrg				vendor=wrs
18562c7c4e3dSmrg				;;
18573458e6c2Smrg			*-aux*)
18582c7c4e3dSmrg				vendor=apple
18592c7c4e3dSmrg				;;
18603458e6c2Smrg			*-hms*)
18612c7c4e3dSmrg				vendor=hitachi
18622c7c4e3dSmrg				;;
18633458e6c2Smrg			*-mpw* | *-macos*)
18642c7c4e3dSmrg				vendor=apple
18652c7c4e3dSmrg				;;
18663458e6c2Smrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
18672c7c4e3dSmrg				vendor=atari
18682c7c4e3dSmrg				;;
18693458e6c2Smrg			*-vos*)
18702c7c4e3dSmrg				vendor=stratus
18712c7c4e3dSmrg				;;
18722c7c4e3dSmrg		esac
18732c7c4e3dSmrg		;;
18742c7c4e3dSmrgesac
18752c7c4e3dSmrg
18763458e6c2Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
18778650bb69Smrgexit
18782c7c4e3dSmrg
18792c7c4e3dSmrg# Local variables:
18803458e6c2Smrg# eval: (add-hook 'before-save-hook 'time-stamp)
18812c7c4e3dSmrg# time-stamp-start: "timestamp='"
18822c7c4e3dSmrg# time-stamp-format: "%:y-%02m-%02d"
18832c7c4e3dSmrg# time-stamp-end: "'"
18842c7c4e3dSmrg# End:
1885