1c95b42baSmrg#! /bin/sh
2c95b42baSmrg# Configuration validation subroutine script.
30f595aedSmrg#   Copyright 1992-2021 Free Software Foundation, Inc.
4c95b42baSmrg
50f595aedSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
60f595aedSmrg
70f595aedSmrgtimestamp='2021-08-14'
8c95b42baSmrg
9b8f63ae3Smrg# This file is free software; you can redistribute it and/or modify it
10b8f63ae3Smrg# under the terms of the GNU General Public License as published by
11b8f63ae3Smrg# the Free Software Foundation; either version 3 of the License, or
12c95b42baSmrg# (at your option) any later version.
13c95b42baSmrg#
14b8f63ae3Smrg# This program is distributed in the hope that it will be useful, but
15b8f63ae3Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
16b8f63ae3Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17b8f63ae3Smrg# General Public License for more details.
18c95b42baSmrg#
19c95b42baSmrg# You should have received a copy of the GNU General Public License
20b8f63ae3Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
21c95b42baSmrg#
22c95b42baSmrg# As a special exception to the GNU General Public License, if you
23c95b42baSmrg# distribute this file as part of a program that contains a
24c95b42baSmrg# configuration script generated by Autoconf, you may include it under
25b8f63ae3Smrg# the same distribution terms that you use for the rest of that
26b8f63ae3Smrg# program.  This Exception is an additional permission under section 7
27b8f63ae3Smrg# of the GNU General Public License, version 3 ("GPLv3").
28c95b42baSmrg
29c95b42baSmrg
30b8f63ae3Smrg# Please send patches to <config-patches@gnu.org>.
31c95b42baSmrg#
32c95b42baSmrg# Configuration subroutine to validate and canonicalize a configuration type.
33c95b42baSmrg# Supply the specified configuration type as an argument.
34c95b42baSmrg# If it is invalid, we print an error message on stderr and exit with code 1.
35c95b42baSmrg# Otherwise, we print the canonical config type on stdout and succeed.
36c95b42baSmrg
37d80571a9Smrg# You can get the latest version of this script from:
380f595aedSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
39d80571a9Smrg
40c95b42baSmrg# This file is supposed to be the same for all GNU packages
41c95b42baSmrg# and recognize all the CPU types, system types and aliases
42c95b42baSmrg# that are meaningful with *any* GNU software.
43c95b42baSmrg# Each package is responsible for reporting which valid configurations
44c95b42baSmrg# it does not support.  The user should be able to distinguish
45c95b42baSmrg# a failure to support a valid configuration from a meaningless
46c95b42baSmrg# configuration.
47c95b42baSmrg
48c95b42baSmrg# The goal of this file is to map all the various variations of a given
49c95b42baSmrg# machine specification into a single specification in the form:
50c95b42baSmrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
51c95b42baSmrg# or in some cases, the newer four-part form:
52c95b42baSmrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
53c95b42baSmrg# It is wrong to echo any other type of specification.
54c95b42baSmrg
550f595aedSmrg# The "shellcheck disable" line above the timestamp inhibits complaints
560f595aedSmrg# about features and limitations of the classic Bourne shell that were
570f595aedSmrg# superseded or lifted in POSIX.  However, this script identifies a wide
580f595aedSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
590f595aedSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still
600f595aedSmrg# have a pre-POSIX /bin/sh.
610f595aedSmrg
62c95b42baSmrgme=`echo "$0" | sed -e 's,.*/,,'`
63c95b42baSmrg
64c95b42baSmrgusage="\
65b8f63ae3SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
66c95b42baSmrg
67c95b42baSmrgCanonicalize a configuration name.
68c95b42baSmrg
69b8f63ae3SmrgOptions:
70c95b42baSmrg  -h, --help         print this help, then exit
71c95b42baSmrg  -t, --time-stamp   print date of last modification, then exit
72c95b42baSmrg  -v, --version      print version number, then exit
73c95b42baSmrg
74c95b42baSmrgReport bugs and patches to <config-patches@gnu.org>."
75c95b42baSmrg
76c95b42baSmrgversion="\
77c95b42baSmrgGNU config.sub ($timestamp)
78c95b42baSmrg
790f595aedSmrgCopyright 1992-2021 Free Software Foundation, Inc.
80c95b42baSmrg
81c95b42baSmrgThis is free software; see the source for copying conditions.  There is NO
82c95b42baSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
83c95b42baSmrg
84c95b42baSmrghelp="
85c95b42baSmrgTry \`$me --help' for more information."
86c95b42baSmrg
87c95b42baSmrg# Parse command line
88c95b42baSmrgwhile test $# -gt 0 ; do
89c95b42baSmrg  case $1 in
90c95b42baSmrg    --time-stamp | --time* | -t )
91c95b42baSmrg       echo "$timestamp" ; exit ;;
92c95b42baSmrg    --version | -v )
93c95b42baSmrg       echo "$version" ; exit ;;
94c95b42baSmrg    --help | --h* | -h )
95c95b42baSmrg       echo "$usage"; exit ;;
96c95b42baSmrg    -- )     # Stop option processing
97c95b42baSmrg       shift; break ;;
98c95b42baSmrg    - )	# Use stdin as input.
99c95b42baSmrg       break ;;
100c95b42baSmrg    -* )
1010f595aedSmrg       echo "$me: invalid option $1$help" >&2
102c95b42baSmrg       exit 1 ;;
103c95b42baSmrg
104c95b42baSmrg    *local*)
105c95b42baSmrg       # First pass through any local machine types.
106b8f63ae3Smrg       echo "$1"
107c95b42baSmrg       exit ;;
108c95b42baSmrg
109c95b42baSmrg    * )
110c95b42baSmrg       break ;;
111c95b42baSmrg  esac
112c95b42baSmrgdone
113c95b42baSmrg
114c95b42baSmrgcase $# in
115c95b42baSmrg 0) echo "$me: missing argument$help" >&2
116c95b42baSmrg    exit 1;;
117c95b42baSmrg 1) ;;
118c95b42baSmrg *) echo "$me: too many arguments$help" >&2
119c95b42baSmrg    exit 1;;
120c95b42baSmrgesac
121c95b42baSmrg
1220f595aedSmrg# Split fields of configuration type
1230f595aedSmrg# shellcheck disable=SC2162
1240f595aedSmrgsaved_IFS=$IFS
1250f595aedSmrgIFS="-" read field1 field2 field3 field4 <<EOF
1260f595aedSmrg$1
1270f595aedSmrgEOF
1280f595aedSmrgIFS=$saved_IFS
129c95b42baSmrg
1300f595aedSmrg# Separate into logical components for further validation
1310f595aedSmrgcase $1 in
1320f595aedSmrg	*-*-*-*-*)
1330f595aedSmrg		echo Invalid configuration \`"$1"\': more than four components >&2
1340f595aedSmrg		exit 1
135c95b42baSmrg		;;
1360f595aedSmrg	*-*-*-*)
1370f595aedSmrg		basic_machine=$field1-$field2
1380f595aedSmrg		basic_os=$field3-$field4
139c95b42baSmrg		;;
1400f595aedSmrg	*-*-*)
1410f595aedSmrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
1420f595aedSmrg		# parts
1430f595aedSmrg		maybe_os=$field2-$field3
1440f595aedSmrg		case $maybe_os in
1450f595aedSmrg			nto-qnx* | linux-* | uclinux-uclibc* \
1460f595aedSmrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
1470f595aedSmrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
1480f595aedSmrg			| storm-chaos* | os2-emx* | rtmk-nova*)
1490f595aedSmrg				basic_machine=$field1
1500f595aedSmrg				basic_os=$maybe_os
1510f595aedSmrg				;;
1520f595aedSmrg			android-linux)
1530f595aedSmrg				basic_machine=$field1-unknown
1540f595aedSmrg				basic_os=linux-android
1550f595aedSmrg				;;
1560f595aedSmrg			*)
1570f595aedSmrg				basic_machine=$field1-$field2
1580f595aedSmrg				basic_os=$field3
1590f595aedSmrg				;;
1600f595aedSmrg		esac
161c95b42baSmrg		;;
1620f595aedSmrg	*-*)
1630f595aedSmrg		# A lone config we happen to match not fitting any pattern
1640f595aedSmrg		case $field1-$field2 in
1650f595aedSmrg			decstation-3100)
1660f595aedSmrg				basic_machine=mips-dec
1670f595aedSmrg				basic_os=
1680f595aedSmrg				;;
1690f595aedSmrg			*-*)
1700f595aedSmrg				# Second component is usually, but not always the OS
1710f595aedSmrg				case $field2 in
1720f595aedSmrg					# Prevent following clause from handling this valid os
1730f595aedSmrg					sun*os*)
1740f595aedSmrg						basic_machine=$field1
1750f595aedSmrg						basic_os=$field2
1760f595aedSmrg						;;
1770f595aedSmrg					zephyr*)
1780f595aedSmrg						basic_machine=$field1-unknown
1790f595aedSmrg						basic_os=$field2
1800f595aedSmrg						;;
1810f595aedSmrg					# Manufacturers
1820f595aedSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
1830f595aedSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
1840f595aedSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
1850f595aedSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
1860f595aedSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
1870f595aedSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
1880f595aedSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
1890f595aedSmrg					| microblaze* | sim | cisco \
1900f595aedSmrg					| oki | wec | wrs | winbond)
1910f595aedSmrg						basic_machine=$field1-$field2
1920f595aedSmrg						basic_os=
1930f595aedSmrg						;;
1940f595aedSmrg					*)
1950f595aedSmrg						basic_machine=$field1
1960f595aedSmrg						basic_os=$field2
1970f595aedSmrg						;;
1980f595aedSmrg				esac
1990f595aedSmrg			;;
2000f595aedSmrg		esac
201c95b42baSmrg		;;
2020f595aedSmrg	*)
2030f595aedSmrg		# Convert single-component short-hands not valid as part of
2040f595aedSmrg		# multi-component configurations.
2050f595aedSmrg		case $field1 in
2060f595aedSmrg			386bsd)
2070f595aedSmrg				basic_machine=i386-pc
2080f595aedSmrg				basic_os=bsd
2090f595aedSmrg				;;
2100f595aedSmrg			a29khif)
2110f595aedSmrg				basic_machine=a29k-amd
2120f595aedSmrg				basic_os=udi
2130f595aedSmrg				;;
2140f595aedSmrg			adobe68k)
2150f595aedSmrg				basic_machine=m68010-adobe
2160f595aedSmrg				basic_os=scout
2170f595aedSmrg				;;
2180f595aedSmrg			alliant)
2190f595aedSmrg				basic_machine=fx80-alliant
2200f595aedSmrg				basic_os=
2210f595aedSmrg				;;
2220f595aedSmrg			altos | altos3068)
2230f595aedSmrg				basic_machine=m68k-altos
2240f595aedSmrg				basic_os=
2250f595aedSmrg				;;
2260f595aedSmrg			am29k)
2270f595aedSmrg				basic_machine=a29k-none
2280f595aedSmrg				basic_os=bsd
2290f595aedSmrg				;;
2300f595aedSmrg			amdahl)
2310f595aedSmrg				basic_machine=580-amdahl
2320f595aedSmrg				basic_os=sysv
2330f595aedSmrg				;;
2340f595aedSmrg			amiga)
2350f595aedSmrg				basic_machine=m68k-unknown
2360f595aedSmrg				basic_os=
2370f595aedSmrg				;;
2380f595aedSmrg			amigaos | amigados)
2390f595aedSmrg				basic_machine=m68k-unknown
2400f595aedSmrg				basic_os=amigaos
2410f595aedSmrg				;;
2420f595aedSmrg			amigaunix | amix)
2430f595aedSmrg				basic_machine=m68k-unknown
2440f595aedSmrg				basic_os=sysv4
2450f595aedSmrg				;;
2460f595aedSmrg			apollo68)
2470f595aedSmrg				basic_machine=m68k-apollo
2480f595aedSmrg				basic_os=sysv
2490f595aedSmrg				;;
2500f595aedSmrg			apollo68bsd)
2510f595aedSmrg				basic_machine=m68k-apollo
2520f595aedSmrg				basic_os=bsd
2530f595aedSmrg				;;
2540f595aedSmrg			aros)
2550f595aedSmrg				basic_machine=i386-pc
2560f595aedSmrg				basic_os=aros
2570f595aedSmrg				;;
2580f595aedSmrg			aux)
2590f595aedSmrg				basic_machine=m68k-apple
2600f595aedSmrg				basic_os=aux
2610f595aedSmrg				;;
2620f595aedSmrg			balance)
2630f595aedSmrg				basic_machine=ns32k-sequent
2640f595aedSmrg				basic_os=dynix
2650f595aedSmrg				;;
2660f595aedSmrg			blackfin)
2670f595aedSmrg				basic_machine=bfin-unknown
2680f595aedSmrg				basic_os=linux
2690f595aedSmrg				;;
2700f595aedSmrg			cegcc)
2710f595aedSmrg				basic_machine=arm-unknown
2720f595aedSmrg				basic_os=cegcc
2730f595aedSmrg				;;
2740f595aedSmrg			convex-c1)
2750f595aedSmrg				basic_machine=c1-convex
2760f595aedSmrg				basic_os=bsd
2770f595aedSmrg				;;
2780f595aedSmrg			convex-c2)
2790f595aedSmrg				basic_machine=c2-convex
2800f595aedSmrg				basic_os=bsd
2810f595aedSmrg				;;
2820f595aedSmrg			convex-c32)
2830f595aedSmrg				basic_machine=c32-convex
2840f595aedSmrg				basic_os=bsd
2850f595aedSmrg				;;
2860f595aedSmrg			convex-c34)
2870f595aedSmrg				basic_machine=c34-convex
2880f595aedSmrg				basic_os=bsd
2890f595aedSmrg				;;
2900f595aedSmrg			convex-c38)
2910f595aedSmrg				basic_machine=c38-convex
2920f595aedSmrg				basic_os=bsd
2930f595aedSmrg				;;
2940f595aedSmrg			cray)
2950f595aedSmrg				basic_machine=j90-cray
2960f595aedSmrg				basic_os=unicos
2970f595aedSmrg				;;
2980f595aedSmrg			crds | unos)
2990f595aedSmrg				basic_machine=m68k-crds
3000f595aedSmrg				basic_os=
3010f595aedSmrg				;;
3020f595aedSmrg			da30)
3030f595aedSmrg				basic_machine=m68k-da30
3040f595aedSmrg				basic_os=
3050f595aedSmrg				;;
3060f595aedSmrg			decstation | pmax | pmin | dec3100 | decstatn)
3070f595aedSmrg				basic_machine=mips-dec
3080f595aedSmrg				basic_os=
3090f595aedSmrg				;;
3100f595aedSmrg			delta88)
3110f595aedSmrg				basic_machine=m88k-motorola
3120f595aedSmrg				basic_os=sysv3
3130f595aedSmrg				;;
3140f595aedSmrg			dicos)
3150f595aedSmrg				basic_machine=i686-pc
3160f595aedSmrg				basic_os=dicos
3170f595aedSmrg				;;
3180f595aedSmrg			djgpp)
3190f595aedSmrg				basic_machine=i586-pc
3200f595aedSmrg				basic_os=msdosdjgpp
3210f595aedSmrg				;;
3220f595aedSmrg			ebmon29k)
3230f595aedSmrg				basic_machine=a29k-amd
3240f595aedSmrg				basic_os=ebmon
3250f595aedSmrg				;;
3260f595aedSmrg			es1800 | OSE68k | ose68k | ose | OSE)
3270f595aedSmrg				basic_machine=m68k-ericsson
3280f595aedSmrg				basic_os=ose
3290f595aedSmrg				;;
3300f595aedSmrg			gmicro)
3310f595aedSmrg				basic_machine=tron-gmicro
3320f595aedSmrg				basic_os=sysv
3330f595aedSmrg				;;
3340f595aedSmrg			go32)
3350f595aedSmrg				basic_machine=i386-pc
3360f595aedSmrg				basic_os=go32
3370f595aedSmrg				;;
3380f595aedSmrg			h8300hms)
3390f595aedSmrg				basic_machine=h8300-hitachi
3400f595aedSmrg				basic_os=hms
3410f595aedSmrg				;;
3420f595aedSmrg			h8300xray)
3430f595aedSmrg				basic_machine=h8300-hitachi
3440f595aedSmrg				basic_os=xray
3450f595aedSmrg				;;
3460f595aedSmrg			h8500hms)
3470f595aedSmrg				basic_machine=h8500-hitachi
3480f595aedSmrg				basic_os=hms
3490f595aedSmrg				;;
3500f595aedSmrg			harris)
3510f595aedSmrg				basic_machine=m88k-harris
3520f595aedSmrg				basic_os=sysv3
3530f595aedSmrg				;;
3540f595aedSmrg			hp300 | hp300hpux)
3550f595aedSmrg				basic_machine=m68k-hp
3560f595aedSmrg				basic_os=hpux
3570f595aedSmrg				;;
3580f595aedSmrg			hp300bsd)
3590f595aedSmrg				basic_machine=m68k-hp
3600f595aedSmrg				basic_os=bsd
3610f595aedSmrg				;;
3620f595aedSmrg			hppaosf)
3630f595aedSmrg				basic_machine=hppa1.1-hp
3640f595aedSmrg				basic_os=osf
3650f595aedSmrg				;;
3660f595aedSmrg			hppro)
3670f595aedSmrg				basic_machine=hppa1.1-hp
3680f595aedSmrg				basic_os=proelf
3690f595aedSmrg				;;
3700f595aedSmrg			i386mach)
3710f595aedSmrg				basic_machine=i386-mach
3720f595aedSmrg				basic_os=mach
3730f595aedSmrg				;;
3740f595aedSmrg			isi68 | isi)
3750f595aedSmrg				basic_machine=m68k-isi
3760f595aedSmrg				basic_os=sysv
3770f595aedSmrg				;;
3780f595aedSmrg			m68knommu)
3790f595aedSmrg				basic_machine=m68k-unknown
3800f595aedSmrg				basic_os=linux
3810f595aedSmrg				;;
3820f595aedSmrg			magnum | m3230)
3830f595aedSmrg				basic_machine=mips-mips
3840f595aedSmrg				basic_os=sysv
3850f595aedSmrg				;;
3860f595aedSmrg			merlin)
3870f595aedSmrg				basic_machine=ns32k-utek
3880f595aedSmrg				basic_os=sysv
3890f595aedSmrg				;;
3900f595aedSmrg			mingw64)
3910f595aedSmrg				basic_machine=x86_64-pc
3920f595aedSmrg				basic_os=mingw64
3930f595aedSmrg				;;
3940f595aedSmrg			mingw32)
3950f595aedSmrg				basic_machine=i686-pc
3960f595aedSmrg				basic_os=mingw32
3970f595aedSmrg				;;
3980f595aedSmrg			mingw32ce)
3990f595aedSmrg				basic_machine=arm-unknown
4000f595aedSmrg				basic_os=mingw32ce
4010f595aedSmrg				;;
4020f595aedSmrg			monitor)
4030f595aedSmrg				basic_machine=m68k-rom68k
4040f595aedSmrg				basic_os=coff
4050f595aedSmrg				;;
4060f595aedSmrg			morphos)
4070f595aedSmrg				basic_machine=powerpc-unknown
4080f595aedSmrg				basic_os=morphos
4090f595aedSmrg				;;
4100f595aedSmrg			moxiebox)
4110f595aedSmrg				basic_machine=moxie-unknown
4120f595aedSmrg				basic_os=moxiebox
4130f595aedSmrg				;;
4140f595aedSmrg			msdos)
4150f595aedSmrg				basic_machine=i386-pc
4160f595aedSmrg				basic_os=msdos
4170f595aedSmrg				;;
4180f595aedSmrg			msys)
4190f595aedSmrg				basic_machine=i686-pc
4200f595aedSmrg				basic_os=msys
4210f595aedSmrg				;;
4220f595aedSmrg			mvs)
4230f595aedSmrg				basic_machine=i370-ibm
4240f595aedSmrg				basic_os=mvs
4250f595aedSmrg				;;
4260f595aedSmrg			nacl)
4270f595aedSmrg				basic_machine=le32-unknown
4280f595aedSmrg				basic_os=nacl
4290f595aedSmrg				;;
4300f595aedSmrg			ncr3000)
4310f595aedSmrg				basic_machine=i486-ncr
4320f595aedSmrg				basic_os=sysv4
4330f595aedSmrg				;;
4340f595aedSmrg			netbsd386)
4350f595aedSmrg				basic_machine=i386-pc
4360f595aedSmrg				basic_os=netbsd
4370f595aedSmrg				;;
4380f595aedSmrg			netwinder)
4390f595aedSmrg				basic_machine=armv4l-rebel
4400f595aedSmrg				basic_os=linux
4410f595aedSmrg				;;
4420f595aedSmrg			news | news700 | news800 | news900)
4430f595aedSmrg				basic_machine=m68k-sony
4440f595aedSmrg				basic_os=newsos
4450f595aedSmrg				;;
4460f595aedSmrg			news1000)
4470f595aedSmrg				basic_machine=m68030-sony
4480f595aedSmrg				basic_os=newsos
4490f595aedSmrg				;;
4500f595aedSmrg			necv70)
4510f595aedSmrg				basic_machine=v70-nec
4520f595aedSmrg				basic_os=sysv
4530f595aedSmrg				;;
4540f595aedSmrg			nh3000)
4550f595aedSmrg				basic_machine=m68k-harris
4560f595aedSmrg				basic_os=cxux
4570f595aedSmrg				;;
4580f595aedSmrg			nh[45]000)
4590f595aedSmrg				basic_machine=m88k-harris
4600f595aedSmrg				basic_os=cxux
4610f595aedSmrg				;;
4620f595aedSmrg			nindy960)
4630f595aedSmrg				basic_machine=i960-intel
4640f595aedSmrg				basic_os=nindy
4650f595aedSmrg				;;
4660f595aedSmrg			mon960)
4670f595aedSmrg				basic_machine=i960-intel
4680f595aedSmrg				basic_os=mon960
4690f595aedSmrg				;;
4700f595aedSmrg			nonstopux)
4710f595aedSmrg				basic_machine=mips-compaq
4720f595aedSmrg				basic_os=nonstopux
4730f595aedSmrg				;;
4740f595aedSmrg			os400)
4750f595aedSmrg				basic_machine=powerpc-ibm
4760f595aedSmrg				basic_os=os400
4770f595aedSmrg				;;
4780f595aedSmrg			OSE68000 | ose68000)
4790f595aedSmrg				basic_machine=m68000-ericsson
4800f595aedSmrg				basic_os=ose
4810f595aedSmrg				;;
4820f595aedSmrg			os68k)
4830f595aedSmrg				basic_machine=m68k-none
4840f595aedSmrg				basic_os=os68k
4850f595aedSmrg				;;
4860f595aedSmrg			paragon)
4870f595aedSmrg				basic_machine=i860-intel
4880f595aedSmrg				basic_os=osf
4890f595aedSmrg				;;
4900f595aedSmrg			parisc)
4910f595aedSmrg				basic_machine=hppa-unknown
4920f595aedSmrg				basic_os=linux
4930f595aedSmrg				;;
4940f595aedSmrg			psp)
4950f595aedSmrg				basic_machine=mipsallegrexel-sony
4960f595aedSmrg				basic_os=psp
4970f595aedSmrg				;;
4980f595aedSmrg			pw32)
4990f595aedSmrg				basic_machine=i586-unknown
5000f595aedSmrg				basic_os=pw32
5010f595aedSmrg				;;
5020f595aedSmrg			rdos | rdos64)
5030f595aedSmrg				basic_machine=x86_64-pc
5040f595aedSmrg				basic_os=rdos
5050f595aedSmrg				;;
5060f595aedSmrg			rdos32)
5070f595aedSmrg				basic_machine=i386-pc
5080f595aedSmrg				basic_os=rdos
5090f595aedSmrg				;;
5100f595aedSmrg			rom68k)
5110f595aedSmrg				basic_machine=m68k-rom68k
5120f595aedSmrg				basic_os=coff
5130f595aedSmrg				;;
5140f595aedSmrg			sa29200)
5150f595aedSmrg				basic_machine=a29k-amd
5160f595aedSmrg				basic_os=udi
5170f595aedSmrg				;;
5180f595aedSmrg			sei)
5190f595aedSmrg				basic_machine=mips-sei
5200f595aedSmrg				basic_os=seiux
5210f595aedSmrg				;;
5220f595aedSmrg			sequent)
5230f595aedSmrg				basic_machine=i386-sequent
5240f595aedSmrg				basic_os=
5250f595aedSmrg				;;
5260f595aedSmrg			sps7)
5270f595aedSmrg				basic_machine=m68k-bull
5280f595aedSmrg				basic_os=sysv2
5290f595aedSmrg				;;
5300f595aedSmrg			st2000)
5310f595aedSmrg				basic_machine=m68k-tandem
5320f595aedSmrg				basic_os=
5330f595aedSmrg				;;
5340f595aedSmrg			stratus)
5350f595aedSmrg				basic_machine=i860-stratus
5360f595aedSmrg				basic_os=sysv4
5370f595aedSmrg				;;
5380f595aedSmrg			sun2)
5390f595aedSmrg				basic_machine=m68000-sun
5400f595aedSmrg				basic_os=
5410f595aedSmrg				;;
5420f595aedSmrg			sun2os3)
5430f595aedSmrg				basic_machine=m68000-sun
5440f595aedSmrg				basic_os=sunos3
5450f595aedSmrg				;;
5460f595aedSmrg			sun2os4)
5470f595aedSmrg				basic_machine=m68000-sun
5480f595aedSmrg				basic_os=sunos4
5490f595aedSmrg				;;
5500f595aedSmrg			sun3)
5510f595aedSmrg				basic_machine=m68k-sun
5520f595aedSmrg				basic_os=
5530f595aedSmrg				;;
5540f595aedSmrg			sun3os3)
5550f595aedSmrg				basic_machine=m68k-sun
5560f595aedSmrg				basic_os=sunos3
5570f595aedSmrg				;;
5580f595aedSmrg			sun3os4)
5590f595aedSmrg				basic_machine=m68k-sun
5600f595aedSmrg				basic_os=sunos4
5610f595aedSmrg				;;
5620f595aedSmrg			sun4)
5630f595aedSmrg				basic_machine=sparc-sun
5640f595aedSmrg				basic_os=
5650f595aedSmrg				;;
5660f595aedSmrg			sun4os3)
5670f595aedSmrg				basic_machine=sparc-sun
5680f595aedSmrg				basic_os=sunos3
5690f595aedSmrg				;;
5700f595aedSmrg			sun4os4)
5710f595aedSmrg				basic_machine=sparc-sun
5720f595aedSmrg				basic_os=sunos4
5730f595aedSmrg				;;
5740f595aedSmrg			sun4sol2)
5750f595aedSmrg				basic_machine=sparc-sun
5760f595aedSmrg				basic_os=solaris2
5770f595aedSmrg				;;
5780f595aedSmrg			sun386 | sun386i | roadrunner)
5790f595aedSmrg				basic_machine=i386-sun
5800f595aedSmrg				basic_os=
5810f595aedSmrg				;;
5820f595aedSmrg			sv1)
5830f595aedSmrg				basic_machine=sv1-cray
5840f595aedSmrg				basic_os=unicos
5850f595aedSmrg				;;
5860f595aedSmrg			symmetry)
5870f595aedSmrg				basic_machine=i386-sequent
5880f595aedSmrg				basic_os=dynix
5890f595aedSmrg				;;
5900f595aedSmrg			t3e)
5910f595aedSmrg				basic_machine=alphaev5-cray
5920f595aedSmrg				basic_os=unicos
5930f595aedSmrg				;;
5940f595aedSmrg			t90)
5950f595aedSmrg				basic_machine=t90-cray
5960f595aedSmrg				basic_os=unicos
5970f595aedSmrg				;;
5980f595aedSmrg			toad1)
5990f595aedSmrg				basic_machine=pdp10-xkl
6000f595aedSmrg				basic_os=tops20
6010f595aedSmrg				;;
6020f595aedSmrg			tpf)
6030f595aedSmrg				basic_machine=s390x-ibm
6040f595aedSmrg				basic_os=tpf
6050f595aedSmrg				;;
6060f595aedSmrg			udi29k)
6070f595aedSmrg				basic_machine=a29k-amd
6080f595aedSmrg				basic_os=udi
6090f595aedSmrg				;;
6100f595aedSmrg			ultra3)
6110f595aedSmrg				basic_machine=a29k-nyu
6120f595aedSmrg				basic_os=sym1
6130f595aedSmrg				;;
6140f595aedSmrg			v810 | necv810)
6150f595aedSmrg				basic_machine=v810-nec
6160f595aedSmrg				basic_os=none
6170f595aedSmrg				;;
6180f595aedSmrg			vaxv)
6190f595aedSmrg				basic_machine=vax-dec
6200f595aedSmrg				basic_os=sysv
6210f595aedSmrg				;;
6220f595aedSmrg			vms)
6230f595aedSmrg				basic_machine=vax-dec
6240f595aedSmrg				basic_os=vms
6250f595aedSmrg				;;
6260f595aedSmrg			vsta)
6270f595aedSmrg				basic_machine=i386-pc
6280f595aedSmrg				basic_os=vsta
6290f595aedSmrg				;;
6300f595aedSmrg			vxworks960)
6310f595aedSmrg				basic_machine=i960-wrs
6320f595aedSmrg				basic_os=vxworks
6330f595aedSmrg				;;
6340f595aedSmrg			vxworks68)
6350f595aedSmrg				basic_machine=m68k-wrs
6360f595aedSmrg				basic_os=vxworks
6370f595aedSmrg				;;
6380f595aedSmrg			vxworks29k)
6390f595aedSmrg				basic_machine=a29k-wrs
6400f595aedSmrg				basic_os=vxworks
6410f595aedSmrg				;;
6420f595aedSmrg			xbox)
6430f595aedSmrg				basic_machine=i686-pc
6440f595aedSmrg				basic_os=mingw32
6450f595aedSmrg				;;
6460f595aedSmrg			ymp)
6470f595aedSmrg				basic_machine=ymp-cray
6480f595aedSmrg				basic_os=unicos
6490f595aedSmrg				;;
6500f595aedSmrg			*)
6510f595aedSmrg				basic_machine=$1
6520f595aedSmrg				basic_os=
6530f595aedSmrg				;;
6540f595aedSmrg		esac
655c95b42baSmrg		;;
656c95b42baSmrgesac
657c95b42baSmrg
6580f595aedSmrg# Decode 1-component or ad-hoc basic machines
659c95b42baSmrgcase $basic_machine in
6600f595aedSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
6610f595aedSmrg	# some cases the only manufacturer, in others, it is the most popular.
6620f595aedSmrg	w89k)
6630f595aedSmrg		cpu=hppa1.1
6640f595aedSmrg		vendor=winbond
665b8f63ae3Smrg		;;
6660f595aedSmrg	op50n)
6670f595aedSmrg		cpu=hppa1.1
6680f595aedSmrg		vendor=oki
669c95b42baSmrg		;;
6700f595aedSmrg	op60c)
6710f595aedSmrg		cpu=hppa1.1
6720f595aedSmrg		vendor=oki
673c95b42baSmrg		;;
6740f595aedSmrg	ibm*)
6750f595aedSmrg		cpu=i370
6760f595aedSmrg		vendor=ibm
677f40e0d56Smrg		;;
6780f595aedSmrg	orion105)
6790f595aedSmrg		cpu=clipper
6800f595aedSmrg		vendor=highlevel
681b8f63ae3Smrg		;;
6820f595aedSmrg	mac | mpw | mac-mpw)
6830f595aedSmrg		cpu=m68k
6840f595aedSmrg		vendor=apple
68562aeb71dSmrg		;;
6860f595aedSmrg	pmac | pmac-mpw)
6870f595aedSmrg		cpu=powerpc
6880f595aedSmrg		vendor=apple
68962aeb71dSmrg		;;
69062aeb71dSmrg
691c95b42baSmrg	# Recognize the various machine names and aliases which stand
692c95b42baSmrg	# for a CPU type and a company and sometimes even an OS.
693c95b42baSmrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
6940f595aedSmrg		cpu=m68000
6950f595aedSmrg		vendor=att
696c95b42baSmrg		;;
697c95b42baSmrg	3b*)
6980f595aedSmrg		cpu=we32k
6990f595aedSmrg		vendor=att
700f40e0d56Smrg		;;
701d80571a9Smrg	bluegene*)
7020f595aedSmrg		cpu=powerpc
7030f595aedSmrg		vendor=ibm
7040f595aedSmrg		basic_os=cnk
705c95b42baSmrg		;;
706c95b42baSmrg	decsystem10* | dec10*)
7070f595aedSmrg		cpu=pdp10
7080f595aedSmrg		vendor=dec
7090f595aedSmrg		basic_os=tops10
710c95b42baSmrg		;;
711c95b42baSmrg	decsystem20* | dec20*)
7120f595aedSmrg		cpu=pdp10
7130f595aedSmrg		vendor=dec
7140f595aedSmrg		basic_os=tops20
715c95b42baSmrg		;;
716c95b42baSmrg	delta | 3300 | motorola-3300 | motorola-delta \
717c95b42baSmrg	      | 3300-motorola | delta-motorola)
7180f595aedSmrg		cpu=m68k
7190f595aedSmrg		vendor=motorola
720c95b42baSmrg		;;
721b8f63ae3Smrg	dpx2*)
7220f595aedSmrg		cpu=m68k
7230f595aedSmrg		vendor=bull
7240f595aedSmrg		basic_os=sysv3
725c95b42baSmrg		;;
726c95b42baSmrg	encore | umax | mmax)
7270f595aedSmrg		cpu=ns32k
7280f595aedSmrg		vendor=encore
729c95b42baSmrg		;;
7300f595aedSmrg	elxsi)
7310f595aedSmrg		cpu=elxsi
7320f595aedSmrg		vendor=elxsi
7330f595aedSmrg		basic_os=${basic_os:-bsd}
734c95b42baSmrg		;;
735c95b42baSmrg	fx2800)
7360f595aedSmrg		cpu=i860
7370f595aedSmrg		vendor=alliant
738c95b42baSmrg		;;
739c95b42baSmrg	genix)
7400f595aedSmrg		cpu=ns32k
7410f595aedSmrg		vendor=ns
742c95b42baSmrg		;;
743c95b42baSmrg	h3050r* | hiux*)
7440f595aedSmrg		cpu=hppa1.1
7450f595aedSmrg		vendor=hitachi
7460f595aedSmrg		basic_os=hiuxwe2
747c95b42baSmrg		;;
748c95b42baSmrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
7490f595aedSmrg		cpu=hppa1.0
7500f595aedSmrg		vendor=hp
751c95b42baSmrg		;;
752c95b42baSmrg	hp9k2[0-9][0-9] | hp9k31[0-9])
7530f595aedSmrg		cpu=m68000
7540f595aedSmrg		vendor=hp
755c95b42baSmrg		;;
756c95b42baSmrg	hp9k3[2-9][0-9])
7570f595aedSmrg		cpu=m68k
7580f595aedSmrg		vendor=hp
759c95b42baSmrg		;;
760c95b42baSmrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
7610f595aedSmrg		cpu=hppa1.0
7620f595aedSmrg		vendor=hp
763c95b42baSmrg		;;
764c95b42baSmrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
7650f595aedSmrg		cpu=hppa1.1
7660f595aedSmrg		vendor=hp
767c95b42baSmrg		;;
768c95b42baSmrg	hp9k78[0-9] | hp78[0-9])
769c95b42baSmrg		# FIXME: really hppa2.0-hp
7700f595aedSmrg		cpu=hppa1.1
7710f595aedSmrg		vendor=hp
772c95b42baSmrg		;;
773c95b42baSmrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
774c95b42baSmrg		# FIXME: really hppa2.0-hp
7750f595aedSmrg		cpu=hppa1.1
7760f595aedSmrg		vendor=hp
777c95b42baSmrg		;;
778c95b42baSmrg	hp9k8[0-9][13679] | hp8[0-9][13679])
7790f595aedSmrg		cpu=hppa1.1
7800f595aedSmrg		vendor=hp
781c95b42baSmrg		;;
782c95b42baSmrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
7830f595aedSmrg		cpu=hppa1.0
7840f595aedSmrg		vendor=hp
785c95b42baSmrg		;;
786c95b42baSmrg	i*86v32)
7870f595aedSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7880f595aedSmrg		vendor=pc
7890f595aedSmrg		basic_os=sysv32
790c95b42baSmrg		;;
791c95b42baSmrg	i*86v4*)
7920f595aedSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7930f595aedSmrg		vendor=pc
7940f595aedSmrg		basic_os=sysv4
795c95b42baSmrg		;;
796c95b42baSmrg	i*86v)
7970f595aedSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7980f595aedSmrg		vendor=pc
7990f595aedSmrg		basic_os=sysv
800c95b42baSmrg		;;
801c95b42baSmrg	i*86sol2)
8020f595aedSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
8030f595aedSmrg		vendor=pc
8040f595aedSmrg		basic_os=solaris2
805c95b42baSmrg		;;
8060f595aedSmrg	j90 | j90-cray)
8070f595aedSmrg		cpu=j90
8080f595aedSmrg		vendor=cray
8090f595aedSmrg		basic_os=${basic_os:-unicos}
810c95b42baSmrg		;;
811c95b42baSmrg	iris | iris4d)
8120f595aedSmrg		cpu=mips
8130f595aedSmrg		vendor=sgi
8140f595aedSmrg		case $basic_os in
8150f595aedSmrg		    irix*)
816c95b42baSmrg			;;
817c95b42baSmrg		    *)
8180f595aedSmrg			basic_os=irix4
819c95b42baSmrg			;;
820c95b42baSmrg		esac
821c95b42baSmrg		;;
822c95b42baSmrg	miniframe)
8230f595aedSmrg		cpu=m68000
8240f595aedSmrg		vendor=convergent
825c95b42baSmrg		;;
8260f595aedSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
8270f595aedSmrg		cpu=m68k
8280f595aedSmrg		vendor=atari
8290f595aedSmrg		basic_os=mint
830c95b42baSmrg		;;
831c95b42baSmrg	news-3600 | risc-news)
8320f595aedSmrg		cpu=mips
8330f595aedSmrg		vendor=sony
8340f595aedSmrg		basic_os=newsos
835c95b42baSmrg		;;
836b8f63ae3Smrg	next | m*-next)
8370f595aedSmrg		cpu=m68k
8380f595aedSmrg		vendor=next
8390f595aedSmrg		case $basic_os in
8400f595aedSmrg		    openstep*)
8410f595aedSmrg		        ;;
8420f595aedSmrg		    nextstep*)
843c95b42baSmrg			;;
8440f595aedSmrg		    ns2*)
8450f595aedSmrg		      basic_os=nextstep2
846c95b42baSmrg			;;
847c95b42baSmrg		    *)
8480f595aedSmrg		      basic_os=nextstep3
849c95b42baSmrg			;;
850c95b42baSmrg		esac
851c95b42baSmrg		;;
852c95b42baSmrg	np1)
8530f595aedSmrg		cpu=np1
8540f595aedSmrg		vendor=gould
855b8f63ae3Smrg		;;
856c95b42baSmrg	op50n-* | op60c-*)
8570f595aedSmrg		cpu=hppa1.1
8580f595aedSmrg		vendor=oki
8590f595aedSmrg		basic_os=proelf
860c95b42baSmrg		;;
861c95b42baSmrg	pa-hitachi)
8620f595aedSmrg		cpu=hppa1.1
8630f595aedSmrg		vendor=hitachi
8640f595aedSmrg		basic_os=hiuxwe2
865f40e0d56Smrg		;;
866c95b42baSmrg	pbd)
8670f595aedSmrg		cpu=sparc
8680f595aedSmrg		vendor=tti
869c95b42baSmrg		;;
870c95b42baSmrg	pbb)
8710f595aedSmrg		cpu=m68k
8720f595aedSmrg		vendor=tti
873c95b42baSmrg		;;
8740f595aedSmrg	pc532)
8750f595aedSmrg		cpu=ns32k
8760f595aedSmrg		vendor=pc532
877c95b42baSmrg		;;
878c95b42baSmrg	pn)
8790f595aedSmrg		cpu=pn
8800f595aedSmrg		vendor=gould
881c95b42baSmrg		;;
8820f595aedSmrg	power)
8830f595aedSmrg		cpu=power
8840f595aedSmrg		vendor=ibm
885c95b42baSmrg		;;
8860f595aedSmrg	ps2)
8870f595aedSmrg		cpu=i386
8880f595aedSmrg		vendor=ibm
889c95b42baSmrg		;;
8900f595aedSmrg	rm[46]00)
8910f595aedSmrg		cpu=mips
8920f595aedSmrg		vendor=siemens
893c95b42baSmrg		;;
8940f595aedSmrg	rtpc | rtpc-*)
8950f595aedSmrg		cpu=romp
8960f595aedSmrg		vendor=ibm
897c95b42baSmrg		;;
8980f595aedSmrg	sde)
8990f595aedSmrg		cpu=mipsisa32
9000f595aedSmrg		vendor=sde
9010f595aedSmrg		basic_os=${basic_os:-elf}
902c95b42baSmrg		;;
9030f595aedSmrg	simso-wrs)
9040f595aedSmrg		cpu=sparclite
9050f595aedSmrg		vendor=wrs
9060f595aedSmrg		basic_os=vxworks
907c95b42baSmrg		;;
9080f595aedSmrg	tower | tower-32)
9090f595aedSmrg		cpu=m68k
9100f595aedSmrg		vendor=ncr
911c95b42baSmrg		;;
9120f595aedSmrg	vpp*|vx|vx-*)
9130f595aedSmrg		cpu=f301
9140f595aedSmrg		vendor=fujitsu
915b8f63ae3Smrg		;;
9160f595aedSmrg	w65)
9170f595aedSmrg		cpu=w65
9180f595aedSmrg		vendor=wdc
919f40e0d56Smrg		;;
9200f595aedSmrg	w89k-*)
9210f595aedSmrg		cpu=hppa1.1
9220f595aedSmrg		vendor=winbond
9230f595aedSmrg		basic_os=proelf
924c95b42baSmrg		;;
9250f595aedSmrg	none)
9260f595aedSmrg		cpu=none
9270f595aedSmrg		vendor=none
928c95b42baSmrg		;;
9290f595aedSmrg	leon|leon[3-9])
9300f595aedSmrg		cpu=sparc
9310f595aedSmrg		vendor=$basic_machine
932c95b42baSmrg		;;
9330f595aedSmrg	leon-*|leon[3-9]-*)
9340f595aedSmrg		cpu=sparc
9350f595aedSmrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
936c95b42baSmrg		;;
9370f595aedSmrg
9380f595aedSmrg	*-*)
9390f595aedSmrg		# shellcheck disable=SC2162
9400f595aedSmrg		saved_IFS=$IFS
9410f595aedSmrg		IFS="-" read cpu vendor <<EOF
9420f595aedSmrg$basic_machine
9430f595aedSmrgEOF
9440f595aedSmrg		IFS=$saved_IFS
945c95b42baSmrg		;;
9460f595aedSmrg	# We use `pc' rather than `unknown'
9470f595aedSmrg	# because (1) that's what they normally are, and
9480f595aedSmrg	# (2) the word "unknown" tends to confuse beginning users.
9490f595aedSmrg	i*86 | x86_64)
9500f595aedSmrg		cpu=$basic_machine
9510f595aedSmrg		vendor=pc
952c95b42baSmrg		;;
9530f595aedSmrg	# These rules are duplicated from below for sake of the special case above;
9540f595aedSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
9550f595aedSmrg	pc98)
9560f595aedSmrg		cpu=i386
9570f595aedSmrg		vendor=pc
958c95b42baSmrg		;;
9590f595aedSmrg	x64 | amd64)
9600f595aedSmrg		cpu=x86_64
9610f595aedSmrg		vendor=pc
962c95b42baSmrg		;;
9630f595aedSmrg	# Recognize the basic CPU types without company name.
9640f595aedSmrg	*)
9650f595aedSmrg		cpu=$basic_machine
9660f595aedSmrg		vendor=unknown
967f40e0d56Smrg		;;
9680f595aedSmrgesac
9690f595aedSmrg
9700f595aedSmrgunset -v basic_machine
9710f595aedSmrg
9720f595aedSmrg# Decode basic machines in the full and proper CPU-Company form.
9730f595aedSmrgcase $cpu-$vendor in
9740f595aedSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
9750f595aedSmrg	# some cases the only manufacturer, in others, it is the most popular.
9760f595aedSmrg	craynv-unknown)
9770f595aedSmrg		vendor=cray
9780f595aedSmrg		basic_os=${basic_os:-unicosmp}
979c95b42baSmrg		;;
9800f595aedSmrg	c90-unknown | c90-cray)
9810f595aedSmrg		vendor=cray
9820f595aedSmrg		basic_os=${Basic_os:-unicos}
983c95b42baSmrg		;;
9840f595aedSmrg	fx80-unknown)
9850f595aedSmrg		vendor=alliant
986f40e0d56Smrg		;;
9870f595aedSmrg	romp-unknown)
9880f595aedSmrg		vendor=ibm
989c95b42baSmrg		;;
9900f595aedSmrg	mmix-unknown)
9910f595aedSmrg		vendor=knuth
992c95b42baSmrg		;;
9930f595aedSmrg	microblaze-unknown | microblazeel-unknown)
9940f595aedSmrg		vendor=xilinx
995c95b42baSmrg		;;
9960f595aedSmrg	rs6000-unknown)
9970f595aedSmrg		vendor=ibm
998c95b42baSmrg		;;
9990f595aedSmrg	vax-unknown)
10000f595aedSmrg		vendor=dec
1001c95b42baSmrg		;;
10020f595aedSmrg	pdp11-unknown)
10030f595aedSmrg		vendor=dec
100462aeb71dSmrg		;;
10050f595aedSmrg	we32k-unknown)
10060f595aedSmrg		vendor=att
1007c95b42baSmrg		;;
10080f595aedSmrg	cydra-unknown)
10090f595aedSmrg		vendor=cydrome
1010c95b42baSmrg		;;
10110f595aedSmrg	i370-ibm*)
10120f595aedSmrg		vendor=ibm
1013c95b42baSmrg		;;
10140f595aedSmrg	orion-unknown)
10150f595aedSmrg		vendor=highlevel
1016c95b42baSmrg		;;
10170f595aedSmrg	xps-unknown | xps100-unknown)
10180f595aedSmrg		cpu=xps100
10190f595aedSmrg		vendor=honeywell
1020c95b42baSmrg		;;
10210f595aedSmrg
10220f595aedSmrg	# Here we normalize CPU types with a missing or matching vendor
10230f595aedSmrg	dpx20-unknown | dpx20-bull)
10240f595aedSmrg		cpu=rs6000
10250f595aedSmrg		vendor=bull
10260f595aedSmrg		basic_os=${basic_os:-bosx}
1027c95b42baSmrg		;;
10280f595aedSmrg
10290f595aedSmrg	# Here we normalize CPU types irrespective of the vendor
10300f595aedSmrg	amd64-*)
10310f595aedSmrg		cpu=x86_64
1032c95b42baSmrg		;;
10330f595aedSmrg	blackfin-*)
10340f595aedSmrg		cpu=bfin
10350f595aedSmrg		basic_os=linux
1036c95b42baSmrg		;;
10370f595aedSmrg	c54x-*)
10380f595aedSmrg		cpu=tic54x
1039c95b42baSmrg		;;
10400f595aedSmrg	c55x-*)
10410f595aedSmrg		cpu=tic55x
1042c95b42baSmrg		;;
10430f595aedSmrg	c6x-*)
10440f595aedSmrg		cpu=tic6x
1045c95b42baSmrg		;;
10460f595aedSmrg	e500v[12]-*)
10470f595aedSmrg		cpu=powerpc
10480f595aedSmrg		basic_os=${basic_os}"spe"
1049c95b42baSmrg		;;
10500f595aedSmrg	mips3*-*)
10510f595aedSmrg		cpu=mips64
1052c95b42baSmrg		;;
10530f595aedSmrg	ms1-*)
10540f595aedSmrg		cpu=mt
1055c95b42baSmrg		;;
10560f595aedSmrg	m68knommu-*)
10570f595aedSmrg		cpu=m68k
10580f595aedSmrg		basic_os=linux
1059c95b42baSmrg		;;
10600f595aedSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
10610f595aedSmrg		cpu=s12z
1062f40e0d56Smrg		;;
10630f595aedSmrg	openrisc-*)
10640f595aedSmrg		cpu=or32
1065c95b42baSmrg		;;
10660f595aedSmrg	parisc-*)
10670f595aedSmrg		cpu=hppa
10680f595aedSmrg		basic_os=linux
1069c95b42baSmrg		;;
10700f595aedSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
10710f595aedSmrg		cpu=i586
1072c95b42baSmrg		;;
10730f595aedSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
10740f595aedSmrg		cpu=i686
1075c95b42baSmrg		;;
10760f595aedSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
10770f595aedSmrg		cpu=i686
1078c95b42baSmrg		;;
10790f595aedSmrg	pentium4-*)
10800f595aedSmrg		cpu=i786
1081c95b42baSmrg		;;
10820f595aedSmrg	pc98-*)
10830f595aedSmrg		cpu=i386
1084c95b42baSmrg		;;
10850f595aedSmrg	ppc-* | ppcbe-*)
10860f595aedSmrg		cpu=powerpc
1087c95b42baSmrg		;;
10880f595aedSmrg	ppcle-* | powerpclittle-*)
10890f595aedSmrg		cpu=powerpcle
1090c95b42baSmrg		;;
10910f595aedSmrg	ppc64-*)
10920f595aedSmrg		cpu=powerpc64
1093c95b42baSmrg		;;
10940f595aedSmrg	ppc64le-* | powerpc64little-*)
10950f595aedSmrg		cpu=powerpc64le
1096c95b42baSmrg		;;
10970f595aedSmrg	sb1-*)
10980f595aedSmrg		cpu=mipsisa64sb1
1099c95b42baSmrg		;;
11000f595aedSmrg	sb1el-*)
11010f595aedSmrg		cpu=mipsisa64sb1el
1102c95b42baSmrg		;;
11030f595aedSmrg	sh5e[lb]-*)
11040f595aedSmrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
1105c95b42baSmrg		;;
11060f595aedSmrg	spur-*)
11070f595aedSmrg		cpu=spur
1108c95b42baSmrg		;;
11090f595aedSmrg	strongarm-* | thumb-*)
11100f595aedSmrg		cpu=arm
1111c95b42baSmrg		;;
11120f595aedSmrg	tx39-*)
11130f595aedSmrg		cpu=mipstx39
1114b8f63ae3Smrg		;;
11150f595aedSmrg	tx39el-*)
11160f595aedSmrg		cpu=mipstx39el
1117c95b42baSmrg		;;
11180f595aedSmrg	x64-*)
11190f595aedSmrg		cpu=x86_64
1120c95b42baSmrg		;;
112162aeb71dSmrg	xscale-* | xscalee[bl]-*)
11220f595aedSmrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
1123c95b42baSmrg		;;
11240f595aedSmrg	arm64-*)
11250f595aedSmrg		cpu=aarch64
1126c95b42baSmrg		;;
1127c95b42baSmrg
11280f595aedSmrg	# Recognize the canonical CPU Types that limit and/or modify the
11290f595aedSmrg	# company names they are paired with.
11300f595aedSmrg	cr16-*)
11310f595aedSmrg		basic_os=${basic_os:-elf}
1132c95b42baSmrg		;;
11330f595aedSmrg	crisv32-* | etraxfs*-*)
11340f595aedSmrg		cpu=crisv32
11350f595aedSmrg		vendor=axis
1136c95b42baSmrg		;;
11370f595aedSmrg	cris-* | etrax*-*)
11380f595aedSmrg		cpu=cris
11390f595aedSmrg		vendor=axis
1140c95b42baSmrg		;;
11410f595aedSmrg	crx-*)
11420f595aedSmrg		basic_os=${basic_os:-elf}
1143c95b42baSmrg		;;
11440f595aedSmrg	neo-tandem)
11450f595aedSmrg		cpu=neo
11460f595aedSmrg		vendor=tandem
1147c95b42baSmrg		;;
11480f595aedSmrg	nse-tandem)
11490f595aedSmrg		cpu=nse
11500f595aedSmrg		vendor=tandem
1151c95b42baSmrg		;;
11520f595aedSmrg	nsr-tandem)
11530f595aedSmrg		cpu=nsr
11540f595aedSmrg		vendor=tandem
1155c95b42baSmrg		;;
11560f595aedSmrg	nsv-tandem)
11570f595aedSmrg		cpu=nsv
11580f595aedSmrg		vendor=tandem
1159c95b42baSmrg		;;
11600f595aedSmrg	nsx-tandem)
11610f595aedSmrg		cpu=nsx
11620f595aedSmrg		vendor=tandem
1163c95b42baSmrg		;;
11640f595aedSmrg	mipsallegrexel-sony)
11650f595aedSmrg		cpu=mipsallegrexel
11660f595aedSmrg		vendor=sony
1167c95b42baSmrg		;;
11680f595aedSmrg	tile*-*)
11690f595aedSmrg		basic_os=${basic_os:-linux-gnu}
1170c95b42baSmrg		;;
11710f595aedSmrg
1172c95b42baSmrg	*)
11730f595aedSmrg		# Recognize the canonical CPU types that are allowed with any
11740f595aedSmrg		# company name.
11750f595aedSmrg		case $cpu in
11760f595aedSmrg			1750a | 580 \
11770f595aedSmrg			| a29k \
11780f595aedSmrg			| aarch64 | aarch64_be \
11790f595aedSmrg			| abacus \
11800f595aedSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
11810f595aedSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
11820f595aedSmrg			| alphapca5[67] | alpha64pca5[67] \
11830f595aedSmrg			| am33_2.0 \
11840f595aedSmrg			| amdgcn \
11850f595aedSmrg			| arc | arceb | arc32 | arc64 \
11860f595aedSmrg			| arm | arm[lb]e | arme[lb] | armv* \
11870f595aedSmrg			| avr | avr32 \
11880f595aedSmrg			| asmjs \
11890f595aedSmrg			| ba \
11900f595aedSmrg			| be32 | be64 \
11910f595aedSmrg			| bfin | bpf | bs2000 \
11920f595aedSmrg			| c[123]* | c30 | [cjt]90 | c4x \
11930f595aedSmrg			| c8051 | clipper | craynv | csky | cydra \
11940f595aedSmrg			| d10v | d30v | dlx | dsp16xx \
11950f595aedSmrg			| e2k | elxsi | epiphany \
11960f595aedSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
11970f595aedSmrg			| h8300 | h8500 \
11980f595aedSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
11990f595aedSmrg			| hexagon \
12000f595aedSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
12010f595aedSmrg			| ip2k | iq2000 \
12020f595aedSmrg			| k1om \
12030f595aedSmrg			| le32 | le64 \
12040f595aedSmrg			| lm32 \
12050f595aedSmrg			| loongarch32 | loongarch64 | loongarchx32 \
12060f595aedSmrg			| m32c | m32r | m32rle \
12070f595aedSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
12080f595aedSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
12090f595aedSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
12100f595aedSmrg			| microblaze | microblazeel \
12110f595aedSmrg			| mips | mipsbe | mipseb | mipsel | mipsle \
12120f595aedSmrg			| mips16 \
12130f595aedSmrg			| mips64 | mips64eb | mips64el \
12140f595aedSmrg			| mips64octeon | mips64octeonel \
12150f595aedSmrg			| mips64orion | mips64orionel \
12160f595aedSmrg			| mips64r5900 | mips64r5900el \
12170f595aedSmrg			| mips64vr | mips64vrel \
12180f595aedSmrg			| mips64vr4100 | mips64vr4100el \
12190f595aedSmrg			| mips64vr4300 | mips64vr4300el \
12200f595aedSmrg			| mips64vr5000 | mips64vr5000el \
12210f595aedSmrg			| mips64vr5900 | mips64vr5900el \
12220f595aedSmrg			| mipsisa32 | mipsisa32el \
12230f595aedSmrg			| mipsisa32r2 | mipsisa32r2el \
12240f595aedSmrg			| mipsisa32r3 | mipsisa32r3el \
12250f595aedSmrg			| mipsisa32r5 | mipsisa32r5el \
12260f595aedSmrg			| mipsisa32r6 | mipsisa32r6el \
12270f595aedSmrg			| mipsisa64 | mipsisa64el \
12280f595aedSmrg			| mipsisa64r2 | mipsisa64r2el \
12290f595aedSmrg			| mipsisa64r3 | mipsisa64r3el \
12300f595aedSmrg			| mipsisa64r5 | mipsisa64r5el \
12310f595aedSmrg			| mipsisa64r6 | mipsisa64r6el \
12320f595aedSmrg			| mipsisa64sb1 | mipsisa64sb1el \
12330f595aedSmrg			| mipsisa64sr71k | mipsisa64sr71kel \
12340f595aedSmrg			| mipsr5900 | mipsr5900el \
12350f595aedSmrg			| mipstx39 | mipstx39el \
12360f595aedSmrg			| mmix \
12370f595aedSmrg			| mn10200 | mn10300 \
12380f595aedSmrg			| moxie \
12390f595aedSmrg			| mt \
12400f595aedSmrg			| msp430 \
12410f595aedSmrg			| nds32 | nds32le | nds32be \
12420f595aedSmrg			| nfp \
12430f595aedSmrg			| nios | nios2 | nios2eb | nios2el \
12440f595aedSmrg			| none | np1 | ns16k | ns32k | nvptx \
12450f595aedSmrg			| open8 \
12460f595aedSmrg			| or1k* \
12470f595aedSmrg			| or32 \
12480f595aedSmrg			| orion \
12490f595aedSmrg			| picochip \
12500f595aedSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
12510f595aedSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
12520f595aedSmrg			| pru \
12530f595aedSmrg			| pyramid \
12540f595aedSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
12550f595aedSmrg			| rl78 | romp | rs6000 | rx \
12560f595aedSmrg			| s390 | s390x \
12570f595aedSmrg			| score \
12580f595aedSmrg			| sh | shl \
12590f595aedSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
12600f595aedSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
12610f595aedSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
12620f595aedSmrg			| sparclite \
12630f595aedSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
12640f595aedSmrg			| spu \
12650f595aedSmrg			| tahoe \
12660f595aedSmrg			| thumbv7* \
12670f595aedSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
12680f595aedSmrg			| tron \
12690f595aedSmrg			| ubicom32 \
12700f595aedSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
12710f595aedSmrg			| vax \
12720f595aedSmrg			| visium \
12730f595aedSmrg			| w65 \
12740f595aedSmrg			| wasm32 | wasm64 \
12750f595aedSmrg			| we32k \
12760f595aedSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
12770f595aedSmrg			| xstormy16 | xtensa* \
12780f595aedSmrg			| ymp \
12790f595aedSmrg			| z8k | z80)
12800f595aedSmrg				;;
12810f595aedSmrg
12820f595aedSmrg			*)
12830f595aedSmrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
12840f595aedSmrg				exit 1
12850f595aedSmrg				;;
12860f595aedSmrg		esac
1287c95b42baSmrg		;;
1288c95b42baSmrgesac
1289c95b42baSmrg
1290c95b42baSmrg# Here we canonicalize certain aliases for manufacturers.
12910f595aedSmrgcase $vendor in
12920f595aedSmrg	digital*)
12930f595aedSmrg		vendor=dec
1294c95b42baSmrg		;;
12950f595aedSmrg	commodore*)
12960f595aedSmrg		vendor=cbm
1297c95b42baSmrg		;;
1298c95b42baSmrg	*)
1299c95b42baSmrg		;;
1300c95b42baSmrgesac
1301c95b42baSmrg
1302c95b42baSmrg# Decode manufacturer-specific aliases for certain operating systems.
1303c95b42baSmrg
13040f595aedSmrgif test x$basic_os != x
1305c95b42baSmrgthen
13060f595aedSmrg
13070f595aedSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
13080f595aedSmrg# set os.
13090f595aedSmrgcase $basic_os in
13100f595aedSmrg	gnu/linux*)
13110f595aedSmrg		kernel=linux
13120f595aedSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
13130f595aedSmrg		;;
13140f595aedSmrg	os2-emx)
13150f595aedSmrg		kernel=os2
13160f595aedSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
13170f595aedSmrg		;;
13180f595aedSmrg	nto-qnx*)
13190f595aedSmrg		kernel=nto
13200f595aedSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
13210f595aedSmrg		;;
13220f595aedSmrg	*-*)
13230f595aedSmrg		# shellcheck disable=SC2162
13240f595aedSmrg		saved_IFS=$IFS
13250f595aedSmrg		IFS="-" read kernel os <<EOF
13260f595aedSmrg$basic_os
13270f595aedSmrgEOF
13280f595aedSmrg		IFS=$saved_IFS
13290f595aedSmrg		;;
13300f595aedSmrg	# Default OS when just kernel was specified
13310f595aedSmrg	nto*)
13320f595aedSmrg		kernel=nto
13330f595aedSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
13340f595aedSmrg		;;
13350f595aedSmrg	linux*)
13360f595aedSmrg		kernel=linux
13370f595aedSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
13380f595aedSmrg		;;
13390f595aedSmrg	*)
13400f595aedSmrg		kernel=
13410f595aedSmrg		os=$basic_os
13420f595aedSmrg		;;
13430f595aedSmrgesac
13440f595aedSmrg
13450f595aedSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
13460f595aedSmrg# etc.)
1347c95b42baSmrgcase $os in
1348b8f63ae3Smrg	# First match some system type aliases that might get confused
1349b8f63ae3Smrg	# with valid system types.
13500f595aedSmrg	# solaris* is a basic system type, with this one exception.
13510f595aedSmrg	auroraux)
13520f595aedSmrg		os=auroraux
1353d80571a9Smrg		;;
13540f595aedSmrg	bluegene*)
13550f595aedSmrg		os=cnk
1356c95b42baSmrg		;;
13570f595aedSmrg	solaris1 | solaris1.*)
13580f595aedSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
1359c95b42baSmrg		;;
13600f595aedSmrg	solaris)
13610f595aedSmrg		os=solaris2
1362c95b42baSmrg		;;
13630f595aedSmrg	unixware*)
13640f595aedSmrg		os=sysv4.2uw
1365c95b42baSmrg		;;
1366b8f63ae3Smrg	# es1800 is here to avoid being matched by es* (a different OS)
13670f595aedSmrg	es1800*)
13680f595aedSmrg		os=ose
1369b8f63ae3Smrg		;;
13700f595aedSmrg	# Some version numbers need modification
13710f595aedSmrg	chorusos*)
13720f595aedSmrg		os=chorusos
1373c95b42baSmrg		;;
13740f595aedSmrg	isc)
13750f595aedSmrg		os=isc2.2
1376c95b42baSmrg		;;
13770f595aedSmrg	sco6)
13780f595aedSmrg		os=sco5v6
1379c95b42baSmrg		;;
13800f595aedSmrg	sco5)
13810f595aedSmrg		os=sco3.2v5
1382c95b42baSmrg		;;
13830f595aedSmrg	sco4)
13840f595aedSmrg		os=sco3.2v4
1385c95b42baSmrg		;;
13860f595aedSmrg	sco3.2.[4-9]*)
13870f595aedSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
1388c95b42baSmrg		;;
13890f595aedSmrg	sco*v* | scout)
13900f595aedSmrg		# Don't match below
1391c95b42baSmrg		;;
13920f595aedSmrg	sco*)
13930f595aedSmrg		os=sco3.2v2
1394c95b42baSmrg		;;
13950f595aedSmrg	psos*)
13960f595aedSmrg		os=psos
1397c95b42baSmrg		;;
13980f595aedSmrg	qnx*)
13990f595aedSmrg		os=qnx
1400c95b42baSmrg		;;
14010f595aedSmrg	hiux*)
14020f595aedSmrg		os=hiuxwe2
1403c95b42baSmrg		;;
14040f595aedSmrg	lynx*178)
14050f595aedSmrg		os=lynxos178
1406c95b42baSmrg		;;
14070f595aedSmrg	lynx*5)
14080f595aedSmrg		os=lynxos5
1409c95b42baSmrg		;;
14100f595aedSmrg	lynxos*)
14110f595aedSmrg		# don't get caught up in next wildcard
1412c95b42baSmrg		;;
14130f595aedSmrg	lynx*)
14140f595aedSmrg		os=lynxos
1415c95b42baSmrg		;;
14160f595aedSmrg	mac[0-9]*)
14170f595aedSmrg		os=`echo "$os" | sed -e 's|mac|macos|'`
1418c95b42baSmrg		;;
14190f595aedSmrg	opened*)
14200f595aedSmrg		os=openedition
1421c95b42baSmrg		;;
14220f595aedSmrg	os400*)
14230f595aedSmrg		os=os400
1424c95b42baSmrg		;;
14250f595aedSmrg	sunos5*)
14260f595aedSmrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
1427c95b42baSmrg		;;
14280f595aedSmrg	sunos6*)
14290f595aedSmrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
1430c95b42baSmrg		;;
14310f595aedSmrg	wince*)
14320f595aedSmrg		os=wince
1433c95b42baSmrg		;;
14340f595aedSmrg	utek*)
14350f595aedSmrg		os=bsd
1436c95b42baSmrg		;;
14370f595aedSmrg	dynix*)
14380f595aedSmrg		os=bsd
1439c95b42baSmrg		;;
14400f595aedSmrg	acis*)
14410f595aedSmrg		os=aos
1442c95b42baSmrg		;;
14430f595aedSmrg	atheos*)
14440f595aedSmrg		os=atheos
1445c95b42baSmrg		;;
14460f595aedSmrg	syllable*)
14470f595aedSmrg		os=syllable
14480f595aedSmrg		;;
14490f595aedSmrg	386bsd)
14500f595aedSmrg		os=bsd
14510f595aedSmrg		;;
14520f595aedSmrg	ctix* | uts*)
14530f595aedSmrg		os=sysv
14540f595aedSmrg		;;
14550f595aedSmrg	nova*)
14560f595aedSmrg		os=rtmk-nova
14570f595aedSmrg		;;
14580f595aedSmrg	ns2)
14590f595aedSmrg		os=nextstep2
14600f595aedSmrg		;;
14610f595aedSmrg	# Preserve the version number of sinix5.
14620f595aedSmrg	sinix5.*)
14630f595aedSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
1464c95b42baSmrg		;;
14650f595aedSmrg	sinix*)
14660f595aedSmrg		os=sysv4
1467c95b42baSmrg		;;
14680f595aedSmrg	tpf*)
14690f595aedSmrg		os=tpf
1470c95b42baSmrg		;;
14710f595aedSmrg	triton*)
14720f595aedSmrg		os=sysv3
1473c95b42baSmrg		;;
14740f595aedSmrg	oss*)
14750f595aedSmrg		os=sysv3
1476c95b42baSmrg		;;
14770f595aedSmrg	svr4*)
14780f595aedSmrg		os=sysv4
1479c95b42baSmrg		;;
14800f595aedSmrg	svr3)
14810f595aedSmrg		os=sysv3
1482c95b42baSmrg		;;
14830f595aedSmrg	sysvr4)
14840f595aedSmrg		os=sysv4
1485c95b42baSmrg		;;
14860f595aedSmrg	ose*)
14870f595aedSmrg		os=ose
1488c95b42baSmrg		;;
14890f595aedSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
14900f595aedSmrg		os=mint
1491f40e0d56Smrg		;;
14920f595aedSmrg	dicos*)
14930f595aedSmrg		os=dicos
14940f595aedSmrg		;;
14950f595aedSmrg	pikeos*)
1496b8f63ae3Smrg		# Until real need of OS specific support for
1497b8f63ae3Smrg		# particular features comes up, bare metal
1498b8f63ae3Smrg		# configurations are quite functional.
14990f595aedSmrg		case $cpu in
1500b8f63ae3Smrg		    arm*)
15010f595aedSmrg			os=eabi
1502b8f63ae3Smrg			;;
1503b8f63ae3Smrg		    *)
15040f595aedSmrg			os=elf
1505b8f63ae3Smrg			;;
1506b8f63ae3Smrg		esac
1507b8f63ae3Smrg		;;
1508c95b42baSmrg	*)
15090f595aedSmrg		# No normalization, but not necessarily accepted, that comes below.
1510c95b42baSmrg		;;
1511c95b42baSmrgesac
15120f595aedSmrg
1513c95b42baSmrgelse
1514c95b42baSmrg
1515c95b42baSmrg# Here we handle the default operating systems that come with various machines.
1516c95b42baSmrg# The value should be what the vendor currently ships out the door with their
1517c95b42baSmrg# machine or put another way, the most popular os provided with the machine.
1518c95b42baSmrg
1519c95b42baSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
1520c95b42baSmrg# "-sun"), then you have to tell the case statement up towards the top
1521c95b42baSmrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
1522c95b42baSmrg# will signal an error saying that MANUFACTURER isn't an operating
1523c95b42baSmrg# system, and we'll never get to this point.
1524c95b42baSmrg
15250f595aedSmrgkernel=
15260f595aedSmrgcase $cpu-$vendor in
152762aeb71dSmrg	score-*)
15280f595aedSmrg		os=elf
1529f40e0d56Smrg		;;
153062aeb71dSmrg	spu-*)
15310f595aedSmrg		os=elf
1532f40e0d56Smrg		;;
1533c95b42baSmrg	*-acorn)
15340f595aedSmrg		os=riscix1.2
1535c95b42baSmrg		;;
1536c95b42baSmrg	arm*-rebel)
15370f595aedSmrg		kernel=linux
15380f595aedSmrg		os=gnu
1539c95b42baSmrg		;;
1540c95b42baSmrg	arm*-semi)
15410f595aedSmrg		os=aout
1542c95b42baSmrg		;;
154362aeb71dSmrg	c4x-* | tic4x-*)
15440f595aedSmrg		os=coff
1545f40e0d56Smrg		;;
1546b8f63ae3Smrg	c8051-*)
15470f595aedSmrg		os=elf
15480f595aedSmrg		;;
15490f595aedSmrg	clipper-intergraph)
15500f595aedSmrg		os=clix
1551b8f63ae3Smrg		;;
1552b8f63ae3Smrg	hexagon-*)
15530f595aedSmrg		os=elf
1554b8f63ae3Smrg		;;
1555d80571a9Smrg	tic54x-*)
15560f595aedSmrg		os=coff
1557d80571a9Smrg		;;
1558d80571a9Smrg	tic55x-*)
15590f595aedSmrg		os=coff
1560d80571a9Smrg		;;
1561d80571a9Smrg	tic6x-*)
15620f595aedSmrg		os=coff
1563d80571a9Smrg		;;
1564c95b42baSmrg	# This must come before the *-dec entry.
1565c95b42baSmrg	pdp10-*)
15660f595aedSmrg		os=tops20
1567c95b42baSmrg		;;
1568c95b42baSmrg	pdp11-*)
15690f595aedSmrg		os=none
1570c95b42baSmrg		;;
1571c95b42baSmrg	*-dec | vax-*)
15720f595aedSmrg		os=ultrix4.2
1573c95b42baSmrg		;;
1574c95b42baSmrg	m68*-apollo)
15750f595aedSmrg		os=domain
1576c95b42baSmrg		;;
1577c95b42baSmrg	i386-sun)
15780f595aedSmrg		os=sunos4.0.2
1579c95b42baSmrg		;;
1580c95b42baSmrg	m68000-sun)
15810f595aedSmrg		os=sunos3
1582c95b42baSmrg		;;
1583c95b42baSmrg	m68*-cisco)
15840f595aedSmrg		os=aout
1585c95b42baSmrg		;;
158662aeb71dSmrg	mep-*)
15870f595aedSmrg		os=elf
1588f40e0d56Smrg		;;
1589c95b42baSmrg	mips*-cisco)
15900f595aedSmrg		os=elf
1591c95b42baSmrg		;;
1592c95b42baSmrg	mips*-*)
15930f595aedSmrg		os=elf
1594c95b42baSmrg		;;
1595c95b42baSmrg	or32-*)
15960f595aedSmrg		os=coff
1597c95b42baSmrg		;;
1598c95b42baSmrg	*-tti)	# must be before sparc entry or we get the wrong os.
15990f595aedSmrg		os=sysv3
1600c95b42baSmrg		;;
1601c95b42baSmrg	sparc-* | *-sun)
16020f595aedSmrg		os=sunos4.1.1
1603c95b42baSmrg		;;
1604b8f63ae3Smrg	pru-*)
16050f595aedSmrg		os=elf
1606b8f63ae3Smrg		;;
1607c95b42baSmrg	*-be)
16080f595aedSmrg		os=beos
1609c95b42baSmrg		;;
1610c95b42baSmrg	*-ibm)
16110f595aedSmrg		os=aix
1612c95b42baSmrg		;;
161362aeb71dSmrg	*-knuth)
16140f595aedSmrg		os=mmixware
1615c95b42baSmrg		;;
1616c95b42baSmrg	*-wec)
16170f595aedSmrg		os=proelf
1618c95b42baSmrg		;;
1619c95b42baSmrg	*-winbond)
16200f595aedSmrg		os=proelf
1621c95b42baSmrg		;;
1622c95b42baSmrg	*-oki)
16230f595aedSmrg		os=proelf
1624c95b42baSmrg		;;
1625c95b42baSmrg	*-hp)
16260f595aedSmrg		os=hpux
1627c95b42baSmrg		;;
1628c95b42baSmrg	*-hitachi)
16290f595aedSmrg		os=hiux
1630c95b42baSmrg		;;
1631c95b42baSmrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
16320f595aedSmrg		os=sysv
1633c95b42baSmrg		;;
1634c95b42baSmrg	*-cbm)
16350f595aedSmrg		os=amigaos
1636c95b42baSmrg		;;
1637c95b42baSmrg	*-dg)
16380f595aedSmrg		os=dgux
1639c95b42baSmrg		;;
1640c95b42baSmrg	*-dolphin)
16410f595aedSmrg		os=sysv3
1642c95b42baSmrg		;;
1643c95b42baSmrg	m68k-ccur)
16440f595aedSmrg		os=rtu
1645c95b42baSmrg		;;
1646c95b42baSmrg	m88k-omron*)
16470f595aedSmrg		os=luna
1648c95b42baSmrg		;;
1649b8f63ae3Smrg	*-next)
16500f595aedSmrg		os=nextstep
1651c95b42baSmrg		;;
1652c95b42baSmrg	*-sequent)
16530f595aedSmrg		os=ptx
1654c95b42baSmrg		;;
1655c95b42baSmrg	*-crds)
16560f595aedSmrg		os=unos
1657c95b42baSmrg		;;
1658c95b42baSmrg	*-ns)
16590f595aedSmrg		os=genix
1660c95b42baSmrg		;;
1661c95b42baSmrg	i370-*)
16620f595aedSmrg		os=mvs
1663c95b42baSmrg		;;
1664c95b42baSmrg	*-gould)
16650f595aedSmrg		os=sysv
1666c95b42baSmrg		;;
1667c95b42baSmrg	*-highlevel)
16680f595aedSmrg		os=bsd
1669c95b42baSmrg		;;
1670c95b42baSmrg	*-encore)
16710f595aedSmrg		os=bsd
1672c95b42baSmrg		;;
1673c95b42baSmrg	*-sgi)
16740f595aedSmrg		os=irix
1675c95b42baSmrg		;;
1676c95b42baSmrg	*-siemens)
16770f595aedSmrg		os=sysv4
1678c95b42baSmrg		;;
1679c95b42baSmrg	*-masscomp)
16800f595aedSmrg		os=rtu
1681c95b42baSmrg		;;
1682c95b42baSmrg	f30[01]-fujitsu | f700-fujitsu)
16830f595aedSmrg		os=uxpv
1684c95b42baSmrg		;;
1685c95b42baSmrg	*-rom68k)
16860f595aedSmrg		os=coff
1687c95b42baSmrg		;;
1688c95b42baSmrg	*-*bug)
16890f595aedSmrg		os=coff
1690c95b42baSmrg		;;
1691c95b42baSmrg	*-apple)
16920f595aedSmrg		os=macos
1693c95b42baSmrg		;;
1694c95b42baSmrg	*-atari*)
16950f595aedSmrg		os=mint
16960f595aedSmrg		;;
16970f595aedSmrg	*-wrs)
16980f595aedSmrg		os=vxworks
1699c95b42baSmrg		;;
1700c95b42baSmrg	*)
17010f595aedSmrg		os=none
1702c95b42baSmrg		;;
1703c95b42baSmrgesac
17040f595aedSmrg
1705c95b42baSmrgfi
1706c95b42baSmrg
17070f595aedSmrg# Now, validate our (potentially fixed-up) OS.
17080f595aedSmrgcase $os in
17090f595aedSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
17100f595aedSmrg	musl* | newlib* | relibc* | uclibc*)
17110f595aedSmrg		;;
17120f595aedSmrg	# Likewise for "kernel-abi"
17130f595aedSmrg	eabi* | gnueabi*)
17140f595aedSmrg		;;
17150f595aedSmrg	# VxWorks passes extra cpu info in the 4th filed.
17160f595aedSmrg	simlinux | simwindows | spe)
17170f595aedSmrg		;;
17180f595aedSmrg	# Now accept the basic system types.
17190f595aedSmrg	# The portable systems comes first.
17200f595aedSmrg	# Each alternative MUST end in a * to match a version number.
17210f595aedSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
17220f595aedSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
17230f595aedSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
17240f595aedSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
17250f595aedSmrg	     | hiux* | abug | nacl* | netware* | windows* \
17260f595aedSmrg	     | os9* | macos* | osx* | ios* \
17270f595aedSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
17280f595aedSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
17290f595aedSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
17300f595aedSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
17310f595aedSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
17320f595aedSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
17330f595aedSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
17340f595aedSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
17350f595aedSmrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
17360f595aedSmrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
17370f595aedSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
17380f595aedSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
17390f595aedSmrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
17400f595aedSmrg	     | midipix* | mingw32* | mingw64* | mint* \
17410f595aedSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
17420f595aedSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
17430f595aedSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
17440f595aedSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
17450f595aedSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
17460f595aedSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
17470f595aedSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
17480f595aedSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
17490f595aedSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
17500f595aedSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
17510f595aedSmrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*)
17520f595aedSmrg		;;
17530f595aedSmrg	# This one is extra strict with allowed versions
17540f595aedSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
17550f595aedSmrg		# Don't forget version if it is 3.2v4 or newer.
17560f595aedSmrg		;;
17570f595aedSmrg	none)
17580f595aedSmrg		;;
17590f595aedSmrg	*)
17600f595aedSmrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
17610f595aedSmrg		exit 1
17620f595aedSmrg		;;
17630f595aedSmrgesac
17640f595aedSmrg
17650f595aedSmrg# As a final step for OS-related things, validate the OS-kernel combination
17660f595aedSmrg# (given a valid OS), if there is a kernel.
17670f595aedSmrgcase $kernel-$os in
17680f595aedSmrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
17690f595aedSmrg		   | linux-musl* | linux-relibc* | linux-uclibc* )
17700f595aedSmrg		;;
17710f595aedSmrg	uclinux-uclibc* )
17720f595aedSmrg		;;
17730f595aedSmrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
17740f595aedSmrg		# These are just libc implementations, not actual OSes, and thus
17750f595aedSmrg		# require a kernel.
17760f595aedSmrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
17770f595aedSmrg		exit 1
17780f595aedSmrg		;;
17790f595aedSmrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
17800f595aedSmrg		;;
17810f595aedSmrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
17820f595aedSmrg		;;
17830f595aedSmrg	nto-qnx*)
17840f595aedSmrg		;;
17850f595aedSmrg	os2-emx)
17860f595aedSmrg		;;
17870f595aedSmrg	*-eabi* | *-gnueabi*)
17880f595aedSmrg		;;
17890f595aedSmrg	-*)
17900f595aedSmrg		# Blank kernel with real OS is always fine.
17910f595aedSmrg		;;
17920f595aedSmrg	*-*)
17930f595aedSmrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
17940f595aedSmrg		exit 1
17950f595aedSmrg		;;
17960f595aedSmrgesac
17970f595aedSmrg
1798c95b42baSmrg# Here we handle the case where we know the os, and the CPU type, but not the
1799c95b42baSmrg# manufacturer.  We pick the logical manufacturer.
18000f595aedSmrgcase $vendor in
18010f595aedSmrg	unknown)
18020f595aedSmrg		case $cpu-$os in
18030f595aedSmrg			*-riscix*)
1804c95b42baSmrg				vendor=acorn
1805c95b42baSmrg				;;
18060f595aedSmrg			*-sunos*)
1807c95b42baSmrg				vendor=sun
1808c95b42baSmrg				;;
18090f595aedSmrg			*-cnk* | *-aix*)
1810c95b42baSmrg				vendor=ibm
1811c95b42baSmrg				;;
18120f595aedSmrg			*-beos*)
1813c95b42baSmrg				vendor=be
1814c95b42baSmrg				;;
18150f595aedSmrg			*-hpux*)
1816c95b42baSmrg				vendor=hp
1817c95b42baSmrg				;;
18180f595aedSmrg			*-mpeix*)
1819c95b42baSmrg				vendor=hp
1820c95b42baSmrg				;;
18210f595aedSmrg			*-hiux*)
1822c95b42baSmrg				vendor=hitachi
1823c95b42baSmrg				;;
18240f595aedSmrg			*-unos*)
1825c95b42baSmrg				vendor=crds
1826c95b42baSmrg				;;
18270f595aedSmrg			*-dgux*)
1828c95b42baSmrg				vendor=dg
1829c95b42baSmrg				;;
18300f595aedSmrg			*-luna*)
1831c95b42baSmrg				vendor=omron
1832c95b42baSmrg				;;
18330f595aedSmrg			*-genix*)
1834c95b42baSmrg				vendor=ns
1835c95b42baSmrg				;;
18360f595aedSmrg			*-clix*)
18370f595aedSmrg				vendor=intergraph
18380f595aedSmrg				;;
18390f595aedSmrg			*-mvs* | *-opened*)
18400f595aedSmrg				vendor=ibm
18410f595aedSmrg				;;
18420f595aedSmrg			*-os400*)
1843c95b42baSmrg				vendor=ibm
1844c95b42baSmrg				;;
18450f595aedSmrg			s390-* | s390x-*)
1846c95b42baSmrg				vendor=ibm
1847c95b42baSmrg				;;
18480f595aedSmrg			*-ptx*)
1849c95b42baSmrg				vendor=sequent
1850c95b42baSmrg				;;
18510f595aedSmrg			*-tpf*)
1852c95b42baSmrg				vendor=ibm
1853c95b42baSmrg				;;
18540f595aedSmrg			*-vxsim* | *-vxworks* | *-windiss*)
1855c95b42baSmrg				vendor=wrs
1856c95b42baSmrg				;;
18570f595aedSmrg			*-aux*)
1858c95b42baSmrg				vendor=apple
1859c95b42baSmrg				;;
18600f595aedSmrg			*-hms*)
1861c95b42baSmrg				vendor=hitachi
1862c95b42baSmrg				;;
18630f595aedSmrg			*-mpw* | *-macos*)
1864c95b42baSmrg				vendor=apple
1865c95b42baSmrg				;;
18660f595aedSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
1867c95b42baSmrg				vendor=atari
1868c95b42baSmrg				;;
18690f595aedSmrg			*-vos*)
1870c95b42baSmrg				vendor=stratus
1871c95b42baSmrg				;;
1872c95b42baSmrg		esac
1873c95b42baSmrg		;;
1874c95b42baSmrgesac
1875c95b42baSmrg
18760f595aedSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
1877c95b42baSmrgexit
1878c95b42baSmrg
1879c95b42baSmrg# Local variables:
18800f595aedSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
1881c95b42baSmrg# time-stamp-start: "timestamp='"
1882c95b42baSmrg# time-stamp-format: "%:y-%02m-%02d"
1883c95b42baSmrg# time-stamp-end: "'"
1884c95b42baSmrg# End:
1885