17a0395d0Smrg#! /bin/sh
27a0395d0Smrg# Configuration validation subroutine script.
3f6d57fdeSmrg#   Copyright 1992-2024 Free Software Foundation, Inc.
47a0395d0Smrg
5273c00b8Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale
6273c00b8Smrg
7f6d57fdeSmrgtimestamp='2024-01-01'
87a0395d0Smrg
99a011757Smrg# This file is free software; you can redistribute it and/or modify it
109a011757Smrg# under the terms of the GNU General Public License as published by
11273c00b8Smrg# the Free Software Foundation, either version 3 of the License, or
127a0395d0Smrg# (at your option) any later version.
137a0395d0Smrg#
149a011757Smrg# This program is distributed in the hope that it will be useful, but
159a011757Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
169a011757Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
179a011757Smrg# General Public License for more details.
187a0395d0Smrg#
197a0395d0Smrg# You should have received a copy of the GNU General Public License
206c3c2bceSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
217a0395d0Smrg#
227a0395d0Smrg# As a special exception to the GNU General Public License, if you
237a0395d0Smrg# distribute this file as part of a program that contains a
247a0395d0Smrg# configuration script generated by Autoconf, you may include it under
259a011757Smrg# the same distribution terms that you use for the rest of that
269a011757Smrg# program.  This Exception is an additional permission under section 7
279a011757Smrg# of the GNU General Public License, version 3 ("GPLv3").
287a0395d0Smrg
297a0395d0Smrg
3040c5344fSmrg# Please send patches to <config-patches@gnu.org>.
317a0395d0Smrg#
327a0395d0Smrg# Configuration subroutine to validate and canonicalize a configuration type.
337a0395d0Smrg# Supply the specified configuration type as an argument.
347a0395d0Smrg# If it is invalid, we print an error message on stderr and exit with code 1.
357a0395d0Smrg# Otherwise, we print the canonical config type on stdout and succeed.
367a0395d0Smrg
372adc0320Smrg# You can get the latest version of this script from:
38765b7306Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
392adc0320Smrg
407a0395d0Smrg# This file is supposed to be the same for all GNU packages
417a0395d0Smrg# and recognize all the CPU types, system types and aliases
427a0395d0Smrg# that are meaningful with *any* GNU software.
437a0395d0Smrg# Each package is responsible for reporting which valid configurations
447a0395d0Smrg# it does not support.  The user should be able to distinguish
457a0395d0Smrg# a failure to support a valid configuration from a meaningless
467a0395d0Smrg# configuration.
477a0395d0Smrg
487a0395d0Smrg# The goal of this file is to map all the various variations of a given
497a0395d0Smrg# machine specification into a single specification in the form:
507a0395d0Smrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
517a0395d0Smrg# or in some cases, the newer four-part form:
527a0395d0Smrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
537a0395d0Smrg# It is wrong to echo any other type of specification.
547a0395d0Smrg
55273c00b8Smrg# The "shellcheck disable" line above the timestamp inhibits complaints
56273c00b8Smrg# about features and limitations of the classic Bourne shell that were
57273c00b8Smrg# superseded or lifted in POSIX.  However, this script identifies a wide
58273c00b8Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
59273c00b8Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still
60273c00b8Smrg# have a pre-POSIX /bin/sh.
61273c00b8Smrg
62273c00b8Smrgme=`echo "$0" | sed -e 's,.*/,,'`
637a0395d0Smrg
647a0395d0Smrgusage="\
6540c5344fSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
667a0395d0Smrg
677a0395d0SmrgCanonicalize a configuration name.
687a0395d0Smrg
696c3c2bceSmrgOptions:
707a0395d0Smrg  -h, --help         print this help, then exit
717a0395d0Smrg  -t, --time-stamp   print date of last modification, then exit
727a0395d0Smrg  -v, --version      print version number, then exit
737a0395d0Smrg
747a0395d0SmrgReport bugs and patches to <config-patches@gnu.org>."
757a0395d0Smrg
767a0395d0Smrgversion="\
777a0395d0SmrgGNU config.sub ($timestamp)
787a0395d0Smrg
79f6d57fdeSmrgCopyright 1992-2024 Free Software Foundation, Inc.
807a0395d0Smrg
817a0395d0SmrgThis is free software; see the source for copying conditions.  There is NO
827a0395d0Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
837a0395d0Smrg
847a0395d0Smrghelp="
85f6d57fdeSmrgTry '$me --help' for more information."
867a0395d0Smrg
877a0395d0Smrg# Parse command line
887a0395d0Smrgwhile test $# -gt 0 ; do
897a0395d0Smrg  case $1 in
907a0395d0Smrg    --time-stamp | --time* | -t )
917a0395d0Smrg       echo "$timestamp" ; exit ;;
927a0395d0Smrg    --version | -v )
937a0395d0Smrg       echo "$version" ; exit ;;
947a0395d0Smrg    --help | --h* | -h )
957a0395d0Smrg       echo "$usage"; exit ;;
967a0395d0Smrg    -- )     # Stop option processing
977a0395d0Smrg       shift; break ;;
987a0395d0Smrg    - )	# Use stdin as input.
997a0395d0Smrg       break ;;
1007a0395d0Smrg    -* )
1010d22642bSmrg       echo "$me: invalid option $1$help" >&2
1027a0395d0Smrg       exit 1 ;;
1037a0395d0Smrg
1047a0395d0Smrg    *local*)
1057a0395d0Smrg       # First pass through any local machine types.
1066c3c2bceSmrg       echo "$1"
1077a0395d0Smrg       exit ;;
1087a0395d0Smrg
1097a0395d0Smrg    * )
1107a0395d0Smrg       break ;;
1117a0395d0Smrg  esac
1127a0395d0Smrgdone
1137a0395d0Smrg
1147a0395d0Smrgcase $# in
1157a0395d0Smrg 0) echo "$me: missing argument$help" >&2
1167a0395d0Smrg    exit 1;;
1177a0395d0Smrg 1) ;;
1187a0395d0Smrg *) echo "$me: too many arguments$help" >&2
1197a0395d0Smrg    exit 1;;
1207a0395d0Smrgesac
1217a0395d0Smrg
1226c3c2bceSmrg# Split fields of configuration type
1230d22642bSmrg# shellcheck disable=SC2162
124273c00b8Smrgsaved_IFS=$IFS
1250d22642bSmrgIFS="-" read field1 field2 field3 field4 <<EOF
1266c3c2bceSmrg$1
1276c3c2bceSmrgEOF
128273c00b8SmrgIFS=$saved_IFS
1297a0395d0Smrg
1306c3c2bceSmrg# Separate into logical components for further validation
1316c3c2bceSmrgcase $1 in
1326c3c2bceSmrg	*-*-*-*-*)
133f6d57fdeSmrg		echo "Invalid configuration '$1': more than four components" >&2
1346c3c2bceSmrg		exit 1
1357a0395d0Smrg		;;
1366c3c2bceSmrg	*-*-*-*)
1376c3c2bceSmrg		basic_machine=$field1-$field2
1380d22642bSmrg		basic_os=$field3-$field4
1397a0395d0Smrg		;;
1406c3c2bceSmrg	*-*-*)
1416c3c2bceSmrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
1426c3c2bceSmrg		# parts
1436c3c2bceSmrg		maybe_os=$field2-$field3
1446c3c2bceSmrg		case $maybe_os in
1450d22642bSmrg			nto-qnx* | linux-* | uclinux-uclibc* \
1466c3c2bceSmrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
1476c3c2bceSmrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
148f6d57fdeSmrg			| storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \
149f6d57fdeSmrg			| windows-* )
1506c3c2bceSmrg				basic_machine=$field1
1510d22642bSmrg				basic_os=$maybe_os
1526c3c2bceSmrg				;;
1536c3c2bceSmrg			android-linux)
1546c3c2bceSmrg				basic_machine=$field1-unknown
1550d22642bSmrg				basic_os=linux-android
1566c3c2bceSmrg				;;
1576c3c2bceSmrg			*)
1586c3c2bceSmrg				basic_machine=$field1-$field2
1590d22642bSmrg				basic_os=$field3
1606c3c2bceSmrg				;;
1616c3c2bceSmrg		esac
1627a0395d0Smrg		;;
1636c3c2bceSmrg	*-*)
1640d22642bSmrg		# A lone config we happen to match not fitting any pattern
1656c3c2bceSmrg		case $field1-$field2 in
1666c3c2bceSmrg			decstation-3100)
1676c3c2bceSmrg				basic_machine=mips-dec
1680d22642bSmrg				basic_os=
1696c3c2bceSmrg				;;
1706c3c2bceSmrg			*-*)
1716c3c2bceSmrg				# Second component is usually, but not always the OS
1726c3c2bceSmrg				case $field2 in
1736c3c2bceSmrg					# Prevent following clause from handling this valid os
1746c3c2bceSmrg					sun*os*)
1756c3c2bceSmrg						basic_machine=$field1
1760d22642bSmrg						basic_os=$field2
1776c3c2bceSmrg						;;
178273c00b8Smrg					zephyr*)
179273c00b8Smrg						basic_machine=$field1-unknown
180273c00b8Smrg						basic_os=$field2
181273c00b8Smrg						;;
1826c3c2bceSmrg					# Manufacturers
1836c3c2bceSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
1846c3c2bceSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
1856c3c2bceSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
1866c3c2bceSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
1876c3c2bceSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
1886c3c2bceSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
1896c3c2bceSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
1906c3c2bceSmrg					| microblaze* | sim | cisco \
1916c3c2bceSmrg					| oki | wec | wrs | winbond)
1926c3c2bceSmrg						basic_machine=$field1-$field2
1930d22642bSmrg						basic_os=
1946c3c2bceSmrg						;;
1956c3c2bceSmrg					*)
1966c3c2bceSmrg						basic_machine=$field1
1970d22642bSmrg						basic_os=$field2
1986c3c2bceSmrg						;;
1996c3c2bceSmrg				esac
2006c3c2bceSmrg			;;
2016c3c2bceSmrg		esac
2027a0395d0Smrg		;;
2036c3c2bceSmrg	*)
2046c3c2bceSmrg		# Convert single-component short-hands not valid as part of
2056c3c2bceSmrg		# multi-component configurations.
2066c3c2bceSmrg		case $field1 in
2076c3c2bceSmrg			386bsd)
2086c3c2bceSmrg				basic_machine=i386-pc
2090d22642bSmrg				basic_os=bsd
2106c3c2bceSmrg				;;
2116c3c2bceSmrg			a29khif)
2126c3c2bceSmrg				basic_machine=a29k-amd
2130d22642bSmrg				basic_os=udi
2146c3c2bceSmrg				;;
2156c3c2bceSmrg			adobe68k)
2166c3c2bceSmrg				basic_machine=m68010-adobe
2170d22642bSmrg				basic_os=scout
2186c3c2bceSmrg				;;
2196c3c2bceSmrg			alliant)
2206c3c2bceSmrg				basic_machine=fx80-alliant
2210d22642bSmrg				basic_os=
2226c3c2bceSmrg				;;
2236c3c2bceSmrg			altos | altos3068)
2246c3c2bceSmrg				basic_machine=m68k-altos
2250d22642bSmrg				basic_os=
2266c3c2bceSmrg				;;
2276c3c2bceSmrg			am29k)
2286c3c2bceSmrg				basic_machine=a29k-none
2290d22642bSmrg				basic_os=bsd
2306c3c2bceSmrg				;;
2316c3c2bceSmrg			amdahl)
2326c3c2bceSmrg				basic_machine=580-amdahl
2330d22642bSmrg				basic_os=sysv
2346c3c2bceSmrg				;;
2356c3c2bceSmrg			amiga)
2366c3c2bceSmrg				basic_machine=m68k-unknown
2370d22642bSmrg				basic_os=
2386c3c2bceSmrg				;;
2396c3c2bceSmrg			amigaos | amigados)
2406c3c2bceSmrg				basic_machine=m68k-unknown
2410d22642bSmrg				basic_os=amigaos
2426c3c2bceSmrg				;;
2436c3c2bceSmrg			amigaunix | amix)
2446c3c2bceSmrg				basic_machine=m68k-unknown
2450d22642bSmrg				basic_os=sysv4
2466c3c2bceSmrg				;;
2476c3c2bceSmrg			apollo68)
2486c3c2bceSmrg				basic_machine=m68k-apollo
2490d22642bSmrg				basic_os=sysv
2506c3c2bceSmrg				;;
2516c3c2bceSmrg			apollo68bsd)
2526c3c2bceSmrg				basic_machine=m68k-apollo
2530d22642bSmrg				basic_os=bsd
2546c3c2bceSmrg				;;
2556c3c2bceSmrg			aros)
2566c3c2bceSmrg				basic_machine=i386-pc
2570d22642bSmrg				basic_os=aros
2586c3c2bceSmrg				;;
2596c3c2bceSmrg			aux)
2606c3c2bceSmrg				basic_machine=m68k-apple
2610d22642bSmrg				basic_os=aux
2626c3c2bceSmrg				;;
2636c3c2bceSmrg			balance)
2646c3c2bceSmrg				basic_machine=ns32k-sequent
2650d22642bSmrg				basic_os=dynix
2666c3c2bceSmrg				;;
2676c3c2bceSmrg			blackfin)
2686c3c2bceSmrg				basic_machine=bfin-unknown
2690d22642bSmrg				basic_os=linux
2706c3c2bceSmrg				;;
2716c3c2bceSmrg			cegcc)
2726c3c2bceSmrg				basic_machine=arm-unknown
2730d22642bSmrg				basic_os=cegcc
2746c3c2bceSmrg				;;
2756c3c2bceSmrg			convex-c1)
2766c3c2bceSmrg				basic_machine=c1-convex
2770d22642bSmrg				basic_os=bsd
2786c3c2bceSmrg				;;
2796c3c2bceSmrg			convex-c2)
2806c3c2bceSmrg				basic_machine=c2-convex
2810d22642bSmrg				basic_os=bsd
2826c3c2bceSmrg				;;
2836c3c2bceSmrg			convex-c32)
2846c3c2bceSmrg				basic_machine=c32-convex
2850d22642bSmrg				basic_os=bsd
2866c3c2bceSmrg				;;
2876c3c2bceSmrg			convex-c34)
2886c3c2bceSmrg				basic_machine=c34-convex
2890d22642bSmrg				basic_os=bsd
2906c3c2bceSmrg				;;
2916c3c2bceSmrg			convex-c38)
2926c3c2bceSmrg				basic_machine=c38-convex
2930d22642bSmrg				basic_os=bsd
2946c3c2bceSmrg				;;
2956c3c2bceSmrg			cray)
2966c3c2bceSmrg				basic_machine=j90-cray
2970d22642bSmrg				basic_os=unicos
2986c3c2bceSmrg				;;
2996c3c2bceSmrg			crds | unos)
3006c3c2bceSmrg				basic_machine=m68k-crds
3010d22642bSmrg				basic_os=
3026c3c2bceSmrg				;;
3036c3c2bceSmrg			da30)
3046c3c2bceSmrg				basic_machine=m68k-da30
3050d22642bSmrg				basic_os=
3066c3c2bceSmrg				;;
3076c3c2bceSmrg			decstation | pmax | pmin | dec3100 | decstatn)
3086c3c2bceSmrg				basic_machine=mips-dec
3090d22642bSmrg				basic_os=
3106c3c2bceSmrg				;;
3116c3c2bceSmrg			delta88)
3126c3c2bceSmrg				basic_machine=m88k-motorola
3130d22642bSmrg				basic_os=sysv3
3146c3c2bceSmrg				;;
3156c3c2bceSmrg			dicos)
3166c3c2bceSmrg				basic_machine=i686-pc
3170d22642bSmrg				basic_os=dicos
3186c3c2bceSmrg				;;
3196c3c2bceSmrg			djgpp)
3206c3c2bceSmrg				basic_machine=i586-pc
3210d22642bSmrg				basic_os=msdosdjgpp
3226c3c2bceSmrg				;;
3236c3c2bceSmrg			ebmon29k)
3246c3c2bceSmrg				basic_machine=a29k-amd
3250d22642bSmrg				basic_os=ebmon
3266c3c2bceSmrg				;;
3276c3c2bceSmrg			es1800 | OSE68k | ose68k | ose | OSE)
3286c3c2bceSmrg				basic_machine=m68k-ericsson
3290d22642bSmrg				basic_os=ose
3306c3c2bceSmrg				;;
3316c3c2bceSmrg			gmicro)
3326c3c2bceSmrg				basic_machine=tron-gmicro
3330d22642bSmrg				basic_os=sysv
3346c3c2bceSmrg				;;
3356c3c2bceSmrg			go32)
3366c3c2bceSmrg				basic_machine=i386-pc
3370d22642bSmrg				basic_os=go32
3386c3c2bceSmrg				;;
3396c3c2bceSmrg			h8300hms)
3406c3c2bceSmrg				basic_machine=h8300-hitachi
3410d22642bSmrg				basic_os=hms
3426c3c2bceSmrg				;;
3436c3c2bceSmrg			h8300xray)
3446c3c2bceSmrg				basic_machine=h8300-hitachi
3450d22642bSmrg				basic_os=xray
3466c3c2bceSmrg				;;
3476c3c2bceSmrg			h8500hms)
3486c3c2bceSmrg				basic_machine=h8500-hitachi
3490d22642bSmrg				basic_os=hms
3506c3c2bceSmrg				;;
3516c3c2bceSmrg			harris)
3526c3c2bceSmrg				basic_machine=m88k-harris
3530d22642bSmrg				basic_os=sysv3
3546c3c2bceSmrg				;;
3550d22642bSmrg			hp300 | hp300hpux)
3566c3c2bceSmrg				basic_machine=m68k-hp
3570d22642bSmrg				basic_os=hpux
3586c3c2bceSmrg				;;
3596c3c2bceSmrg			hp300bsd)
3606c3c2bceSmrg				basic_machine=m68k-hp
3610d22642bSmrg				basic_os=bsd
3626c3c2bceSmrg				;;
3636c3c2bceSmrg			hppaosf)
3646c3c2bceSmrg				basic_machine=hppa1.1-hp
3650d22642bSmrg				basic_os=osf
3666c3c2bceSmrg				;;
3676c3c2bceSmrg			hppro)
3686c3c2bceSmrg				basic_machine=hppa1.1-hp
3690d22642bSmrg				basic_os=proelf
3706c3c2bceSmrg				;;
3716c3c2bceSmrg			i386mach)
3726c3c2bceSmrg				basic_machine=i386-mach
3730d22642bSmrg				basic_os=mach
3746c3c2bceSmrg				;;
3756c3c2bceSmrg			isi68 | isi)
3766c3c2bceSmrg				basic_machine=m68k-isi
3770d22642bSmrg				basic_os=sysv
3786c3c2bceSmrg				;;
3796c3c2bceSmrg			m68knommu)
3806c3c2bceSmrg				basic_machine=m68k-unknown
3810d22642bSmrg				basic_os=linux
3826c3c2bceSmrg				;;
3836c3c2bceSmrg			magnum | m3230)
3846c3c2bceSmrg				basic_machine=mips-mips
3850d22642bSmrg				basic_os=sysv
3866c3c2bceSmrg				;;
3876c3c2bceSmrg			merlin)
3886c3c2bceSmrg				basic_machine=ns32k-utek
3890d22642bSmrg				basic_os=sysv
3906c3c2bceSmrg				;;
3916c3c2bceSmrg			mingw64)
3926c3c2bceSmrg				basic_machine=x86_64-pc
3930d22642bSmrg				basic_os=mingw64
3946c3c2bceSmrg				;;
3956c3c2bceSmrg			mingw32)
3966c3c2bceSmrg				basic_machine=i686-pc
3970d22642bSmrg				basic_os=mingw32
3986c3c2bceSmrg				;;
3996c3c2bceSmrg			mingw32ce)
4006c3c2bceSmrg				basic_machine=arm-unknown
4010d22642bSmrg				basic_os=mingw32ce
4026c3c2bceSmrg				;;
4036c3c2bceSmrg			monitor)
4046c3c2bceSmrg				basic_machine=m68k-rom68k
4050d22642bSmrg				basic_os=coff
4066c3c2bceSmrg				;;
4076c3c2bceSmrg			morphos)
4086c3c2bceSmrg				basic_machine=powerpc-unknown
4090d22642bSmrg				basic_os=morphos
4106c3c2bceSmrg				;;
4116c3c2bceSmrg			moxiebox)
4126c3c2bceSmrg				basic_machine=moxie-unknown
4130d22642bSmrg				basic_os=moxiebox
4146c3c2bceSmrg				;;
4156c3c2bceSmrg			msdos)
4166c3c2bceSmrg				basic_machine=i386-pc
4170d22642bSmrg				basic_os=msdos
4186c3c2bceSmrg				;;
4196c3c2bceSmrg			msys)
4206c3c2bceSmrg				basic_machine=i686-pc
4210d22642bSmrg				basic_os=msys
4226c3c2bceSmrg				;;
4236c3c2bceSmrg			mvs)
4246c3c2bceSmrg				basic_machine=i370-ibm
4250d22642bSmrg				basic_os=mvs
4266c3c2bceSmrg				;;
4276c3c2bceSmrg			nacl)
4286c3c2bceSmrg				basic_machine=le32-unknown
4290d22642bSmrg				basic_os=nacl
4306c3c2bceSmrg				;;
4316c3c2bceSmrg			ncr3000)
4326c3c2bceSmrg				basic_machine=i486-ncr
4330d22642bSmrg				basic_os=sysv4
4346c3c2bceSmrg				;;
4356c3c2bceSmrg			netbsd386)
4366c3c2bceSmrg				basic_machine=i386-pc
4370d22642bSmrg				basic_os=netbsd
4386c3c2bceSmrg				;;
4396c3c2bceSmrg			netwinder)
4406c3c2bceSmrg				basic_machine=armv4l-rebel
4410d22642bSmrg				basic_os=linux
4426c3c2bceSmrg				;;
4436c3c2bceSmrg			news | news700 | news800 | news900)
4446c3c2bceSmrg				basic_machine=m68k-sony
4450d22642bSmrg				basic_os=newsos
4466c3c2bceSmrg				;;
4476c3c2bceSmrg			news1000)
4486c3c2bceSmrg				basic_machine=m68030-sony
4490d22642bSmrg				basic_os=newsos
4506c3c2bceSmrg				;;
4516c3c2bceSmrg			necv70)
4526c3c2bceSmrg				basic_machine=v70-nec
4530d22642bSmrg				basic_os=sysv
4546c3c2bceSmrg				;;
4556c3c2bceSmrg			nh3000)
4566c3c2bceSmrg				basic_machine=m68k-harris
4570d22642bSmrg				basic_os=cxux
4586c3c2bceSmrg				;;
4596c3c2bceSmrg			nh[45]000)
4606c3c2bceSmrg				basic_machine=m88k-harris
4610d22642bSmrg				basic_os=cxux
4626c3c2bceSmrg				;;
4636c3c2bceSmrg			nindy960)
4646c3c2bceSmrg				basic_machine=i960-intel
4650d22642bSmrg				basic_os=nindy
4666c3c2bceSmrg				;;
4676c3c2bceSmrg			mon960)
4686c3c2bceSmrg				basic_machine=i960-intel
4690d22642bSmrg				basic_os=mon960
4706c3c2bceSmrg				;;
4716c3c2bceSmrg			nonstopux)
4726c3c2bceSmrg				basic_machine=mips-compaq
4730d22642bSmrg				basic_os=nonstopux
4746c3c2bceSmrg				;;
4756c3c2bceSmrg			os400)
4766c3c2bceSmrg				basic_machine=powerpc-ibm
4770d22642bSmrg				basic_os=os400
4786c3c2bceSmrg				;;
4796c3c2bceSmrg			OSE68000 | ose68000)
4806c3c2bceSmrg				basic_machine=m68000-ericsson
4810d22642bSmrg				basic_os=ose
4826c3c2bceSmrg				;;
4836c3c2bceSmrg			os68k)
4846c3c2bceSmrg				basic_machine=m68k-none
4850d22642bSmrg				basic_os=os68k
4866c3c2bceSmrg				;;
4876c3c2bceSmrg			paragon)
4886c3c2bceSmrg				basic_machine=i860-intel
4890d22642bSmrg				basic_os=osf
4906c3c2bceSmrg				;;
4916c3c2bceSmrg			parisc)
4926c3c2bceSmrg				basic_machine=hppa-unknown
4930d22642bSmrg				basic_os=linux
4940d22642bSmrg				;;
4950d22642bSmrg			psp)
4960d22642bSmrg				basic_machine=mipsallegrexel-sony
4970d22642bSmrg				basic_os=psp
4986c3c2bceSmrg				;;
4996c3c2bceSmrg			pw32)
5006c3c2bceSmrg				basic_machine=i586-unknown
5010d22642bSmrg				basic_os=pw32
5026c3c2bceSmrg				;;
5036c3c2bceSmrg			rdos | rdos64)
5046c3c2bceSmrg				basic_machine=x86_64-pc
5050d22642bSmrg				basic_os=rdos
5066c3c2bceSmrg				;;
5076c3c2bceSmrg			rdos32)
5086c3c2bceSmrg				basic_machine=i386-pc
5090d22642bSmrg				basic_os=rdos
5106c3c2bceSmrg				;;
5116c3c2bceSmrg			rom68k)
5126c3c2bceSmrg				basic_machine=m68k-rom68k
5130d22642bSmrg				basic_os=coff
5146c3c2bceSmrg				;;
5156c3c2bceSmrg			sa29200)
5166c3c2bceSmrg				basic_machine=a29k-amd
5170d22642bSmrg				basic_os=udi
5186c3c2bceSmrg				;;
5196c3c2bceSmrg			sei)
5206c3c2bceSmrg				basic_machine=mips-sei
5210d22642bSmrg				basic_os=seiux
5226c3c2bceSmrg				;;
5236c3c2bceSmrg			sequent)
5246c3c2bceSmrg				basic_machine=i386-sequent
5250d22642bSmrg				basic_os=
5266c3c2bceSmrg				;;
5276c3c2bceSmrg			sps7)
5286c3c2bceSmrg				basic_machine=m68k-bull
5290d22642bSmrg				basic_os=sysv2
5306c3c2bceSmrg				;;
5316c3c2bceSmrg			st2000)
5326c3c2bceSmrg				basic_machine=m68k-tandem
5330d22642bSmrg				basic_os=
5346c3c2bceSmrg				;;
5356c3c2bceSmrg			stratus)
5366c3c2bceSmrg				basic_machine=i860-stratus
5370d22642bSmrg				basic_os=sysv4
5386c3c2bceSmrg				;;
5396c3c2bceSmrg			sun2)
5406c3c2bceSmrg				basic_machine=m68000-sun
5410d22642bSmrg				basic_os=
5426c3c2bceSmrg				;;
5436c3c2bceSmrg			sun2os3)
5446c3c2bceSmrg				basic_machine=m68000-sun
5450d22642bSmrg				basic_os=sunos3
5466c3c2bceSmrg				;;
5476c3c2bceSmrg			sun2os4)
5486c3c2bceSmrg				basic_machine=m68000-sun
5490d22642bSmrg				basic_os=sunos4
5506c3c2bceSmrg				;;
5516c3c2bceSmrg			sun3)
5526c3c2bceSmrg				basic_machine=m68k-sun
5530d22642bSmrg				basic_os=
5546c3c2bceSmrg				;;
5556c3c2bceSmrg			sun3os3)
5566c3c2bceSmrg				basic_machine=m68k-sun
5570d22642bSmrg				basic_os=sunos3
5586c3c2bceSmrg				;;
5596c3c2bceSmrg			sun3os4)
5606c3c2bceSmrg				basic_machine=m68k-sun
5610d22642bSmrg				basic_os=sunos4
5626c3c2bceSmrg				;;
5636c3c2bceSmrg			sun4)
5646c3c2bceSmrg				basic_machine=sparc-sun
5650d22642bSmrg				basic_os=
5666c3c2bceSmrg				;;
5676c3c2bceSmrg			sun4os3)
5686c3c2bceSmrg				basic_machine=sparc-sun
5690d22642bSmrg				basic_os=sunos3
5706c3c2bceSmrg				;;
5716c3c2bceSmrg			sun4os4)
5726c3c2bceSmrg				basic_machine=sparc-sun
5730d22642bSmrg				basic_os=sunos4
5746c3c2bceSmrg				;;
5756c3c2bceSmrg			sun4sol2)
5766c3c2bceSmrg				basic_machine=sparc-sun
5770d22642bSmrg				basic_os=solaris2
5786c3c2bceSmrg				;;
5796c3c2bceSmrg			sun386 | sun386i | roadrunner)
5806c3c2bceSmrg				basic_machine=i386-sun
5810d22642bSmrg				basic_os=
5826c3c2bceSmrg				;;
5836c3c2bceSmrg			sv1)
5846c3c2bceSmrg				basic_machine=sv1-cray
5850d22642bSmrg				basic_os=unicos
5866c3c2bceSmrg				;;
5876c3c2bceSmrg			symmetry)
5886c3c2bceSmrg				basic_machine=i386-sequent
5890d22642bSmrg				basic_os=dynix
5906c3c2bceSmrg				;;
5916c3c2bceSmrg			t3e)
5926c3c2bceSmrg				basic_machine=alphaev5-cray
5930d22642bSmrg				basic_os=unicos
5946c3c2bceSmrg				;;
5956c3c2bceSmrg			t90)
5966c3c2bceSmrg				basic_machine=t90-cray
5970d22642bSmrg				basic_os=unicos
5986c3c2bceSmrg				;;
5996c3c2bceSmrg			toad1)
6006c3c2bceSmrg				basic_machine=pdp10-xkl
6010d22642bSmrg				basic_os=tops20
6026c3c2bceSmrg				;;
6036c3c2bceSmrg			tpf)
6046c3c2bceSmrg				basic_machine=s390x-ibm
6050d22642bSmrg				basic_os=tpf
6066c3c2bceSmrg				;;
6076c3c2bceSmrg			udi29k)
6086c3c2bceSmrg				basic_machine=a29k-amd
6090d22642bSmrg				basic_os=udi
6106c3c2bceSmrg				;;
6116c3c2bceSmrg			ultra3)
6126c3c2bceSmrg				basic_machine=a29k-nyu
6130d22642bSmrg				basic_os=sym1
6146c3c2bceSmrg				;;
6156c3c2bceSmrg			v810 | necv810)
6166c3c2bceSmrg				basic_machine=v810-nec
6170d22642bSmrg				basic_os=none
6186c3c2bceSmrg				;;
6196c3c2bceSmrg			vaxv)
6206c3c2bceSmrg				basic_machine=vax-dec
6210d22642bSmrg				basic_os=sysv
6226c3c2bceSmrg				;;
6236c3c2bceSmrg			vms)
6246c3c2bceSmrg				basic_machine=vax-dec
6250d22642bSmrg				basic_os=vms
6260d22642bSmrg				;;
6270d22642bSmrg			vsta)
6280d22642bSmrg				basic_machine=i386-pc
6290d22642bSmrg				basic_os=vsta
6306c3c2bceSmrg				;;
6316c3c2bceSmrg			vxworks960)
6326c3c2bceSmrg				basic_machine=i960-wrs
6330d22642bSmrg				basic_os=vxworks
6346c3c2bceSmrg				;;
6356c3c2bceSmrg			vxworks68)
6366c3c2bceSmrg				basic_machine=m68k-wrs
6370d22642bSmrg				basic_os=vxworks
6386c3c2bceSmrg				;;
6396c3c2bceSmrg			vxworks29k)
6406c3c2bceSmrg				basic_machine=a29k-wrs
6410d22642bSmrg				basic_os=vxworks
6426c3c2bceSmrg				;;
6436c3c2bceSmrg			xbox)
6446c3c2bceSmrg				basic_machine=i686-pc
6450d22642bSmrg				basic_os=mingw32
6466c3c2bceSmrg				;;
6476c3c2bceSmrg			ymp)
6486c3c2bceSmrg				basic_machine=ymp-cray
6490d22642bSmrg				basic_os=unicos
6506c3c2bceSmrg				;;
6516c3c2bceSmrg			*)
6526c3c2bceSmrg				basic_machine=$1
6530d22642bSmrg				basic_os=
6546c3c2bceSmrg				;;
6556c3c2bceSmrg		esac
6567a0395d0Smrg		;;
6577a0395d0Smrgesac
6587a0395d0Smrg
6596c3c2bceSmrg# Decode 1-component or ad-hoc basic machines
6607a0395d0Smrgcase $basic_machine in
6616c3c2bceSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
6626c3c2bceSmrg	# some cases the only manufacturer, in others, it is the most popular.
6636c3c2bceSmrg	w89k)
6646c3c2bceSmrg		cpu=hppa1.1
6656c3c2bceSmrg		vendor=winbond
6667a0395d0Smrg		;;
6676c3c2bceSmrg	op50n)
6686c3c2bceSmrg		cpu=hppa1.1
6696c3c2bceSmrg		vendor=oki
6707a0395d0Smrg		;;
6716c3c2bceSmrg	op60c)
6726c3c2bceSmrg		cpu=hppa1.1
6736c3c2bceSmrg		vendor=oki
6747a0395d0Smrg		;;
6756c3c2bceSmrg	ibm*)
6766c3c2bceSmrg		cpu=i370
6776c3c2bceSmrg		vendor=ibm
6788abc0ccfSmrg		;;
6796c3c2bceSmrg	orion105)
6806c3c2bceSmrg		cpu=clipper
6816c3c2bceSmrg		vendor=highlevel
6828abc0ccfSmrg		;;
6836c3c2bceSmrg	mac | mpw | mac-mpw)
6846c3c2bceSmrg		cpu=m68k
6856c3c2bceSmrg		vendor=apple
6868abc0ccfSmrg		;;
6876c3c2bceSmrg	pmac | pmac-mpw)
6886c3c2bceSmrg		cpu=powerpc
6896c3c2bceSmrg		vendor=apple
6908abc0ccfSmrg		;;
6918abc0ccfSmrg
6927a0395d0Smrg	# Recognize the various machine names and aliases which stand
6937a0395d0Smrg	# for a CPU type and a company and sometimes even an OS.
6947a0395d0Smrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
6956c3c2bceSmrg		cpu=m68000
6966c3c2bceSmrg		vendor=att
6977a0395d0Smrg		;;
6987a0395d0Smrg	3b*)
6996c3c2bceSmrg		cpu=we32k
7006c3c2bceSmrg		vendor=att
7017a0395d0Smrg		;;
7022adc0320Smrg	bluegene*)
7036c3c2bceSmrg		cpu=powerpc
7046c3c2bceSmrg		vendor=ibm
7050d22642bSmrg		basic_os=cnk
7067a0395d0Smrg		;;
7077a0395d0Smrg	decsystem10* | dec10*)
7086c3c2bceSmrg		cpu=pdp10
7096c3c2bceSmrg		vendor=dec
7100d22642bSmrg		basic_os=tops10
7117a0395d0Smrg		;;
7127a0395d0Smrg	decsystem20* | dec20*)
7136c3c2bceSmrg		cpu=pdp10
7146c3c2bceSmrg		vendor=dec
7150d22642bSmrg		basic_os=tops20
7167a0395d0Smrg		;;
7177a0395d0Smrg	delta | 3300 | motorola-3300 | motorola-delta \
7187a0395d0Smrg	      | 3300-motorola | delta-motorola)
7196c3c2bceSmrg		cpu=m68k
7206c3c2bceSmrg		vendor=motorola
7217a0395d0Smrg		;;
7226c3c2bceSmrg	dpx2*)
7236c3c2bceSmrg		cpu=m68k
7246c3c2bceSmrg		vendor=bull
7250d22642bSmrg		basic_os=sysv3
7267a0395d0Smrg		;;
7277a0395d0Smrg	encore | umax | mmax)
7286c3c2bceSmrg		cpu=ns32k
7296c3c2bceSmrg		vendor=encore
7307a0395d0Smrg		;;
7316c3c2bceSmrg	elxsi)
7326c3c2bceSmrg		cpu=elxsi
7336c3c2bceSmrg		vendor=elxsi
7340d22642bSmrg		basic_os=${basic_os:-bsd}
7357a0395d0Smrg		;;
7367a0395d0Smrg	fx2800)
7376c3c2bceSmrg		cpu=i860
7386c3c2bceSmrg		vendor=alliant
7397a0395d0Smrg		;;
7407a0395d0Smrg	genix)
7416c3c2bceSmrg		cpu=ns32k
7426c3c2bceSmrg		vendor=ns
7437a0395d0Smrg		;;
7447a0395d0Smrg	h3050r* | hiux*)
7456c3c2bceSmrg		cpu=hppa1.1
7466c3c2bceSmrg		vendor=hitachi
7470d22642bSmrg		basic_os=hiuxwe2
7487a0395d0Smrg		;;
7497a0395d0Smrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
7506c3c2bceSmrg		cpu=hppa1.0
7516c3c2bceSmrg		vendor=hp
7527a0395d0Smrg		;;
7537a0395d0Smrg	hp9k2[0-9][0-9] | hp9k31[0-9])
7546c3c2bceSmrg		cpu=m68000
7556c3c2bceSmrg		vendor=hp
7567a0395d0Smrg		;;
7577a0395d0Smrg	hp9k3[2-9][0-9])
7586c3c2bceSmrg		cpu=m68k
7596c3c2bceSmrg		vendor=hp
7607a0395d0Smrg		;;
7617a0395d0Smrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
7626c3c2bceSmrg		cpu=hppa1.0
7636c3c2bceSmrg		vendor=hp
7647a0395d0Smrg		;;
7657a0395d0Smrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
7666c3c2bceSmrg		cpu=hppa1.1
7676c3c2bceSmrg		vendor=hp
7687a0395d0Smrg		;;
7697a0395d0Smrg	hp9k78[0-9] | hp78[0-9])
7707a0395d0Smrg		# FIXME: really hppa2.0-hp
7716c3c2bceSmrg		cpu=hppa1.1
7726c3c2bceSmrg		vendor=hp
7737a0395d0Smrg		;;
7747a0395d0Smrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
7757a0395d0Smrg		# FIXME: really hppa2.0-hp
7766c3c2bceSmrg		cpu=hppa1.1
7776c3c2bceSmrg		vendor=hp
7787a0395d0Smrg		;;
7797a0395d0Smrg	hp9k8[0-9][13679] | hp8[0-9][13679])
7806c3c2bceSmrg		cpu=hppa1.1
7816c3c2bceSmrg		vendor=hp
7827a0395d0Smrg		;;
7837a0395d0Smrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
7846c3c2bceSmrg		cpu=hppa1.0
7856c3c2bceSmrg		vendor=hp
7867a0395d0Smrg		;;
7877a0395d0Smrg	i*86v32)
788273c00b8Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7896c3c2bceSmrg		vendor=pc
7900d22642bSmrg		basic_os=sysv32
7917a0395d0Smrg		;;
7927a0395d0Smrg	i*86v4*)
793273c00b8Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7946c3c2bceSmrg		vendor=pc
7950d22642bSmrg		basic_os=sysv4
7967a0395d0Smrg		;;
7977a0395d0Smrg	i*86v)
798273c00b8Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7996c3c2bceSmrg		vendor=pc
8000d22642bSmrg		basic_os=sysv
8017a0395d0Smrg		;;
8027a0395d0Smrg	i*86sol2)
803273c00b8Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
8046c3c2bceSmrg		vendor=pc
8050d22642bSmrg		basic_os=solaris2
8067a0395d0Smrg		;;
8076c3c2bceSmrg	j90 | j90-cray)
8086c3c2bceSmrg		cpu=j90
8096c3c2bceSmrg		vendor=cray
8100d22642bSmrg		basic_os=${basic_os:-unicos}
8117a0395d0Smrg		;;
8127a0395d0Smrg	iris | iris4d)
8136c3c2bceSmrg		cpu=mips
8146c3c2bceSmrg		vendor=sgi
8150d22642bSmrg		case $basic_os in
8166c3c2bceSmrg		    irix*)
8177a0395d0Smrg			;;
8187a0395d0Smrg		    *)
8190d22642bSmrg			basic_os=irix4
8207a0395d0Smrg			;;
8217a0395d0Smrg		esac
8227a0395d0Smrg		;;
8237a0395d0Smrg	miniframe)
8246c3c2bceSmrg		cpu=m68000
8256c3c2bceSmrg		vendor=convergent
8267a0395d0Smrg		;;
8276c3c2bceSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
8286c3c2bceSmrg		cpu=m68k
8296c3c2bceSmrg		vendor=atari
8300d22642bSmrg		basic_os=mint
8317a0395d0Smrg		;;
8327a0395d0Smrg	news-3600 | risc-news)
8336c3c2bceSmrg		cpu=mips
8346c3c2bceSmrg		vendor=sony
8350d22642bSmrg		basic_os=newsos
8367a0395d0Smrg		;;
8376c3c2bceSmrg	next | m*-next)
8386c3c2bceSmrg		cpu=m68k
8396c3c2bceSmrg		vendor=next
8400d22642bSmrg		case $basic_os in
8410d22642bSmrg		    openstep*)
8420d22642bSmrg		        ;;
8430d22642bSmrg		    nextstep*)
8447a0395d0Smrg			;;
8456c3c2bceSmrg		    ns2*)
8460d22642bSmrg		      basic_os=nextstep2
8477a0395d0Smrg			;;
8487a0395d0Smrg		    *)
8490d22642bSmrg		      basic_os=nextstep3
8507a0395d0Smrg			;;
8517a0395d0Smrg		esac
8527a0395d0Smrg		;;
8537a0395d0Smrg	np1)
8546c3c2bceSmrg		cpu=np1
8556c3c2bceSmrg		vendor=gould
8567a0395d0Smrg		;;
8577a0395d0Smrg	op50n-* | op60c-*)
8586c3c2bceSmrg		cpu=hppa1.1
8596c3c2bceSmrg		vendor=oki
8600d22642bSmrg		basic_os=proelf
8617a0395d0Smrg		;;
8627a0395d0Smrg	pa-hitachi)
8636c3c2bceSmrg		cpu=hppa1.1
8646c3c2bceSmrg		vendor=hitachi
8650d22642bSmrg		basic_os=hiuxwe2
8667a0395d0Smrg		;;
8677a0395d0Smrg	pbd)
8686c3c2bceSmrg		cpu=sparc
8696c3c2bceSmrg		vendor=tti
8707a0395d0Smrg		;;
8717a0395d0Smrg	pbb)
8726c3c2bceSmrg		cpu=m68k
8736c3c2bceSmrg		vendor=tti
8747a0395d0Smrg		;;
8756c3c2bceSmrg	pc532)
8766c3c2bceSmrg		cpu=ns32k
8776c3c2bceSmrg		vendor=pc532
8787a0395d0Smrg		;;
8797a0395d0Smrg	pn)
8806c3c2bceSmrg		cpu=pn
8816c3c2bceSmrg		vendor=gould
8827a0395d0Smrg		;;
8836c3c2bceSmrg	power)
8846c3c2bceSmrg		cpu=power
8856c3c2bceSmrg		vendor=ibm
8867a0395d0Smrg		;;
8877a0395d0Smrg	ps2)
8886c3c2bceSmrg		cpu=i386
8896c3c2bceSmrg		vendor=ibm
8907a0395d0Smrg		;;
8917a0395d0Smrg	rm[46]00)
8926c3c2bceSmrg		cpu=mips
8936c3c2bceSmrg		vendor=siemens
8947a0395d0Smrg		;;
8957a0395d0Smrg	rtpc | rtpc-*)
8966c3c2bceSmrg		cpu=romp
8976c3c2bceSmrg		vendor=ibm
8987a0395d0Smrg		;;
8996c3c2bceSmrg	sde)
9006c3c2bceSmrg		cpu=mipsisa32
9016c3c2bceSmrg		vendor=sde
9020d22642bSmrg		basic_os=${basic_os:-elf}
9037a0395d0Smrg		;;
9046c3c2bceSmrg	simso-wrs)
9056c3c2bceSmrg		cpu=sparclite
9066c3c2bceSmrg		vendor=wrs
9070d22642bSmrg		basic_os=vxworks
9087a0395d0Smrg		;;
9096c3c2bceSmrg	tower | tower-32)
9106c3c2bceSmrg		cpu=m68k
9116c3c2bceSmrg		vendor=ncr
9127a0395d0Smrg		;;
9136c3c2bceSmrg	vpp*|vx|vx-*)
9146c3c2bceSmrg		cpu=f301
9156c3c2bceSmrg		vendor=fujitsu
9167a0395d0Smrg		;;
9176c3c2bceSmrg	w65)
9186c3c2bceSmrg		cpu=w65
9196c3c2bceSmrg		vendor=wdc
9207a0395d0Smrg		;;
9216c3c2bceSmrg	w89k-*)
9226c3c2bceSmrg		cpu=hppa1.1
9236c3c2bceSmrg		vendor=winbond
9240d22642bSmrg		basic_os=proelf
9257a0395d0Smrg		;;
9266c3c2bceSmrg	none)
9276c3c2bceSmrg		cpu=none
9286c3c2bceSmrg		vendor=none
9297a0395d0Smrg		;;
9306c3c2bceSmrg	leon|leon[3-9])
9316c3c2bceSmrg		cpu=sparc
9326c3c2bceSmrg		vendor=$basic_machine
9337a0395d0Smrg		;;
9346c3c2bceSmrg	leon-*|leon[3-9]-*)
9356c3c2bceSmrg		cpu=sparc
936273c00b8Smrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
9377a0395d0Smrg		;;
9386c3c2bceSmrg
9396c3c2bceSmrg	*-*)
9400d22642bSmrg		# shellcheck disable=SC2162
941273c00b8Smrg		saved_IFS=$IFS
9420d22642bSmrg		IFS="-" read cpu vendor <<EOF
9436c3c2bceSmrg$basic_machine
9446c3c2bceSmrgEOF
945273c00b8Smrg		IFS=$saved_IFS
9467a0395d0Smrg		;;
947f6d57fdeSmrg	# We use 'pc' rather than 'unknown'
9486c3c2bceSmrg	# because (1) that's what they normally are, and
9496c3c2bceSmrg	# (2) the word "unknown" tends to confuse beginning users.
9506c3c2bceSmrg	i*86 | x86_64)
9516c3c2bceSmrg		cpu=$basic_machine
9526c3c2bceSmrg		vendor=pc
9537a0395d0Smrg		;;
9546c3c2bceSmrg	# These rules are duplicated from below for sake of the special case above;
9556c3c2bceSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
9566c3c2bceSmrg	pc98)
9576c3c2bceSmrg		cpu=i386
9586c3c2bceSmrg		vendor=pc
9597a0395d0Smrg		;;
9606c3c2bceSmrg	x64 | amd64)
9616c3c2bceSmrg		cpu=x86_64
9626c3c2bceSmrg		vendor=pc
9637a0395d0Smrg		;;
9646c3c2bceSmrg	# Recognize the basic CPU types without company name.
9656c3c2bceSmrg	*)
9666c3c2bceSmrg		cpu=$basic_machine
9676c3c2bceSmrg		vendor=unknown
9687a0395d0Smrg		;;
9696c3c2bceSmrgesac
9706c3c2bceSmrg
9716c3c2bceSmrgunset -v basic_machine
9726c3c2bceSmrg
9736c3c2bceSmrg# Decode basic machines in the full and proper CPU-Company form.
9746c3c2bceSmrgcase $cpu-$vendor in
9750d22642bSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
9766c3c2bceSmrg	# some cases the only manufacturer, in others, it is the most popular.
9776c3c2bceSmrg	craynv-unknown)
9786c3c2bceSmrg		vendor=cray
9790d22642bSmrg		basic_os=${basic_os:-unicosmp}
9808abc0ccfSmrg		;;
9816c3c2bceSmrg	c90-unknown | c90-cray)
9826c3c2bceSmrg		vendor=cray
9830d22642bSmrg		basic_os=${Basic_os:-unicos}
9847a0395d0Smrg		;;
9856c3c2bceSmrg	fx80-unknown)
9866c3c2bceSmrg		vendor=alliant
9877a0395d0Smrg		;;
9886c3c2bceSmrg	romp-unknown)
9896c3c2bceSmrg		vendor=ibm
9907a0395d0Smrg		;;
9916c3c2bceSmrg	mmix-unknown)
9926c3c2bceSmrg		vendor=knuth
9937a0395d0Smrg		;;
9946c3c2bceSmrg	microblaze-unknown | microblazeel-unknown)
9956c3c2bceSmrg		vendor=xilinx
9967a0395d0Smrg		;;
9976c3c2bceSmrg	rs6000-unknown)
9986c3c2bceSmrg		vendor=ibm
9997a0395d0Smrg		;;
10006c3c2bceSmrg	vax-unknown)
10016c3c2bceSmrg		vendor=dec
10027a0395d0Smrg		;;
10036c3c2bceSmrg	pdp11-unknown)
10046c3c2bceSmrg		vendor=dec
10057a0395d0Smrg		;;
10066c3c2bceSmrg	we32k-unknown)
10076c3c2bceSmrg		vendor=att
10087a0395d0Smrg		;;
10096c3c2bceSmrg	cydra-unknown)
10106c3c2bceSmrg		vendor=cydrome
10117a0395d0Smrg		;;
10126c3c2bceSmrg	i370-ibm*)
10136c3c2bceSmrg		vendor=ibm
10147a0395d0Smrg		;;
10156c3c2bceSmrg	orion-unknown)
10166c3c2bceSmrg		vendor=highlevel
10177a0395d0Smrg		;;
10186c3c2bceSmrg	xps-unknown | xps100-unknown)
10196c3c2bceSmrg		cpu=xps100
10206c3c2bceSmrg		vendor=honeywell
10217a0395d0Smrg		;;
10226c3c2bceSmrg
10236c3c2bceSmrg	# Here we normalize CPU types with a missing or matching vendor
1024273c00b8Smrg	armh-unknown | armh-alt)
1025273c00b8Smrg		cpu=armv7l
1026273c00b8Smrg		vendor=alt
1027273c00b8Smrg		basic_os=${basic_os:-linux-gnueabihf}
1028273c00b8Smrg		;;
10296c3c2bceSmrg	dpx20-unknown | dpx20-bull)
10306c3c2bceSmrg		cpu=rs6000
10316c3c2bceSmrg		vendor=bull
10320d22642bSmrg		basic_os=${basic_os:-bosx}
10337a0395d0Smrg		;;
10346c3c2bceSmrg
10356c3c2bceSmrg	# Here we normalize CPU types irrespective of the vendor
10366c3c2bceSmrg	amd64-*)
10376c3c2bceSmrg		cpu=x86_64
10387a0395d0Smrg		;;
10396c3c2bceSmrg	blackfin-*)
10406c3c2bceSmrg		cpu=bfin
10410d22642bSmrg		basic_os=linux
10427a0395d0Smrg		;;
10436c3c2bceSmrg	c54x-*)
10446c3c2bceSmrg		cpu=tic54x
10457a0395d0Smrg		;;
10466c3c2bceSmrg	c55x-*)
10476c3c2bceSmrg		cpu=tic55x
10487a0395d0Smrg		;;
10496c3c2bceSmrg	c6x-*)
10506c3c2bceSmrg		cpu=tic6x
10517a0395d0Smrg		;;
10526c3c2bceSmrg	e500v[12]-*)
10536c3c2bceSmrg		cpu=powerpc
10540d22642bSmrg		basic_os=${basic_os}"spe"
10557a0395d0Smrg		;;
10566c3c2bceSmrg	mips3*-*)
10576c3c2bceSmrg		cpu=mips64
10587a0395d0Smrg		;;
10596c3c2bceSmrg	ms1-*)
10606c3c2bceSmrg		cpu=mt
10617a0395d0Smrg		;;
10626c3c2bceSmrg	m68knommu-*)
10636c3c2bceSmrg		cpu=m68k
10640d22642bSmrg		basic_os=linux
10657a0395d0Smrg		;;
10666c3c2bceSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
10676c3c2bceSmrg		cpu=s12z
10687a0395d0Smrg		;;
10696c3c2bceSmrg	openrisc-*)
10706c3c2bceSmrg		cpu=or32
10717a0395d0Smrg		;;
10726c3c2bceSmrg	parisc-*)
10736c3c2bceSmrg		cpu=hppa
10740d22642bSmrg		basic_os=linux
10757a0395d0Smrg		;;
10766c3c2bceSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
10776c3c2bceSmrg		cpu=i586
10787a0395d0Smrg		;;
1079273c00b8Smrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
10806c3c2bceSmrg		cpu=i686
10817a0395d0Smrg		;;
10826c3c2bceSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
10836c3c2bceSmrg		cpu=i686
10847a0395d0Smrg		;;
10856c3c2bceSmrg	pentium4-*)
10866c3c2bceSmrg		cpu=i786
10877a0395d0Smrg		;;
10886c3c2bceSmrg	pc98-*)
10896c3c2bceSmrg		cpu=i386
10907a0395d0Smrg		;;
10916c3c2bceSmrg	ppc-* | ppcbe-*)
10926c3c2bceSmrg		cpu=powerpc
10937a0395d0Smrg		;;
10946c3c2bceSmrg	ppcle-* | powerpclittle-*)
10956c3c2bceSmrg		cpu=powerpcle
10967a0395d0Smrg		;;
10976c3c2bceSmrg	ppc64-*)
10986c3c2bceSmrg		cpu=powerpc64
10997a0395d0Smrg		;;
11006c3c2bceSmrg	ppc64le-* | powerpc64little-*)
11016c3c2bceSmrg		cpu=powerpc64le
11028abc0ccfSmrg		;;
11036c3c2bceSmrg	sb1-*)
11046c3c2bceSmrg		cpu=mipsisa64sb1
11057a0395d0Smrg		;;
11066c3c2bceSmrg	sb1el-*)
11076c3c2bceSmrg		cpu=mipsisa64sb1el
11087a0395d0Smrg		;;
11096c3c2bceSmrg	sh5e[lb]-*)
1110273c00b8Smrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
11117366012aSmrg		;;
11126c3c2bceSmrg	spur-*)
11136c3c2bceSmrg		cpu=spur
11147a0395d0Smrg		;;
11156c3c2bceSmrg	strongarm-* | thumb-*)
11166c3c2bceSmrg		cpu=arm
11177a0395d0Smrg		;;
11186c3c2bceSmrg	tx39-*)
11196c3c2bceSmrg		cpu=mipstx39
11207a0395d0Smrg		;;
11216c3c2bceSmrg	tx39el-*)
11226c3c2bceSmrg		cpu=mipstx39el
11237a0395d0Smrg		;;
11246c3c2bceSmrg	x64-*)
11256c3c2bceSmrg		cpu=x86_64
11267a0395d0Smrg		;;
11276c3c2bceSmrg	xscale-* | xscalee[bl]-*)
1128273c00b8Smrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
11290d22642bSmrg		;;
1130273c00b8Smrg	arm64-* | aarch64le-*)
11310d22642bSmrg		cpu=aarch64
11327a0395d0Smrg		;;
11336c3c2bceSmrg
11340d22642bSmrg	# Recognize the canonical CPU Types that limit and/or modify the
11356c3c2bceSmrg	# company names they are paired with.
11366c3c2bceSmrg	cr16-*)
11370d22642bSmrg		basic_os=${basic_os:-elf}
11387a0395d0Smrg		;;
11396c3c2bceSmrg	crisv32-* | etraxfs*-*)
11406c3c2bceSmrg		cpu=crisv32
11416c3c2bceSmrg		vendor=axis
11427a0395d0Smrg		;;
11436c3c2bceSmrg	cris-* | etrax*-*)
11446c3c2bceSmrg		cpu=cris
11456c3c2bceSmrg		vendor=axis
11467a0395d0Smrg		;;
11476c3c2bceSmrg	crx-*)
11480d22642bSmrg		basic_os=${basic_os:-elf}
11497a0395d0Smrg		;;
11506c3c2bceSmrg	neo-tandem)
11516c3c2bceSmrg		cpu=neo
11526c3c2bceSmrg		vendor=tandem
11537a0395d0Smrg		;;
11546c3c2bceSmrg	nse-tandem)
11556c3c2bceSmrg		cpu=nse
11566c3c2bceSmrg		vendor=tandem
11577a0395d0Smrg		;;
11586c3c2bceSmrg	nsr-tandem)
11596c3c2bceSmrg		cpu=nsr
11606c3c2bceSmrg		vendor=tandem
11617a0395d0Smrg		;;
11626c3c2bceSmrg	nsv-tandem)
11636c3c2bceSmrg		cpu=nsv
11646c3c2bceSmrg		vendor=tandem
11657a0395d0Smrg		;;
11666c3c2bceSmrg	nsx-tandem)
11676c3c2bceSmrg		cpu=nsx
11686c3c2bceSmrg		vendor=tandem
11697a0395d0Smrg		;;
11700d22642bSmrg	mipsallegrexel-sony)
11710d22642bSmrg		cpu=mipsallegrexel
11720d22642bSmrg		vendor=sony
11737a0395d0Smrg		;;
11746c3c2bceSmrg	tile*-*)
11750d22642bSmrg		basic_os=${basic_os:-linux-gnu}
11767a0395d0Smrg		;;
11776c3c2bceSmrg
11787a0395d0Smrg	*)
11790d22642bSmrg		# Recognize the canonical CPU types that are allowed with any
11806c3c2bceSmrg		# company name.
11816c3c2bceSmrg		case $cpu in
11826c3c2bceSmrg			1750a | 580 \
11836c3c2bceSmrg			| a29k \
1184f6d57fdeSmrg			| aarch64 | aarch64_be | aarch64c | arm64ec \
11856c3c2bceSmrg			| abacus \
11866c3c2bceSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
11876c3c2bceSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
11886c3c2bceSmrg			| alphapca5[67] | alpha64pca5[67] \
11896c3c2bceSmrg			| am33_2.0 \
11900d22642bSmrg			| amdgcn \
1191273c00b8Smrg			| arc | arceb | arc32 | arc64 \
11920d22642bSmrg			| arm | arm[lb]e | arme[lb] | armv* \
11936c3c2bceSmrg			| avr | avr32 \
11946c3c2bceSmrg			| asmjs \
11956c3c2bceSmrg			| ba \
11966c3c2bceSmrg			| be32 | be64 \
11970d22642bSmrg			| bfin | bpf | bs2000 \
11986c3c2bceSmrg			| c[123]* | c30 | [cjt]90 | c4x \
11996c3c2bceSmrg			| c8051 | clipper | craynv | csky | cydra \
1200273c00b8Smrg			| d10v | d30v | dlx | dsp16xx \
12016c3c2bceSmrg			| e2k | elxsi | epiphany \
12026c3c2bceSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
1203f6d57fdeSmrg			| javascript \
12046c3c2bceSmrg			| h8300 | h8500 \
12056c3c2bceSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
12066c3c2bceSmrg			| hexagon \
12076c3c2bceSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
12086c3c2bceSmrg			| ip2k | iq2000 \
12096c3c2bceSmrg			| k1om \
1210f6d57fdeSmrg			| kvx \
12116c3c2bceSmrg			| le32 | le64 \
12126c3c2bceSmrg			| lm32 \
1213273c00b8Smrg			| loongarch32 | loongarch64 \
12146c3c2bceSmrg			| m32c | m32r | m32rle \
12150d22642bSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
12160d22642bSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
12176c3c2bceSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
12186c3c2bceSmrg			| microblaze | microblazeel \
1219f6d57fdeSmrg			| mips* \
12206c3c2bceSmrg			| mmix \
12216c3c2bceSmrg			| mn10200 | mn10300 \
12226c3c2bceSmrg			| moxie \
12236c3c2bceSmrg			| mt \
12246c3c2bceSmrg			| msp430 \
1225f6d57fdeSmrg			| nanomips* \
12266c3c2bceSmrg			| nds32 | nds32le | nds32be \
12276c3c2bceSmrg			| nfp \
12286c3c2bceSmrg			| nios | nios2 | nios2eb | nios2el \
12290d22642bSmrg			| none | np1 | ns16k | ns32k | nvptx \
12306c3c2bceSmrg			| open8 \
12316c3c2bceSmrg			| or1k* \
12326c3c2bceSmrg			| or32 \
12336c3c2bceSmrg			| orion \
12340d22642bSmrg			| picochip \
12356c3c2bceSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
12366c3c2bceSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
12376c3c2bceSmrg			| pru \
12386c3c2bceSmrg			| pyramid \
1239765b7306Smrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
12406c3c2bceSmrg			| rl78 | romp | rs6000 | rx \
12410d22642bSmrg			| s390 | s390x \
12426c3c2bceSmrg			| score \
12430d22642bSmrg			| sh | shl \
12440d22642bSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
12456c3c2bceSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
12466c3c2bceSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
12476c3c2bceSmrg			| sparclite \
12486c3c2bceSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
12496c3c2bceSmrg			| spu \
12506c3c2bceSmrg			| tahoe \
1251765b7306Smrg			| thumbv7* \
12526c3c2bceSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
12536c3c2bceSmrg			| tron \
12546c3c2bceSmrg			| ubicom32 \
12550d22642bSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
12566c3c2bceSmrg			| vax \
1257f6d57fdeSmrg			| vc4 \
12586c3c2bceSmrg			| visium \
12590d22642bSmrg			| w65 \
12600d22642bSmrg			| wasm32 | wasm64 \
12616c3c2bceSmrg			| we32k \
12626c3c2bceSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
12636c3c2bceSmrg			| xstormy16 | xtensa* \
12646c3c2bceSmrg			| ymp \
12656c3c2bceSmrg			| z8k | z80)
12666c3c2bceSmrg				;;
12676c3c2bceSmrg
12686c3c2bceSmrg			*)
1269f6d57fdeSmrg				echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
12706c3c2bceSmrg				exit 1
12716c3c2bceSmrg				;;
12726c3c2bceSmrg		esac
12737a0395d0Smrg		;;
12747a0395d0Smrgesac
12757a0395d0Smrg
12767a0395d0Smrg# Here we canonicalize certain aliases for manufacturers.
12776c3c2bceSmrgcase $vendor in
12786c3c2bceSmrg	digital*)
12796c3c2bceSmrg		vendor=dec
12807a0395d0Smrg		;;
12816c3c2bceSmrg	commodore*)
12826c3c2bceSmrg		vendor=cbm
12837a0395d0Smrg		;;
12847a0395d0Smrg	*)
12857a0395d0Smrg		;;
12867a0395d0Smrgesac
12877a0395d0Smrg
12887a0395d0Smrg# Decode manufacturer-specific aliases for certain operating systems.
12897a0395d0Smrg
1290f6d57fdeSmrgif test x"$basic_os" != x
12917a0395d0Smrgthen
12920d22642bSmrg
1293273c00b8Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
12940d22642bSmrg# set os.
1295f6d57fdeSmrgobj=
12960d22642bSmrgcase $basic_os in
12970d22642bSmrg	gnu/linux*)
12980d22642bSmrg		kernel=linux
1299273c00b8Smrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
13000d22642bSmrg		;;
13010d22642bSmrg	os2-emx)
13020d22642bSmrg		kernel=os2
1303273c00b8Smrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
13040d22642bSmrg		;;
13050d22642bSmrg	nto-qnx*)
13060d22642bSmrg		kernel=nto
1307273c00b8Smrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
13080d22642bSmrg		;;
13090d22642bSmrg	*-*)
13100d22642bSmrg		# shellcheck disable=SC2162
1311273c00b8Smrg		saved_IFS=$IFS
13120d22642bSmrg		IFS="-" read kernel os <<EOF
13130d22642bSmrg$basic_os
13140d22642bSmrgEOF
1315273c00b8Smrg		IFS=$saved_IFS
13160d22642bSmrg		;;
13170d22642bSmrg	# Default OS when just kernel was specified
13180d22642bSmrg	nto*)
13190d22642bSmrg		kernel=nto
1320273c00b8Smrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
13210d22642bSmrg		;;
13220d22642bSmrg	linux*)
13230d22642bSmrg		kernel=linux
1324273c00b8Smrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
1325273c00b8Smrg		;;
1326273c00b8Smrg	managarm*)
1327273c00b8Smrg		kernel=managarm
1328273c00b8Smrg		os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
13290d22642bSmrg		;;
13300d22642bSmrg	*)
13310d22642bSmrg		kernel=
13320d22642bSmrg		os=$basic_os
13330d22642bSmrg		;;
13340d22642bSmrgesac
13350d22642bSmrg
13360d22642bSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
13370d22642bSmrg# etc.)
13387a0395d0Smrgcase $os in
13396c3c2bceSmrg	# First match some system type aliases that might get confused
13406c3c2bceSmrg	# with valid system types.
13416c3c2bceSmrg	# solaris* is a basic system type, with this one exception.
13426c3c2bceSmrg	auroraux)
13436c3c2bceSmrg		os=auroraux
13442adc0320Smrg		;;
13456c3c2bceSmrg	bluegene*)
13466c3c2bceSmrg		os=cnk
13477a0395d0Smrg		;;
13486c3c2bceSmrg	solaris1 | solaris1.*)
1349273c00b8Smrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
13507a0395d0Smrg		;;
13516c3c2bceSmrg	solaris)
13526c3c2bceSmrg		os=solaris2
13537a0395d0Smrg		;;
13546c3c2bceSmrg	unixware*)
13556c3c2bceSmrg		os=sysv4.2uw
13567a0395d0Smrg		;;
13576c3c2bceSmrg	# es1800 is here to avoid being matched by es* (a different OS)
13586c3c2bceSmrg	es1800*)
13596c3c2bceSmrg		os=ose
13606c3c2bceSmrg		;;
13616c3c2bceSmrg	# Some version numbers need modification
13626c3c2bceSmrg	chorusos*)
13636c3c2bceSmrg		os=chorusos
13646c3c2bceSmrg		;;
13656c3c2bceSmrg	isc)
13666c3c2bceSmrg		os=isc2.2
13676c3c2bceSmrg		;;
13686c3c2bceSmrg	sco6)
13696c3c2bceSmrg		os=sco5v6
13706c3c2bceSmrg		;;
13716c3c2bceSmrg	sco5)
13726c3c2bceSmrg		os=sco3.2v5
13736c3c2bceSmrg		;;
13746c3c2bceSmrg	sco4)
13756c3c2bceSmrg		os=sco3.2v4
13766c3c2bceSmrg		;;
13776c3c2bceSmrg	sco3.2.[4-9]*)
1378273c00b8Smrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
13796c3c2bceSmrg		;;
13800d22642bSmrg	sco*v* | scout)
13816c3c2bceSmrg		# Don't match below
13826c3c2bceSmrg		;;
13836c3c2bceSmrg	sco*)
13846c3c2bceSmrg		os=sco3.2v2
13856c3c2bceSmrg		;;
13866c3c2bceSmrg	psos*)
13876c3c2bceSmrg		os=psos
13886c3c2bceSmrg		;;
13896c3c2bceSmrg	qnx*)
13900d22642bSmrg		os=qnx
13917a0395d0Smrg		;;
13926c3c2bceSmrg	hiux*)
13936c3c2bceSmrg		os=hiuxwe2
13947a0395d0Smrg		;;
13956c3c2bceSmrg	lynx*178)
13966c3c2bceSmrg		os=lynxos178
13977a0395d0Smrg		;;
13986c3c2bceSmrg	lynx*5)
13996c3c2bceSmrg		os=lynxos5
14007a0395d0Smrg		;;
14010d22642bSmrg	lynxos*)
14020d22642bSmrg		# don't get caught up in next wildcard
14030d22642bSmrg		;;
14046c3c2bceSmrg	lynx*)
14056c3c2bceSmrg		os=lynxos
14067a0395d0Smrg		;;
14070d22642bSmrg	mac[0-9]*)
1408273c00b8Smrg		os=`echo "$os" | sed -e 's|mac|macos|'`
14097a0395d0Smrg		;;
14106c3c2bceSmrg	opened*)
14116c3c2bceSmrg		os=openedition
14127a0395d0Smrg		;;
14136c3c2bceSmrg	os400*)
14146c3c2bceSmrg		os=os400
14157a0395d0Smrg		;;
14166c3c2bceSmrg	sunos5*)
1417273c00b8Smrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
14187a0395d0Smrg		;;
14196c3c2bceSmrg	sunos6*)
1420273c00b8Smrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
14217a0395d0Smrg		;;
14226c3c2bceSmrg	wince*)
14236c3c2bceSmrg		os=wince
14247a0395d0Smrg		;;
14256c3c2bceSmrg	utek*)
14266c3c2bceSmrg		os=bsd
14277a0395d0Smrg		;;
14286c3c2bceSmrg	dynix*)
14296c3c2bceSmrg		os=bsd
14307a0395d0Smrg		;;
14316c3c2bceSmrg	acis*)
14326c3c2bceSmrg		os=aos
14337a0395d0Smrg		;;
14346c3c2bceSmrg	atheos*)
14356c3c2bceSmrg		os=atheos
14367a0395d0Smrg		;;
14376c3c2bceSmrg	syllable*)
14386c3c2bceSmrg		os=syllable
14397a0395d0Smrg		;;
14406c3c2bceSmrg	386bsd)
14416c3c2bceSmrg		os=bsd
14426c3c2bceSmrg		;;
14436c3c2bceSmrg	ctix* | uts*)
14446c3c2bceSmrg		os=sysv
14456c3c2bceSmrg		;;
14466c3c2bceSmrg	nova*)
14476c3c2bceSmrg		os=rtmk-nova
14487a0395d0Smrg		;;
14496c3c2bceSmrg	ns2)
14506c3c2bceSmrg		os=nextstep2
14517a0395d0Smrg		;;
14527a0395d0Smrg	# Preserve the version number of sinix5.
14536c3c2bceSmrg	sinix5.*)
1454273c00b8Smrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
14557a0395d0Smrg		;;
14566c3c2bceSmrg	sinix*)
14576c3c2bceSmrg		os=sysv4
14587a0395d0Smrg		;;
14596c3c2bceSmrg	tpf*)
14606c3c2bceSmrg		os=tpf
14617a0395d0Smrg		;;
14626c3c2bceSmrg	triton*)
14636c3c2bceSmrg		os=sysv3
14647a0395d0Smrg		;;
14656c3c2bceSmrg	oss*)
14666c3c2bceSmrg		os=sysv3
14677a0395d0Smrg		;;
14686c3c2bceSmrg	svr4*)
14696c3c2bceSmrg		os=sysv4
14707a0395d0Smrg		;;
14716c3c2bceSmrg	svr3)
14726c3c2bceSmrg		os=sysv3
14737a0395d0Smrg		;;
14746c3c2bceSmrg	sysvr4)
14756c3c2bceSmrg		os=sysv4
14767a0395d0Smrg		;;
14776c3c2bceSmrg	ose*)
14786c3c2bceSmrg		os=ose
14797a0395d0Smrg		;;
14806c3c2bceSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
14816c3c2bceSmrg		os=mint
14827a0395d0Smrg		;;
14836c3c2bceSmrg	dicos*)
14846c3c2bceSmrg		os=dicos
14857a0395d0Smrg		;;
14866c3c2bceSmrg	pikeos*)
14876c3c2bceSmrg		# Until real need of OS specific support for
14886c3c2bceSmrg		# particular features comes up, bare metal
14896c3c2bceSmrg		# configurations are quite functional.
14906c3c2bceSmrg		case $cpu in
14916c3c2bceSmrg		    arm*)
14926c3c2bceSmrg			os=eabi
14936c3c2bceSmrg			;;
14946c3c2bceSmrg		    *)
1495f6d57fdeSmrg			os=
1496f6d57fdeSmrg			obj=elf
14976c3c2bceSmrg			;;
14986c3c2bceSmrg		esac
14997a0395d0Smrg		;;
1500f6d57fdeSmrg	aout* | coff* | elf* | pe*)
1501f6d57fdeSmrg		# These are machine code file formats, not OSes
1502f6d57fdeSmrg		obj=$os
1503f6d57fdeSmrg		os=
1504f6d57fdeSmrg		;;
15057a0395d0Smrg	*)
15060d22642bSmrg		# No normalization, but not necessarily accepted, that comes below.
15077a0395d0Smrg		;;
15087a0395d0Smrgesac
15090d22642bSmrg
15107a0395d0Smrgelse
15117a0395d0Smrg
15127a0395d0Smrg# Here we handle the default operating systems that come with various machines.
15137a0395d0Smrg# The value should be what the vendor currently ships out the door with their
15147a0395d0Smrg# machine or put another way, the most popular os provided with the machine.
15157a0395d0Smrg
15167a0395d0Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
15177a0395d0Smrg# "-sun"), then you have to tell the case statement up towards the top
15187a0395d0Smrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
15197a0395d0Smrg# will signal an error saying that MANUFACTURER isn't an operating
15207a0395d0Smrg# system, and we'll never get to this point.
15217a0395d0Smrg
15220d22642bSmrgkernel=
1523f6d57fdeSmrgobj=
15246c3c2bceSmrgcase $cpu-$vendor in
15258abc0ccfSmrg	score-*)
1526f6d57fdeSmrg		os=
1527f6d57fdeSmrg		obj=elf
15287a0395d0Smrg		;;
15298abc0ccfSmrg	spu-*)
1530f6d57fdeSmrg		os=
1531f6d57fdeSmrg		obj=elf
15327a0395d0Smrg		;;
15337a0395d0Smrg	*-acorn)
15346c3c2bceSmrg		os=riscix1.2
15357a0395d0Smrg		;;
15367a0395d0Smrg	arm*-rebel)
15370d22642bSmrg		kernel=linux
15380d22642bSmrg		os=gnu
15397a0395d0Smrg		;;
15407a0395d0Smrg	arm*-semi)
1541f6d57fdeSmrg		os=
1542f6d57fdeSmrg		obj=aout
15437a0395d0Smrg		;;
15448abc0ccfSmrg	c4x-* | tic4x-*)
1545f6d57fdeSmrg		os=
1546f6d57fdeSmrg		obj=coff
15478abc0ccfSmrg		;;
154840c5344fSmrg	c8051-*)
1549f6d57fdeSmrg		os=
1550f6d57fdeSmrg		obj=elf
15516c3c2bceSmrg		;;
15526c3c2bceSmrg	clipper-intergraph)
15536c3c2bceSmrg		os=clix
155440c5344fSmrg		;;
15558abc0ccfSmrg	hexagon-*)
1556f6d57fdeSmrg		os=
1557f6d57fdeSmrg		obj=elf
15587a0395d0Smrg		;;
155996402570Smrg	tic54x-*)
1560f6d57fdeSmrg		os=
1561f6d57fdeSmrg		obj=coff
156296402570Smrg		;;
156396402570Smrg	tic55x-*)
1564f6d57fdeSmrg		os=
1565f6d57fdeSmrg		obj=coff
156696402570Smrg		;;
156796402570Smrg	tic6x-*)
1568f6d57fdeSmrg		os=
1569f6d57fdeSmrg		obj=coff
157096402570Smrg		;;
15717a0395d0Smrg	# This must come before the *-dec entry.
15727a0395d0Smrg	pdp10-*)
15736c3c2bceSmrg		os=tops20
15747a0395d0Smrg		;;
15757a0395d0Smrg	pdp11-*)
15766c3c2bceSmrg		os=none
15777a0395d0Smrg		;;
15787a0395d0Smrg	*-dec | vax-*)
15796c3c2bceSmrg		os=ultrix4.2
15807a0395d0Smrg		;;
15817a0395d0Smrg	m68*-apollo)
15826c3c2bceSmrg		os=domain
15837a0395d0Smrg		;;
15847a0395d0Smrg	i386-sun)
15856c3c2bceSmrg		os=sunos4.0.2
15867a0395d0Smrg		;;
15877a0395d0Smrg	m68000-sun)
15886c3c2bceSmrg		os=sunos3
15897a0395d0Smrg		;;
15907a0395d0Smrg	m68*-cisco)
1591f6d57fdeSmrg		os=
1592f6d57fdeSmrg		obj=aout
15937a0395d0Smrg		;;
15948abc0ccfSmrg	mep-*)
1595f6d57fdeSmrg		os=
1596f6d57fdeSmrg		obj=elf
15977a0395d0Smrg		;;
15987a0395d0Smrg	mips*-cisco)
1599f6d57fdeSmrg		os=
1600f6d57fdeSmrg		obj=elf
16017a0395d0Smrg		;;
1602f6d57fdeSmrg	mips*-*|nanomips*-*)
1603f6d57fdeSmrg		os=
1604f6d57fdeSmrg		obj=elf
16057a0395d0Smrg		;;
16067a0395d0Smrg	or32-*)
1607f6d57fdeSmrg		os=
1608f6d57fdeSmrg		obj=coff
16097a0395d0Smrg		;;
16107a0395d0Smrg	*-tti)	# must be before sparc entry or we get the wrong os.
16116c3c2bceSmrg		os=sysv3
16127a0395d0Smrg		;;
16137a0395d0Smrg	sparc-* | *-sun)
16146c3c2bceSmrg		os=sunos4.1.1
16157a0395d0Smrg		;;
16166c3c2bceSmrg	pru-*)
1617f6d57fdeSmrg		os=
1618f6d57fdeSmrg		obj=elf
16197a0395d0Smrg		;;
16206c3c2bceSmrg	*-be)
16216c3c2bceSmrg		os=beos
16227a0395d0Smrg		;;
16237a0395d0Smrg	*-ibm)
16246c3c2bceSmrg		os=aix
16257a0395d0Smrg		;;
16268abc0ccfSmrg	*-knuth)
16276c3c2bceSmrg		os=mmixware
16287a0395d0Smrg		;;
16297a0395d0Smrg	*-wec)
16306c3c2bceSmrg		os=proelf
16317a0395d0Smrg		;;
16327a0395d0Smrg	*-winbond)
16336c3c2bceSmrg		os=proelf
16347a0395d0Smrg		;;
16357a0395d0Smrg	*-oki)
16366c3c2bceSmrg		os=proelf
16377a0395d0Smrg		;;
16387a0395d0Smrg	*-hp)
16396c3c2bceSmrg		os=hpux
16407a0395d0Smrg		;;
16417a0395d0Smrg	*-hitachi)
16426c3c2bceSmrg		os=hiux
16437a0395d0Smrg		;;
16447a0395d0Smrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
16456c3c2bceSmrg		os=sysv
16467a0395d0Smrg		;;
16477a0395d0Smrg	*-cbm)
16486c3c2bceSmrg		os=amigaos
16497a0395d0Smrg		;;
16507a0395d0Smrg	*-dg)
16516c3c2bceSmrg		os=dgux
16527a0395d0Smrg		;;
16537a0395d0Smrg	*-dolphin)
16546c3c2bceSmrg		os=sysv3
16557a0395d0Smrg		;;
16567a0395d0Smrg	m68k-ccur)
16576c3c2bceSmrg		os=rtu
16587a0395d0Smrg		;;
16597a0395d0Smrg	m88k-omron*)
16606c3c2bceSmrg		os=luna
16617a0395d0Smrg		;;
16626c3c2bceSmrg	*-next)
16636c3c2bceSmrg		os=nextstep
16647a0395d0Smrg		;;
16657a0395d0Smrg	*-sequent)
16666c3c2bceSmrg		os=ptx
16677a0395d0Smrg		;;
16687a0395d0Smrg	*-crds)
16696c3c2bceSmrg		os=unos
16707a0395d0Smrg		;;
16717a0395d0Smrg	*-ns)
16726c3c2bceSmrg		os=genix
16737a0395d0Smrg		;;
16747a0395d0Smrg	i370-*)
16756c3c2bceSmrg		os=mvs
16767a0395d0Smrg		;;
16777a0395d0Smrg	*-gould)
16786c3c2bceSmrg		os=sysv
16797a0395d0Smrg		;;
16807a0395d0Smrg	*-highlevel)
16816c3c2bceSmrg		os=bsd
16827a0395d0Smrg		;;
16837a0395d0Smrg	*-encore)
16846c3c2bceSmrg		os=bsd
16857a0395d0Smrg		;;
16867a0395d0Smrg	*-sgi)
16876c3c2bceSmrg		os=irix
16887a0395d0Smrg		;;
16897a0395d0Smrg	*-siemens)
16906c3c2bceSmrg		os=sysv4
16917a0395d0Smrg		;;
16927a0395d0Smrg	*-masscomp)
16936c3c2bceSmrg		os=rtu
16947a0395d0Smrg		;;
16957a0395d0Smrg	f30[01]-fujitsu | f700-fujitsu)
16966c3c2bceSmrg		os=uxpv
16977a0395d0Smrg		;;
16987a0395d0Smrg	*-rom68k)
1699f6d57fdeSmrg		os=
1700f6d57fdeSmrg		obj=coff
17017a0395d0Smrg		;;
17027a0395d0Smrg	*-*bug)
1703f6d57fdeSmrg		os=
1704f6d57fdeSmrg		obj=coff
17057a0395d0Smrg		;;
17067a0395d0Smrg	*-apple)
17076c3c2bceSmrg		os=macos
17087a0395d0Smrg		;;
17097a0395d0Smrg	*-atari*)
17106c3c2bceSmrg		os=mint
17116c3c2bceSmrg		;;
17126c3c2bceSmrg	*-wrs)
17136c3c2bceSmrg		os=vxworks
17147a0395d0Smrg		;;
17157a0395d0Smrg	*)
17166c3c2bceSmrg		os=none
17177a0395d0Smrg		;;
17187a0395d0Smrgesac
17190d22642bSmrg
17207a0395d0Smrgfi
17217a0395d0Smrg
1722f6d57fdeSmrg# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ).
1723f6d57fdeSmrg
17240d22642bSmrgcase $os in
1725273c00b8Smrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
1726f6d57fdeSmrg	llvm* | musl* | newlib* | relibc* | uclibc*)
17270d22642bSmrg		;;
1728273c00b8Smrg	# Likewise for "kernel-abi"
1729765b7306Smrg	eabi* | gnueabi*)
17300d22642bSmrg		;;
1731273c00b8Smrg	# VxWorks passes extra cpu info in the 4th filed.
1732273c00b8Smrg	simlinux | simwindows | spe)
1733273c00b8Smrg		;;
1734f6d57fdeSmrg	# See `case $cpu-$os` validation below
1735f6d57fdeSmrg	ghcjs)
1736f6d57fdeSmrg		;;
17370d22642bSmrg	# Now accept the basic system types.
17380d22642bSmrg	# The portable systems comes first.
17390d22642bSmrg	# Each alternative MUST end in a * to match a version number.
17400d22642bSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
17410d22642bSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
17420d22642bSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
17430d22642bSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
17440d22642bSmrg	     | hiux* | abug | nacl* | netware* | windows* \
1745f6d57fdeSmrg	     | os9* | macos* | osx* | ios* | tvos* | watchos* \
17460d22642bSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
17470d22642bSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
17480d22642bSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
17490d22642bSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
17500d22642bSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
17510d22642bSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
1752273c00b8Smrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
17530d22642bSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
1754f6d57fdeSmrg	     | bosx* | nextstep* | cxux* | oabi* \
1755f6d57fdeSmrg	     | ptx* | ecoff* | winnt* | domain* | vsta* \
17560d22642bSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
1757273c00b8Smrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
1758f6d57fdeSmrg	     | cygwin* | msys* | moss* | proelf* | rtems* \
17590d22642bSmrg	     | midipix* | mingw32* | mingw64* | mint* \
17600d22642bSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
17610d22642bSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
17620d22642bSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
1763273c00b8Smrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
17640d22642bSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
17650d22642bSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
17660d22642bSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
17670d22642bSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
17680d22642bSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
17690d22642bSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
1770273c00b8Smrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
1771f6d57fdeSmrg	     | fiwix* | mlibc* | cos* | mbr* | ironclad* )
17720d22642bSmrg		;;
17730d22642bSmrg	# This one is extra strict with allowed versions
17740d22642bSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
17750d22642bSmrg		# Don't forget version if it is 3.2v4 or newer.
17760d22642bSmrg		;;
1777f6d57fdeSmrg	# This refers to builds using the UEFI calling convention
1778f6d57fdeSmrg	# (which depends on the architecture) and PE file format.
1779f6d57fdeSmrg	# Note that this is both a different calling convention and
1780f6d57fdeSmrg	# different file format than that of GNU-EFI
1781f6d57fdeSmrg	# (x86_64-w64-mingw32).
1782f6d57fdeSmrg	uefi)
1783f6d57fdeSmrg		;;
17840d22642bSmrg	none)
17850d22642bSmrg		;;
1786f6d57fdeSmrg	kernel* | msvc* )
1787273c00b8Smrg		# Restricted further below
1788273c00b8Smrg		;;
1789f6d57fdeSmrg	'')
1790f6d57fdeSmrg		if test x"$obj" = x
1791f6d57fdeSmrg		then
1792f6d57fdeSmrg			echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
1793f6d57fdeSmrg		fi
1794f6d57fdeSmrg		;;
17950d22642bSmrg	*)
1796f6d57fdeSmrg		echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
1797f6d57fdeSmrg		exit 1
1798f6d57fdeSmrg		;;
1799f6d57fdeSmrgesac
1800f6d57fdeSmrg
1801f6d57fdeSmrgcase $obj in
1802f6d57fdeSmrg	aout* | coff* | elf* | pe*)
1803f6d57fdeSmrg		;;
1804f6d57fdeSmrg	'')
1805f6d57fdeSmrg		# empty is fine
1806f6d57fdeSmrg		;;
1807f6d57fdeSmrg	*)
1808f6d57fdeSmrg		echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
1809f6d57fdeSmrg		exit 1
1810f6d57fdeSmrg		;;
1811f6d57fdeSmrgesac
1812f6d57fdeSmrg
1813f6d57fdeSmrg# Here we handle the constraint that a (synthetic) cpu and os are
1814f6d57fdeSmrg# valid only in combination with each other and nowhere else.
1815f6d57fdeSmrgcase $cpu-$os in
1816f6d57fdeSmrg	# The "javascript-unknown-ghcjs" triple is used by GHC; we
1817f6d57fdeSmrg	# accept it here in order to tolerate that, but reject any
1818f6d57fdeSmrg	# variations.
1819f6d57fdeSmrg	javascript-ghcjs)
1820f6d57fdeSmrg		;;
1821f6d57fdeSmrg	javascript-* | *-ghcjs)
1822f6d57fdeSmrg		echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
18230d22642bSmrg		exit 1
18240d22642bSmrg		;;
18250d22642bSmrgesac
18260d22642bSmrg
18270d22642bSmrg# As a final step for OS-related things, validate the OS-kernel combination
18280d22642bSmrg# (given a valid OS), if there is a kernel.
1829f6d57fdeSmrgcase $kernel-$os-$obj in
1830f6d57fdeSmrg	linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
1831f6d57fdeSmrg		    | linux-mlibc*- | linux-musl*- | linux-newlib*- \
1832f6d57fdeSmrg		    | linux-relibc*- | linux-uclibc*- )
18330d22642bSmrg		;;
1834f6d57fdeSmrg	uclinux-uclibc*- )
18350d22642bSmrg		;;
1836f6d57fdeSmrg	managarm-mlibc*- | managarm-kernel*- )
1837273c00b8Smrg		;;
1838f6d57fdeSmrg	windows*-msvc*-)
1839f6d57fdeSmrg		;;
1840f6d57fdeSmrg	-dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
1841f6d57fdeSmrg		    | -uclibc*- )
18420d22642bSmrg		# These are just libc implementations, not actual OSes, and thus
18430d22642bSmrg		# require a kernel.
1844f6d57fdeSmrg		echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
18450d22642bSmrg		exit 1
18460d22642bSmrg		;;
1847f6d57fdeSmrg	-kernel*- )
1848f6d57fdeSmrg		echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
1849273c00b8Smrg		exit 1
1850273c00b8Smrg		;;
1851f6d57fdeSmrg	*-kernel*- )
1852f6d57fdeSmrg		echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
1853273c00b8Smrg		exit 1
1854273c00b8Smrg		;;
1855f6d57fdeSmrg	*-msvc*- )
1856f6d57fdeSmrg		echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
1857f6d57fdeSmrg		exit 1
18580d22642bSmrg		;;
1859f6d57fdeSmrg	kfreebsd*-gnu*- | kopensolaris*-gnu*-)
1860273c00b8Smrg		;;
1861f6d57fdeSmrg	vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
18620d22642bSmrg		;;
1863f6d57fdeSmrg	nto-qnx*-)
1864f6d57fdeSmrg		;;
1865f6d57fdeSmrg	os2-emx-)
1866f6d57fdeSmrg		;;
1867f6d57fdeSmrg	*-eabi*- | *-gnueabi*-)
18680d22642bSmrg		;;
1869f6d57fdeSmrg	none--*)
1870f6d57fdeSmrg		# None (no kernel, i.e. freestanding / bare metal),
1871f6d57fdeSmrg		# can be paired with an machine code file format
18720d22642bSmrg		;;
1873f6d57fdeSmrg	-*-)
18740d22642bSmrg		# Blank kernel with real OS is always fine.
18750d22642bSmrg		;;
1876f6d57fdeSmrg	--*)
1877f6d57fdeSmrg		# Blank kernel and OS with real machine code file format is always fine.
1878f6d57fdeSmrg		;;
1879f6d57fdeSmrg	*-*-*)
1880f6d57fdeSmrg		echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
18810d22642bSmrg		exit 1
18820d22642bSmrg		;;
18830d22642bSmrgesac
18840d22642bSmrg
18857a0395d0Smrg# Here we handle the case where we know the os, and the CPU type, but not the
18867a0395d0Smrg# manufacturer.  We pick the logical manufacturer.
18876c3c2bceSmrgcase $vendor in
18886c3c2bceSmrg	unknown)
18890d22642bSmrg		case $cpu-$os in
18900d22642bSmrg			*-riscix*)
18917a0395d0Smrg				vendor=acorn
18927a0395d0Smrg				;;
18930d22642bSmrg			*-sunos*)
18947a0395d0Smrg				vendor=sun
18957a0395d0Smrg				;;
18960d22642bSmrg			*-cnk* | *-aix*)
18977a0395d0Smrg				vendor=ibm
18987a0395d0Smrg				;;
18990d22642bSmrg			*-beos*)
19007a0395d0Smrg				vendor=be
19017a0395d0Smrg				;;
19020d22642bSmrg			*-hpux*)
19037a0395d0Smrg				vendor=hp
19047a0395d0Smrg				;;
19050d22642bSmrg			*-mpeix*)
19067a0395d0Smrg				vendor=hp
19077a0395d0Smrg				;;
19080d22642bSmrg			*-hiux*)
19097a0395d0Smrg				vendor=hitachi
19107a0395d0Smrg				;;
19110d22642bSmrg			*-unos*)
19127a0395d0Smrg				vendor=crds
19137a0395d0Smrg				;;
19140d22642bSmrg			*-dgux*)
19157a0395d0Smrg				vendor=dg
19167a0395d0Smrg				;;
19170d22642bSmrg			*-luna*)
19187a0395d0Smrg				vendor=omron
19197a0395d0Smrg				;;
19200d22642bSmrg			*-genix*)
19217a0395d0Smrg				vendor=ns
19227a0395d0Smrg				;;
19230d22642bSmrg			*-clix*)
19246c3c2bceSmrg				vendor=intergraph
19256c3c2bceSmrg				;;
19260d22642bSmrg			*-mvs* | *-opened*)
19270d22642bSmrg				vendor=ibm
19280d22642bSmrg				;;
19290d22642bSmrg			*-os400*)
19307a0395d0Smrg				vendor=ibm
19317a0395d0Smrg				;;
19320d22642bSmrg			s390-* | s390x-*)
19337a0395d0Smrg				vendor=ibm
19347a0395d0Smrg				;;
19350d22642bSmrg			*-ptx*)
19367a0395d0Smrg				vendor=sequent
19377a0395d0Smrg				;;
19380d22642bSmrg			*-tpf*)
19397a0395d0Smrg				vendor=ibm
19407a0395d0Smrg				;;
19410d22642bSmrg			*-vxsim* | *-vxworks* | *-windiss*)
19427a0395d0Smrg				vendor=wrs
19437a0395d0Smrg				;;
19440d22642bSmrg			*-aux*)
19457a0395d0Smrg				vendor=apple
19467a0395d0Smrg				;;
19470d22642bSmrg			*-hms*)
19487a0395d0Smrg				vendor=hitachi
19497a0395d0Smrg				;;
19500d22642bSmrg			*-mpw* | *-macos*)
19517a0395d0Smrg				vendor=apple
19527a0395d0Smrg				;;
19530d22642bSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
19547a0395d0Smrg				vendor=atari
19557a0395d0Smrg				;;
19560d22642bSmrg			*-vos*)
19577a0395d0Smrg				vendor=stratus
19587a0395d0Smrg				;;
19597a0395d0Smrg		esac
19607a0395d0Smrg		;;
19617a0395d0Smrgesac
19627a0395d0Smrg
1963f6d57fdeSmrgecho "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
19647a0395d0Smrgexit
19657a0395d0Smrg
19667a0395d0Smrg# Local variables:
19676c3c2bceSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
19687a0395d0Smrg# time-stamp-start: "timestamp='"
19697a0395d0Smrg# time-stamp-format: "%:y-%02m-%02d"
19707a0395d0Smrg# time-stamp-end: "'"
19717a0395d0Smrg# End:
1972