config.sub revision 765b7306
17a0395d0Smrg#! /bin/sh
27a0395d0Smrg# Configuration validation subroutine script.
3765b7306Smrg#   Copyright 1992-2021 Free Software Foundation, Inc.
47a0395d0Smrg
5765b7306Smrgtimestamp='2021-01-07'
67a0395d0Smrg
79a011757Smrg# This file is free software; you can redistribute it and/or modify it
89a011757Smrg# under the terms of the GNU General Public License as published by
99a011757Smrg# the Free Software Foundation; either version 3 of the License, or
107a0395d0Smrg# (at your option) any later version.
117a0395d0Smrg#
129a011757Smrg# This program is distributed in the hope that it will be useful, but
139a011757Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
149a011757Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
159a011757Smrg# General Public License for more details.
167a0395d0Smrg#
177a0395d0Smrg# You should have received a copy of the GNU General Public License
186c3c2bceSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
197a0395d0Smrg#
207a0395d0Smrg# As a special exception to the GNU General Public License, if you
217a0395d0Smrg# distribute this file as part of a program that contains a
227a0395d0Smrg# configuration script generated by Autoconf, you may include it under
239a011757Smrg# the same distribution terms that you use for the rest of that
249a011757Smrg# program.  This Exception is an additional permission under section 7
259a011757Smrg# of the GNU General Public License, version 3 ("GPLv3").
267a0395d0Smrg
277a0395d0Smrg
2840c5344fSmrg# Please send patches to <config-patches@gnu.org>.
297a0395d0Smrg#
307a0395d0Smrg# Configuration subroutine to validate and canonicalize a configuration type.
317a0395d0Smrg# Supply the specified configuration type as an argument.
327a0395d0Smrg# If it is invalid, we print an error message on stderr and exit with code 1.
337a0395d0Smrg# Otherwise, we print the canonical config type on stdout and succeed.
347a0395d0Smrg
352adc0320Smrg# You can get the latest version of this script from:
36765b7306Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
372adc0320Smrg
387a0395d0Smrg# This file is supposed to be the same for all GNU packages
397a0395d0Smrg# and recognize all the CPU types, system types and aliases
407a0395d0Smrg# that are meaningful with *any* GNU software.
417a0395d0Smrg# Each package is responsible for reporting which valid configurations
427a0395d0Smrg# it does not support.  The user should be able to distinguish
437a0395d0Smrg# a failure to support a valid configuration from a meaningless
447a0395d0Smrg# configuration.
457a0395d0Smrg
467a0395d0Smrg# The goal of this file is to map all the various variations of a given
477a0395d0Smrg# machine specification into a single specification in the form:
487a0395d0Smrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
497a0395d0Smrg# or in some cases, the newer four-part form:
507a0395d0Smrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
517a0395d0Smrg# It is wrong to echo any other type of specification.
527a0395d0Smrg
530d22642bSmrgme=$(echo "$0" | sed -e 's,.*/,,')
547a0395d0Smrg
557a0395d0Smrgusage="\
5640c5344fSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
577a0395d0Smrg
587a0395d0SmrgCanonicalize a configuration name.
597a0395d0Smrg
606c3c2bceSmrgOptions:
617a0395d0Smrg  -h, --help         print this help, then exit
627a0395d0Smrg  -t, --time-stamp   print date of last modification, then exit
637a0395d0Smrg  -v, --version      print version number, then exit
647a0395d0Smrg
657a0395d0SmrgReport bugs and patches to <config-patches@gnu.org>."
667a0395d0Smrg
677a0395d0Smrgversion="\
687a0395d0SmrgGNU config.sub ($timestamp)
697a0395d0Smrg
70765b7306SmrgCopyright 1992-2021 Free Software Foundation, Inc.
717a0395d0Smrg
727a0395d0SmrgThis is free software; see the source for copying conditions.  There is NO
737a0395d0Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
747a0395d0Smrg
757a0395d0Smrghelp="
767a0395d0SmrgTry \`$me --help' for more information."
777a0395d0Smrg
787a0395d0Smrg# Parse command line
797a0395d0Smrgwhile test $# -gt 0 ; do
807a0395d0Smrg  case $1 in
817a0395d0Smrg    --time-stamp | --time* | -t )
827a0395d0Smrg       echo "$timestamp" ; exit ;;
837a0395d0Smrg    --version | -v )
847a0395d0Smrg       echo "$version" ; exit ;;
857a0395d0Smrg    --help | --h* | -h )
867a0395d0Smrg       echo "$usage"; exit ;;
877a0395d0Smrg    -- )     # Stop option processing
887a0395d0Smrg       shift; break ;;
897a0395d0Smrg    - )	# Use stdin as input.
907a0395d0Smrg       break ;;
917a0395d0Smrg    -* )
920d22642bSmrg       echo "$me: invalid option $1$help" >&2
937a0395d0Smrg       exit 1 ;;
947a0395d0Smrg
957a0395d0Smrg    *local*)
967a0395d0Smrg       # First pass through any local machine types.
976c3c2bceSmrg       echo "$1"
987a0395d0Smrg       exit ;;
997a0395d0Smrg
1007a0395d0Smrg    * )
1017a0395d0Smrg       break ;;
1027a0395d0Smrg  esac
1037a0395d0Smrgdone
1047a0395d0Smrg
1057a0395d0Smrgcase $# in
1067a0395d0Smrg 0) echo "$me: missing argument$help" >&2
1077a0395d0Smrg    exit 1;;
1087a0395d0Smrg 1) ;;
1097a0395d0Smrg *) echo "$me: too many arguments$help" >&2
1107a0395d0Smrg    exit 1;;
1117a0395d0Smrgesac
1127a0395d0Smrg
1136c3c2bceSmrg# Split fields of configuration type
1140d22642bSmrg# shellcheck disable=SC2162
1150d22642bSmrgIFS="-" read field1 field2 field3 field4 <<EOF
1166c3c2bceSmrg$1
1176c3c2bceSmrgEOF
1187a0395d0Smrg
1196c3c2bceSmrg# Separate into logical components for further validation
1206c3c2bceSmrgcase $1 in
1216c3c2bceSmrg	*-*-*-*-*)
1226c3c2bceSmrg		echo Invalid configuration \`"$1"\': more than four components >&2
1236c3c2bceSmrg		exit 1
1247a0395d0Smrg		;;
1256c3c2bceSmrg	*-*-*-*)
1266c3c2bceSmrg		basic_machine=$field1-$field2
1270d22642bSmrg		basic_os=$field3-$field4
1287a0395d0Smrg		;;
1296c3c2bceSmrg	*-*-*)
1306c3c2bceSmrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
1316c3c2bceSmrg		# parts
1326c3c2bceSmrg		maybe_os=$field2-$field3
1336c3c2bceSmrg		case $maybe_os in
1340d22642bSmrg			nto-qnx* | linux-* | uclinux-uclibc* \
1356c3c2bceSmrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
1366c3c2bceSmrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
1376c3c2bceSmrg			| storm-chaos* | os2-emx* | rtmk-nova*)
1386c3c2bceSmrg				basic_machine=$field1
1390d22642bSmrg				basic_os=$maybe_os
1406c3c2bceSmrg				;;
1416c3c2bceSmrg			android-linux)
1426c3c2bceSmrg				basic_machine=$field1-unknown
1430d22642bSmrg				basic_os=linux-android
1446c3c2bceSmrg				;;
1456c3c2bceSmrg			*)
1466c3c2bceSmrg				basic_machine=$field1-$field2
1470d22642bSmrg				basic_os=$field3
1486c3c2bceSmrg				;;
1496c3c2bceSmrg		esac
1507a0395d0Smrg		;;
1516c3c2bceSmrg	*-*)
1520d22642bSmrg		# A lone config we happen to match not fitting any pattern
1536c3c2bceSmrg		case $field1-$field2 in
1546c3c2bceSmrg			decstation-3100)
1556c3c2bceSmrg				basic_machine=mips-dec
1560d22642bSmrg				basic_os=
1576c3c2bceSmrg				;;
1586c3c2bceSmrg			*-*)
1596c3c2bceSmrg				# Second component is usually, but not always the OS
1606c3c2bceSmrg				case $field2 in
1616c3c2bceSmrg					# Prevent following clause from handling this valid os
1626c3c2bceSmrg					sun*os*)
1636c3c2bceSmrg						basic_machine=$field1
1640d22642bSmrg						basic_os=$field2
1656c3c2bceSmrg						;;
1666c3c2bceSmrg					# Manufacturers
1676c3c2bceSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
1686c3c2bceSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
1696c3c2bceSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
1706c3c2bceSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
1716c3c2bceSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
1726c3c2bceSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
1736c3c2bceSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
1746c3c2bceSmrg					| microblaze* | sim | cisco \
1756c3c2bceSmrg					| oki | wec | wrs | winbond)
1766c3c2bceSmrg						basic_machine=$field1-$field2
1770d22642bSmrg						basic_os=
1786c3c2bceSmrg						;;
1796c3c2bceSmrg					*)
1806c3c2bceSmrg						basic_machine=$field1
1810d22642bSmrg						basic_os=$field2
1826c3c2bceSmrg						;;
1836c3c2bceSmrg				esac
1846c3c2bceSmrg			;;
1856c3c2bceSmrg		esac
1867a0395d0Smrg		;;
1876c3c2bceSmrg	*)
1886c3c2bceSmrg		# Convert single-component short-hands not valid as part of
1896c3c2bceSmrg		# multi-component configurations.
1906c3c2bceSmrg		case $field1 in
1916c3c2bceSmrg			386bsd)
1926c3c2bceSmrg				basic_machine=i386-pc
1930d22642bSmrg				basic_os=bsd
1946c3c2bceSmrg				;;
1956c3c2bceSmrg			a29khif)
1966c3c2bceSmrg				basic_machine=a29k-amd
1970d22642bSmrg				basic_os=udi
1986c3c2bceSmrg				;;
1996c3c2bceSmrg			adobe68k)
2006c3c2bceSmrg				basic_machine=m68010-adobe
2010d22642bSmrg				basic_os=scout
2026c3c2bceSmrg				;;
2036c3c2bceSmrg			alliant)
2046c3c2bceSmrg				basic_machine=fx80-alliant
2050d22642bSmrg				basic_os=
2066c3c2bceSmrg				;;
2076c3c2bceSmrg			altos | altos3068)
2086c3c2bceSmrg				basic_machine=m68k-altos
2090d22642bSmrg				basic_os=
2106c3c2bceSmrg				;;
2116c3c2bceSmrg			am29k)
2126c3c2bceSmrg				basic_machine=a29k-none
2130d22642bSmrg				basic_os=bsd
2146c3c2bceSmrg				;;
2156c3c2bceSmrg			amdahl)
2166c3c2bceSmrg				basic_machine=580-amdahl
2170d22642bSmrg				basic_os=sysv
2186c3c2bceSmrg				;;
2196c3c2bceSmrg			amiga)
2206c3c2bceSmrg				basic_machine=m68k-unknown
2210d22642bSmrg				basic_os=
2226c3c2bceSmrg				;;
2236c3c2bceSmrg			amigaos | amigados)
2246c3c2bceSmrg				basic_machine=m68k-unknown
2250d22642bSmrg				basic_os=amigaos
2266c3c2bceSmrg				;;
2276c3c2bceSmrg			amigaunix | amix)
2286c3c2bceSmrg				basic_machine=m68k-unknown
2290d22642bSmrg				basic_os=sysv4
2306c3c2bceSmrg				;;
2316c3c2bceSmrg			apollo68)
2326c3c2bceSmrg				basic_machine=m68k-apollo
2330d22642bSmrg				basic_os=sysv
2346c3c2bceSmrg				;;
2356c3c2bceSmrg			apollo68bsd)
2366c3c2bceSmrg				basic_machine=m68k-apollo
2370d22642bSmrg				basic_os=bsd
2386c3c2bceSmrg				;;
2396c3c2bceSmrg			aros)
2406c3c2bceSmrg				basic_machine=i386-pc
2410d22642bSmrg				basic_os=aros
2426c3c2bceSmrg				;;
2436c3c2bceSmrg			aux)
2446c3c2bceSmrg				basic_machine=m68k-apple
2450d22642bSmrg				basic_os=aux
2466c3c2bceSmrg				;;
2476c3c2bceSmrg			balance)
2486c3c2bceSmrg				basic_machine=ns32k-sequent
2490d22642bSmrg				basic_os=dynix
2506c3c2bceSmrg				;;
2516c3c2bceSmrg			blackfin)
2526c3c2bceSmrg				basic_machine=bfin-unknown
2530d22642bSmrg				basic_os=linux
2546c3c2bceSmrg				;;
2556c3c2bceSmrg			cegcc)
2566c3c2bceSmrg				basic_machine=arm-unknown
2570d22642bSmrg				basic_os=cegcc
2586c3c2bceSmrg				;;
2596c3c2bceSmrg			convex-c1)
2606c3c2bceSmrg				basic_machine=c1-convex
2610d22642bSmrg				basic_os=bsd
2626c3c2bceSmrg				;;
2636c3c2bceSmrg			convex-c2)
2646c3c2bceSmrg				basic_machine=c2-convex
2650d22642bSmrg				basic_os=bsd
2666c3c2bceSmrg				;;
2676c3c2bceSmrg			convex-c32)
2686c3c2bceSmrg				basic_machine=c32-convex
2690d22642bSmrg				basic_os=bsd
2706c3c2bceSmrg				;;
2716c3c2bceSmrg			convex-c34)
2726c3c2bceSmrg				basic_machine=c34-convex
2730d22642bSmrg				basic_os=bsd
2746c3c2bceSmrg				;;
2756c3c2bceSmrg			convex-c38)
2766c3c2bceSmrg				basic_machine=c38-convex
2770d22642bSmrg				basic_os=bsd
2786c3c2bceSmrg				;;
2796c3c2bceSmrg			cray)
2806c3c2bceSmrg				basic_machine=j90-cray
2810d22642bSmrg				basic_os=unicos
2826c3c2bceSmrg				;;
2836c3c2bceSmrg			crds | unos)
2846c3c2bceSmrg				basic_machine=m68k-crds
2850d22642bSmrg				basic_os=
2866c3c2bceSmrg				;;
2876c3c2bceSmrg			da30)
2886c3c2bceSmrg				basic_machine=m68k-da30
2890d22642bSmrg				basic_os=
2906c3c2bceSmrg				;;
2916c3c2bceSmrg			decstation | pmax | pmin | dec3100 | decstatn)
2926c3c2bceSmrg				basic_machine=mips-dec
2930d22642bSmrg				basic_os=
2946c3c2bceSmrg				;;
2956c3c2bceSmrg			delta88)
2966c3c2bceSmrg				basic_machine=m88k-motorola
2970d22642bSmrg				basic_os=sysv3
2986c3c2bceSmrg				;;
2996c3c2bceSmrg			dicos)
3006c3c2bceSmrg				basic_machine=i686-pc
3010d22642bSmrg				basic_os=dicos
3026c3c2bceSmrg				;;
3036c3c2bceSmrg			djgpp)
3046c3c2bceSmrg				basic_machine=i586-pc
3050d22642bSmrg				basic_os=msdosdjgpp
3066c3c2bceSmrg				;;
3076c3c2bceSmrg			ebmon29k)
3086c3c2bceSmrg				basic_machine=a29k-amd
3090d22642bSmrg				basic_os=ebmon
3106c3c2bceSmrg				;;
3116c3c2bceSmrg			es1800 | OSE68k | ose68k | ose | OSE)
3126c3c2bceSmrg				basic_machine=m68k-ericsson
3130d22642bSmrg				basic_os=ose
3146c3c2bceSmrg				;;
3156c3c2bceSmrg			gmicro)
3166c3c2bceSmrg				basic_machine=tron-gmicro
3170d22642bSmrg				basic_os=sysv
3186c3c2bceSmrg				;;
3196c3c2bceSmrg			go32)
3206c3c2bceSmrg				basic_machine=i386-pc
3210d22642bSmrg				basic_os=go32
3226c3c2bceSmrg				;;
3236c3c2bceSmrg			h8300hms)
3246c3c2bceSmrg				basic_machine=h8300-hitachi
3250d22642bSmrg				basic_os=hms
3266c3c2bceSmrg				;;
3276c3c2bceSmrg			h8300xray)
3286c3c2bceSmrg				basic_machine=h8300-hitachi
3290d22642bSmrg				basic_os=xray
3306c3c2bceSmrg				;;
3316c3c2bceSmrg			h8500hms)
3326c3c2bceSmrg				basic_machine=h8500-hitachi
3330d22642bSmrg				basic_os=hms
3346c3c2bceSmrg				;;
3356c3c2bceSmrg			harris)
3366c3c2bceSmrg				basic_machine=m88k-harris
3370d22642bSmrg				basic_os=sysv3
3386c3c2bceSmrg				;;
3390d22642bSmrg			hp300 | hp300hpux)
3406c3c2bceSmrg				basic_machine=m68k-hp
3410d22642bSmrg				basic_os=hpux
3426c3c2bceSmrg				;;
3436c3c2bceSmrg			hp300bsd)
3446c3c2bceSmrg				basic_machine=m68k-hp
3450d22642bSmrg				basic_os=bsd
3466c3c2bceSmrg				;;
3476c3c2bceSmrg			hppaosf)
3486c3c2bceSmrg				basic_machine=hppa1.1-hp
3490d22642bSmrg				basic_os=osf
3506c3c2bceSmrg				;;
3516c3c2bceSmrg			hppro)
3526c3c2bceSmrg				basic_machine=hppa1.1-hp
3530d22642bSmrg				basic_os=proelf
3546c3c2bceSmrg				;;
3556c3c2bceSmrg			i386mach)
3566c3c2bceSmrg				basic_machine=i386-mach
3570d22642bSmrg				basic_os=mach
3586c3c2bceSmrg				;;
3596c3c2bceSmrg			isi68 | isi)
3606c3c2bceSmrg				basic_machine=m68k-isi
3610d22642bSmrg				basic_os=sysv
3626c3c2bceSmrg				;;
3636c3c2bceSmrg			m68knommu)
3646c3c2bceSmrg				basic_machine=m68k-unknown
3650d22642bSmrg				basic_os=linux
3666c3c2bceSmrg				;;
3676c3c2bceSmrg			magnum | m3230)
3686c3c2bceSmrg				basic_machine=mips-mips
3690d22642bSmrg				basic_os=sysv
3706c3c2bceSmrg				;;
3716c3c2bceSmrg			merlin)
3726c3c2bceSmrg				basic_machine=ns32k-utek
3730d22642bSmrg				basic_os=sysv
3746c3c2bceSmrg				;;
3756c3c2bceSmrg			mingw64)
3766c3c2bceSmrg				basic_machine=x86_64-pc
3770d22642bSmrg				basic_os=mingw64
3786c3c2bceSmrg				;;
3796c3c2bceSmrg			mingw32)
3806c3c2bceSmrg				basic_machine=i686-pc
3810d22642bSmrg				basic_os=mingw32
3826c3c2bceSmrg				;;
3836c3c2bceSmrg			mingw32ce)
3846c3c2bceSmrg				basic_machine=arm-unknown
3850d22642bSmrg				basic_os=mingw32ce
3866c3c2bceSmrg				;;
3876c3c2bceSmrg			monitor)
3886c3c2bceSmrg				basic_machine=m68k-rom68k
3890d22642bSmrg				basic_os=coff
3906c3c2bceSmrg				;;
3916c3c2bceSmrg			morphos)
3926c3c2bceSmrg				basic_machine=powerpc-unknown
3930d22642bSmrg				basic_os=morphos
3946c3c2bceSmrg				;;
3956c3c2bceSmrg			moxiebox)
3966c3c2bceSmrg				basic_machine=moxie-unknown
3970d22642bSmrg				basic_os=moxiebox
3986c3c2bceSmrg				;;
3996c3c2bceSmrg			msdos)
4006c3c2bceSmrg				basic_machine=i386-pc
4010d22642bSmrg				basic_os=msdos
4026c3c2bceSmrg				;;
4036c3c2bceSmrg			msys)
4046c3c2bceSmrg				basic_machine=i686-pc
4050d22642bSmrg				basic_os=msys
4066c3c2bceSmrg				;;
4076c3c2bceSmrg			mvs)
4086c3c2bceSmrg				basic_machine=i370-ibm
4090d22642bSmrg				basic_os=mvs
4106c3c2bceSmrg				;;
4116c3c2bceSmrg			nacl)
4126c3c2bceSmrg				basic_machine=le32-unknown
4130d22642bSmrg				basic_os=nacl
4146c3c2bceSmrg				;;
4156c3c2bceSmrg			ncr3000)
4166c3c2bceSmrg				basic_machine=i486-ncr
4170d22642bSmrg				basic_os=sysv4
4186c3c2bceSmrg				;;
4196c3c2bceSmrg			netbsd386)
4206c3c2bceSmrg				basic_machine=i386-pc
4210d22642bSmrg				basic_os=netbsd
4226c3c2bceSmrg				;;
4236c3c2bceSmrg			netwinder)
4246c3c2bceSmrg				basic_machine=armv4l-rebel
4250d22642bSmrg				basic_os=linux
4266c3c2bceSmrg				;;
4276c3c2bceSmrg			news | news700 | news800 | news900)
4286c3c2bceSmrg				basic_machine=m68k-sony
4290d22642bSmrg				basic_os=newsos
4306c3c2bceSmrg				;;
4316c3c2bceSmrg			news1000)
4326c3c2bceSmrg				basic_machine=m68030-sony
4330d22642bSmrg				basic_os=newsos
4346c3c2bceSmrg				;;
4356c3c2bceSmrg			necv70)
4366c3c2bceSmrg				basic_machine=v70-nec
4370d22642bSmrg				basic_os=sysv
4386c3c2bceSmrg				;;
4396c3c2bceSmrg			nh3000)
4406c3c2bceSmrg				basic_machine=m68k-harris
4410d22642bSmrg				basic_os=cxux
4426c3c2bceSmrg				;;
4436c3c2bceSmrg			nh[45]000)
4446c3c2bceSmrg				basic_machine=m88k-harris
4450d22642bSmrg				basic_os=cxux
4466c3c2bceSmrg				;;
4476c3c2bceSmrg			nindy960)
4486c3c2bceSmrg				basic_machine=i960-intel
4490d22642bSmrg				basic_os=nindy
4506c3c2bceSmrg				;;
4516c3c2bceSmrg			mon960)
4526c3c2bceSmrg				basic_machine=i960-intel
4530d22642bSmrg				basic_os=mon960
4546c3c2bceSmrg				;;
4556c3c2bceSmrg			nonstopux)
4566c3c2bceSmrg				basic_machine=mips-compaq
4570d22642bSmrg				basic_os=nonstopux
4586c3c2bceSmrg				;;
4596c3c2bceSmrg			os400)
4606c3c2bceSmrg				basic_machine=powerpc-ibm
4610d22642bSmrg				basic_os=os400
4626c3c2bceSmrg				;;
4636c3c2bceSmrg			OSE68000 | ose68000)
4646c3c2bceSmrg				basic_machine=m68000-ericsson
4650d22642bSmrg				basic_os=ose
4666c3c2bceSmrg				;;
4676c3c2bceSmrg			os68k)
4686c3c2bceSmrg				basic_machine=m68k-none
4690d22642bSmrg				basic_os=os68k
4706c3c2bceSmrg				;;
4716c3c2bceSmrg			paragon)
4726c3c2bceSmrg				basic_machine=i860-intel
4730d22642bSmrg				basic_os=osf
4746c3c2bceSmrg				;;
4756c3c2bceSmrg			parisc)
4766c3c2bceSmrg				basic_machine=hppa-unknown
4770d22642bSmrg				basic_os=linux
4780d22642bSmrg				;;
4790d22642bSmrg			psp)
4800d22642bSmrg				basic_machine=mipsallegrexel-sony
4810d22642bSmrg				basic_os=psp
4826c3c2bceSmrg				;;
4836c3c2bceSmrg			pw32)
4846c3c2bceSmrg				basic_machine=i586-unknown
4850d22642bSmrg				basic_os=pw32
4866c3c2bceSmrg				;;
4876c3c2bceSmrg			rdos | rdos64)
4886c3c2bceSmrg				basic_machine=x86_64-pc
4890d22642bSmrg				basic_os=rdos
4906c3c2bceSmrg				;;
4916c3c2bceSmrg			rdos32)
4926c3c2bceSmrg				basic_machine=i386-pc
4930d22642bSmrg				basic_os=rdos
4946c3c2bceSmrg				;;
4956c3c2bceSmrg			rom68k)
4966c3c2bceSmrg				basic_machine=m68k-rom68k
4970d22642bSmrg				basic_os=coff
4986c3c2bceSmrg				;;
4996c3c2bceSmrg			sa29200)
5006c3c2bceSmrg				basic_machine=a29k-amd
5010d22642bSmrg				basic_os=udi
5026c3c2bceSmrg				;;
5036c3c2bceSmrg			sei)
5046c3c2bceSmrg				basic_machine=mips-sei
5050d22642bSmrg				basic_os=seiux
5066c3c2bceSmrg				;;
5076c3c2bceSmrg			sequent)
5086c3c2bceSmrg				basic_machine=i386-sequent
5090d22642bSmrg				basic_os=
5106c3c2bceSmrg				;;
5116c3c2bceSmrg			sps7)
5126c3c2bceSmrg				basic_machine=m68k-bull
5130d22642bSmrg				basic_os=sysv2
5146c3c2bceSmrg				;;
5156c3c2bceSmrg			st2000)
5166c3c2bceSmrg				basic_machine=m68k-tandem
5170d22642bSmrg				basic_os=
5186c3c2bceSmrg				;;
5196c3c2bceSmrg			stratus)
5206c3c2bceSmrg				basic_machine=i860-stratus
5210d22642bSmrg				basic_os=sysv4
5226c3c2bceSmrg				;;
5236c3c2bceSmrg			sun2)
5246c3c2bceSmrg				basic_machine=m68000-sun
5250d22642bSmrg				basic_os=
5266c3c2bceSmrg				;;
5276c3c2bceSmrg			sun2os3)
5286c3c2bceSmrg				basic_machine=m68000-sun
5290d22642bSmrg				basic_os=sunos3
5306c3c2bceSmrg				;;
5316c3c2bceSmrg			sun2os4)
5326c3c2bceSmrg				basic_machine=m68000-sun
5330d22642bSmrg				basic_os=sunos4
5346c3c2bceSmrg				;;
5356c3c2bceSmrg			sun3)
5366c3c2bceSmrg				basic_machine=m68k-sun
5370d22642bSmrg				basic_os=
5386c3c2bceSmrg				;;
5396c3c2bceSmrg			sun3os3)
5406c3c2bceSmrg				basic_machine=m68k-sun
5410d22642bSmrg				basic_os=sunos3
5426c3c2bceSmrg				;;
5436c3c2bceSmrg			sun3os4)
5446c3c2bceSmrg				basic_machine=m68k-sun
5450d22642bSmrg				basic_os=sunos4
5466c3c2bceSmrg				;;
5476c3c2bceSmrg			sun4)
5486c3c2bceSmrg				basic_machine=sparc-sun
5490d22642bSmrg				basic_os=
5506c3c2bceSmrg				;;
5516c3c2bceSmrg			sun4os3)
5526c3c2bceSmrg				basic_machine=sparc-sun
5530d22642bSmrg				basic_os=sunos3
5546c3c2bceSmrg				;;
5556c3c2bceSmrg			sun4os4)
5566c3c2bceSmrg				basic_machine=sparc-sun
5570d22642bSmrg				basic_os=sunos4
5586c3c2bceSmrg				;;
5596c3c2bceSmrg			sun4sol2)
5606c3c2bceSmrg				basic_machine=sparc-sun
5610d22642bSmrg				basic_os=solaris2
5626c3c2bceSmrg				;;
5636c3c2bceSmrg			sun386 | sun386i | roadrunner)
5646c3c2bceSmrg				basic_machine=i386-sun
5650d22642bSmrg				basic_os=
5666c3c2bceSmrg				;;
5676c3c2bceSmrg			sv1)
5686c3c2bceSmrg				basic_machine=sv1-cray
5690d22642bSmrg				basic_os=unicos
5706c3c2bceSmrg				;;
5716c3c2bceSmrg			symmetry)
5726c3c2bceSmrg				basic_machine=i386-sequent
5730d22642bSmrg				basic_os=dynix
5746c3c2bceSmrg				;;
5756c3c2bceSmrg			t3e)
5766c3c2bceSmrg				basic_machine=alphaev5-cray
5770d22642bSmrg				basic_os=unicos
5786c3c2bceSmrg				;;
5796c3c2bceSmrg			t90)
5806c3c2bceSmrg				basic_machine=t90-cray
5810d22642bSmrg				basic_os=unicos
5826c3c2bceSmrg				;;
5836c3c2bceSmrg			toad1)
5846c3c2bceSmrg				basic_machine=pdp10-xkl
5850d22642bSmrg				basic_os=tops20
5866c3c2bceSmrg				;;
5876c3c2bceSmrg			tpf)
5886c3c2bceSmrg				basic_machine=s390x-ibm
5890d22642bSmrg				basic_os=tpf
5906c3c2bceSmrg				;;
5916c3c2bceSmrg			udi29k)
5926c3c2bceSmrg				basic_machine=a29k-amd
5930d22642bSmrg				basic_os=udi
5946c3c2bceSmrg				;;
5956c3c2bceSmrg			ultra3)
5966c3c2bceSmrg				basic_machine=a29k-nyu
5970d22642bSmrg				basic_os=sym1
5986c3c2bceSmrg				;;
5996c3c2bceSmrg			v810 | necv810)
6006c3c2bceSmrg				basic_machine=v810-nec
6010d22642bSmrg				basic_os=none
6026c3c2bceSmrg				;;
6036c3c2bceSmrg			vaxv)
6046c3c2bceSmrg				basic_machine=vax-dec
6050d22642bSmrg				basic_os=sysv
6066c3c2bceSmrg				;;
6076c3c2bceSmrg			vms)
6086c3c2bceSmrg				basic_machine=vax-dec
6090d22642bSmrg				basic_os=vms
6100d22642bSmrg				;;
6110d22642bSmrg			vsta)
6120d22642bSmrg				basic_machine=i386-pc
6130d22642bSmrg				basic_os=vsta
6146c3c2bceSmrg				;;
6156c3c2bceSmrg			vxworks960)
6166c3c2bceSmrg				basic_machine=i960-wrs
6170d22642bSmrg				basic_os=vxworks
6186c3c2bceSmrg				;;
6196c3c2bceSmrg			vxworks68)
6206c3c2bceSmrg				basic_machine=m68k-wrs
6210d22642bSmrg				basic_os=vxworks
6226c3c2bceSmrg				;;
6236c3c2bceSmrg			vxworks29k)
6246c3c2bceSmrg				basic_machine=a29k-wrs
6250d22642bSmrg				basic_os=vxworks
6266c3c2bceSmrg				;;
6276c3c2bceSmrg			xbox)
6286c3c2bceSmrg				basic_machine=i686-pc
6290d22642bSmrg				basic_os=mingw32
6306c3c2bceSmrg				;;
6316c3c2bceSmrg			ymp)
6326c3c2bceSmrg				basic_machine=ymp-cray
6330d22642bSmrg				basic_os=unicos
6346c3c2bceSmrg				;;
6356c3c2bceSmrg			*)
6366c3c2bceSmrg				basic_machine=$1
6370d22642bSmrg				basic_os=
6386c3c2bceSmrg				;;
6396c3c2bceSmrg		esac
6407a0395d0Smrg		;;
6417a0395d0Smrgesac
6427a0395d0Smrg
6436c3c2bceSmrg# Decode 1-component or ad-hoc basic machines
6447a0395d0Smrgcase $basic_machine in
6456c3c2bceSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
6466c3c2bceSmrg	# some cases the only manufacturer, in others, it is the most popular.
6476c3c2bceSmrg	w89k)
6486c3c2bceSmrg		cpu=hppa1.1
6496c3c2bceSmrg		vendor=winbond
6507a0395d0Smrg		;;
6516c3c2bceSmrg	op50n)
6526c3c2bceSmrg		cpu=hppa1.1
6536c3c2bceSmrg		vendor=oki
6547a0395d0Smrg		;;
6556c3c2bceSmrg	op60c)
6566c3c2bceSmrg		cpu=hppa1.1
6576c3c2bceSmrg		vendor=oki
6587a0395d0Smrg		;;
6596c3c2bceSmrg	ibm*)
6606c3c2bceSmrg		cpu=i370
6616c3c2bceSmrg		vendor=ibm
6628abc0ccfSmrg		;;
6636c3c2bceSmrg	orion105)
6646c3c2bceSmrg		cpu=clipper
6656c3c2bceSmrg		vendor=highlevel
6668abc0ccfSmrg		;;
6676c3c2bceSmrg	mac | mpw | mac-mpw)
6686c3c2bceSmrg		cpu=m68k
6696c3c2bceSmrg		vendor=apple
6708abc0ccfSmrg		;;
6716c3c2bceSmrg	pmac | pmac-mpw)
6726c3c2bceSmrg		cpu=powerpc
6736c3c2bceSmrg		vendor=apple
6748abc0ccfSmrg		;;
6758abc0ccfSmrg
6767a0395d0Smrg	# Recognize the various machine names and aliases which stand
6777a0395d0Smrg	# for a CPU type and a company and sometimes even an OS.
6787a0395d0Smrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
6796c3c2bceSmrg		cpu=m68000
6806c3c2bceSmrg		vendor=att
6817a0395d0Smrg		;;
6827a0395d0Smrg	3b*)
6836c3c2bceSmrg		cpu=we32k
6846c3c2bceSmrg		vendor=att
6857a0395d0Smrg		;;
6862adc0320Smrg	bluegene*)
6876c3c2bceSmrg		cpu=powerpc
6886c3c2bceSmrg		vendor=ibm
6890d22642bSmrg		basic_os=cnk
6907a0395d0Smrg		;;
6917a0395d0Smrg	decsystem10* | dec10*)
6926c3c2bceSmrg		cpu=pdp10
6936c3c2bceSmrg		vendor=dec
6940d22642bSmrg		basic_os=tops10
6957a0395d0Smrg		;;
6967a0395d0Smrg	decsystem20* | dec20*)
6976c3c2bceSmrg		cpu=pdp10
6986c3c2bceSmrg		vendor=dec
6990d22642bSmrg		basic_os=tops20
7007a0395d0Smrg		;;
7017a0395d0Smrg	delta | 3300 | motorola-3300 | motorola-delta \
7027a0395d0Smrg	      | 3300-motorola | delta-motorola)
7036c3c2bceSmrg		cpu=m68k
7046c3c2bceSmrg		vendor=motorola
7057a0395d0Smrg		;;
7066c3c2bceSmrg	dpx2*)
7076c3c2bceSmrg		cpu=m68k
7086c3c2bceSmrg		vendor=bull
7090d22642bSmrg		basic_os=sysv3
7107a0395d0Smrg		;;
7117a0395d0Smrg	encore | umax | mmax)
7126c3c2bceSmrg		cpu=ns32k
7136c3c2bceSmrg		vendor=encore
7147a0395d0Smrg		;;
7156c3c2bceSmrg	elxsi)
7166c3c2bceSmrg		cpu=elxsi
7176c3c2bceSmrg		vendor=elxsi
7180d22642bSmrg		basic_os=${basic_os:-bsd}
7197a0395d0Smrg		;;
7207a0395d0Smrg	fx2800)
7216c3c2bceSmrg		cpu=i860
7226c3c2bceSmrg		vendor=alliant
7237a0395d0Smrg		;;
7247a0395d0Smrg	genix)
7256c3c2bceSmrg		cpu=ns32k
7266c3c2bceSmrg		vendor=ns
7277a0395d0Smrg		;;
7287a0395d0Smrg	h3050r* | hiux*)
7296c3c2bceSmrg		cpu=hppa1.1
7306c3c2bceSmrg		vendor=hitachi
7310d22642bSmrg		basic_os=hiuxwe2
7327a0395d0Smrg		;;
7337a0395d0Smrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
7346c3c2bceSmrg		cpu=hppa1.0
7356c3c2bceSmrg		vendor=hp
7367a0395d0Smrg		;;
7377a0395d0Smrg	hp9k2[0-9][0-9] | hp9k31[0-9])
7386c3c2bceSmrg		cpu=m68000
7396c3c2bceSmrg		vendor=hp
7407a0395d0Smrg		;;
7417a0395d0Smrg	hp9k3[2-9][0-9])
7426c3c2bceSmrg		cpu=m68k
7436c3c2bceSmrg		vendor=hp
7447a0395d0Smrg		;;
7457a0395d0Smrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
7466c3c2bceSmrg		cpu=hppa1.0
7476c3c2bceSmrg		vendor=hp
7487a0395d0Smrg		;;
7497a0395d0Smrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
7506c3c2bceSmrg		cpu=hppa1.1
7516c3c2bceSmrg		vendor=hp
7527a0395d0Smrg		;;
7537a0395d0Smrg	hp9k78[0-9] | hp78[0-9])
7547a0395d0Smrg		# FIXME: really hppa2.0-hp
7556c3c2bceSmrg		cpu=hppa1.1
7566c3c2bceSmrg		vendor=hp
7577a0395d0Smrg		;;
7587a0395d0Smrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
7597a0395d0Smrg		# FIXME: really hppa2.0-hp
7606c3c2bceSmrg		cpu=hppa1.1
7616c3c2bceSmrg		vendor=hp
7627a0395d0Smrg		;;
7637a0395d0Smrg	hp9k8[0-9][13679] | hp8[0-9][13679])
7646c3c2bceSmrg		cpu=hppa1.1
7656c3c2bceSmrg		vendor=hp
7667a0395d0Smrg		;;
7677a0395d0Smrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
7686c3c2bceSmrg		cpu=hppa1.0
7696c3c2bceSmrg		vendor=hp
7707a0395d0Smrg		;;
7717a0395d0Smrg	i*86v32)
7720d22642bSmrg		cpu=$(echo "$1" | sed -e 's/86.*/86/')
7736c3c2bceSmrg		vendor=pc
7740d22642bSmrg		basic_os=sysv32
7757a0395d0Smrg		;;
7767a0395d0Smrg	i*86v4*)
7770d22642bSmrg		cpu=$(echo "$1" | sed -e 's/86.*/86/')
7786c3c2bceSmrg		vendor=pc
7790d22642bSmrg		basic_os=sysv4
7807a0395d0Smrg		;;
7817a0395d0Smrg	i*86v)
7820d22642bSmrg		cpu=$(echo "$1" | sed -e 's/86.*/86/')
7836c3c2bceSmrg		vendor=pc
7840d22642bSmrg		basic_os=sysv
7857a0395d0Smrg		;;
7867a0395d0Smrg	i*86sol2)
7870d22642bSmrg		cpu=$(echo "$1" | sed -e 's/86.*/86/')
7886c3c2bceSmrg		vendor=pc
7890d22642bSmrg		basic_os=solaris2
7907a0395d0Smrg		;;
7916c3c2bceSmrg	j90 | j90-cray)
7926c3c2bceSmrg		cpu=j90
7936c3c2bceSmrg		vendor=cray
7940d22642bSmrg		basic_os=${basic_os:-unicos}
7957a0395d0Smrg		;;
7967a0395d0Smrg	iris | iris4d)
7976c3c2bceSmrg		cpu=mips
7986c3c2bceSmrg		vendor=sgi
7990d22642bSmrg		case $basic_os in
8006c3c2bceSmrg		    irix*)
8017a0395d0Smrg			;;
8027a0395d0Smrg		    *)
8030d22642bSmrg			basic_os=irix4
8047a0395d0Smrg			;;
8057a0395d0Smrg		esac
8067a0395d0Smrg		;;
8077a0395d0Smrg	miniframe)
8086c3c2bceSmrg		cpu=m68000
8096c3c2bceSmrg		vendor=convergent
8107a0395d0Smrg		;;
8116c3c2bceSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
8126c3c2bceSmrg		cpu=m68k
8136c3c2bceSmrg		vendor=atari
8140d22642bSmrg		basic_os=mint
8157a0395d0Smrg		;;
816765b7306Smrg	mipsEE* | ee)
817765b7306Smrg		cpu=mips64r5900el
818765b7306Smrg		vendor=scei
819765b7306Smrg		case $os in
820765b7306Smrg		    linux*)
821765b7306Smrg			;;
822765b7306Smrg		    *)
823765b7306Smrg			os=elf
824765b7306Smrg			;;
825765b7306Smrg		esac
826765b7306Smrg		;;
827765b7306Smrg	iop)
828765b7306Smrg		cpu=mipsel
829765b7306Smrg		vendor=scei
830765b7306Smrg		os=irx
831765b7306Smrg		;;
832765b7306Smrg	dvp)
833765b7306Smrg		cpu=dvp
834765b7306Smrg		vendor=scei
835765b7306Smrg		os=elf
836765b7306Smrg		;;
8377a0395d0Smrg	news-3600 | risc-news)
8386c3c2bceSmrg		cpu=mips
8396c3c2bceSmrg		vendor=sony
8400d22642bSmrg		basic_os=newsos
8417a0395d0Smrg		;;
8426c3c2bceSmrg	next | m*-next)
8436c3c2bceSmrg		cpu=m68k
8446c3c2bceSmrg		vendor=next
8450d22642bSmrg		case $basic_os in
8460d22642bSmrg		    openstep*)
8470d22642bSmrg		        ;;
8480d22642bSmrg		    nextstep*)
8497a0395d0Smrg			;;
8506c3c2bceSmrg		    ns2*)
8510d22642bSmrg		      basic_os=nextstep2
8527a0395d0Smrg			;;
8537a0395d0Smrg		    *)
8540d22642bSmrg		      basic_os=nextstep3
8557a0395d0Smrg			;;
8567a0395d0Smrg		esac
8577a0395d0Smrg		;;
8587a0395d0Smrg	np1)
8596c3c2bceSmrg		cpu=np1
8606c3c2bceSmrg		vendor=gould
8617a0395d0Smrg		;;
8627a0395d0Smrg	op50n-* | op60c-*)
8636c3c2bceSmrg		cpu=hppa1.1
8646c3c2bceSmrg		vendor=oki
8650d22642bSmrg		basic_os=proelf
8667a0395d0Smrg		;;
8677a0395d0Smrg	pa-hitachi)
8686c3c2bceSmrg		cpu=hppa1.1
8696c3c2bceSmrg		vendor=hitachi
8700d22642bSmrg		basic_os=hiuxwe2
8717a0395d0Smrg		;;
8727a0395d0Smrg	pbd)
8736c3c2bceSmrg		cpu=sparc
8746c3c2bceSmrg		vendor=tti
8757a0395d0Smrg		;;
8767a0395d0Smrg	pbb)
8776c3c2bceSmrg		cpu=m68k
8786c3c2bceSmrg		vendor=tti
8797a0395d0Smrg		;;
8806c3c2bceSmrg	pc532)
8816c3c2bceSmrg		cpu=ns32k
8826c3c2bceSmrg		vendor=pc532
8837a0395d0Smrg		;;
8847a0395d0Smrg	pn)
8856c3c2bceSmrg		cpu=pn
8866c3c2bceSmrg		vendor=gould
8877a0395d0Smrg		;;
8886c3c2bceSmrg	power)
8896c3c2bceSmrg		cpu=power
8906c3c2bceSmrg		vendor=ibm
8917a0395d0Smrg		;;
8927a0395d0Smrg	ps2)
8936c3c2bceSmrg		cpu=i386
8946c3c2bceSmrg		vendor=ibm
8957a0395d0Smrg		;;
8967a0395d0Smrg	rm[46]00)
8976c3c2bceSmrg		cpu=mips
8986c3c2bceSmrg		vendor=siemens
8997a0395d0Smrg		;;
9007a0395d0Smrg	rtpc | rtpc-*)
9016c3c2bceSmrg		cpu=romp
9026c3c2bceSmrg		vendor=ibm
9037a0395d0Smrg		;;
9046c3c2bceSmrg	sde)
9056c3c2bceSmrg		cpu=mipsisa32
9066c3c2bceSmrg		vendor=sde
9070d22642bSmrg		basic_os=${basic_os:-elf}
9087a0395d0Smrg		;;
9096c3c2bceSmrg	simso-wrs)
9106c3c2bceSmrg		cpu=sparclite
9116c3c2bceSmrg		vendor=wrs
9120d22642bSmrg		basic_os=vxworks
9137a0395d0Smrg		;;
9146c3c2bceSmrg	tower | tower-32)
9156c3c2bceSmrg		cpu=m68k
9166c3c2bceSmrg		vendor=ncr
9177a0395d0Smrg		;;
9186c3c2bceSmrg	vpp*|vx|vx-*)
9196c3c2bceSmrg		cpu=f301
9206c3c2bceSmrg		vendor=fujitsu
9217a0395d0Smrg		;;
9226c3c2bceSmrg	w65)
9236c3c2bceSmrg		cpu=w65
9246c3c2bceSmrg		vendor=wdc
9257a0395d0Smrg		;;
9266c3c2bceSmrg	w89k-*)
9276c3c2bceSmrg		cpu=hppa1.1
9286c3c2bceSmrg		vendor=winbond
9290d22642bSmrg		basic_os=proelf
9307a0395d0Smrg		;;
9316c3c2bceSmrg	none)
9326c3c2bceSmrg		cpu=none
9336c3c2bceSmrg		vendor=none
9347a0395d0Smrg		;;
9356c3c2bceSmrg	leon|leon[3-9])
9366c3c2bceSmrg		cpu=sparc
9376c3c2bceSmrg		vendor=$basic_machine
9387a0395d0Smrg		;;
9396c3c2bceSmrg	leon-*|leon[3-9]-*)
9406c3c2bceSmrg		cpu=sparc
9410d22642bSmrg		vendor=$(echo "$basic_machine" | sed 's/-.*//')
9427a0395d0Smrg		;;
9436c3c2bceSmrg
9446c3c2bceSmrg	*-*)
9450d22642bSmrg		# shellcheck disable=SC2162
9460d22642bSmrg		IFS="-" read cpu vendor <<EOF
9476c3c2bceSmrg$basic_machine
9486c3c2bceSmrgEOF
9497a0395d0Smrg		;;
9506c3c2bceSmrg	# We use `pc' rather than `unknown'
9516c3c2bceSmrg	# because (1) that's what they normally are, and
9526c3c2bceSmrg	# (2) the word "unknown" tends to confuse beginning users.
9536c3c2bceSmrg	i*86 | x86_64)
9546c3c2bceSmrg		cpu=$basic_machine
9556c3c2bceSmrg		vendor=pc
9567a0395d0Smrg		;;
9576c3c2bceSmrg	# These rules are duplicated from below for sake of the special case above;
9586c3c2bceSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
9596c3c2bceSmrg	pc98)
9606c3c2bceSmrg		cpu=i386
9616c3c2bceSmrg		vendor=pc
9627a0395d0Smrg		;;
9636c3c2bceSmrg	x64 | amd64)
9646c3c2bceSmrg		cpu=x86_64
9656c3c2bceSmrg		vendor=pc
9667a0395d0Smrg		;;
9676c3c2bceSmrg	# Recognize the basic CPU types without company name.
9686c3c2bceSmrg	*)
9696c3c2bceSmrg		cpu=$basic_machine
9706c3c2bceSmrg		vendor=unknown
9717a0395d0Smrg		;;
9726c3c2bceSmrgesac
9736c3c2bceSmrg
9746c3c2bceSmrgunset -v basic_machine
9756c3c2bceSmrg
9766c3c2bceSmrg# Decode basic machines in the full and proper CPU-Company form.
9776c3c2bceSmrgcase $cpu-$vendor in
9780d22642bSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
9796c3c2bceSmrg	# some cases the only manufacturer, in others, it is the most popular.
9806c3c2bceSmrg	craynv-unknown)
9816c3c2bceSmrg		vendor=cray
9820d22642bSmrg		basic_os=${basic_os:-unicosmp}
9838abc0ccfSmrg		;;
9846c3c2bceSmrg	c90-unknown | c90-cray)
9856c3c2bceSmrg		vendor=cray
9860d22642bSmrg		basic_os=${Basic_os:-unicos}
9877a0395d0Smrg		;;
9886c3c2bceSmrg	fx80-unknown)
9896c3c2bceSmrg		vendor=alliant
9907a0395d0Smrg		;;
9916c3c2bceSmrg	romp-unknown)
9926c3c2bceSmrg		vendor=ibm
9937a0395d0Smrg		;;
9946c3c2bceSmrg	mmix-unknown)
9956c3c2bceSmrg		vendor=knuth
9967a0395d0Smrg		;;
9976c3c2bceSmrg	microblaze-unknown | microblazeel-unknown)
9986c3c2bceSmrg		vendor=xilinx
9997a0395d0Smrg		;;
10006c3c2bceSmrg	rs6000-unknown)
10016c3c2bceSmrg		vendor=ibm
10027a0395d0Smrg		;;
10036c3c2bceSmrg	vax-unknown)
10046c3c2bceSmrg		vendor=dec
10057a0395d0Smrg		;;
10066c3c2bceSmrg	pdp11-unknown)
10076c3c2bceSmrg		vendor=dec
10087a0395d0Smrg		;;
10096c3c2bceSmrg	we32k-unknown)
10106c3c2bceSmrg		vendor=att
10117a0395d0Smrg		;;
10126c3c2bceSmrg	cydra-unknown)
10136c3c2bceSmrg		vendor=cydrome
10147a0395d0Smrg		;;
10156c3c2bceSmrg	i370-ibm*)
10166c3c2bceSmrg		vendor=ibm
10177a0395d0Smrg		;;
10186c3c2bceSmrg	orion-unknown)
10196c3c2bceSmrg		vendor=highlevel
10207a0395d0Smrg		;;
10216c3c2bceSmrg	xps-unknown | xps100-unknown)
10226c3c2bceSmrg		cpu=xps100
10236c3c2bceSmrg		vendor=honeywell
10247a0395d0Smrg		;;
10256c3c2bceSmrg
10266c3c2bceSmrg	# Here we normalize CPU types with a missing or matching vendor
10276c3c2bceSmrg	dpx20-unknown | dpx20-bull)
10286c3c2bceSmrg		cpu=rs6000
10296c3c2bceSmrg		vendor=bull
10300d22642bSmrg		basic_os=${basic_os:-bosx}
10317a0395d0Smrg		;;
10326c3c2bceSmrg
10336c3c2bceSmrg	# Here we normalize CPU types irrespective of the vendor
10346c3c2bceSmrg	amd64-*)
10356c3c2bceSmrg		cpu=x86_64
10367a0395d0Smrg		;;
10376c3c2bceSmrg	blackfin-*)
10386c3c2bceSmrg		cpu=bfin
10390d22642bSmrg		basic_os=linux
10407a0395d0Smrg		;;
10416c3c2bceSmrg	c54x-*)
10426c3c2bceSmrg		cpu=tic54x
10437a0395d0Smrg		;;
10446c3c2bceSmrg	c55x-*)
10456c3c2bceSmrg		cpu=tic55x
10467a0395d0Smrg		;;
10476c3c2bceSmrg	c6x-*)
10486c3c2bceSmrg		cpu=tic6x
10497a0395d0Smrg		;;
10506c3c2bceSmrg	e500v[12]-*)
10516c3c2bceSmrg		cpu=powerpc
10520d22642bSmrg		basic_os=${basic_os}"spe"
10537a0395d0Smrg		;;
10546c3c2bceSmrg	mips3*-*)
10556c3c2bceSmrg		cpu=mips64
10567a0395d0Smrg		;;
10576c3c2bceSmrg	ms1-*)
10586c3c2bceSmrg		cpu=mt
10597a0395d0Smrg		;;
10606c3c2bceSmrg	m68knommu-*)
10616c3c2bceSmrg		cpu=m68k
10620d22642bSmrg		basic_os=linux
10637a0395d0Smrg		;;
10646c3c2bceSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
10656c3c2bceSmrg		cpu=s12z
10667a0395d0Smrg		;;
10676c3c2bceSmrg	openrisc-*)
10686c3c2bceSmrg		cpu=or32
10697a0395d0Smrg		;;
10706c3c2bceSmrg	parisc-*)
10716c3c2bceSmrg		cpu=hppa
10720d22642bSmrg		basic_os=linux
10737a0395d0Smrg		;;
10746c3c2bceSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
10756c3c2bceSmrg		cpu=i586
10767a0395d0Smrg		;;
10776c3c2bceSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
10786c3c2bceSmrg		cpu=i686
10797a0395d0Smrg		;;
10806c3c2bceSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
10816c3c2bceSmrg		cpu=i686
10827a0395d0Smrg		;;
10836c3c2bceSmrg	pentium4-*)
10846c3c2bceSmrg		cpu=i786
10857a0395d0Smrg		;;
10866c3c2bceSmrg	pc98-*)
10876c3c2bceSmrg		cpu=i386
10887a0395d0Smrg		;;
10896c3c2bceSmrg	ppc-* | ppcbe-*)
10906c3c2bceSmrg		cpu=powerpc
10917a0395d0Smrg		;;
10926c3c2bceSmrg	ppcle-* | powerpclittle-*)
10936c3c2bceSmrg		cpu=powerpcle
10947a0395d0Smrg		;;
10956c3c2bceSmrg	ppc64-*)
10966c3c2bceSmrg		cpu=powerpc64
10977a0395d0Smrg		;;
10986c3c2bceSmrg	ppc64le-* | powerpc64little-*)
10996c3c2bceSmrg		cpu=powerpc64le
11008abc0ccfSmrg		;;
11016c3c2bceSmrg	sb1-*)
11026c3c2bceSmrg		cpu=mipsisa64sb1
11037a0395d0Smrg		;;
11046c3c2bceSmrg	sb1el-*)
11056c3c2bceSmrg		cpu=mipsisa64sb1el
11067a0395d0Smrg		;;
11076c3c2bceSmrg	sh5e[lb]-*)
11080d22642bSmrg		cpu=$(echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/')
11097366012aSmrg		;;
11106c3c2bceSmrg	spur-*)
11116c3c2bceSmrg		cpu=spur
11127a0395d0Smrg		;;
11136c3c2bceSmrg	strongarm-* | thumb-*)
11146c3c2bceSmrg		cpu=arm
11157a0395d0Smrg		;;
11166c3c2bceSmrg	tx39-*)
11176c3c2bceSmrg		cpu=mipstx39
11187a0395d0Smrg		;;
11196c3c2bceSmrg	tx39el-*)
11206c3c2bceSmrg		cpu=mipstx39el
11217a0395d0Smrg		;;
11226c3c2bceSmrg	x64-*)
11236c3c2bceSmrg		cpu=x86_64
11247a0395d0Smrg		;;
11256c3c2bceSmrg	xscale-* | xscalee[bl]-*)
11260d22642bSmrg		cpu=$(echo "$cpu" | sed 's/^xscale/arm/')
11270d22642bSmrg		;;
11280d22642bSmrg	arm64-*)
11290d22642bSmrg		cpu=aarch64
11307a0395d0Smrg		;;
11316c3c2bceSmrg
11320d22642bSmrg	# Recognize the canonical CPU Types that limit and/or modify the
11336c3c2bceSmrg	# company names they are paired with.
11346c3c2bceSmrg	cr16-*)
11350d22642bSmrg		basic_os=${basic_os:-elf}
11367a0395d0Smrg		;;
11376c3c2bceSmrg	crisv32-* | etraxfs*-*)
11386c3c2bceSmrg		cpu=crisv32
11396c3c2bceSmrg		vendor=axis
11407a0395d0Smrg		;;
11416c3c2bceSmrg	cris-* | etrax*-*)
11426c3c2bceSmrg		cpu=cris
11436c3c2bceSmrg		vendor=axis
11447a0395d0Smrg		;;
11456c3c2bceSmrg	crx-*)
11460d22642bSmrg		basic_os=${basic_os:-elf}
11477a0395d0Smrg		;;
11486c3c2bceSmrg	neo-tandem)
11496c3c2bceSmrg		cpu=neo
11506c3c2bceSmrg		vendor=tandem
11517a0395d0Smrg		;;
11526c3c2bceSmrg	nse-tandem)
11536c3c2bceSmrg		cpu=nse
11546c3c2bceSmrg		vendor=tandem
11557a0395d0Smrg		;;
11566c3c2bceSmrg	nsr-tandem)
11576c3c2bceSmrg		cpu=nsr
11586c3c2bceSmrg		vendor=tandem
11597a0395d0Smrg		;;
11606c3c2bceSmrg	nsv-tandem)
11616c3c2bceSmrg		cpu=nsv
11626c3c2bceSmrg		vendor=tandem
11637a0395d0Smrg		;;
11646c3c2bceSmrg	nsx-tandem)
11656c3c2bceSmrg		cpu=nsx
11666c3c2bceSmrg		vendor=tandem
11677a0395d0Smrg		;;
11680d22642bSmrg	mipsallegrexel-sony)
11690d22642bSmrg		cpu=mipsallegrexel
11700d22642bSmrg		vendor=sony
11717a0395d0Smrg		;;
11726c3c2bceSmrg	tile*-*)
11730d22642bSmrg		basic_os=${basic_os:-linux-gnu}
11747a0395d0Smrg		;;
11756c3c2bceSmrg
11767a0395d0Smrg	*)
11770d22642bSmrg		# Recognize the canonical CPU types that are allowed with any
11786c3c2bceSmrg		# company name.
11796c3c2bceSmrg		case $cpu in
11806c3c2bceSmrg			1750a | 580 \
11816c3c2bceSmrg			| a29k \
11826c3c2bceSmrg			| aarch64 | aarch64_be \
11836c3c2bceSmrg			| abacus \
11846c3c2bceSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
11856c3c2bceSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
11866c3c2bceSmrg			| alphapca5[67] | alpha64pca5[67] \
11876c3c2bceSmrg			| am33_2.0 \
11880d22642bSmrg			| amdgcn \
11896c3c2bceSmrg			| arc | arceb \
11900d22642bSmrg			| arm | arm[lb]e | arme[lb] | armv* \
11916c3c2bceSmrg			| avr | avr32 \
11926c3c2bceSmrg			| asmjs \
11936c3c2bceSmrg			| ba \
11946c3c2bceSmrg			| be32 | be64 \
11950d22642bSmrg			| bfin | bpf | bs2000 \
11966c3c2bceSmrg			| c[123]* | c30 | [cjt]90 | c4x \
11976c3c2bceSmrg			| c8051 | clipper | craynv | csky | cydra \
1198765b7306Smrg			| d10v | d30v | dlx | dsp16xx | dvp \
11996c3c2bceSmrg			| e2k | elxsi | epiphany \
12006c3c2bceSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
12016c3c2bceSmrg			| h8300 | h8500 \
12026c3c2bceSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
12036c3c2bceSmrg			| hexagon \
12046c3c2bceSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
12056c3c2bceSmrg			| ip2k | iq2000 \
12066c3c2bceSmrg			| k1om \
12076c3c2bceSmrg			| le32 | le64 \
12086c3c2bceSmrg			| lm32 \
1209765b7306Smrg			| loongarch32 | loongarch64 | loongarchx32 \
12106c3c2bceSmrg			| m32c | m32r | m32rle \
12110d22642bSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
12120d22642bSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
12136c3c2bceSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
12146c3c2bceSmrg			| microblaze | microblazeel \
12156c3c2bceSmrg			| mips | mipsbe | mipseb | mipsel | mipsle \
12166c3c2bceSmrg			| mips16 \
12170d22642bSmrg			| mips64 | mips64eb | mips64el \
12186c3c2bceSmrg			| mips64octeon | mips64octeonel \
12196c3c2bceSmrg			| mips64orion | mips64orionel \
12206c3c2bceSmrg			| mips64r5900 | mips64r5900el \
12216c3c2bceSmrg			| mips64vr | mips64vrel \
12226c3c2bceSmrg			| mips64vr4100 | mips64vr4100el \
12236c3c2bceSmrg			| mips64vr4300 | mips64vr4300el \
12246c3c2bceSmrg			| mips64vr5000 | mips64vr5000el \
12256c3c2bceSmrg			| mips64vr5900 | mips64vr5900el \
12266c3c2bceSmrg			| mipsisa32 | mipsisa32el \
12276c3c2bceSmrg			| mipsisa32r2 | mipsisa32r2el \
12286c3c2bceSmrg			| mipsisa32r6 | mipsisa32r6el \
12296c3c2bceSmrg			| mipsisa64 | mipsisa64el \
12306c3c2bceSmrg			| mipsisa64r2 | mipsisa64r2el \
12316c3c2bceSmrg			| mipsisa64r6 | mipsisa64r6el \
12326c3c2bceSmrg			| mipsisa64sb1 | mipsisa64sb1el \
12336c3c2bceSmrg			| mipsisa64sr71k | mipsisa64sr71kel \
12346c3c2bceSmrg			| mipsr5900 | mipsr5900el \
12356c3c2bceSmrg			| mipstx39 | mipstx39el \
12366c3c2bceSmrg			| mmix \
12376c3c2bceSmrg			| mn10200 | mn10300 \
12386c3c2bceSmrg			| moxie \
12396c3c2bceSmrg			| mt \
12406c3c2bceSmrg			| msp430 \
12416c3c2bceSmrg			| nds32 | nds32le | nds32be \
12426c3c2bceSmrg			| nfp \
12436c3c2bceSmrg			| nios | nios2 | nios2eb | nios2el \
12440d22642bSmrg			| none | np1 | ns16k | ns32k | nvptx \
12456c3c2bceSmrg			| open8 \
12466c3c2bceSmrg			| or1k* \
12476c3c2bceSmrg			| or32 \
12486c3c2bceSmrg			| orion \
12490d22642bSmrg			| picochip \
12506c3c2bceSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
12516c3c2bceSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
12526c3c2bceSmrg			| pru \
12536c3c2bceSmrg			| pyramid \
1254765b7306Smrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
12556c3c2bceSmrg			| rl78 | romp | rs6000 | rx \
12560d22642bSmrg			| s390 | s390x \
12576c3c2bceSmrg			| score \
12580d22642bSmrg			| sh | shl \
12590d22642bSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
12606c3c2bceSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
12616c3c2bceSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
12626c3c2bceSmrg			| sparclite \
12636c3c2bceSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
12646c3c2bceSmrg			| spu \
12656c3c2bceSmrg			| tahoe \
1266765b7306Smrg			| thumbv7* \
12676c3c2bceSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
12686c3c2bceSmrg			| tron \
12696c3c2bceSmrg			| ubicom32 \
12700d22642bSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
12716c3c2bceSmrg			| vax \
12726c3c2bceSmrg			| visium \
12730d22642bSmrg			| w65 \
12740d22642bSmrg			| wasm32 | wasm64 \
12756c3c2bceSmrg			| we32k \
12766c3c2bceSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
12776c3c2bceSmrg			| xstormy16 | xtensa* \
12786c3c2bceSmrg			| ymp \
12796c3c2bceSmrg			| z8k | z80)
12806c3c2bceSmrg				;;
12816c3c2bceSmrg
12826c3c2bceSmrg			*)
12836c3c2bceSmrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
12846c3c2bceSmrg				exit 1
12856c3c2bceSmrg				;;
12866c3c2bceSmrg		esac
12877a0395d0Smrg		;;
12887a0395d0Smrgesac
12897a0395d0Smrg
12907a0395d0Smrg# Here we canonicalize certain aliases for manufacturers.
12916c3c2bceSmrgcase $vendor in
12926c3c2bceSmrg	digital*)
12936c3c2bceSmrg		vendor=dec
12947a0395d0Smrg		;;
12956c3c2bceSmrg	commodore*)
12966c3c2bceSmrg		vendor=cbm
12977a0395d0Smrg		;;
12987a0395d0Smrg	*)
12997a0395d0Smrg		;;
13007a0395d0Smrgesac
13017a0395d0Smrg
13027a0395d0Smrg# Decode manufacturer-specific aliases for certain operating systems.
13037a0395d0Smrg
13040d22642bSmrgif test x$basic_os != x
13057a0395d0Smrgthen
13060d22642bSmrg
13070d22642bSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
13080d22642bSmrg# set os.
13090d22642bSmrgcase $basic_os in
13100d22642bSmrg	gnu/linux*)
13110d22642bSmrg		kernel=linux
13120d22642bSmrg		os=$(echo $basic_os | sed -e 's|gnu/linux|gnu|')
13130d22642bSmrg		;;
13140d22642bSmrg	os2-emx)
13150d22642bSmrg		kernel=os2
13160d22642bSmrg		os=$(echo $basic_os | sed -e 's|os2-emx|emx|')
13170d22642bSmrg		;;
13180d22642bSmrg	nto-qnx*)
13190d22642bSmrg		kernel=nto
13200d22642bSmrg		os=$(echo $basic_os | sed -e 's|nto-qnx|qnx|')
13210d22642bSmrg		;;
13220d22642bSmrg	*-*)
13230d22642bSmrg		# shellcheck disable=SC2162
13240d22642bSmrg		IFS="-" read kernel os <<EOF
13250d22642bSmrg$basic_os
13260d22642bSmrgEOF
13270d22642bSmrg		;;
13280d22642bSmrg	# Default OS when just kernel was specified
13290d22642bSmrg	nto*)
13300d22642bSmrg		kernel=nto
13310d22642bSmrg		os=$(echo $basic_os | sed -e 's|nto|qnx|')
13320d22642bSmrg		;;
13330d22642bSmrg	linux*)
13340d22642bSmrg		kernel=linux
13350d22642bSmrg		os=$(echo $basic_os | sed -e 's|linux|gnu|')
13360d22642bSmrg		;;
13370d22642bSmrg	*)
13380d22642bSmrg		kernel=
13390d22642bSmrg		os=$basic_os
13400d22642bSmrg		;;
13410d22642bSmrgesac
13420d22642bSmrg
13430d22642bSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
13440d22642bSmrg# etc.)
13457a0395d0Smrgcase $os in
13466c3c2bceSmrg	# First match some system type aliases that might get confused
13476c3c2bceSmrg	# with valid system types.
13486c3c2bceSmrg	# solaris* is a basic system type, with this one exception.
13496c3c2bceSmrg	auroraux)
13506c3c2bceSmrg		os=auroraux
13512adc0320Smrg		;;
13526c3c2bceSmrg	bluegene*)
13536c3c2bceSmrg		os=cnk
13547a0395d0Smrg		;;
13556c3c2bceSmrg	solaris1 | solaris1.*)
13560d22642bSmrg		os=$(echo $os | sed -e 's|solaris1|sunos4|')
13577a0395d0Smrg		;;
13586c3c2bceSmrg	solaris)
13596c3c2bceSmrg		os=solaris2
13607a0395d0Smrg		;;
13616c3c2bceSmrg	unixware*)
13626c3c2bceSmrg		os=sysv4.2uw
13637a0395d0Smrg		;;
13646c3c2bceSmrg	# es1800 is here to avoid being matched by es* (a different OS)
13656c3c2bceSmrg	es1800*)
13666c3c2bceSmrg		os=ose
13676c3c2bceSmrg		;;
13686c3c2bceSmrg	# Some version numbers need modification
13696c3c2bceSmrg	chorusos*)
13706c3c2bceSmrg		os=chorusos
13716c3c2bceSmrg		;;
13726c3c2bceSmrg	isc)
13736c3c2bceSmrg		os=isc2.2
13746c3c2bceSmrg		;;
13756c3c2bceSmrg	sco6)
13766c3c2bceSmrg		os=sco5v6
13776c3c2bceSmrg		;;
13786c3c2bceSmrg	sco5)
13796c3c2bceSmrg		os=sco3.2v5
13806c3c2bceSmrg		;;
13816c3c2bceSmrg	sco4)
13826c3c2bceSmrg		os=sco3.2v4
13836c3c2bceSmrg		;;
13846c3c2bceSmrg	sco3.2.[4-9]*)
13850d22642bSmrg		os=$(echo $os | sed -e 's/sco3.2./sco3.2v/')
13866c3c2bceSmrg		;;
13870d22642bSmrg	sco*v* | scout)
13886c3c2bceSmrg		# Don't match below
13896c3c2bceSmrg		;;
13906c3c2bceSmrg	sco*)
13916c3c2bceSmrg		os=sco3.2v2
13926c3c2bceSmrg		;;
13936c3c2bceSmrg	psos*)
13946c3c2bceSmrg		os=psos
13956c3c2bceSmrg		;;
13966c3c2bceSmrg	qnx*)
13970d22642bSmrg		os=qnx
13987a0395d0Smrg		;;
13996c3c2bceSmrg	hiux*)
14006c3c2bceSmrg		os=hiuxwe2
14017a0395d0Smrg		;;
14026c3c2bceSmrg	lynx*178)
14036c3c2bceSmrg		os=lynxos178
14047a0395d0Smrg		;;
14056c3c2bceSmrg	lynx*5)
14066c3c2bceSmrg		os=lynxos5
14077a0395d0Smrg		;;
14080d22642bSmrg	lynxos*)
14090d22642bSmrg		# don't get caught up in next wildcard
14100d22642bSmrg		;;
14116c3c2bceSmrg	lynx*)
14126c3c2bceSmrg		os=lynxos
14137a0395d0Smrg		;;
14140d22642bSmrg	mac[0-9]*)
14150d22642bSmrg		os=$(echo "$os" | sed -e 's|mac|macos|')
14167a0395d0Smrg		;;
14176c3c2bceSmrg	opened*)
14186c3c2bceSmrg		os=openedition
14197a0395d0Smrg		;;
14206c3c2bceSmrg	os400*)
14216c3c2bceSmrg		os=os400
14227a0395d0Smrg		;;
14236c3c2bceSmrg	sunos5*)
14240d22642bSmrg		os=$(echo "$os" | sed -e 's|sunos5|solaris2|')
14257a0395d0Smrg		;;
14266c3c2bceSmrg	sunos6*)
14270d22642bSmrg		os=$(echo "$os" | sed -e 's|sunos6|solaris3|')
14287a0395d0Smrg		;;
14296c3c2bceSmrg	wince*)
14306c3c2bceSmrg		os=wince
14317a0395d0Smrg		;;
14326c3c2bceSmrg	utek*)
14336c3c2bceSmrg		os=bsd
14347a0395d0Smrg		;;
14356c3c2bceSmrg	dynix*)
14366c3c2bceSmrg		os=bsd
14377a0395d0Smrg		;;
14386c3c2bceSmrg	acis*)
14396c3c2bceSmrg		os=aos
14407a0395d0Smrg		;;
14416c3c2bceSmrg	atheos*)
14426c3c2bceSmrg		os=atheos
14437a0395d0Smrg		;;
14446c3c2bceSmrg	syllable*)
14456c3c2bceSmrg		os=syllable
14467a0395d0Smrg		;;
14476c3c2bceSmrg	386bsd)
14486c3c2bceSmrg		os=bsd
14496c3c2bceSmrg		;;
14506c3c2bceSmrg	ctix* | uts*)
14516c3c2bceSmrg		os=sysv
14526c3c2bceSmrg		;;
14536c3c2bceSmrg	nova*)
14546c3c2bceSmrg		os=rtmk-nova
14557a0395d0Smrg		;;
14566c3c2bceSmrg	ns2)
14576c3c2bceSmrg		os=nextstep2
14587a0395d0Smrg		;;
14597a0395d0Smrg	# Preserve the version number of sinix5.
14606c3c2bceSmrg	sinix5.*)
14610d22642bSmrg		os=$(echo $os | sed -e 's|sinix|sysv|')
14627a0395d0Smrg		;;
14636c3c2bceSmrg	sinix*)
14646c3c2bceSmrg		os=sysv4
14657a0395d0Smrg		;;
14666c3c2bceSmrg	tpf*)
14676c3c2bceSmrg		os=tpf
14687a0395d0Smrg		;;
14696c3c2bceSmrg	triton*)
14706c3c2bceSmrg		os=sysv3
14717a0395d0Smrg		;;
14726c3c2bceSmrg	oss*)
14736c3c2bceSmrg		os=sysv3
14747a0395d0Smrg		;;
14756c3c2bceSmrg	svr4*)
14766c3c2bceSmrg		os=sysv4
14777a0395d0Smrg		;;
14786c3c2bceSmrg	svr3)
14796c3c2bceSmrg		os=sysv3
14807a0395d0Smrg		;;
14816c3c2bceSmrg	sysvr4)
14826c3c2bceSmrg		os=sysv4
14837a0395d0Smrg		;;
14846c3c2bceSmrg	ose*)
14856c3c2bceSmrg		os=ose
14867a0395d0Smrg		;;
14876c3c2bceSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
14886c3c2bceSmrg		os=mint
14897a0395d0Smrg		;;
14906c3c2bceSmrg	dicos*)
14916c3c2bceSmrg		os=dicos
14927a0395d0Smrg		;;
14936c3c2bceSmrg	pikeos*)
14946c3c2bceSmrg		# Until real need of OS specific support for
14956c3c2bceSmrg		# particular features comes up, bare metal
14966c3c2bceSmrg		# configurations are quite functional.
14976c3c2bceSmrg		case $cpu in
14986c3c2bceSmrg		    arm*)
14996c3c2bceSmrg			os=eabi
15006c3c2bceSmrg			;;
15016c3c2bceSmrg		    *)
15026c3c2bceSmrg			os=elf
15036c3c2bceSmrg			;;
15046c3c2bceSmrg		esac
15057a0395d0Smrg		;;
15067a0395d0Smrg	*)
15070d22642bSmrg		# No normalization, but not necessarily accepted, that comes below.
15087a0395d0Smrg		;;
15097a0395d0Smrgesac
15100d22642bSmrg
15117a0395d0Smrgelse
15127a0395d0Smrg
15137a0395d0Smrg# Here we handle the default operating systems that come with various machines.
15147a0395d0Smrg# The value should be what the vendor currently ships out the door with their
15157a0395d0Smrg# machine or put another way, the most popular os provided with the machine.
15167a0395d0Smrg
15177a0395d0Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
15187a0395d0Smrg# "-sun"), then you have to tell the case statement up towards the top
15197a0395d0Smrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
15207a0395d0Smrg# will signal an error saying that MANUFACTURER isn't an operating
15217a0395d0Smrg# system, and we'll never get to this point.
15227a0395d0Smrg
15230d22642bSmrgkernel=
15246c3c2bceSmrgcase $cpu-$vendor in
15258abc0ccfSmrg	score-*)
15266c3c2bceSmrg		os=elf
15277a0395d0Smrg		;;
15288abc0ccfSmrg	spu-*)
15296c3c2bceSmrg		os=elf
15307a0395d0Smrg		;;
15317a0395d0Smrg	*-acorn)
15326c3c2bceSmrg		os=riscix1.2
15337a0395d0Smrg		;;
15347a0395d0Smrg	arm*-rebel)
15350d22642bSmrg		kernel=linux
15360d22642bSmrg		os=gnu
15377a0395d0Smrg		;;
15387a0395d0Smrg	arm*-semi)
15396c3c2bceSmrg		os=aout
15407a0395d0Smrg		;;
15418abc0ccfSmrg	c4x-* | tic4x-*)
15426c3c2bceSmrg		os=coff
15438abc0ccfSmrg		;;
154440c5344fSmrg	c8051-*)
15456c3c2bceSmrg		os=elf
15466c3c2bceSmrg		;;
15476c3c2bceSmrg	clipper-intergraph)
15486c3c2bceSmrg		os=clix
154940c5344fSmrg		;;
15508abc0ccfSmrg	hexagon-*)
15516c3c2bceSmrg		os=elf
15527a0395d0Smrg		;;
155396402570Smrg	tic54x-*)
15546c3c2bceSmrg		os=coff
155596402570Smrg		;;
155696402570Smrg	tic55x-*)
15576c3c2bceSmrg		os=coff
155896402570Smrg		;;
155996402570Smrg	tic6x-*)
15606c3c2bceSmrg		os=coff
156196402570Smrg		;;
15627a0395d0Smrg	# This must come before the *-dec entry.
15637a0395d0Smrg	pdp10-*)
15646c3c2bceSmrg		os=tops20
15657a0395d0Smrg		;;
15667a0395d0Smrg	pdp11-*)
15676c3c2bceSmrg		os=none
15687a0395d0Smrg		;;
15697a0395d0Smrg	*-dec | vax-*)
15706c3c2bceSmrg		os=ultrix4.2
15717a0395d0Smrg		;;
15727a0395d0Smrg	m68*-apollo)
15736c3c2bceSmrg		os=domain
15747a0395d0Smrg		;;
15757a0395d0Smrg	i386-sun)
15766c3c2bceSmrg		os=sunos4.0.2
15777a0395d0Smrg		;;
15787a0395d0Smrg	m68000-sun)
15796c3c2bceSmrg		os=sunos3
15807a0395d0Smrg		;;
15817a0395d0Smrg	m68*-cisco)
15826c3c2bceSmrg		os=aout
15837a0395d0Smrg		;;
15848abc0ccfSmrg	mep-*)
15856c3c2bceSmrg		os=elf
15867a0395d0Smrg		;;
15877a0395d0Smrg	mips*-cisco)
15886c3c2bceSmrg		os=elf
15897a0395d0Smrg		;;
15907a0395d0Smrg	mips*-*)
15916c3c2bceSmrg		os=elf
15927a0395d0Smrg		;;
15937a0395d0Smrg	or32-*)
15946c3c2bceSmrg		os=coff
15957a0395d0Smrg		;;
15967a0395d0Smrg	*-tti)	# must be before sparc entry or we get the wrong os.
15976c3c2bceSmrg		os=sysv3
15987a0395d0Smrg		;;
15997a0395d0Smrg	sparc-* | *-sun)
16006c3c2bceSmrg		os=sunos4.1.1
16017a0395d0Smrg		;;
16026c3c2bceSmrg	pru-*)
16036c3c2bceSmrg		os=elf
16047a0395d0Smrg		;;
16056c3c2bceSmrg	*-be)
16066c3c2bceSmrg		os=beos
16077a0395d0Smrg		;;
16087a0395d0Smrg	*-ibm)
16096c3c2bceSmrg		os=aix
16107a0395d0Smrg		;;
16118abc0ccfSmrg	*-knuth)
16126c3c2bceSmrg		os=mmixware
16137a0395d0Smrg		;;
16147a0395d0Smrg	*-wec)
16156c3c2bceSmrg		os=proelf
16167a0395d0Smrg		;;
16177a0395d0Smrg	*-winbond)
16186c3c2bceSmrg		os=proelf
16197a0395d0Smrg		;;
16207a0395d0Smrg	*-oki)
16216c3c2bceSmrg		os=proelf
16227a0395d0Smrg		;;
16237a0395d0Smrg	*-hp)
16246c3c2bceSmrg		os=hpux
16257a0395d0Smrg		;;
16267a0395d0Smrg	*-hitachi)
16276c3c2bceSmrg		os=hiux
16287a0395d0Smrg		;;
16297a0395d0Smrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
16306c3c2bceSmrg		os=sysv
16317a0395d0Smrg		;;
16327a0395d0Smrg	*-cbm)
16336c3c2bceSmrg		os=amigaos
16347a0395d0Smrg		;;
16357a0395d0Smrg	*-dg)
16366c3c2bceSmrg		os=dgux
16377a0395d0Smrg		;;
16387a0395d0Smrg	*-dolphin)
16396c3c2bceSmrg		os=sysv3
16407a0395d0Smrg		;;
16417a0395d0Smrg	m68k-ccur)
16426c3c2bceSmrg		os=rtu
16437a0395d0Smrg		;;
16447a0395d0Smrg	m88k-omron*)
16456c3c2bceSmrg		os=luna
16467a0395d0Smrg		;;
16476c3c2bceSmrg	*-next)
16486c3c2bceSmrg		os=nextstep
16497a0395d0Smrg		;;
16507a0395d0Smrg	*-sequent)
16516c3c2bceSmrg		os=ptx
16527a0395d0Smrg		;;
16537a0395d0Smrg	*-crds)
16546c3c2bceSmrg		os=unos
16557a0395d0Smrg		;;
16567a0395d0Smrg	*-ns)
16576c3c2bceSmrg		os=genix
16587a0395d0Smrg		;;
16597a0395d0Smrg	i370-*)
16606c3c2bceSmrg		os=mvs
16617a0395d0Smrg		;;
16627a0395d0Smrg	*-gould)
16636c3c2bceSmrg		os=sysv
16647a0395d0Smrg		;;
16657a0395d0Smrg	*-highlevel)
16666c3c2bceSmrg		os=bsd
16677a0395d0Smrg		;;
16687a0395d0Smrg	*-encore)
16696c3c2bceSmrg		os=bsd
16707a0395d0Smrg		;;
16717a0395d0Smrg	*-sgi)
16726c3c2bceSmrg		os=irix
16737a0395d0Smrg		;;
16747a0395d0Smrg	*-siemens)
16756c3c2bceSmrg		os=sysv4
16767a0395d0Smrg		;;
16777a0395d0Smrg	*-masscomp)
16786c3c2bceSmrg		os=rtu
16797a0395d0Smrg		;;
16807a0395d0Smrg	f30[01]-fujitsu | f700-fujitsu)
16816c3c2bceSmrg		os=uxpv
16827a0395d0Smrg		;;
16837a0395d0Smrg	*-rom68k)
16846c3c2bceSmrg		os=coff
16857a0395d0Smrg		;;
16867a0395d0Smrg	*-*bug)
16876c3c2bceSmrg		os=coff
16887a0395d0Smrg		;;
16897a0395d0Smrg	*-apple)
16906c3c2bceSmrg		os=macos
16917a0395d0Smrg		;;
16927a0395d0Smrg	*-atari*)
16936c3c2bceSmrg		os=mint
16946c3c2bceSmrg		;;
16956c3c2bceSmrg	*-wrs)
16966c3c2bceSmrg		os=vxworks
16977a0395d0Smrg		;;
16987a0395d0Smrg	*)
16996c3c2bceSmrg		os=none
17007a0395d0Smrg		;;
17017a0395d0Smrgesac
17020d22642bSmrg
17037a0395d0Smrgfi
17047a0395d0Smrg
17050d22642bSmrg# Now, validate our (potentially fixed-up) OS.
17060d22642bSmrgcase $os in
17070d22642bSmrg	# Sometimes we do "kernel-abi", so those need to count as OSes.
17080d22642bSmrg	musl* | newlib* | uclibc*)
17090d22642bSmrg		;;
17100d22642bSmrg	# Likewise for "kernel-libc"
1711765b7306Smrg	eabi* | gnueabi*)
17120d22642bSmrg		;;
17130d22642bSmrg	# Now accept the basic system types.
17140d22642bSmrg	# The portable systems comes first.
17150d22642bSmrg	# Each alternative MUST end in a * to match a version number.
17160d22642bSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
17170d22642bSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
17180d22642bSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
17190d22642bSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
17200d22642bSmrg	     | hiux* | abug | nacl* | netware* | windows* \
17210d22642bSmrg	     | os9* | macos* | osx* | ios* \
17220d22642bSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
17230d22642bSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
17240d22642bSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
17250d22642bSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
17260d22642bSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
17270d22642bSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
17280d22642bSmrg	     | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
17290d22642bSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
17300d22642bSmrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
17310d22642bSmrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
17320d22642bSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
17330d22642bSmrg	     | chorusrdb* | cegcc* | glidix* \
17340d22642bSmrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
17350d22642bSmrg	     | midipix* | mingw32* | mingw64* | mint* \
17360d22642bSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
17370d22642bSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
17380d22642bSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
1739765b7306Smrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* | irx* \
17400d22642bSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
17410d22642bSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
17420d22642bSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
17430d22642bSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
17440d22642bSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
17450d22642bSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
17460d22642bSmrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx*)
17470d22642bSmrg		;;
17480d22642bSmrg	# This one is extra strict with allowed versions
17490d22642bSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
17500d22642bSmrg		# Don't forget version if it is 3.2v4 or newer.
17510d22642bSmrg		;;
17520d22642bSmrg	none)
17530d22642bSmrg		;;
17540d22642bSmrg	*)
17550d22642bSmrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
17560d22642bSmrg		exit 1
17570d22642bSmrg		;;
17580d22642bSmrgesac
17590d22642bSmrg
17600d22642bSmrg# As a final step for OS-related things, validate the OS-kernel combination
17610d22642bSmrg# (given a valid OS), if there is a kernel.
17620d22642bSmrgcase $kernel-$os in
17630d22642bSmrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* )
17640d22642bSmrg		;;
17650d22642bSmrg	uclinux-uclibc* )
17660d22642bSmrg		;;
17670d22642bSmrg	-dietlibc* | -newlib* | -musl* | -uclibc* )
17680d22642bSmrg		# These are just libc implementations, not actual OSes, and thus
17690d22642bSmrg		# require a kernel.
17700d22642bSmrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
17710d22642bSmrg		exit 1
17720d22642bSmrg		;;
17730d22642bSmrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
17740d22642bSmrg		;;
17750d22642bSmrg	nto-qnx*)
17760d22642bSmrg		;;
17770d22642bSmrg	os2-emx)
17780d22642bSmrg		;;
17790d22642bSmrg	*-eabi* | *-gnueabi*)
17800d22642bSmrg		;;
17810d22642bSmrg	-*)
17820d22642bSmrg		# Blank kernel with real OS is always fine.
17830d22642bSmrg		;;
17840d22642bSmrg	*-*)
17850d22642bSmrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
17860d22642bSmrg		exit 1
17870d22642bSmrg		;;
17880d22642bSmrgesac
17890d22642bSmrg
17907a0395d0Smrg# Here we handle the case where we know the os, and the CPU type, but not the
17917a0395d0Smrg# manufacturer.  We pick the logical manufacturer.
17926c3c2bceSmrgcase $vendor in
17936c3c2bceSmrg	unknown)
17940d22642bSmrg		case $cpu-$os in
17950d22642bSmrg			*-riscix*)
17967a0395d0Smrg				vendor=acorn
17977a0395d0Smrg				;;
17980d22642bSmrg			*-sunos*)
17997a0395d0Smrg				vendor=sun
18007a0395d0Smrg				;;
18010d22642bSmrg			*-cnk* | *-aix*)
18027a0395d0Smrg				vendor=ibm
18037a0395d0Smrg				;;
18040d22642bSmrg			*-beos*)
18057a0395d0Smrg				vendor=be
18067a0395d0Smrg				;;
18070d22642bSmrg			*-hpux*)
18087a0395d0Smrg				vendor=hp
18097a0395d0Smrg				;;
18100d22642bSmrg			*-mpeix*)
18117a0395d0Smrg				vendor=hp
18127a0395d0Smrg				;;
18130d22642bSmrg			*-hiux*)
18147a0395d0Smrg				vendor=hitachi
18157a0395d0Smrg				;;
18160d22642bSmrg			*-unos*)
18177a0395d0Smrg				vendor=crds
18187a0395d0Smrg				;;
18190d22642bSmrg			*-dgux*)
18207a0395d0Smrg				vendor=dg
18217a0395d0Smrg				;;
18220d22642bSmrg			*-luna*)
18237a0395d0Smrg				vendor=omron
18247a0395d0Smrg				;;
18250d22642bSmrg			*-genix*)
18267a0395d0Smrg				vendor=ns
18277a0395d0Smrg				;;
18280d22642bSmrg			*-clix*)
18296c3c2bceSmrg				vendor=intergraph
18306c3c2bceSmrg				;;
18310d22642bSmrg			*-mvs* | *-opened*)
18320d22642bSmrg				vendor=ibm
18330d22642bSmrg				;;
18340d22642bSmrg			*-os400*)
18357a0395d0Smrg				vendor=ibm
18367a0395d0Smrg				;;
18370d22642bSmrg			s390-* | s390x-*)
18387a0395d0Smrg				vendor=ibm
18397a0395d0Smrg				;;
18400d22642bSmrg			*-ptx*)
18417a0395d0Smrg				vendor=sequent
18427a0395d0Smrg				;;
18430d22642bSmrg			*-tpf*)
18447a0395d0Smrg				vendor=ibm
18457a0395d0Smrg				;;
18460d22642bSmrg			*-vxsim* | *-vxworks* | *-windiss*)
18477a0395d0Smrg				vendor=wrs
18487a0395d0Smrg				;;
18490d22642bSmrg			*-aux*)
18507a0395d0Smrg				vendor=apple
18517a0395d0Smrg				;;
18520d22642bSmrg			*-hms*)
18537a0395d0Smrg				vendor=hitachi
18547a0395d0Smrg				;;
18550d22642bSmrg			*-mpw* | *-macos*)
18567a0395d0Smrg				vendor=apple
18577a0395d0Smrg				;;
18580d22642bSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
18597a0395d0Smrg				vendor=atari
18607a0395d0Smrg				;;
18610d22642bSmrg			*-vos*)
18627a0395d0Smrg				vendor=stratus
18637a0395d0Smrg				;;
18647a0395d0Smrg		esac
18657a0395d0Smrg		;;
18667a0395d0Smrgesac
18677a0395d0Smrg
18680d22642bSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
18697a0395d0Smrgexit
18707a0395d0Smrg
18717a0395d0Smrg# Local variables:
18726c3c2bceSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
18737a0395d0Smrg# time-stamp-start: "timestamp='"
18747a0395d0Smrg# time-stamp-format: "%:y-%02m-%02d"
18757a0395d0Smrg# time-stamp-end: "'"
18767a0395d0Smrg# End:
1877