1c582b7e3Smrg#! /bin/sh
2c582b7e3Smrg# Configuration validation subroutine script.
38ce07328Smrg#   Copyright 1992-2021 Free Software Foundation, Inc.
4c582b7e3Smrg
58ce07328Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale
68ce07328Smrg
78ce07328Smrgtimestamp='2021-08-14'
8c582b7e3Smrg
9e3d74329Smrg# This file is free software; you can redistribute it and/or modify it
10e3d74329Smrg# under the terms of the GNU General Public License as published by
11e3d74329Smrg# the Free Software Foundation; either version 3 of the License, or
12c582b7e3Smrg# (at your option) any later version.
13c582b7e3Smrg#
14e3d74329Smrg# This program is distributed in the hope that it will be useful, but
15e3d74329Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
16e3d74329Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17e3d74329Smrg# General Public License for more details.
18c582b7e3Smrg#
19c582b7e3Smrg# You should have received a copy of the GNU General Public License
208ce07328Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
21c582b7e3Smrg#
22c582b7e3Smrg# As a special exception to the GNU General Public License, if you
23c582b7e3Smrg# distribute this file as part of a program that contains a
24c582b7e3Smrg# configuration script generated by Autoconf, you may include it under
25e3d74329Smrg# the same distribution terms that you use for the rest of that
26e3d74329Smrg# program.  This Exception is an additional permission under section 7
27e3d74329Smrg# of the GNU General Public License, version 3 ("GPLv3").
28c582b7e3Smrg
29c582b7e3Smrg
30a56d54acSmrg# Please send patches to <config-patches@gnu.org>.
31c582b7e3Smrg#
32c582b7e3Smrg# Configuration subroutine to validate and canonicalize a configuration type.
33c582b7e3Smrg# Supply the specified configuration type as an argument.
34c582b7e3Smrg# If it is invalid, we print an error message on stderr and exit with code 1.
35c582b7e3Smrg# Otherwise, we print the canonical config type on stdout and succeed.
36c582b7e3Smrg
3742a55b46Smrg# You can get the latest version of this script from:
388ce07328Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
3942a55b46Smrg
40c582b7e3Smrg# This file is supposed to be the same for all GNU packages
41c582b7e3Smrg# and recognize all the CPU types, system types and aliases
42c582b7e3Smrg# that are meaningful with *any* GNU software.
43c582b7e3Smrg# Each package is responsible for reporting which valid configurations
44c582b7e3Smrg# it does not support.  The user should be able to distinguish
45c582b7e3Smrg# a failure to support a valid configuration from a meaningless
46c582b7e3Smrg# configuration.
47c582b7e3Smrg
48c582b7e3Smrg# The goal of this file is to map all the various variations of a given
49c582b7e3Smrg# machine specification into a single specification in the form:
50c582b7e3Smrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
51c582b7e3Smrg# or in some cases, the newer four-part form:
52c582b7e3Smrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
53c582b7e3Smrg# It is wrong to echo any other type of specification.
54c582b7e3Smrg
558ce07328Smrg# The "shellcheck disable" line above the timestamp inhibits complaints
568ce07328Smrg# about features and limitations of the classic Bourne shell that were
578ce07328Smrg# superseded or lifted in POSIX.  However, this script identifies a wide
588ce07328Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
598ce07328Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still
608ce07328Smrg# have a pre-POSIX /bin/sh.
618ce07328Smrg
62c582b7e3Smrgme=`echo "$0" | sed -e 's,.*/,,'`
63c582b7e3Smrg
64c582b7e3Smrgusage="\
658ce07328SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
66c582b7e3Smrg
67c582b7e3SmrgCanonicalize a configuration name.
68c582b7e3Smrg
698ce07328SmrgOptions:
70c582b7e3Smrg  -h, --help         print this help, then exit
71c582b7e3Smrg  -t, --time-stamp   print date of last modification, then exit
72c582b7e3Smrg  -v, --version      print version number, then exit
73c582b7e3Smrg
74c582b7e3SmrgReport bugs and patches to <config-patches@gnu.org>."
75c582b7e3Smrg
76c582b7e3Smrgversion="\
77c582b7e3SmrgGNU config.sub ($timestamp)
78c582b7e3Smrg
798ce07328SmrgCopyright 1992-2021 Free Software Foundation, Inc.
80c582b7e3Smrg
81c582b7e3SmrgThis is free software; see the source for copying conditions.  There is NO
82c582b7e3Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
83c582b7e3Smrg
84c582b7e3Smrghelp="
85c582b7e3SmrgTry \`$me --help' for more information."
86c582b7e3Smrg
87c582b7e3Smrg# Parse command line
88c582b7e3Smrgwhile test $# -gt 0 ; do
89c582b7e3Smrg  case $1 in
90c582b7e3Smrg    --time-stamp | --time* | -t )
91c582b7e3Smrg       echo "$timestamp" ; exit ;;
92c582b7e3Smrg    --version | -v )
93c582b7e3Smrg       echo "$version" ; exit ;;
94c582b7e3Smrg    --help | --h* | -h )
95c582b7e3Smrg       echo "$usage"; exit ;;
96c582b7e3Smrg    -- )     # Stop option processing
97c582b7e3Smrg       shift; break ;;
98c582b7e3Smrg    - )	# Use stdin as input.
99c582b7e3Smrg       break ;;
100c582b7e3Smrg    -* )
1018ce07328Smrg       echo "$me: invalid option $1$help" >&2
102c582b7e3Smrg       exit 1 ;;
103c582b7e3Smrg
104c582b7e3Smrg    *local*)
105c582b7e3Smrg       # First pass through any local machine types.
1068ce07328Smrg       echo "$1"
107c582b7e3Smrg       exit ;;
108c582b7e3Smrg
109c582b7e3Smrg    * )
110c582b7e3Smrg       break ;;
111c582b7e3Smrg  esac
112c582b7e3Smrgdone
113c582b7e3Smrg
114c582b7e3Smrgcase $# in
115c582b7e3Smrg 0) echo "$me: missing argument$help" >&2
116c582b7e3Smrg    exit 1;;
117c582b7e3Smrg 1) ;;
118c582b7e3Smrg *) echo "$me: too many arguments$help" >&2
119c582b7e3Smrg    exit 1;;
120c582b7e3Smrgesac
121c582b7e3Smrg
1228ce07328Smrg# Split fields of configuration type
1238ce07328Smrg# shellcheck disable=SC2162
1248ce07328Smrgsaved_IFS=$IFS
1258ce07328SmrgIFS="-" read field1 field2 field3 field4 <<EOF
1268ce07328Smrg$1
1278ce07328SmrgEOF
1288ce07328SmrgIFS=$saved_IFS
129c582b7e3Smrg
1308ce07328Smrg# Separate into logical components for further validation
1318ce07328Smrgcase $1 in
1328ce07328Smrg	*-*-*-*-*)
1338ce07328Smrg		echo Invalid configuration \`"$1"\': more than four components >&2
1348ce07328Smrg		exit 1
135c582b7e3Smrg		;;
1368ce07328Smrg	*-*-*-*)
1378ce07328Smrg		basic_machine=$field1-$field2
1388ce07328Smrg		basic_os=$field3-$field4
139c582b7e3Smrg		;;
1408ce07328Smrg	*-*-*)
1418ce07328Smrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
1428ce07328Smrg		# parts
1438ce07328Smrg		maybe_os=$field2-$field3
1448ce07328Smrg		case $maybe_os in
1458ce07328Smrg			nto-qnx* | linux-* | uclinux-uclibc* \
1468ce07328Smrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
1478ce07328Smrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
1488ce07328Smrg			| storm-chaos* | os2-emx* | rtmk-nova*)
1498ce07328Smrg				basic_machine=$field1
1508ce07328Smrg				basic_os=$maybe_os
1518ce07328Smrg				;;
1528ce07328Smrg			android-linux)
1538ce07328Smrg				basic_machine=$field1-unknown
1548ce07328Smrg				basic_os=linux-android
1558ce07328Smrg				;;
1568ce07328Smrg			*)
1578ce07328Smrg				basic_machine=$field1-$field2
1588ce07328Smrg				basic_os=$field3
1598ce07328Smrg				;;
1608ce07328Smrg		esac
161c582b7e3Smrg		;;
1628ce07328Smrg	*-*)
1638ce07328Smrg		# A lone config we happen to match not fitting any pattern
1648ce07328Smrg		case $field1-$field2 in
1658ce07328Smrg			decstation-3100)
1668ce07328Smrg				basic_machine=mips-dec
1678ce07328Smrg				basic_os=
1688ce07328Smrg				;;
1698ce07328Smrg			*-*)
1708ce07328Smrg				# Second component is usually, but not always the OS
1718ce07328Smrg				case $field2 in
1728ce07328Smrg					# Prevent following clause from handling this valid os
1738ce07328Smrg					sun*os*)
1748ce07328Smrg						basic_machine=$field1
1758ce07328Smrg						basic_os=$field2
1768ce07328Smrg						;;
1778ce07328Smrg					zephyr*)
1788ce07328Smrg						basic_machine=$field1-unknown
1798ce07328Smrg						basic_os=$field2
1808ce07328Smrg						;;
1818ce07328Smrg					# Manufacturers
1828ce07328Smrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
1838ce07328Smrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
1848ce07328Smrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
1858ce07328Smrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
1868ce07328Smrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
1878ce07328Smrg					| ultra | tti* | harris | dolphin | highlevel | gould \
1888ce07328Smrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
1898ce07328Smrg					| microblaze* | sim | cisco \
1908ce07328Smrg					| oki | wec | wrs | winbond)
1918ce07328Smrg						basic_machine=$field1-$field2
1928ce07328Smrg						basic_os=
1938ce07328Smrg						;;
1948ce07328Smrg					*)
1958ce07328Smrg						basic_machine=$field1
1968ce07328Smrg						basic_os=$field2
1978ce07328Smrg						;;
1988ce07328Smrg				esac
1998ce07328Smrg			;;
2008ce07328Smrg		esac
201c582b7e3Smrg		;;
2028ce07328Smrg	*)
2038ce07328Smrg		# Convert single-component short-hands not valid as part of
2048ce07328Smrg		# multi-component configurations.
2058ce07328Smrg		case $field1 in
2068ce07328Smrg			386bsd)
2078ce07328Smrg				basic_machine=i386-pc
2088ce07328Smrg				basic_os=bsd
2098ce07328Smrg				;;
2108ce07328Smrg			a29khif)
2118ce07328Smrg				basic_machine=a29k-amd
2128ce07328Smrg				basic_os=udi
2138ce07328Smrg				;;
2148ce07328Smrg			adobe68k)
2158ce07328Smrg				basic_machine=m68010-adobe
2168ce07328Smrg				basic_os=scout
2178ce07328Smrg				;;
2188ce07328Smrg			alliant)
2198ce07328Smrg				basic_machine=fx80-alliant
2208ce07328Smrg				basic_os=
2218ce07328Smrg				;;
2228ce07328Smrg			altos | altos3068)
2238ce07328Smrg				basic_machine=m68k-altos
2248ce07328Smrg				basic_os=
2258ce07328Smrg				;;
2268ce07328Smrg			am29k)
2278ce07328Smrg				basic_machine=a29k-none
2288ce07328Smrg				basic_os=bsd
2298ce07328Smrg				;;
2308ce07328Smrg			amdahl)
2318ce07328Smrg				basic_machine=580-amdahl
2328ce07328Smrg				basic_os=sysv
2338ce07328Smrg				;;
2348ce07328Smrg			amiga)
2358ce07328Smrg				basic_machine=m68k-unknown
2368ce07328Smrg				basic_os=
2378ce07328Smrg				;;
2388ce07328Smrg			amigaos | amigados)
2398ce07328Smrg				basic_machine=m68k-unknown
2408ce07328Smrg				basic_os=amigaos
2418ce07328Smrg				;;
2428ce07328Smrg			amigaunix | amix)
2438ce07328Smrg				basic_machine=m68k-unknown
2448ce07328Smrg				basic_os=sysv4
2458ce07328Smrg				;;
2468ce07328Smrg			apollo68)
2478ce07328Smrg				basic_machine=m68k-apollo
2488ce07328Smrg				basic_os=sysv
2498ce07328Smrg				;;
2508ce07328Smrg			apollo68bsd)
2518ce07328Smrg				basic_machine=m68k-apollo
2528ce07328Smrg				basic_os=bsd
2538ce07328Smrg				;;
2548ce07328Smrg			aros)
2558ce07328Smrg				basic_machine=i386-pc
2568ce07328Smrg				basic_os=aros
2578ce07328Smrg				;;
2588ce07328Smrg			aux)
2598ce07328Smrg				basic_machine=m68k-apple
2608ce07328Smrg				basic_os=aux
2618ce07328Smrg				;;
2628ce07328Smrg			balance)
2638ce07328Smrg				basic_machine=ns32k-sequent
2648ce07328Smrg				basic_os=dynix
2658ce07328Smrg				;;
2668ce07328Smrg			blackfin)
2678ce07328Smrg				basic_machine=bfin-unknown
2688ce07328Smrg				basic_os=linux
2698ce07328Smrg				;;
2708ce07328Smrg			cegcc)
2718ce07328Smrg				basic_machine=arm-unknown
2728ce07328Smrg				basic_os=cegcc
2738ce07328Smrg				;;
2748ce07328Smrg			convex-c1)
2758ce07328Smrg				basic_machine=c1-convex
2768ce07328Smrg				basic_os=bsd
2778ce07328Smrg				;;
2788ce07328Smrg			convex-c2)
2798ce07328Smrg				basic_machine=c2-convex
2808ce07328Smrg				basic_os=bsd
2818ce07328Smrg				;;
2828ce07328Smrg			convex-c32)
2838ce07328Smrg				basic_machine=c32-convex
2848ce07328Smrg				basic_os=bsd
2858ce07328Smrg				;;
2868ce07328Smrg			convex-c34)
2878ce07328Smrg				basic_machine=c34-convex
2888ce07328Smrg				basic_os=bsd
2898ce07328Smrg				;;
2908ce07328Smrg			convex-c38)
2918ce07328Smrg				basic_machine=c38-convex
2928ce07328Smrg				basic_os=bsd
2938ce07328Smrg				;;
2948ce07328Smrg			cray)
2958ce07328Smrg				basic_machine=j90-cray
2968ce07328Smrg				basic_os=unicos
2978ce07328Smrg				;;
2988ce07328Smrg			crds | unos)
2998ce07328Smrg				basic_machine=m68k-crds
3008ce07328Smrg				basic_os=
3018ce07328Smrg				;;
3028ce07328Smrg			da30)
3038ce07328Smrg				basic_machine=m68k-da30
3048ce07328Smrg				basic_os=
3058ce07328Smrg				;;
3068ce07328Smrg			decstation | pmax | pmin | dec3100 | decstatn)
3078ce07328Smrg				basic_machine=mips-dec
3088ce07328Smrg				basic_os=
3098ce07328Smrg				;;
3108ce07328Smrg			delta88)
3118ce07328Smrg				basic_machine=m88k-motorola
3128ce07328Smrg				basic_os=sysv3
3138ce07328Smrg				;;
3148ce07328Smrg			dicos)
3158ce07328Smrg				basic_machine=i686-pc
3168ce07328Smrg				basic_os=dicos
3178ce07328Smrg				;;
3188ce07328Smrg			djgpp)
3198ce07328Smrg				basic_machine=i586-pc
3208ce07328Smrg				basic_os=msdosdjgpp
3218ce07328Smrg				;;
3228ce07328Smrg			ebmon29k)
3238ce07328Smrg				basic_machine=a29k-amd
3248ce07328Smrg				basic_os=ebmon
3258ce07328Smrg				;;
3268ce07328Smrg			es1800 | OSE68k | ose68k | ose | OSE)
3278ce07328Smrg				basic_machine=m68k-ericsson
3288ce07328Smrg				basic_os=ose
3298ce07328Smrg				;;
3308ce07328Smrg			gmicro)
3318ce07328Smrg				basic_machine=tron-gmicro
3328ce07328Smrg				basic_os=sysv
3338ce07328Smrg				;;
3348ce07328Smrg			go32)
3358ce07328Smrg				basic_machine=i386-pc
3368ce07328Smrg				basic_os=go32
3378ce07328Smrg				;;
3388ce07328Smrg			h8300hms)
3398ce07328Smrg				basic_machine=h8300-hitachi
3408ce07328Smrg				basic_os=hms
3418ce07328Smrg				;;
3428ce07328Smrg			h8300xray)
3438ce07328Smrg				basic_machine=h8300-hitachi
3448ce07328Smrg				basic_os=xray
3458ce07328Smrg				;;
3468ce07328Smrg			h8500hms)
3478ce07328Smrg				basic_machine=h8500-hitachi
3488ce07328Smrg				basic_os=hms
3498ce07328Smrg				;;
3508ce07328Smrg			harris)
3518ce07328Smrg				basic_machine=m88k-harris
3528ce07328Smrg				basic_os=sysv3
3538ce07328Smrg				;;
3548ce07328Smrg			hp300 | hp300hpux)
3558ce07328Smrg				basic_machine=m68k-hp
3568ce07328Smrg				basic_os=hpux
3578ce07328Smrg				;;
3588ce07328Smrg			hp300bsd)
3598ce07328Smrg				basic_machine=m68k-hp
3608ce07328Smrg				basic_os=bsd
3618ce07328Smrg				;;
3628ce07328Smrg			hppaosf)
3638ce07328Smrg				basic_machine=hppa1.1-hp
3648ce07328Smrg				basic_os=osf
3658ce07328Smrg				;;
3668ce07328Smrg			hppro)
3678ce07328Smrg				basic_machine=hppa1.1-hp
3688ce07328Smrg				basic_os=proelf
3698ce07328Smrg				;;
3708ce07328Smrg			i386mach)
3718ce07328Smrg				basic_machine=i386-mach
3728ce07328Smrg				basic_os=mach
3738ce07328Smrg				;;
3748ce07328Smrg			isi68 | isi)
3758ce07328Smrg				basic_machine=m68k-isi
3768ce07328Smrg				basic_os=sysv
3778ce07328Smrg				;;
3788ce07328Smrg			m68knommu)
3798ce07328Smrg				basic_machine=m68k-unknown
3808ce07328Smrg				basic_os=linux
3818ce07328Smrg				;;
3828ce07328Smrg			magnum | m3230)
3838ce07328Smrg				basic_machine=mips-mips
3848ce07328Smrg				basic_os=sysv
3858ce07328Smrg				;;
3868ce07328Smrg			merlin)
3878ce07328Smrg				basic_machine=ns32k-utek
3888ce07328Smrg				basic_os=sysv
3898ce07328Smrg				;;
3908ce07328Smrg			mingw64)
3918ce07328Smrg				basic_machine=x86_64-pc
3928ce07328Smrg				basic_os=mingw64
3938ce07328Smrg				;;
3948ce07328Smrg			mingw32)
3958ce07328Smrg				basic_machine=i686-pc
3968ce07328Smrg				basic_os=mingw32
3978ce07328Smrg				;;
3988ce07328Smrg			mingw32ce)
3998ce07328Smrg				basic_machine=arm-unknown
4008ce07328Smrg				basic_os=mingw32ce
4018ce07328Smrg				;;
4028ce07328Smrg			monitor)
4038ce07328Smrg				basic_machine=m68k-rom68k
4048ce07328Smrg				basic_os=coff
4058ce07328Smrg				;;
4068ce07328Smrg			morphos)
4078ce07328Smrg				basic_machine=powerpc-unknown
4088ce07328Smrg				basic_os=morphos
4098ce07328Smrg				;;
4108ce07328Smrg			moxiebox)
4118ce07328Smrg				basic_machine=moxie-unknown
4128ce07328Smrg				basic_os=moxiebox
4138ce07328Smrg				;;
4148ce07328Smrg			msdos)
4158ce07328Smrg				basic_machine=i386-pc
4168ce07328Smrg				basic_os=msdos
4178ce07328Smrg				;;
4188ce07328Smrg			msys)
4198ce07328Smrg				basic_machine=i686-pc
4208ce07328Smrg				basic_os=msys
4218ce07328Smrg				;;
4228ce07328Smrg			mvs)
4238ce07328Smrg				basic_machine=i370-ibm
4248ce07328Smrg				basic_os=mvs
4258ce07328Smrg				;;
4268ce07328Smrg			nacl)
4278ce07328Smrg				basic_machine=le32-unknown
4288ce07328Smrg				basic_os=nacl
4298ce07328Smrg				;;
4308ce07328Smrg			ncr3000)
4318ce07328Smrg				basic_machine=i486-ncr
4328ce07328Smrg				basic_os=sysv4
4338ce07328Smrg				;;
4348ce07328Smrg			netbsd386)
4358ce07328Smrg				basic_machine=i386-pc
4368ce07328Smrg				basic_os=netbsd
4378ce07328Smrg				;;
4388ce07328Smrg			netwinder)
4398ce07328Smrg				basic_machine=armv4l-rebel
4408ce07328Smrg				basic_os=linux
4418ce07328Smrg				;;
4428ce07328Smrg			news | news700 | news800 | news900)
4438ce07328Smrg				basic_machine=m68k-sony
4448ce07328Smrg				basic_os=newsos
4458ce07328Smrg				;;
4468ce07328Smrg			news1000)
4478ce07328Smrg				basic_machine=m68030-sony
4488ce07328Smrg				basic_os=newsos
4498ce07328Smrg				;;
4508ce07328Smrg			necv70)
4518ce07328Smrg				basic_machine=v70-nec
4528ce07328Smrg				basic_os=sysv
4538ce07328Smrg				;;
4548ce07328Smrg			nh3000)
4558ce07328Smrg				basic_machine=m68k-harris
4568ce07328Smrg				basic_os=cxux
4578ce07328Smrg				;;
4588ce07328Smrg			nh[45]000)
4598ce07328Smrg				basic_machine=m88k-harris
4608ce07328Smrg				basic_os=cxux
4618ce07328Smrg				;;
4628ce07328Smrg			nindy960)
4638ce07328Smrg				basic_machine=i960-intel
4648ce07328Smrg				basic_os=nindy
4658ce07328Smrg				;;
4668ce07328Smrg			mon960)
4678ce07328Smrg				basic_machine=i960-intel
4688ce07328Smrg				basic_os=mon960
4698ce07328Smrg				;;
4708ce07328Smrg			nonstopux)
4718ce07328Smrg				basic_machine=mips-compaq
4728ce07328Smrg				basic_os=nonstopux
4738ce07328Smrg				;;
4748ce07328Smrg			os400)
4758ce07328Smrg				basic_machine=powerpc-ibm
4768ce07328Smrg				basic_os=os400
4778ce07328Smrg				;;
4788ce07328Smrg			OSE68000 | ose68000)
4798ce07328Smrg				basic_machine=m68000-ericsson
4808ce07328Smrg				basic_os=ose
4818ce07328Smrg				;;
4828ce07328Smrg			os68k)
4838ce07328Smrg				basic_machine=m68k-none
4848ce07328Smrg				basic_os=os68k
4858ce07328Smrg				;;
4868ce07328Smrg			paragon)
4878ce07328Smrg				basic_machine=i860-intel
4888ce07328Smrg				basic_os=osf
4898ce07328Smrg				;;
4908ce07328Smrg			parisc)
4918ce07328Smrg				basic_machine=hppa-unknown
4928ce07328Smrg				basic_os=linux
4938ce07328Smrg				;;
4948ce07328Smrg			psp)
4958ce07328Smrg				basic_machine=mipsallegrexel-sony
4968ce07328Smrg				basic_os=psp
4978ce07328Smrg				;;
4988ce07328Smrg			pw32)
4998ce07328Smrg				basic_machine=i586-unknown
5008ce07328Smrg				basic_os=pw32
5018ce07328Smrg				;;
5028ce07328Smrg			rdos | rdos64)
5038ce07328Smrg				basic_machine=x86_64-pc
5048ce07328Smrg				basic_os=rdos
5058ce07328Smrg				;;
5068ce07328Smrg			rdos32)
5078ce07328Smrg				basic_machine=i386-pc
5088ce07328Smrg				basic_os=rdos
5098ce07328Smrg				;;
5108ce07328Smrg			rom68k)
5118ce07328Smrg				basic_machine=m68k-rom68k
5128ce07328Smrg				basic_os=coff
5138ce07328Smrg				;;
5148ce07328Smrg			sa29200)
5158ce07328Smrg				basic_machine=a29k-amd
5168ce07328Smrg				basic_os=udi
5178ce07328Smrg				;;
5188ce07328Smrg			sei)
5198ce07328Smrg				basic_machine=mips-sei
5208ce07328Smrg				basic_os=seiux
5218ce07328Smrg				;;
5228ce07328Smrg			sequent)
5238ce07328Smrg				basic_machine=i386-sequent
5248ce07328Smrg				basic_os=
5258ce07328Smrg				;;
5268ce07328Smrg			sps7)
5278ce07328Smrg				basic_machine=m68k-bull
5288ce07328Smrg				basic_os=sysv2
5298ce07328Smrg				;;
5308ce07328Smrg			st2000)
5318ce07328Smrg				basic_machine=m68k-tandem
5328ce07328Smrg				basic_os=
5338ce07328Smrg				;;
5348ce07328Smrg			stratus)
5358ce07328Smrg				basic_machine=i860-stratus
5368ce07328Smrg				basic_os=sysv4
5378ce07328Smrg				;;
5388ce07328Smrg			sun2)
5398ce07328Smrg				basic_machine=m68000-sun
5408ce07328Smrg				basic_os=
5418ce07328Smrg				;;
5428ce07328Smrg			sun2os3)
5438ce07328Smrg				basic_machine=m68000-sun
5448ce07328Smrg				basic_os=sunos3
5458ce07328Smrg				;;
5468ce07328Smrg			sun2os4)
5478ce07328Smrg				basic_machine=m68000-sun
5488ce07328Smrg				basic_os=sunos4
5498ce07328Smrg				;;
5508ce07328Smrg			sun3)
5518ce07328Smrg				basic_machine=m68k-sun
5528ce07328Smrg				basic_os=
5538ce07328Smrg				;;
5548ce07328Smrg			sun3os3)
5558ce07328Smrg				basic_machine=m68k-sun
5568ce07328Smrg				basic_os=sunos3
5578ce07328Smrg				;;
5588ce07328Smrg			sun3os4)
5598ce07328Smrg				basic_machine=m68k-sun
5608ce07328Smrg				basic_os=sunos4
5618ce07328Smrg				;;
5628ce07328Smrg			sun4)
5638ce07328Smrg				basic_machine=sparc-sun
5648ce07328Smrg				basic_os=
5658ce07328Smrg				;;
5668ce07328Smrg			sun4os3)
5678ce07328Smrg				basic_machine=sparc-sun
5688ce07328Smrg				basic_os=sunos3
5698ce07328Smrg				;;
5708ce07328Smrg			sun4os4)
5718ce07328Smrg				basic_machine=sparc-sun
5728ce07328Smrg				basic_os=sunos4
5738ce07328Smrg				;;
5748ce07328Smrg			sun4sol2)
5758ce07328Smrg				basic_machine=sparc-sun
5768ce07328Smrg				basic_os=solaris2
5778ce07328Smrg				;;
5788ce07328Smrg			sun386 | sun386i | roadrunner)
5798ce07328Smrg				basic_machine=i386-sun
5808ce07328Smrg				basic_os=
5818ce07328Smrg				;;
5828ce07328Smrg			sv1)
5838ce07328Smrg				basic_machine=sv1-cray
5848ce07328Smrg				basic_os=unicos
5858ce07328Smrg				;;
5868ce07328Smrg			symmetry)
5878ce07328Smrg				basic_machine=i386-sequent
5888ce07328Smrg				basic_os=dynix
5898ce07328Smrg				;;
5908ce07328Smrg			t3e)
5918ce07328Smrg				basic_machine=alphaev5-cray
5928ce07328Smrg				basic_os=unicos
5938ce07328Smrg				;;
5948ce07328Smrg			t90)
5958ce07328Smrg				basic_machine=t90-cray
5968ce07328Smrg				basic_os=unicos
5978ce07328Smrg				;;
5988ce07328Smrg			toad1)
5998ce07328Smrg				basic_machine=pdp10-xkl
6008ce07328Smrg				basic_os=tops20
6018ce07328Smrg				;;
6028ce07328Smrg			tpf)
6038ce07328Smrg				basic_machine=s390x-ibm
6048ce07328Smrg				basic_os=tpf
6058ce07328Smrg				;;
6068ce07328Smrg			udi29k)
6078ce07328Smrg				basic_machine=a29k-amd
6088ce07328Smrg				basic_os=udi
6098ce07328Smrg				;;
6108ce07328Smrg			ultra3)
6118ce07328Smrg				basic_machine=a29k-nyu
6128ce07328Smrg				basic_os=sym1
6138ce07328Smrg				;;
6148ce07328Smrg			v810 | necv810)
6158ce07328Smrg				basic_machine=v810-nec
6168ce07328Smrg				basic_os=none
6178ce07328Smrg				;;
6188ce07328Smrg			vaxv)
6198ce07328Smrg				basic_machine=vax-dec
6208ce07328Smrg				basic_os=sysv
6218ce07328Smrg				;;
6228ce07328Smrg			vms)
6238ce07328Smrg				basic_machine=vax-dec
6248ce07328Smrg				basic_os=vms
6258ce07328Smrg				;;
6268ce07328Smrg			vsta)
6278ce07328Smrg				basic_machine=i386-pc
6288ce07328Smrg				basic_os=vsta
6298ce07328Smrg				;;
6308ce07328Smrg			vxworks960)
6318ce07328Smrg				basic_machine=i960-wrs
6328ce07328Smrg				basic_os=vxworks
6338ce07328Smrg				;;
6348ce07328Smrg			vxworks68)
6358ce07328Smrg				basic_machine=m68k-wrs
6368ce07328Smrg				basic_os=vxworks
6378ce07328Smrg				;;
6388ce07328Smrg			vxworks29k)
6398ce07328Smrg				basic_machine=a29k-wrs
6408ce07328Smrg				basic_os=vxworks
6418ce07328Smrg				;;
6428ce07328Smrg			xbox)
6438ce07328Smrg				basic_machine=i686-pc
6448ce07328Smrg				basic_os=mingw32
6458ce07328Smrg				;;
6468ce07328Smrg			ymp)
6478ce07328Smrg				basic_machine=ymp-cray
6488ce07328Smrg				basic_os=unicos
6498ce07328Smrg				;;
6508ce07328Smrg			*)
6518ce07328Smrg				basic_machine=$1
6528ce07328Smrg				basic_os=
6538ce07328Smrg				;;
6548ce07328Smrg		esac
655c582b7e3Smrg		;;
656c582b7e3Smrgesac
657c582b7e3Smrg
6588ce07328Smrg# Decode 1-component or ad-hoc basic machines
659c582b7e3Smrgcase $basic_machine in
6608ce07328Smrg	# Here we handle the default manufacturer of certain CPU types.  It is in
6618ce07328Smrg	# some cases the only manufacturer, in others, it is the most popular.
6628ce07328Smrg	w89k)
6638ce07328Smrg		cpu=hppa1.1
6648ce07328Smrg		vendor=winbond
665a56d54acSmrg		;;
6668ce07328Smrg	op50n)
6678ce07328Smrg		cpu=hppa1.1
6688ce07328Smrg		vendor=oki
669c582b7e3Smrg		;;
6708ce07328Smrg	op60c)
6718ce07328Smrg		cpu=hppa1.1
6728ce07328Smrg		vendor=oki
673c582b7e3Smrg		;;
6748ce07328Smrg	ibm*)
6758ce07328Smrg		cpu=i370
6768ce07328Smrg		vendor=ibm
677c582b7e3Smrg		;;
6788ce07328Smrg	orion105)
6798ce07328Smrg		cpu=clipper
6808ce07328Smrg		vendor=highlevel
6810496e070Smrg		;;
6828ce07328Smrg	mac | mpw | mac-mpw)
6838ce07328Smrg		cpu=m68k
6848ce07328Smrg		vendor=apple
68542a55b46Smrg		;;
6868ce07328Smrg	pmac | pmac-mpw)
6878ce07328Smrg		cpu=powerpc
6888ce07328Smrg		vendor=apple
68942a55b46Smrg		;;
69042a55b46Smrg
691c582b7e3Smrg	# Recognize the various machine names and aliases which stand
692c582b7e3Smrg	# for a CPU type and a company and sometimes even an OS.
693c582b7e3Smrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
6948ce07328Smrg		cpu=m68000
6958ce07328Smrg		vendor=att
696c582b7e3Smrg		;;
697c582b7e3Smrg	3b*)
6988ce07328Smrg		cpu=we32k
6998ce07328Smrg		vendor=att
70019019ffeSmrg		;;
70142a55b46Smrg	bluegene*)
7028ce07328Smrg		cpu=powerpc
7038ce07328Smrg		vendor=ibm
7048ce07328Smrg		basic_os=cnk
705c582b7e3Smrg		;;
706c582b7e3Smrg	decsystem10* | dec10*)
7078ce07328Smrg		cpu=pdp10
7088ce07328Smrg		vendor=dec
7098ce07328Smrg		basic_os=tops10
710c582b7e3Smrg		;;
711c582b7e3Smrg	decsystem20* | dec20*)
7128ce07328Smrg		cpu=pdp10
7138ce07328Smrg		vendor=dec
7148ce07328Smrg		basic_os=tops20
715c582b7e3Smrg		;;
716c582b7e3Smrg	delta | 3300 | motorola-3300 | motorola-delta \
717c582b7e3Smrg	      | 3300-motorola | delta-motorola)
7188ce07328Smrg		cpu=m68k
7198ce07328Smrg		vendor=motorola
720c582b7e3Smrg		;;
7218ce07328Smrg	dpx2*)
7228ce07328Smrg		cpu=m68k
7238ce07328Smrg		vendor=bull
7248ce07328Smrg		basic_os=sysv3
725c582b7e3Smrg		;;
726c582b7e3Smrg	encore | umax | mmax)
7278ce07328Smrg		cpu=ns32k
7288ce07328Smrg		vendor=encore
729c582b7e3Smrg		;;
7308ce07328Smrg	elxsi)
7318ce07328Smrg		cpu=elxsi
7328ce07328Smrg		vendor=elxsi
7338ce07328Smrg		basic_os=${basic_os:-bsd}
734c582b7e3Smrg		;;
735c582b7e3Smrg	fx2800)
7368ce07328Smrg		cpu=i860
7378ce07328Smrg		vendor=alliant
738c582b7e3Smrg		;;
739c582b7e3Smrg	genix)
7408ce07328Smrg		cpu=ns32k
7418ce07328Smrg		vendor=ns
742c582b7e3Smrg		;;
743c582b7e3Smrg	h3050r* | hiux*)
7448ce07328Smrg		cpu=hppa1.1
7458ce07328Smrg		vendor=hitachi
7468ce07328Smrg		basic_os=hiuxwe2
747c582b7e3Smrg		;;
748c582b7e3Smrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
7498ce07328Smrg		cpu=hppa1.0
7508ce07328Smrg		vendor=hp
751c582b7e3Smrg		;;
752c582b7e3Smrg	hp9k2[0-9][0-9] | hp9k31[0-9])
7538ce07328Smrg		cpu=m68000
7548ce07328Smrg		vendor=hp
755c582b7e3Smrg		;;
756c582b7e3Smrg	hp9k3[2-9][0-9])
7578ce07328Smrg		cpu=m68k
7588ce07328Smrg		vendor=hp
759c582b7e3Smrg		;;
760c582b7e3Smrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
7618ce07328Smrg		cpu=hppa1.0
7628ce07328Smrg		vendor=hp
763c582b7e3Smrg		;;
764c582b7e3Smrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
7658ce07328Smrg		cpu=hppa1.1
7668ce07328Smrg		vendor=hp
767c582b7e3Smrg		;;
768c582b7e3Smrg	hp9k78[0-9] | hp78[0-9])
769c582b7e3Smrg		# FIXME: really hppa2.0-hp
7708ce07328Smrg		cpu=hppa1.1
7718ce07328Smrg		vendor=hp
772c582b7e3Smrg		;;
773c582b7e3Smrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
774c582b7e3Smrg		# FIXME: really hppa2.0-hp
7758ce07328Smrg		cpu=hppa1.1
7768ce07328Smrg		vendor=hp
777c582b7e3Smrg		;;
778c582b7e3Smrg	hp9k8[0-9][13679] | hp8[0-9][13679])
7798ce07328Smrg		cpu=hppa1.1
7808ce07328Smrg		vendor=hp
781c582b7e3Smrg		;;
782c582b7e3Smrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
7838ce07328Smrg		cpu=hppa1.0
7848ce07328Smrg		vendor=hp
785c582b7e3Smrg		;;
786c582b7e3Smrg	i*86v32)
7878ce07328Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7888ce07328Smrg		vendor=pc
7898ce07328Smrg		basic_os=sysv32
790c582b7e3Smrg		;;
791c582b7e3Smrg	i*86v4*)
7928ce07328Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7938ce07328Smrg		vendor=pc
7948ce07328Smrg		basic_os=sysv4
795c582b7e3Smrg		;;
796c582b7e3Smrg	i*86v)
7978ce07328Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7988ce07328Smrg		vendor=pc
7998ce07328Smrg		basic_os=sysv
800c582b7e3Smrg		;;
801c582b7e3Smrg	i*86sol2)
8028ce07328Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
8038ce07328Smrg		vendor=pc
8048ce07328Smrg		basic_os=solaris2
805c582b7e3Smrg		;;
8068ce07328Smrg	j90 | j90-cray)
8078ce07328Smrg		cpu=j90
8088ce07328Smrg		vendor=cray
8098ce07328Smrg		basic_os=${basic_os:-unicos}
810c582b7e3Smrg		;;
811c582b7e3Smrg	iris | iris4d)
8128ce07328Smrg		cpu=mips
8138ce07328Smrg		vendor=sgi
8148ce07328Smrg		case $basic_os in
8158ce07328Smrg		    irix*)
816c582b7e3Smrg			;;
817c582b7e3Smrg		    *)
8188ce07328Smrg			basic_os=irix4
819c582b7e3Smrg			;;
820c582b7e3Smrg		esac
821c582b7e3Smrg		;;
822c582b7e3Smrg	miniframe)
8238ce07328Smrg		cpu=m68000
8248ce07328Smrg		vendor=convergent
82542a55b46Smrg		;;
8268ce07328Smrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
8278ce07328Smrg		cpu=m68k
8288ce07328Smrg		vendor=atari
8298ce07328Smrg		basic_os=mint
830c582b7e3Smrg		;;
831c582b7e3Smrg	news-3600 | risc-news)
8328ce07328Smrg		cpu=mips
8338ce07328Smrg		vendor=sony
8348ce07328Smrg		basic_os=newsos
8358ce07328Smrg		;;
8368ce07328Smrg	next | m*-next)
8378ce07328Smrg		cpu=m68k
8388ce07328Smrg		vendor=next
8398ce07328Smrg		case $basic_os in
8408ce07328Smrg		    openstep*)
8418ce07328Smrg		        ;;
8428ce07328Smrg		    nextstep*)
843c582b7e3Smrg			;;
8448ce07328Smrg		    ns2*)
8458ce07328Smrg		      basic_os=nextstep2
846c582b7e3Smrg			;;
847c582b7e3Smrg		    *)
8488ce07328Smrg		      basic_os=nextstep3
849c582b7e3Smrg			;;
850c582b7e3Smrg		esac
851c582b7e3Smrg		;;
852c582b7e3Smrg	np1)
8538ce07328Smrg		cpu=np1
8548ce07328Smrg		vendor=gould
855c582b7e3Smrg		;;
856c582b7e3Smrg	op50n-* | op60c-*)
8578ce07328Smrg		cpu=hppa1.1
8588ce07328Smrg		vendor=oki
8598ce07328Smrg		basic_os=proelf
860c582b7e3Smrg		;;
861c582b7e3Smrg	pa-hitachi)
8628ce07328Smrg		cpu=hppa1.1
8638ce07328Smrg		vendor=hitachi
8648ce07328Smrg		basic_os=hiuxwe2
86519019ffeSmrg		;;
866c582b7e3Smrg	pbd)
8678ce07328Smrg		cpu=sparc
8688ce07328Smrg		vendor=tti
869c582b7e3Smrg		;;
870c582b7e3Smrg	pbb)
8718ce07328Smrg		cpu=m68k
8728ce07328Smrg		vendor=tti
873c582b7e3Smrg		;;
8748ce07328Smrg	pc532)
8758ce07328Smrg		cpu=ns32k
8768ce07328Smrg		vendor=pc532
877c582b7e3Smrg		;;
878c582b7e3Smrg	pn)
8798ce07328Smrg		cpu=pn
8808ce07328Smrg		vendor=gould
881c582b7e3Smrg		;;
8828ce07328Smrg	power)
8838ce07328Smrg		cpu=power
8848ce07328Smrg		vendor=ibm
885c582b7e3Smrg		;;
886c582b7e3Smrg	ps2)
8878ce07328Smrg		cpu=i386
8888ce07328Smrg		vendor=ibm
889c582b7e3Smrg		;;
890c582b7e3Smrg	rm[46]00)
8918ce07328Smrg		cpu=mips
8928ce07328Smrg		vendor=siemens
893c582b7e3Smrg		;;
894c582b7e3Smrg	rtpc | rtpc-*)
8958ce07328Smrg		cpu=romp
8968ce07328Smrg		vendor=ibm
897c582b7e3Smrg		;;
8988ce07328Smrg	sde)
8998ce07328Smrg		cpu=mipsisa32
9008ce07328Smrg		vendor=sde
9018ce07328Smrg		basic_os=${basic_os:-elf}
902c582b7e3Smrg		;;
9038ce07328Smrg	simso-wrs)
9048ce07328Smrg		cpu=sparclite
9058ce07328Smrg		vendor=wrs
9068ce07328Smrg		basic_os=vxworks
907c582b7e3Smrg		;;
9088ce07328Smrg	tower | tower-32)
9098ce07328Smrg		cpu=m68k
9108ce07328Smrg		vendor=ncr
911c582b7e3Smrg		;;
9128ce07328Smrg	vpp*|vx|vx-*)
9138ce07328Smrg		cpu=f301
9148ce07328Smrg		vendor=fujitsu
915c582b7e3Smrg		;;
9168ce07328Smrg	w65)
9178ce07328Smrg		cpu=w65
9188ce07328Smrg		vendor=wdc
919c582b7e3Smrg		;;
9208ce07328Smrg	w89k-*)
9218ce07328Smrg		cpu=hppa1.1
9228ce07328Smrg		vendor=winbond
9238ce07328Smrg		basic_os=proelf
924c582b7e3Smrg		;;
9258ce07328Smrg	none)
9268ce07328Smrg		cpu=none
9278ce07328Smrg		vendor=none
928c582b7e3Smrg		;;
9298ce07328Smrg	leon|leon[3-9])
9308ce07328Smrg		cpu=sparc
9318ce07328Smrg		vendor=$basic_machine
932c582b7e3Smrg		;;
9338ce07328Smrg	leon-*|leon[3-9]-*)
9348ce07328Smrg		cpu=sparc
9358ce07328Smrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
936c582b7e3Smrg		;;
9378ce07328Smrg
9388ce07328Smrg	*-*)
9398ce07328Smrg		# shellcheck disable=SC2162
9408ce07328Smrg		saved_IFS=$IFS
9418ce07328Smrg		IFS="-" read cpu vendor <<EOF
9428ce07328Smrg$basic_machine
9438ce07328SmrgEOF
9448ce07328Smrg		IFS=$saved_IFS
945c582b7e3Smrg		;;
9468ce07328Smrg	# We use `pc' rather than `unknown'
9478ce07328Smrg	# because (1) that's what they normally are, and
9488ce07328Smrg	# (2) the word "unknown" tends to confuse beginning users.
9498ce07328Smrg	i*86 | x86_64)
9508ce07328Smrg		cpu=$basic_machine
9518ce07328Smrg		vendor=pc
952c582b7e3Smrg		;;
9538ce07328Smrg	# These rules are duplicated from below for sake of the special case above;
9548ce07328Smrg	# i.e. things that normalized to x86 arches should also default to "pc"
9558ce07328Smrg	pc98)
9568ce07328Smrg		cpu=i386
9578ce07328Smrg		vendor=pc
958c582b7e3Smrg		;;
9598ce07328Smrg	x64 | amd64)
9608ce07328Smrg		cpu=x86_64
9618ce07328Smrg		vendor=pc
962c582b7e3Smrg		;;
9638ce07328Smrg	# Recognize the basic CPU types without company name.
9648ce07328Smrg	*)
9658ce07328Smrg		cpu=$basic_machine
9668ce07328Smrg		vendor=unknown
96742a55b46Smrg		;;
9688ce07328Smrgesac
9698ce07328Smrg
9708ce07328Smrgunset -v basic_machine
9718ce07328Smrg
9728ce07328Smrg# Decode basic machines in the full and proper CPU-Company form.
9738ce07328Smrgcase $cpu-$vendor in
9748ce07328Smrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
9758ce07328Smrg	# some cases the only manufacturer, in others, it is the most popular.
9768ce07328Smrg	craynv-unknown)
9778ce07328Smrg		vendor=cray
9788ce07328Smrg		basic_os=${basic_os:-unicosmp}
979c582b7e3Smrg		;;
9808ce07328Smrg	c90-unknown | c90-cray)
9818ce07328Smrg		vendor=cray
9828ce07328Smrg		basic_os=${Basic_os:-unicos}
983c582b7e3Smrg		;;
9848ce07328Smrg	fx80-unknown)
9858ce07328Smrg		vendor=alliant
986c582b7e3Smrg		;;
9878ce07328Smrg	romp-unknown)
9888ce07328Smrg		vendor=ibm
989c582b7e3Smrg		;;
9908ce07328Smrg	mmix-unknown)
9918ce07328Smrg		vendor=knuth
992c582b7e3Smrg		;;
9938ce07328Smrg	microblaze-unknown | microblazeel-unknown)
9948ce07328Smrg		vendor=xilinx
995c582b7e3Smrg		;;
9968ce07328Smrg	rs6000-unknown)
9978ce07328Smrg		vendor=ibm
998c582b7e3Smrg		;;
9998ce07328Smrg	vax-unknown)
10008ce07328Smrg		vendor=dec
1001c582b7e3Smrg		;;
10028ce07328Smrg	pdp11-unknown)
10038ce07328Smrg		vendor=dec
1004c582b7e3Smrg		;;
10058ce07328Smrg	we32k-unknown)
10068ce07328Smrg		vendor=att
1007c582b7e3Smrg		;;
10088ce07328Smrg	cydra-unknown)
10098ce07328Smrg		vendor=cydrome
1010c582b7e3Smrg		;;
10118ce07328Smrg	i370-ibm*)
10128ce07328Smrg		vendor=ibm
1013c582b7e3Smrg		;;
10148ce07328Smrg	orion-unknown)
10158ce07328Smrg		vendor=highlevel
1016c582b7e3Smrg		;;
10178ce07328Smrg	xps-unknown | xps100-unknown)
10188ce07328Smrg		cpu=xps100
10198ce07328Smrg		vendor=honeywell
1020c582b7e3Smrg		;;
10218ce07328Smrg
10228ce07328Smrg	# Here we normalize CPU types with a missing or matching vendor
10238ce07328Smrg	dpx20-unknown | dpx20-bull)
10248ce07328Smrg		cpu=rs6000
10258ce07328Smrg		vendor=bull
10268ce07328Smrg		basic_os=${basic_os:-bosx}
1027c582b7e3Smrg		;;
10288ce07328Smrg
10298ce07328Smrg	# Here we normalize CPU types irrespective of the vendor
10308ce07328Smrg	amd64-*)
10318ce07328Smrg		cpu=x86_64
103219019ffeSmrg		;;
10338ce07328Smrg	blackfin-*)
10348ce07328Smrg		cpu=bfin
10358ce07328Smrg		basic_os=linux
1036c582b7e3Smrg		;;
10378ce07328Smrg	c54x-*)
10388ce07328Smrg		cpu=tic54x
1039c582b7e3Smrg		;;
10408ce07328Smrg	c55x-*)
10418ce07328Smrg		cpu=tic55x
1042c582b7e3Smrg		;;
10438ce07328Smrg	c6x-*)
10448ce07328Smrg		cpu=tic6x
1045c582b7e3Smrg		;;
10468ce07328Smrg	e500v[12]-*)
10478ce07328Smrg		cpu=powerpc
10488ce07328Smrg		basic_os=${basic_os}"spe"
1049c582b7e3Smrg		;;
10508ce07328Smrg	mips3*-*)
10518ce07328Smrg		cpu=mips64
1052c582b7e3Smrg		;;
10538ce07328Smrg	ms1-*)
10548ce07328Smrg		cpu=mt
1055c582b7e3Smrg		;;
10568ce07328Smrg	m68knommu-*)
10578ce07328Smrg		cpu=m68k
10588ce07328Smrg		basic_os=linux
1059c582b7e3Smrg		;;
10608ce07328Smrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
10618ce07328Smrg		cpu=s12z
1062c582b7e3Smrg		;;
10638ce07328Smrg	openrisc-*)
10648ce07328Smrg		cpu=or32
1065c582b7e3Smrg		;;
10668ce07328Smrg	parisc-*)
10678ce07328Smrg		cpu=hppa
10688ce07328Smrg		basic_os=linux
1069c582b7e3Smrg		;;
10708ce07328Smrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
10718ce07328Smrg		cpu=i586
1072c582b7e3Smrg		;;
10738ce07328Smrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
10748ce07328Smrg		cpu=i686
1075c582b7e3Smrg		;;
10768ce07328Smrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
10778ce07328Smrg		cpu=i686
1078c582b7e3Smrg		;;
10798ce07328Smrg	pentium4-*)
10808ce07328Smrg		cpu=i786
1081c582b7e3Smrg		;;
10828ce07328Smrg	pc98-*)
10838ce07328Smrg		cpu=i386
1084c582b7e3Smrg		;;
10858ce07328Smrg	ppc-* | ppcbe-*)
10868ce07328Smrg		cpu=powerpc
1087c582b7e3Smrg		;;
10888ce07328Smrg	ppcle-* | powerpclittle-*)
10898ce07328Smrg		cpu=powerpcle
1090c582b7e3Smrg		;;
10918ce07328Smrg	ppc64-*)
10928ce07328Smrg		cpu=powerpc64
109342a55b46Smrg		;;
10948ce07328Smrg	ppc64le-* | powerpc64little-*)
10958ce07328Smrg		cpu=powerpc64le
1096c582b7e3Smrg		;;
10978ce07328Smrg	sb1-*)
10988ce07328Smrg		cpu=mipsisa64sb1
1099c582b7e3Smrg		;;
11008ce07328Smrg	sb1el-*)
11018ce07328Smrg		cpu=mipsisa64sb1el
110242a55b46Smrg		;;
11038ce07328Smrg	sh5e[lb]-*)
11048ce07328Smrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
1105c582b7e3Smrg		;;
11068ce07328Smrg	spur-*)
11078ce07328Smrg		cpu=spur
1108c582b7e3Smrg		;;
11098ce07328Smrg	strongarm-* | thumb-*)
11108ce07328Smrg		cpu=arm
1111c582b7e3Smrg		;;
11128ce07328Smrg	tx39-*)
11138ce07328Smrg		cpu=mipstx39
1114c582b7e3Smrg		;;
11158ce07328Smrg	tx39el-*)
11168ce07328Smrg		cpu=mipstx39el
1117c582b7e3Smrg		;;
11188ce07328Smrg	x64-*)
11198ce07328Smrg		cpu=x86_64
1120c582b7e3Smrg		;;
11218ce07328Smrg	xscale-* | xscalee[bl]-*)
11228ce07328Smrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
1123c582b7e3Smrg		;;
11248ce07328Smrg	arm64-*)
11258ce07328Smrg		cpu=aarch64
1126c582b7e3Smrg		;;
11278ce07328Smrg
11288ce07328Smrg	# Recognize the canonical CPU Types that limit and/or modify the
11298ce07328Smrg	# company names they are paired with.
11308ce07328Smrg	cr16-*)
11318ce07328Smrg		basic_os=${basic_os:-elf}
1132c582b7e3Smrg		;;
11338ce07328Smrg	crisv32-* | etraxfs*-*)
11348ce07328Smrg		cpu=crisv32
11358ce07328Smrg		vendor=axis
1136c582b7e3Smrg		;;
11378ce07328Smrg	cris-* | etrax*-*)
11388ce07328Smrg		cpu=cris
11398ce07328Smrg		vendor=axis
1140c582b7e3Smrg		;;
11418ce07328Smrg	crx-*)
11428ce07328Smrg		basic_os=${basic_os:-elf}
1143c582b7e3Smrg		;;
11448ce07328Smrg	neo-tandem)
11458ce07328Smrg		cpu=neo
11468ce07328Smrg		vendor=tandem
1147c582b7e3Smrg		;;
11488ce07328Smrg	nse-tandem)
11498ce07328Smrg		cpu=nse
11508ce07328Smrg		vendor=tandem
1151c582b7e3Smrg		;;
11528ce07328Smrg	nsr-tandem)
11538ce07328Smrg		cpu=nsr
11548ce07328Smrg		vendor=tandem
1155c582b7e3Smrg		;;
11568ce07328Smrg	nsv-tandem)
11578ce07328Smrg		cpu=nsv
11588ce07328Smrg		vendor=tandem
1159c582b7e3Smrg		;;
11608ce07328Smrg	nsx-tandem)
11618ce07328Smrg		cpu=nsx
11628ce07328Smrg		vendor=tandem
1163c582b7e3Smrg		;;
11648ce07328Smrg	mipsallegrexel-sony)
11658ce07328Smrg		cpu=mipsallegrexel
11668ce07328Smrg		vendor=sony
1167c582b7e3Smrg		;;
11688ce07328Smrg	tile*-*)
11698ce07328Smrg		basic_os=${basic_os:-linux-gnu}
1170c582b7e3Smrg		;;
11718ce07328Smrg
1172c582b7e3Smrg	*)
11738ce07328Smrg		# Recognize the canonical CPU types that are allowed with any
11748ce07328Smrg		# company name.
11758ce07328Smrg		case $cpu in
11768ce07328Smrg			1750a | 580 \
11778ce07328Smrg			| a29k \
11788ce07328Smrg			| aarch64 | aarch64_be \
11798ce07328Smrg			| abacus \
11808ce07328Smrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
11818ce07328Smrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
11828ce07328Smrg			| alphapca5[67] | alpha64pca5[67] \
11838ce07328Smrg			| am33_2.0 \
11848ce07328Smrg			| amdgcn \
11858ce07328Smrg			| arc | arceb | arc32 | arc64 \
11868ce07328Smrg			| arm | arm[lb]e | arme[lb] | armv* \
11878ce07328Smrg			| avr | avr32 \
11888ce07328Smrg			| asmjs \
11898ce07328Smrg			| ba \
11908ce07328Smrg			| be32 | be64 \
11918ce07328Smrg			| bfin | bpf | bs2000 \
11928ce07328Smrg			| c[123]* | c30 | [cjt]90 | c4x \
11938ce07328Smrg			| c8051 | clipper | craynv | csky | cydra \
11948ce07328Smrg			| d10v | d30v | dlx | dsp16xx \
11958ce07328Smrg			| e2k | elxsi | epiphany \
11968ce07328Smrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
11978ce07328Smrg			| h8300 | h8500 \
11988ce07328Smrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
11998ce07328Smrg			| hexagon \
12008ce07328Smrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
12018ce07328Smrg			| ip2k | iq2000 \
12028ce07328Smrg			| k1om \
12038ce07328Smrg			| le32 | le64 \
12048ce07328Smrg			| lm32 \
12058ce07328Smrg			| loongarch32 | loongarch64 | loongarchx32 \
12068ce07328Smrg			| m32c | m32r | m32rle \
12078ce07328Smrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
12088ce07328Smrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
12098ce07328Smrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
12108ce07328Smrg			| microblaze | microblazeel \
12118ce07328Smrg			| mips | mipsbe | mipseb | mipsel | mipsle \
12128ce07328Smrg			| mips16 \
12138ce07328Smrg			| mips64 | mips64eb | mips64el \
12148ce07328Smrg			| mips64octeon | mips64octeonel \
12158ce07328Smrg			| mips64orion | mips64orionel \
12168ce07328Smrg			| mips64r5900 | mips64r5900el \
12178ce07328Smrg			| mips64vr | mips64vrel \
12188ce07328Smrg			| mips64vr4100 | mips64vr4100el \
12198ce07328Smrg			| mips64vr4300 | mips64vr4300el \
12208ce07328Smrg			| mips64vr5000 | mips64vr5000el \
12218ce07328Smrg			| mips64vr5900 | mips64vr5900el \
12228ce07328Smrg			| mipsisa32 | mipsisa32el \
12238ce07328Smrg			| mipsisa32r2 | mipsisa32r2el \
12248ce07328Smrg			| mipsisa32r3 | mipsisa32r3el \
12258ce07328Smrg			| mipsisa32r5 | mipsisa32r5el \
12268ce07328Smrg			| mipsisa32r6 | mipsisa32r6el \
12278ce07328Smrg			| mipsisa64 | mipsisa64el \
12288ce07328Smrg			| mipsisa64r2 | mipsisa64r2el \
12298ce07328Smrg			| mipsisa64r3 | mipsisa64r3el \
12308ce07328Smrg			| mipsisa64r5 | mipsisa64r5el \
12318ce07328Smrg			| mipsisa64r6 | mipsisa64r6el \
12328ce07328Smrg			| mipsisa64sb1 | mipsisa64sb1el \
12338ce07328Smrg			| mipsisa64sr71k | mipsisa64sr71kel \
12348ce07328Smrg			| mipsr5900 | mipsr5900el \
12358ce07328Smrg			| mipstx39 | mipstx39el \
12368ce07328Smrg			| mmix \
12378ce07328Smrg			| mn10200 | mn10300 \
12388ce07328Smrg			| moxie \
12398ce07328Smrg			| mt \
12408ce07328Smrg			| msp430 \
12418ce07328Smrg			| nds32 | nds32le | nds32be \
12428ce07328Smrg			| nfp \
12438ce07328Smrg			| nios | nios2 | nios2eb | nios2el \
12448ce07328Smrg			| none | np1 | ns16k | ns32k | nvptx \
12458ce07328Smrg			| open8 \
12468ce07328Smrg			| or1k* \
12478ce07328Smrg			| or32 \
12488ce07328Smrg			| orion \
12498ce07328Smrg			| picochip \
12508ce07328Smrg			| pdp10 | pdp11 | pj | pjl | pn | power \
12518ce07328Smrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
12528ce07328Smrg			| pru \
12538ce07328Smrg			| pyramid \
12548ce07328Smrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
12558ce07328Smrg			| rl78 | romp | rs6000 | rx \
12568ce07328Smrg			| s390 | s390x \
12578ce07328Smrg			| score \
12588ce07328Smrg			| sh | shl \
12598ce07328Smrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
12608ce07328Smrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
12618ce07328Smrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
12628ce07328Smrg			| sparclite \
12638ce07328Smrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
12648ce07328Smrg			| spu \
12658ce07328Smrg			| tahoe \
12668ce07328Smrg			| thumbv7* \
12678ce07328Smrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
12688ce07328Smrg			| tron \
12698ce07328Smrg			| ubicom32 \
12708ce07328Smrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
12718ce07328Smrg			| vax \
12728ce07328Smrg			| visium \
12738ce07328Smrg			| w65 \
12748ce07328Smrg			| wasm32 | wasm64 \
12758ce07328Smrg			| we32k \
12768ce07328Smrg			| x86 | x86_64 | xc16x | xgate | xps100 \
12778ce07328Smrg			| xstormy16 | xtensa* \
12788ce07328Smrg			| ymp \
12798ce07328Smrg			| z8k | z80)
12808ce07328Smrg				;;
12818ce07328Smrg
12828ce07328Smrg			*)
12838ce07328Smrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
12848ce07328Smrg				exit 1
12858ce07328Smrg				;;
12868ce07328Smrg		esac
1287c582b7e3Smrg		;;
1288c582b7e3Smrgesac
1289c582b7e3Smrg
1290c582b7e3Smrg# Here we canonicalize certain aliases for manufacturers.
12918ce07328Smrgcase $vendor in
12928ce07328Smrg	digital*)
12938ce07328Smrg		vendor=dec
1294c582b7e3Smrg		;;
12958ce07328Smrg	commodore*)
12968ce07328Smrg		vendor=cbm
1297c582b7e3Smrg		;;
1298c582b7e3Smrg	*)
1299c582b7e3Smrg		;;
1300c582b7e3Smrgesac
1301c582b7e3Smrg
1302c582b7e3Smrg# Decode manufacturer-specific aliases for certain operating systems.
1303c582b7e3Smrg
13048ce07328Smrgif test x$basic_os != x
1305c582b7e3Smrgthen
13068ce07328Smrg
13078ce07328Smrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
13088ce07328Smrg# set os.
13098ce07328Smrgcase $basic_os in
13108ce07328Smrg	gnu/linux*)
13118ce07328Smrg		kernel=linux
13128ce07328Smrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
13138ce07328Smrg		;;
13148ce07328Smrg	os2-emx)
13158ce07328Smrg		kernel=os2
13168ce07328Smrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
13178ce07328Smrg		;;
13188ce07328Smrg	nto-qnx*)
13198ce07328Smrg		kernel=nto
13208ce07328Smrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
13218ce07328Smrg		;;
13228ce07328Smrg	*-*)
13238ce07328Smrg		# shellcheck disable=SC2162
13248ce07328Smrg		saved_IFS=$IFS
13258ce07328Smrg		IFS="-" read kernel os <<EOF
13268ce07328Smrg$basic_os
13278ce07328SmrgEOF
13288ce07328Smrg		IFS=$saved_IFS
13298ce07328Smrg		;;
13308ce07328Smrg	# Default OS when just kernel was specified
13318ce07328Smrg	nto*)
13328ce07328Smrg		kernel=nto
13338ce07328Smrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
13348ce07328Smrg		;;
13358ce07328Smrg	linux*)
13368ce07328Smrg		kernel=linux
13378ce07328Smrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
13388ce07328Smrg		;;
13398ce07328Smrg	*)
13408ce07328Smrg		kernel=
13418ce07328Smrg		os=$basic_os
13428ce07328Smrg		;;
13438ce07328Smrgesac
13448ce07328Smrg
13458ce07328Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
13468ce07328Smrg# etc.)
1347c582b7e3Smrgcase $os in
13488ce07328Smrg	# First match some system type aliases that might get confused
13498ce07328Smrg	# with valid system types.
13508ce07328Smrg	# solaris* is a basic system type, with this one exception.
13518ce07328Smrg	auroraux)
13528ce07328Smrg		os=auroraux
135342a55b46Smrg		;;
13548ce07328Smrg	bluegene*)
13558ce07328Smrg		os=cnk
1356c582b7e3Smrg		;;
13578ce07328Smrg	solaris1 | solaris1.*)
13588ce07328Smrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
1359c582b7e3Smrg		;;
13608ce07328Smrg	solaris)
13618ce07328Smrg		os=solaris2
1362c582b7e3Smrg		;;
13638ce07328Smrg	unixware*)
13648ce07328Smrg		os=sysv4.2uw
1365c582b7e3Smrg		;;
13668ce07328Smrg	# es1800 is here to avoid being matched by es* (a different OS)
13678ce07328Smrg	es1800*)
13688ce07328Smrg		os=ose
1369c582b7e3Smrg		;;
13708ce07328Smrg	# Some version numbers need modification
13718ce07328Smrg	chorusos*)
13728ce07328Smrg		os=chorusos
1373c582b7e3Smrg		;;
13748ce07328Smrg	isc)
13758ce07328Smrg		os=isc2.2
1376c582b7e3Smrg		;;
13778ce07328Smrg	sco6)
13788ce07328Smrg		os=sco5v6
1379c582b7e3Smrg		;;
13808ce07328Smrg	sco5)
13818ce07328Smrg		os=sco3.2v5
1382c582b7e3Smrg		;;
13838ce07328Smrg	sco4)
13848ce07328Smrg		os=sco3.2v4
1385c582b7e3Smrg		;;
13868ce07328Smrg	sco3.2.[4-9]*)
13878ce07328Smrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
1388c582b7e3Smrg		;;
13898ce07328Smrg	sco*v* | scout)
13908ce07328Smrg		# Don't match below
1391c582b7e3Smrg		;;
13928ce07328Smrg	sco*)
13938ce07328Smrg		os=sco3.2v2
1394c582b7e3Smrg		;;
13958ce07328Smrg	psos*)
13968ce07328Smrg		os=psos
1397c582b7e3Smrg		;;
13988ce07328Smrg	qnx*)
13998ce07328Smrg		os=qnx
1400c582b7e3Smrg		;;
14018ce07328Smrg	hiux*)
14028ce07328Smrg		os=hiuxwe2
1403c582b7e3Smrg		;;
14048ce07328Smrg	lynx*178)
14058ce07328Smrg		os=lynxos178
1406c582b7e3Smrg		;;
14078ce07328Smrg	lynx*5)
14088ce07328Smrg		os=lynxos5
1409c582b7e3Smrg		;;
14108ce07328Smrg	lynxos*)
14118ce07328Smrg		# don't get caught up in next wildcard
1412c582b7e3Smrg		;;
14138ce07328Smrg	lynx*)
14148ce07328Smrg		os=lynxos
1415c582b7e3Smrg		;;
14168ce07328Smrg	mac[0-9]*)
14178ce07328Smrg		os=`echo "$os" | sed -e 's|mac|macos|'`
1418c582b7e3Smrg		;;
14198ce07328Smrg	opened*)
14208ce07328Smrg		os=openedition
1421c582b7e3Smrg		;;
14228ce07328Smrg	os400*)
14238ce07328Smrg		os=os400
1424c582b7e3Smrg		;;
14258ce07328Smrg	sunos5*)
14268ce07328Smrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
1427c582b7e3Smrg		;;
14288ce07328Smrg	sunos6*)
14298ce07328Smrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
1430c582b7e3Smrg		;;
14318ce07328Smrg	wince*)
14328ce07328Smrg		os=wince
1433c582b7e3Smrg		;;
14348ce07328Smrg	utek*)
14358ce07328Smrg		os=bsd
1436c582b7e3Smrg		;;
14378ce07328Smrg	dynix*)
14388ce07328Smrg		os=bsd
1439c582b7e3Smrg		;;
14408ce07328Smrg	acis*)
14418ce07328Smrg		os=aos
1442c582b7e3Smrg		;;
14438ce07328Smrg	atheos*)
14448ce07328Smrg		os=atheos
1445c582b7e3Smrg		;;
14468ce07328Smrg	syllable*)
14478ce07328Smrg		os=syllable
1448c582b7e3Smrg		;;
14498ce07328Smrg	386bsd)
14508ce07328Smrg		os=bsd
1451c582b7e3Smrg		;;
14528ce07328Smrg	ctix* | uts*)
14538ce07328Smrg		os=sysv
1454c582b7e3Smrg		;;
14558ce07328Smrg	nova*)
14568ce07328Smrg		os=rtmk-nova
1457c582b7e3Smrg		;;
14588ce07328Smrg	ns2)
14598ce07328Smrg		os=nextstep2
1460c582b7e3Smrg		;;
14618ce07328Smrg	# Preserve the version number of sinix5.
14628ce07328Smrg	sinix5.*)
14638ce07328Smrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
1464c582b7e3Smrg		;;
14658ce07328Smrg	sinix*)
14668ce07328Smrg		os=sysv4
1467c582b7e3Smrg		;;
14688ce07328Smrg	tpf*)
14698ce07328Smrg		os=tpf
1470c582b7e3Smrg		;;
14718ce07328Smrg	triton*)
14728ce07328Smrg		os=sysv3
1473c582b7e3Smrg		;;
14748ce07328Smrg	oss*)
14758ce07328Smrg		os=sysv3
1476c582b7e3Smrg		;;
14778ce07328Smrg	svr4*)
14788ce07328Smrg		os=sysv4
1479c582b7e3Smrg		;;
14808ce07328Smrg	svr3)
14818ce07328Smrg		os=sysv3
1482c582b7e3Smrg		;;
14838ce07328Smrg	sysvr4)
14848ce07328Smrg		os=sysv4
1485c582b7e3Smrg		;;
14868ce07328Smrg	ose*)
14878ce07328Smrg		os=ose
1488c582b7e3Smrg		;;
14898ce07328Smrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
14908ce07328Smrg		os=mint
149142a55b46Smrg		;;
14928ce07328Smrg	dicos*)
14938ce07328Smrg		os=dicos
149442a55b46Smrg		;;
14958ce07328Smrg	pikeos*)
14968ce07328Smrg		# Until real need of OS specific support for
14978ce07328Smrg		# particular features comes up, bare metal
14988ce07328Smrg		# configurations are quite functional.
14998ce07328Smrg		case $cpu in
15008ce07328Smrg		    arm*)
15018ce07328Smrg			os=eabi
15028ce07328Smrg			;;
15038ce07328Smrg		    *)
15048ce07328Smrg			os=elf
15058ce07328Smrg			;;
15068ce07328Smrg		esac
1507c582b7e3Smrg		;;
1508c582b7e3Smrg	*)
15098ce07328Smrg		# No normalization, but not necessarily accepted, that comes below.
1510c582b7e3Smrg		;;
1511c582b7e3Smrgesac
15128ce07328Smrg
1513c582b7e3Smrgelse
1514c582b7e3Smrg
1515c582b7e3Smrg# Here we handle the default operating systems that come with various machines.
1516c582b7e3Smrg# The value should be what the vendor currently ships out the door with their
1517c582b7e3Smrg# machine or put another way, the most popular os provided with the machine.
1518c582b7e3Smrg
1519c582b7e3Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
1520c582b7e3Smrg# "-sun"), then you have to tell the case statement up towards the top
1521c582b7e3Smrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
1522c582b7e3Smrg# will signal an error saying that MANUFACTURER isn't an operating
1523c582b7e3Smrg# system, and we'll never get to this point.
1524c582b7e3Smrg
15258ce07328Smrgkernel=
15268ce07328Smrgcase $cpu-$vendor in
152742a55b46Smrg	score-*)
15288ce07328Smrg		os=elf
1529c582b7e3Smrg		;;
153042a55b46Smrg	spu-*)
15318ce07328Smrg		os=elf
1532c582b7e3Smrg		;;
1533c582b7e3Smrg	*-acorn)
15348ce07328Smrg		os=riscix1.2
1535c582b7e3Smrg		;;
1536c582b7e3Smrg	arm*-rebel)
15378ce07328Smrg		kernel=linux
15388ce07328Smrg		os=gnu
1539c582b7e3Smrg		;;
1540c582b7e3Smrg	arm*-semi)
15418ce07328Smrg		os=aout
1542c582b7e3Smrg		;;
154342a55b46Smrg	c4x-* | tic4x-*)
15448ce07328Smrg		os=coff
154542a55b46Smrg		;;
1546e3d74329Smrg	c8051-*)
15478ce07328Smrg		os=elf
15488ce07328Smrg		;;
15498ce07328Smrg	clipper-intergraph)
15508ce07328Smrg		os=clix
1551e3d74329Smrg		;;
15520496e070Smrg	hexagon-*)
15538ce07328Smrg		os=elf
15540496e070Smrg		;;
155542a55b46Smrg	tic54x-*)
15568ce07328Smrg		os=coff
155742a55b46Smrg		;;
155842a55b46Smrg	tic55x-*)
15598ce07328Smrg		os=coff
156042a55b46Smrg		;;
156142a55b46Smrg	tic6x-*)
15628ce07328Smrg		os=coff
1563c582b7e3Smrg		;;
1564c582b7e3Smrg	# This must come before the *-dec entry.
1565c582b7e3Smrg	pdp10-*)
15668ce07328Smrg		os=tops20
1567c582b7e3Smrg		;;
1568c582b7e3Smrg	pdp11-*)
15698ce07328Smrg		os=none
1570c582b7e3Smrg		;;
1571c582b7e3Smrg	*-dec | vax-*)
15728ce07328Smrg		os=ultrix4.2
1573c582b7e3Smrg		;;
1574c582b7e3Smrg	m68*-apollo)
15758ce07328Smrg		os=domain
1576c582b7e3Smrg		;;
1577c582b7e3Smrg	i386-sun)
15788ce07328Smrg		os=sunos4.0.2
1579c582b7e3Smrg		;;
1580c582b7e3Smrg	m68000-sun)
15818ce07328Smrg		os=sunos3
1582c582b7e3Smrg		;;
1583c582b7e3Smrg	m68*-cisco)
15848ce07328Smrg		os=aout
1585c582b7e3Smrg		;;
158642a55b46Smrg	mep-*)
15878ce07328Smrg		os=elf
1588c582b7e3Smrg		;;
1589c582b7e3Smrg	mips*-cisco)
15908ce07328Smrg		os=elf
1591c582b7e3Smrg		;;
1592c582b7e3Smrg	mips*-*)
15938ce07328Smrg		os=elf
1594c582b7e3Smrg		;;
1595c582b7e3Smrg	or32-*)
15968ce07328Smrg		os=coff
1597c582b7e3Smrg		;;
1598c582b7e3Smrg	*-tti)	# must be before sparc entry or we get the wrong os.
15998ce07328Smrg		os=sysv3
1600c582b7e3Smrg		;;
1601c582b7e3Smrg	sparc-* | *-sun)
16028ce07328Smrg		os=sunos4.1.1
1603c582b7e3Smrg		;;
16048ce07328Smrg	pru-*)
16058ce07328Smrg		os=elf
1606c582b7e3Smrg		;;
16078ce07328Smrg	*-be)
16088ce07328Smrg		os=beos
1609c582b7e3Smrg		;;
1610c582b7e3Smrg	*-ibm)
16118ce07328Smrg		os=aix
1612c582b7e3Smrg		;;
161342a55b46Smrg	*-knuth)
16148ce07328Smrg		os=mmixware
1615c582b7e3Smrg		;;
1616c582b7e3Smrg	*-wec)
16178ce07328Smrg		os=proelf
1618c582b7e3Smrg		;;
1619c582b7e3Smrg	*-winbond)
16208ce07328Smrg		os=proelf
1621c582b7e3Smrg		;;
1622c582b7e3Smrg	*-oki)
16238ce07328Smrg		os=proelf
1624c582b7e3Smrg		;;
1625c582b7e3Smrg	*-hp)
16268ce07328Smrg		os=hpux
1627c582b7e3Smrg		;;
1628c582b7e3Smrg	*-hitachi)
16298ce07328Smrg		os=hiux
1630c582b7e3Smrg		;;
1631c582b7e3Smrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
16328ce07328Smrg		os=sysv
1633c582b7e3Smrg		;;
1634c582b7e3Smrg	*-cbm)
16358ce07328Smrg		os=amigaos
1636c582b7e3Smrg		;;
1637c582b7e3Smrg	*-dg)
16388ce07328Smrg		os=dgux
1639c582b7e3Smrg		;;
1640c582b7e3Smrg	*-dolphin)
16418ce07328Smrg		os=sysv3
1642c582b7e3Smrg		;;
1643c582b7e3Smrg	m68k-ccur)
16448ce07328Smrg		os=rtu
1645c582b7e3Smrg		;;
1646c582b7e3Smrg	m88k-omron*)
16478ce07328Smrg		os=luna
1648c582b7e3Smrg		;;
16498ce07328Smrg	*-next)
16508ce07328Smrg		os=nextstep
1651c582b7e3Smrg		;;
1652c582b7e3Smrg	*-sequent)
16538ce07328Smrg		os=ptx
1654c582b7e3Smrg		;;
1655c582b7e3Smrg	*-crds)
16568ce07328Smrg		os=unos
1657c582b7e3Smrg		;;
1658c582b7e3Smrg	*-ns)
16598ce07328Smrg		os=genix
1660c582b7e3Smrg		;;
1661c582b7e3Smrg	i370-*)
16628ce07328Smrg		os=mvs
1663c582b7e3Smrg		;;
1664c582b7e3Smrg	*-gould)
16658ce07328Smrg		os=sysv
1666c582b7e3Smrg		;;
1667c582b7e3Smrg	*-highlevel)
16688ce07328Smrg		os=bsd
1669c582b7e3Smrg		;;
1670c582b7e3Smrg	*-encore)
16718ce07328Smrg		os=bsd
1672c582b7e3Smrg		;;
1673c582b7e3Smrg	*-sgi)
16748ce07328Smrg		os=irix
1675c582b7e3Smrg		;;
1676c582b7e3Smrg	*-siemens)
16778ce07328Smrg		os=sysv4
1678c582b7e3Smrg		;;
1679c582b7e3Smrg	*-masscomp)
16808ce07328Smrg		os=rtu
1681c582b7e3Smrg		;;
1682c582b7e3Smrg	f30[01]-fujitsu | f700-fujitsu)
16838ce07328Smrg		os=uxpv
1684c582b7e3Smrg		;;
1685c582b7e3Smrg	*-rom68k)
16868ce07328Smrg		os=coff
1687c582b7e3Smrg		;;
1688c582b7e3Smrg	*-*bug)
16898ce07328Smrg		os=coff
1690c582b7e3Smrg		;;
1691c582b7e3Smrg	*-apple)
16928ce07328Smrg		os=macos
1693c582b7e3Smrg		;;
1694c582b7e3Smrg	*-atari*)
16958ce07328Smrg		os=mint
16968ce07328Smrg		;;
16978ce07328Smrg	*-wrs)
16988ce07328Smrg		os=vxworks
1699c582b7e3Smrg		;;
1700c582b7e3Smrg	*)
17018ce07328Smrg		os=none
1702c582b7e3Smrg		;;
1703c582b7e3Smrgesac
17048ce07328Smrg
1705c582b7e3Smrgfi
1706c582b7e3Smrg
17078ce07328Smrg# Now, validate our (potentially fixed-up) OS.
17088ce07328Smrgcase $os in
17098ce07328Smrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
17108ce07328Smrg	musl* | newlib* | relibc* | uclibc*)
17118ce07328Smrg		;;
17128ce07328Smrg	# Likewise for "kernel-abi"
17138ce07328Smrg	eabi* | gnueabi*)
17148ce07328Smrg		;;
17158ce07328Smrg	# VxWorks passes extra cpu info in the 4th filed.
17168ce07328Smrg	simlinux | simwindows | spe)
17178ce07328Smrg		;;
17188ce07328Smrg	# Now accept the basic system types.
17198ce07328Smrg	# The portable systems comes first.
17208ce07328Smrg	# Each alternative MUST end in a * to match a version number.
17218ce07328Smrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
17228ce07328Smrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
17238ce07328Smrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
17248ce07328Smrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
17258ce07328Smrg	     | hiux* | abug | nacl* | netware* | windows* \
17268ce07328Smrg	     | os9* | macos* | osx* | ios* \
17278ce07328Smrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
17288ce07328Smrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
17298ce07328Smrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
17308ce07328Smrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
17318ce07328Smrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
17328ce07328Smrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
17338ce07328Smrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
17348ce07328Smrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
17358ce07328Smrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
17368ce07328Smrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
17378ce07328Smrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
17388ce07328Smrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
17398ce07328Smrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
17408ce07328Smrg	     | midipix* | mingw32* | mingw64* | mint* \
17418ce07328Smrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
17428ce07328Smrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
17438ce07328Smrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
17448ce07328Smrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
17458ce07328Smrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
17468ce07328Smrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
17478ce07328Smrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
17488ce07328Smrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
17498ce07328Smrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
17508ce07328Smrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
17518ce07328Smrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*)
17528ce07328Smrg		;;
17538ce07328Smrg	# This one is extra strict with allowed versions
17548ce07328Smrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
17558ce07328Smrg		# Don't forget version if it is 3.2v4 or newer.
17568ce07328Smrg		;;
17578ce07328Smrg	none)
17588ce07328Smrg		;;
17598ce07328Smrg	*)
17608ce07328Smrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
17618ce07328Smrg		exit 1
17628ce07328Smrg		;;
17638ce07328Smrgesac
17648ce07328Smrg
17658ce07328Smrg# As a final step for OS-related things, validate the OS-kernel combination
17668ce07328Smrg# (given a valid OS), if there is a kernel.
17678ce07328Smrgcase $kernel-$os in
17688ce07328Smrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
17698ce07328Smrg		   | linux-musl* | linux-relibc* | linux-uclibc* )
17708ce07328Smrg		;;
17718ce07328Smrg	uclinux-uclibc* )
17728ce07328Smrg		;;
17738ce07328Smrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
17748ce07328Smrg		# These are just libc implementations, not actual OSes, and thus
17758ce07328Smrg		# require a kernel.
17768ce07328Smrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
17778ce07328Smrg		exit 1
17788ce07328Smrg		;;
17798ce07328Smrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
17808ce07328Smrg		;;
17818ce07328Smrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
17828ce07328Smrg		;;
17838ce07328Smrg	nto-qnx*)
17848ce07328Smrg		;;
17858ce07328Smrg	os2-emx)
17868ce07328Smrg		;;
17878ce07328Smrg	*-eabi* | *-gnueabi*)
17888ce07328Smrg		;;
17898ce07328Smrg	-*)
17908ce07328Smrg		# Blank kernel with real OS is always fine.
17918ce07328Smrg		;;
17928ce07328Smrg	*-*)
17938ce07328Smrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
17948ce07328Smrg		exit 1
17958ce07328Smrg		;;
17968ce07328Smrgesac
17978ce07328Smrg
1798c582b7e3Smrg# Here we handle the case where we know the os, and the CPU type, but not the
1799c582b7e3Smrg# manufacturer.  We pick the logical manufacturer.
18008ce07328Smrgcase $vendor in
18018ce07328Smrg	unknown)
18028ce07328Smrg		case $cpu-$os in
18038ce07328Smrg			*-riscix*)
1804c582b7e3Smrg				vendor=acorn
1805c582b7e3Smrg				;;
18068ce07328Smrg			*-sunos*)
1807c582b7e3Smrg				vendor=sun
1808c582b7e3Smrg				;;
18098ce07328Smrg			*-cnk* | *-aix*)
1810c582b7e3Smrg				vendor=ibm
1811c582b7e3Smrg				;;
18128ce07328Smrg			*-beos*)
1813c582b7e3Smrg				vendor=be
1814c582b7e3Smrg				;;
18158ce07328Smrg			*-hpux*)
1816c582b7e3Smrg				vendor=hp
1817c582b7e3Smrg				;;
18188ce07328Smrg			*-mpeix*)
1819c582b7e3Smrg				vendor=hp
1820c582b7e3Smrg				;;
18218ce07328Smrg			*-hiux*)
1822c582b7e3Smrg				vendor=hitachi
1823c582b7e3Smrg				;;
18248ce07328Smrg			*-unos*)
1825c582b7e3Smrg				vendor=crds
1826c582b7e3Smrg				;;
18278ce07328Smrg			*-dgux*)
1828c582b7e3Smrg				vendor=dg
1829c582b7e3Smrg				;;
18308ce07328Smrg			*-luna*)
1831c582b7e3Smrg				vendor=omron
1832c582b7e3Smrg				;;
18338ce07328Smrg			*-genix*)
1834c582b7e3Smrg				vendor=ns
1835c582b7e3Smrg				;;
18368ce07328Smrg			*-clix*)
18378ce07328Smrg				vendor=intergraph
18388ce07328Smrg				;;
18398ce07328Smrg			*-mvs* | *-opened*)
18408ce07328Smrg				vendor=ibm
18418ce07328Smrg				;;
18428ce07328Smrg			*-os400*)
1843c582b7e3Smrg				vendor=ibm
1844c582b7e3Smrg				;;
18458ce07328Smrg			s390-* | s390x-*)
1846c582b7e3Smrg				vendor=ibm
1847c582b7e3Smrg				;;
18488ce07328Smrg			*-ptx*)
1849c582b7e3Smrg				vendor=sequent
1850c582b7e3Smrg				;;
18518ce07328Smrg			*-tpf*)
1852c582b7e3Smrg				vendor=ibm
1853c582b7e3Smrg				;;
18548ce07328Smrg			*-vxsim* | *-vxworks* | *-windiss*)
1855c582b7e3Smrg				vendor=wrs
1856c582b7e3Smrg				;;
18578ce07328Smrg			*-aux*)
1858c582b7e3Smrg				vendor=apple
1859c582b7e3Smrg				;;
18608ce07328Smrg			*-hms*)
1861c582b7e3Smrg				vendor=hitachi
1862c582b7e3Smrg				;;
18638ce07328Smrg			*-mpw* | *-macos*)
1864c582b7e3Smrg				vendor=apple
1865c582b7e3Smrg				;;
18668ce07328Smrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
1867c582b7e3Smrg				vendor=atari
1868c582b7e3Smrg				;;
18698ce07328Smrg			*-vos*)
1870c582b7e3Smrg				vendor=stratus
1871c582b7e3Smrg				;;
1872c582b7e3Smrg		esac
1873c582b7e3Smrg		;;
1874c582b7e3Smrgesac
1875c582b7e3Smrg
18768ce07328Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
1877c582b7e3Smrgexit
1878c582b7e3Smrg
1879c582b7e3Smrg# Local variables:
18808ce07328Smrg# eval: (add-hook 'before-save-hook 'time-stamp)
1881c582b7e3Smrg# time-stamp-start: "timestamp='"
1882c582b7e3Smrg# time-stamp-format: "%:y-%02m-%02d"
1883c582b7e3Smrg# time-stamp-end: "'"
1884c582b7e3Smrg# End:
1885