config.sub revision 7d2c738b
11ab64890Smrg#! /bin/sh
21ab64890Smrg# Configuration validation subroutine script.
37d2c738bSmrg#   Copyright 1992-2023 Free Software Foundation, Inc.
41ab64890Smrg
57d2c738bSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
67d2c738bSmrg
77d2c738bSmrgtimestamp='2023-01-21'
81ab64890Smrg
9eb411b4bSmrg# This file is free software; you can redistribute it and/or modify it
10eb411b4bSmrg# under the terms of the GNU General Public License as published by
117d2c738bSmrg# the Free Software Foundation, either version 3 of the License, or
121ab64890Smrg# (at your option) any later version.
131ab64890Smrg#
14eb411b4bSmrg# This program is distributed in the hope that it will be useful, but
15eb411b4bSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of
16eb411b4bSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17eb411b4bSmrg# General Public License for more details.
181ab64890Smrg#
191ab64890Smrg# You should have received a copy of the GNU General Public License
205afda2e6Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
211ab64890Smrg#
221ab64890Smrg# As a special exception to the GNU General Public License, if you
231ab64890Smrg# distribute this file as part of a program that contains a
241ab64890Smrg# configuration script generated by Autoconf, you may include it under
25eb411b4bSmrg# the same distribution terms that you use for the rest of that
26eb411b4bSmrg# program.  This Exception is an additional permission under section 7
27eb411b4bSmrg# of the GNU General Public License, version 3 ("GPLv3").
281ab64890Smrg
291ab64890Smrg
30862bcd1aSmrg# Please send patches to <config-patches@gnu.org>.
311ab64890Smrg#
321ab64890Smrg# Configuration subroutine to validate and canonicalize a configuration type.
331ab64890Smrg# Supply the specified configuration type as an argument.
341ab64890Smrg# If it is invalid, we print an error message on stderr and exit with code 1.
351ab64890Smrg# Otherwise, we print the canonical config type on stdout and succeed.
361ab64890Smrg
3788de56ccSmrg# You can get the latest version of this script from:
387d2c738bSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
3988de56ccSmrg
401ab64890Smrg# This file is supposed to be the same for all GNU packages
411ab64890Smrg# and recognize all the CPU types, system types and aliases
421ab64890Smrg# that are meaningful with *any* GNU software.
431ab64890Smrg# Each package is responsible for reporting which valid configurations
441ab64890Smrg# it does not support.  The user should be able to distinguish
451ab64890Smrg# a failure to support a valid configuration from a meaningless
461ab64890Smrg# configuration.
471ab64890Smrg
481ab64890Smrg# The goal of this file is to map all the various variations of a given
491ab64890Smrg# machine specification into a single specification in the form:
501ab64890Smrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
511ab64890Smrg# or in some cases, the newer four-part form:
521ab64890Smrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
531ab64890Smrg# It is wrong to echo any other type of specification.
541ab64890Smrg
557d2c738bSmrg# The "shellcheck disable" line above the timestamp inhibits complaints
567d2c738bSmrg# about features and limitations of the classic Bourne shell that were
577d2c738bSmrg# superseded or lifted in POSIX.  However, this script identifies a wide
587d2c738bSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
597d2c738bSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still
607d2c738bSmrg# have a pre-POSIX /bin/sh.
617d2c738bSmrg
62e9628295Smrgme=`echo "$0" | sed -e 's,.*/,,'`
631ab64890Smrg
641ab64890Smrgusage="\
6538ae11fcSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
661ab64890Smrg
671ab64890SmrgCanonicalize a configuration name.
681ab64890Smrg
695afda2e6SmrgOptions:
701ab64890Smrg  -h, --help         print this help, then exit
711ab64890Smrg  -t, --time-stamp   print date of last modification, then exit
721ab64890Smrg  -v, --version      print version number, then exit
731ab64890Smrg
741ab64890SmrgReport bugs and patches to <config-patches@gnu.org>."
751ab64890Smrg
761ab64890Smrgversion="\
771ab64890SmrgGNU config.sub ($timestamp)
781ab64890Smrg
797d2c738bSmrgCopyright 1992-2023 Free Software Foundation, Inc.
801ab64890Smrg
811ab64890SmrgThis is free software; see the source for copying conditions.  There is NO
821ab64890Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
831ab64890Smrg
841ab64890Smrghelp="
851ab64890SmrgTry \`$me --help' for more information."
861ab64890Smrg
871ab64890Smrg# Parse command line
881ab64890Smrgwhile test $# -gt 0 ; do
891ab64890Smrg  case $1 in
901ab64890Smrg    --time-stamp | --time* | -t )
911ab64890Smrg       echo "$timestamp" ; exit ;;
921ab64890Smrg    --version | -v )
931ab64890Smrg       echo "$version" ; exit ;;
941ab64890Smrg    --help | --h* | -h )
951ab64890Smrg       echo "$usage"; exit ;;
961ab64890Smrg    -- )     # Stop option processing
971ab64890Smrg       shift; break ;;
981ab64890Smrg    - )	# Use stdin as input.
991ab64890Smrg       break ;;
1001ab64890Smrg    -* )
1017d2c738bSmrg       echo "$me: invalid option $1$help" >&2
1021ab64890Smrg       exit 1 ;;
1031ab64890Smrg
1041ab64890Smrg    *local*)
1051ab64890Smrg       # First pass through any local machine types.
1065afda2e6Smrg       echo "$1"
1071ab64890Smrg       exit ;;
1081ab64890Smrg
1091ab64890Smrg    * )
1101ab64890Smrg       break ;;
1111ab64890Smrg  esac
1121ab64890Smrgdone
1131ab64890Smrg
1141ab64890Smrgcase $# in
1151ab64890Smrg 0) echo "$me: missing argument$help" >&2
1161ab64890Smrg    exit 1;;
1171ab64890Smrg 1) ;;
1181ab64890Smrg *) echo "$me: too many arguments$help" >&2
1191ab64890Smrg    exit 1;;
1201ab64890Smrgesac
1211ab64890Smrg
1227d2c738bSmrg# Split fields of configuration type
1237d2c738bSmrg# shellcheck disable=SC2162
1247d2c738bSmrgsaved_IFS=$IFS
1257d2c738bSmrgIFS="-" read field1 field2 field3 field4 <<EOF
1267d2c738bSmrg$1
1277d2c738bSmrgEOF
1287d2c738bSmrgIFS=$saved_IFS
1291ab64890Smrg
1307d2c738bSmrg# Separate into logical components for further validation
1317d2c738bSmrgcase $1 in
1327d2c738bSmrg	*-*-*-*-*)
1337d2c738bSmrg		echo Invalid configuration \`"$1"\': more than four components >&2
1347d2c738bSmrg		exit 1
13514db512dSmrg		;;
1367d2c738bSmrg	*-*-*-*)
1377d2c738bSmrg		basic_machine=$field1-$field2
1387d2c738bSmrg		basic_os=$field3-$field4
13914db512dSmrg		;;
1407d2c738bSmrg	*-*-*)
1417d2c738bSmrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
1427d2c738bSmrg		# parts
1437d2c738bSmrg		maybe_os=$field2-$field3
1447d2c738bSmrg		case $maybe_os in
1457d2c738bSmrg			nto-qnx* | linux-* | uclinux-uclibc* \
1467d2c738bSmrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
1477d2c738bSmrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
1487d2c738bSmrg			| storm-chaos* | os2-emx* | rtmk-nova* | managarm-*)
1497d2c738bSmrg				basic_machine=$field1
1507d2c738bSmrg				basic_os=$maybe_os
1517d2c738bSmrg				;;
1527d2c738bSmrg			android-linux)
1537d2c738bSmrg				basic_machine=$field1-unknown
1547d2c738bSmrg				basic_os=linux-android
1557d2c738bSmrg				;;
1567d2c738bSmrg			*)
1577d2c738bSmrg				basic_machine=$field1-$field2
1587d2c738bSmrg				basic_os=$field3
1597d2c738bSmrg				;;
1607d2c738bSmrg		esac
16114db512dSmrg		;;
1627d2c738bSmrg	*-*)
1637d2c738bSmrg		# A lone config we happen to match not fitting any pattern
1647d2c738bSmrg		case $field1-$field2 in
1657d2c738bSmrg			decstation-3100)
1667d2c738bSmrg				basic_machine=mips-dec
1677d2c738bSmrg				basic_os=
1687d2c738bSmrg				;;
1697d2c738bSmrg			*-*)
1707d2c738bSmrg				# Second component is usually, but not always the OS
1717d2c738bSmrg				case $field2 in
1727d2c738bSmrg					# Prevent following clause from handling this valid os
1737d2c738bSmrg					sun*os*)
1747d2c738bSmrg						basic_machine=$field1
1757d2c738bSmrg						basic_os=$field2
1767d2c738bSmrg						;;
1777d2c738bSmrg					zephyr*)
1787d2c738bSmrg						basic_machine=$field1-unknown
1797d2c738bSmrg						basic_os=$field2
1807d2c738bSmrg						;;
1817d2c738bSmrg					# Manufacturers
1827d2c738bSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
1837d2c738bSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
1847d2c738bSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
1857d2c738bSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
1867d2c738bSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
1877d2c738bSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
1887d2c738bSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
1897d2c738bSmrg					| microblaze* | sim | cisco \
1907d2c738bSmrg					| oki | wec | wrs | winbond)
1917d2c738bSmrg						basic_machine=$field1-$field2
1927d2c738bSmrg						basic_os=
1937d2c738bSmrg						;;
1947d2c738bSmrg					*)
1957d2c738bSmrg						basic_machine=$field1
1967d2c738bSmrg						basic_os=$field2
1977d2c738bSmrg						;;
1987d2c738bSmrg				esac
1997d2c738bSmrg			;;
2007d2c738bSmrg		esac
20114db512dSmrg		;;
2027d2c738bSmrg	*)
2037d2c738bSmrg		# Convert single-component short-hands not valid as part of
2047d2c738bSmrg		# multi-component configurations.
2057d2c738bSmrg		case $field1 in
2067d2c738bSmrg			386bsd)
2077d2c738bSmrg				basic_machine=i386-pc
2087d2c738bSmrg				basic_os=bsd
2097d2c738bSmrg				;;
2107d2c738bSmrg			a29khif)
2117d2c738bSmrg				basic_machine=a29k-amd
2127d2c738bSmrg				basic_os=udi
2137d2c738bSmrg				;;
2147d2c738bSmrg			adobe68k)
2157d2c738bSmrg				basic_machine=m68010-adobe
2167d2c738bSmrg				basic_os=scout
2177d2c738bSmrg				;;
2187d2c738bSmrg			alliant)
2197d2c738bSmrg				basic_machine=fx80-alliant
2207d2c738bSmrg				basic_os=
2217d2c738bSmrg				;;
2227d2c738bSmrg			altos | altos3068)
2237d2c738bSmrg				basic_machine=m68k-altos
2247d2c738bSmrg				basic_os=
2257d2c738bSmrg				;;
2267d2c738bSmrg			am29k)
2277d2c738bSmrg				basic_machine=a29k-none
2287d2c738bSmrg				basic_os=bsd
2297d2c738bSmrg				;;
2307d2c738bSmrg			amdahl)
2317d2c738bSmrg				basic_machine=580-amdahl
2327d2c738bSmrg				basic_os=sysv
2337d2c738bSmrg				;;
2347d2c738bSmrg			amiga)
2357d2c738bSmrg				basic_machine=m68k-unknown
2367d2c738bSmrg				basic_os=
2377d2c738bSmrg				;;
2387d2c738bSmrg			amigaos | amigados)
2397d2c738bSmrg				basic_machine=m68k-unknown
2407d2c738bSmrg				basic_os=amigaos
2417d2c738bSmrg				;;
2427d2c738bSmrg			amigaunix | amix)
2437d2c738bSmrg				basic_machine=m68k-unknown
2447d2c738bSmrg				basic_os=sysv4
2457d2c738bSmrg				;;
2467d2c738bSmrg			apollo68)
2477d2c738bSmrg				basic_machine=m68k-apollo
2487d2c738bSmrg				basic_os=sysv
2497d2c738bSmrg				;;
2507d2c738bSmrg			apollo68bsd)
2517d2c738bSmrg				basic_machine=m68k-apollo
2527d2c738bSmrg				basic_os=bsd
2537d2c738bSmrg				;;
2547d2c738bSmrg			aros)
2557d2c738bSmrg				basic_machine=i386-pc
2567d2c738bSmrg				basic_os=aros
2577d2c738bSmrg				;;
2587d2c738bSmrg			aux)
2597d2c738bSmrg				basic_machine=m68k-apple
2607d2c738bSmrg				basic_os=aux
2617d2c738bSmrg				;;
2627d2c738bSmrg			balance)
2637d2c738bSmrg				basic_machine=ns32k-sequent
2647d2c738bSmrg				basic_os=dynix
2657d2c738bSmrg				;;
2667d2c738bSmrg			blackfin)
2677d2c738bSmrg				basic_machine=bfin-unknown
2687d2c738bSmrg				basic_os=linux
2697d2c738bSmrg				;;
2707d2c738bSmrg			cegcc)
2717d2c738bSmrg				basic_machine=arm-unknown
2727d2c738bSmrg				basic_os=cegcc
2737d2c738bSmrg				;;
2747d2c738bSmrg			convex-c1)
2757d2c738bSmrg				basic_machine=c1-convex
2767d2c738bSmrg				basic_os=bsd
2777d2c738bSmrg				;;
2787d2c738bSmrg			convex-c2)
2797d2c738bSmrg				basic_machine=c2-convex
2807d2c738bSmrg				basic_os=bsd
2817d2c738bSmrg				;;
2827d2c738bSmrg			convex-c32)
2837d2c738bSmrg				basic_machine=c32-convex
2847d2c738bSmrg				basic_os=bsd
2857d2c738bSmrg				;;
2867d2c738bSmrg			convex-c34)
2877d2c738bSmrg				basic_machine=c34-convex
2887d2c738bSmrg				basic_os=bsd
2897d2c738bSmrg				;;
2907d2c738bSmrg			convex-c38)
2917d2c738bSmrg				basic_machine=c38-convex
2927d2c738bSmrg				basic_os=bsd
2937d2c738bSmrg				;;
2947d2c738bSmrg			cray)
2957d2c738bSmrg				basic_machine=j90-cray
2967d2c738bSmrg				basic_os=unicos
2977d2c738bSmrg				;;
2987d2c738bSmrg			crds | unos)
2997d2c738bSmrg				basic_machine=m68k-crds
3007d2c738bSmrg				basic_os=
3017d2c738bSmrg				;;
3027d2c738bSmrg			da30)
3037d2c738bSmrg				basic_machine=m68k-da30
3047d2c738bSmrg				basic_os=
3057d2c738bSmrg				;;
3067d2c738bSmrg			decstation | pmax | pmin | dec3100 | decstatn)
3077d2c738bSmrg				basic_machine=mips-dec
3087d2c738bSmrg				basic_os=
3097d2c738bSmrg				;;
3107d2c738bSmrg			delta88)
3117d2c738bSmrg				basic_machine=m88k-motorola
3127d2c738bSmrg				basic_os=sysv3
3137d2c738bSmrg				;;
3147d2c738bSmrg			dicos)
3157d2c738bSmrg				basic_machine=i686-pc
3167d2c738bSmrg				basic_os=dicos
3177d2c738bSmrg				;;
3187d2c738bSmrg			djgpp)
3197d2c738bSmrg				basic_machine=i586-pc
3207d2c738bSmrg				basic_os=msdosdjgpp
3217d2c738bSmrg				;;
3227d2c738bSmrg			ebmon29k)
3237d2c738bSmrg				basic_machine=a29k-amd
3247d2c738bSmrg				basic_os=ebmon
3257d2c738bSmrg				;;
3267d2c738bSmrg			es1800 | OSE68k | ose68k | ose | OSE)
3277d2c738bSmrg				basic_machine=m68k-ericsson
3287d2c738bSmrg				basic_os=ose
3297d2c738bSmrg				;;
3307d2c738bSmrg			gmicro)
3317d2c738bSmrg				basic_machine=tron-gmicro
3327d2c738bSmrg				basic_os=sysv
3337d2c738bSmrg				;;
3347d2c738bSmrg			go32)
3357d2c738bSmrg				basic_machine=i386-pc
3367d2c738bSmrg				basic_os=go32
3377d2c738bSmrg				;;
3387d2c738bSmrg			h8300hms)
3397d2c738bSmrg				basic_machine=h8300-hitachi
3407d2c738bSmrg				basic_os=hms
3417d2c738bSmrg				;;
3427d2c738bSmrg			h8300xray)
3437d2c738bSmrg				basic_machine=h8300-hitachi
3447d2c738bSmrg				basic_os=xray
3457d2c738bSmrg				;;
3467d2c738bSmrg			h8500hms)
3477d2c738bSmrg				basic_machine=h8500-hitachi
3487d2c738bSmrg				basic_os=hms
3497d2c738bSmrg				;;
3507d2c738bSmrg			harris)
3517d2c738bSmrg				basic_machine=m88k-harris
3527d2c738bSmrg				basic_os=sysv3
3537d2c738bSmrg				;;
3547d2c738bSmrg			hp300 | hp300hpux)
3557d2c738bSmrg				basic_machine=m68k-hp
3567d2c738bSmrg				basic_os=hpux
3577d2c738bSmrg				;;
3587d2c738bSmrg			hp300bsd)
3597d2c738bSmrg				basic_machine=m68k-hp
3607d2c738bSmrg				basic_os=bsd
3617d2c738bSmrg				;;
3627d2c738bSmrg			hppaosf)
3637d2c738bSmrg				basic_machine=hppa1.1-hp
3647d2c738bSmrg				basic_os=osf
3657d2c738bSmrg				;;
3667d2c738bSmrg			hppro)
3677d2c738bSmrg				basic_machine=hppa1.1-hp
3687d2c738bSmrg				basic_os=proelf
3697d2c738bSmrg				;;
3707d2c738bSmrg			i386mach)
3717d2c738bSmrg				basic_machine=i386-mach
3727d2c738bSmrg				basic_os=mach
3737d2c738bSmrg				;;
3747d2c738bSmrg			isi68 | isi)
3757d2c738bSmrg				basic_machine=m68k-isi
3767d2c738bSmrg				basic_os=sysv
3777d2c738bSmrg				;;
3787d2c738bSmrg			m68knommu)
3797d2c738bSmrg				basic_machine=m68k-unknown
3807d2c738bSmrg				basic_os=linux
3817d2c738bSmrg				;;
3827d2c738bSmrg			magnum | m3230)
3837d2c738bSmrg				basic_machine=mips-mips
3847d2c738bSmrg				basic_os=sysv
3857d2c738bSmrg				;;
3867d2c738bSmrg			merlin)
3877d2c738bSmrg				basic_machine=ns32k-utek
3887d2c738bSmrg				basic_os=sysv
3897d2c738bSmrg				;;
3907d2c738bSmrg			mingw64)
3917d2c738bSmrg				basic_machine=x86_64-pc
3927d2c738bSmrg				basic_os=mingw64
3937d2c738bSmrg				;;
3947d2c738bSmrg			mingw32)
3957d2c738bSmrg				basic_machine=i686-pc
3967d2c738bSmrg				basic_os=mingw32
3977d2c738bSmrg				;;
3987d2c738bSmrg			mingw32ce)
3997d2c738bSmrg				basic_machine=arm-unknown
4007d2c738bSmrg				basic_os=mingw32ce
4017d2c738bSmrg				;;
4027d2c738bSmrg			monitor)
4037d2c738bSmrg				basic_machine=m68k-rom68k
4047d2c738bSmrg				basic_os=coff
4057d2c738bSmrg				;;
4067d2c738bSmrg			morphos)
4077d2c738bSmrg				basic_machine=powerpc-unknown
4087d2c738bSmrg				basic_os=morphos
4097d2c738bSmrg				;;
4107d2c738bSmrg			moxiebox)
4117d2c738bSmrg				basic_machine=moxie-unknown
4127d2c738bSmrg				basic_os=moxiebox
4137d2c738bSmrg				;;
4147d2c738bSmrg			msdos)
4157d2c738bSmrg				basic_machine=i386-pc
4167d2c738bSmrg				basic_os=msdos
4177d2c738bSmrg				;;
4187d2c738bSmrg			msys)
4197d2c738bSmrg				basic_machine=i686-pc
4207d2c738bSmrg				basic_os=msys
4217d2c738bSmrg				;;
4227d2c738bSmrg			mvs)
4237d2c738bSmrg				basic_machine=i370-ibm
4247d2c738bSmrg				basic_os=mvs
4257d2c738bSmrg				;;
4267d2c738bSmrg			nacl)
4277d2c738bSmrg				basic_machine=le32-unknown
4287d2c738bSmrg				basic_os=nacl
4297d2c738bSmrg				;;
4307d2c738bSmrg			ncr3000)
4317d2c738bSmrg				basic_machine=i486-ncr
4327d2c738bSmrg				basic_os=sysv4
4337d2c738bSmrg				;;
4347d2c738bSmrg			netbsd386)
4357d2c738bSmrg				basic_machine=i386-pc
4367d2c738bSmrg				basic_os=netbsd
4377d2c738bSmrg				;;
4387d2c738bSmrg			netwinder)
4397d2c738bSmrg				basic_machine=armv4l-rebel
4407d2c738bSmrg				basic_os=linux
4417d2c738bSmrg				;;
4427d2c738bSmrg			news | news700 | news800 | news900)
4437d2c738bSmrg				basic_machine=m68k-sony
4447d2c738bSmrg				basic_os=newsos
4457d2c738bSmrg				;;
4467d2c738bSmrg			news1000)
4477d2c738bSmrg				basic_machine=m68030-sony
4487d2c738bSmrg				basic_os=newsos
4497d2c738bSmrg				;;
4507d2c738bSmrg			necv70)
4517d2c738bSmrg				basic_machine=v70-nec
4527d2c738bSmrg				basic_os=sysv
4537d2c738bSmrg				;;
4547d2c738bSmrg			nh3000)
4557d2c738bSmrg				basic_machine=m68k-harris
4567d2c738bSmrg				basic_os=cxux
4577d2c738bSmrg				;;
4587d2c738bSmrg			nh[45]000)
4597d2c738bSmrg				basic_machine=m88k-harris
4607d2c738bSmrg				basic_os=cxux
4617d2c738bSmrg				;;
4627d2c738bSmrg			nindy960)
4637d2c738bSmrg				basic_machine=i960-intel
4647d2c738bSmrg				basic_os=nindy
4657d2c738bSmrg				;;
4667d2c738bSmrg			mon960)
4677d2c738bSmrg				basic_machine=i960-intel
4687d2c738bSmrg				basic_os=mon960
4697d2c738bSmrg				;;
4707d2c738bSmrg			nonstopux)
4717d2c738bSmrg				basic_machine=mips-compaq
4727d2c738bSmrg				basic_os=nonstopux
4737d2c738bSmrg				;;
4747d2c738bSmrg			os400)
4757d2c738bSmrg				basic_machine=powerpc-ibm
4767d2c738bSmrg				basic_os=os400
4777d2c738bSmrg				;;
4787d2c738bSmrg			OSE68000 | ose68000)
4797d2c738bSmrg				basic_machine=m68000-ericsson
4807d2c738bSmrg				basic_os=ose
4817d2c738bSmrg				;;
4827d2c738bSmrg			os68k)
4837d2c738bSmrg				basic_machine=m68k-none
4847d2c738bSmrg				basic_os=os68k
4857d2c738bSmrg				;;
4867d2c738bSmrg			paragon)
4877d2c738bSmrg				basic_machine=i860-intel
4887d2c738bSmrg				basic_os=osf
4897d2c738bSmrg				;;
4907d2c738bSmrg			parisc)
4917d2c738bSmrg				basic_machine=hppa-unknown
4927d2c738bSmrg				basic_os=linux
4937d2c738bSmrg				;;
4947d2c738bSmrg			psp)
4957d2c738bSmrg				basic_machine=mipsallegrexel-sony
4967d2c738bSmrg				basic_os=psp
4977d2c738bSmrg				;;
4987d2c738bSmrg			pw32)
4997d2c738bSmrg				basic_machine=i586-unknown
5007d2c738bSmrg				basic_os=pw32
5017d2c738bSmrg				;;
5027d2c738bSmrg			rdos | rdos64)
5037d2c738bSmrg				basic_machine=x86_64-pc
5047d2c738bSmrg				basic_os=rdos
5057d2c738bSmrg				;;
5067d2c738bSmrg			rdos32)
5077d2c738bSmrg				basic_machine=i386-pc
5087d2c738bSmrg				basic_os=rdos
5097d2c738bSmrg				;;
5107d2c738bSmrg			rom68k)
5117d2c738bSmrg				basic_machine=m68k-rom68k
5127d2c738bSmrg				basic_os=coff
5137d2c738bSmrg				;;
5147d2c738bSmrg			sa29200)
5157d2c738bSmrg				basic_machine=a29k-amd
5167d2c738bSmrg				basic_os=udi
5177d2c738bSmrg				;;
5187d2c738bSmrg			sei)
5197d2c738bSmrg				basic_machine=mips-sei
5207d2c738bSmrg				basic_os=seiux
5217d2c738bSmrg				;;
5227d2c738bSmrg			sequent)
5237d2c738bSmrg				basic_machine=i386-sequent
5247d2c738bSmrg				basic_os=
5257d2c738bSmrg				;;
5267d2c738bSmrg			sps7)
5277d2c738bSmrg				basic_machine=m68k-bull
5287d2c738bSmrg				basic_os=sysv2
5297d2c738bSmrg				;;
5307d2c738bSmrg			st2000)
5317d2c738bSmrg				basic_machine=m68k-tandem
5327d2c738bSmrg				basic_os=
5337d2c738bSmrg				;;
5347d2c738bSmrg			stratus)
5357d2c738bSmrg				basic_machine=i860-stratus
5367d2c738bSmrg				basic_os=sysv4
5377d2c738bSmrg				;;
5387d2c738bSmrg			sun2)
5397d2c738bSmrg				basic_machine=m68000-sun
5407d2c738bSmrg				basic_os=
5417d2c738bSmrg				;;
5427d2c738bSmrg			sun2os3)
5437d2c738bSmrg				basic_machine=m68000-sun
5447d2c738bSmrg				basic_os=sunos3
5457d2c738bSmrg				;;
5467d2c738bSmrg			sun2os4)
5477d2c738bSmrg				basic_machine=m68000-sun
5487d2c738bSmrg				basic_os=sunos4
5497d2c738bSmrg				;;
5507d2c738bSmrg			sun3)
5517d2c738bSmrg				basic_machine=m68k-sun
5527d2c738bSmrg				basic_os=
5537d2c738bSmrg				;;
5547d2c738bSmrg			sun3os3)
5557d2c738bSmrg				basic_machine=m68k-sun
5567d2c738bSmrg				basic_os=sunos3
5577d2c738bSmrg				;;
5587d2c738bSmrg			sun3os4)
5597d2c738bSmrg				basic_machine=m68k-sun
5607d2c738bSmrg				basic_os=sunos4
5617d2c738bSmrg				;;
5627d2c738bSmrg			sun4)
5637d2c738bSmrg				basic_machine=sparc-sun
5647d2c738bSmrg				basic_os=
5657d2c738bSmrg				;;
5667d2c738bSmrg			sun4os3)
5677d2c738bSmrg				basic_machine=sparc-sun
5687d2c738bSmrg				basic_os=sunos3
5697d2c738bSmrg				;;
5707d2c738bSmrg			sun4os4)
5717d2c738bSmrg				basic_machine=sparc-sun
5727d2c738bSmrg				basic_os=sunos4
5737d2c738bSmrg				;;
5747d2c738bSmrg			sun4sol2)
5757d2c738bSmrg				basic_machine=sparc-sun
5767d2c738bSmrg				basic_os=solaris2
5777d2c738bSmrg				;;
5787d2c738bSmrg			sun386 | sun386i | roadrunner)
5797d2c738bSmrg				basic_machine=i386-sun
5807d2c738bSmrg				basic_os=
5817d2c738bSmrg				;;
5827d2c738bSmrg			sv1)
5837d2c738bSmrg				basic_machine=sv1-cray
5847d2c738bSmrg				basic_os=unicos
5857d2c738bSmrg				;;
5867d2c738bSmrg			symmetry)
5877d2c738bSmrg				basic_machine=i386-sequent
5887d2c738bSmrg				basic_os=dynix
5897d2c738bSmrg				;;
5907d2c738bSmrg			t3e)
5917d2c738bSmrg				basic_machine=alphaev5-cray
5927d2c738bSmrg				basic_os=unicos
5937d2c738bSmrg				;;
5947d2c738bSmrg			t90)
5957d2c738bSmrg				basic_machine=t90-cray
5967d2c738bSmrg				basic_os=unicos
5977d2c738bSmrg				;;
5987d2c738bSmrg			toad1)
5997d2c738bSmrg				basic_machine=pdp10-xkl
6007d2c738bSmrg				basic_os=tops20
6017d2c738bSmrg				;;
6027d2c738bSmrg			tpf)
6037d2c738bSmrg				basic_machine=s390x-ibm
6047d2c738bSmrg				basic_os=tpf
6057d2c738bSmrg				;;
6067d2c738bSmrg			udi29k)
6077d2c738bSmrg				basic_machine=a29k-amd
6087d2c738bSmrg				basic_os=udi
6097d2c738bSmrg				;;
6107d2c738bSmrg			ultra3)
6117d2c738bSmrg				basic_machine=a29k-nyu
6127d2c738bSmrg				basic_os=sym1
6137d2c738bSmrg				;;
6147d2c738bSmrg			v810 | necv810)
6157d2c738bSmrg				basic_machine=v810-nec
6167d2c738bSmrg				basic_os=none
6177d2c738bSmrg				;;
6187d2c738bSmrg			vaxv)
6197d2c738bSmrg				basic_machine=vax-dec
6207d2c738bSmrg				basic_os=sysv
6217d2c738bSmrg				;;
6227d2c738bSmrg			vms)
6237d2c738bSmrg				basic_machine=vax-dec
6247d2c738bSmrg				basic_os=vms
6257d2c738bSmrg				;;
6267d2c738bSmrg			vsta)
6277d2c738bSmrg				basic_machine=i386-pc
6287d2c738bSmrg				basic_os=vsta
6297d2c738bSmrg				;;
6307d2c738bSmrg			vxworks960)
6317d2c738bSmrg				basic_machine=i960-wrs
6327d2c738bSmrg				basic_os=vxworks
6337d2c738bSmrg				;;
6347d2c738bSmrg			vxworks68)
6357d2c738bSmrg				basic_machine=m68k-wrs
6367d2c738bSmrg				basic_os=vxworks
6377d2c738bSmrg				;;
6387d2c738bSmrg			vxworks29k)
6397d2c738bSmrg				basic_machine=a29k-wrs
6407d2c738bSmrg				basic_os=vxworks
6417d2c738bSmrg				;;
6427d2c738bSmrg			xbox)
6437d2c738bSmrg				basic_machine=i686-pc
6447d2c738bSmrg				basic_os=mingw32
6457d2c738bSmrg				;;
6467d2c738bSmrg			ymp)
6477d2c738bSmrg				basic_machine=ymp-cray
6487d2c738bSmrg				basic_os=unicos
6497d2c738bSmrg				;;
6507d2c738bSmrg			*)
6517d2c738bSmrg				basic_machine=$1
6527d2c738bSmrg				basic_os=
6537d2c738bSmrg				;;
6547d2c738bSmrg		esac
6551ab64890Smrg		;;
6561ab64890Smrgesac
6571ab64890Smrg
6587d2c738bSmrg# Decode 1-component or ad-hoc basic machines
6591ab64890Smrgcase $basic_machine in
6607d2c738bSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
6617d2c738bSmrg	# some cases the only manufacturer, in others, it is the most popular.
6627d2c738bSmrg	w89k)
6637d2c738bSmrg		cpu=hppa1.1
6647d2c738bSmrg		vendor=winbond
665eb411b4bSmrg		;;
6667d2c738bSmrg	op50n)
6677d2c738bSmrg		cpu=hppa1.1
6687d2c738bSmrg		vendor=oki
669eb411b4bSmrg		;;
6707d2c738bSmrg	op60c)
6717d2c738bSmrg		cpu=hppa1.1
6727d2c738bSmrg		vendor=oki
6739c019ec5Smaya		;;
6747d2c738bSmrg	ibm*)
6757d2c738bSmrg		cpu=i370
6767d2c738bSmrg		vendor=ibm
6779c019ec5Smaya		;;
6787d2c738bSmrg	orion105)
6797d2c738bSmrg		cpu=clipper
6807d2c738bSmrg		vendor=highlevel
68114db512dSmrg		;;
6827d2c738bSmrg	mac | mpw | mac-mpw)
6837d2c738bSmrg		cpu=m68k
6847d2c738bSmrg		vendor=apple
685eb411b4bSmrg		;;
6867d2c738bSmrg	pmac | pmac-mpw)
6877d2c738bSmrg		cpu=powerpc
6887d2c738bSmrg		vendor=apple
68914db512dSmrg		;;
69014db512dSmrg
6911ab64890Smrg	# Recognize the various machine names and aliases which stand
6921ab64890Smrg	# for a CPU type and a company and sometimes even an OS.
6931ab64890Smrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
6947d2c738bSmrg		cpu=m68000
6957d2c738bSmrg		vendor=att
6961ab64890Smrg		;;
6971ab64890Smrg	3b*)
6987d2c738bSmrg		cpu=we32k
6997d2c738bSmrg		vendor=att
70061b2299dSmrg		;;
70188de56ccSmrg	bluegene*)
7027d2c738bSmrg		cpu=powerpc
7037d2c738bSmrg		vendor=ibm
7047d2c738bSmrg		basic_os=cnk
7051ab64890Smrg		;;
7061ab64890Smrg	decsystem10* | dec10*)
7077d2c738bSmrg		cpu=pdp10
7087d2c738bSmrg		vendor=dec
7097d2c738bSmrg		basic_os=tops10
7101ab64890Smrg		;;
7111ab64890Smrg	decsystem20* | dec20*)
7127d2c738bSmrg		cpu=pdp10
7137d2c738bSmrg		vendor=dec
7147d2c738bSmrg		basic_os=tops20
7151ab64890Smrg		;;
7161ab64890Smrg	delta | 3300 | motorola-3300 | motorola-delta \
7171ab64890Smrg	      | 3300-motorola | delta-motorola)
7187d2c738bSmrg		cpu=m68k
7197d2c738bSmrg		vendor=motorola
72088de56ccSmrg		;;
7215afda2e6Smrg	dpx2*)
7227d2c738bSmrg		cpu=m68k
7237d2c738bSmrg		vendor=bull
7247d2c738bSmrg		basic_os=sysv3
72514db512dSmrg		;;
72614db512dSmrg	encore | umax | mmax)
7277d2c738bSmrg		cpu=ns32k
7287d2c738bSmrg		vendor=encore
72914db512dSmrg		;;
7307d2c738bSmrg	elxsi)
7317d2c738bSmrg		cpu=elxsi
7327d2c738bSmrg		vendor=elxsi
7337d2c738bSmrg		basic_os=${basic_os:-bsd}
7341ab64890Smrg		;;
7351ab64890Smrg	fx2800)
7367d2c738bSmrg		cpu=i860
7377d2c738bSmrg		vendor=alliant
7381ab64890Smrg		;;
7391ab64890Smrg	genix)
7407d2c738bSmrg		cpu=ns32k
7417d2c738bSmrg		vendor=ns
7421ab64890Smrg		;;
7431ab64890Smrg	h3050r* | hiux*)
7447d2c738bSmrg		cpu=hppa1.1
7457d2c738bSmrg		vendor=hitachi
7467d2c738bSmrg		basic_os=hiuxwe2
7471ab64890Smrg		;;
7481ab64890Smrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
7497d2c738bSmrg		cpu=hppa1.0
7507d2c738bSmrg		vendor=hp
7511ab64890Smrg		;;
7521ab64890Smrg	hp9k2[0-9][0-9] | hp9k31[0-9])
7537d2c738bSmrg		cpu=m68000
7547d2c738bSmrg		vendor=hp
7551ab64890Smrg		;;
7561ab64890Smrg	hp9k3[2-9][0-9])
7577d2c738bSmrg		cpu=m68k
7587d2c738bSmrg		vendor=hp
7591ab64890Smrg		;;
7601ab64890Smrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
7617d2c738bSmrg		cpu=hppa1.0
7627d2c738bSmrg		vendor=hp
7631ab64890Smrg		;;
7641ab64890Smrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
7657d2c738bSmrg		cpu=hppa1.1
7667d2c738bSmrg		vendor=hp
7671ab64890Smrg		;;
7681ab64890Smrg	hp9k78[0-9] | hp78[0-9])
7691ab64890Smrg		# FIXME: really hppa2.0-hp
7707d2c738bSmrg		cpu=hppa1.1
7717d2c738bSmrg		vendor=hp
7721ab64890Smrg		;;
7731ab64890Smrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
7741ab64890Smrg		# FIXME: really hppa2.0-hp
7757d2c738bSmrg		cpu=hppa1.1
7767d2c738bSmrg		vendor=hp
7771ab64890Smrg		;;
7781ab64890Smrg	hp9k8[0-9][13679] | hp8[0-9][13679])
7797d2c738bSmrg		cpu=hppa1.1
7807d2c738bSmrg		vendor=hp
7811ab64890Smrg		;;
7821ab64890Smrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
7837d2c738bSmrg		cpu=hppa1.0
7847d2c738bSmrg		vendor=hp
7851ab64890Smrg		;;
7861ab64890Smrg	i*86v32)
7877d2c738bSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7887d2c738bSmrg		vendor=pc
7897d2c738bSmrg		basic_os=sysv32
7901ab64890Smrg		;;
7911ab64890Smrg	i*86v4*)
7927d2c738bSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7937d2c738bSmrg		vendor=pc
7947d2c738bSmrg		basic_os=sysv4
7951ab64890Smrg		;;
7961ab64890Smrg	i*86v)
7977d2c738bSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7987d2c738bSmrg		vendor=pc
7997d2c738bSmrg		basic_os=sysv
8001ab64890Smrg		;;
8011ab64890Smrg	i*86sol2)
8027d2c738bSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
8037d2c738bSmrg		vendor=pc
8047d2c738bSmrg		basic_os=solaris2
80514db512dSmrg		;;
8067d2c738bSmrg	j90 | j90-cray)
8077d2c738bSmrg		cpu=j90
8087d2c738bSmrg		vendor=cray
8097d2c738bSmrg		basic_os=${basic_os:-unicos}
8101ab64890Smrg		;;
8111ab64890Smrg	iris | iris4d)
8127d2c738bSmrg		cpu=mips
8137d2c738bSmrg		vendor=sgi
8147d2c738bSmrg		case $basic_os in
8157d2c738bSmrg		    irix*)
8161ab64890Smrg			;;
8171ab64890Smrg		    *)
8187d2c738bSmrg			basic_os=irix4
8191ab64890Smrg			;;
8201ab64890Smrg		esac
8211ab64890Smrg		;;
8221ab64890Smrg	miniframe)
8237d2c738bSmrg		cpu=m68000
8247d2c738bSmrg		vendor=convergent
82514db512dSmrg		;;
8267d2c738bSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
8277d2c738bSmrg		cpu=m68k
8287d2c738bSmrg		vendor=atari
8297d2c738bSmrg		basic_os=mint
8301ab64890Smrg		;;
8311ab64890Smrg	news-3600 | risc-news)
8327d2c738bSmrg		cpu=mips
8337d2c738bSmrg		vendor=sony
8347d2c738bSmrg		basic_os=newsos
8351ab64890Smrg		;;
8365afda2e6Smrg	next | m*-next)
8377d2c738bSmrg		cpu=m68k
8387d2c738bSmrg		vendor=next
8397d2c738bSmrg		case $basic_os in
8407d2c738bSmrg		    openstep*)
8417d2c738bSmrg		        ;;
8427d2c738bSmrg		    nextstep*)
8431ab64890Smrg			;;
8447d2c738bSmrg		    ns2*)
8457d2c738bSmrg		      basic_os=nextstep2
8461ab64890Smrg			;;
8471ab64890Smrg		    *)
8487d2c738bSmrg		      basic_os=nextstep3
8491ab64890Smrg			;;
8501ab64890Smrg		esac
8511ab64890Smrg		;;
8521ab64890Smrg	np1)
8537d2c738bSmrg		cpu=np1
8547d2c738bSmrg		vendor=gould
8551ab64890Smrg		;;
8561ab64890Smrg	op50n-* | op60c-*)
8577d2c738bSmrg		cpu=hppa1.1
8587d2c738bSmrg		vendor=oki
8597d2c738bSmrg		basic_os=proelf
8601ab64890Smrg		;;
8611ab64890Smrg	pa-hitachi)
8627d2c738bSmrg		cpu=hppa1.1
8637d2c738bSmrg		vendor=hitachi
8647d2c738bSmrg		basic_os=hiuxwe2
86561b2299dSmrg		;;
8661ab64890Smrg	pbd)
8677d2c738bSmrg		cpu=sparc
8687d2c738bSmrg		vendor=tti
8691ab64890Smrg		;;
8701ab64890Smrg	pbb)
8717d2c738bSmrg		cpu=m68k
8727d2c738bSmrg		vendor=tti
87314db512dSmrg		;;
8747d2c738bSmrg	pc532)
8757d2c738bSmrg		cpu=ns32k
8767d2c738bSmrg		vendor=pc532
8771ab64890Smrg		;;
8781ab64890Smrg	pn)
8797d2c738bSmrg		cpu=pn
8807d2c738bSmrg		vendor=gould
8811ab64890Smrg		;;
8827d2c738bSmrg	power)
8837d2c738bSmrg		cpu=power
8847d2c738bSmrg		vendor=ibm
8851ab64890Smrg		;;
8867d2c738bSmrg	ps2)
8877d2c738bSmrg		cpu=i386
8887d2c738bSmrg		vendor=ibm
8891ab64890Smrg		;;
8907d2c738bSmrg	rm[46]00)
8917d2c738bSmrg		cpu=mips
8927d2c738bSmrg		vendor=siemens
8931ab64890Smrg		;;
8947d2c738bSmrg	rtpc | rtpc-*)
8957d2c738bSmrg		cpu=romp
8967d2c738bSmrg		vendor=ibm
8971ab64890Smrg		;;
8987d2c738bSmrg	sde)
8997d2c738bSmrg		cpu=mipsisa32
9007d2c738bSmrg		vendor=sde
9017d2c738bSmrg		basic_os=${basic_os:-elf}
9021ab64890Smrg		;;
9037d2c738bSmrg	simso-wrs)
9047d2c738bSmrg		cpu=sparclite
9057d2c738bSmrg		vendor=wrs
9067d2c738bSmrg		basic_os=vxworks
9071ab64890Smrg		;;
9087d2c738bSmrg	tower | tower-32)
9097d2c738bSmrg		cpu=m68k
9107d2c738bSmrg		vendor=ncr
9111ab64890Smrg		;;
9127d2c738bSmrg	vpp*|vx|vx-*)
9137d2c738bSmrg		cpu=f301
9147d2c738bSmrg		vendor=fujitsu
9151ab64890Smrg		;;
9167d2c738bSmrg	w65)
9177d2c738bSmrg		cpu=w65
9187d2c738bSmrg		vendor=wdc
9191ab64890Smrg		;;
9207d2c738bSmrg	w89k-*)
9217d2c738bSmrg		cpu=hppa1.1
9227d2c738bSmrg		vendor=winbond
9237d2c738bSmrg		basic_os=proelf
9241ab64890Smrg		;;
9257d2c738bSmrg	none)
9267d2c738bSmrg		cpu=none
9277d2c738bSmrg		vendor=none
9281ab64890Smrg		;;
9297d2c738bSmrg	leon|leon[3-9])
9307d2c738bSmrg		cpu=sparc
9317d2c738bSmrg		vendor=$basic_machine
932eb411b4bSmrg		;;
9337d2c738bSmrg	leon-*|leon[3-9]-*)
9347d2c738bSmrg		cpu=sparc
9357d2c738bSmrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
9361ab64890Smrg		;;
9377d2c738bSmrg
9387d2c738bSmrg	*-*)
9397d2c738bSmrg		# shellcheck disable=SC2162
9407d2c738bSmrg		saved_IFS=$IFS
9417d2c738bSmrg		IFS="-" read cpu vendor <<EOF
9427d2c738bSmrg$basic_machine
9437d2c738bSmrgEOF
9447d2c738bSmrg		IFS=$saved_IFS
9451ab64890Smrg		;;
9467d2c738bSmrg	# We use `pc' rather than `unknown'
9477d2c738bSmrg	# because (1) that's what they normally are, and
9487d2c738bSmrg	# (2) the word "unknown" tends to confuse beginning users.
9497d2c738bSmrg	i*86 | x86_64)
9507d2c738bSmrg		cpu=$basic_machine
9517d2c738bSmrg		vendor=pc
9521ab64890Smrg		;;
9537d2c738bSmrg	# These rules are duplicated from below for sake of the special case above;
9547d2c738bSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
9557d2c738bSmrg	pc98)
9567d2c738bSmrg		cpu=i386
9577d2c738bSmrg		vendor=pc
9581ab64890Smrg		;;
9597d2c738bSmrg	x64 | amd64)
9607d2c738bSmrg		cpu=x86_64
9617d2c738bSmrg		vendor=pc
9621ab64890Smrg		;;
9637d2c738bSmrg	# Recognize the basic CPU types without company name.
9647d2c738bSmrg	*)
9657d2c738bSmrg		cpu=$basic_machine
9667d2c738bSmrg		vendor=unknown
9671ab64890Smrg		;;
9687d2c738bSmrgesac
9697d2c738bSmrg
9707d2c738bSmrgunset -v basic_machine
9717d2c738bSmrg
9727d2c738bSmrg# Decode basic machines in the full and proper CPU-Company form.
9737d2c738bSmrgcase $cpu-$vendor in
9747d2c738bSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
9757d2c738bSmrg	# some cases the only manufacturer, in others, it is the most popular.
9767d2c738bSmrg	craynv-unknown)
9777d2c738bSmrg		vendor=cray
9787d2c738bSmrg		basic_os=${basic_os:-unicosmp}
9791ab64890Smrg		;;
9807d2c738bSmrg	c90-unknown | c90-cray)
9817d2c738bSmrg		vendor=cray
9827d2c738bSmrg		basic_os=${Basic_os:-unicos}
9831ab64890Smrg		;;
9847d2c738bSmrg	fx80-unknown)
9857d2c738bSmrg		vendor=alliant
9861ab64890Smrg		;;
9877d2c738bSmrg	romp-unknown)
9887d2c738bSmrg		vendor=ibm
9891ab64890Smrg		;;
9907d2c738bSmrg	mmix-unknown)
9917d2c738bSmrg		vendor=knuth
9921ab64890Smrg		;;
9937d2c738bSmrg	microblaze-unknown | microblazeel-unknown)
9947d2c738bSmrg		vendor=xilinx
9951ab64890Smrg		;;
9967d2c738bSmrg	rs6000-unknown)
9977d2c738bSmrg		vendor=ibm
9981ab64890Smrg		;;
9997d2c738bSmrg	vax-unknown)
10007d2c738bSmrg		vendor=dec
10011ab64890Smrg		;;
10027d2c738bSmrg	pdp11-unknown)
10037d2c738bSmrg		vendor=dec
10041ab64890Smrg		;;
10057d2c738bSmrg	we32k-unknown)
10067d2c738bSmrg		vendor=att
100761b2299dSmrg		;;
10087d2c738bSmrg	cydra-unknown)
10097d2c738bSmrg		vendor=cydrome
10101ab64890Smrg		;;
10117d2c738bSmrg	i370-ibm*)
10127d2c738bSmrg		vendor=ibm
10131ab64890Smrg		;;
10147d2c738bSmrg	orion-unknown)
10157d2c738bSmrg		vendor=highlevel
10161ab64890Smrg		;;
10177d2c738bSmrg	xps-unknown | xps100-unknown)
10187d2c738bSmrg		cpu=xps100
10197d2c738bSmrg		vendor=honeywell
10201ab64890Smrg		;;
10217d2c738bSmrg
10227d2c738bSmrg	# Here we normalize CPU types with a missing or matching vendor
10237d2c738bSmrg	armh-unknown | armh-alt)
10247d2c738bSmrg		cpu=armv7l
10257d2c738bSmrg		vendor=alt
10267d2c738bSmrg		basic_os=${basic_os:-linux-gnueabihf}
10271ab64890Smrg		;;
10287d2c738bSmrg	dpx20-unknown | dpx20-bull)
10297d2c738bSmrg		cpu=rs6000
10307d2c738bSmrg		vendor=bull
10317d2c738bSmrg		basic_os=${basic_os:-bosx}
10321ab64890Smrg		;;
10337d2c738bSmrg
10347d2c738bSmrg	# Here we normalize CPU types irrespective of the vendor
10357d2c738bSmrg	amd64-*)
10367d2c738bSmrg		cpu=x86_64
10371ab64890Smrg		;;
10387d2c738bSmrg	blackfin-*)
10397d2c738bSmrg		cpu=bfin
10407d2c738bSmrg		basic_os=linux
10411ab64890Smrg		;;
10427d2c738bSmrg	c54x-*)
10437d2c738bSmrg		cpu=tic54x
10441ab64890Smrg		;;
10457d2c738bSmrg	c55x-*)
10467d2c738bSmrg		cpu=tic55x
10471ab64890Smrg		;;
10487d2c738bSmrg	c6x-*)
10497d2c738bSmrg		cpu=tic6x
10501ab64890Smrg		;;
10517d2c738bSmrg	e500v[12]-*)
10527d2c738bSmrg		cpu=powerpc
10537d2c738bSmrg		basic_os=${basic_os}"spe"
10541ab64890Smrg		;;
10557d2c738bSmrg	mips3*-*)
10567d2c738bSmrg		cpu=mips64
10571ab64890Smrg		;;
10587d2c738bSmrg	ms1-*)
10597d2c738bSmrg		cpu=mt
10601ab64890Smrg		;;
10617d2c738bSmrg	m68knommu-*)
10627d2c738bSmrg		cpu=m68k
10637d2c738bSmrg		basic_os=linux
10641ab64890Smrg		;;
10657d2c738bSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
10667d2c738bSmrg		cpu=s12z
10671ab64890Smrg		;;
10687d2c738bSmrg	openrisc-*)
10697d2c738bSmrg		cpu=or32
10701ab64890Smrg		;;
10717d2c738bSmrg	parisc-*)
10727d2c738bSmrg		cpu=hppa
10737d2c738bSmrg		basic_os=linux
10741ab64890Smrg		;;
10757d2c738bSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
10767d2c738bSmrg		cpu=i586
1077eb411b4bSmrg		;;
10787d2c738bSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
10797d2c738bSmrg		cpu=i686
10801ab64890Smrg		;;
10817d2c738bSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
10827d2c738bSmrg		cpu=i686
10831ab64890Smrg		;;
10847d2c738bSmrg	pentium4-*)
10857d2c738bSmrg		cpu=i786
108688de56ccSmrg		;;
10877d2c738bSmrg	pc98-*)
10887d2c738bSmrg		cpu=i386
10891ab64890Smrg		;;
10907d2c738bSmrg	ppc-* | ppcbe-*)
10917d2c738bSmrg		cpu=powerpc
10921ab64890Smrg		;;
10937d2c738bSmrg	ppcle-* | powerpclittle-*)
10947d2c738bSmrg		cpu=powerpcle
10959c019ec5Smaya		;;
10967d2c738bSmrg	ppc64-*)
10977d2c738bSmrg		cpu=powerpc64
10981ab64890Smrg		;;
10997d2c738bSmrg	ppc64le-* | powerpc64little-*)
11007d2c738bSmrg		cpu=powerpc64le
11011ab64890Smrg		;;
11027d2c738bSmrg	sb1-*)
11037d2c738bSmrg		cpu=mipsisa64sb1
11041ab64890Smrg		;;
11057d2c738bSmrg	sb1el-*)
11067d2c738bSmrg		cpu=mipsisa64sb1el
11079c019ec5Smaya		;;
11087d2c738bSmrg	sh5e[lb]-*)
11097d2c738bSmrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
11109c019ec5Smaya		;;
11117d2c738bSmrg	spur-*)
11127d2c738bSmrg		cpu=spur
111314db512dSmrg		;;
11147d2c738bSmrg	strongarm-* | thumb-*)
11157d2c738bSmrg		cpu=arm
111614db512dSmrg		;;
11177d2c738bSmrg	tx39-*)
11187d2c738bSmrg		cpu=mipstx39
111914db512dSmrg		;;
11207d2c738bSmrg	tx39el-*)
11217d2c738bSmrg		cpu=mipstx39el
112214db512dSmrg		;;
11237d2c738bSmrg	x64-*)
11247d2c738bSmrg		cpu=x86_64
11251ab64890Smrg		;;
11265afda2e6Smrg	xscale-* | xscalee[bl]-*)
11277d2c738bSmrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
11289c019ec5Smaya		;;
11297d2c738bSmrg	arm64-* | aarch64le-*)
11307d2c738bSmrg		cpu=aarch64
11311ab64890Smrg		;;
11325afda2e6Smrg
11337d2c738bSmrg	# Recognize the canonical CPU Types that limit and/or modify the
11347d2c738bSmrg	# company names they are paired with.
11357d2c738bSmrg	cr16-*)
11367d2c738bSmrg		basic_os=${basic_os:-elf}
11371ab64890Smrg		;;
11387d2c738bSmrg	crisv32-* | etraxfs*-*)
11397d2c738bSmrg		cpu=crisv32
11407d2c738bSmrg		vendor=axis
11411ab64890Smrg		;;
11427d2c738bSmrg	cris-* | etrax*-*)
11437d2c738bSmrg		cpu=cris
11447d2c738bSmrg		vendor=axis
11459c019ec5Smaya		;;
11467d2c738bSmrg	crx-*)
11477d2c738bSmrg		basic_os=${basic_os:-elf}
11489c019ec5Smaya		;;
11497d2c738bSmrg	neo-tandem)
11507d2c738bSmrg		cpu=neo
11517d2c738bSmrg		vendor=tandem
11529c019ec5Smaya		;;
11537d2c738bSmrg	nse-tandem)
11547d2c738bSmrg		cpu=nse
11557d2c738bSmrg		vendor=tandem
115614db512dSmrg		;;
11577d2c738bSmrg	nsr-tandem)
11587d2c738bSmrg		cpu=nsr
11597d2c738bSmrg		vendor=tandem
116014db512dSmrg		;;
11617d2c738bSmrg	nsv-tandem)
11627d2c738bSmrg		cpu=nsv
11637d2c738bSmrg		vendor=tandem
116414db512dSmrg		;;
11657d2c738bSmrg	nsx-tandem)
11667d2c738bSmrg		cpu=nsx
11677d2c738bSmrg		vendor=tandem
116814db512dSmrg		;;
11697d2c738bSmrg	mipsallegrexel-sony)
11707d2c738bSmrg		cpu=mipsallegrexel
11717d2c738bSmrg		vendor=sony
117214db512dSmrg		;;
11737d2c738bSmrg	tile*-*)
11747d2c738bSmrg		basic_os=${basic_os:-linux-gnu}
11751ab64890Smrg		;;
11767d2c738bSmrg
11771ab64890Smrg	*)
11787d2c738bSmrg		# Recognize the canonical CPU types that are allowed with any
11797d2c738bSmrg		# company name.
11807d2c738bSmrg		case $cpu in
11817d2c738bSmrg			1750a | 580 \
11827d2c738bSmrg			| a29k \
11837d2c738bSmrg			| aarch64 | aarch64_be \
11847d2c738bSmrg			| abacus \
11857d2c738bSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
11867d2c738bSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
11877d2c738bSmrg			| alphapca5[67] | alpha64pca5[67] \
11887d2c738bSmrg			| am33_2.0 \
11897d2c738bSmrg			| amdgcn \
11907d2c738bSmrg			| arc | arceb | arc32 | arc64 \
11917d2c738bSmrg			| arm | arm[lb]e | arme[lb] | armv* \
11927d2c738bSmrg			| avr | avr32 \
11937d2c738bSmrg			| asmjs \
11947d2c738bSmrg			| ba \
11957d2c738bSmrg			| be32 | be64 \
11967d2c738bSmrg			| bfin | bpf | bs2000 \
11977d2c738bSmrg			| c[123]* | c30 | [cjt]90 | c4x \
11987d2c738bSmrg			| c8051 | clipper | craynv | csky | cydra \
11997d2c738bSmrg			| d10v | d30v | dlx | dsp16xx \
12007d2c738bSmrg			| e2k | elxsi | epiphany \
12017d2c738bSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
12027d2c738bSmrg			| h8300 | h8500 \
12037d2c738bSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
12047d2c738bSmrg			| hexagon \
12057d2c738bSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
12067d2c738bSmrg			| ip2k | iq2000 \
12077d2c738bSmrg			| k1om \
12087d2c738bSmrg			| le32 | le64 \
12097d2c738bSmrg			| lm32 \
12107d2c738bSmrg			| loongarch32 | loongarch64 \
12117d2c738bSmrg			| m32c | m32r | m32rle \
12127d2c738bSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
12137d2c738bSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
12147d2c738bSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
12157d2c738bSmrg			| microblaze | microblazeel \
12167d2c738bSmrg			| mips | mipsbe | mipseb | mipsel | mipsle \
12177d2c738bSmrg			| mips16 \
12187d2c738bSmrg			| mips64 | mips64eb | mips64el \
12197d2c738bSmrg			| mips64octeon | mips64octeonel \
12207d2c738bSmrg			| mips64orion | mips64orionel \
12217d2c738bSmrg			| mips64r5900 | mips64r5900el \
12227d2c738bSmrg			| mips64vr | mips64vrel \
12237d2c738bSmrg			| mips64vr4100 | mips64vr4100el \
12247d2c738bSmrg			| mips64vr4300 | mips64vr4300el \
12257d2c738bSmrg			| mips64vr5000 | mips64vr5000el \
12267d2c738bSmrg			| mips64vr5900 | mips64vr5900el \
12277d2c738bSmrg			| mipsisa32 | mipsisa32el \
12287d2c738bSmrg			| mipsisa32r2 | mipsisa32r2el \
12297d2c738bSmrg			| mipsisa32r3 | mipsisa32r3el \
12307d2c738bSmrg			| mipsisa32r5 | mipsisa32r5el \
12317d2c738bSmrg			| mipsisa32r6 | mipsisa32r6el \
12327d2c738bSmrg			| mipsisa64 | mipsisa64el \
12337d2c738bSmrg			| mipsisa64r2 | mipsisa64r2el \
12347d2c738bSmrg			| mipsisa64r3 | mipsisa64r3el \
12357d2c738bSmrg			| mipsisa64r5 | mipsisa64r5el \
12367d2c738bSmrg			| mipsisa64r6 | mipsisa64r6el \
12377d2c738bSmrg			| mipsisa64sb1 | mipsisa64sb1el \
12387d2c738bSmrg			| mipsisa64sr71k | mipsisa64sr71kel \
12397d2c738bSmrg			| mipsr5900 | mipsr5900el \
12407d2c738bSmrg			| mipstx39 | mipstx39el \
12417d2c738bSmrg			| mmix \
12427d2c738bSmrg			| mn10200 | mn10300 \
12437d2c738bSmrg			| moxie \
12447d2c738bSmrg			| mt \
12457d2c738bSmrg			| msp430 \
12467d2c738bSmrg			| nds32 | nds32le | nds32be \
12477d2c738bSmrg			| nfp \
12487d2c738bSmrg			| nios | nios2 | nios2eb | nios2el \
12497d2c738bSmrg			| none | np1 | ns16k | ns32k | nvptx \
12507d2c738bSmrg			| open8 \
12517d2c738bSmrg			| or1k* \
12527d2c738bSmrg			| or32 \
12537d2c738bSmrg			| orion \
12547d2c738bSmrg			| picochip \
12557d2c738bSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
12567d2c738bSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
12577d2c738bSmrg			| pru \
12587d2c738bSmrg			| pyramid \
12597d2c738bSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
12607d2c738bSmrg			| rl78 | romp | rs6000 | rx \
12617d2c738bSmrg			| s390 | s390x \
12627d2c738bSmrg			| score \
12637d2c738bSmrg			| sh | shl \
12647d2c738bSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
12657d2c738bSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
12667d2c738bSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
12677d2c738bSmrg			| sparclite \
12687d2c738bSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
12697d2c738bSmrg			| spu \
12707d2c738bSmrg			| tahoe \
12717d2c738bSmrg			| thumbv7* \
12727d2c738bSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
12737d2c738bSmrg			| tron \
12747d2c738bSmrg			| ubicom32 \
12757d2c738bSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
12767d2c738bSmrg			| vax \
12777d2c738bSmrg			| visium \
12787d2c738bSmrg			| w65 \
12797d2c738bSmrg			| wasm32 | wasm64 \
12807d2c738bSmrg			| we32k \
12817d2c738bSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
12827d2c738bSmrg			| xstormy16 | xtensa* \
12837d2c738bSmrg			| ymp \
12847d2c738bSmrg			| z8k | z80)
12857d2c738bSmrg				;;
12867d2c738bSmrg
12877d2c738bSmrg			*)
12887d2c738bSmrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
12897d2c738bSmrg				exit 1
12907d2c738bSmrg				;;
12917d2c738bSmrg		esac
12921ab64890Smrg		;;
12931ab64890Smrgesac
12941ab64890Smrg
12951ab64890Smrg# Here we canonicalize certain aliases for manufacturers.
12967d2c738bSmrgcase $vendor in
12977d2c738bSmrg	digital*)
12987d2c738bSmrg		vendor=dec
12991ab64890Smrg		;;
13007d2c738bSmrg	commodore*)
13017d2c738bSmrg		vendor=cbm
13021ab64890Smrg		;;
13031ab64890Smrg	*)
13041ab64890Smrg		;;
13051ab64890Smrgesac
13061ab64890Smrg
13071ab64890Smrg# Decode manufacturer-specific aliases for certain operating systems.
13081ab64890Smrg
13097d2c738bSmrgif test x$basic_os != x
13101ab64890Smrgthen
13117d2c738bSmrg
13127d2c738bSmrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
13137d2c738bSmrg# set os.
13147d2c738bSmrgcase $basic_os in
13157d2c738bSmrg	gnu/linux*)
13167d2c738bSmrg		kernel=linux
13177d2c738bSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
13187d2c738bSmrg		;;
13197d2c738bSmrg	os2-emx)
13207d2c738bSmrg		kernel=os2
13217d2c738bSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
13227d2c738bSmrg		;;
13237d2c738bSmrg	nto-qnx*)
13247d2c738bSmrg		kernel=nto
13257d2c738bSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
13267d2c738bSmrg		;;
13277d2c738bSmrg	*-*)
13287d2c738bSmrg		# shellcheck disable=SC2162
13297d2c738bSmrg		saved_IFS=$IFS
13307d2c738bSmrg		IFS="-" read kernel os <<EOF
13317d2c738bSmrg$basic_os
13327d2c738bSmrgEOF
13337d2c738bSmrg		IFS=$saved_IFS
13347d2c738bSmrg		;;
13357d2c738bSmrg	# Default OS when just kernel was specified
13367d2c738bSmrg	nto*)
13377d2c738bSmrg		kernel=nto
13387d2c738bSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
13397d2c738bSmrg		;;
13407d2c738bSmrg	linux*)
13417d2c738bSmrg		kernel=linux
13427d2c738bSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
13437d2c738bSmrg		;;
13447d2c738bSmrg	managarm*)
13457d2c738bSmrg		kernel=managarm
13467d2c738bSmrg		os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
13477d2c738bSmrg		;;
13487d2c738bSmrg	*)
13497d2c738bSmrg		kernel=
13507d2c738bSmrg		os=$basic_os
13517d2c738bSmrg		;;
13527d2c738bSmrgesac
13537d2c738bSmrg
13547d2c738bSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
13557d2c738bSmrg# etc.)
13561ab64890Smrgcase $os in
13575afda2e6Smrg	# First match some system type aliases that might get confused
13585afda2e6Smrg	# with valid system types.
13597d2c738bSmrg	# solaris* is a basic system type, with this one exception.
13607d2c738bSmrg	auroraux)
13617d2c738bSmrg		os=auroraux
136288de56ccSmrg		;;
13637d2c738bSmrg	bluegene*)
13647d2c738bSmrg		os=cnk
13651ab64890Smrg		;;
13667d2c738bSmrg	solaris1 | solaris1.*)
13677d2c738bSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
13681ab64890Smrg		;;
13697d2c738bSmrg	solaris)
13707d2c738bSmrg		os=solaris2
13711ab64890Smrg		;;
13727d2c738bSmrg	unixware*)
13737d2c738bSmrg		os=sysv4.2uw
13741ab64890Smrg		;;
13755afda2e6Smrg	# es1800 is here to avoid being matched by es* (a different OS)
13767d2c738bSmrg	es1800*)
13777d2c738bSmrg		os=ose
13781ab64890Smrg		;;
13797d2c738bSmrg	# Some version numbers need modification
13807d2c738bSmrg	chorusos*)
13817d2c738bSmrg		os=chorusos
13821ab64890Smrg		;;
13837d2c738bSmrg	isc)
13847d2c738bSmrg		os=isc2.2
13851ab64890Smrg		;;
13867d2c738bSmrg	sco6)
13877d2c738bSmrg		os=sco5v6
13881ab64890Smrg		;;
13897d2c738bSmrg	sco5)
13907d2c738bSmrg		os=sco3.2v5
13911ab64890Smrg		;;
13927d2c738bSmrg	sco4)
13937d2c738bSmrg		os=sco3.2v4
13941ab64890Smrg		;;
13957d2c738bSmrg	sco3.2.[4-9]*)
13967d2c738bSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
13971ab64890Smrg		;;
13987d2c738bSmrg	sco*v* | scout)
13997d2c738bSmrg		# Don't match below
14001ab64890Smrg		;;
14017d2c738bSmrg	sco*)
14027d2c738bSmrg		os=sco3.2v2
14031ab64890Smrg		;;
14047d2c738bSmrg	psos*)
14057d2c738bSmrg		os=psos
14065afda2e6Smrg		;;
14077d2c738bSmrg	qnx*)
14087d2c738bSmrg		os=qnx
14091ab64890Smrg		;;
14107d2c738bSmrg	hiux*)
14117d2c738bSmrg		os=hiuxwe2
14121ab64890Smrg		;;
14137d2c738bSmrg	lynx*178)
14147d2c738bSmrg		os=lynxos178
14151ab64890Smrg		;;
14167d2c738bSmrg	lynx*5)
14177d2c738bSmrg		os=lynxos5
14185afda2e6Smrg		;;
14197d2c738bSmrg	lynxos*)
14207d2c738bSmrg		# don't get caught up in next wildcard
14219c019ec5Smaya		;;
14227d2c738bSmrg	lynx*)
14237d2c738bSmrg		os=lynxos
14249c019ec5Smaya		;;
14257d2c738bSmrg	mac[0-9]*)
14267d2c738bSmrg		os=`echo "$os" | sed -e 's|mac|macos|'`
14271ab64890Smrg		;;
14287d2c738bSmrg	opened*)
14297d2c738bSmrg		os=openedition
143003ea5dc6Smrg		;;
14317d2c738bSmrg	os400*)
14327d2c738bSmrg		os=os400
143303ea5dc6Smrg		;;
14347d2c738bSmrg	sunos5*)
14357d2c738bSmrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
143603ea5dc6Smrg		;;
14377d2c738bSmrg	sunos6*)
14387d2c738bSmrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
143903ea5dc6Smrg		;;
14407d2c738bSmrg	wince*)
14417d2c738bSmrg		os=wince
144203ea5dc6Smrg		;;
14437d2c738bSmrg	utek*)
14447d2c738bSmrg		os=bsd
144503ea5dc6Smrg		;;
14467d2c738bSmrg	dynix*)
14477d2c738bSmrg		os=bsd
14487d2c738bSmrg		;;
14497d2c738bSmrg	acis*)
14507d2c738bSmrg		os=aos
14517d2c738bSmrg		;;
14527d2c738bSmrg	atheos*)
14537d2c738bSmrg		os=atheos
14547d2c738bSmrg		;;
14557d2c738bSmrg	syllable*)
14567d2c738bSmrg		os=syllable
14571ab64890Smrg		;;
14587d2c738bSmrg	386bsd)
14597d2c738bSmrg		os=bsd
14607d2c738bSmrg		;;
14617d2c738bSmrg	ctix* | uts*)
14627d2c738bSmrg		os=sysv
14631ab64890Smrg		;;
14647d2c738bSmrg	nova*)
14657d2c738bSmrg		os=rtmk-nova
14661ab64890Smrg		;;
14677d2c738bSmrg	ns2)
14687d2c738bSmrg		os=nextstep2
14697d2c738bSmrg		;;
14707d2c738bSmrg	# Preserve the version number of sinix5.
14717d2c738bSmrg	sinix5.*)
14727d2c738bSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
14731ab64890Smrg		;;
14747d2c738bSmrg	sinix*)
14757d2c738bSmrg		os=sysv4
14761ab64890Smrg		;;
14777d2c738bSmrg	tpf*)
14787d2c738bSmrg		os=tpf
14791ab64890Smrg		;;
14807d2c738bSmrg	triton*)
14817d2c738bSmrg		os=sysv3
14821ab64890Smrg		;;
14837d2c738bSmrg	oss*)
14847d2c738bSmrg		os=sysv3
14851ab64890Smrg		;;
14867d2c738bSmrg	svr4*)
14877d2c738bSmrg		os=sysv4
14881ab64890Smrg		;;
14897d2c738bSmrg	svr3)
14907d2c738bSmrg		os=sysv3
14911ab64890Smrg		;;
14927d2c738bSmrg	sysvr4)
14937d2c738bSmrg		os=sysv4
14941ab64890Smrg		;;
14957d2c738bSmrg	ose*)
14967d2c738bSmrg		os=ose
14971ab64890Smrg		;;
14987d2c738bSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
14997d2c738bSmrg		os=mint
15001ab64890Smrg		;;
15017d2c738bSmrg	dicos*)
15027d2c738bSmrg		os=dicos
15037d2c738bSmrg		;;
15047d2c738bSmrg	pikeos*)
15055afda2e6Smrg		# Until real need of OS specific support for
15065afda2e6Smrg		# particular features comes up, bare metal
15075afda2e6Smrg		# configurations are quite functional.
15087d2c738bSmrg		case $cpu in
15095afda2e6Smrg		    arm*)
15107d2c738bSmrg			os=eabi
15115afda2e6Smrg			;;
15125afda2e6Smrg		    *)
15137d2c738bSmrg			os=elf
15145afda2e6Smrg			;;
15155afda2e6Smrg		esac
15161ab64890Smrg		;;
15171ab64890Smrg	*)
15187d2c738bSmrg		# No normalization, but not necessarily accepted, that comes below.
15191ab64890Smrg		;;
15201ab64890Smrgesac
15217d2c738bSmrg
15221ab64890Smrgelse
15231ab64890Smrg
15241ab64890Smrg# Here we handle the default operating systems that come with various machines.
15251ab64890Smrg# The value should be what the vendor currently ships out the door with their
15261ab64890Smrg# machine or put another way, the most popular os provided with the machine.
15271ab64890Smrg
15281ab64890Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
15291ab64890Smrg# "-sun"), then you have to tell the case statement up towards the top
15301ab64890Smrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
15311ab64890Smrg# will signal an error saying that MANUFACTURER isn't an operating
15321ab64890Smrg# system, and we'll never get to this point.
15331ab64890Smrg
15347d2c738bSmrgkernel=
15357d2c738bSmrgcase $cpu-$vendor in
1536eb411b4bSmrg	score-*)
15377d2c738bSmrg		os=elf
15381ab64890Smrg		;;
1539eb411b4bSmrg	spu-*)
15407d2c738bSmrg		os=elf
15411ab64890Smrg		;;
15421ab64890Smrg	*-acorn)
15437d2c738bSmrg		os=riscix1.2
15441ab64890Smrg		;;
15451ab64890Smrg	arm*-rebel)
15467d2c738bSmrg		kernel=linux
15477d2c738bSmrg		os=gnu
15481ab64890Smrg		;;
15491ab64890Smrg	arm*-semi)
15507d2c738bSmrg		os=aout
15511ab64890Smrg		;;
1552eb411b4bSmrg	c4x-* | tic4x-*)
15537d2c738bSmrg		os=coff
1554eb411b4bSmrg		;;
15550f8248bfSmrg	c8051-*)
15567d2c738bSmrg		os=elf
15577d2c738bSmrg		;;
15587d2c738bSmrg	clipper-intergraph)
15597d2c738bSmrg		os=clix
15600f8248bfSmrg		;;
1561eb411b4bSmrg	hexagon-*)
15627d2c738bSmrg		os=elf
15631ab64890Smrg		;;
1564e9fcaa8aSmrg	tic54x-*)
15657d2c738bSmrg		os=coff
1566e9fcaa8aSmrg		;;
1567e9fcaa8aSmrg	tic55x-*)
15687d2c738bSmrg		os=coff
1569e9fcaa8aSmrg		;;
1570e9fcaa8aSmrg	tic6x-*)
15717d2c738bSmrg		os=coff
1572e9fcaa8aSmrg		;;
15731ab64890Smrg	# This must come before the *-dec entry.
15741ab64890Smrg	pdp10-*)
15757d2c738bSmrg		os=tops20
15761ab64890Smrg		;;
15771ab64890Smrg	pdp11-*)
15787d2c738bSmrg		os=none
15791ab64890Smrg		;;
15801ab64890Smrg	*-dec | vax-*)
15817d2c738bSmrg		os=ultrix4.2
15821ab64890Smrg		;;
15831ab64890Smrg	m68*-apollo)
15847d2c738bSmrg		os=domain
15851ab64890Smrg		;;
15861ab64890Smrg	i386-sun)
15877d2c738bSmrg		os=sunos4.0.2
15881ab64890Smrg		;;
15891ab64890Smrg	m68000-sun)
15907d2c738bSmrg		os=sunos3
15911ab64890Smrg		;;
15921ab64890Smrg	m68*-cisco)
15937d2c738bSmrg		os=aout
15941ab64890Smrg		;;
1595eb411b4bSmrg	mep-*)
15967d2c738bSmrg		os=elf
15971ab64890Smrg		;;
15981ab64890Smrg	mips*-cisco)
15997d2c738bSmrg		os=elf
16001ab64890Smrg		;;
16011ab64890Smrg	mips*-*)
16027d2c738bSmrg		os=elf
16031ab64890Smrg		;;
16041ab64890Smrg	or32-*)
16057d2c738bSmrg		os=coff
16061ab64890Smrg		;;
16071ab64890Smrg	*-tti)	# must be before sparc entry or we get the wrong os.
16087d2c738bSmrg		os=sysv3
16091ab64890Smrg		;;
16101ab64890Smrg	sparc-* | *-sun)
16117d2c738bSmrg		os=sunos4.1.1
16121ab64890Smrg		;;
161338ae11fcSmrg	pru-*)
16147d2c738bSmrg		os=elf
161538ae11fcSmrg		;;
16161ab64890Smrg	*-be)
16177d2c738bSmrg		os=beos
16181ab64890Smrg		;;
16191ab64890Smrg	*-ibm)
16207d2c738bSmrg		os=aix
16211ab64890Smrg		;;
1622eb411b4bSmrg	*-knuth)
16237d2c738bSmrg		os=mmixware
16241ab64890Smrg		;;
16251ab64890Smrg	*-wec)
16267d2c738bSmrg		os=proelf
16271ab64890Smrg		;;
16281ab64890Smrg	*-winbond)
16297d2c738bSmrg		os=proelf
16301ab64890Smrg		;;
16311ab64890Smrg	*-oki)
16327d2c738bSmrg		os=proelf
16331ab64890Smrg		;;
16341ab64890Smrg	*-hp)
16357d2c738bSmrg		os=hpux
16361ab64890Smrg		;;
16371ab64890Smrg	*-hitachi)
16387d2c738bSmrg		os=hiux
16391ab64890Smrg		;;
16401ab64890Smrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
16417d2c738bSmrg		os=sysv
16421ab64890Smrg		;;
16431ab64890Smrg	*-cbm)
16447d2c738bSmrg		os=amigaos
16451ab64890Smrg		;;
16461ab64890Smrg	*-dg)
16477d2c738bSmrg		os=dgux
16481ab64890Smrg		;;
16491ab64890Smrg	*-dolphin)
16507d2c738bSmrg		os=sysv3
16511ab64890Smrg		;;
16521ab64890Smrg	m68k-ccur)
16537d2c738bSmrg		os=rtu
16541ab64890Smrg		;;
16551ab64890Smrg	m88k-omron*)
16567d2c738bSmrg		os=luna
16571ab64890Smrg		;;
16585afda2e6Smrg	*-next)
16597d2c738bSmrg		os=nextstep
16601ab64890Smrg		;;
16611ab64890Smrg	*-sequent)
16627d2c738bSmrg		os=ptx
16631ab64890Smrg		;;
16641ab64890Smrg	*-crds)
16657d2c738bSmrg		os=unos
16661ab64890Smrg		;;
16671ab64890Smrg	*-ns)
16687d2c738bSmrg		os=genix
16691ab64890Smrg		;;
16701ab64890Smrg	i370-*)
16717d2c738bSmrg		os=mvs
16721ab64890Smrg		;;
16731ab64890Smrg	*-gould)
16747d2c738bSmrg		os=sysv
16751ab64890Smrg		;;
16761ab64890Smrg	*-highlevel)
16777d2c738bSmrg		os=bsd
16781ab64890Smrg		;;
16791ab64890Smrg	*-encore)
16807d2c738bSmrg		os=bsd
16811ab64890Smrg		;;
16821ab64890Smrg	*-sgi)
16837d2c738bSmrg		os=irix
16841ab64890Smrg		;;
16851ab64890Smrg	*-siemens)
16867d2c738bSmrg		os=sysv4
16871ab64890Smrg		;;
16881ab64890Smrg	*-masscomp)
16897d2c738bSmrg		os=rtu
16901ab64890Smrg		;;
16911ab64890Smrg	f30[01]-fujitsu | f700-fujitsu)
16927d2c738bSmrg		os=uxpv
16931ab64890Smrg		;;
16941ab64890Smrg	*-rom68k)
16957d2c738bSmrg		os=coff
16961ab64890Smrg		;;
16971ab64890Smrg	*-*bug)
16987d2c738bSmrg		os=coff
16991ab64890Smrg		;;
17001ab64890Smrg	*-apple)
17017d2c738bSmrg		os=macos
17021ab64890Smrg		;;
17031ab64890Smrg	*-atari*)
17047d2c738bSmrg		os=mint
17057d2c738bSmrg		;;
17067d2c738bSmrg	*-wrs)
17077d2c738bSmrg		os=vxworks
17081ab64890Smrg		;;
17091ab64890Smrg	*)
17107d2c738bSmrg		os=none
17111ab64890Smrg		;;
17121ab64890Smrgesac
17137d2c738bSmrg
17141ab64890Smrgfi
17151ab64890Smrg
17167d2c738bSmrg# Now, validate our (potentially fixed-up) OS.
17177d2c738bSmrgcase $os in
17187d2c738bSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
17197d2c738bSmrg	musl* | newlib* | relibc* | uclibc*)
17207d2c738bSmrg		;;
17217d2c738bSmrg	# Likewise for "kernel-abi"
17227d2c738bSmrg	eabi* | gnueabi*)
17237d2c738bSmrg		;;
17247d2c738bSmrg	# VxWorks passes extra cpu info in the 4th filed.
17257d2c738bSmrg	simlinux | simwindows | spe)
17267d2c738bSmrg		;;
17277d2c738bSmrg	# Now accept the basic system types.
17287d2c738bSmrg	# The portable systems comes first.
17297d2c738bSmrg	# Each alternative MUST end in a * to match a version number.
17307d2c738bSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
17317d2c738bSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
17327d2c738bSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
17337d2c738bSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
17347d2c738bSmrg	     | hiux* | abug | nacl* | netware* | windows* \
17357d2c738bSmrg	     | os9* | macos* | osx* | ios* \
17367d2c738bSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
17377d2c738bSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
17387d2c738bSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
17397d2c738bSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
17407d2c738bSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
17417d2c738bSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
17427d2c738bSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
17437d2c738bSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
17447d2c738bSmrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
17457d2c738bSmrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
17467d2c738bSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
17477d2c738bSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
17487d2c738bSmrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
17497d2c738bSmrg	     | midipix* | mingw32* | mingw64* | mint* \
17507d2c738bSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
17517d2c738bSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
17527d2c738bSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
17537d2c738bSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
17547d2c738bSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
17557d2c738bSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
17567d2c738bSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
17577d2c738bSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
17587d2c738bSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
17597d2c738bSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
17607d2c738bSmrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
17617d2c738bSmrg	     | fiwix* | mlibc* )
17627d2c738bSmrg		;;
17637d2c738bSmrg	# This one is extra strict with allowed versions
17647d2c738bSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
17657d2c738bSmrg		# Don't forget version if it is 3.2v4 or newer.
17667d2c738bSmrg		;;
17677d2c738bSmrg	none)
17687d2c738bSmrg		;;
17697d2c738bSmrg	kernel* )
17707d2c738bSmrg		# Restricted further below
17717d2c738bSmrg		;;
17727d2c738bSmrg	*)
17737d2c738bSmrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
17747d2c738bSmrg		exit 1
17757d2c738bSmrg		;;
17767d2c738bSmrgesac
17777d2c738bSmrg
17787d2c738bSmrg# As a final step for OS-related things, validate the OS-kernel combination
17797d2c738bSmrg# (given a valid OS), if there is a kernel.
17807d2c738bSmrgcase $kernel-$os in
17817d2c738bSmrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
17827d2c738bSmrg		   | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* )
17837d2c738bSmrg		;;
17847d2c738bSmrg	uclinux-uclibc* )
17857d2c738bSmrg		;;
17867d2c738bSmrg	managarm-mlibc* | managarm-kernel* )
17877d2c738bSmrg		;;
17887d2c738bSmrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* )
17897d2c738bSmrg		# These are just libc implementations, not actual OSes, and thus
17907d2c738bSmrg		# require a kernel.
17917d2c738bSmrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
17927d2c738bSmrg		exit 1
17937d2c738bSmrg		;;
17947d2c738bSmrg	-kernel* )
17957d2c738bSmrg		echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2
17967d2c738bSmrg		exit 1
17977d2c738bSmrg		;;
17987d2c738bSmrg	*-kernel* )
17997d2c738bSmrg		echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2
18007d2c738bSmrg		exit 1
18017d2c738bSmrg		;;
18027d2c738bSmrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
18037d2c738bSmrg		;;
18047d2c738bSmrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
18057d2c738bSmrg		;;
18067d2c738bSmrg	nto-qnx*)
18077d2c738bSmrg		;;
18087d2c738bSmrg	os2-emx)
18097d2c738bSmrg		;;
18107d2c738bSmrg	*-eabi* | *-gnueabi*)
18117d2c738bSmrg		;;
18127d2c738bSmrg	-*)
18137d2c738bSmrg		# Blank kernel with real OS is always fine.
18147d2c738bSmrg		;;
18157d2c738bSmrg	*-*)
18167d2c738bSmrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
18177d2c738bSmrg		exit 1
18187d2c738bSmrg		;;
18197d2c738bSmrgesac
18207d2c738bSmrg
18211ab64890Smrg# Here we handle the case where we know the os, and the CPU type, but not the
18221ab64890Smrg# manufacturer.  We pick the logical manufacturer.
18237d2c738bSmrgcase $vendor in
18247d2c738bSmrg	unknown)
18257d2c738bSmrg		case $cpu-$os in
18267d2c738bSmrg			*-riscix*)
18271ab64890Smrg				vendor=acorn
18281ab64890Smrg				;;
18297d2c738bSmrg			*-sunos*)
18301ab64890Smrg				vendor=sun
18311ab64890Smrg				;;
18327d2c738bSmrg			*-cnk* | *-aix*)
18331ab64890Smrg				vendor=ibm
18341ab64890Smrg				;;
18357d2c738bSmrg			*-beos*)
18361ab64890Smrg				vendor=be
18371ab64890Smrg				;;
18387d2c738bSmrg			*-hpux*)
18391ab64890Smrg				vendor=hp
18401ab64890Smrg				;;
18417d2c738bSmrg			*-mpeix*)
18421ab64890Smrg				vendor=hp
18431ab64890Smrg				;;
18447d2c738bSmrg			*-hiux*)
18451ab64890Smrg				vendor=hitachi
18461ab64890Smrg				;;
18477d2c738bSmrg			*-unos*)
18481ab64890Smrg				vendor=crds
18491ab64890Smrg				;;
18507d2c738bSmrg			*-dgux*)
18511ab64890Smrg				vendor=dg
18521ab64890Smrg				;;
18537d2c738bSmrg			*-luna*)
18541ab64890Smrg				vendor=omron
18551ab64890Smrg				;;
18567d2c738bSmrg			*-genix*)
18571ab64890Smrg				vendor=ns
18581ab64890Smrg				;;
18597d2c738bSmrg			*-clix*)
18607d2c738bSmrg				vendor=intergraph
18617d2c738bSmrg				;;
18627d2c738bSmrg			*-mvs* | *-opened*)
18637d2c738bSmrg				vendor=ibm
18647d2c738bSmrg				;;
18657d2c738bSmrg			*-os400*)
18661ab64890Smrg				vendor=ibm
18671ab64890Smrg				;;
18687d2c738bSmrg			s390-* | s390x-*)
18691ab64890Smrg				vendor=ibm
18701ab64890Smrg				;;
18717d2c738bSmrg			*-ptx*)
18721ab64890Smrg				vendor=sequent
18731ab64890Smrg				;;
18747d2c738bSmrg			*-tpf*)
18751ab64890Smrg				vendor=ibm
18761ab64890Smrg				;;
18777d2c738bSmrg			*-vxsim* | *-vxworks* | *-windiss*)
18781ab64890Smrg				vendor=wrs
18791ab64890Smrg				;;
18807d2c738bSmrg			*-aux*)
18811ab64890Smrg				vendor=apple
18821ab64890Smrg				;;
18837d2c738bSmrg			*-hms*)
18841ab64890Smrg				vendor=hitachi
18851ab64890Smrg				;;
18867d2c738bSmrg			*-mpw* | *-macos*)
18871ab64890Smrg				vendor=apple
18881ab64890Smrg				;;
18897d2c738bSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
18901ab64890Smrg				vendor=atari
18911ab64890Smrg				;;
18927d2c738bSmrg			*-vos*)
18931ab64890Smrg				vendor=stratus
18941ab64890Smrg				;;
18951ab64890Smrg		esac
18961ab64890Smrg		;;
18971ab64890Smrgesac
18981ab64890Smrg
18997d2c738bSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
19001ab64890Smrgexit
19011ab64890Smrg
19021ab64890Smrg# Local variables:
19037d2c738bSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
19041ab64890Smrg# time-stamp-start: "timestamp='"
19051ab64890Smrg# time-stamp-format: "%:y-%02m-%02d"
19061ab64890Smrg# time-stamp-end: "'"
19071ab64890Smrg# End:
1908