12c7c4e3dSmrg#! /bin/sh
22c7c4e3dSmrg# Configuration validation subroutine script.
3c1e8faa6Smrg#   Copyright 1992-2024 Free Software Foundation, Inc.
42c7c4e3dSmrg
53458e6c2Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale
63458e6c2Smrg
7c1e8faa6Smrgtimestamp='2024-01-01'
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
11c1e8faa6Smrg# 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
79c1e8faa6SmrgCopyright 1992-2024 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="
85c1e8faa6SmrgTry '$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	*-*-*-*-*)
133c1e8faa6Smrg		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* \
148c1e8faa6Smrg			| storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \
149c1e8faa6Smrg			| windows-* )
1503458e6c2Smrg				basic_machine=$field1
1513458e6c2Smrg				basic_os=$maybe_os
1523458e6c2Smrg				;;
1533458e6c2Smrg			android-linux)
1543458e6c2Smrg				basic_machine=$field1-unknown
1553458e6c2Smrg				basic_os=linux-android
1563458e6c2Smrg				;;
1573458e6c2Smrg			*)
1583458e6c2Smrg				basic_machine=$field1-$field2
1593458e6c2Smrg				basic_os=$field3
1603458e6c2Smrg				;;
1613458e6c2Smrg		esac
1622c7c4e3dSmrg		;;
1633458e6c2Smrg	*-*)
1643458e6c2Smrg		# A lone config we happen to match not fitting any pattern
1653458e6c2Smrg		case $field1-$field2 in
1663458e6c2Smrg			decstation-3100)
1673458e6c2Smrg				basic_machine=mips-dec
1683458e6c2Smrg				basic_os=
1693458e6c2Smrg				;;
1703458e6c2Smrg			*-*)
1713458e6c2Smrg				# Second component is usually, but not always the OS
1723458e6c2Smrg				case $field2 in
1733458e6c2Smrg					# Prevent following clause from handling this valid os
1743458e6c2Smrg					sun*os*)
1753458e6c2Smrg						basic_machine=$field1
1763458e6c2Smrg						basic_os=$field2
1773458e6c2Smrg						;;
1783458e6c2Smrg					zephyr*)
1793458e6c2Smrg						basic_machine=$field1-unknown
1803458e6c2Smrg						basic_os=$field2
1813458e6c2Smrg						;;
1823458e6c2Smrg					# Manufacturers
1833458e6c2Smrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
1843458e6c2Smrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
1853458e6c2Smrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
1863458e6c2Smrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
1873458e6c2Smrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
1883458e6c2Smrg					| ultra | tti* | harris | dolphin | highlevel | gould \
1893458e6c2Smrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
1903458e6c2Smrg					| microblaze* | sim | cisco \
1913458e6c2Smrg					| oki | wec | wrs | winbond)
1923458e6c2Smrg						basic_machine=$field1-$field2
1933458e6c2Smrg						basic_os=
1943458e6c2Smrg						;;
1953458e6c2Smrg					*)
1963458e6c2Smrg						basic_machine=$field1
1973458e6c2Smrg						basic_os=$field2
1983458e6c2Smrg						;;
1993458e6c2Smrg				esac
2003458e6c2Smrg			;;
2013458e6c2Smrg		esac
2022c7c4e3dSmrg		;;
2033458e6c2Smrg	*)
2043458e6c2Smrg		# Convert single-component short-hands not valid as part of
2053458e6c2Smrg		# multi-component configurations.
2063458e6c2Smrg		case $field1 in
2073458e6c2Smrg			386bsd)
2083458e6c2Smrg				basic_machine=i386-pc
2093458e6c2Smrg				basic_os=bsd
2103458e6c2Smrg				;;
2113458e6c2Smrg			a29khif)
2123458e6c2Smrg				basic_machine=a29k-amd
2133458e6c2Smrg				basic_os=udi
2143458e6c2Smrg				;;
2153458e6c2Smrg			adobe68k)
2163458e6c2Smrg				basic_machine=m68010-adobe
2173458e6c2Smrg				basic_os=scout
2183458e6c2Smrg				;;
2193458e6c2Smrg			alliant)
2203458e6c2Smrg				basic_machine=fx80-alliant
2213458e6c2Smrg				basic_os=
2223458e6c2Smrg				;;
2233458e6c2Smrg			altos | altos3068)
2243458e6c2Smrg				basic_machine=m68k-altos
2253458e6c2Smrg				basic_os=
2263458e6c2Smrg				;;
2273458e6c2Smrg			am29k)
2283458e6c2Smrg				basic_machine=a29k-none
2293458e6c2Smrg				basic_os=bsd
2303458e6c2Smrg				;;
2313458e6c2Smrg			amdahl)
2323458e6c2Smrg				basic_machine=580-amdahl
2333458e6c2Smrg				basic_os=sysv
2343458e6c2Smrg				;;
2353458e6c2Smrg			amiga)
2363458e6c2Smrg				basic_machine=m68k-unknown
2373458e6c2Smrg				basic_os=
2383458e6c2Smrg				;;
2393458e6c2Smrg			amigaos | amigados)
2403458e6c2Smrg				basic_machine=m68k-unknown
2413458e6c2Smrg				basic_os=amigaos
2423458e6c2Smrg				;;
2433458e6c2Smrg			amigaunix | amix)
2443458e6c2Smrg				basic_machine=m68k-unknown
2453458e6c2Smrg				basic_os=sysv4
2463458e6c2Smrg				;;
2473458e6c2Smrg			apollo68)
2483458e6c2Smrg				basic_machine=m68k-apollo
2493458e6c2Smrg				basic_os=sysv
2503458e6c2Smrg				;;
2513458e6c2Smrg			apollo68bsd)
2523458e6c2Smrg				basic_machine=m68k-apollo
2533458e6c2Smrg				basic_os=bsd
2543458e6c2Smrg				;;
2553458e6c2Smrg			aros)
2563458e6c2Smrg				basic_machine=i386-pc
2573458e6c2Smrg				basic_os=aros
2583458e6c2Smrg				;;
2593458e6c2Smrg			aux)
2603458e6c2Smrg				basic_machine=m68k-apple
2613458e6c2Smrg				basic_os=aux
2623458e6c2Smrg				;;
2633458e6c2Smrg			balance)
2643458e6c2Smrg				basic_machine=ns32k-sequent
2653458e6c2Smrg				basic_os=dynix
2663458e6c2Smrg				;;
2673458e6c2Smrg			blackfin)
2683458e6c2Smrg				basic_machine=bfin-unknown
2693458e6c2Smrg				basic_os=linux
2703458e6c2Smrg				;;
2713458e6c2Smrg			cegcc)
2723458e6c2Smrg				basic_machine=arm-unknown
2733458e6c2Smrg				basic_os=cegcc
2743458e6c2Smrg				;;
2753458e6c2Smrg			convex-c1)
2763458e6c2Smrg				basic_machine=c1-convex
2773458e6c2Smrg				basic_os=bsd
2783458e6c2Smrg				;;
2793458e6c2Smrg			convex-c2)
2803458e6c2Smrg				basic_machine=c2-convex
2813458e6c2Smrg				basic_os=bsd
2823458e6c2Smrg				;;
2833458e6c2Smrg			convex-c32)
2843458e6c2Smrg				basic_machine=c32-convex
2853458e6c2Smrg				basic_os=bsd
2863458e6c2Smrg				;;
2873458e6c2Smrg			convex-c34)
2883458e6c2Smrg				basic_machine=c34-convex
2893458e6c2Smrg				basic_os=bsd
2903458e6c2Smrg				;;
2913458e6c2Smrg			convex-c38)
2923458e6c2Smrg				basic_machine=c38-convex
2933458e6c2Smrg				basic_os=bsd
2943458e6c2Smrg				;;
2953458e6c2Smrg			cray)
2963458e6c2Smrg				basic_machine=j90-cray
2973458e6c2Smrg				basic_os=unicos
2983458e6c2Smrg				;;
2993458e6c2Smrg			crds | unos)
3003458e6c2Smrg				basic_machine=m68k-crds
3013458e6c2Smrg				basic_os=
3023458e6c2Smrg				;;
3033458e6c2Smrg			da30)
3043458e6c2Smrg				basic_machine=m68k-da30
3053458e6c2Smrg				basic_os=
3063458e6c2Smrg				;;
3073458e6c2Smrg			decstation | pmax | pmin | dec3100 | decstatn)
3083458e6c2Smrg				basic_machine=mips-dec
3093458e6c2Smrg				basic_os=
3103458e6c2Smrg				;;
3113458e6c2Smrg			delta88)
3123458e6c2Smrg				basic_machine=m88k-motorola
3133458e6c2Smrg				basic_os=sysv3
3143458e6c2Smrg				;;
3153458e6c2Smrg			dicos)
3163458e6c2Smrg				basic_machine=i686-pc
3173458e6c2Smrg				basic_os=dicos
3183458e6c2Smrg				;;
3193458e6c2Smrg			djgpp)
3203458e6c2Smrg				basic_machine=i586-pc
3213458e6c2Smrg				basic_os=msdosdjgpp
3223458e6c2Smrg				;;
3233458e6c2Smrg			ebmon29k)
3243458e6c2Smrg				basic_machine=a29k-amd
3253458e6c2Smrg				basic_os=ebmon
3263458e6c2Smrg				;;
3273458e6c2Smrg			es1800 | OSE68k | ose68k | ose | OSE)
3283458e6c2Smrg				basic_machine=m68k-ericsson
3293458e6c2Smrg				basic_os=ose
3303458e6c2Smrg				;;
3313458e6c2Smrg			gmicro)
3323458e6c2Smrg				basic_machine=tron-gmicro
3333458e6c2Smrg				basic_os=sysv
3343458e6c2Smrg				;;
3353458e6c2Smrg			go32)
3363458e6c2Smrg				basic_machine=i386-pc
3373458e6c2Smrg				basic_os=go32
3383458e6c2Smrg				;;
3393458e6c2Smrg			h8300hms)
3403458e6c2Smrg				basic_machine=h8300-hitachi
3413458e6c2Smrg				basic_os=hms
3423458e6c2Smrg				;;
3433458e6c2Smrg			h8300xray)
3443458e6c2Smrg				basic_machine=h8300-hitachi
3453458e6c2Smrg				basic_os=xray
3463458e6c2Smrg				;;
3473458e6c2Smrg			h8500hms)
3483458e6c2Smrg				basic_machine=h8500-hitachi
3493458e6c2Smrg				basic_os=hms
3503458e6c2Smrg				;;
3513458e6c2Smrg			harris)
3523458e6c2Smrg				basic_machine=m88k-harris
3533458e6c2Smrg				basic_os=sysv3
3543458e6c2Smrg				;;
3553458e6c2Smrg			hp300 | hp300hpux)
3563458e6c2Smrg				basic_machine=m68k-hp
3573458e6c2Smrg				basic_os=hpux
3583458e6c2Smrg				;;
3593458e6c2Smrg			hp300bsd)
3603458e6c2Smrg				basic_machine=m68k-hp
3613458e6c2Smrg				basic_os=bsd
3623458e6c2Smrg				;;
3633458e6c2Smrg			hppaosf)
3643458e6c2Smrg				basic_machine=hppa1.1-hp
3653458e6c2Smrg				basic_os=osf
3663458e6c2Smrg				;;
3673458e6c2Smrg			hppro)
3683458e6c2Smrg				basic_machine=hppa1.1-hp
3693458e6c2Smrg				basic_os=proelf
3703458e6c2Smrg				;;
3713458e6c2Smrg			i386mach)
3723458e6c2Smrg				basic_machine=i386-mach
3733458e6c2Smrg				basic_os=mach
3743458e6c2Smrg				;;
3753458e6c2Smrg			isi68 | isi)
3763458e6c2Smrg				basic_machine=m68k-isi
3773458e6c2Smrg				basic_os=sysv
3783458e6c2Smrg				;;
3793458e6c2Smrg			m68knommu)
3803458e6c2Smrg				basic_machine=m68k-unknown
3813458e6c2Smrg				basic_os=linux
3823458e6c2Smrg				;;
3833458e6c2Smrg			magnum | m3230)
3843458e6c2Smrg				basic_machine=mips-mips
3853458e6c2Smrg				basic_os=sysv
3863458e6c2Smrg				;;
3873458e6c2Smrg			merlin)
3883458e6c2Smrg				basic_machine=ns32k-utek
3893458e6c2Smrg				basic_os=sysv
3903458e6c2Smrg				;;
3913458e6c2Smrg			mingw64)
3923458e6c2Smrg				basic_machine=x86_64-pc
3933458e6c2Smrg				basic_os=mingw64
3943458e6c2Smrg				;;
3953458e6c2Smrg			mingw32)
3963458e6c2Smrg				basic_machine=i686-pc
3973458e6c2Smrg				basic_os=mingw32
3983458e6c2Smrg				;;
3993458e6c2Smrg			mingw32ce)
4003458e6c2Smrg				basic_machine=arm-unknown
4013458e6c2Smrg				basic_os=mingw32ce
4023458e6c2Smrg				;;
4033458e6c2Smrg			monitor)
4043458e6c2Smrg				basic_machine=m68k-rom68k
4053458e6c2Smrg				basic_os=coff
4063458e6c2Smrg				;;
4073458e6c2Smrg			morphos)
4083458e6c2Smrg				basic_machine=powerpc-unknown
4093458e6c2Smrg				basic_os=morphos
4103458e6c2Smrg				;;
4113458e6c2Smrg			moxiebox)
4123458e6c2Smrg				basic_machine=moxie-unknown
4133458e6c2Smrg				basic_os=moxiebox
4143458e6c2Smrg				;;
4153458e6c2Smrg			msdos)
4163458e6c2Smrg				basic_machine=i386-pc
4173458e6c2Smrg				basic_os=msdos
4183458e6c2Smrg				;;
4193458e6c2Smrg			msys)
4203458e6c2Smrg				basic_machine=i686-pc
4213458e6c2Smrg				basic_os=msys
4223458e6c2Smrg				;;
4233458e6c2Smrg			mvs)
4243458e6c2Smrg				basic_machine=i370-ibm
4253458e6c2Smrg				basic_os=mvs
4263458e6c2Smrg				;;
4273458e6c2Smrg			nacl)
4283458e6c2Smrg				basic_machine=le32-unknown
4293458e6c2Smrg				basic_os=nacl
4303458e6c2Smrg				;;
4313458e6c2Smrg			ncr3000)
4323458e6c2Smrg				basic_machine=i486-ncr
4333458e6c2Smrg				basic_os=sysv4
4343458e6c2Smrg				;;
4353458e6c2Smrg			netbsd386)
4363458e6c2Smrg				basic_machine=i386-pc
4373458e6c2Smrg				basic_os=netbsd
4383458e6c2Smrg				;;
4393458e6c2Smrg			netwinder)
4403458e6c2Smrg				basic_machine=armv4l-rebel
4413458e6c2Smrg				basic_os=linux
4423458e6c2Smrg				;;
4433458e6c2Smrg			news | news700 | news800 | news900)
4443458e6c2Smrg				basic_machine=m68k-sony
4453458e6c2Smrg				basic_os=newsos
4463458e6c2Smrg				;;
4473458e6c2Smrg			news1000)
4483458e6c2Smrg				basic_machine=m68030-sony
4493458e6c2Smrg				basic_os=newsos
4503458e6c2Smrg				;;
4513458e6c2Smrg			necv70)
4523458e6c2Smrg				basic_machine=v70-nec
4533458e6c2Smrg				basic_os=sysv
4543458e6c2Smrg				;;
4553458e6c2Smrg			nh3000)
4563458e6c2Smrg				basic_machine=m68k-harris
4573458e6c2Smrg				basic_os=cxux
4583458e6c2Smrg				;;
4593458e6c2Smrg			nh[45]000)
4603458e6c2Smrg				basic_machine=m88k-harris
4613458e6c2Smrg				basic_os=cxux
4623458e6c2Smrg				;;
4633458e6c2Smrg			nindy960)
4643458e6c2Smrg				basic_machine=i960-intel
4653458e6c2Smrg				basic_os=nindy
4663458e6c2Smrg				;;
4673458e6c2Smrg			mon960)
4683458e6c2Smrg				basic_machine=i960-intel
4693458e6c2Smrg				basic_os=mon960
4703458e6c2Smrg				;;
4713458e6c2Smrg			nonstopux)
4723458e6c2Smrg				basic_machine=mips-compaq
4733458e6c2Smrg				basic_os=nonstopux
4743458e6c2Smrg				;;
4753458e6c2Smrg			os400)
4763458e6c2Smrg				basic_machine=powerpc-ibm
4773458e6c2Smrg				basic_os=os400
4783458e6c2Smrg				;;
4793458e6c2Smrg			OSE68000 | ose68000)
4803458e6c2Smrg				basic_machine=m68000-ericsson
4813458e6c2Smrg				basic_os=ose
4823458e6c2Smrg				;;
4833458e6c2Smrg			os68k)
4843458e6c2Smrg				basic_machine=m68k-none
4853458e6c2Smrg				basic_os=os68k
4863458e6c2Smrg				;;
4873458e6c2Smrg			paragon)
4883458e6c2Smrg				basic_machine=i860-intel
4893458e6c2Smrg				basic_os=osf
4903458e6c2Smrg				;;
4913458e6c2Smrg			parisc)
4923458e6c2Smrg				basic_machine=hppa-unknown
4933458e6c2Smrg				basic_os=linux
4943458e6c2Smrg				;;
4953458e6c2Smrg			psp)
4963458e6c2Smrg				basic_machine=mipsallegrexel-sony
4973458e6c2Smrg				basic_os=psp
4983458e6c2Smrg				;;
4993458e6c2Smrg			pw32)
5003458e6c2Smrg				basic_machine=i586-unknown
5013458e6c2Smrg				basic_os=pw32
5023458e6c2Smrg				;;
5033458e6c2Smrg			rdos | rdos64)
5043458e6c2Smrg				basic_machine=x86_64-pc
5053458e6c2Smrg				basic_os=rdos
5063458e6c2Smrg				;;
5073458e6c2Smrg			rdos32)
5083458e6c2Smrg				basic_machine=i386-pc
5093458e6c2Smrg				basic_os=rdos
5103458e6c2Smrg				;;
5113458e6c2Smrg			rom68k)
5123458e6c2Smrg				basic_machine=m68k-rom68k
5133458e6c2Smrg				basic_os=coff
5143458e6c2Smrg				;;
5153458e6c2Smrg			sa29200)
5163458e6c2Smrg				basic_machine=a29k-amd
5173458e6c2Smrg				basic_os=udi
5183458e6c2Smrg				;;
5193458e6c2Smrg			sei)
5203458e6c2Smrg				basic_machine=mips-sei
5213458e6c2Smrg				basic_os=seiux
5223458e6c2Smrg				;;
5233458e6c2Smrg			sequent)
5243458e6c2Smrg				basic_machine=i386-sequent
5253458e6c2Smrg				basic_os=
5263458e6c2Smrg				;;
5273458e6c2Smrg			sps7)
5283458e6c2Smrg				basic_machine=m68k-bull
5293458e6c2Smrg				basic_os=sysv2
5303458e6c2Smrg				;;
5313458e6c2Smrg			st2000)
5323458e6c2Smrg				basic_machine=m68k-tandem
5333458e6c2Smrg				basic_os=
5343458e6c2Smrg				;;
5353458e6c2Smrg			stratus)
5363458e6c2Smrg				basic_machine=i860-stratus
5373458e6c2Smrg				basic_os=sysv4
5383458e6c2Smrg				;;
5393458e6c2Smrg			sun2)
5403458e6c2Smrg				basic_machine=m68000-sun
5413458e6c2Smrg				basic_os=
5423458e6c2Smrg				;;
5433458e6c2Smrg			sun2os3)
5443458e6c2Smrg				basic_machine=m68000-sun
5453458e6c2Smrg				basic_os=sunos3
5463458e6c2Smrg				;;
5473458e6c2Smrg			sun2os4)
5483458e6c2Smrg				basic_machine=m68000-sun
5493458e6c2Smrg				basic_os=sunos4
5503458e6c2Smrg				;;
5513458e6c2Smrg			sun3)
5523458e6c2Smrg				basic_machine=m68k-sun
5533458e6c2Smrg				basic_os=
5543458e6c2Smrg				;;
5553458e6c2Smrg			sun3os3)
5563458e6c2Smrg				basic_machine=m68k-sun
5573458e6c2Smrg				basic_os=sunos3
5583458e6c2Smrg				;;
5593458e6c2Smrg			sun3os4)
5603458e6c2Smrg				basic_machine=m68k-sun
5613458e6c2Smrg				basic_os=sunos4
5623458e6c2Smrg				;;
5633458e6c2Smrg			sun4)
5643458e6c2Smrg				basic_machine=sparc-sun
5653458e6c2Smrg				basic_os=
5663458e6c2Smrg				;;
5673458e6c2Smrg			sun4os3)
5683458e6c2Smrg				basic_machine=sparc-sun
5693458e6c2Smrg				basic_os=sunos3
5703458e6c2Smrg				;;
5713458e6c2Smrg			sun4os4)
5723458e6c2Smrg				basic_machine=sparc-sun
5733458e6c2Smrg				basic_os=sunos4
5743458e6c2Smrg				;;
5753458e6c2Smrg			sun4sol2)
5763458e6c2Smrg				basic_machine=sparc-sun
5773458e6c2Smrg				basic_os=solaris2
5783458e6c2Smrg				;;
5793458e6c2Smrg			sun386 | sun386i | roadrunner)
5803458e6c2Smrg				basic_machine=i386-sun
5813458e6c2Smrg				basic_os=
5823458e6c2Smrg				;;
5833458e6c2Smrg			sv1)
5843458e6c2Smrg				basic_machine=sv1-cray
5853458e6c2Smrg				basic_os=unicos
5863458e6c2Smrg				;;
5873458e6c2Smrg			symmetry)
5883458e6c2Smrg				basic_machine=i386-sequent
5893458e6c2Smrg				basic_os=dynix
5903458e6c2Smrg				;;
5913458e6c2Smrg			t3e)
5923458e6c2Smrg				basic_machine=alphaev5-cray
5933458e6c2Smrg				basic_os=unicos
5943458e6c2Smrg				;;
5953458e6c2Smrg			t90)
5963458e6c2Smrg				basic_machine=t90-cray
5973458e6c2Smrg				basic_os=unicos
5983458e6c2Smrg				;;
5993458e6c2Smrg			toad1)
6003458e6c2Smrg				basic_machine=pdp10-xkl
6013458e6c2Smrg				basic_os=tops20
6023458e6c2Smrg				;;
6033458e6c2Smrg			tpf)
6043458e6c2Smrg				basic_machine=s390x-ibm
6053458e6c2Smrg				basic_os=tpf
6063458e6c2Smrg				;;
6073458e6c2Smrg			udi29k)
6083458e6c2Smrg				basic_machine=a29k-amd
6093458e6c2Smrg				basic_os=udi
6103458e6c2Smrg				;;
6113458e6c2Smrg			ultra3)
6123458e6c2Smrg				basic_machine=a29k-nyu
6133458e6c2Smrg				basic_os=sym1
6143458e6c2Smrg				;;
6153458e6c2Smrg			v810 | necv810)
6163458e6c2Smrg				basic_machine=v810-nec
6173458e6c2Smrg				basic_os=none
6183458e6c2Smrg				;;
6193458e6c2Smrg			vaxv)
6203458e6c2Smrg				basic_machine=vax-dec
6213458e6c2Smrg				basic_os=sysv
6223458e6c2Smrg				;;
6233458e6c2Smrg			vms)
6243458e6c2Smrg				basic_machine=vax-dec
6253458e6c2Smrg				basic_os=vms
6263458e6c2Smrg				;;
6273458e6c2Smrg			vsta)
6283458e6c2Smrg				basic_machine=i386-pc
6293458e6c2Smrg				basic_os=vsta
6303458e6c2Smrg				;;
6313458e6c2Smrg			vxworks960)
6323458e6c2Smrg				basic_machine=i960-wrs
6333458e6c2Smrg				basic_os=vxworks
6343458e6c2Smrg				;;
6353458e6c2Smrg			vxworks68)
6363458e6c2Smrg				basic_machine=m68k-wrs
6373458e6c2Smrg				basic_os=vxworks
6383458e6c2Smrg				;;
6393458e6c2Smrg			vxworks29k)
6403458e6c2Smrg				basic_machine=a29k-wrs
6413458e6c2Smrg				basic_os=vxworks
6423458e6c2Smrg				;;
6433458e6c2Smrg			xbox)
6443458e6c2Smrg				basic_machine=i686-pc
6453458e6c2Smrg				basic_os=mingw32
6463458e6c2Smrg				;;
6473458e6c2Smrg			ymp)
6483458e6c2Smrg				basic_machine=ymp-cray
6493458e6c2Smrg				basic_os=unicos
6503458e6c2Smrg				;;
6513458e6c2Smrg			*)
6523458e6c2Smrg				basic_machine=$1
6533458e6c2Smrg				basic_os=
6543458e6c2Smrg				;;
6553458e6c2Smrg		esac
6562c7c4e3dSmrg		;;
6572c7c4e3dSmrgesac
6582c7c4e3dSmrg
6593458e6c2Smrg# Decode 1-component or ad-hoc basic machines
6602c7c4e3dSmrgcase $basic_machine in
6613458e6c2Smrg	# Here we handle the default manufacturer of certain CPU types.  It is in
6623458e6c2Smrg	# some cases the only manufacturer, in others, it is the most popular.
6633458e6c2Smrg	w89k)
6643458e6c2Smrg		cpu=hppa1.1
6653458e6c2Smrg		vendor=winbond
6662becc446Smrg		;;
6673458e6c2Smrg	op50n)
6683458e6c2Smrg		cpu=hppa1.1
6693458e6c2Smrg		vendor=oki
6702c7c4e3dSmrg		;;
6713458e6c2Smrg	op60c)
6723458e6c2Smrg		cpu=hppa1.1
6733458e6c2Smrg		vendor=oki
6742c7c4e3dSmrg		;;
6753458e6c2Smrg	ibm*)
6763458e6c2Smrg		cpu=i370
6773458e6c2Smrg		vendor=ibm
6788650bb69Smrg		;;
6793458e6c2Smrg	orion105)
6803458e6c2Smrg		cpu=clipper
6813458e6c2Smrg		vendor=highlevel
6822becc446Smrg		;;
6833458e6c2Smrg	mac | mpw | mac-mpw)
6843458e6c2Smrg		cpu=m68k
6853458e6c2Smrg		vendor=apple
6862becc446Smrg		;;
6873458e6c2Smrg	pmac | pmac-mpw)
6883458e6c2Smrg		cpu=powerpc
6893458e6c2Smrg		vendor=apple
6902becc446Smrg		;;
6912becc446Smrg
6922c7c4e3dSmrg	# Recognize the various machine names and aliases which stand
6932c7c4e3dSmrg	# for a CPU type and a company and sometimes even an OS.
6942c7c4e3dSmrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
6953458e6c2Smrg		cpu=m68000
6963458e6c2Smrg		vendor=att
6972c7c4e3dSmrg		;;
6982c7c4e3dSmrg	3b*)
6993458e6c2Smrg		cpu=we32k
7003458e6c2Smrg		vendor=att
7018650bb69Smrg		;;
70216d7e2f1Smrg	bluegene*)
7033458e6c2Smrg		cpu=powerpc
7043458e6c2Smrg		vendor=ibm
7053458e6c2Smrg		basic_os=cnk
7062c7c4e3dSmrg		;;
7072c7c4e3dSmrg	decsystem10* | dec10*)
7083458e6c2Smrg		cpu=pdp10
7093458e6c2Smrg		vendor=dec
7103458e6c2Smrg		basic_os=tops10
7112c7c4e3dSmrg		;;
7122c7c4e3dSmrg	decsystem20* | dec20*)
7133458e6c2Smrg		cpu=pdp10
7143458e6c2Smrg		vendor=dec
7153458e6c2Smrg		basic_os=tops20
7162c7c4e3dSmrg		;;
7172c7c4e3dSmrg	delta | 3300 | motorola-3300 | motorola-delta \
7182c7c4e3dSmrg	      | 3300-motorola | delta-motorola)
7193458e6c2Smrg		cpu=m68k
7203458e6c2Smrg		vendor=motorola
7212c7c4e3dSmrg		;;
7223458e6c2Smrg	dpx2*)
7233458e6c2Smrg		cpu=m68k
7243458e6c2Smrg		vendor=bull
7253458e6c2Smrg		basic_os=sysv3
7262c7c4e3dSmrg		;;
7272c7c4e3dSmrg	encore | umax | mmax)
7283458e6c2Smrg		cpu=ns32k
7293458e6c2Smrg		vendor=encore
7302c7c4e3dSmrg		;;
7313458e6c2Smrg	elxsi)
7323458e6c2Smrg		cpu=elxsi
7333458e6c2Smrg		vendor=elxsi
7343458e6c2Smrg		basic_os=${basic_os:-bsd}
7352c7c4e3dSmrg		;;
7362c7c4e3dSmrg	fx2800)
7373458e6c2Smrg		cpu=i860
7383458e6c2Smrg		vendor=alliant
7392c7c4e3dSmrg		;;
7402c7c4e3dSmrg	genix)
7413458e6c2Smrg		cpu=ns32k
7423458e6c2Smrg		vendor=ns
7432c7c4e3dSmrg		;;
7442c7c4e3dSmrg	h3050r* | hiux*)
7453458e6c2Smrg		cpu=hppa1.1
7463458e6c2Smrg		vendor=hitachi
7473458e6c2Smrg		basic_os=hiuxwe2
7482c7c4e3dSmrg		;;
7492c7c4e3dSmrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
7503458e6c2Smrg		cpu=hppa1.0
7513458e6c2Smrg		vendor=hp
7522c7c4e3dSmrg		;;
7532c7c4e3dSmrg	hp9k2[0-9][0-9] | hp9k31[0-9])
7543458e6c2Smrg		cpu=m68000
7553458e6c2Smrg		vendor=hp
7562c7c4e3dSmrg		;;
7572c7c4e3dSmrg	hp9k3[2-9][0-9])
7583458e6c2Smrg		cpu=m68k
7593458e6c2Smrg		vendor=hp
7602c7c4e3dSmrg		;;
7612c7c4e3dSmrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
7623458e6c2Smrg		cpu=hppa1.0
7633458e6c2Smrg		vendor=hp
7642c7c4e3dSmrg		;;
7652c7c4e3dSmrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
7663458e6c2Smrg		cpu=hppa1.1
7673458e6c2Smrg		vendor=hp
7682c7c4e3dSmrg		;;
7692c7c4e3dSmrg	hp9k78[0-9] | hp78[0-9])
7702c7c4e3dSmrg		# FIXME: really hppa2.0-hp
7713458e6c2Smrg		cpu=hppa1.1
7723458e6c2Smrg		vendor=hp
7732c7c4e3dSmrg		;;
7742c7c4e3dSmrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
7752c7c4e3dSmrg		# FIXME: really hppa2.0-hp
7763458e6c2Smrg		cpu=hppa1.1
7773458e6c2Smrg		vendor=hp
7782c7c4e3dSmrg		;;
7792c7c4e3dSmrg	hp9k8[0-9][13679] | hp8[0-9][13679])
7803458e6c2Smrg		cpu=hppa1.1
7813458e6c2Smrg		vendor=hp
7822c7c4e3dSmrg		;;
7832c7c4e3dSmrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
7843458e6c2Smrg		cpu=hppa1.0
7853458e6c2Smrg		vendor=hp
7862c7c4e3dSmrg		;;
7872c7c4e3dSmrg	i*86v32)
7883458e6c2Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7893458e6c2Smrg		vendor=pc
7903458e6c2Smrg		basic_os=sysv32
7912c7c4e3dSmrg		;;
7922c7c4e3dSmrg	i*86v4*)
7933458e6c2Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7943458e6c2Smrg		vendor=pc
7953458e6c2Smrg		basic_os=sysv4
7962c7c4e3dSmrg		;;
7972c7c4e3dSmrg	i*86v)
7983458e6c2Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7993458e6c2Smrg		vendor=pc
8003458e6c2Smrg		basic_os=sysv
8012c7c4e3dSmrg		;;
8022c7c4e3dSmrg	i*86sol2)
8033458e6c2Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
8043458e6c2Smrg		vendor=pc
8053458e6c2Smrg		basic_os=solaris2
8062c7c4e3dSmrg		;;
8073458e6c2Smrg	j90 | j90-cray)
8083458e6c2Smrg		cpu=j90
8093458e6c2Smrg		vendor=cray
8103458e6c2Smrg		basic_os=${basic_os:-unicos}
8112c7c4e3dSmrg		;;
8122c7c4e3dSmrg	iris | iris4d)
8133458e6c2Smrg		cpu=mips
8143458e6c2Smrg		vendor=sgi
8153458e6c2Smrg		case $basic_os in
8163458e6c2Smrg		    irix*)
8172c7c4e3dSmrg			;;
8182c7c4e3dSmrg		    *)
8193458e6c2Smrg			basic_os=irix4
8202c7c4e3dSmrg			;;
8212c7c4e3dSmrg		esac
8222c7c4e3dSmrg		;;
8232c7c4e3dSmrg	miniframe)
8243458e6c2Smrg		cpu=m68000
8253458e6c2Smrg		vendor=convergent
8262becc446Smrg		;;
8273458e6c2Smrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
8283458e6c2Smrg		cpu=m68k
8293458e6c2Smrg		vendor=atari
8303458e6c2Smrg		basic_os=mint
8312c7c4e3dSmrg		;;
8322c7c4e3dSmrg	news-3600 | risc-news)
8333458e6c2Smrg		cpu=mips
8343458e6c2Smrg		vendor=sony
8353458e6c2Smrg		basic_os=newsos
8363458e6c2Smrg		;;
8373458e6c2Smrg	next | m*-next)
8383458e6c2Smrg		cpu=m68k
8393458e6c2Smrg		vendor=next
8403458e6c2Smrg		case $basic_os in
8413458e6c2Smrg		    openstep*)
8423458e6c2Smrg		        ;;
8433458e6c2Smrg		    nextstep*)
8442c7c4e3dSmrg			;;
8453458e6c2Smrg		    ns2*)
8463458e6c2Smrg		      basic_os=nextstep2
8472c7c4e3dSmrg			;;
8482c7c4e3dSmrg		    *)
8493458e6c2Smrg		      basic_os=nextstep3
8502c7c4e3dSmrg			;;
8512c7c4e3dSmrg		esac
8522c7c4e3dSmrg		;;
8532c7c4e3dSmrg	np1)
8543458e6c2Smrg		cpu=np1
8553458e6c2Smrg		vendor=gould
8562c7c4e3dSmrg		;;
8572c7c4e3dSmrg	op50n-* | op60c-*)
8583458e6c2Smrg		cpu=hppa1.1
8593458e6c2Smrg		vendor=oki
8603458e6c2Smrg		basic_os=proelf
8612c7c4e3dSmrg		;;
8622c7c4e3dSmrg	pa-hitachi)
8633458e6c2Smrg		cpu=hppa1.1
8643458e6c2Smrg		vendor=hitachi
8653458e6c2Smrg		basic_os=hiuxwe2
8668650bb69Smrg		;;
8672c7c4e3dSmrg	pbd)
8683458e6c2Smrg		cpu=sparc
8693458e6c2Smrg		vendor=tti
8702c7c4e3dSmrg		;;
8712c7c4e3dSmrg	pbb)
8723458e6c2Smrg		cpu=m68k
8733458e6c2Smrg		vendor=tti
8748650bb69Smrg		;;
8753458e6c2Smrg	pc532)
8763458e6c2Smrg		cpu=ns32k
8773458e6c2Smrg		vendor=pc532
8782c7c4e3dSmrg		;;
8792c7c4e3dSmrg	pn)
8803458e6c2Smrg		cpu=pn
8813458e6c2Smrg		vendor=gould
8822c7c4e3dSmrg		;;
8833458e6c2Smrg	power)
8843458e6c2Smrg		cpu=power
8853458e6c2Smrg		vendor=ibm
8862c7c4e3dSmrg		;;
8872c7c4e3dSmrg	ps2)
8883458e6c2Smrg		cpu=i386
8893458e6c2Smrg		vendor=ibm
8902c7c4e3dSmrg		;;
8912c7c4e3dSmrg	rm[46]00)
8923458e6c2Smrg		cpu=mips
8933458e6c2Smrg		vendor=siemens
8942c7c4e3dSmrg		;;
8952c7c4e3dSmrg	rtpc | rtpc-*)
8963458e6c2Smrg		cpu=romp
8973458e6c2Smrg		vendor=ibm
8988650bb69Smrg		;;
8993458e6c2Smrg	sde)
9003458e6c2Smrg		cpu=mipsisa32
9013458e6c2Smrg		vendor=sde
9023458e6c2Smrg		basic_os=${basic_os:-elf}
9032c7c4e3dSmrg		;;
9043458e6c2Smrg	simso-wrs)
9053458e6c2Smrg		cpu=sparclite
9063458e6c2Smrg		vendor=wrs
9073458e6c2Smrg		basic_os=vxworks
9082c7c4e3dSmrg		;;
9093458e6c2Smrg	tower | tower-32)
9103458e6c2Smrg		cpu=m68k
9113458e6c2Smrg		vendor=ncr
9128650bb69Smrg		;;
9133458e6c2Smrg	vpp*|vx|vx-*)
9143458e6c2Smrg		cpu=f301
9153458e6c2Smrg		vendor=fujitsu
9162c7c4e3dSmrg		;;
9173458e6c2Smrg	w65)
9183458e6c2Smrg		cpu=w65
9193458e6c2Smrg		vendor=wdc
9202c7c4e3dSmrg		;;
9213458e6c2Smrg	w89k-*)
9223458e6c2Smrg		cpu=hppa1.1
9233458e6c2Smrg		vendor=winbond
9243458e6c2Smrg		basic_os=proelf
9252c7c4e3dSmrg		;;
9263458e6c2Smrg	none)
9273458e6c2Smrg		cpu=none
9283458e6c2Smrg		vendor=none
9298650bb69Smrg		;;
9303458e6c2Smrg	leon|leon[3-9])
9313458e6c2Smrg		cpu=sparc
9323458e6c2Smrg		vendor=$basic_machine
9332c7c4e3dSmrg		;;
9343458e6c2Smrg	leon-*|leon[3-9]-*)
9353458e6c2Smrg		cpu=sparc
9363458e6c2Smrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
9372c7c4e3dSmrg		;;
9383458e6c2Smrg
9393458e6c2Smrg	*-*)
9403458e6c2Smrg		# shellcheck disable=SC2162
9413458e6c2Smrg		saved_IFS=$IFS
9423458e6c2Smrg		IFS="-" read cpu vendor <<EOF
9433458e6c2Smrg$basic_machine
9443458e6c2SmrgEOF
9453458e6c2Smrg		IFS=$saved_IFS
9462c7c4e3dSmrg		;;
947c1e8faa6Smrg	# We use 'pc' rather than 'unknown'
9483458e6c2Smrg	# because (1) that's what they normally are, and
9493458e6c2Smrg	# (2) the word "unknown" tends to confuse beginning users.
9503458e6c2Smrg	i*86 | x86_64)
9513458e6c2Smrg		cpu=$basic_machine
9523458e6c2Smrg		vendor=pc
9532c7c4e3dSmrg		;;
9543458e6c2Smrg	# These rules are duplicated from below for sake of the special case above;
9553458e6c2Smrg	# i.e. things that normalized to x86 arches should also default to "pc"
9563458e6c2Smrg	pc98)
9573458e6c2Smrg		cpu=i386
9583458e6c2Smrg		vendor=pc
9592c7c4e3dSmrg		;;
9603458e6c2Smrg	x64 | amd64)
9613458e6c2Smrg		cpu=x86_64
9623458e6c2Smrg		vendor=pc
9632c7c4e3dSmrg		;;
9643458e6c2Smrg	# Recognize the basic CPU types without company name.
9653458e6c2Smrg	*)
9663458e6c2Smrg		cpu=$basic_machine
9673458e6c2Smrg		vendor=unknown
9682becc446Smrg		;;
9693458e6c2Smrgesac
9703458e6c2Smrg
9713458e6c2Smrgunset -v basic_machine
9723458e6c2Smrg
9733458e6c2Smrg# Decode basic machines in the full and proper CPU-Company form.
9743458e6c2Smrgcase $cpu-$vendor in
9753458e6c2Smrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
9763458e6c2Smrg	# some cases the only manufacturer, in others, it is the most popular.
9773458e6c2Smrg	craynv-unknown)
9783458e6c2Smrg		vendor=cray
9793458e6c2Smrg		basic_os=${basic_os:-unicosmp}
9802c7c4e3dSmrg		;;
9813458e6c2Smrg	c90-unknown | c90-cray)
9823458e6c2Smrg		vendor=cray
9833458e6c2Smrg		basic_os=${Basic_os:-unicos}
9842c7c4e3dSmrg		;;
9853458e6c2Smrg	fx80-unknown)
9863458e6c2Smrg		vendor=alliant
9872c7c4e3dSmrg		;;
9883458e6c2Smrg	romp-unknown)
9893458e6c2Smrg		vendor=ibm
9902c7c4e3dSmrg		;;
9913458e6c2Smrg	mmix-unknown)
9923458e6c2Smrg		vendor=knuth
9932c7c4e3dSmrg		;;
9943458e6c2Smrg	microblaze-unknown | microblazeel-unknown)
9953458e6c2Smrg		vendor=xilinx
9962c7c4e3dSmrg		;;
9973458e6c2Smrg	rs6000-unknown)
9983458e6c2Smrg		vendor=ibm
9992c7c4e3dSmrg		;;
10003458e6c2Smrg	vax-unknown)
10013458e6c2Smrg		vendor=dec
10022c7c4e3dSmrg		;;
10033458e6c2Smrg	pdp11-unknown)
10043458e6c2Smrg		vendor=dec
10052c7c4e3dSmrg		;;
10063458e6c2Smrg	we32k-unknown)
10073458e6c2Smrg		vendor=att
10082c7c4e3dSmrg		;;
10093458e6c2Smrg	cydra-unknown)
10103458e6c2Smrg		vendor=cydrome
10112c7c4e3dSmrg		;;
10123458e6c2Smrg	i370-ibm*)
10133458e6c2Smrg		vendor=ibm
10142c7c4e3dSmrg		;;
10153458e6c2Smrg	orion-unknown)
10163458e6c2Smrg		vendor=highlevel
10172c7c4e3dSmrg		;;
10183458e6c2Smrg	xps-unknown | xps100-unknown)
10193458e6c2Smrg		cpu=xps100
10203458e6c2Smrg		vendor=honeywell
10212c7c4e3dSmrg		;;
10223458e6c2Smrg
10233458e6c2Smrg	# Here we normalize CPU types with a missing or matching vendor
1024c1e8faa6Smrg	armh-unknown | armh-alt)
1025c1e8faa6Smrg		cpu=armv7l
1026c1e8faa6Smrg		vendor=alt
1027c1e8faa6Smrg		basic_os=${basic_os:-linux-gnueabihf}
1028c1e8faa6Smrg		;;
10293458e6c2Smrg	dpx20-unknown | dpx20-bull)
10303458e6c2Smrg		cpu=rs6000
10313458e6c2Smrg		vendor=bull
10323458e6c2Smrg		basic_os=${basic_os:-bosx}
10332c7c4e3dSmrg		;;
10343458e6c2Smrg
10353458e6c2Smrg	# Here we normalize CPU types irrespective of the vendor
10363458e6c2Smrg	amd64-*)
10373458e6c2Smrg		cpu=x86_64
10388650bb69Smrg		;;
10393458e6c2Smrg	blackfin-*)
10403458e6c2Smrg		cpu=bfin
10413458e6c2Smrg		basic_os=linux
10422c7c4e3dSmrg		;;
10433458e6c2Smrg	c54x-*)
10443458e6c2Smrg		cpu=tic54x
10452c7c4e3dSmrg		;;
10463458e6c2Smrg	c55x-*)
10473458e6c2Smrg		cpu=tic55x
10482c7c4e3dSmrg		;;
10493458e6c2Smrg	c6x-*)
10503458e6c2Smrg		cpu=tic6x
10512c7c4e3dSmrg		;;
10523458e6c2Smrg	e500v[12]-*)
10533458e6c2Smrg		cpu=powerpc
10543458e6c2Smrg		basic_os=${basic_os}"spe"
10558650bb69Smrg		;;
10563458e6c2Smrg	mips3*-*)
10573458e6c2Smrg		cpu=mips64
10582c7c4e3dSmrg		;;
10593458e6c2Smrg	ms1-*)
10603458e6c2Smrg		cpu=mt
10612c7c4e3dSmrg		;;
10623458e6c2Smrg	m68knommu-*)
10633458e6c2Smrg		cpu=m68k
10643458e6c2Smrg		basic_os=linux
10652c7c4e3dSmrg		;;
10663458e6c2Smrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
10673458e6c2Smrg		cpu=s12z
10682c7c4e3dSmrg		;;
10693458e6c2Smrg	openrisc-*)
10703458e6c2Smrg		cpu=or32
10712c7c4e3dSmrg		;;
10723458e6c2Smrg	parisc-*)
10733458e6c2Smrg		cpu=hppa
10743458e6c2Smrg		basic_os=linux
10752c7c4e3dSmrg		;;
10763458e6c2Smrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
10773458e6c2Smrg		cpu=i586
10782c7c4e3dSmrg		;;
1079c1e8faa6Smrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
10803458e6c2Smrg		cpu=i686
10812c7c4e3dSmrg		;;
10823458e6c2Smrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
10833458e6c2Smrg		cpu=i686
10842c7c4e3dSmrg		;;
10853458e6c2Smrg	pentium4-*)
10863458e6c2Smrg		cpu=i786
10872c7c4e3dSmrg		;;
10883458e6c2Smrg	pc98-*)
10893458e6c2Smrg		cpu=i386
10902c7c4e3dSmrg		;;
10913458e6c2Smrg	ppc-* | ppcbe-*)
10923458e6c2Smrg		cpu=powerpc
10938650bb69Smrg		;;
10943458e6c2Smrg	ppcle-* | powerpclittle-*)
10953458e6c2Smrg		cpu=powerpcle
10962c7c4e3dSmrg		;;
10973458e6c2Smrg	ppc64-*)
10983458e6c2Smrg		cpu=powerpc64
10992becc446Smrg		;;
11003458e6c2Smrg	ppc64le-* | powerpc64little-*)
11013458e6c2Smrg		cpu=powerpc64le
11022c7c4e3dSmrg		;;
11033458e6c2Smrg	sb1-*)
11043458e6c2Smrg		cpu=mipsisa64sb1
11052c7c4e3dSmrg		;;
11063458e6c2Smrg	sb1el-*)
11073458e6c2Smrg		cpu=mipsisa64sb1el
11088650bb69Smrg		;;
11093458e6c2Smrg	sh5e[lb]-*)
11103458e6c2Smrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
11112c7c4e3dSmrg		;;
11123458e6c2Smrg	spur-*)
11133458e6c2Smrg		cpu=spur
11142c7c4e3dSmrg		;;
11153458e6c2Smrg	strongarm-* | thumb-*)
11163458e6c2Smrg		cpu=arm
11172c7c4e3dSmrg		;;
11183458e6c2Smrg	tx39-*)
11193458e6c2Smrg		cpu=mipstx39
11202c7c4e3dSmrg		;;
11213458e6c2Smrg	tx39el-*)
11223458e6c2Smrg		cpu=mipstx39el
11232c7c4e3dSmrg		;;
11243458e6c2Smrg	x64-*)
11253458e6c2Smrg		cpu=x86_64
11268650bb69Smrg		;;
11273458e6c2Smrg	xscale-* | xscalee[bl]-*)
11283458e6c2Smrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
11292c7c4e3dSmrg		;;
1130c1e8faa6Smrg	arm64-* | aarch64le-*)
11313458e6c2Smrg		cpu=aarch64
11322c7c4e3dSmrg		;;
11333458e6c2Smrg
11343458e6c2Smrg	# Recognize the canonical CPU Types that limit and/or modify the
11353458e6c2Smrg	# company names they are paired with.
11363458e6c2Smrg	cr16-*)
11373458e6c2Smrg		basic_os=${basic_os:-elf}
11382c7c4e3dSmrg		;;
11393458e6c2Smrg	crisv32-* | etraxfs*-*)
11403458e6c2Smrg		cpu=crisv32
11413458e6c2Smrg		vendor=axis
11422c7c4e3dSmrg		;;
11433458e6c2Smrg	cris-* | etrax*-*)
11443458e6c2Smrg		cpu=cris
11453458e6c2Smrg		vendor=axis
11462c7c4e3dSmrg		;;
11473458e6c2Smrg	crx-*)
11483458e6c2Smrg		basic_os=${basic_os:-elf}
11492c7c4e3dSmrg		;;
11503458e6c2Smrg	neo-tandem)
11513458e6c2Smrg		cpu=neo
11523458e6c2Smrg		vendor=tandem
11532c7c4e3dSmrg		;;
11543458e6c2Smrg	nse-tandem)
11553458e6c2Smrg		cpu=nse
11563458e6c2Smrg		vendor=tandem
11572c7c4e3dSmrg		;;
11583458e6c2Smrg	nsr-tandem)
11593458e6c2Smrg		cpu=nsr
11603458e6c2Smrg		vendor=tandem
11612c7c4e3dSmrg		;;
11623458e6c2Smrg	nsv-tandem)
11633458e6c2Smrg		cpu=nsv
11643458e6c2Smrg		vendor=tandem
11652c7c4e3dSmrg		;;
11663458e6c2Smrg	nsx-tandem)
11673458e6c2Smrg		cpu=nsx
11683458e6c2Smrg		vendor=tandem
11692c7c4e3dSmrg		;;
11703458e6c2Smrg	mipsallegrexel-sony)
11713458e6c2Smrg		cpu=mipsallegrexel
11723458e6c2Smrg		vendor=sony
11732c7c4e3dSmrg		;;
11743458e6c2Smrg	tile*-*)
11753458e6c2Smrg		basic_os=${basic_os:-linux-gnu}
11762c7c4e3dSmrg		;;
11773458e6c2Smrg
11782c7c4e3dSmrg	*)
11793458e6c2Smrg		# Recognize the canonical CPU types that are allowed with any
11803458e6c2Smrg		# company name.
11813458e6c2Smrg		case $cpu in
11823458e6c2Smrg			1750a | 580 \
11833458e6c2Smrg			| a29k \
1184c1e8faa6Smrg			| aarch64 | aarch64_be | aarch64c | arm64ec \
11853458e6c2Smrg			| abacus \
11863458e6c2Smrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
11873458e6c2Smrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
11883458e6c2Smrg			| alphapca5[67] | alpha64pca5[67] \
11893458e6c2Smrg			| am33_2.0 \
11903458e6c2Smrg			| amdgcn \
11913458e6c2Smrg			| arc | arceb | arc32 | arc64 \
11923458e6c2Smrg			| arm | arm[lb]e | arme[lb] | armv* \
11933458e6c2Smrg			| avr | avr32 \
11943458e6c2Smrg			| asmjs \
11953458e6c2Smrg			| ba \
11963458e6c2Smrg			| be32 | be64 \
11973458e6c2Smrg			| bfin | bpf | bs2000 \
11983458e6c2Smrg			| c[123]* | c30 | [cjt]90 | c4x \
11993458e6c2Smrg			| c8051 | clipper | craynv | csky | cydra \
12003458e6c2Smrg			| d10v | d30v | dlx | dsp16xx \
12013458e6c2Smrg			| e2k | elxsi | epiphany \
12023458e6c2Smrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
1203c1e8faa6Smrg			| javascript \
12043458e6c2Smrg			| h8300 | h8500 \
12053458e6c2Smrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
12063458e6c2Smrg			| hexagon \
12073458e6c2Smrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
12083458e6c2Smrg			| ip2k | iq2000 \
12093458e6c2Smrg			| k1om \
1210c1e8faa6Smrg			| kvx \
12113458e6c2Smrg			| le32 | le64 \
12123458e6c2Smrg			| lm32 \
1213c1e8faa6Smrg			| loongarch32 | loongarch64 \
12143458e6c2Smrg			| m32c | m32r | m32rle \
12153458e6c2Smrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
12163458e6c2Smrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
12173458e6c2Smrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
12183458e6c2Smrg			| microblaze | microblazeel \
1219c1e8faa6Smrg			| mips* \
12203458e6c2Smrg			| mmix \
12213458e6c2Smrg			| mn10200 | mn10300 \
12223458e6c2Smrg			| moxie \
12233458e6c2Smrg			| mt \
12243458e6c2Smrg			| msp430 \
1225c1e8faa6Smrg			| nanomips* \
12263458e6c2Smrg			| nds32 | nds32le | nds32be \
12273458e6c2Smrg			| nfp \
12283458e6c2Smrg			| nios | nios2 | nios2eb | nios2el \
12293458e6c2Smrg			| none | np1 | ns16k | ns32k | nvptx \
12303458e6c2Smrg			| open8 \
12313458e6c2Smrg			| or1k* \
12323458e6c2Smrg			| or32 \
12333458e6c2Smrg			| orion \
12343458e6c2Smrg			| picochip \
12353458e6c2Smrg			| pdp10 | pdp11 | pj | pjl | pn | power \
12363458e6c2Smrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
12373458e6c2Smrg			| pru \
12383458e6c2Smrg			| pyramid \
12393458e6c2Smrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
12403458e6c2Smrg			| rl78 | romp | rs6000 | rx \
12413458e6c2Smrg			| s390 | s390x \
12423458e6c2Smrg			| score \
12433458e6c2Smrg			| sh | shl \
12443458e6c2Smrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
12453458e6c2Smrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
12463458e6c2Smrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
12473458e6c2Smrg			| sparclite \
12483458e6c2Smrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
12493458e6c2Smrg			| spu \
12503458e6c2Smrg			| tahoe \
12513458e6c2Smrg			| thumbv7* \
12523458e6c2Smrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
12533458e6c2Smrg			| tron \
12543458e6c2Smrg			| ubicom32 \
12553458e6c2Smrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
12563458e6c2Smrg			| vax \
1257c1e8faa6Smrg			| vc4 \
12583458e6c2Smrg			| visium \
12593458e6c2Smrg			| w65 \
12603458e6c2Smrg			| wasm32 | wasm64 \
12613458e6c2Smrg			| we32k \
12623458e6c2Smrg			| x86 | x86_64 | xc16x | xgate | xps100 \
12633458e6c2Smrg			| xstormy16 | xtensa* \
12643458e6c2Smrg			| ymp \
12653458e6c2Smrg			| z8k | z80)
12663458e6c2Smrg				;;
12673458e6c2Smrg
12683458e6c2Smrg			*)
1269c1e8faa6Smrg				echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
12703458e6c2Smrg				exit 1
12713458e6c2Smrg				;;
12723458e6c2Smrg		esac
12732c7c4e3dSmrg		;;
12742c7c4e3dSmrgesac
12752c7c4e3dSmrg
12762c7c4e3dSmrg# Here we canonicalize certain aliases for manufacturers.
12773458e6c2Smrgcase $vendor in
12783458e6c2Smrg	digital*)
12793458e6c2Smrg		vendor=dec
12802c7c4e3dSmrg		;;
12813458e6c2Smrg	commodore*)
12823458e6c2Smrg		vendor=cbm
12832c7c4e3dSmrg		;;
12842c7c4e3dSmrg	*)
12852c7c4e3dSmrg		;;
12862c7c4e3dSmrgesac
12872c7c4e3dSmrg
12882c7c4e3dSmrg# Decode manufacturer-specific aliases for certain operating systems.
12892c7c4e3dSmrg
1290c1e8faa6Smrgif test x"$basic_os" != x
12912c7c4e3dSmrgthen
12923458e6c2Smrg
1293c1e8faa6Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
12943458e6c2Smrg# set os.
1295c1e8faa6Smrgobj=
12963458e6c2Smrgcase $basic_os in
12973458e6c2Smrg	gnu/linux*)
12983458e6c2Smrg		kernel=linux
12993458e6c2Smrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
13003458e6c2Smrg		;;
13013458e6c2Smrg	os2-emx)
13023458e6c2Smrg		kernel=os2
13033458e6c2Smrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
13043458e6c2Smrg		;;
13053458e6c2Smrg	nto-qnx*)
13063458e6c2Smrg		kernel=nto
13073458e6c2Smrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
13083458e6c2Smrg		;;
13093458e6c2Smrg	*-*)
13103458e6c2Smrg		# shellcheck disable=SC2162
13113458e6c2Smrg		saved_IFS=$IFS
13123458e6c2Smrg		IFS="-" read kernel os <<EOF
13133458e6c2Smrg$basic_os
13143458e6c2SmrgEOF
13153458e6c2Smrg		IFS=$saved_IFS
13163458e6c2Smrg		;;
13173458e6c2Smrg	# Default OS when just kernel was specified
13183458e6c2Smrg	nto*)
13193458e6c2Smrg		kernel=nto
13203458e6c2Smrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
13213458e6c2Smrg		;;
13223458e6c2Smrg	linux*)
13233458e6c2Smrg		kernel=linux
13243458e6c2Smrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
13253458e6c2Smrg		;;
1326c1e8faa6Smrg	managarm*)
1327c1e8faa6Smrg		kernel=managarm
1328c1e8faa6Smrg		os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
1329c1e8faa6Smrg		;;
13303458e6c2Smrg	*)
13313458e6c2Smrg		kernel=
13323458e6c2Smrg		os=$basic_os
13333458e6c2Smrg		;;
13343458e6c2Smrgesac
13353458e6c2Smrg
13363458e6c2Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
13373458e6c2Smrg# etc.)
13382c7c4e3dSmrgcase $os in
13393458e6c2Smrg	# First match some system type aliases that might get confused
13403458e6c2Smrg	# with valid system types.
13413458e6c2Smrg	# solaris* is a basic system type, with this one exception.
13423458e6c2Smrg	auroraux)
13433458e6c2Smrg		os=auroraux
134416d7e2f1Smrg		;;
13453458e6c2Smrg	bluegene*)
13463458e6c2Smrg		os=cnk
13472c7c4e3dSmrg		;;
13483458e6c2Smrg	solaris1 | solaris1.*)
13493458e6c2Smrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
13502c7c4e3dSmrg		;;
13513458e6c2Smrg	solaris)
13523458e6c2Smrg		os=solaris2
13532c7c4e3dSmrg		;;
13543458e6c2Smrg	unixware*)
13553458e6c2Smrg		os=sysv4.2uw
13562c7c4e3dSmrg		;;
13573458e6c2Smrg	# es1800 is here to avoid being matched by es* (a different OS)
13583458e6c2Smrg	es1800*)
13593458e6c2Smrg		os=ose
13602c7c4e3dSmrg		;;
13613458e6c2Smrg	# Some version numbers need modification
13623458e6c2Smrg	chorusos*)
13633458e6c2Smrg		os=chorusos
13642c7c4e3dSmrg		;;
13653458e6c2Smrg	isc)
13663458e6c2Smrg		os=isc2.2
13672c7c4e3dSmrg		;;
13683458e6c2Smrg	sco6)
13693458e6c2Smrg		os=sco5v6
13702c7c4e3dSmrg		;;
13713458e6c2Smrg	sco5)
13723458e6c2Smrg		os=sco3.2v5
13732c7c4e3dSmrg		;;
13743458e6c2Smrg	sco4)
13753458e6c2Smrg		os=sco3.2v4
13762c7c4e3dSmrg		;;
13773458e6c2Smrg	sco3.2.[4-9]*)
13783458e6c2Smrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
13798650bb69Smrg		;;
13803458e6c2Smrg	sco*v* | scout)
13813458e6c2Smrg		# Don't match below
13822c7c4e3dSmrg		;;
13833458e6c2Smrg	sco*)
13843458e6c2Smrg		os=sco3.2v2
13852c7c4e3dSmrg		;;
13863458e6c2Smrg	psos*)
13873458e6c2Smrg		os=psos
13882c7c4e3dSmrg		;;
13893458e6c2Smrg	qnx*)
13903458e6c2Smrg		os=qnx
13912c7c4e3dSmrg		;;
13923458e6c2Smrg	hiux*)
13933458e6c2Smrg		os=hiuxwe2
13948650bb69Smrg		;;
13953458e6c2Smrg	lynx*178)
13963458e6c2Smrg		os=lynxos178
13972c7c4e3dSmrg		;;
13983458e6c2Smrg	lynx*5)
13993458e6c2Smrg		os=lynxos5
14002c7c4e3dSmrg		;;
14013458e6c2Smrg	lynxos*)
14023458e6c2Smrg		# don't get caught up in next wildcard
14032c7c4e3dSmrg		;;
14043458e6c2Smrg	lynx*)
14053458e6c2Smrg		os=lynxos
14062c7c4e3dSmrg		;;
14073458e6c2Smrg	mac[0-9]*)
14083458e6c2Smrg		os=`echo "$os" | sed -e 's|mac|macos|'`
14092c7c4e3dSmrg		;;
14103458e6c2Smrg	opened*)
14113458e6c2Smrg		os=openedition
14122c7c4e3dSmrg		;;
14133458e6c2Smrg	os400*)
14143458e6c2Smrg		os=os400
14152c7c4e3dSmrg		;;
14163458e6c2Smrg	sunos5*)
14173458e6c2Smrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
14188650bb69Smrg		;;
14193458e6c2Smrg	sunos6*)
14203458e6c2Smrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
14212c7c4e3dSmrg		;;
14223458e6c2Smrg	wince*)
14233458e6c2Smrg		os=wince
14242c7c4e3dSmrg		;;
14253458e6c2Smrg	utek*)
14263458e6c2Smrg		os=bsd
14272c7c4e3dSmrg		;;
14283458e6c2Smrg	dynix*)
14293458e6c2Smrg		os=bsd
14302c7c4e3dSmrg		;;
14313458e6c2Smrg	acis*)
14323458e6c2Smrg		os=aos
14332c7c4e3dSmrg		;;
14343458e6c2Smrg	atheos*)
14353458e6c2Smrg		os=atheos
14362c7c4e3dSmrg		;;
14373458e6c2Smrg	syllable*)
14383458e6c2Smrg		os=syllable
14392c7c4e3dSmrg		;;
14403458e6c2Smrg	386bsd)
14413458e6c2Smrg		os=bsd
14428650bb69Smrg		;;
14433458e6c2Smrg	ctix* | uts*)
14443458e6c2Smrg		os=sysv
14452c7c4e3dSmrg		;;
14463458e6c2Smrg	nova*)
14473458e6c2Smrg		os=rtmk-nova
14482c7c4e3dSmrg		;;
14493458e6c2Smrg	ns2)
14503458e6c2Smrg		os=nextstep2
14512c7c4e3dSmrg		;;
14523458e6c2Smrg	# Preserve the version number of sinix5.
14533458e6c2Smrg	sinix5.*)
14543458e6c2Smrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
14552c7c4e3dSmrg		;;
14563458e6c2Smrg	sinix*)
14573458e6c2Smrg		os=sysv4
14582c7c4e3dSmrg		;;
14593458e6c2Smrg	tpf*)
14603458e6c2Smrg		os=tpf
14612c7c4e3dSmrg		;;
14623458e6c2Smrg	triton*)
14633458e6c2Smrg		os=sysv3
14642c7c4e3dSmrg		;;
14653458e6c2Smrg	oss*)
14663458e6c2Smrg		os=sysv3
14672c7c4e3dSmrg		;;
14683458e6c2Smrg	svr4*)
14693458e6c2Smrg		os=sysv4
14702c7c4e3dSmrg		;;
14713458e6c2Smrg	svr3)
14723458e6c2Smrg		os=sysv3
14732c7c4e3dSmrg		;;
14743458e6c2Smrg	sysvr4)
14753458e6c2Smrg		os=sysv4
14762c7c4e3dSmrg		;;
14773458e6c2Smrg	ose*)
14783458e6c2Smrg		os=ose
14798650bb69Smrg		;;
14803458e6c2Smrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
14813458e6c2Smrg		os=mint
14828650bb69Smrg		;;
14833458e6c2Smrg	dicos*)
14843458e6c2Smrg		os=dicos
14852becc446Smrg		;;
14863458e6c2Smrg	pikeos*)
14873458e6c2Smrg		# Until real need of OS specific support for
14883458e6c2Smrg		# particular features comes up, bare metal
14893458e6c2Smrg		# configurations are quite functional.
14903458e6c2Smrg		case $cpu in
14913458e6c2Smrg		    arm*)
14923458e6c2Smrg			os=eabi
14933458e6c2Smrg			;;
14943458e6c2Smrg		    *)
1495c1e8faa6Smrg			os=
1496c1e8faa6Smrg			obj=elf
14973458e6c2Smrg			;;
14983458e6c2Smrg		esac
14992c7c4e3dSmrg		;;
1500c1e8faa6Smrg	aout* | coff* | elf* | pe*)
1501c1e8faa6Smrg		# These are machine code file formats, not OSes
1502c1e8faa6Smrg		obj=$os
1503c1e8faa6Smrg		os=
1504c1e8faa6Smrg		;;
15052c7c4e3dSmrg	*)
15063458e6c2Smrg		# No normalization, but not necessarily accepted, that comes below.
15072c7c4e3dSmrg		;;
15082c7c4e3dSmrgesac
15093458e6c2Smrg
15102c7c4e3dSmrgelse
15112c7c4e3dSmrg
15122c7c4e3dSmrg# Here we handle the default operating systems that come with various machines.
15132c7c4e3dSmrg# The value should be what the vendor currently ships out the door with their
15142c7c4e3dSmrg# machine or put another way, the most popular os provided with the machine.
15152c7c4e3dSmrg
15162c7c4e3dSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
15172c7c4e3dSmrg# "-sun"), then you have to tell the case statement up towards the top
15182c7c4e3dSmrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
15192c7c4e3dSmrg# will signal an error saying that MANUFACTURER isn't an operating
15202c7c4e3dSmrg# system, and we'll never get to this point.
15212c7c4e3dSmrg
15223458e6c2Smrgkernel=
1523c1e8faa6Smrgobj=
15243458e6c2Smrgcase $cpu-$vendor in
15252becc446Smrg	score-*)
1526c1e8faa6Smrg		os=
1527c1e8faa6Smrg		obj=elf
15288650bb69Smrg		;;
15292becc446Smrg	spu-*)
1530c1e8faa6Smrg		os=
1531c1e8faa6Smrg		obj=elf
15328650bb69Smrg		;;
15332c7c4e3dSmrg	*-acorn)
15343458e6c2Smrg		os=riscix1.2
15352c7c4e3dSmrg		;;
15362c7c4e3dSmrg	arm*-rebel)
15373458e6c2Smrg		kernel=linux
15383458e6c2Smrg		os=gnu
15392c7c4e3dSmrg		;;
15402c7c4e3dSmrg	arm*-semi)
1541c1e8faa6Smrg		os=
1542c1e8faa6Smrg		obj=aout
15432c7c4e3dSmrg		;;
15442becc446Smrg	c4x-* | tic4x-*)
1545c1e8faa6Smrg		os=
1546c1e8faa6Smrg		obj=coff
15472becc446Smrg		;;
15482becc446Smrg	c8051-*)
1549c1e8faa6Smrg		os=
1550c1e8faa6Smrg		obj=elf
15513458e6c2Smrg		;;
15523458e6c2Smrg	clipper-intergraph)
15533458e6c2Smrg		os=clix
15542becc446Smrg		;;
15552becc446Smrg	hexagon-*)
1556c1e8faa6Smrg		os=
1557c1e8faa6Smrg		obj=elf
15582c7c4e3dSmrg		;;
155916d7e2f1Smrg	tic54x-*)
1560c1e8faa6Smrg		os=
1561c1e8faa6Smrg		obj=coff
156216d7e2f1Smrg		;;
156316d7e2f1Smrg	tic55x-*)
1564c1e8faa6Smrg		os=
1565c1e8faa6Smrg		obj=coff
156616d7e2f1Smrg		;;
156716d7e2f1Smrg	tic6x-*)
1568c1e8faa6Smrg		os=
1569c1e8faa6Smrg		obj=coff
157016d7e2f1Smrg		;;
15712c7c4e3dSmrg	# This must come before the *-dec entry.
15722c7c4e3dSmrg	pdp10-*)
15733458e6c2Smrg		os=tops20
15742c7c4e3dSmrg		;;
15752c7c4e3dSmrg	pdp11-*)
15763458e6c2Smrg		os=none
15772c7c4e3dSmrg		;;
15782c7c4e3dSmrg	*-dec | vax-*)
15793458e6c2Smrg		os=ultrix4.2
15802c7c4e3dSmrg		;;
15812c7c4e3dSmrg	m68*-apollo)
15823458e6c2Smrg		os=domain
15832c7c4e3dSmrg		;;
15842c7c4e3dSmrg	i386-sun)
15853458e6c2Smrg		os=sunos4.0.2
15862c7c4e3dSmrg		;;
15872c7c4e3dSmrg	m68000-sun)
15883458e6c2Smrg		os=sunos3
15892c7c4e3dSmrg		;;
15902c7c4e3dSmrg	m68*-cisco)
1591c1e8faa6Smrg		os=
1592c1e8faa6Smrg		obj=aout
15932c7c4e3dSmrg		;;
15942becc446Smrg	mep-*)
1595c1e8faa6Smrg		os=
1596c1e8faa6Smrg		obj=elf
15978650bb69Smrg		;;
15982c7c4e3dSmrg	mips*-cisco)
1599c1e8faa6Smrg		os=
1600c1e8faa6Smrg		obj=elf
16012c7c4e3dSmrg		;;
1602c1e8faa6Smrg	mips*-*|nanomips*-*)
1603c1e8faa6Smrg		os=
1604c1e8faa6Smrg		obj=elf
16052c7c4e3dSmrg		;;
16062c7c4e3dSmrg	or32-*)
1607c1e8faa6Smrg		os=
1608c1e8faa6Smrg		obj=coff
16092c7c4e3dSmrg		;;
16102c7c4e3dSmrg	*-tti)	# must be before sparc entry or we get the wrong os.
16113458e6c2Smrg		os=sysv3
16122c7c4e3dSmrg		;;
16132c7c4e3dSmrg	sparc-* | *-sun)
16143458e6c2Smrg		os=sunos4.1.1
16152c7c4e3dSmrg		;;
16163458e6c2Smrg	pru-*)
1617c1e8faa6Smrg		os=
1618c1e8faa6Smrg		obj=elf
16192c7c4e3dSmrg		;;
16203458e6c2Smrg	*-be)
16213458e6c2Smrg		os=beos
16228650bb69Smrg		;;
16232c7c4e3dSmrg	*-ibm)
16243458e6c2Smrg		os=aix
16252c7c4e3dSmrg		;;
16262becc446Smrg	*-knuth)
16273458e6c2Smrg		os=mmixware
16288650bb69Smrg		;;
16292c7c4e3dSmrg	*-wec)
16303458e6c2Smrg		os=proelf
16312c7c4e3dSmrg		;;
16322c7c4e3dSmrg	*-winbond)
16333458e6c2Smrg		os=proelf
16342c7c4e3dSmrg		;;
16352c7c4e3dSmrg	*-oki)
16363458e6c2Smrg		os=proelf
16372c7c4e3dSmrg		;;
16382c7c4e3dSmrg	*-hp)
16393458e6c2Smrg		os=hpux
16402c7c4e3dSmrg		;;
16412c7c4e3dSmrg	*-hitachi)
16423458e6c2Smrg		os=hiux
16432c7c4e3dSmrg		;;
16442c7c4e3dSmrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
16453458e6c2Smrg		os=sysv
16462c7c4e3dSmrg		;;
16472c7c4e3dSmrg	*-cbm)
16483458e6c2Smrg		os=amigaos
16492c7c4e3dSmrg		;;
16502c7c4e3dSmrg	*-dg)
16513458e6c2Smrg		os=dgux
16522c7c4e3dSmrg		;;
16532c7c4e3dSmrg	*-dolphin)
16543458e6c2Smrg		os=sysv3
16552c7c4e3dSmrg		;;
16562c7c4e3dSmrg	m68k-ccur)
16573458e6c2Smrg		os=rtu
16582c7c4e3dSmrg		;;
16592c7c4e3dSmrg	m88k-omron*)
16603458e6c2Smrg		os=luna
16612c7c4e3dSmrg		;;
16623458e6c2Smrg	*-next)
16633458e6c2Smrg		os=nextstep
16642c7c4e3dSmrg		;;
16652c7c4e3dSmrg	*-sequent)
16663458e6c2Smrg		os=ptx
16672c7c4e3dSmrg		;;
16682c7c4e3dSmrg	*-crds)
16693458e6c2Smrg		os=unos
16702c7c4e3dSmrg		;;
16712c7c4e3dSmrg	*-ns)
16723458e6c2Smrg		os=genix
16732c7c4e3dSmrg		;;
16742c7c4e3dSmrg	i370-*)
16753458e6c2Smrg		os=mvs
16762c7c4e3dSmrg		;;
16772c7c4e3dSmrg	*-gould)
16783458e6c2Smrg		os=sysv
16792c7c4e3dSmrg		;;
16802c7c4e3dSmrg	*-highlevel)
16813458e6c2Smrg		os=bsd
16822c7c4e3dSmrg		;;
16832c7c4e3dSmrg	*-encore)
16843458e6c2Smrg		os=bsd
16852c7c4e3dSmrg		;;
16862c7c4e3dSmrg	*-sgi)
16873458e6c2Smrg		os=irix
16882c7c4e3dSmrg		;;
16892c7c4e3dSmrg	*-siemens)
16903458e6c2Smrg		os=sysv4
16912c7c4e3dSmrg		;;
16922c7c4e3dSmrg	*-masscomp)
16933458e6c2Smrg		os=rtu
16942c7c4e3dSmrg		;;
16952c7c4e3dSmrg	f30[01]-fujitsu | f700-fujitsu)
16963458e6c2Smrg		os=uxpv
16972c7c4e3dSmrg		;;
16982c7c4e3dSmrg	*-rom68k)
1699c1e8faa6Smrg		os=
1700c1e8faa6Smrg		obj=coff
17012c7c4e3dSmrg		;;
17022c7c4e3dSmrg	*-*bug)
1703c1e8faa6Smrg		os=
1704c1e8faa6Smrg		obj=coff
17052c7c4e3dSmrg		;;
17062c7c4e3dSmrg	*-apple)
17073458e6c2Smrg		os=macos
17082c7c4e3dSmrg		;;
17092c7c4e3dSmrg	*-atari*)
17103458e6c2Smrg		os=mint
17113458e6c2Smrg		;;
17123458e6c2Smrg	*-wrs)
17133458e6c2Smrg		os=vxworks
17142c7c4e3dSmrg		;;
17152c7c4e3dSmrg	*)
17163458e6c2Smrg		os=none
17172c7c4e3dSmrg		;;
17182c7c4e3dSmrgesac
17193458e6c2Smrg
17202c7c4e3dSmrgfi
17212c7c4e3dSmrg
1722c1e8faa6Smrg# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ).
1723c1e8faa6Smrg
17243458e6c2Smrgcase $os in
17253458e6c2Smrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
1726c1e8faa6Smrg	llvm* | musl* | newlib* | relibc* | uclibc*)
17273458e6c2Smrg		;;
17283458e6c2Smrg	# Likewise for "kernel-abi"
17293458e6c2Smrg	eabi* | gnueabi*)
17303458e6c2Smrg		;;
17313458e6c2Smrg	# VxWorks passes extra cpu info in the 4th filed.
17323458e6c2Smrg	simlinux | simwindows | spe)
17333458e6c2Smrg		;;
1734c1e8faa6Smrg	# See `case $cpu-$os` validation below
1735c1e8faa6Smrg	ghcjs)
1736c1e8faa6Smrg		;;
17373458e6c2Smrg	# Now accept the basic system types.
17383458e6c2Smrg	# The portable systems comes first.
17393458e6c2Smrg	# Each alternative MUST end in a * to match a version number.
17403458e6c2Smrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
17413458e6c2Smrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
17423458e6c2Smrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
17433458e6c2Smrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
17443458e6c2Smrg	     | hiux* | abug | nacl* | netware* | windows* \
1745c1e8faa6Smrg	     | os9* | macos* | osx* | ios* | tvos* | watchos* \
17463458e6c2Smrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
17473458e6c2Smrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
17483458e6c2Smrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
17493458e6c2Smrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
17503458e6c2Smrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
17513458e6c2Smrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
17523458e6c2Smrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
17533458e6c2Smrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
1754c1e8faa6Smrg	     | bosx* | nextstep* | cxux* | oabi* \
1755c1e8faa6Smrg	     | ptx* | ecoff* | winnt* | domain* | vsta* \
17563458e6c2Smrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
17573458e6c2Smrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
1758c1e8faa6Smrg	     | cygwin* | msys* | moss* | proelf* | rtems* \
17593458e6c2Smrg	     | midipix* | mingw32* | mingw64* | mint* \
17603458e6c2Smrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
17613458e6c2Smrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
17623458e6c2Smrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
17633458e6c2Smrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
17643458e6c2Smrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
17653458e6c2Smrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
17663458e6c2Smrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
17673458e6c2Smrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
17683458e6c2Smrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
17693458e6c2Smrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
1770c1e8faa6Smrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
1771c1e8faa6Smrg	     | fiwix* | mlibc* | cos* | mbr* | ironclad* )
17723458e6c2Smrg		;;
17733458e6c2Smrg	# This one is extra strict with allowed versions
17743458e6c2Smrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
17753458e6c2Smrg		# Don't forget version if it is 3.2v4 or newer.
17763458e6c2Smrg		;;
1777c1e8faa6Smrg	# This refers to builds using the UEFI calling convention
1778c1e8faa6Smrg	# (which depends on the architecture) and PE file format.
1779c1e8faa6Smrg	# Note that this is both a different calling convention and
1780c1e8faa6Smrg	# different file format than that of GNU-EFI
1781c1e8faa6Smrg	# (x86_64-w64-mingw32).
1782c1e8faa6Smrg	uefi)
1783c1e8faa6Smrg		;;
17843458e6c2Smrg	none)
17853458e6c2Smrg		;;
1786c1e8faa6Smrg	kernel* | msvc* )
1787c1e8faa6Smrg		# Restricted further below
1788c1e8faa6Smrg		;;
1789c1e8faa6Smrg	'')
1790c1e8faa6Smrg		if test x"$obj" = x
1791c1e8faa6Smrg		then
1792c1e8faa6Smrg			echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
1793c1e8faa6Smrg		fi
1794c1e8faa6Smrg		;;
17953458e6c2Smrg	*)
1796c1e8faa6Smrg		echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
1797c1e8faa6Smrg		exit 1
1798c1e8faa6Smrg		;;
1799c1e8faa6Smrgesac
1800c1e8faa6Smrg
1801c1e8faa6Smrgcase $obj in
1802c1e8faa6Smrg	aout* | coff* | elf* | pe*)
1803c1e8faa6Smrg		;;
1804c1e8faa6Smrg	'')
1805c1e8faa6Smrg		# empty is fine
1806c1e8faa6Smrg		;;
1807c1e8faa6Smrg	*)
1808c1e8faa6Smrg		echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
1809c1e8faa6Smrg		exit 1
1810c1e8faa6Smrg		;;
1811c1e8faa6Smrgesac
1812c1e8faa6Smrg
1813c1e8faa6Smrg# Here we handle the constraint that a (synthetic) cpu and os are
1814c1e8faa6Smrg# valid only in combination with each other and nowhere else.
1815c1e8faa6Smrgcase $cpu-$os in
1816c1e8faa6Smrg	# The "javascript-unknown-ghcjs" triple is used by GHC; we
1817c1e8faa6Smrg	# accept it here in order to tolerate that, but reject any
1818c1e8faa6Smrg	# variations.
1819c1e8faa6Smrg	javascript-ghcjs)
1820c1e8faa6Smrg		;;
1821c1e8faa6Smrg	javascript-* | *-ghcjs)
1822c1e8faa6Smrg		echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
18233458e6c2Smrg		exit 1
18243458e6c2Smrg		;;
18253458e6c2Smrgesac
18263458e6c2Smrg
18273458e6c2Smrg# As a final step for OS-related things, validate the OS-kernel combination
18283458e6c2Smrg# (given a valid OS), if there is a kernel.
1829c1e8faa6Smrgcase $kernel-$os-$obj in
1830c1e8faa6Smrg	linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
1831c1e8faa6Smrg		    | linux-mlibc*- | linux-musl*- | linux-newlib*- \
1832c1e8faa6Smrg		    | linux-relibc*- | linux-uclibc*- )
1833c1e8faa6Smrg		;;
1834c1e8faa6Smrg	uclinux-uclibc*- )
1835c1e8faa6Smrg		;;
1836c1e8faa6Smrg	managarm-mlibc*- | managarm-kernel*- )
18373458e6c2Smrg		;;
1838c1e8faa6Smrg	windows*-msvc*-)
18393458e6c2Smrg		;;
1840c1e8faa6Smrg	-dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
1841c1e8faa6Smrg		    | -uclibc*- )
18423458e6c2Smrg		# These are just libc implementations, not actual OSes, and thus
18433458e6c2Smrg		# require a kernel.
1844c1e8faa6Smrg		echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
18453458e6c2Smrg		exit 1
18463458e6c2Smrg		;;
1847c1e8faa6Smrg	-kernel*- )
1848c1e8faa6Smrg		echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
1849c1e8faa6Smrg		exit 1
18503458e6c2Smrg		;;
1851c1e8faa6Smrg	*-kernel*- )
1852c1e8faa6Smrg		echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
1853c1e8faa6Smrg		exit 1
18543458e6c2Smrg		;;
1855c1e8faa6Smrg	*-msvc*- )
1856c1e8faa6Smrg		echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
1857c1e8faa6Smrg		exit 1
18583458e6c2Smrg		;;
1859c1e8faa6Smrg	kfreebsd*-gnu*- | kopensolaris*-gnu*-)
1860c1e8faa6Smrg		;;
1861c1e8faa6Smrg	vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
1862c1e8faa6Smrg		;;
1863c1e8faa6Smrg	nto-qnx*-)
1864c1e8faa6Smrg		;;
1865c1e8faa6Smrg	os2-emx-)
18663458e6c2Smrg		;;
1867c1e8faa6Smrg	*-eabi*- | *-gnueabi*-)
18683458e6c2Smrg		;;
1869c1e8faa6Smrg	none--*)
1870c1e8faa6Smrg		# None (no kernel, i.e. freestanding / bare metal),
1871c1e8faa6Smrg		# can be paired with an machine code file format
1872c1e8faa6Smrg		;;
1873c1e8faa6Smrg	-*-)
18743458e6c2Smrg		# Blank kernel with real OS is always fine.
18753458e6c2Smrg		;;
1876c1e8faa6Smrg	--*)
1877c1e8faa6Smrg		# Blank kernel and OS with real machine code file format is always fine.
1878c1e8faa6Smrg		;;
1879c1e8faa6Smrg	*-*-*)
1880c1e8faa6Smrg		echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
18813458e6c2Smrg		exit 1
18823458e6c2Smrg		;;
18833458e6c2Smrgesac
18843458e6c2Smrg
18852c7c4e3dSmrg# Here we handle the case where we know the os, and the CPU type, but not the
18862c7c4e3dSmrg# manufacturer.  We pick the logical manufacturer.
18873458e6c2Smrgcase $vendor in
18883458e6c2Smrg	unknown)
18893458e6c2Smrg		case $cpu-$os in
18903458e6c2Smrg			*-riscix*)
18912c7c4e3dSmrg				vendor=acorn
18922c7c4e3dSmrg				;;
18933458e6c2Smrg			*-sunos*)
18942c7c4e3dSmrg				vendor=sun
18952c7c4e3dSmrg				;;
18963458e6c2Smrg			*-cnk* | *-aix*)
18972c7c4e3dSmrg				vendor=ibm
18982c7c4e3dSmrg				;;
18993458e6c2Smrg			*-beos*)
19002c7c4e3dSmrg				vendor=be
19012c7c4e3dSmrg				;;
19023458e6c2Smrg			*-hpux*)
19032c7c4e3dSmrg				vendor=hp
19042c7c4e3dSmrg				;;
19053458e6c2Smrg			*-mpeix*)
19062c7c4e3dSmrg				vendor=hp
19072c7c4e3dSmrg				;;
19083458e6c2Smrg			*-hiux*)
19092c7c4e3dSmrg				vendor=hitachi
19102c7c4e3dSmrg				;;
19113458e6c2Smrg			*-unos*)
19122c7c4e3dSmrg				vendor=crds
19132c7c4e3dSmrg				;;
19143458e6c2Smrg			*-dgux*)
19152c7c4e3dSmrg				vendor=dg
19162c7c4e3dSmrg				;;
19173458e6c2Smrg			*-luna*)
19182c7c4e3dSmrg				vendor=omron
19192c7c4e3dSmrg				;;
19203458e6c2Smrg			*-genix*)
19212c7c4e3dSmrg				vendor=ns
19222c7c4e3dSmrg				;;
19233458e6c2Smrg			*-clix*)
19243458e6c2Smrg				vendor=intergraph
19253458e6c2Smrg				;;
19263458e6c2Smrg			*-mvs* | *-opened*)
19273458e6c2Smrg				vendor=ibm
19283458e6c2Smrg				;;
19293458e6c2Smrg			*-os400*)
19302c7c4e3dSmrg				vendor=ibm
19312c7c4e3dSmrg				;;
19323458e6c2Smrg			s390-* | s390x-*)
19338650bb69Smrg				vendor=ibm
19348650bb69Smrg				;;
19353458e6c2Smrg			*-ptx*)
19362c7c4e3dSmrg				vendor=sequent
19372c7c4e3dSmrg				;;
19383458e6c2Smrg			*-tpf*)
19398650bb69Smrg				vendor=ibm
19408650bb69Smrg				;;
19413458e6c2Smrg			*-vxsim* | *-vxworks* | *-windiss*)
19422c7c4e3dSmrg				vendor=wrs
19432c7c4e3dSmrg				;;
19443458e6c2Smrg			*-aux*)
19452c7c4e3dSmrg				vendor=apple
19462c7c4e3dSmrg				;;
19473458e6c2Smrg			*-hms*)
19482c7c4e3dSmrg				vendor=hitachi
19492c7c4e3dSmrg				;;
19503458e6c2Smrg			*-mpw* | *-macos*)
19512c7c4e3dSmrg				vendor=apple
19522c7c4e3dSmrg				;;
19533458e6c2Smrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
19542c7c4e3dSmrg				vendor=atari
19552c7c4e3dSmrg				;;
19563458e6c2Smrg			*-vos*)
19572c7c4e3dSmrg				vendor=stratus
19582c7c4e3dSmrg				;;
19592c7c4e3dSmrg		esac
19602c7c4e3dSmrg		;;
19612c7c4e3dSmrgesac
19622c7c4e3dSmrg
1963c1e8faa6Smrgecho "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
19648650bb69Smrgexit
19652c7c4e3dSmrg
19662c7c4e3dSmrg# Local variables:
19673458e6c2Smrg# eval: (add-hook 'before-save-hook 'time-stamp)
19682c7c4e3dSmrg# time-stamp-start: "timestamp='"
19692c7c4e3dSmrg# time-stamp-format: "%:y-%02m-%02d"
19702c7c4e3dSmrg# time-stamp-end: "'"
19712c7c4e3dSmrg# End:
1972