19027f4a0Smrg#! /bin/sh
29027f4a0Smrg# Configuration validation subroutine script.
3224bc9c7Smrg#   Copyright 1992-2023 Free Software Foundation, Inc.
49027f4a0Smrg
50d6f290aSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
60d6f290aSmrg
7224bc9c7Smrgtimestamp='2023-01-21'
89027f4a0Smrg
9fe2ac8d7Smrg# This file is free software; you can redistribute it and/or modify it
10fe2ac8d7Smrg# under the terms of the GNU General Public License as published by
11224bc9c7Smrg# the Free Software Foundation, either version 3 of the License, or
129027f4a0Smrg# (at your option) any later version.
139027f4a0Smrg#
14fe2ac8d7Smrg# This program is distributed in the hope that it will be useful, but
15fe2ac8d7Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
16fe2ac8d7Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17fe2ac8d7Smrg# General Public License for more details.
189027f4a0Smrg#
199027f4a0Smrg# You should have received a copy of the GNU General Public License
20376c9fa8Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
219027f4a0Smrg#
229027f4a0Smrg# As a special exception to the GNU General Public License, if you
239027f4a0Smrg# distribute this file as part of a program that contains a
249027f4a0Smrg# configuration script generated by Autoconf, you may include it under
25fe2ac8d7Smrg# the same distribution terms that you use for the rest of that
26fe2ac8d7Smrg# program.  This Exception is an additional permission under section 7
27fe2ac8d7Smrg# of the GNU General Public License, version 3 ("GPLv3").
289027f4a0Smrg
299027f4a0Smrg
30376c9fa8Smrg# Please send patches to <config-patches@gnu.org>.
319027f4a0Smrg#
329027f4a0Smrg# Configuration subroutine to validate and canonicalize a configuration type.
339027f4a0Smrg# Supply the specified configuration type as an argument.
349027f4a0Smrg# If it is invalid, we print an error message on stderr and exit with code 1.
359027f4a0Smrg# Otherwise, we print the canonical config type on stdout and succeed.
369027f4a0Smrg
373a72f200Smrg# You can get the latest version of this script from:
380d6f290aSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
393a72f200Smrg
409027f4a0Smrg# This file is supposed to be the same for all GNU packages
419027f4a0Smrg# and recognize all the CPU types, system types and aliases
429027f4a0Smrg# that are meaningful with *any* GNU software.
439027f4a0Smrg# Each package is responsible for reporting which valid configurations
449027f4a0Smrg# it does not support.  The user should be able to distinguish
459027f4a0Smrg# a failure to support a valid configuration from a meaningless
469027f4a0Smrg# configuration.
479027f4a0Smrg
489027f4a0Smrg# The goal of this file is to map all the various variations of a given
499027f4a0Smrg# machine specification into a single specification in the form:
509027f4a0Smrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
519027f4a0Smrg# or in some cases, the newer four-part form:
529027f4a0Smrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
539027f4a0Smrg# It is wrong to echo any other type of specification.
549027f4a0Smrg
550d6f290aSmrg# The "shellcheck disable" line above the timestamp inhibits complaints
560d6f290aSmrg# about features and limitations of the classic Bourne shell that were
570d6f290aSmrg# superseded or lifted in POSIX.  However, this script identifies a wide
580d6f290aSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
590d6f290aSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still
600d6f290aSmrg# have a pre-POSIX /bin/sh.
610d6f290aSmrg
629027f4a0Smrgme=`echo "$0" | sed -e 's,.*/,,'`
639027f4a0Smrg
649027f4a0Smrgusage="\
65376c9fa8SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
669027f4a0Smrg
679027f4a0SmrgCanonicalize a configuration name.
689027f4a0Smrg
69376c9fa8SmrgOptions:
709027f4a0Smrg  -h, --help         print this help, then exit
719027f4a0Smrg  -t, --time-stamp   print date of last modification, then exit
729027f4a0Smrg  -v, --version      print version number, then exit
739027f4a0Smrg
749027f4a0SmrgReport bugs and patches to <config-patches@gnu.org>."
759027f4a0Smrg
769027f4a0Smrgversion="\
779027f4a0SmrgGNU config.sub ($timestamp)
789027f4a0Smrg
79224bc9c7SmrgCopyright 1992-2023 Free Software Foundation, Inc.
809027f4a0Smrg
819027f4a0SmrgThis is free software; see the source for copying conditions.  There is NO
829027f4a0Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
839027f4a0Smrg
849027f4a0Smrghelp="
859027f4a0SmrgTry \`$me --help' for more information."
869027f4a0Smrg
879027f4a0Smrg# Parse command line
889027f4a0Smrgwhile test $# -gt 0 ; do
899027f4a0Smrg  case $1 in
909027f4a0Smrg    --time-stamp | --time* | -t )
919027f4a0Smrg       echo "$timestamp" ; exit ;;
929027f4a0Smrg    --version | -v )
939027f4a0Smrg       echo "$version" ; exit ;;
949027f4a0Smrg    --help | --h* | -h )
959027f4a0Smrg       echo "$usage"; exit ;;
969027f4a0Smrg    -- )     # Stop option processing
979027f4a0Smrg       shift; break ;;
989027f4a0Smrg    - )	# Use stdin as input.
999027f4a0Smrg       break ;;
1009027f4a0Smrg    -* )
1010d6f290aSmrg       echo "$me: invalid option $1$help" >&2
1029027f4a0Smrg       exit 1 ;;
1039027f4a0Smrg
1049027f4a0Smrg    *local*)
1059027f4a0Smrg       # First pass through any local machine types.
106376c9fa8Smrg       echo "$1"
1079027f4a0Smrg       exit ;;
1089027f4a0Smrg
1099027f4a0Smrg    * )
1109027f4a0Smrg       break ;;
1119027f4a0Smrg  esac
1129027f4a0Smrgdone
1139027f4a0Smrg
1149027f4a0Smrgcase $# in
1159027f4a0Smrg 0) echo "$me: missing argument$help" >&2
1169027f4a0Smrg    exit 1;;
1179027f4a0Smrg 1) ;;
1189027f4a0Smrg *) echo "$me: too many arguments$help" >&2
1199027f4a0Smrg    exit 1;;
1209027f4a0Smrgesac
1219027f4a0Smrg
1220d6f290aSmrg# Split fields of configuration type
1230d6f290aSmrg# shellcheck disable=SC2162
1240d6f290aSmrgsaved_IFS=$IFS
1250d6f290aSmrgIFS="-" read field1 field2 field3 field4 <<EOF
1260d6f290aSmrg$1
1270d6f290aSmrgEOF
1280d6f290aSmrgIFS=$saved_IFS
1299027f4a0Smrg
1300d6f290aSmrg# Separate into logical components for further validation
1310d6f290aSmrgcase $1 in
1320d6f290aSmrg	*-*-*-*-*)
1330d6f290aSmrg		echo Invalid configuration \`"$1"\': more than four components >&2
1340d6f290aSmrg		exit 1
135fe2ac8d7Smrg		;;
1360d6f290aSmrg	*-*-*-*)
1370d6f290aSmrg		basic_machine=$field1-$field2
1380d6f290aSmrg		basic_os=$field3-$field4
1399027f4a0Smrg		;;
1400d6f290aSmrg	*-*-*)
1410d6f290aSmrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
1420d6f290aSmrg		# parts
1430d6f290aSmrg		maybe_os=$field2-$field3
1440d6f290aSmrg		case $maybe_os in
1450d6f290aSmrg			nto-qnx* | linux-* | uclinux-uclibc* \
1460d6f290aSmrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
1470d6f290aSmrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
148224bc9c7Smrg			| storm-chaos* | os2-emx* | rtmk-nova* | managarm-*)
1490d6f290aSmrg				basic_machine=$field1
1500d6f290aSmrg				basic_os=$maybe_os
1510d6f290aSmrg				;;
1520d6f290aSmrg			android-linux)
1530d6f290aSmrg				basic_machine=$field1-unknown
1540d6f290aSmrg				basic_os=linux-android
1550d6f290aSmrg				;;
1560d6f290aSmrg			*)
1570d6f290aSmrg				basic_machine=$field1-$field2
1580d6f290aSmrg				basic_os=$field3
1590d6f290aSmrg				;;
1600d6f290aSmrg		esac
1619027f4a0Smrg		;;
1620d6f290aSmrg	*-*)
1630d6f290aSmrg		# A lone config we happen to match not fitting any pattern
1640d6f290aSmrg		case $field1-$field2 in
1650d6f290aSmrg			decstation-3100)
1660d6f290aSmrg				basic_machine=mips-dec
1670d6f290aSmrg				basic_os=
1680d6f290aSmrg				;;
1690d6f290aSmrg			*-*)
1700d6f290aSmrg				# Second component is usually, but not always the OS
1710d6f290aSmrg				case $field2 in
1720d6f290aSmrg					# Prevent following clause from handling this valid os
1730d6f290aSmrg					sun*os*)
1740d6f290aSmrg						basic_machine=$field1
1750d6f290aSmrg						basic_os=$field2
1760d6f290aSmrg						;;
1770d6f290aSmrg					zephyr*)
1780d6f290aSmrg						basic_machine=$field1-unknown
1790d6f290aSmrg						basic_os=$field2
1800d6f290aSmrg						;;
1810d6f290aSmrg					# Manufacturers
1820d6f290aSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
1830d6f290aSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
1840d6f290aSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
1850d6f290aSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
1860d6f290aSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
1870d6f290aSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
1880d6f290aSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
1890d6f290aSmrg					| microblaze* | sim | cisco \
1900d6f290aSmrg					| oki | wec | wrs | winbond)
1910d6f290aSmrg						basic_machine=$field1-$field2
1920d6f290aSmrg						basic_os=
1930d6f290aSmrg						;;
1940d6f290aSmrg					*)
1950d6f290aSmrg						basic_machine=$field1
1960d6f290aSmrg						basic_os=$field2
1970d6f290aSmrg						;;
1980d6f290aSmrg				esac
1990d6f290aSmrg			;;
2000d6f290aSmrg		esac
2019027f4a0Smrg		;;
2020d6f290aSmrg	*)
2030d6f290aSmrg		# Convert single-component short-hands not valid as part of
2040d6f290aSmrg		# multi-component configurations.
2050d6f290aSmrg		case $field1 in
2060d6f290aSmrg			386bsd)
2070d6f290aSmrg				basic_machine=i386-pc
2080d6f290aSmrg				basic_os=bsd
2090d6f290aSmrg				;;
2100d6f290aSmrg			a29khif)
2110d6f290aSmrg				basic_machine=a29k-amd
2120d6f290aSmrg				basic_os=udi
2130d6f290aSmrg				;;
2140d6f290aSmrg			adobe68k)
2150d6f290aSmrg				basic_machine=m68010-adobe
2160d6f290aSmrg				basic_os=scout
2170d6f290aSmrg				;;
2180d6f290aSmrg			alliant)
2190d6f290aSmrg				basic_machine=fx80-alliant
2200d6f290aSmrg				basic_os=
2210d6f290aSmrg				;;
2220d6f290aSmrg			altos | altos3068)
2230d6f290aSmrg				basic_machine=m68k-altos
2240d6f290aSmrg				basic_os=
2250d6f290aSmrg				;;
2260d6f290aSmrg			am29k)
2270d6f290aSmrg				basic_machine=a29k-none
2280d6f290aSmrg				basic_os=bsd
2290d6f290aSmrg				;;
2300d6f290aSmrg			amdahl)
2310d6f290aSmrg				basic_machine=580-amdahl
2320d6f290aSmrg				basic_os=sysv
2330d6f290aSmrg				;;
2340d6f290aSmrg			amiga)
2350d6f290aSmrg				basic_machine=m68k-unknown
2360d6f290aSmrg				basic_os=
2370d6f290aSmrg				;;
2380d6f290aSmrg			amigaos | amigados)
2390d6f290aSmrg				basic_machine=m68k-unknown
2400d6f290aSmrg				basic_os=amigaos
2410d6f290aSmrg				;;
2420d6f290aSmrg			amigaunix | amix)
2430d6f290aSmrg				basic_machine=m68k-unknown
2440d6f290aSmrg				basic_os=sysv4
2450d6f290aSmrg				;;
2460d6f290aSmrg			apollo68)
2470d6f290aSmrg				basic_machine=m68k-apollo
2480d6f290aSmrg				basic_os=sysv
2490d6f290aSmrg				;;
2500d6f290aSmrg			apollo68bsd)
2510d6f290aSmrg				basic_machine=m68k-apollo
2520d6f290aSmrg				basic_os=bsd
2530d6f290aSmrg				;;
2540d6f290aSmrg			aros)
2550d6f290aSmrg				basic_machine=i386-pc
2560d6f290aSmrg				basic_os=aros
2570d6f290aSmrg				;;
2580d6f290aSmrg			aux)
2590d6f290aSmrg				basic_machine=m68k-apple
2600d6f290aSmrg				basic_os=aux
2610d6f290aSmrg				;;
2620d6f290aSmrg			balance)
2630d6f290aSmrg				basic_machine=ns32k-sequent
2640d6f290aSmrg				basic_os=dynix
2650d6f290aSmrg				;;
2660d6f290aSmrg			blackfin)
2670d6f290aSmrg				basic_machine=bfin-unknown
2680d6f290aSmrg				basic_os=linux
2690d6f290aSmrg				;;
2700d6f290aSmrg			cegcc)
2710d6f290aSmrg				basic_machine=arm-unknown
2720d6f290aSmrg				basic_os=cegcc
2730d6f290aSmrg				;;
2740d6f290aSmrg			convex-c1)
2750d6f290aSmrg				basic_machine=c1-convex
2760d6f290aSmrg				basic_os=bsd
2770d6f290aSmrg				;;
2780d6f290aSmrg			convex-c2)
2790d6f290aSmrg				basic_machine=c2-convex
2800d6f290aSmrg				basic_os=bsd
2810d6f290aSmrg				;;
2820d6f290aSmrg			convex-c32)
2830d6f290aSmrg				basic_machine=c32-convex
2840d6f290aSmrg				basic_os=bsd
2850d6f290aSmrg				;;
2860d6f290aSmrg			convex-c34)
2870d6f290aSmrg				basic_machine=c34-convex
2880d6f290aSmrg				basic_os=bsd
2890d6f290aSmrg				;;
2900d6f290aSmrg			convex-c38)
2910d6f290aSmrg				basic_machine=c38-convex
2920d6f290aSmrg				basic_os=bsd
2930d6f290aSmrg				;;
2940d6f290aSmrg			cray)
2950d6f290aSmrg				basic_machine=j90-cray
2960d6f290aSmrg				basic_os=unicos
2970d6f290aSmrg				;;
2980d6f290aSmrg			crds | unos)
2990d6f290aSmrg				basic_machine=m68k-crds
3000d6f290aSmrg				basic_os=
3010d6f290aSmrg				;;
3020d6f290aSmrg			da30)
3030d6f290aSmrg				basic_machine=m68k-da30
3040d6f290aSmrg				basic_os=
3050d6f290aSmrg				;;
3060d6f290aSmrg			decstation | pmax | pmin | dec3100 | decstatn)
3070d6f290aSmrg				basic_machine=mips-dec
3080d6f290aSmrg				basic_os=
3090d6f290aSmrg				;;
3100d6f290aSmrg			delta88)
3110d6f290aSmrg				basic_machine=m88k-motorola
3120d6f290aSmrg				basic_os=sysv3
3130d6f290aSmrg				;;
3140d6f290aSmrg			dicos)
3150d6f290aSmrg				basic_machine=i686-pc
3160d6f290aSmrg				basic_os=dicos
3170d6f290aSmrg				;;
3180d6f290aSmrg			djgpp)
3190d6f290aSmrg				basic_machine=i586-pc
3200d6f290aSmrg				basic_os=msdosdjgpp
3210d6f290aSmrg				;;
3220d6f290aSmrg			ebmon29k)
3230d6f290aSmrg				basic_machine=a29k-amd
3240d6f290aSmrg				basic_os=ebmon
3250d6f290aSmrg				;;
3260d6f290aSmrg			es1800 | OSE68k | ose68k | ose | OSE)
3270d6f290aSmrg				basic_machine=m68k-ericsson
3280d6f290aSmrg				basic_os=ose
3290d6f290aSmrg				;;
3300d6f290aSmrg			gmicro)
3310d6f290aSmrg				basic_machine=tron-gmicro
3320d6f290aSmrg				basic_os=sysv
3330d6f290aSmrg				;;
3340d6f290aSmrg			go32)
3350d6f290aSmrg				basic_machine=i386-pc
3360d6f290aSmrg				basic_os=go32
3370d6f290aSmrg				;;
3380d6f290aSmrg			h8300hms)
3390d6f290aSmrg				basic_machine=h8300-hitachi
3400d6f290aSmrg				basic_os=hms
3410d6f290aSmrg				;;
3420d6f290aSmrg			h8300xray)
3430d6f290aSmrg				basic_machine=h8300-hitachi
3440d6f290aSmrg				basic_os=xray
3450d6f290aSmrg				;;
3460d6f290aSmrg			h8500hms)
3470d6f290aSmrg				basic_machine=h8500-hitachi
3480d6f290aSmrg				basic_os=hms
3490d6f290aSmrg				;;
3500d6f290aSmrg			harris)
3510d6f290aSmrg				basic_machine=m88k-harris
3520d6f290aSmrg				basic_os=sysv3
3530d6f290aSmrg				;;
3540d6f290aSmrg			hp300 | hp300hpux)
3550d6f290aSmrg				basic_machine=m68k-hp
3560d6f290aSmrg				basic_os=hpux
3570d6f290aSmrg				;;
3580d6f290aSmrg			hp300bsd)
3590d6f290aSmrg				basic_machine=m68k-hp
3600d6f290aSmrg				basic_os=bsd
3610d6f290aSmrg				;;
3620d6f290aSmrg			hppaosf)
3630d6f290aSmrg				basic_machine=hppa1.1-hp
3640d6f290aSmrg				basic_os=osf
3650d6f290aSmrg				;;
3660d6f290aSmrg			hppro)
3670d6f290aSmrg				basic_machine=hppa1.1-hp
3680d6f290aSmrg				basic_os=proelf
3690d6f290aSmrg				;;
3700d6f290aSmrg			i386mach)
3710d6f290aSmrg				basic_machine=i386-mach
3720d6f290aSmrg				basic_os=mach
3730d6f290aSmrg				;;
3740d6f290aSmrg			isi68 | isi)
3750d6f290aSmrg				basic_machine=m68k-isi
3760d6f290aSmrg				basic_os=sysv
3770d6f290aSmrg				;;
3780d6f290aSmrg			m68knommu)
3790d6f290aSmrg				basic_machine=m68k-unknown
3800d6f290aSmrg				basic_os=linux
3810d6f290aSmrg				;;
3820d6f290aSmrg			magnum | m3230)
3830d6f290aSmrg				basic_machine=mips-mips
3840d6f290aSmrg				basic_os=sysv
3850d6f290aSmrg				;;
3860d6f290aSmrg			merlin)
3870d6f290aSmrg				basic_machine=ns32k-utek
3880d6f290aSmrg				basic_os=sysv
3890d6f290aSmrg				;;
3900d6f290aSmrg			mingw64)
3910d6f290aSmrg				basic_machine=x86_64-pc
3920d6f290aSmrg				basic_os=mingw64
3930d6f290aSmrg				;;
3940d6f290aSmrg			mingw32)
3950d6f290aSmrg				basic_machine=i686-pc
3960d6f290aSmrg				basic_os=mingw32
3970d6f290aSmrg				;;
3980d6f290aSmrg			mingw32ce)
3990d6f290aSmrg				basic_machine=arm-unknown
4000d6f290aSmrg				basic_os=mingw32ce
4010d6f290aSmrg				;;
4020d6f290aSmrg			monitor)
4030d6f290aSmrg				basic_machine=m68k-rom68k
4040d6f290aSmrg				basic_os=coff
4050d6f290aSmrg				;;
4060d6f290aSmrg			morphos)
4070d6f290aSmrg				basic_machine=powerpc-unknown
4080d6f290aSmrg				basic_os=morphos
4090d6f290aSmrg				;;
4100d6f290aSmrg			moxiebox)
4110d6f290aSmrg				basic_machine=moxie-unknown
4120d6f290aSmrg				basic_os=moxiebox
4130d6f290aSmrg				;;
4140d6f290aSmrg			msdos)
4150d6f290aSmrg				basic_machine=i386-pc
4160d6f290aSmrg				basic_os=msdos
4170d6f290aSmrg				;;
4180d6f290aSmrg			msys)
4190d6f290aSmrg				basic_machine=i686-pc
4200d6f290aSmrg				basic_os=msys
4210d6f290aSmrg				;;
4220d6f290aSmrg			mvs)
4230d6f290aSmrg				basic_machine=i370-ibm
4240d6f290aSmrg				basic_os=mvs
4250d6f290aSmrg				;;
4260d6f290aSmrg			nacl)
4270d6f290aSmrg				basic_machine=le32-unknown
4280d6f290aSmrg				basic_os=nacl
4290d6f290aSmrg				;;
4300d6f290aSmrg			ncr3000)
4310d6f290aSmrg				basic_machine=i486-ncr
4320d6f290aSmrg				basic_os=sysv4
4330d6f290aSmrg				;;
4340d6f290aSmrg			netbsd386)
4350d6f290aSmrg				basic_machine=i386-pc
4360d6f290aSmrg				basic_os=netbsd
4370d6f290aSmrg				;;
4380d6f290aSmrg			netwinder)
4390d6f290aSmrg				basic_machine=armv4l-rebel
4400d6f290aSmrg				basic_os=linux
4410d6f290aSmrg				;;
4420d6f290aSmrg			news | news700 | news800 | news900)
4430d6f290aSmrg				basic_machine=m68k-sony
4440d6f290aSmrg				basic_os=newsos
4450d6f290aSmrg				;;
4460d6f290aSmrg			news1000)
4470d6f290aSmrg				basic_machine=m68030-sony
4480d6f290aSmrg				basic_os=newsos
4490d6f290aSmrg				;;
4500d6f290aSmrg			necv70)
4510d6f290aSmrg				basic_machine=v70-nec
4520d6f290aSmrg				basic_os=sysv
4530d6f290aSmrg				;;
4540d6f290aSmrg			nh3000)
4550d6f290aSmrg				basic_machine=m68k-harris
4560d6f290aSmrg				basic_os=cxux
4570d6f290aSmrg				;;
4580d6f290aSmrg			nh[45]000)
4590d6f290aSmrg				basic_machine=m88k-harris
4600d6f290aSmrg				basic_os=cxux
4610d6f290aSmrg				;;
4620d6f290aSmrg			nindy960)
4630d6f290aSmrg				basic_machine=i960-intel
4640d6f290aSmrg				basic_os=nindy
4650d6f290aSmrg				;;
4660d6f290aSmrg			mon960)
4670d6f290aSmrg				basic_machine=i960-intel
4680d6f290aSmrg				basic_os=mon960
4690d6f290aSmrg				;;
4700d6f290aSmrg			nonstopux)
4710d6f290aSmrg				basic_machine=mips-compaq
4720d6f290aSmrg				basic_os=nonstopux
4730d6f290aSmrg				;;
4740d6f290aSmrg			os400)
4750d6f290aSmrg				basic_machine=powerpc-ibm
4760d6f290aSmrg				basic_os=os400
4770d6f290aSmrg				;;
4780d6f290aSmrg			OSE68000 | ose68000)
4790d6f290aSmrg				basic_machine=m68000-ericsson
4800d6f290aSmrg				basic_os=ose
4810d6f290aSmrg				;;
4820d6f290aSmrg			os68k)
4830d6f290aSmrg				basic_machine=m68k-none
4840d6f290aSmrg				basic_os=os68k
4850d6f290aSmrg				;;
4860d6f290aSmrg			paragon)
4870d6f290aSmrg				basic_machine=i860-intel
4880d6f290aSmrg				basic_os=osf
4890d6f290aSmrg				;;
4900d6f290aSmrg			parisc)
4910d6f290aSmrg				basic_machine=hppa-unknown
4920d6f290aSmrg				basic_os=linux
4930d6f290aSmrg				;;
4940d6f290aSmrg			psp)
4950d6f290aSmrg				basic_machine=mipsallegrexel-sony
4960d6f290aSmrg				basic_os=psp
4970d6f290aSmrg				;;
4980d6f290aSmrg			pw32)
4990d6f290aSmrg				basic_machine=i586-unknown
5000d6f290aSmrg				basic_os=pw32
5010d6f290aSmrg				;;
5020d6f290aSmrg			rdos | rdos64)
5030d6f290aSmrg				basic_machine=x86_64-pc
5040d6f290aSmrg				basic_os=rdos
5050d6f290aSmrg				;;
5060d6f290aSmrg			rdos32)
5070d6f290aSmrg				basic_machine=i386-pc
5080d6f290aSmrg				basic_os=rdos
5090d6f290aSmrg				;;
5100d6f290aSmrg			rom68k)
5110d6f290aSmrg				basic_machine=m68k-rom68k
5120d6f290aSmrg				basic_os=coff
5130d6f290aSmrg				;;
5140d6f290aSmrg			sa29200)
5150d6f290aSmrg				basic_machine=a29k-amd
5160d6f290aSmrg				basic_os=udi
5170d6f290aSmrg				;;
5180d6f290aSmrg			sei)
5190d6f290aSmrg				basic_machine=mips-sei
5200d6f290aSmrg				basic_os=seiux
5210d6f290aSmrg				;;
5220d6f290aSmrg			sequent)
5230d6f290aSmrg				basic_machine=i386-sequent
5240d6f290aSmrg				basic_os=
5250d6f290aSmrg				;;
5260d6f290aSmrg			sps7)
5270d6f290aSmrg				basic_machine=m68k-bull
5280d6f290aSmrg				basic_os=sysv2
5290d6f290aSmrg				;;
5300d6f290aSmrg			st2000)
5310d6f290aSmrg				basic_machine=m68k-tandem
5320d6f290aSmrg				basic_os=
5330d6f290aSmrg				;;
5340d6f290aSmrg			stratus)
5350d6f290aSmrg				basic_machine=i860-stratus
5360d6f290aSmrg				basic_os=sysv4
5370d6f290aSmrg				;;
5380d6f290aSmrg			sun2)
5390d6f290aSmrg				basic_machine=m68000-sun
5400d6f290aSmrg				basic_os=
5410d6f290aSmrg				;;
5420d6f290aSmrg			sun2os3)
5430d6f290aSmrg				basic_machine=m68000-sun
5440d6f290aSmrg				basic_os=sunos3
5450d6f290aSmrg				;;
5460d6f290aSmrg			sun2os4)
5470d6f290aSmrg				basic_machine=m68000-sun
5480d6f290aSmrg				basic_os=sunos4
5490d6f290aSmrg				;;
5500d6f290aSmrg			sun3)
5510d6f290aSmrg				basic_machine=m68k-sun
5520d6f290aSmrg				basic_os=
5530d6f290aSmrg				;;
5540d6f290aSmrg			sun3os3)
5550d6f290aSmrg				basic_machine=m68k-sun
5560d6f290aSmrg				basic_os=sunos3
5570d6f290aSmrg				;;
5580d6f290aSmrg			sun3os4)
5590d6f290aSmrg				basic_machine=m68k-sun
5600d6f290aSmrg				basic_os=sunos4
5610d6f290aSmrg				;;
5620d6f290aSmrg			sun4)
5630d6f290aSmrg				basic_machine=sparc-sun
5640d6f290aSmrg				basic_os=
5650d6f290aSmrg				;;
5660d6f290aSmrg			sun4os3)
5670d6f290aSmrg				basic_machine=sparc-sun
5680d6f290aSmrg				basic_os=sunos3
5690d6f290aSmrg				;;
5700d6f290aSmrg			sun4os4)
5710d6f290aSmrg				basic_machine=sparc-sun
5720d6f290aSmrg				basic_os=sunos4
5730d6f290aSmrg				;;
5740d6f290aSmrg			sun4sol2)
5750d6f290aSmrg				basic_machine=sparc-sun
5760d6f290aSmrg				basic_os=solaris2
5770d6f290aSmrg				;;
5780d6f290aSmrg			sun386 | sun386i | roadrunner)
5790d6f290aSmrg				basic_machine=i386-sun
5800d6f290aSmrg				basic_os=
5810d6f290aSmrg				;;
5820d6f290aSmrg			sv1)
5830d6f290aSmrg				basic_machine=sv1-cray
5840d6f290aSmrg				basic_os=unicos
5850d6f290aSmrg				;;
5860d6f290aSmrg			symmetry)
5870d6f290aSmrg				basic_machine=i386-sequent
5880d6f290aSmrg				basic_os=dynix
5890d6f290aSmrg				;;
5900d6f290aSmrg			t3e)
5910d6f290aSmrg				basic_machine=alphaev5-cray
5920d6f290aSmrg				basic_os=unicos
5930d6f290aSmrg				;;
5940d6f290aSmrg			t90)
5950d6f290aSmrg				basic_machine=t90-cray
5960d6f290aSmrg				basic_os=unicos
5970d6f290aSmrg				;;
5980d6f290aSmrg			toad1)
5990d6f290aSmrg				basic_machine=pdp10-xkl
6000d6f290aSmrg				basic_os=tops20
6010d6f290aSmrg				;;
6020d6f290aSmrg			tpf)
6030d6f290aSmrg				basic_machine=s390x-ibm
6040d6f290aSmrg				basic_os=tpf
6050d6f290aSmrg				;;
6060d6f290aSmrg			udi29k)
6070d6f290aSmrg				basic_machine=a29k-amd
6080d6f290aSmrg				basic_os=udi
6090d6f290aSmrg				;;
6100d6f290aSmrg			ultra3)
6110d6f290aSmrg				basic_machine=a29k-nyu
6120d6f290aSmrg				basic_os=sym1
6130d6f290aSmrg				;;
6140d6f290aSmrg			v810 | necv810)
6150d6f290aSmrg				basic_machine=v810-nec
6160d6f290aSmrg				basic_os=none
6170d6f290aSmrg				;;
6180d6f290aSmrg			vaxv)
6190d6f290aSmrg				basic_machine=vax-dec
6200d6f290aSmrg				basic_os=sysv
6210d6f290aSmrg				;;
6220d6f290aSmrg			vms)
6230d6f290aSmrg				basic_machine=vax-dec
6240d6f290aSmrg				basic_os=vms
6250d6f290aSmrg				;;
6260d6f290aSmrg			vsta)
6270d6f290aSmrg				basic_machine=i386-pc
6280d6f290aSmrg				basic_os=vsta
6290d6f290aSmrg				;;
6300d6f290aSmrg			vxworks960)
6310d6f290aSmrg				basic_machine=i960-wrs
6320d6f290aSmrg				basic_os=vxworks
6330d6f290aSmrg				;;
6340d6f290aSmrg			vxworks68)
6350d6f290aSmrg				basic_machine=m68k-wrs
6360d6f290aSmrg				basic_os=vxworks
6370d6f290aSmrg				;;
6380d6f290aSmrg			vxworks29k)
6390d6f290aSmrg				basic_machine=a29k-wrs
6400d6f290aSmrg				basic_os=vxworks
6410d6f290aSmrg				;;
6420d6f290aSmrg			xbox)
6430d6f290aSmrg				basic_machine=i686-pc
6440d6f290aSmrg				basic_os=mingw32
6450d6f290aSmrg				;;
6460d6f290aSmrg			ymp)
6470d6f290aSmrg				basic_machine=ymp-cray
6480d6f290aSmrg				basic_os=unicos
6490d6f290aSmrg				;;
6500d6f290aSmrg			*)
6510d6f290aSmrg				basic_machine=$1
6520d6f290aSmrg				basic_os=
6530d6f290aSmrg				;;
6540d6f290aSmrg		esac
6559027f4a0Smrg		;;
6569027f4a0Smrgesac
6579027f4a0Smrg
6580d6f290aSmrg# Decode 1-component or ad-hoc basic machines
6599027f4a0Smrgcase $basic_machine in
6600d6f290aSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
6610d6f290aSmrg	# some cases the only manufacturer, in others, it is the most popular.
6620d6f290aSmrg	w89k)
6630d6f290aSmrg		cpu=hppa1.1
6640d6f290aSmrg		vendor=winbond
665376c9fa8Smrg		;;
6660d6f290aSmrg	op50n)
6670d6f290aSmrg		cpu=hppa1.1
6680d6f290aSmrg		vendor=oki
6699027f4a0Smrg		;;
6700d6f290aSmrg	op60c)
6710d6f290aSmrg		cpu=hppa1.1
6720d6f290aSmrg		vendor=oki
6739027f4a0Smrg		;;
6740d6f290aSmrg	ibm*)
6750d6f290aSmrg		cpu=i370
6760d6f290aSmrg		vendor=ibm
6779027f4a0Smrg		;;
6780d6f290aSmrg	orion105)
6790d6f290aSmrg		cpu=clipper
6800d6f290aSmrg		vendor=highlevel
681fe2ac8d7Smrg		;;
6820d6f290aSmrg	mac | mpw | mac-mpw)
6830d6f290aSmrg		cpu=m68k
6840d6f290aSmrg		vendor=apple
685fe2ac8d7Smrg		;;
6860d6f290aSmrg	pmac | pmac-mpw)
6870d6f290aSmrg		cpu=powerpc
6880d6f290aSmrg		vendor=apple
689fe2ac8d7Smrg		;;
690fe2ac8d7Smrg
6919027f4a0Smrg	# Recognize the various machine names and aliases which stand
6929027f4a0Smrg	# for a CPU type and a company and sometimes even an OS.
6939027f4a0Smrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
6940d6f290aSmrg		cpu=m68000
6950d6f290aSmrg		vendor=att
6969027f4a0Smrg		;;
6979027f4a0Smrg	3b*)
6980d6f290aSmrg		cpu=we32k
6990d6f290aSmrg		vendor=att
7003a72f200Smrg		;;
7013a72f200Smrg	bluegene*)
7020d6f290aSmrg		cpu=powerpc
7030d6f290aSmrg		vendor=ibm
7040d6f290aSmrg		basic_os=cnk
7059027f4a0Smrg		;;
7069027f4a0Smrg	decsystem10* | dec10*)
7070d6f290aSmrg		cpu=pdp10
7080d6f290aSmrg		vendor=dec
7090d6f290aSmrg		basic_os=tops10
7109027f4a0Smrg		;;
7119027f4a0Smrg	decsystem20* | dec20*)
7120d6f290aSmrg		cpu=pdp10
7130d6f290aSmrg		vendor=dec
7140d6f290aSmrg		basic_os=tops20
7159027f4a0Smrg		;;
7169027f4a0Smrg	delta | 3300 | motorola-3300 | motorola-delta \
7179027f4a0Smrg	      | 3300-motorola | delta-motorola)
7180d6f290aSmrg		cpu=m68k
7190d6f290aSmrg		vendor=motorola
7209027f4a0Smrg		;;
721376c9fa8Smrg	dpx2*)
7220d6f290aSmrg		cpu=m68k
7230d6f290aSmrg		vendor=bull
7240d6f290aSmrg		basic_os=sysv3
7259027f4a0Smrg		;;
7269027f4a0Smrg	encore | umax | mmax)
7270d6f290aSmrg		cpu=ns32k
7280d6f290aSmrg		vendor=encore
7299027f4a0Smrg		;;
7300d6f290aSmrg	elxsi)
7310d6f290aSmrg		cpu=elxsi
7320d6f290aSmrg		vendor=elxsi
7330d6f290aSmrg		basic_os=${basic_os:-bsd}
7349027f4a0Smrg		;;
7359027f4a0Smrg	fx2800)
7360d6f290aSmrg		cpu=i860
7370d6f290aSmrg		vendor=alliant
7389027f4a0Smrg		;;
7399027f4a0Smrg	genix)
7400d6f290aSmrg		cpu=ns32k
7410d6f290aSmrg		vendor=ns
7429027f4a0Smrg		;;
7439027f4a0Smrg	h3050r* | hiux*)
7440d6f290aSmrg		cpu=hppa1.1
7450d6f290aSmrg		vendor=hitachi
7460d6f290aSmrg		basic_os=hiuxwe2
7479027f4a0Smrg		;;
7489027f4a0Smrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
7490d6f290aSmrg		cpu=hppa1.0
7500d6f290aSmrg		vendor=hp
7519027f4a0Smrg		;;
7529027f4a0Smrg	hp9k2[0-9][0-9] | hp9k31[0-9])
7530d6f290aSmrg		cpu=m68000
7540d6f290aSmrg		vendor=hp
7559027f4a0Smrg		;;
7569027f4a0Smrg	hp9k3[2-9][0-9])
7570d6f290aSmrg		cpu=m68k
7580d6f290aSmrg		vendor=hp
7599027f4a0Smrg		;;
7609027f4a0Smrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
7610d6f290aSmrg		cpu=hppa1.0
7620d6f290aSmrg		vendor=hp
7639027f4a0Smrg		;;
7649027f4a0Smrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
7650d6f290aSmrg		cpu=hppa1.1
7660d6f290aSmrg		vendor=hp
7679027f4a0Smrg		;;
7689027f4a0Smrg	hp9k78[0-9] | hp78[0-9])
7699027f4a0Smrg		# FIXME: really hppa2.0-hp
7700d6f290aSmrg		cpu=hppa1.1
7710d6f290aSmrg		vendor=hp
7729027f4a0Smrg		;;
7739027f4a0Smrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
7749027f4a0Smrg		# FIXME: really hppa2.0-hp
7750d6f290aSmrg		cpu=hppa1.1
7760d6f290aSmrg		vendor=hp
7779027f4a0Smrg		;;
7789027f4a0Smrg	hp9k8[0-9][13679] | hp8[0-9][13679])
7790d6f290aSmrg		cpu=hppa1.1
7800d6f290aSmrg		vendor=hp
7819027f4a0Smrg		;;
7829027f4a0Smrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
7830d6f290aSmrg		cpu=hppa1.0
7840d6f290aSmrg		vendor=hp
7859027f4a0Smrg		;;
7869027f4a0Smrg	i*86v32)
7870d6f290aSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7880d6f290aSmrg		vendor=pc
7890d6f290aSmrg		basic_os=sysv32
7909027f4a0Smrg		;;
7919027f4a0Smrg	i*86v4*)
7920d6f290aSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7930d6f290aSmrg		vendor=pc
7940d6f290aSmrg		basic_os=sysv4
7959027f4a0Smrg		;;
7969027f4a0Smrg	i*86v)
7970d6f290aSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7980d6f290aSmrg		vendor=pc
7990d6f290aSmrg		basic_os=sysv
8009027f4a0Smrg		;;
8019027f4a0Smrg	i*86sol2)
8020d6f290aSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
8030d6f290aSmrg		vendor=pc
8040d6f290aSmrg		basic_os=solaris2
8059027f4a0Smrg		;;
8060d6f290aSmrg	j90 | j90-cray)
8070d6f290aSmrg		cpu=j90
8080d6f290aSmrg		vendor=cray
8090d6f290aSmrg		basic_os=${basic_os:-unicos}
8109027f4a0Smrg		;;
8119027f4a0Smrg	iris | iris4d)
8120d6f290aSmrg		cpu=mips
8130d6f290aSmrg		vendor=sgi
8140d6f290aSmrg		case $basic_os in
8150d6f290aSmrg		    irix*)
8169027f4a0Smrg			;;
8179027f4a0Smrg		    *)
8180d6f290aSmrg			basic_os=irix4
8199027f4a0Smrg			;;
8209027f4a0Smrg		esac
8219027f4a0Smrg		;;
8229027f4a0Smrg	miniframe)
8230d6f290aSmrg		cpu=m68000
8240d6f290aSmrg		vendor=convergent
8259027f4a0Smrg		;;
8260d6f290aSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
8270d6f290aSmrg		cpu=m68k
8280d6f290aSmrg		vendor=atari
8290d6f290aSmrg		basic_os=mint
8309027f4a0Smrg		;;
8319027f4a0Smrg	news-3600 | risc-news)
8320d6f290aSmrg		cpu=mips
8330d6f290aSmrg		vendor=sony
8340d6f290aSmrg		basic_os=newsos
8359027f4a0Smrg		;;
836376c9fa8Smrg	next | m*-next)
8370d6f290aSmrg		cpu=m68k
8380d6f290aSmrg		vendor=next
8390d6f290aSmrg		case $basic_os in
8400d6f290aSmrg		    openstep*)
8410d6f290aSmrg		        ;;
8420d6f290aSmrg		    nextstep*)
8439027f4a0Smrg			;;
8440d6f290aSmrg		    ns2*)
8450d6f290aSmrg		      basic_os=nextstep2
8469027f4a0Smrg			;;
8479027f4a0Smrg		    *)
8480d6f290aSmrg		      basic_os=nextstep3
8499027f4a0Smrg			;;
8509027f4a0Smrg		esac
8519027f4a0Smrg		;;
8529027f4a0Smrg	np1)
8530d6f290aSmrg		cpu=np1
8540d6f290aSmrg		vendor=gould
855376c9fa8Smrg		;;
8569027f4a0Smrg	op50n-* | op60c-*)
8570d6f290aSmrg		cpu=hppa1.1
8580d6f290aSmrg		vendor=oki
8590d6f290aSmrg		basic_os=proelf
8609027f4a0Smrg		;;
8619027f4a0Smrg	pa-hitachi)
8620d6f290aSmrg		cpu=hppa1.1
8630d6f290aSmrg		vendor=hitachi
8640d6f290aSmrg		basic_os=hiuxwe2
8653a72f200Smrg		;;
8669027f4a0Smrg	pbd)
8670d6f290aSmrg		cpu=sparc
8680d6f290aSmrg		vendor=tti
8699027f4a0Smrg		;;
8709027f4a0Smrg	pbb)
8710d6f290aSmrg		cpu=m68k
8720d6f290aSmrg		vendor=tti
8739027f4a0Smrg		;;
8740d6f290aSmrg	pc532)
8750d6f290aSmrg		cpu=ns32k
8760d6f290aSmrg		vendor=pc532
8779027f4a0Smrg		;;
8789027f4a0Smrg	pn)
8790d6f290aSmrg		cpu=pn
8800d6f290aSmrg		vendor=gould
8819027f4a0Smrg		;;
8820d6f290aSmrg	power)
8830d6f290aSmrg		cpu=power
8840d6f290aSmrg		vendor=ibm
8859027f4a0Smrg		;;
8860d6f290aSmrg	ps2)
8870d6f290aSmrg		cpu=i386
8880d6f290aSmrg		vendor=ibm
8899027f4a0Smrg		;;
8900d6f290aSmrg	rm[46]00)
8910d6f290aSmrg		cpu=mips
8920d6f290aSmrg		vendor=siemens
8939027f4a0Smrg		;;
8940d6f290aSmrg	rtpc | rtpc-*)
8950d6f290aSmrg		cpu=romp
8960d6f290aSmrg		vendor=ibm
8979027f4a0Smrg		;;
8980d6f290aSmrg	sde)
8990d6f290aSmrg		cpu=mipsisa32
9000d6f290aSmrg		vendor=sde
9010d6f290aSmrg		basic_os=${basic_os:-elf}
9029027f4a0Smrg		;;
9030d6f290aSmrg	simso-wrs)
9040d6f290aSmrg		cpu=sparclite
9050d6f290aSmrg		vendor=wrs
9060d6f290aSmrg		basic_os=vxworks
9079027f4a0Smrg		;;
9080d6f290aSmrg	tower | tower-32)
9090d6f290aSmrg		cpu=m68k
9100d6f290aSmrg		vendor=ncr
9119027f4a0Smrg		;;
9120d6f290aSmrg	vpp*|vx|vx-*)
9130d6f290aSmrg		cpu=f301
9140d6f290aSmrg		vendor=fujitsu
915fe2ac8d7Smrg		;;
9160d6f290aSmrg	w65)
9170d6f290aSmrg		cpu=w65
9180d6f290aSmrg		vendor=wdc
9199027f4a0Smrg		;;
9200d6f290aSmrg	w89k-*)
9210d6f290aSmrg		cpu=hppa1.1
9220d6f290aSmrg		vendor=winbond
9230d6f290aSmrg		basic_os=proelf
9249027f4a0Smrg		;;
9250d6f290aSmrg	none)
9260d6f290aSmrg		cpu=none
9270d6f290aSmrg		vendor=none
9289027f4a0Smrg		;;
9290d6f290aSmrg	leon|leon[3-9])
9300d6f290aSmrg		cpu=sparc
9310d6f290aSmrg		vendor=$basic_machine
9329027f4a0Smrg		;;
9330d6f290aSmrg	leon-*|leon[3-9]-*)
9340d6f290aSmrg		cpu=sparc
9350d6f290aSmrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
9369027f4a0Smrg		;;
9370d6f290aSmrg
9380d6f290aSmrg	*-*)
9390d6f290aSmrg		# shellcheck disable=SC2162
9400d6f290aSmrg		saved_IFS=$IFS
9410d6f290aSmrg		IFS="-" read cpu vendor <<EOF
9420d6f290aSmrg$basic_machine
9430d6f290aSmrgEOF
9440d6f290aSmrg		IFS=$saved_IFS
9459027f4a0Smrg		;;
9460d6f290aSmrg	# We use `pc' rather than `unknown'
9470d6f290aSmrg	# because (1) that's what they normally are, and
9480d6f290aSmrg	# (2) the word "unknown" tends to confuse beginning users.
9490d6f290aSmrg	i*86 | x86_64)
9500d6f290aSmrg		cpu=$basic_machine
9510d6f290aSmrg		vendor=pc
9529027f4a0Smrg		;;
9530d6f290aSmrg	# These rules are duplicated from below for sake of the special case above;
9540d6f290aSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
9550d6f290aSmrg	pc98)
9560d6f290aSmrg		cpu=i386
9570d6f290aSmrg		vendor=pc
9589027f4a0Smrg		;;
9590d6f290aSmrg	x64 | amd64)
9600d6f290aSmrg		cpu=x86_64
9610d6f290aSmrg		vendor=pc
9629027f4a0Smrg		;;
9630d6f290aSmrg	# Recognize the basic CPU types without company name.
9640d6f290aSmrg	*)
9650d6f290aSmrg		cpu=$basic_machine
9660d6f290aSmrg		vendor=unknown
9679027f4a0Smrg		;;
9680d6f290aSmrgesac
9690d6f290aSmrg
9700d6f290aSmrgunset -v basic_machine
9710d6f290aSmrg
9720d6f290aSmrg# Decode basic machines in the full and proper CPU-Company form.
9730d6f290aSmrgcase $cpu-$vendor in
9740d6f290aSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
9750d6f290aSmrg	# some cases the only manufacturer, in others, it is the most popular.
9760d6f290aSmrg	craynv-unknown)
9770d6f290aSmrg		vendor=cray
9780d6f290aSmrg		basic_os=${basic_os:-unicosmp}
9799027f4a0Smrg		;;
9800d6f290aSmrg	c90-unknown | c90-cray)
9810d6f290aSmrg		vendor=cray
9820d6f290aSmrg		basic_os=${Basic_os:-unicos}
9839027f4a0Smrg		;;
9840d6f290aSmrg	fx80-unknown)
9850d6f290aSmrg		vendor=alliant
9869027f4a0Smrg		;;
9870d6f290aSmrg	romp-unknown)
9880d6f290aSmrg		vendor=ibm
9899027f4a0Smrg		;;
9900d6f290aSmrg	mmix-unknown)
9910d6f290aSmrg		vendor=knuth
9929027f4a0Smrg		;;
9930d6f290aSmrg	microblaze-unknown | microblazeel-unknown)
9940d6f290aSmrg		vendor=xilinx
9959027f4a0Smrg		;;
9960d6f290aSmrg	rs6000-unknown)
9970d6f290aSmrg		vendor=ibm
9989027f4a0Smrg		;;
9990d6f290aSmrg	vax-unknown)
10000d6f290aSmrg		vendor=dec
10019027f4a0Smrg		;;
10020d6f290aSmrg	pdp11-unknown)
10030d6f290aSmrg		vendor=dec
1004fe2ac8d7Smrg		;;
10050d6f290aSmrg	we32k-unknown)
10060d6f290aSmrg		vendor=att
10079027f4a0Smrg		;;
10080d6f290aSmrg	cydra-unknown)
10090d6f290aSmrg		vendor=cydrome
10109027f4a0Smrg		;;
10110d6f290aSmrg	i370-ibm*)
10120d6f290aSmrg		vendor=ibm
10139027f4a0Smrg		;;
10140d6f290aSmrg	orion-unknown)
10150d6f290aSmrg		vendor=highlevel
10169027f4a0Smrg		;;
10170d6f290aSmrg	xps-unknown | xps100-unknown)
10180d6f290aSmrg		cpu=xps100
10190d6f290aSmrg		vendor=honeywell
10209027f4a0Smrg		;;
10210d6f290aSmrg
10220d6f290aSmrg	# Here we normalize CPU types with a missing or matching vendor
1023224bc9c7Smrg	armh-unknown | armh-alt)
1024224bc9c7Smrg		cpu=armv7l
1025224bc9c7Smrg		vendor=alt
1026224bc9c7Smrg		basic_os=${basic_os:-linux-gnueabihf}
1027224bc9c7Smrg		;;
10280d6f290aSmrg	dpx20-unknown | dpx20-bull)
10290d6f290aSmrg		cpu=rs6000
10300d6f290aSmrg		vendor=bull
10310d6f290aSmrg		basic_os=${basic_os:-bosx}
10329027f4a0Smrg		;;
10330d6f290aSmrg
10340d6f290aSmrg	# Here we normalize CPU types irrespective of the vendor
10350d6f290aSmrg	amd64-*)
10360d6f290aSmrg		cpu=x86_64
10379027f4a0Smrg		;;
10380d6f290aSmrg	blackfin-*)
10390d6f290aSmrg		cpu=bfin
10400d6f290aSmrg		basic_os=linux
10419027f4a0Smrg		;;
10420d6f290aSmrg	c54x-*)
10430d6f290aSmrg		cpu=tic54x
10449027f4a0Smrg		;;
10450d6f290aSmrg	c55x-*)
10460d6f290aSmrg		cpu=tic55x
10479027f4a0Smrg		;;
10480d6f290aSmrg	c6x-*)
10490d6f290aSmrg		cpu=tic6x
10509027f4a0Smrg		;;
10510d6f290aSmrg	e500v[12]-*)
10520d6f290aSmrg		cpu=powerpc
10530d6f290aSmrg		basic_os=${basic_os}"spe"
10549027f4a0Smrg		;;
10550d6f290aSmrg	mips3*-*)
10560d6f290aSmrg		cpu=mips64
10579027f4a0Smrg		;;
10580d6f290aSmrg	ms1-*)
10590d6f290aSmrg		cpu=mt
10609027f4a0Smrg		;;
10610d6f290aSmrg	m68knommu-*)
10620d6f290aSmrg		cpu=m68k
10630d6f290aSmrg		basic_os=linux
10649027f4a0Smrg		;;
10650d6f290aSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
10660d6f290aSmrg		cpu=s12z
10679027f4a0Smrg		;;
10680d6f290aSmrg	openrisc-*)
10690d6f290aSmrg		cpu=or32
10709027f4a0Smrg		;;
10710d6f290aSmrg	parisc-*)
10720d6f290aSmrg		cpu=hppa
10730d6f290aSmrg		basic_os=linux
10749027f4a0Smrg		;;
10750d6f290aSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
10760d6f290aSmrg		cpu=i586
10779027f4a0Smrg		;;
1078224bc9c7Smrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
10790d6f290aSmrg		cpu=i686
10809027f4a0Smrg		;;
10810d6f290aSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
10820d6f290aSmrg		cpu=i686
10839027f4a0Smrg		;;
10840d6f290aSmrg	pentium4-*)
10850d6f290aSmrg		cpu=i786
10869027f4a0Smrg		;;
10870d6f290aSmrg	pc98-*)
10880d6f290aSmrg		cpu=i386
10899027f4a0Smrg		;;
10900d6f290aSmrg	ppc-* | ppcbe-*)
10910d6f290aSmrg		cpu=powerpc
10929027f4a0Smrg		;;
10930d6f290aSmrg	ppcle-* | powerpclittle-*)
10940d6f290aSmrg		cpu=powerpcle
10959027f4a0Smrg		;;
10960d6f290aSmrg	ppc64-*)
10970d6f290aSmrg		cpu=powerpc64
10989027f4a0Smrg		;;
10990d6f290aSmrg	ppc64le-* | powerpc64little-*)
11000d6f290aSmrg		cpu=powerpc64le
11019027f4a0Smrg		;;
11020d6f290aSmrg	sb1-*)
11030d6f290aSmrg		cpu=mipsisa64sb1
11049027f4a0Smrg		;;
11050d6f290aSmrg	sb1el-*)
11060d6f290aSmrg		cpu=mipsisa64sb1el
11079027f4a0Smrg		;;
11080d6f290aSmrg	sh5e[lb]-*)
11090d6f290aSmrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
11109027f4a0Smrg		;;
11110d6f290aSmrg	spur-*)
11120d6f290aSmrg		cpu=spur
11139027f4a0Smrg		;;
11140d6f290aSmrg	strongarm-* | thumb-*)
11150d6f290aSmrg		cpu=arm
11169027f4a0Smrg		;;
11170d6f290aSmrg	tx39-*)
11180d6f290aSmrg		cpu=mipstx39
1119376c9fa8Smrg		;;
11200d6f290aSmrg	tx39el-*)
11210d6f290aSmrg		cpu=mipstx39el
11229027f4a0Smrg		;;
11230d6f290aSmrg	x64-*)
11240d6f290aSmrg		cpu=x86_64
11259027f4a0Smrg		;;
1126fe2ac8d7Smrg	xscale-* | xscalee[bl]-*)
11270d6f290aSmrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
11289027f4a0Smrg		;;
1129224bc9c7Smrg	arm64-* | aarch64le-*)
11300d6f290aSmrg		cpu=aarch64
11319027f4a0Smrg		;;
11329027f4a0Smrg
11330d6f290aSmrg	# Recognize the canonical CPU Types that limit and/or modify the
11340d6f290aSmrg	# company names they are paired with.
11350d6f290aSmrg	cr16-*)
11360d6f290aSmrg		basic_os=${basic_os:-elf}
11379027f4a0Smrg		;;
11380d6f290aSmrg	crisv32-* | etraxfs*-*)
11390d6f290aSmrg		cpu=crisv32
11400d6f290aSmrg		vendor=axis
11419027f4a0Smrg		;;
11420d6f290aSmrg	cris-* | etrax*-*)
11430d6f290aSmrg		cpu=cris
11440d6f290aSmrg		vendor=axis
11459027f4a0Smrg		;;
11460d6f290aSmrg	crx-*)
11470d6f290aSmrg		basic_os=${basic_os:-elf}
11489027f4a0Smrg		;;
11490d6f290aSmrg	neo-tandem)
11500d6f290aSmrg		cpu=neo
11510d6f290aSmrg		vendor=tandem
11529027f4a0Smrg		;;
11530d6f290aSmrg	nse-tandem)
11540d6f290aSmrg		cpu=nse
11550d6f290aSmrg		vendor=tandem
11569027f4a0Smrg		;;
11570d6f290aSmrg	nsr-tandem)
11580d6f290aSmrg		cpu=nsr
11590d6f290aSmrg		vendor=tandem
11609027f4a0Smrg		;;
11610d6f290aSmrg	nsv-tandem)
11620d6f290aSmrg		cpu=nsv
11630d6f290aSmrg		vendor=tandem
11649027f4a0Smrg		;;
11650d6f290aSmrg	nsx-tandem)
11660d6f290aSmrg		cpu=nsx
11670d6f290aSmrg		vendor=tandem
11689027f4a0Smrg		;;
11690d6f290aSmrg	mipsallegrexel-sony)
11700d6f290aSmrg		cpu=mipsallegrexel
11710d6f290aSmrg		vendor=sony
11729027f4a0Smrg		;;
11730d6f290aSmrg	tile*-*)
11740d6f290aSmrg		basic_os=${basic_os:-linux-gnu}
11759027f4a0Smrg		;;
11760d6f290aSmrg
11779027f4a0Smrg	*)
11780d6f290aSmrg		# Recognize the canonical CPU types that are allowed with any
11790d6f290aSmrg		# company name.
11800d6f290aSmrg		case $cpu in
11810d6f290aSmrg			1750a | 580 \
11820d6f290aSmrg			| a29k \
11830d6f290aSmrg			| aarch64 | aarch64_be \
11840d6f290aSmrg			| abacus \
11850d6f290aSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
11860d6f290aSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
11870d6f290aSmrg			| alphapca5[67] | alpha64pca5[67] \
11880d6f290aSmrg			| am33_2.0 \
11890d6f290aSmrg			| amdgcn \
11900d6f290aSmrg			| arc | arceb | arc32 | arc64 \
11910d6f290aSmrg			| arm | arm[lb]e | arme[lb] | armv* \
11920d6f290aSmrg			| avr | avr32 \
11930d6f290aSmrg			| asmjs \
11940d6f290aSmrg			| ba \
11950d6f290aSmrg			| be32 | be64 \
11960d6f290aSmrg			| bfin | bpf | bs2000 \
11970d6f290aSmrg			| c[123]* | c30 | [cjt]90 | c4x \
11980d6f290aSmrg			| c8051 | clipper | craynv | csky | cydra \
11990d6f290aSmrg			| d10v | d30v | dlx | dsp16xx \
12000d6f290aSmrg			| e2k | elxsi | epiphany \
12010d6f290aSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
12020d6f290aSmrg			| h8300 | h8500 \
12030d6f290aSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
12040d6f290aSmrg			| hexagon \
12050d6f290aSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
12060d6f290aSmrg			| ip2k | iq2000 \
12070d6f290aSmrg			| k1om \
12080d6f290aSmrg			| le32 | le64 \
12090d6f290aSmrg			| lm32 \
1210224bc9c7Smrg			| loongarch32 | loongarch64 \
12110d6f290aSmrg			| m32c | m32r | m32rle \
12120d6f290aSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
12130d6f290aSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
12140d6f290aSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
12150d6f290aSmrg			| microblaze | microblazeel \
12160d6f290aSmrg			| mips | mipsbe | mipseb | mipsel | mipsle \
12170d6f290aSmrg			| mips16 \
12180d6f290aSmrg			| mips64 | mips64eb | mips64el \
12190d6f290aSmrg			| mips64octeon | mips64octeonel \
12200d6f290aSmrg			| mips64orion | mips64orionel \
12210d6f290aSmrg			| mips64r5900 | mips64r5900el \
12220d6f290aSmrg			| mips64vr | mips64vrel \
12230d6f290aSmrg			| mips64vr4100 | mips64vr4100el \
12240d6f290aSmrg			| mips64vr4300 | mips64vr4300el \
12250d6f290aSmrg			| mips64vr5000 | mips64vr5000el \
12260d6f290aSmrg			| mips64vr5900 | mips64vr5900el \
12270d6f290aSmrg			| mipsisa32 | mipsisa32el \
12280d6f290aSmrg			| mipsisa32r2 | mipsisa32r2el \
12290d6f290aSmrg			| mipsisa32r3 | mipsisa32r3el \
12300d6f290aSmrg			| mipsisa32r5 | mipsisa32r5el \
12310d6f290aSmrg			| mipsisa32r6 | mipsisa32r6el \
12320d6f290aSmrg			| mipsisa64 | mipsisa64el \
12330d6f290aSmrg			| mipsisa64r2 | mipsisa64r2el \
12340d6f290aSmrg			| mipsisa64r3 | mipsisa64r3el \
12350d6f290aSmrg			| mipsisa64r5 | mipsisa64r5el \
12360d6f290aSmrg			| mipsisa64r6 | mipsisa64r6el \
12370d6f290aSmrg			| mipsisa64sb1 | mipsisa64sb1el \
12380d6f290aSmrg			| mipsisa64sr71k | mipsisa64sr71kel \
12390d6f290aSmrg			| mipsr5900 | mipsr5900el \
12400d6f290aSmrg			| mipstx39 | mipstx39el \
12410d6f290aSmrg			| mmix \
12420d6f290aSmrg			| mn10200 | mn10300 \
12430d6f290aSmrg			| moxie \
12440d6f290aSmrg			| mt \
12450d6f290aSmrg			| msp430 \
12460d6f290aSmrg			| nds32 | nds32le | nds32be \
12470d6f290aSmrg			| nfp \
12480d6f290aSmrg			| nios | nios2 | nios2eb | nios2el \
12490d6f290aSmrg			| none | np1 | ns16k | ns32k | nvptx \
12500d6f290aSmrg			| open8 \
12510d6f290aSmrg			| or1k* \
12520d6f290aSmrg			| or32 \
12530d6f290aSmrg			| orion \
12540d6f290aSmrg			| picochip \
12550d6f290aSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
12560d6f290aSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
12570d6f290aSmrg			| pru \
12580d6f290aSmrg			| pyramid \
12590d6f290aSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
12600d6f290aSmrg			| rl78 | romp | rs6000 | rx \
12610d6f290aSmrg			| s390 | s390x \
12620d6f290aSmrg			| score \
12630d6f290aSmrg			| sh | shl \
12640d6f290aSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
12650d6f290aSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
12660d6f290aSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
12670d6f290aSmrg			| sparclite \
12680d6f290aSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
12690d6f290aSmrg			| spu \
12700d6f290aSmrg			| tahoe \
12710d6f290aSmrg			| thumbv7* \
12720d6f290aSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
12730d6f290aSmrg			| tron \
12740d6f290aSmrg			| ubicom32 \
12750d6f290aSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
12760d6f290aSmrg			| vax \
12770d6f290aSmrg			| visium \
12780d6f290aSmrg			| w65 \
12790d6f290aSmrg			| wasm32 | wasm64 \
12800d6f290aSmrg			| we32k \
12810d6f290aSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
12820d6f290aSmrg			| xstormy16 | xtensa* \
12830d6f290aSmrg			| ymp \
12840d6f290aSmrg			| z8k | z80)
12850d6f290aSmrg				;;
12860d6f290aSmrg
12870d6f290aSmrg			*)
12880d6f290aSmrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
12890d6f290aSmrg				exit 1
12900d6f290aSmrg				;;
12910d6f290aSmrg		esac
12929027f4a0Smrg		;;
12939027f4a0Smrgesac
12949027f4a0Smrg
12959027f4a0Smrg# Here we canonicalize certain aliases for manufacturers.
12960d6f290aSmrgcase $vendor in
12970d6f290aSmrg	digital*)
12980d6f290aSmrg		vendor=dec
12999027f4a0Smrg		;;
13000d6f290aSmrg	commodore*)
13010d6f290aSmrg		vendor=cbm
13029027f4a0Smrg		;;
13039027f4a0Smrg	*)
13049027f4a0Smrg		;;
13059027f4a0Smrgesac
13069027f4a0Smrg
13079027f4a0Smrg# Decode manufacturer-specific aliases for certain operating systems.
13089027f4a0Smrg
13090d6f290aSmrgif test x$basic_os != x
13109027f4a0Smrgthen
13110d6f290aSmrg
1312224bc9c7Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
13130d6f290aSmrg# set os.
13140d6f290aSmrgcase $basic_os in
13150d6f290aSmrg	gnu/linux*)
13160d6f290aSmrg		kernel=linux
13170d6f290aSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
13180d6f290aSmrg		;;
13190d6f290aSmrg	os2-emx)
13200d6f290aSmrg		kernel=os2
13210d6f290aSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
13220d6f290aSmrg		;;
13230d6f290aSmrg	nto-qnx*)
13240d6f290aSmrg		kernel=nto
13250d6f290aSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
13260d6f290aSmrg		;;
13270d6f290aSmrg	*-*)
13280d6f290aSmrg		# shellcheck disable=SC2162
13290d6f290aSmrg		saved_IFS=$IFS
13300d6f290aSmrg		IFS="-" read kernel os <<EOF
13310d6f290aSmrg$basic_os
13320d6f290aSmrgEOF
13330d6f290aSmrg		IFS=$saved_IFS
13340d6f290aSmrg		;;
13350d6f290aSmrg	# Default OS when just kernel was specified
13360d6f290aSmrg	nto*)
13370d6f290aSmrg		kernel=nto
13380d6f290aSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
13390d6f290aSmrg		;;
13400d6f290aSmrg	linux*)
13410d6f290aSmrg		kernel=linux
13420d6f290aSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
13430d6f290aSmrg		;;
1344224bc9c7Smrg	managarm*)
1345224bc9c7Smrg		kernel=managarm
1346224bc9c7Smrg		os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
1347224bc9c7Smrg		;;
13480d6f290aSmrg	*)
13490d6f290aSmrg		kernel=
13500d6f290aSmrg		os=$basic_os
13510d6f290aSmrg		;;
13520d6f290aSmrgesac
13530d6f290aSmrg
13540d6f290aSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
13550d6f290aSmrg# etc.)
13569027f4a0Smrgcase $os in
1357376c9fa8Smrg	# First match some system type aliases that might get confused
1358376c9fa8Smrg	# with valid system types.
13590d6f290aSmrg	# solaris* is a basic system type, with this one exception.
13600d6f290aSmrg	auroraux)
13610d6f290aSmrg		os=auroraux
13623a72f200Smrg		;;
13630d6f290aSmrg	bluegene*)
13640d6f290aSmrg		os=cnk
13659027f4a0Smrg		;;
13660d6f290aSmrg	solaris1 | solaris1.*)
13670d6f290aSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
13689027f4a0Smrg		;;
13690d6f290aSmrg	solaris)
13700d6f290aSmrg		os=solaris2
13719027f4a0Smrg		;;
13720d6f290aSmrg	unixware*)
13730d6f290aSmrg		os=sysv4.2uw
13749027f4a0Smrg		;;
1375376c9fa8Smrg	# es1800 is here to avoid being matched by es* (a different OS)
13760d6f290aSmrg	es1800*)
13770d6f290aSmrg		os=ose
1378376c9fa8Smrg		;;
13790d6f290aSmrg	# Some version numbers need modification
13800d6f290aSmrg	chorusos*)
13810d6f290aSmrg		os=chorusos
13829027f4a0Smrg		;;
13830d6f290aSmrg	isc)
13840d6f290aSmrg		os=isc2.2
13859027f4a0Smrg		;;
13860d6f290aSmrg	sco6)
13870d6f290aSmrg		os=sco5v6
13889027f4a0Smrg		;;
13890d6f290aSmrg	sco5)
13900d6f290aSmrg		os=sco3.2v5
13919027f4a0Smrg		;;
13920d6f290aSmrg	sco4)
13930d6f290aSmrg		os=sco3.2v4
13949027f4a0Smrg		;;
13950d6f290aSmrg	sco3.2.[4-9]*)
13960d6f290aSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
13979027f4a0Smrg		;;
13980d6f290aSmrg	sco*v* | scout)
13990d6f290aSmrg		# Don't match below
14009027f4a0Smrg		;;
14010d6f290aSmrg	sco*)
14020d6f290aSmrg		os=sco3.2v2
14039027f4a0Smrg		;;
14040d6f290aSmrg	psos*)
14050d6f290aSmrg		os=psos
14069027f4a0Smrg		;;
14070d6f290aSmrg	qnx*)
14080d6f290aSmrg		os=qnx
14099027f4a0Smrg		;;
14100d6f290aSmrg	hiux*)
14110d6f290aSmrg		os=hiuxwe2
14129027f4a0Smrg		;;
14130d6f290aSmrg	lynx*178)
14140d6f290aSmrg		os=lynxos178
14159027f4a0Smrg		;;
14160d6f290aSmrg	lynx*5)
14170d6f290aSmrg		os=lynxos5
14189027f4a0Smrg		;;
14190d6f290aSmrg	lynxos*)
14200d6f290aSmrg		# don't get caught up in next wildcard
14219027f4a0Smrg		;;
14220d6f290aSmrg	lynx*)
14230d6f290aSmrg		os=lynxos
14249027f4a0Smrg		;;
14250d6f290aSmrg	mac[0-9]*)
14260d6f290aSmrg		os=`echo "$os" | sed -e 's|mac|macos|'`
14279027f4a0Smrg		;;
14280d6f290aSmrg	opened*)
14290d6f290aSmrg		os=openedition
14309027f4a0Smrg		;;
14310d6f290aSmrg	os400*)
14320d6f290aSmrg		os=os400
14339027f4a0Smrg		;;
14340d6f290aSmrg	sunos5*)
14350d6f290aSmrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
14369027f4a0Smrg		;;
14370d6f290aSmrg	sunos6*)
14380d6f290aSmrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
14399027f4a0Smrg		;;
14400d6f290aSmrg	wince*)
14410d6f290aSmrg		os=wince
14429027f4a0Smrg		;;
14430d6f290aSmrg	utek*)
14440d6f290aSmrg		os=bsd
14459027f4a0Smrg		;;
14460d6f290aSmrg	dynix*)
14470d6f290aSmrg		os=bsd
14489027f4a0Smrg		;;
14490d6f290aSmrg	acis*)
14500d6f290aSmrg		os=aos
14519027f4a0Smrg		;;
14520d6f290aSmrg	atheos*)
14530d6f290aSmrg		os=atheos
14549027f4a0Smrg		;;
14550d6f290aSmrg	syllable*)
14560d6f290aSmrg		os=syllable
14570d6f290aSmrg		;;
14580d6f290aSmrg	386bsd)
14590d6f290aSmrg		os=bsd
14600d6f290aSmrg		;;
14610d6f290aSmrg	ctix* | uts*)
14620d6f290aSmrg		os=sysv
14630d6f290aSmrg		;;
14640d6f290aSmrg	nova*)
14650d6f290aSmrg		os=rtmk-nova
14660d6f290aSmrg		;;
14670d6f290aSmrg	ns2)
14680d6f290aSmrg		os=nextstep2
14690d6f290aSmrg		;;
14700d6f290aSmrg	# Preserve the version number of sinix5.
14710d6f290aSmrg	sinix5.*)
14720d6f290aSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
14739027f4a0Smrg		;;
14740d6f290aSmrg	sinix*)
14750d6f290aSmrg		os=sysv4
14769027f4a0Smrg		;;
14770d6f290aSmrg	tpf*)
14780d6f290aSmrg		os=tpf
14799027f4a0Smrg		;;
14800d6f290aSmrg	triton*)
14810d6f290aSmrg		os=sysv3
14829027f4a0Smrg		;;
14830d6f290aSmrg	oss*)
14840d6f290aSmrg		os=sysv3
14859027f4a0Smrg		;;
14860d6f290aSmrg	svr4*)
14870d6f290aSmrg		os=sysv4
14889027f4a0Smrg		;;
14890d6f290aSmrg	svr3)
14900d6f290aSmrg		os=sysv3
14919027f4a0Smrg		;;
14920d6f290aSmrg	sysvr4)
14930d6f290aSmrg		os=sysv4
14949027f4a0Smrg		;;
14950d6f290aSmrg	ose*)
14960d6f290aSmrg		os=ose
14979027f4a0Smrg		;;
14980d6f290aSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
14990d6f290aSmrg		os=mint
15003a72f200Smrg		;;
15010d6f290aSmrg	dicos*)
15020d6f290aSmrg		os=dicos
15030d6f290aSmrg		;;
15040d6f290aSmrg	pikeos*)
1505376c9fa8Smrg		# Until real need of OS specific support for
1506376c9fa8Smrg		# particular features comes up, bare metal
1507376c9fa8Smrg		# configurations are quite functional.
15080d6f290aSmrg		case $cpu in
1509376c9fa8Smrg		    arm*)
15100d6f290aSmrg			os=eabi
1511376c9fa8Smrg			;;
1512376c9fa8Smrg		    *)
15130d6f290aSmrg			os=elf
1514376c9fa8Smrg			;;
1515376c9fa8Smrg		esac
1516376c9fa8Smrg		;;
15179027f4a0Smrg	*)
15180d6f290aSmrg		# No normalization, but not necessarily accepted, that comes below.
15199027f4a0Smrg		;;
15209027f4a0Smrgesac
15210d6f290aSmrg
15229027f4a0Smrgelse
15239027f4a0Smrg
15249027f4a0Smrg# Here we handle the default operating systems that come with various machines.
15259027f4a0Smrg# The value should be what the vendor currently ships out the door with their
15269027f4a0Smrg# machine or put another way, the most popular os provided with the machine.
15279027f4a0Smrg
15289027f4a0Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
15299027f4a0Smrg# "-sun"), then you have to tell the case statement up towards the top
15309027f4a0Smrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
15319027f4a0Smrg# will signal an error saying that MANUFACTURER isn't an operating
15329027f4a0Smrg# system, and we'll never get to this point.
15339027f4a0Smrg
15340d6f290aSmrgkernel=
15350d6f290aSmrgcase $cpu-$vendor in
1536fe2ac8d7Smrg	score-*)
15370d6f290aSmrg		os=elf
15389027f4a0Smrg		;;
1539fe2ac8d7Smrg	spu-*)
15400d6f290aSmrg		os=elf
15419027f4a0Smrg		;;
15429027f4a0Smrg	*-acorn)
15430d6f290aSmrg		os=riscix1.2
15449027f4a0Smrg		;;
15459027f4a0Smrg	arm*-rebel)
15460d6f290aSmrg		kernel=linux
15470d6f290aSmrg		os=gnu
15489027f4a0Smrg		;;
15499027f4a0Smrg	arm*-semi)
15500d6f290aSmrg		os=aout
15519027f4a0Smrg		;;
1552fe2ac8d7Smrg	c4x-* | tic4x-*)
15530d6f290aSmrg		os=coff
1554fe2ac8d7Smrg		;;
1555376c9fa8Smrg	c8051-*)
15560d6f290aSmrg		os=elf
15570d6f290aSmrg		;;
15580d6f290aSmrg	clipper-intergraph)
15590d6f290aSmrg		os=clix
1560376c9fa8Smrg		;;
1561fe2ac8d7Smrg	hexagon-*)
15620d6f290aSmrg		os=elf
15639027f4a0Smrg		;;
15643a72f200Smrg	tic54x-*)
15650d6f290aSmrg		os=coff
15663a72f200Smrg		;;
15673a72f200Smrg	tic55x-*)
15680d6f290aSmrg		os=coff
15693a72f200Smrg		;;
15703a72f200Smrg	tic6x-*)
15710d6f290aSmrg		os=coff
15723a72f200Smrg		;;
15739027f4a0Smrg	# This must come before the *-dec entry.
15749027f4a0Smrg	pdp10-*)
15750d6f290aSmrg		os=tops20
15769027f4a0Smrg		;;
15779027f4a0Smrg	pdp11-*)
15780d6f290aSmrg		os=none
15799027f4a0Smrg		;;
15809027f4a0Smrg	*-dec | vax-*)
15810d6f290aSmrg		os=ultrix4.2
15829027f4a0Smrg		;;
15839027f4a0Smrg	m68*-apollo)
15840d6f290aSmrg		os=domain
15859027f4a0Smrg		;;
15869027f4a0Smrg	i386-sun)
15870d6f290aSmrg		os=sunos4.0.2
15889027f4a0Smrg		;;
15899027f4a0Smrg	m68000-sun)
15900d6f290aSmrg		os=sunos3
15919027f4a0Smrg		;;
15929027f4a0Smrg	m68*-cisco)
15930d6f290aSmrg		os=aout
15949027f4a0Smrg		;;
1595fe2ac8d7Smrg	mep-*)
15960d6f290aSmrg		os=elf
15973a72f200Smrg		;;
15989027f4a0Smrg	mips*-cisco)
15990d6f290aSmrg		os=elf
16009027f4a0Smrg		;;
16019027f4a0Smrg	mips*-*)
16020d6f290aSmrg		os=elf
16039027f4a0Smrg		;;
16049027f4a0Smrg	or32-*)
16050d6f290aSmrg		os=coff
16069027f4a0Smrg		;;
16079027f4a0Smrg	*-tti)	# must be before sparc entry or we get the wrong os.
16080d6f290aSmrg		os=sysv3
16099027f4a0Smrg		;;
16109027f4a0Smrg	sparc-* | *-sun)
16110d6f290aSmrg		os=sunos4.1.1
16129027f4a0Smrg		;;
1613376c9fa8Smrg	pru-*)
16140d6f290aSmrg		os=elf
1615376c9fa8Smrg		;;
16169027f4a0Smrg	*-be)
16170d6f290aSmrg		os=beos
16189027f4a0Smrg		;;
16199027f4a0Smrg	*-ibm)
16200d6f290aSmrg		os=aix
16219027f4a0Smrg		;;
1622fe2ac8d7Smrg	*-knuth)
16230d6f290aSmrg		os=mmixware
16249027f4a0Smrg		;;
16259027f4a0Smrg	*-wec)
16260d6f290aSmrg		os=proelf
16279027f4a0Smrg		;;
16289027f4a0Smrg	*-winbond)
16290d6f290aSmrg		os=proelf
16309027f4a0Smrg		;;
16319027f4a0Smrg	*-oki)
16320d6f290aSmrg		os=proelf
16339027f4a0Smrg		;;
16349027f4a0Smrg	*-hp)
16350d6f290aSmrg		os=hpux
16369027f4a0Smrg		;;
16379027f4a0Smrg	*-hitachi)
16380d6f290aSmrg		os=hiux
16399027f4a0Smrg		;;
16409027f4a0Smrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
16410d6f290aSmrg		os=sysv
16429027f4a0Smrg		;;
16439027f4a0Smrg	*-cbm)
16440d6f290aSmrg		os=amigaos
16459027f4a0Smrg		;;
16469027f4a0Smrg	*-dg)
16470d6f290aSmrg		os=dgux
16489027f4a0Smrg		;;
16499027f4a0Smrg	*-dolphin)
16500d6f290aSmrg		os=sysv3
16519027f4a0Smrg		;;
16529027f4a0Smrg	m68k-ccur)
16530d6f290aSmrg		os=rtu
16549027f4a0Smrg		;;
16559027f4a0Smrg	m88k-omron*)
16560d6f290aSmrg		os=luna
16579027f4a0Smrg		;;
1658376c9fa8Smrg	*-next)
16590d6f290aSmrg		os=nextstep
16609027f4a0Smrg		;;
16619027f4a0Smrg	*-sequent)
16620d6f290aSmrg		os=ptx
16639027f4a0Smrg		;;
16649027f4a0Smrg	*-crds)
16650d6f290aSmrg		os=unos
16669027f4a0Smrg		;;
16679027f4a0Smrg	*-ns)
16680d6f290aSmrg		os=genix
16699027f4a0Smrg		;;
16709027f4a0Smrg	i370-*)
16710d6f290aSmrg		os=mvs
16729027f4a0Smrg		;;
16739027f4a0Smrg	*-gould)
16740d6f290aSmrg		os=sysv
16759027f4a0Smrg		;;
16769027f4a0Smrg	*-highlevel)
16770d6f290aSmrg		os=bsd
16789027f4a0Smrg		;;
16799027f4a0Smrg	*-encore)
16800d6f290aSmrg		os=bsd
16819027f4a0Smrg		;;
16829027f4a0Smrg	*-sgi)
16830d6f290aSmrg		os=irix
16849027f4a0Smrg		;;
16859027f4a0Smrg	*-siemens)
16860d6f290aSmrg		os=sysv4
16879027f4a0Smrg		;;
16889027f4a0Smrg	*-masscomp)
16890d6f290aSmrg		os=rtu
16909027f4a0Smrg		;;
16919027f4a0Smrg	f30[01]-fujitsu | f700-fujitsu)
16920d6f290aSmrg		os=uxpv
16939027f4a0Smrg		;;
16949027f4a0Smrg	*-rom68k)
16950d6f290aSmrg		os=coff
16969027f4a0Smrg		;;
16979027f4a0Smrg	*-*bug)
16980d6f290aSmrg		os=coff
16999027f4a0Smrg		;;
17009027f4a0Smrg	*-apple)
17010d6f290aSmrg		os=macos
17029027f4a0Smrg		;;
17039027f4a0Smrg	*-atari*)
17040d6f290aSmrg		os=mint
17050d6f290aSmrg		;;
17060d6f290aSmrg	*-wrs)
17070d6f290aSmrg		os=vxworks
17089027f4a0Smrg		;;
17099027f4a0Smrg	*)
17100d6f290aSmrg		os=none
17119027f4a0Smrg		;;
17129027f4a0Smrgesac
17130d6f290aSmrg
17149027f4a0Smrgfi
17159027f4a0Smrg
17160d6f290aSmrg# Now, validate our (potentially fixed-up) OS.
17170d6f290aSmrgcase $os in
17180d6f290aSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
17190d6f290aSmrg	musl* | newlib* | relibc* | uclibc*)
17200d6f290aSmrg		;;
17210d6f290aSmrg	# Likewise for "kernel-abi"
17220d6f290aSmrg	eabi* | gnueabi*)
17230d6f290aSmrg		;;
17240d6f290aSmrg	# VxWorks passes extra cpu info in the 4th filed.
17250d6f290aSmrg	simlinux | simwindows | spe)
17260d6f290aSmrg		;;
17270d6f290aSmrg	# Now accept the basic system types.
17280d6f290aSmrg	# The portable systems comes first.
17290d6f290aSmrg	# Each alternative MUST end in a * to match a version number.
17300d6f290aSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
17310d6f290aSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
17320d6f290aSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
17330d6f290aSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
17340d6f290aSmrg	     | hiux* | abug | nacl* | netware* | windows* \
17350d6f290aSmrg	     | os9* | macos* | osx* | ios* \
17360d6f290aSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
17370d6f290aSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
17380d6f290aSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
17390d6f290aSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
17400d6f290aSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
17410d6f290aSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
17420d6f290aSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
17430d6f290aSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
17440d6f290aSmrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
17450d6f290aSmrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
17460d6f290aSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
17470d6f290aSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
17480d6f290aSmrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
17490d6f290aSmrg	     | midipix* | mingw32* | mingw64* | mint* \
17500d6f290aSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
17510d6f290aSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
17520d6f290aSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
17530d6f290aSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
17540d6f290aSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
17550d6f290aSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
17560d6f290aSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
17570d6f290aSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
17580d6f290aSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
17590d6f290aSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
1760224bc9c7Smrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
1761224bc9c7Smrg	     | fiwix* | mlibc* )
17620d6f290aSmrg		;;
17630d6f290aSmrg	# This one is extra strict with allowed versions
17640d6f290aSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
17650d6f290aSmrg		# Don't forget version if it is 3.2v4 or newer.
17660d6f290aSmrg		;;
17670d6f290aSmrg	none)
17680d6f290aSmrg		;;
1769224bc9c7Smrg	kernel* )
1770224bc9c7Smrg		# Restricted further below
1771224bc9c7Smrg		;;
17720d6f290aSmrg	*)
17730d6f290aSmrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
17740d6f290aSmrg		exit 1
17750d6f290aSmrg		;;
17760d6f290aSmrgesac
17770d6f290aSmrg
17780d6f290aSmrg# As a final step for OS-related things, validate the OS-kernel combination
17790d6f290aSmrg# (given a valid OS), if there is a kernel.
17800d6f290aSmrgcase $kernel-$os in
17810d6f290aSmrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
1782224bc9c7Smrg		   | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* )
17830d6f290aSmrg		;;
17840d6f290aSmrg	uclinux-uclibc* )
17850d6f290aSmrg		;;
1786224bc9c7Smrg	managarm-mlibc* | managarm-kernel* )
1787224bc9c7Smrg		;;
1788224bc9c7Smrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* )
17890d6f290aSmrg		# These are just libc implementations, not actual OSes, and thus
17900d6f290aSmrg		# require a kernel.
17910d6f290aSmrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
17920d6f290aSmrg		exit 1
17930d6f290aSmrg		;;
1794224bc9c7Smrg	-kernel* )
1795224bc9c7Smrg		echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2
1796224bc9c7Smrg		exit 1
1797224bc9c7Smrg		;;
1798224bc9c7Smrg	*-kernel* )
1799224bc9c7Smrg		echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2
1800224bc9c7Smrg		exit 1
1801224bc9c7Smrg		;;
18020d6f290aSmrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
18030d6f290aSmrg		;;
18040d6f290aSmrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
18050d6f290aSmrg		;;
18060d6f290aSmrg	nto-qnx*)
18070d6f290aSmrg		;;
18080d6f290aSmrg	os2-emx)
18090d6f290aSmrg		;;
18100d6f290aSmrg	*-eabi* | *-gnueabi*)
18110d6f290aSmrg		;;
18120d6f290aSmrg	-*)
18130d6f290aSmrg		# Blank kernel with real OS is always fine.
18140d6f290aSmrg		;;
18150d6f290aSmrg	*-*)
18160d6f290aSmrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
18170d6f290aSmrg		exit 1
18180d6f290aSmrg		;;
18190d6f290aSmrgesac
18200d6f290aSmrg
18219027f4a0Smrg# Here we handle the case where we know the os, and the CPU type, but not the
18229027f4a0Smrg# manufacturer.  We pick the logical manufacturer.
18230d6f290aSmrgcase $vendor in
18240d6f290aSmrg	unknown)
18250d6f290aSmrg		case $cpu-$os in
18260d6f290aSmrg			*-riscix*)
18279027f4a0Smrg				vendor=acorn
18289027f4a0Smrg				;;
18290d6f290aSmrg			*-sunos*)
18309027f4a0Smrg				vendor=sun
18319027f4a0Smrg				;;
18320d6f290aSmrg			*-cnk* | *-aix*)
18339027f4a0Smrg				vendor=ibm
18349027f4a0Smrg				;;
18350d6f290aSmrg			*-beos*)
18369027f4a0Smrg				vendor=be
18379027f4a0Smrg				;;
18380d6f290aSmrg			*-hpux*)
18399027f4a0Smrg				vendor=hp
18409027f4a0Smrg				;;
18410d6f290aSmrg			*-mpeix*)
18429027f4a0Smrg				vendor=hp
18439027f4a0Smrg				;;
18440d6f290aSmrg			*-hiux*)
18459027f4a0Smrg				vendor=hitachi
18469027f4a0Smrg				;;
18470d6f290aSmrg			*-unos*)
18489027f4a0Smrg				vendor=crds
18499027f4a0Smrg				;;
18500d6f290aSmrg			*-dgux*)
18519027f4a0Smrg				vendor=dg
18529027f4a0Smrg				;;
18530d6f290aSmrg			*-luna*)
18549027f4a0Smrg				vendor=omron
18559027f4a0Smrg				;;
18560d6f290aSmrg			*-genix*)
18579027f4a0Smrg				vendor=ns
18589027f4a0Smrg				;;
18590d6f290aSmrg			*-clix*)
18600d6f290aSmrg				vendor=intergraph
18610d6f290aSmrg				;;
18620d6f290aSmrg			*-mvs* | *-opened*)
18630d6f290aSmrg				vendor=ibm
18640d6f290aSmrg				;;
18650d6f290aSmrg			*-os400*)
18669027f4a0Smrg				vendor=ibm
18679027f4a0Smrg				;;
18680d6f290aSmrg			s390-* | s390x-*)
18699027f4a0Smrg				vendor=ibm
18709027f4a0Smrg				;;
18710d6f290aSmrg			*-ptx*)
18729027f4a0Smrg				vendor=sequent
18739027f4a0Smrg				;;
18740d6f290aSmrg			*-tpf*)
18759027f4a0Smrg				vendor=ibm
18769027f4a0Smrg				;;
18770d6f290aSmrg			*-vxsim* | *-vxworks* | *-windiss*)
18789027f4a0Smrg				vendor=wrs
18799027f4a0Smrg				;;
18800d6f290aSmrg			*-aux*)
18819027f4a0Smrg				vendor=apple
18829027f4a0Smrg				;;
18830d6f290aSmrg			*-hms*)
18849027f4a0Smrg				vendor=hitachi
18859027f4a0Smrg				;;
18860d6f290aSmrg			*-mpw* | *-macos*)
18879027f4a0Smrg				vendor=apple
18889027f4a0Smrg				;;
18890d6f290aSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
18909027f4a0Smrg				vendor=atari
18919027f4a0Smrg				;;
18920d6f290aSmrg			*-vos*)
18939027f4a0Smrg				vendor=stratus
18949027f4a0Smrg				;;
18959027f4a0Smrg		esac
18969027f4a0Smrg		;;
18979027f4a0Smrgesac
18989027f4a0Smrg
18990d6f290aSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
19009027f4a0Smrgexit
19019027f4a0Smrg
19029027f4a0Smrg# Local variables:
19030d6f290aSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
19049027f4a0Smrg# time-stamp-start: "timestamp='"
19059027f4a0Smrg# time-stamp-format: "%:y-%02m-%02d"
19069027f4a0Smrg# time-stamp-end: "'"
19079027f4a0Smrg# End:
1908