172b4363aSmrg#! /bin/sh
272b4363aSmrg# Configuration validation subroutine script.
37ed541caSmrg#   Copyright 1992-2021 Free Software Foundation, Inc.
472b4363aSmrg
57ed541caSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
67ed541caSmrg
77ed541caSmrgtimestamp='2021-08-14'
872b4363aSmrg
933dddc75Smrg# This file is free software; you can redistribute it and/or modify it
1033dddc75Smrg# under the terms of the GNU General Public License as published by
1133dddc75Smrg# the Free Software Foundation; either version 3 of the License, or
1272b4363aSmrg# (at your option) any later version.
1372b4363aSmrg#
1433dddc75Smrg# This program is distributed in the hope that it will be useful, but
1533dddc75Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
1633dddc75Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1733dddc75Smrg# General Public License for more details.
1872b4363aSmrg#
1972b4363aSmrg# You should have received a copy of the GNU General Public License
207ed541caSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
2172b4363aSmrg#
2272b4363aSmrg# As a special exception to the GNU General Public License, if you
2372b4363aSmrg# distribute this file as part of a program that contains a
2472b4363aSmrg# configuration script generated by Autoconf, you may include it under
2533dddc75Smrg# the same distribution terms that you use for the rest of that
2633dddc75Smrg# program.  This Exception is an additional permission under section 7
2733dddc75Smrg# of the GNU General Public License, version 3 ("GPLv3").
2872b4363aSmrg
2972b4363aSmrg
3033dddc75Smrg# Please send patches to <config-patches@gnu.org>.
3172b4363aSmrg#
3272b4363aSmrg# Configuration subroutine to validate and canonicalize a configuration type.
3372b4363aSmrg# Supply the specified configuration type as an argument.
3472b4363aSmrg# If it is invalid, we print an error message on stderr and exit with code 1.
3572b4363aSmrg# Otherwise, we print the canonical config type on stdout and succeed.
3672b4363aSmrg
3708e312fdSmrg# You can get the latest version of this script from:
387ed541caSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
3908e312fdSmrg
4072b4363aSmrg# This file is supposed to be the same for all GNU packages
4172b4363aSmrg# and recognize all the CPU types, system types and aliases
4272b4363aSmrg# that are meaningful with *any* GNU software.
4372b4363aSmrg# Each package is responsible for reporting which valid configurations
4472b4363aSmrg# it does not support.  The user should be able to distinguish
4572b4363aSmrg# a failure to support a valid configuration from a meaningless
4672b4363aSmrg# configuration.
4772b4363aSmrg
4872b4363aSmrg# The goal of this file is to map all the various variations of a given
4972b4363aSmrg# machine specification into a single specification in the form:
5072b4363aSmrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
5172b4363aSmrg# or in some cases, the newer four-part form:
5272b4363aSmrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
5372b4363aSmrg# It is wrong to echo any other type of specification.
5472b4363aSmrg
557ed541caSmrg# The "shellcheck disable" line above the timestamp inhibits complaints
567ed541caSmrg# about features and limitations of the classic Bourne shell that were
577ed541caSmrg# superseded or lifted in POSIX.  However, this script identifies a wide
587ed541caSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
597ed541caSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still
607ed541caSmrg# have a pre-POSIX /bin/sh.
617ed541caSmrg
6272b4363aSmrgme=`echo "$0" | sed -e 's,.*/,,'`
6372b4363aSmrg
6472b4363aSmrgusage="\
657ed541caSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
6672b4363aSmrg
6772b4363aSmrgCanonicalize a configuration name.
6872b4363aSmrg
697ed541caSmrgOptions:
7072b4363aSmrg  -h, --help         print this help, then exit
7172b4363aSmrg  -t, --time-stamp   print date of last modification, then exit
7272b4363aSmrg  -v, --version      print version number, then exit
7372b4363aSmrg
7472b4363aSmrgReport bugs and patches to <config-patches@gnu.org>."
7572b4363aSmrg
7672b4363aSmrgversion="\
7772b4363aSmrgGNU config.sub ($timestamp)
7872b4363aSmrg
797ed541caSmrgCopyright 1992-2021 Free Software Foundation, Inc.
8072b4363aSmrg
8172b4363aSmrgThis is free software; see the source for copying conditions.  There is NO
8272b4363aSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
8372b4363aSmrg
8472b4363aSmrghelp="
8572b4363aSmrgTry \`$me --help' for more information."
8672b4363aSmrg
8772b4363aSmrg# Parse command line
8872b4363aSmrgwhile test $# -gt 0 ; do
8972b4363aSmrg  case $1 in
9072b4363aSmrg    --time-stamp | --time* | -t )
9172b4363aSmrg       echo "$timestamp" ; exit ;;
9272b4363aSmrg    --version | -v )
9372b4363aSmrg       echo "$version" ; exit ;;
9472b4363aSmrg    --help | --h* | -h )
9572b4363aSmrg       echo "$usage"; exit ;;
9672b4363aSmrg    -- )     # Stop option processing
9772b4363aSmrg       shift; break ;;
9872b4363aSmrg    - )	# Use stdin as input.
9972b4363aSmrg       break ;;
10072b4363aSmrg    -* )
1017ed541caSmrg       echo "$me: invalid option $1$help" >&2
10272b4363aSmrg       exit 1 ;;
10372b4363aSmrg
10472b4363aSmrg    *local*)
10572b4363aSmrg       # First pass through any local machine types.
1067ed541caSmrg       echo "$1"
10772b4363aSmrg       exit ;;
10872b4363aSmrg
10972b4363aSmrg    * )
11072b4363aSmrg       break ;;
11172b4363aSmrg  esac
11272b4363aSmrgdone
11372b4363aSmrg
11472b4363aSmrgcase $# in
11572b4363aSmrg 0) echo "$me: missing argument$help" >&2
11672b4363aSmrg    exit 1;;
11772b4363aSmrg 1) ;;
11872b4363aSmrg *) echo "$me: too many arguments$help" >&2
11972b4363aSmrg    exit 1;;
12072b4363aSmrgesac
12172b4363aSmrg
1227ed541caSmrg# Split fields of configuration type
1237ed541caSmrg# shellcheck disable=SC2162
1247ed541caSmrgsaved_IFS=$IFS
1257ed541caSmrgIFS="-" read field1 field2 field3 field4 <<EOF
1267ed541caSmrg$1
1277ed541caSmrgEOF
1287ed541caSmrgIFS=$saved_IFS
12972b4363aSmrg
1307ed541caSmrg# Separate into logical components for further validation
1317ed541caSmrgcase $1 in
1327ed541caSmrg	*-*-*-*-*)
1337ed541caSmrg		echo Invalid configuration \`"$1"\': more than four components >&2
1347ed541caSmrg		exit 1
13572b4363aSmrg		;;
1367ed541caSmrg	*-*-*-*)
1377ed541caSmrg		basic_machine=$field1-$field2
1387ed541caSmrg		basic_os=$field3-$field4
13972b4363aSmrg		;;
1407ed541caSmrg	*-*-*)
1417ed541caSmrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
1427ed541caSmrg		# parts
1437ed541caSmrg		maybe_os=$field2-$field3
1447ed541caSmrg		case $maybe_os in
1457ed541caSmrg			nto-qnx* | linux-* | uclinux-uclibc* \
1467ed541caSmrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
1477ed541caSmrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
1487ed541caSmrg			| storm-chaos* | os2-emx* | rtmk-nova*)
1497ed541caSmrg				basic_machine=$field1
1507ed541caSmrg				basic_os=$maybe_os
1517ed541caSmrg				;;
1527ed541caSmrg			android-linux)
1537ed541caSmrg				basic_machine=$field1-unknown
1547ed541caSmrg				basic_os=linux-android
1557ed541caSmrg				;;
1567ed541caSmrg			*)
1577ed541caSmrg				basic_machine=$field1-$field2
1587ed541caSmrg				basic_os=$field3
1597ed541caSmrg				;;
1607ed541caSmrg		esac
16172b4363aSmrg		;;
1627ed541caSmrg	*-*)
1637ed541caSmrg		# A lone config we happen to match not fitting any pattern
1647ed541caSmrg		case $field1-$field2 in
1657ed541caSmrg			decstation-3100)
1667ed541caSmrg				basic_machine=mips-dec
1677ed541caSmrg				basic_os=
1687ed541caSmrg				;;
1697ed541caSmrg			*-*)
1707ed541caSmrg				# Second component is usually, but not always the OS
1717ed541caSmrg				case $field2 in
1727ed541caSmrg					# Prevent following clause from handling this valid os
1737ed541caSmrg					sun*os*)
1747ed541caSmrg						basic_machine=$field1
1757ed541caSmrg						basic_os=$field2
1767ed541caSmrg						;;
1777ed541caSmrg					zephyr*)
1787ed541caSmrg						basic_machine=$field1-unknown
1797ed541caSmrg						basic_os=$field2
1807ed541caSmrg						;;
1817ed541caSmrg					# Manufacturers
1827ed541caSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
1837ed541caSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
1847ed541caSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
1857ed541caSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
1867ed541caSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
1877ed541caSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
1887ed541caSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
1897ed541caSmrg					| microblaze* | sim | cisco \
1907ed541caSmrg					| oki | wec | wrs | winbond)
1917ed541caSmrg						basic_machine=$field1-$field2
1927ed541caSmrg						basic_os=
1937ed541caSmrg						;;
1947ed541caSmrg					*)
1957ed541caSmrg						basic_machine=$field1
1967ed541caSmrg						basic_os=$field2
1977ed541caSmrg						;;
1987ed541caSmrg				esac
1997ed541caSmrg			;;
2007ed541caSmrg		esac
20172b4363aSmrg		;;
2027ed541caSmrg	*)
2037ed541caSmrg		# Convert single-component short-hands not valid as part of
2047ed541caSmrg		# multi-component configurations.
2057ed541caSmrg		case $field1 in
2067ed541caSmrg			386bsd)
2077ed541caSmrg				basic_machine=i386-pc
2087ed541caSmrg				basic_os=bsd
2097ed541caSmrg				;;
2107ed541caSmrg			a29khif)
2117ed541caSmrg				basic_machine=a29k-amd
2127ed541caSmrg				basic_os=udi
2137ed541caSmrg				;;
2147ed541caSmrg			adobe68k)
2157ed541caSmrg				basic_machine=m68010-adobe
2167ed541caSmrg				basic_os=scout
2177ed541caSmrg				;;
2187ed541caSmrg			alliant)
2197ed541caSmrg				basic_machine=fx80-alliant
2207ed541caSmrg				basic_os=
2217ed541caSmrg				;;
2227ed541caSmrg			altos | altos3068)
2237ed541caSmrg				basic_machine=m68k-altos
2247ed541caSmrg				basic_os=
2257ed541caSmrg				;;
2267ed541caSmrg			am29k)
2277ed541caSmrg				basic_machine=a29k-none
2287ed541caSmrg				basic_os=bsd
2297ed541caSmrg				;;
2307ed541caSmrg			amdahl)
2317ed541caSmrg				basic_machine=580-amdahl
2327ed541caSmrg				basic_os=sysv
2337ed541caSmrg				;;
2347ed541caSmrg			amiga)
2357ed541caSmrg				basic_machine=m68k-unknown
2367ed541caSmrg				basic_os=
2377ed541caSmrg				;;
2387ed541caSmrg			amigaos | amigados)
2397ed541caSmrg				basic_machine=m68k-unknown
2407ed541caSmrg				basic_os=amigaos
2417ed541caSmrg				;;
2427ed541caSmrg			amigaunix | amix)
2437ed541caSmrg				basic_machine=m68k-unknown
2447ed541caSmrg				basic_os=sysv4
2457ed541caSmrg				;;
2467ed541caSmrg			apollo68)
2477ed541caSmrg				basic_machine=m68k-apollo
2487ed541caSmrg				basic_os=sysv
2497ed541caSmrg				;;
2507ed541caSmrg			apollo68bsd)
2517ed541caSmrg				basic_machine=m68k-apollo
2527ed541caSmrg				basic_os=bsd
2537ed541caSmrg				;;
2547ed541caSmrg			aros)
2557ed541caSmrg				basic_machine=i386-pc
2567ed541caSmrg				basic_os=aros
2577ed541caSmrg				;;
2587ed541caSmrg			aux)
2597ed541caSmrg				basic_machine=m68k-apple
2607ed541caSmrg				basic_os=aux
2617ed541caSmrg				;;
2627ed541caSmrg			balance)
2637ed541caSmrg				basic_machine=ns32k-sequent
2647ed541caSmrg				basic_os=dynix
2657ed541caSmrg				;;
2667ed541caSmrg			blackfin)
2677ed541caSmrg				basic_machine=bfin-unknown
2687ed541caSmrg				basic_os=linux
2697ed541caSmrg				;;
2707ed541caSmrg			cegcc)
2717ed541caSmrg				basic_machine=arm-unknown
2727ed541caSmrg				basic_os=cegcc
2737ed541caSmrg				;;
2747ed541caSmrg			convex-c1)
2757ed541caSmrg				basic_machine=c1-convex
2767ed541caSmrg				basic_os=bsd
2777ed541caSmrg				;;
2787ed541caSmrg			convex-c2)
2797ed541caSmrg				basic_machine=c2-convex
2807ed541caSmrg				basic_os=bsd
2817ed541caSmrg				;;
2827ed541caSmrg			convex-c32)
2837ed541caSmrg				basic_machine=c32-convex
2847ed541caSmrg				basic_os=bsd
2857ed541caSmrg				;;
2867ed541caSmrg			convex-c34)
2877ed541caSmrg				basic_machine=c34-convex
2887ed541caSmrg				basic_os=bsd
2897ed541caSmrg				;;
2907ed541caSmrg			convex-c38)
2917ed541caSmrg				basic_machine=c38-convex
2927ed541caSmrg				basic_os=bsd
2937ed541caSmrg				;;
2947ed541caSmrg			cray)
2957ed541caSmrg				basic_machine=j90-cray
2967ed541caSmrg				basic_os=unicos
2977ed541caSmrg				;;
2987ed541caSmrg			crds | unos)
2997ed541caSmrg				basic_machine=m68k-crds
3007ed541caSmrg				basic_os=
3017ed541caSmrg				;;
3027ed541caSmrg			da30)
3037ed541caSmrg				basic_machine=m68k-da30
3047ed541caSmrg				basic_os=
3057ed541caSmrg				;;
3067ed541caSmrg			decstation | pmax | pmin | dec3100 | decstatn)
3077ed541caSmrg				basic_machine=mips-dec
3087ed541caSmrg				basic_os=
3097ed541caSmrg				;;
3107ed541caSmrg			delta88)
3117ed541caSmrg				basic_machine=m88k-motorola
3127ed541caSmrg				basic_os=sysv3
3137ed541caSmrg				;;
3147ed541caSmrg			dicos)
3157ed541caSmrg				basic_machine=i686-pc
3167ed541caSmrg				basic_os=dicos
3177ed541caSmrg				;;
3187ed541caSmrg			djgpp)
3197ed541caSmrg				basic_machine=i586-pc
3207ed541caSmrg				basic_os=msdosdjgpp
3217ed541caSmrg				;;
3227ed541caSmrg			ebmon29k)
3237ed541caSmrg				basic_machine=a29k-amd
3247ed541caSmrg				basic_os=ebmon
3257ed541caSmrg				;;
3267ed541caSmrg			es1800 | OSE68k | ose68k | ose | OSE)
3277ed541caSmrg				basic_machine=m68k-ericsson
3287ed541caSmrg				basic_os=ose
3297ed541caSmrg				;;
3307ed541caSmrg			gmicro)
3317ed541caSmrg				basic_machine=tron-gmicro
3327ed541caSmrg				basic_os=sysv
3337ed541caSmrg				;;
3347ed541caSmrg			go32)
3357ed541caSmrg				basic_machine=i386-pc
3367ed541caSmrg				basic_os=go32
3377ed541caSmrg				;;
3387ed541caSmrg			h8300hms)
3397ed541caSmrg				basic_machine=h8300-hitachi
3407ed541caSmrg				basic_os=hms
3417ed541caSmrg				;;
3427ed541caSmrg			h8300xray)
3437ed541caSmrg				basic_machine=h8300-hitachi
3447ed541caSmrg				basic_os=xray
3457ed541caSmrg				;;
3467ed541caSmrg			h8500hms)
3477ed541caSmrg				basic_machine=h8500-hitachi
3487ed541caSmrg				basic_os=hms
3497ed541caSmrg				;;
3507ed541caSmrg			harris)
3517ed541caSmrg				basic_machine=m88k-harris
3527ed541caSmrg				basic_os=sysv3
3537ed541caSmrg				;;
3547ed541caSmrg			hp300 | hp300hpux)
3557ed541caSmrg				basic_machine=m68k-hp
3567ed541caSmrg				basic_os=hpux
3577ed541caSmrg				;;
3587ed541caSmrg			hp300bsd)
3597ed541caSmrg				basic_machine=m68k-hp
3607ed541caSmrg				basic_os=bsd
3617ed541caSmrg				;;
3627ed541caSmrg			hppaosf)
3637ed541caSmrg				basic_machine=hppa1.1-hp
3647ed541caSmrg				basic_os=osf
3657ed541caSmrg				;;
3667ed541caSmrg			hppro)
3677ed541caSmrg				basic_machine=hppa1.1-hp
3687ed541caSmrg				basic_os=proelf
3697ed541caSmrg				;;
3707ed541caSmrg			i386mach)
3717ed541caSmrg				basic_machine=i386-mach
3727ed541caSmrg				basic_os=mach
3737ed541caSmrg				;;
3747ed541caSmrg			isi68 | isi)
3757ed541caSmrg				basic_machine=m68k-isi
3767ed541caSmrg				basic_os=sysv
3777ed541caSmrg				;;
3787ed541caSmrg			m68knommu)
3797ed541caSmrg				basic_machine=m68k-unknown
3807ed541caSmrg				basic_os=linux
3817ed541caSmrg				;;
3827ed541caSmrg			magnum | m3230)
3837ed541caSmrg				basic_machine=mips-mips
3847ed541caSmrg				basic_os=sysv
3857ed541caSmrg				;;
3867ed541caSmrg			merlin)
3877ed541caSmrg				basic_machine=ns32k-utek
3887ed541caSmrg				basic_os=sysv
3897ed541caSmrg				;;
3907ed541caSmrg			mingw64)
3917ed541caSmrg				basic_machine=x86_64-pc
3927ed541caSmrg				basic_os=mingw64
3937ed541caSmrg				;;
3947ed541caSmrg			mingw32)
3957ed541caSmrg				basic_machine=i686-pc
3967ed541caSmrg				basic_os=mingw32
3977ed541caSmrg				;;
3987ed541caSmrg			mingw32ce)
3997ed541caSmrg				basic_machine=arm-unknown
4007ed541caSmrg				basic_os=mingw32ce
4017ed541caSmrg				;;
4027ed541caSmrg			monitor)
4037ed541caSmrg				basic_machine=m68k-rom68k
4047ed541caSmrg				basic_os=coff
4057ed541caSmrg				;;
4067ed541caSmrg			morphos)
4077ed541caSmrg				basic_machine=powerpc-unknown
4087ed541caSmrg				basic_os=morphos
4097ed541caSmrg				;;
4107ed541caSmrg			moxiebox)
4117ed541caSmrg				basic_machine=moxie-unknown
4127ed541caSmrg				basic_os=moxiebox
4137ed541caSmrg				;;
4147ed541caSmrg			msdos)
4157ed541caSmrg				basic_machine=i386-pc
4167ed541caSmrg				basic_os=msdos
4177ed541caSmrg				;;
4187ed541caSmrg			msys)
4197ed541caSmrg				basic_machine=i686-pc
4207ed541caSmrg				basic_os=msys
4217ed541caSmrg				;;
4227ed541caSmrg			mvs)
4237ed541caSmrg				basic_machine=i370-ibm
4247ed541caSmrg				basic_os=mvs
4257ed541caSmrg				;;
4267ed541caSmrg			nacl)
4277ed541caSmrg				basic_machine=le32-unknown
4287ed541caSmrg				basic_os=nacl
4297ed541caSmrg				;;
4307ed541caSmrg			ncr3000)
4317ed541caSmrg				basic_machine=i486-ncr
4327ed541caSmrg				basic_os=sysv4
4337ed541caSmrg				;;
4347ed541caSmrg			netbsd386)
4357ed541caSmrg				basic_machine=i386-pc
4367ed541caSmrg				basic_os=netbsd
4377ed541caSmrg				;;
4387ed541caSmrg			netwinder)
4397ed541caSmrg				basic_machine=armv4l-rebel
4407ed541caSmrg				basic_os=linux
4417ed541caSmrg				;;
4427ed541caSmrg			news | news700 | news800 | news900)
4437ed541caSmrg				basic_machine=m68k-sony
4447ed541caSmrg				basic_os=newsos
4457ed541caSmrg				;;
4467ed541caSmrg			news1000)
4477ed541caSmrg				basic_machine=m68030-sony
4487ed541caSmrg				basic_os=newsos
4497ed541caSmrg				;;
4507ed541caSmrg			necv70)
4517ed541caSmrg				basic_machine=v70-nec
4527ed541caSmrg				basic_os=sysv
4537ed541caSmrg				;;
4547ed541caSmrg			nh3000)
4557ed541caSmrg				basic_machine=m68k-harris
4567ed541caSmrg				basic_os=cxux
4577ed541caSmrg				;;
4587ed541caSmrg			nh[45]000)
4597ed541caSmrg				basic_machine=m88k-harris
4607ed541caSmrg				basic_os=cxux
4617ed541caSmrg				;;
4627ed541caSmrg			nindy960)
4637ed541caSmrg				basic_machine=i960-intel
4647ed541caSmrg				basic_os=nindy
4657ed541caSmrg				;;
4667ed541caSmrg			mon960)
4677ed541caSmrg				basic_machine=i960-intel
4687ed541caSmrg				basic_os=mon960
4697ed541caSmrg				;;
4707ed541caSmrg			nonstopux)
4717ed541caSmrg				basic_machine=mips-compaq
4727ed541caSmrg				basic_os=nonstopux
4737ed541caSmrg				;;
4747ed541caSmrg			os400)
4757ed541caSmrg				basic_machine=powerpc-ibm
4767ed541caSmrg				basic_os=os400
4777ed541caSmrg				;;
4787ed541caSmrg			OSE68000 | ose68000)
4797ed541caSmrg				basic_machine=m68000-ericsson
4807ed541caSmrg				basic_os=ose
4817ed541caSmrg				;;
4827ed541caSmrg			os68k)
4837ed541caSmrg				basic_machine=m68k-none
4847ed541caSmrg				basic_os=os68k
4857ed541caSmrg				;;
4867ed541caSmrg			paragon)
4877ed541caSmrg				basic_machine=i860-intel
4887ed541caSmrg				basic_os=osf
4897ed541caSmrg				;;
4907ed541caSmrg			parisc)
4917ed541caSmrg				basic_machine=hppa-unknown
4927ed541caSmrg				basic_os=linux
4937ed541caSmrg				;;
4947ed541caSmrg			psp)
4957ed541caSmrg				basic_machine=mipsallegrexel-sony
4967ed541caSmrg				basic_os=psp
4977ed541caSmrg				;;
4987ed541caSmrg			pw32)
4997ed541caSmrg				basic_machine=i586-unknown
5007ed541caSmrg				basic_os=pw32
5017ed541caSmrg				;;
5027ed541caSmrg			rdos | rdos64)
5037ed541caSmrg				basic_machine=x86_64-pc
5047ed541caSmrg				basic_os=rdos
5057ed541caSmrg				;;
5067ed541caSmrg			rdos32)
5077ed541caSmrg				basic_machine=i386-pc
5087ed541caSmrg				basic_os=rdos
5097ed541caSmrg				;;
5107ed541caSmrg			rom68k)
5117ed541caSmrg				basic_machine=m68k-rom68k
5127ed541caSmrg				basic_os=coff
5137ed541caSmrg				;;
5147ed541caSmrg			sa29200)
5157ed541caSmrg				basic_machine=a29k-amd
5167ed541caSmrg				basic_os=udi
5177ed541caSmrg				;;
5187ed541caSmrg			sei)
5197ed541caSmrg				basic_machine=mips-sei
5207ed541caSmrg				basic_os=seiux
5217ed541caSmrg				;;
5227ed541caSmrg			sequent)
5237ed541caSmrg				basic_machine=i386-sequent
5247ed541caSmrg				basic_os=
5257ed541caSmrg				;;
5267ed541caSmrg			sps7)
5277ed541caSmrg				basic_machine=m68k-bull
5287ed541caSmrg				basic_os=sysv2
5297ed541caSmrg				;;
5307ed541caSmrg			st2000)
5317ed541caSmrg				basic_machine=m68k-tandem
5327ed541caSmrg				basic_os=
5337ed541caSmrg				;;
5347ed541caSmrg			stratus)
5357ed541caSmrg				basic_machine=i860-stratus
5367ed541caSmrg				basic_os=sysv4
5377ed541caSmrg				;;
5387ed541caSmrg			sun2)
5397ed541caSmrg				basic_machine=m68000-sun
5407ed541caSmrg				basic_os=
5417ed541caSmrg				;;
5427ed541caSmrg			sun2os3)
5437ed541caSmrg				basic_machine=m68000-sun
5447ed541caSmrg				basic_os=sunos3
5457ed541caSmrg				;;
5467ed541caSmrg			sun2os4)
5477ed541caSmrg				basic_machine=m68000-sun
5487ed541caSmrg				basic_os=sunos4
5497ed541caSmrg				;;
5507ed541caSmrg			sun3)
5517ed541caSmrg				basic_machine=m68k-sun
5527ed541caSmrg				basic_os=
5537ed541caSmrg				;;
5547ed541caSmrg			sun3os3)
5557ed541caSmrg				basic_machine=m68k-sun
5567ed541caSmrg				basic_os=sunos3
5577ed541caSmrg				;;
5587ed541caSmrg			sun3os4)
5597ed541caSmrg				basic_machine=m68k-sun
5607ed541caSmrg				basic_os=sunos4
5617ed541caSmrg				;;
5627ed541caSmrg			sun4)
5637ed541caSmrg				basic_machine=sparc-sun
5647ed541caSmrg				basic_os=
5657ed541caSmrg				;;
5667ed541caSmrg			sun4os3)
5677ed541caSmrg				basic_machine=sparc-sun
5687ed541caSmrg				basic_os=sunos3
5697ed541caSmrg				;;
5707ed541caSmrg			sun4os4)
5717ed541caSmrg				basic_machine=sparc-sun
5727ed541caSmrg				basic_os=sunos4
5737ed541caSmrg				;;
5747ed541caSmrg			sun4sol2)
5757ed541caSmrg				basic_machine=sparc-sun
5767ed541caSmrg				basic_os=solaris2
5777ed541caSmrg				;;
5787ed541caSmrg			sun386 | sun386i | roadrunner)
5797ed541caSmrg				basic_machine=i386-sun
5807ed541caSmrg				basic_os=
5817ed541caSmrg				;;
5827ed541caSmrg			sv1)
5837ed541caSmrg				basic_machine=sv1-cray
5847ed541caSmrg				basic_os=unicos
5857ed541caSmrg				;;
5867ed541caSmrg			symmetry)
5877ed541caSmrg				basic_machine=i386-sequent
5887ed541caSmrg				basic_os=dynix
5897ed541caSmrg				;;
5907ed541caSmrg			t3e)
5917ed541caSmrg				basic_machine=alphaev5-cray
5927ed541caSmrg				basic_os=unicos
5937ed541caSmrg				;;
5947ed541caSmrg			t90)
5957ed541caSmrg				basic_machine=t90-cray
5967ed541caSmrg				basic_os=unicos
5977ed541caSmrg				;;
5987ed541caSmrg			toad1)
5997ed541caSmrg				basic_machine=pdp10-xkl
6007ed541caSmrg				basic_os=tops20
6017ed541caSmrg				;;
6027ed541caSmrg			tpf)
6037ed541caSmrg				basic_machine=s390x-ibm
6047ed541caSmrg				basic_os=tpf
6057ed541caSmrg				;;
6067ed541caSmrg			udi29k)
6077ed541caSmrg				basic_machine=a29k-amd
6087ed541caSmrg				basic_os=udi
6097ed541caSmrg				;;
6107ed541caSmrg			ultra3)
6117ed541caSmrg				basic_machine=a29k-nyu
6127ed541caSmrg				basic_os=sym1
6137ed541caSmrg				;;
6147ed541caSmrg			v810 | necv810)
6157ed541caSmrg				basic_machine=v810-nec
6167ed541caSmrg				basic_os=none
6177ed541caSmrg				;;
6187ed541caSmrg			vaxv)
6197ed541caSmrg				basic_machine=vax-dec
6207ed541caSmrg				basic_os=sysv
6217ed541caSmrg				;;
6227ed541caSmrg			vms)
6237ed541caSmrg				basic_machine=vax-dec
6247ed541caSmrg				basic_os=vms
6257ed541caSmrg				;;
6267ed541caSmrg			vsta)
6277ed541caSmrg				basic_machine=i386-pc
6287ed541caSmrg				basic_os=vsta
6297ed541caSmrg				;;
6307ed541caSmrg			vxworks960)
6317ed541caSmrg				basic_machine=i960-wrs
6327ed541caSmrg				basic_os=vxworks
6337ed541caSmrg				;;
6347ed541caSmrg			vxworks68)
6357ed541caSmrg				basic_machine=m68k-wrs
6367ed541caSmrg				basic_os=vxworks
6377ed541caSmrg				;;
6387ed541caSmrg			vxworks29k)
6397ed541caSmrg				basic_machine=a29k-wrs
6407ed541caSmrg				basic_os=vxworks
6417ed541caSmrg				;;
6427ed541caSmrg			xbox)
6437ed541caSmrg				basic_machine=i686-pc
6447ed541caSmrg				basic_os=mingw32
6457ed541caSmrg				;;
6467ed541caSmrg			ymp)
6477ed541caSmrg				basic_machine=ymp-cray
6487ed541caSmrg				basic_os=unicos
6497ed541caSmrg				;;
6507ed541caSmrg			*)
6517ed541caSmrg				basic_machine=$1
6527ed541caSmrg				basic_os=
6537ed541caSmrg				;;
6547ed541caSmrg		esac
65572b4363aSmrg		;;
65672b4363aSmrgesac
65772b4363aSmrg
6587ed541caSmrg# Decode 1-component or ad-hoc basic machines
65972b4363aSmrgcase $basic_machine in
6607ed541caSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
6617ed541caSmrg	# some cases the only manufacturer, in others, it is the most popular.
6627ed541caSmrg	w89k)
6637ed541caSmrg		cpu=hppa1.1
6647ed541caSmrg		vendor=winbond
66533dddc75Smrg		;;
6667ed541caSmrg	op50n)
6677ed541caSmrg		cpu=hppa1.1
6687ed541caSmrg		vendor=oki
66972b4363aSmrg		;;
6707ed541caSmrg	op60c)
6717ed541caSmrg		cpu=hppa1.1
6727ed541caSmrg		vendor=oki
67372b4363aSmrg		;;
6747ed541caSmrg	ibm*)
6757ed541caSmrg		cpu=i370
6767ed541caSmrg		vendor=ibm
67772b4363aSmrg		;;
6787ed541caSmrg	orion105)
6797ed541caSmrg		cpu=clipper
6807ed541caSmrg		vendor=highlevel
68133dddc75Smrg		;;
6827ed541caSmrg	mac | mpw | mac-mpw)
6837ed541caSmrg		cpu=m68k
6847ed541caSmrg		vendor=apple
68533dddc75Smrg		;;
6867ed541caSmrg	pmac | pmac-mpw)
6877ed541caSmrg		cpu=powerpc
6887ed541caSmrg		vendor=apple
68933dddc75Smrg		;;
69033dddc75Smrg
69172b4363aSmrg	# Recognize the various machine names and aliases which stand
69272b4363aSmrg	# for a CPU type and a company and sometimes even an OS.
69372b4363aSmrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
6947ed541caSmrg		cpu=m68000
6957ed541caSmrg		vendor=att
69672b4363aSmrg		;;
69772b4363aSmrg	3b*)
6987ed541caSmrg		cpu=we32k
6997ed541caSmrg		vendor=att
700dd77ae96Smrg		;;
70108e312fdSmrg	bluegene*)
7027ed541caSmrg		cpu=powerpc
7037ed541caSmrg		vendor=ibm
7047ed541caSmrg		basic_os=cnk
70572b4363aSmrg		;;
70672b4363aSmrg	decsystem10* | dec10*)
7077ed541caSmrg		cpu=pdp10
7087ed541caSmrg		vendor=dec
7097ed541caSmrg		basic_os=tops10
71072b4363aSmrg		;;
71172b4363aSmrg	decsystem20* | dec20*)
7127ed541caSmrg		cpu=pdp10
7137ed541caSmrg		vendor=dec
7147ed541caSmrg		basic_os=tops20
71572b4363aSmrg		;;
71672b4363aSmrg	delta | 3300 | motorola-3300 | motorola-delta \
71772b4363aSmrg	      | 3300-motorola | delta-motorola)
7187ed541caSmrg		cpu=m68k
7197ed541caSmrg		vendor=motorola
72072b4363aSmrg		;;
7217ed541caSmrg	dpx2*)
7227ed541caSmrg		cpu=m68k
7237ed541caSmrg		vendor=bull
7247ed541caSmrg		basic_os=sysv3
72572b4363aSmrg		;;
72672b4363aSmrg	encore | umax | mmax)
7277ed541caSmrg		cpu=ns32k
7287ed541caSmrg		vendor=encore
72972b4363aSmrg		;;
7307ed541caSmrg	elxsi)
7317ed541caSmrg		cpu=elxsi
7327ed541caSmrg		vendor=elxsi
7337ed541caSmrg		basic_os=${basic_os:-bsd}
73472b4363aSmrg		;;
73572b4363aSmrg	fx2800)
7367ed541caSmrg		cpu=i860
7377ed541caSmrg		vendor=alliant
73872b4363aSmrg		;;
73972b4363aSmrg	genix)
7407ed541caSmrg		cpu=ns32k
7417ed541caSmrg		vendor=ns
74272b4363aSmrg		;;
74372b4363aSmrg	h3050r* | hiux*)
7447ed541caSmrg		cpu=hppa1.1
7457ed541caSmrg		vendor=hitachi
7467ed541caSmrg		basic_os=hiuxwe2
74772b4363aSmrg		;;
74872b4363aSmrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
7497ed541caSmrg		cpu=hppa1.0
7507ed541caSmrg		vendor=hp
75172b4363aSmrg		;;
75272b4363aSmrg	hp9k2[0-9][0-9] | hp9k31[0-9])
7537ed541caSmrg		cpu=m68000
7547ed541caSmrg		vendor=hp
75572b4363aSmrg		;;
75672b4363aSmrg	hp9k3[2-9][0-9])
7577ed541caSmrg		cpu=m68k
7587ed541caSmrg		vendor=hp
75972b4363aSmrg		;;
76072b4363aSmrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
7617ed541caSmrg		cpu=hppa1.0
7627ed541caSmrg		vendor=hp
76372b4363aSmrg		;;
76472b4363aSmrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
7657ed541caSmrg		cpu=hppa1.1
7667ed541caSmrg		vendor=hp
76772b4363aSmrg		;;
76872b4363aSmrg	hp9k78[0-9] | hp78[0-9])
76972b4363aSmrg		# FIXME: really hppa2.0-hp
7707ed541caSmrg		cpu=hppa1.1
7717ed541caSmrg		vendor=hp
77272b4363aSmrg		;;
77372b4363aSmrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
77472b4363aSmrg		# FIXME: really hppa2.0-hp
7757ed541caSmrg		cpu=hppa1.1
7767ed541caSmrg		vendor=hp
77772b4363aSmrg		;;
77872b4363aSmrg	hp9k8[0-9][13679] | hp8[0-9][13679])
7797ed541caSmrg		cpu=hppa1.1
7807ed541caSmrg		vendor=hp
78172b4363aSmrg		;;
78272b4363aSmrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
7837ed541caSmrg		cpu=hppa1.0
7847ed541caSmrg		vendor=hp
78572b4363aSmrg		;;
78672b4363aSmrg	i*86v32)
7877ed541caSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7887ed541caSmrg		vendor=pc
7897ed541caSmrg		basic_os=sysv32
79072b4363aSmrg		;;
79172b4363aSmrg	i*86v4*)
7927ed541caSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7937ed541caSmrg		vendor=pc
7947ed541caSmrg		basic_os=sysv4
79572b4363aSmrg		;;
79672b4363aSmrg	i*86v)
7977ed541caSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7987ed541caSmrg		vendor=pc
7997ed541caSmrg		basic_os=sysv
80072b4363aSmrg		;;
80172b4363aSmrg	i*86sol2)
8027ed541caSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
8037ed541caSmrg		vendor=pc
8047ed541caSmrg		basic_os=solaris2
80572b4363aSmrg		;;
8067ed541caSmrg	j90 | j90-cray)
8077ed541caSmrg		cpu=j90
8087ed541caSmrg		vendor=cray
8097ed541caSmrg		basic_os=${basic_os:-unicos}
81072b4363aSmrg		;;
81172b4363aSmrg	iris | iris4d)
8127ed541caSmrg		cpu=mips
8137ed541caSmrg		vendor=sgi
8147ed541caSmrg		case $basic_os in
8157ed541caSmrg		    irix*)
81672b4363aSmrg			;;
81772b4363aSmrg		    *)
8187ed541caSmrg			basic_os=irix4
81972b4363aSmrg			;;
82072b4363aSmrg		esac
82172b4363aSmrg		;;
82272b4363aSmrg	miniframe)
8237ed541caSmrg		cpu=m68000
8247ed541caSmrg		vendor=convergent
82533dddc75Smrg		;;
8267ed541caSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
8277ed541caSmrg		cpu=m68k
8287ed541caSmrg		vendor=atari
8297ed541caSmrg		basic_os=mint
83072b4363aSmrg		;;
83172b4363aSmrg	news-3600 | risc-news)
8327ed541caSmrg		cpu=mips
8337ed541caSmrg		vendor=sony
8347ed541caSmrg		basic_os=newsos
8357ed541caSmrg		;;
8367ed541caSmrg	next | m*-next)
8377ed541caSmrg		cpu=m68k
8387ed541caSmrg		vendor=next
8397ed541caSmrg		case $basic_os in
8407ed541caSmrg		    openstep*)
8417ed541caSmrg		        ;;
8427ed541caSmrg		    nextstep*)
84372b4363aSmrg			;;
8447ed541caSmrg		    ns2*)
8457ed541caSmrg		      basic_os=nextstep2
84672b4363aSmrg			;;
84772b4363aSmrg		    *)
8487ed541caSmrg		      basic_os=nextstep3
84972b4363aSmrg			;;
85072b4363aSmrg		esac
85172b4363aSmrg		;;
85272b4363aSmrg	np1)
8537ed541caSmrg		cpu=np1
8547ed541caSmrg		vendor=gould
85572b4363aSmrg		;;
85672b4363aSmrg	op50n-* | op60c-*)
8577ed541caSmrg		cpu=hppa1.1
8587ed541caSmrg		vendor=oki
8597ed541caSmrg		basic_os=proelf
86072b4363aSmrg		;;
86172b4363aSmrg	pa-hitachi)
8627ed541caSmrg		cpu=hppa1.1
8637ed541caSmrg		vendor=hitachi
8647ed541caSmrg		basic_os=hiuxwe2
865dd77ae96Smrg		;;
86672b4363aSmrg	pbd)
8677ed541caSmrg		cpu=sparc
8687ed541caSmrg		vendor=tti
86972b4363aSmrg		;;
87072b4363aSmrg	pbb)
8717ed541caSmrg		cpu=m68k
8727ed541caSmrg		vendor=tti
87372b4363aSmrg		;;
8747ed541caSmrg	pc532)
8757ed541caSmrg		cpu=ns32k
8767ed541caSmrg		vendor=pc532
87772b4363aSmrg		;;
87872b4363aSmrg	pn)
8797ed541caSmrg		cpu=pn
8807ed541caSmrg		vendor=gould
88172b4363aSmrg		;;
8827ed541caSmrg	power)
8837ed541caSmrg		cpu=power
8847ed541caSmrg		vendor=ibm
88572b4363aSmrg		;;
88672b4363aSmrg	ps2)
8877ed541caSmrg		cpu=i386
8887ed541caSmrg		vendor=ibm
88972b4363aSmrg		;;
89072b4363aSmrg	rm[46]00)
8917ed541caSmrg		cpu=mips
8927ed541caSmrg		vendor=siemens
89372b4363aSmrg		;;
89472b4363aSmrg	rtpc | rtpc-*)
8957ed541caSmrg		cpu=romp
8967ed541caSmrg		vendor=ibm
89772b4363aSmrg		;;
8987ed541caSmrg	sde)
8997ed541caSmrg		cpu=mipsisa32
9007ed541caSmrg		vendor=sde
9017ed541caSmrg		basic_os=${basic_os:-elf}
90272b4363aSmrg		;;
9037ed541caSmrg	simso-wrs)
9047ed541caSmrg		cpu=sparclite
9057ed541caSmrg		vendor=wrs
9067ed541caSmrg		basic_os=vxworks
90772b4363aSmrg		;;
9087ed541caSmrg	tower | tower-32)
9097ed541caSmrg		cpu=m68k
9107ed541caSmrg		vendor=ncr
91172b4363aSmrg		;;
9127ed541caSmrg	vpp*|vx|vx-*)
9137ed541caSmrg		cpu=f301
9147ed541caSmrg		vendor=fujitsu
91572b4363aSmrg		;;
9167ed541caSmrg	w65)
9177ed541caSmrg		cpu=w65
9187ed541caSmrg		vendor=wdc
91972b4363aSmrg		;;
9207ed541caSmrg	w89k-*)
9217ed541caSmrg		cpu=hppa1.1
9227ed541caSmrg		vendor=winbond
9237ed541caSmrg		basic_os=proelf
92472b4363aSmrg		;;
9257ed541caSmrg	none)
9267ed541caSmrg		cpu=none
9277ed541caSmrg		vendor=none
928dd77ae96Smrg		;;
9297ed541caSmrg	leon|leon[3-9])
9307ed541caSmrg		cpu=sparc
9317ed541caSmrg		vendor=$basic_machine
93272b4363aSmrg		;;
9337ed541caSmrg	leon-*|leon[3-9]-*)
9347ed541caSmrg		cpu=sparc
9357ed541caSmrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
93672b4363aSmrg		;;
9377ed541caSmrg
9387ed541caSmrg	*-*)
9397ed541caSmrg		# shellcheck disable=SC2162
9407ed541caSmrg		saved_IFS=$IFS
9417ed541caSmrg		IFS="-" read cpu vendor <<EOF
9427ed541caSmrg$basic_machine
9437ed541caSmrgEOF
9447ed541caSmrg		IFS=$saved_IFS
94572b4363aSmrg		;;
9467ed541caSmrg	# We use `pc' rather than `unknown'
9477ed541caSmrg	# because (1) that's what they normally are, and
9487ed541caSmrg	# (2) the word "unknown" tends to confuse beginning users.
9497ed541caSmrg	i*86 | x86_64)
9507ed541caSmrg		cpu=$basic_machine
9517ed541caSmrg		vendor=pc
95272b4363aSmrg		;;
9537ed541caSmrg	# These rules are duplicated from below for sake of the special case above;
9547ed541caSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
9557ed541caSmrg	pc98)
9567ed541caSmrg		cpu=i386
9577ed541caSmrg		vendor=pc
95872b4363aSmrg		;;
9597ed541caSmrg	x64 | amd64)
9607ed541caSmrg		cpu=x86_64
9617ed541caSmrg		vendor=pc
96272b4363aSmrg		;;
9637ed541caSmrg	# Recognize the basic CPU types without company name.
9647ed541caSmrg	*)
9657ed541caSmrg		cpu=$basic_machine
9667ed541caSmrg		vendor=unknown
96733dddc75Smrg		;;
9687ed541caSmrgesac
9697ed541caSmrg
9707ed541caSmrgunset -v basic_machine
9717ed541caSmrg
9727ed541caSmrg# Decode basic machines in the full and proper CPU-Company form.
9737ed541caSmrgcase $cpu-$vendor in
9747ed541caSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
9757ed541caSmrg	# some cases the only manufacturer, in others, it is the most popular.
9767ed541caSmrg	craynv-unknown)
9777ed541caSmrg		vendor=cray
9787ed541caSmrg		basic_os=${basic_os:-unicosmp}
97972b4363aSmrg		;;
9807ed541caSmrg	c90-unknown | c90-cray)
9817ed541caSmrg		vendor=cray
9827ed541caSmrg		basic_os=${Basic_os:-unicos}
98372b4363aSmrg		;;
9847ed541caSmrg	fx80-unknown)
9857ed541caSmrg		vendor=alliant
98672b4363aSmrg		;;
9877ed541caSmrg	romp-unknown)
9887ed541caSmrg		vendor=ibm
98972b4363aSmrg		;;
9907ed541caSmrg	mmix-unknown)
9917ed541caSmrg		vendor=knuth
99272b4363aSmrg		;;
9937ed541caSmrg	microblaze-unknown | microblazeel-unknown)
9947ed541caSmrg		vendor=xilinx
99572b4363aSmrg		;;
9967ed541caSmrg	rs6000-unknown)
9977ed541caSmrg		vendor=ibm
99872b4363aSmrg		;;
9997ed541caSmrg	vax-unknown)
10007ed541caSmrg		vendor=dec
100172b4363aSmrg		;;
10027ed541caSmrg	pdp11-unknown)
10037ed541caSmrg		vendor=dec
100472b4363aSmrg		;;
10057ed541caSmrg	we32k-unknown)
10067ed541caSmrg		vendor=att
100772b4363aSmrg		;;
10087ed541caSmrg	cydra-unknown)
10097ed541caSmrg		vendor=cydrome
101072b4363aSmrg		;;
10117ed541caSmrg	i370-ibm*)
10127ed541caSmrg		vendor=ibm
101372b4363aSmrg		;;
10147ed541caSmrg	orion-unknown)
10157ed541caSmrg		vendor=highlevel
101672b4363aSmrg		;;
10177ed541caSmrg	xps-unknown | xps100-unknown)
10187ed541caSmrg		cpu=xps100
10197ed541caSmrg		vendor=honeywell
102072b4363aSmrg		;;
10217ed541caSmrg
10227ed541caSmrg	# Here we normalize CPU types with a missing or matching vendor
10237ed541caSmrg	dpx20-unknown | dpx20-bull)
10247ed541caSmrg		cpu=rs6000
10257ed541caSmrg		vendor=bull
10267ed541caSmrg		basic_os=${basic_os:-bosx}
102772b4363aSmrg		;;
10287ed541caSmrg
10297ed541caSmrg	# Here we normalize CPU types irrespective of the vendor
10307ed541caSmrg	amd64-*)
10317ed541caSmrg		cpu=x86_64
1032dd77ae96Smrg		;;
10337ed541caSmrg	blackfin-*)
10347ed541caSmrg		cpu=bfin
10357ed541caSmrg		basic_os=linux
103672b4363aSmrg		;;
10377ed541caSmrg	c54x-*)
10387ed541caSmrg		cpu=tic54x
103972b4363aSmrg		;;
10407ed541caSmrg	c55x-*)
10417ed541caSmrg		cpu=tic55x
104272b4363aSmrg		;;
10437ed541caSmrg	c6x-*)
10447ed541caSmrg		cpu=tic6x
104572b4363aSmrg		;;
10467ed541caSmrg	e500v[12]-*)
10477ed541caSmrg		cpu=powerpc
10487ed541caSmrg		basic_os=${basic_os}"spe"
104972b4363aSmrg		;;
10507ed541caSmrg	mips3*-*)
10517ed541caSmrg		cpu=mips64
105272b4363aSmrg		;;
10537ed541caSmrg	ms1-*)
10547ed541caSmrg		cpu=mt
105572b4363aSmrg		;;
10567ed541caSmrg	m68knommu-*)
10577ed541caSmrg		cpu=m68k
10587ed541caSmrg		basic_os=linux
105972b4363aSmrg		;;
10607ed541caSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
10617ed541caSmrg		cpu=s12z
106272b4363aSmrg		;;
10637ed541caSmrg	openrisc-*)
10647ed541caSmrg		cpu=or32
106572b4363aSmrg		;;
10667ed541caSmrg	parisc-*)
10677ed541caSmrg		cpu=hppa
10687ed541caSmrg		basic_os=linux
106972b4363aSmrg		;;
10707ed541caSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
10717ed541caSmrg		cpu=i586
107272b4363aSmrg		;;
10737ed541caSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
10747ed541caSmrg		cpu=i686
107572b4363aSmrg		;;
10767ed541caSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
10777ed541caSmrg		cpu=i686
107872b4363aSmrg		;;
10797ed541caSmrg	pentium4-*)
10807ed541caSmrg		cpu=i786
108172b4363aSmrg		;;
10827ed541caSmrg	pc98-*)
10837ed541caSmrg		cpu=i386
108472b4363aSmrg		;;
10857ed541caSmrg	ppc-* | ppcbe-*)
10867ed541caSmrg		cpu=powerpc
108772b4363aSmrg		;;
10887ed541caSmrg	ppcle-* | powerpclittle-*)
10897ed541caSmrg		cpu=powerpcle
109072b4363aSmrg		;;
10917ed541caSmrg	ppc64-*)
10927ed541caSmrg		cpu=powerpc64
109333dddc75Smrg		;;
10947ed541caSmrg	ppc64le-* | powerpc64little-*)
10957ed541caSmrg		cpu=powerpc64le
109672b4363aSmrg		;;
10977ed541caSmrg	sb1-*)
10987ed541caSmrg		cpu=mipsisa64sb1
109972b4363aSmrg		;;
11007ed541caSmrg	sb1el-*)
11017ed541caSmrg		cpu=mipsisa64sb1el
1102dd77ae96Smrg		;;
11037ed541caSmrg	sh5e[lb]-*)
11047ed541caSmrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
110572b4363aSmrg		;;
11067ed541caSmrg	spur-*)
11077ed541caSmrg		cpu=spur
110872b4363aSmrg		;;
11097ed541caSmrg	strongarm-* | thumb-*)
11107ed541caSmrg		cpu=arm
111172b4363aSmrg		;;
11127ed541caSmrg	tx39-*)
11137ed541caSmrg		cpu=mipstx39
111472b4363aSmrg		;;
11157ed541caSmrg	tx39el-*)
11167ed541caSmrg		cpu=mipstx39el
111772b4363aSmrg		;;
11187ed541caSmrg	x64-*)
11197ed541caSmrg		cpu=x86_64
112072b4363aSmrg		;;
11217ed541caSmrg	xscale-* | xscalee[bl]-*)
11227ed541caSmrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
112372b4363aSmrg		;;
11247ed541caSmrg	arm64-*)
11257ed541caSmrg		cpu=aarch64
112672b4363aSmrg		;;
11277ed541caSmrg
11287ed541caSmrg	# Recognize the canonical CPU Types that limit and/or modify the
11297ed541caSmrg	# company names they are paired with.
11307ed541caSmrg	cr16-*)
11317ed541caSmrg		basic_os=${basic_os:-elf}
113272b4363aSmrg		;;
11337ed541caSmrg	crisv32-* | etraxfs*-*)
11347ed541caSmrg		cpu=crisv32
11357ed541caSmrg		vendor=axis
113672b4363aSmrg		;;
11377ed541caSmrg	cris-* | etrax*-*)
11387ed541caSmrg		cpu=cris
11397ed541caSmrg		vendor=axis
114072b4363aSmrg		;;
11417ed541caSmrg	crx-*)
11427ed541caSmrg		basic_os=${basic_os:-elf}
114372b4363aSmrg		;;
11447ed541caSmrg	neo-tandem)
11457ed541caSmrg		cpu=neo
11467ed541caSmrg		vendor=tandem
114772b4363aSmrg		;;
11487ed541caSmrg	nse-tandem)
11497ed541caSmrg		cpu=nse
11507ed541caSmrg		vendor=tandem
115172b4363aSmrg		;;
11527ed541caSmrg	nsr-tandem)
11537ed541caSmrg		cpu=nsr
11547ed541caSmrg		vendor=tandem
115572b4363aSmrg		;;
11567ed541caSmrg	nsv-tandem)
11577ed541caSmrg		cpu=nsv
11587ed541caSmrg		vendor=tandem
115972b4363aSmrg		;;
11607ed541caSmrg	nsx-tandem)
11617ed541caSmrg		cpu=nsx
11627ed541caSmrg		vendor=tandem
116372b4363aSmrg		;;
11647ed541caSmrg	mipsallegrexel-sony)
11657ed541caSmrg		cpu=mipsallegrexel
11667ed541caSmrg		vendor=sony
116772b4363aSmrg		;;
11687ed541caSmrg	tile*-*)
11697ed541caSmrg		basic_os=${basic_os:-linux-gnu}
117072b4363aSmrg		;;
11717ed541caSmrg
117272b4363aSmrg	*)
11737ed541caSmrg		# Recognize the canonical CPU types that are allowed with any
11747ed541caSmrg		# company name.
11757ed541caSmrg		case $cpu in
11767ed541caSmrg			1750a | 580 \
11777ed541caSmrg			| a29k \
11787ed541caSmrg			| aarch64 | aarch64_be \
11797ed541caSmrg			| abacus \
11807ed541caSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
11817ed541caSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
11827ed541caSmrg			| alphapca5[67] | alpha64pca5[67] \
11837ed541caSmrg			| am33_2.0 \
11847ed541caSmrg			| amdgcn \
11857ed541caSmrg			| arc | arceb | arc32 | arc64 \
11867ed541caSmrg			| arm | arm[lb]e | arme[lb] | armv* \
11877ed541caSmrg			| avr | avr32 \
11887ed541caSmrg			| asmjs \
11897ed541caSmrg			| ba \
11907ed541caSmrg			| be32 | be64 \
11917ed541caSmrg			| bfin | bpf | bs2000 \
11927ed541caSmrg			| c[123]* | c30 | [cjt]90 | c4x \
11937ed541caSmrg			| c8051 | clipper | craynv | csky | cydra \
11947ed541caSmrg			| d10v | d30v | dlx | dsp16xx \
11957ed541caSmrg			| e2k | elxsi | epiphany \
11967ed541caSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
11977ed541caSmrg			| h8300 | h8500 \
11987ed541caSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
11997ed541caSmrg			| hexagon \
12007ed541caSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
12017ed541caSmrg			| ip2k | iq2000 \
12027ed541caSmrg			| k1om \
12037ed541caSmrg			| le32 | le64 \
12047ed541caSmrg			| lm32 \
12057ed541caSmrg			| loongarch32 | loongarch64 | loongarchx32 \
12067ed541caSmrg			| m32c | m32r | m32rle \
12077ed541caSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
12087ed541caSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
12097ed541caSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
12107ed541caSmrg			| microblaze | microblazeel \
12117ed541caSmrg			| mips | mipsbe | mipseb | mipsel | mipsle \
12127ed541caSmrg			| mips16 \
12137ed541caSmrg			| mips64 | mips64eb | mips64el \
12147ed541caSmrg			| mips64octeon | mips64octeonel \
12157ed541caSmrg			| mips64orion | mips64orionel \
12167ed541caSmrg			| mips64r5900 | mips64r5900el \
12177ed541caSmrg			| mips64vr | mips64vrel \
12187ed541caSmrg			| mips64vr4100 | mips64vr4100el \
12197ed541caSmrg			| mips64vr4300 | mips64vr4300el \
12207ed541caSmrg			| mips64vr5000 | mips64vr5000el \
12217ed541caSmrg			| mips64vr5900 | mips64vr5900el \
12227ed541caSmrg			| mipsisa32 | mipsisa32el \
12237ed541caSmrg			| mipsisa32r2 | mipsisa32r2el \
12247ed541caSmrg			| mipsisa32r3 | mipsisa32r3el \
12257ed541caSmrg			| mipsisa32r5 | mipsisa32r5el \
12267ed541caSmrg			| mipsisa32r6 | mipsisa32r6el \
12277ed541caSmrg			| mipsisa64 | mipsisa64el \
12287ed541caSmrg			| mipsisa64r2 | mipsisa64r2el \
12297ed541caSmrg			| mipsisa64r3 | mipsisa64r3el \
12307ed541caSmrg			| mipsisa64r5 | mipsisa64r5el \
12317ed541caSmrg			| mipsisa64r6 | mipsisa64r6el \
12327ed541caSmrg			| mipsisa64sb1 | mipsisa64sb1el \
12337ed541caSmrg			| mipsisa64sr71k | mipsisa64sr71kel \
12347ed541caSmrg			| mipsr5900 | mipsr5900el \
12357ed541caSmrg			| mipstx39 | mipstx39el \
12367ed541caSmrg			| mmix \
12377ed541caSmrg			| mn10200 | mn10300 \
12387ed541caSmrg			| moxie \
12397ed541caSmrg			| mt \
12407ed541caSmrg			| msp430 \
12417ed541caSmrg			| nds32 | nds32le | nds32be \
12427ed541caSmrg			| nfp \
12437ed541caSmrg			| nios | nios2 | nios2eb | nios2el \
12447ed541caSmrg			| none | np1 | ns16k | ns32k | nvptx \
12457ed541caSmrg			| open8 \
12467ed541caSmrg			| or1k* \
12477ed541caSmrg			| or32 \
12487ed541caSmrg			| orion \
12497ed541caSmrg			| picochip \
12507ed541caSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
12517ed541caSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
12527ed541caSmrg			| pru \
12537ed541caSmrg			| pyramid \
12547ed541caSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
12557ed541caSmrg			| rl78 | romp | rs6000 | rx \
12567ed541caSmrg			| s390 | s390x \
12577ed541caSmrg			| score \
12587ed541caSmrg			| sh | shl \
12597ed541caSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
12607ed541caSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
12617ed541caSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
12627ed541caSmrg			| sparclite \
12637ed541caSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
12647ed541caSmrg			| spu \
12657ed541caSmrg			| tahoe \
12667ed541caSmrg			| thumbv7* \
12677ed541caSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
12687ed541caSmrg			| tron \
12697ed541caSmrg			| ubicom32 \
12707ed541caSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
12717ed541caSmrg			| vax \
12727ed541caSmrg			| visium \
12737ed541caSmrg			| w65 \
12747ed541caSmrg			| wasm32 | wasm64 \
12757ed541caSmrg			| we32k \
12767ed541caSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
12777ed541caSmrg			| xstormy16 | xtensa* \
12787ed541caSmrg			| ymp \
12797ed541caSmrg			| z8k | z80)
12807ed541caSmrg				;;
12817ed541caSmrg
12827ed541caSmrg			*)
12837ed541caSmrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
12847ed541caSmrg				exit 1
12857ed541caSmrg				;;
12867ed541caSmrg		esac
128772b4363aSmrg		;;
128872b4363aSmrgesac
128972b4363aSmrg
129072b4363aSmrg# Here we canonicalize certain aliases for manufacturers.
12917ed541caSmrgcase $vendor in
12927ed541caSmrg	digital*)
12937ed541caSmrg		vendor=dec
129472b4363aSmrg		;;
12957ed541caSmrg	commodore*)
12967ed541caSmrg		vendor=cbm
129772b4363aSmrg		;;
129872b4363aSmrg	*)
129972b4363aSmrg		;;
130072b4363aSmrgesac
130172b4363aSmrg
130272b4363aSmrg# Decode manufacturer-specific aliases for certain operating systems.
130372b4363aSmrg
13047ed541caSmrgif test x$basic_os != x
130572b4363aSmrgthen
13067ed541caSmrg
13077ed541caSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
13087ed541caSmrg# set os.
13097ed541caSmrgcase $basic_os in
13107ed541caSmrg	gnu/linux*)
13117ed541caSmrg		kernel=linux
13127ed541caSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
13137ed541caSmrg		;;
13147ed541caSmrg	os2-emx)
13157ed541caSmrg		kernel=os2
13167ed541caSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
13177ed541caSmrg		;;
13187ed541caSmrg	nto-qnx*)
13197ed541caSmrg		kernel=nto
13207ed541caSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
13217ed541caSmrg		;;
13227ed541caSmrg	*-*)
13237ed541caSmrg		# shellcheck disable=SC2162
13247ed541caSmrg		saved_IFS=$IFS
13257ed541caSmrg		IFS="-" read kernel os <<EOF
13267ed541caSmrg$basic_os
13277ed541caSmrgEOF
13287ed541caSmrg		IFS=$saved_IFS
13297ed541caSmrg		;;
13307ed541caSmrg	# Default OS when just kernel was specified
13317ed541caSmrg	nto*)
13327ed541caSmrg		kernel=nto
13337ed541caSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
13347ed541caSmrg		;;
13357ed541caSmrg	linux*)
13367ed541caSmrg		kernel=linux
13377ed541caSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
13387ed541caSmrg		;;
13397ed541caSmrg	*)
13407ed541caSmrg		kernel=
13417ed541caSmrg		os=$basic_os
13427ed541caSmrg		;;
13437ed541caSmrgesac
13447ed541caSmrg
13457ed541caSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
13467ed541caSmrg# etc.)
134772b4363aSmrgcase $os in
13487ed541caSmrg	# First match some system type aliases that might get confused
13497ed541caSmrg	# with valid system types.
13507ed541caSmrg	# solaris* is a basic system type, with this one exception.
13517ed541caSmrg	auroraux)
13527ed541caSmrg		os=auroraux
135308e312fdSmrg		;;
13547ed541caSmrg	bluegene*)
13557ed541caSmrg		os=cnk
135672b4363aSmrg		;;
13577ed541caSmrg	solaris1 | solaris1.*)
13587ed541caSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
135972b4363aSmrg		;;
13607ed541caSmrg	solaris)
13617ed541caSmrg		os=solaris2
136272b4363aSmrg		;;
13637ed541caSmrg	unixware*)
13647ed541caSmrg		os=sysv4.2uw
136572b4363aSmrg		;;
13667ed541caSmrg	# es1800 is here to avoid being matched by es* (a different OS)
13677ed541caSmrg	es1800*)
13687ed541caSmrg		os=ose
136972b4363aSmrg		;;
13707ed541caSmrg	# Some version numbers need modification
13717ed541caSmrg	chorusos*)
13727ed541caSmrg		os=chorusos
137372b4363aSmrg		;;
13747ed541caSmrg	isc)
13757ed541caSmrg		os=isc2.2
137672b4363aSmrg		;;
13777ed541caSmrg	sco6)
13787ed541caSmrg		os=sco5v6
137972b4363aSmrg		;;
13807ed541caSmrg	sco5)
13817ed541caSmrg		os=sco3.2v5
138272b4363aSmrg		;;
13837ed541caSmrg	sco4)
13847ed541caSmrg		os=sco3.2v4
138572b4363aSmrg		;;
13867ed541caSmrg	sco3.2.[4-9]*)
13877ed541caSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
138872b4363aSmrg		;;
13897ed541caSmrg	sco*v* | scout)
13907ed541caSmrg		# Don't match below
139172b4363aSmrg		;;
13927ed541caSmrg	sco*)
13937ed541caSmrg		os=sco3.2v2
139472b4363aSmrg		;;
13957ed541caSmrg	psos*)
13967ed541caSmrg		os=psos
139772b4363aSmrg		;;
13987ed541caSmrg	qnx*)
13997ed541caSmrg		os=qnx
140072b4363aSmrg		;;
14017ed541caSmrg	hiux*)
14027ed541caSmrg		os=hiuxwe2
140372b4363aSmrg		;;
14047ed541caSmrg	lynx*178)
14057ed541caSmrg		os=lynxos178
140672b4363aSmrg		;;
14077ed541caSmrg	lynx*5)
14087ed541caSmrg		os=lynxos5
140972b4363aSmrg		;;
14107ed541caSmrg	lynxos*)
14117ed541caSmrg		# don't get caught up in next wildcard
141272b4363aSmrg		;;
14137ed541caSmrg	lynx*)
14147ed541caSmrg		os=lynxos
141572b4363aSmrg		;;
14167ed541caSmrg	mac[0-9]*)
14177ed541caSmrg		os=`echo "$os" | sed -e 's|mac|macos|'`
141872b4363aSmrg		;;
14197ed541caSmrg	opened*)
14207ed541caSmrg		os=openedition
142172b4363aSmrg		;;
14227ed541caSmrg	os400*)
14237ed541caSmrg		os=os400
142472b4363aSmrg		;;
14257ed541caSmrg	sunos5*)
14267ed541caSmrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
142772b4363aSmrg		;;
14287ed541caSmrg	sunos6*)
14297ed541caSmrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
143072b4363aSmrg		;;
14317ed541caSmrg	wince*)
14327ed541caSmrg		os=wince
143372b4363aSmrg		;;
14347ed541caSmrg	utek*)
14357ed541caSmrg		os=bsd
143672b4363aSmrg		;;
14377ed541caSmrg	dynix*)
14387ed541caSmrg		os=bsd
143972b4363aSmrg		;;
14407ed541caSmrg	acis*)
14417ed541caSmrg		os=aos
144272b4363aSmrg		;;
14437ed541caSmrg	atheos*)
14447ed541caSmrg		os=atheos
144572b4363aSmrg		;;
14467ed541caSmrg	syllable*)
14477ed541caSmrg		os=syllable
144872b4363aSmrg		;;
14497ed541caSmrg	386bsd)
14507ed541caSmrg		os=bsd
145172b4363aSmrg		;;
14527ed541caSmrg	ctix* | uts*)
14537ed541caSmrg		os=sysv
145472b4363aSmrg		;;
14557ed541caSmrg	nova*)
14567ed541caSmrg		os=rtmk-nova
145772b4363aSmrg		;;
14587ed541caSmrg	ns2)
14597ed541caSmrg		os=nextstep2
146072b4363aSmrg		;;
14617ed541caSmrg	# Preserve the version number of sinix5.
14627ed541caSmrg	sinix5.*)
14637ed541caSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
146472b4363aSmrg		;;
14657ed541caSmrg	sinix*)
14667ed541caSmrg		os=sysv4
146772b4363aSmrg		;;
14687ed541caSmrg	tpf*)
14697ed541caSmrg		os=tpf
147072b4363aSmrg		;;
14717ed541caSmrg	triton*)
14727ed541caSmrg		os=sysv3
147372b4363aSmrg		;;
14747ed541caSmrg	oss*)
14757ed541caSmrg		os=sysv3
147672b4363aSmrg		;;
14777ed541caSmrg	svr4*)
14787ed541caSmrg		os=sysv4
147972b4363aSmrg		;;
14807ed541caSmrg	svr3)
14817ed541caSmrg		os=sysv3
148272b4363aSmrg		;;
14837ed541caSmrg	sysvr4)
14847ed541caSmrg		os=sysv4
148572b4363aSmrg		;;
14867ed541caSmrg	ose*)
14877ed541caSmrg		os=ose
148872b4363aSmrg		;;
14897ed541caSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
14907ed541caSmrg		os=mint
1491dd77ae96Smrg		;;
14927ed541caSmrg	dicos*)
14937ed541caSmrg		os=dicos
149433dddc75Smrg		;;
14957ed541caSmrg	pikeos*)
14967ed541caSmrg		# Until real need of OS specific support for
14977ed541caSmrg		# particular features comes up, bare metal
14987ed541caSmrg		# configurations are quite functional.
14997ed541caSmrg		case $cpu in
15007ed541caSmrg		    arm*)
15017ed541caSmrg			os=eabi
15027ed541caSmrg			;;
15037ed541caSmrg		    *)
15047ed541caSmrg			os=elf
15057ed541caSmrg			;;
15067ed541caSmrg		esac
150772b4363aSmrg		;;
150872b4363aSmrg	*)
15097ed541caSmrg		# No normalization, but not necessarily accepted, that comes below.
151072b4363aSmrg		;;
151172b4363aSmrgesac
15127ed541caSmrg
151372b4363aSmrgelse
151472b4363aSmrg
151572b4363aSmrg# Here we handle the default operating systems that come with various machines.
151672b4363aSmrg# The value should be what the vendor currently ships out the door with their
151772b4363aSmrg# machine or put another way, the most popular os provided with the machine.
151872b4363aSmrg
151972b4363aSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
152072b4363aSmrg# "-sun"), then you have to tell the case statement up towards the top
152172b4363aSmrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
152272b4363aSmrg# will signal an error saying that MANUFACTURER isn't an operating
152372b4363aSmrg# system, and we'll never get to this point.
152472b4363aSmrg
15257ed541caSmrgkernel=
15267ed541caSmrgcase $cpu-$vendor in
152733dddc75Smrg	score-*)
15287ed541caSmrg		os=elf
152972b4363aSmrg		;;
153033dddc75Smrg	spu-*)
15317ed541caSmrg		os=elf
153272b4363aSmrg		;;
153372b4363aSmrg	*-acorn)
15347ed541caSmrg		os=riscix1.2
153572b4363aSmrg		;;
153672b4363aSmrg	arm*-rebel)
15377ed541caSmrg		kernel=linux
15387ed541caSmrg		os=gnu
153972b4363aSmrg		;;
154072b4363aSmrg	arm*-semi)
15417ed541caSmrg		os=aout
154272b4363aSmrg		;;
154333dddc75Smrg	c4x-* | tic4x-*)
15447ed541caSmrg		os=coff
154533dddc75Smrg		;;
154633dddc75Smrg	c8051-*)
15477ed541caSmrg		os=elf
15487ed541caSmrg		;;
15497ed541caSmrg	clipper-intergraph)
15507ed541caSmrg		os=clix
155133dddc75Smrg		;;
155233dddc75Smrg	hexagon-*)
15537ed541caSmrg		os=elf
155472b4363aSmrg		;;
155508e312fdSmrg	tic54x-*)
15567ed541caSmrg		os=coff
155708e312fdSmrg		;;
155808e312fdSmrg	tic55x-*)
15597ed541caSmrg		os=coff
156008e312fdSmrg		;;
156108e312fdSmrg	tic6x-*)
15627ed541caSmrg		os=coff
156308e312fdSmrg		;;
156472b4363aSmrg	# This must come before the *-dec entry.
156572b4363aSmrg	pdp10-*)
15667ed541caSmrg		os=tops20
156772b4363aSmrg		;;
156872b4363aSmrg	pdp11-*)
15697ed541caSmrg		os=none
157072b4363aSmrg		;;
157172b4363aSmrg	*-dec | vax-*)
15727ed541caSmrg		os=ultrix4.2
157372b4363aSmrg		;;
157472b4363aSmrg	m68*-apollo)
15757ed541caSmrg		os=domain
157672b4363aSmrg		;;
157772b4363aSmrg	i386-sun)
15787ed541caSmrg		os=sunos4.0.2
157972b4363aSmrg		;;
158072b4363aSmrg	m68000-sun)
15817ed541caSmrg		os=sunos3
158272b4363aSmrg		;;
158372b4363aSmrg	m68*-cisco)
15847ed541caSmrg		os=aout
158572b4363aSmrg		;;
158633dddc75Smrg	mep-*)
15877ed541caSmrg		os=elf
1588dd77ae96Smrg		;;
158972b4363aSmrg	mips*-cisco)
15907ed541caSmrg		os=elf
159172b4363aSmrg		;;
159272b4363aSmrg	mips*-*)
15937ed541caSmrg		os=elf
159472b4363aSmrg		;;
159572b4363aSmrg	or32-*)
15967ed541caSmrg		os=coff
159772b4363aSmrg		;;
159872b4363aSmrg	*-tti)	# must be before sparc entry or we get the wrong os.
15997ed541caSmrg		os=sysv3
160072b4363aSmrg		;;
160172b4363aSmrg	sparc-* | *-sun)
16027ed541caSmrg		os=sunos4.1.1
160372b4363aSmrg		;;
16047ed541caSmrg	pru-*)
16057ed541caSmrg		os=elf
160672b4363aSmrg		;;
16077ed541caSmrg	*-be)
16087ed541caSmrg		os=beos
160972b4363aSmrg		;;
161072b4363aSmrg	*-ibm)
16117ed541caSmrg		os=aix
161272b4363aSmrg		;;
161333dddc75Smrg	*-knuth)
16147ed541caSmrg		os=mmixware
161572b4363aSmrg		;;
161672b4363aSmrg	*-wec)
16177ed541caSmrg		os=proelf
161872b4363aSmrg		;;
161972b4363aSmrg	*-winbond)
16207ed541caSmrg		os=proelf
162172b4363aSmrg		;;
162272b4363aSmrg	*-oki)
16237ed541caSmrg		os=proelf
162472b4363aSmrg		;;
162572b4363aSmrg	*-hp)
16267ed541caSmrg		os=hpux
162772b4363aSmrg		;;
162872b4363aSmrg	*-hitachi)
16297ed541caSmrg		os=hiux
163072b4363aSmrg		;;
163172b4363aSmrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
16327ed541caSmrg		os=sysv
163372b4363aSmrg		;;
163472b4363aSmrg	*-cbm)
16357ed541caSmrg		os=amigaos
163672b4363aSmrg		;;
163772b4363aSmrg	*-dg)
16387ed541caSmrg		os=dgux
163972b4363aSmrg		;;
164072b4363aSmrg	*-dolphin)
16417ed541caSmrg		os=sysv3
164272b4363aSmrg		;;
164372b4363aSmrg	m68k-ccur)
16447ed541caSmrg		os=rtu
164572b4363aSmrg		;;
164672b4363aSmrg	m88k-omron*)
16477ed541caSmrg		os=luna
164872b4363aSmrg		;;
16497ed541caSmrg	*-next)
16507ed541caSmrg		os=nextstep
165172b4363aSmrg		;;
165272b4363aSmrg	*-sequent)
16537ed541caSmrg		os=ptx
165472b4363aSmrg		;;
165572b4363aSmrg	*-crds)
16567ed541caSmrg		os=unos
165772b4363aSmrg		;;
165872b4363aSmrg	*-ns)
16597ed541caSmrg		os=genix
166072b4363aSmrg		;;
166172b4363aSmrg	i370-*)
16627ed541caSmrg		os=mvs
166372b4363aSmrg		;;
166472b4363aSmrg	*-gould)
16657ed541caSmrg		os=sysv
166672b4363aSmrg		;;
166772b4363aSmrg	*-highlevel)
16687ed541caSmrg		os=bsd
166972b4363aSmrg		;;
167072b4363aSmrg	*-encore)
16717ed541caSmrg		os=bsd
167272b4363aSmrg		;;
167372b4363aSmrg	*-sgi)
16747ed541caSmrg		os=irix
167572b4363aSmrg		;;
167672b4363aSmrg	*-siemens)
16777ed541caSmrg		os=sysv4
167872b4363aSmrg		;;
167972b4363aSmrg	*-masscomp)
16807ed541caSmrg		os=rtu
168172b4363aSmrg		;;
168272b4363aSmrg	f30[01]-fujitsu | f700-fujitsu)
16837ed541caSmrg		os=uxpv
168472b4363aSmrg		;;
168572b4363aSmrg	*-rom68k)
16867ed541caSmrg		os=coff
168772b4363aSmrg		;;
168872b4363aSmrg	*-*bug)
16897ed541caSmrg		os=coff
169072b4363aSmrg		;;
169172b4363aSmrg	*-apple)
16927ed541caSmrg		os=macos
169372b4363aSmrg		;;
169472b4363aSmrg	*-atari*)
16957ed541caSmrg		os=mint
16967ed541caSmrg		;;
16977ed541caSmrg	*-wrs)
16987ed541caSmrg		os=vxworks
169972b4363aSmrg		;;
170072b4363aSmrg	*)
17017ed541caSmrg		os=none
170272b4363aSmrg		;;
170372b4363aSmrgesac
17047ed541caSmrg
170572b4363aSmrgfi
170672b4363aSmrg
17077ed541caSmrg# Now, validate our (potentially fixed-up) OS.
17087ed541caSmrgcase $os in
17097ed541caSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
17107ed541caSmrg	musl* | newlib* | relibc* | uclibc*)
17117ed541caSmrg		;;
17127ed541caSmrg	# Likewise for "kernel-abi"
17137ed541caSmrg	eabi* | gnueabi*)
17147ed541caSmrg		;;
17157ed541caSmrg	# VxWorks passes extra cpu info in the 4th filed.
17167ed541caSmrg	simlinux | simwindows | spe)
17177ed541caSmrg		;;
17187ed541caSmrg	# Now accept the basic system types.
17197ed541caSmrg	# The portable systems comes first.
17207ed541caSmrg	# Each alternative MUST end in a * to match a version number.
17217ed541caSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
17227ed541caSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
17237ed541caSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
17247ed541caSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
17257ed541caSmrg	     | hiux* | abug | nacl* | netware* | windows* \
17267ed541caSmrg	     | os9* | macos* | osx* | ios* \
17277ed541caSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
17287ed541caSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
17297ed541caSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
17307ed541caSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
17317ed541caSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
17327ed541caSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
17337ed541caSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
17347ed541caSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
17357ed541caSmrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
17367ed541caSmrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
17377ed541caSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
17387ed541caSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
17397ed541caSmrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
17407ed541caSmrg	     | midipix* | mingw32* | mingw64* | mint* \
17417ed541caSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
17427ed541caSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
17437ed541caSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
17447ed541caSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
17457ed541caSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
17467ed541caSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
17477ed541caSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
17487ed541caSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
17497ed541caSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
17507ed541caSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
17517ed541caSmrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*)
17527ed541caSmrg		;;
17537ed541caSmrg	# This one is extra strict with allowed versions
17547ed541caSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
17557ed541caSmrg		# Don't forget version if it is 3.2v4 or newer.
17567ed541caSmrg		;;
17577ed541caSmrg	none)
17587ed541caSmrg		;;
17597ed541caSmrg	*)
17607ed541caSmrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
17617ed541caSmrg		exit 1
17627ed541caSmrg		;;
17637ed541caSmrgesac
17647ed541caSmrg
17657ed541caSmrg# As a final step for OS-related things, validate the OS-kernel combination
17667ed541caSmrg# (given a valid OS), if there is a kernel.
17677ed541caSmrgcase $kernel-$os in
17687ed541caSmrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
17697ed541caSmrg		   | linux-musl* | linux-relibc* | linux-uclibc* )
17707ed541caSmrg		;;
17717ed541caSmrg	uclinux-uclibc* )
17727ed541caSmrg		;;
17737ed541caSmrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
17747ed541caSmrg		# These are just libc implementations, not actual OSes, and thus
17757ed541caSmrg		# require a kernel.
17767ed541caSmrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
17777ed541caSmrg		exit 1
17787ed541caSmrg		;;
17797ed541caSmrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
17807ed541caSmrg		;;
17817ed541caSmrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
17827ed541caSmrg		;;
17837ed541caSmrg	nto-qnx*)
17847ed541caSmrg		;;
17857ed541caSmrg	os2-emx)
17867ed541caSmrg		;;
17877ed541caSmrg	*-eabi* | *-gnueabi*)
17887ed541caSmrg		;;
17897ed541caSmrg	-*)
17907ed541caSmrg		# Blank kernel with real OS is always fine.
17917ed541caSmrg		;;
17927ed541caSmrg	*-*)
17937ed541caSmrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
17947ed541caSmrg		exit 1
17957ed541caSmrg		;;
17967ed541caSmrgesac
17977ed541caSmrg
179872b4363aSmrg# Here we handle the case where we know the os, and the CPU type, but not the
179972b4363aSmrg# manufacturer.  We pick the logical manufacturer.
18007ed541caSmrgcase $vendor in
18017ed541caSmrg	unknown)
18027ed541caSmrg		case $cpu-$os in
18037ed541caSmrg			*-riscix*)
180472b4363aSmrg				vendor=acorn
180572b4363aSmrg				;;
18067ed541caSmrg			*-sunos*)
180772b4363aSmrg				vendor=sun
180872b4363aSmrg				;;
18097ed541caSmrg			*-cnk* | *-aix*)
181072b4363aSmrg				vendor=ibm
181172b4363aSmrg				;;
18127ed541caSmrg			*-beos*)
181372b4363aSmrg				vendor=be
181472b4363aSmrg				;;
18157ed541caSmrg			*-hpux*)
181672b4363aSmrg				vendor=hp
181772b4363aSmrg				;;
18187ed541caSmrg			*-mpeix*)
181972b4363aSmrg				vendor=hp
182072b4363aSmrg				;;
18217ed541caSmrg			*-hiux*)
182272b4363aSmrg				vendor=hitachi
182372b4363aSmrg				;;
18247ed541caSmrg			*-unos*)
182572b4363aSmrg				vendor=crds
182672b4363aSmrg				;;
18277ed541caSmrg			*-dgux*)
182872b4363aSmrg				vendor=dg
182972b4363aSmrg				;;
18307ed541caSmrg			*-luna*)
183172b4363aSmrg				vendor=omron
183272b4363aSmrg				;;
18337ed541caSmrg			*-genix*)
183472b4363aSmrg				vendor=ns
183572b4363aSmrg				;;
18367ed541caSmrg			*-clix*)
18377ed541caSmrg				vendor=intergraph
18387ed541caSmrg				;;
18397ed541caSmrg			*-mvs* | *-opened*)
18407ed541caSmrg				vendor=ibm
18417ed541caSmrg				;;
18427ed541caSmrg			*-os400*)
184372b4363aSmrg				vendor=ibm
184472b4363aSmrg				;;
18457ed541caSmrg			s390-* | s390x-*)
184672b4363aSmrg				vendor=ibm
184772b4363aSmrg				;;
18487ed541caSmrg			*-ptx*)
184972b4363aSmrg				vendor=sequent
185072b4363aSmrg				;;
18517ed541caSmrg			*-tpf*)
185272b4363aSmrg				vendor=ibm
185372b4363aSmrg				;;
18547ed541caSmrg			*-vxsim* | *-vxworks* | *-windiss*)
185572b4363aSmrg				vendor=wrs
185672b4363aSmrg				;;
18577ed541caSmrg			*-aux*)
185872b4363aSmrg				vendor=apple
185972b4363aSmrg				;;
18607ed541caSmrg			*-hms*)
186172b4363aSmrg				vendor=hitachi
186272b4363aSmrg				;;
18637ed541caSmrg			*-mpw* | *-macos*)
186472b4363aSmrg				vendor=apple
186572b4363aSmrg				;;
18667ed541caSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
186772b4363aSmrg				vendor=atari
186872b4363aSmrg				;;
18697ed541caSmrg			*-vos*)
187072b4363aSmrg				vendor=stratus
187172b4363aSmrg				;;
187272b4363aSmrg		esac
187372b4363aSmrg		;;
187472b4363aSmrgesac
187572b4363aSmrg
18767ed541caSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
187772b4363aSmrgexit
187872b4363aSmrg
187972b4363aSmrg# Local variables:
18807ed541caSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
188172b4363aSmrg# time-stamp-start: "timestamp='"
188272b4363aSmrg# time-stamp-format: "%:y-%02m-%02d"
188372b4363aSmrg# time-stamp-end: "'"
188472b4363aSmrg# End:
1885