config.sub revision 7f6d8fe2
17f6d8fe2Smrg#!/usr/bin/sh
27d5e3a19Smrg# Configuration validation subroutine script.
37f6d8fe2Smrg#   Copyright 1992-2022 Free Software Foundation, Inc.
47d5e3a19Smrg
55212f86fSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
65212f86fSmrg
77f6d8fe2Smrgtimestamp='2022-01-03'
87d5e3a19Smrg
9b8414663Smrg# This file is free software; you can redistribute it and/or modify it
10b8414663Smrg# under the terms of the GNU General Public License as published by
117f6d8fe2Smrg# the Free Software Foundation, either version 3 of the License, or
127d5e3a19Smrg# (at your option) any later version.
137d5e3a19Smrg#
14b8414663Smrg# This program is distributed in the hope that it will be useful, but
15b8414663Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
16b8414663Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17b8414663Smrg# General Public License for more details.
187d5e3a19Smrg#
197d5e3a19Smrg# You should have received a copy of the GNU General Public License
2013e6bc1cSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
217d5e3a19Smrg#
227d5e3a19Smrg# As a special exception to the GNU General Public License, if you
237d5e3a19Smrg# distribute this file as part of a program that contains a
247d5e3a19Smrg# configuration script generated by Autoconf, you may include it under
25b8414663Smrg# the same distribution terms that you use for the rest of that
26b8414663Smrg# program.  This Exception is an additional permission under section 7
27b8414663Smrg# of the GNU General Public License, version 3 ("GPLv3").
287d5e3a19Smrg
297d5e3a19Smrg
30b8414663Smrg# Please send patches to <config-patches@gnu.org>.
317d5e3a19Smrg#
327d5e3a19Smrg# Configuration subroutine to validate and canonicalize a configuration type.
337d5e3a19Smrg# Supply the specified configuration type as an argument.
347d5e3a19Smrg# If it is invalid, we print an error message on stderr and exit with code 1.
357d5e3a19Smrg# Otherwise, we print the canonical config type on stdout and succeed.
367d5e3a19Smrg
37765486e8Smrg# You can get the latest version of this script from:
385212f86fSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
39765486e8Smrg
407d5e3a19Smrg# This file is supposed to be the same for all GNU packages
417d5e3a19Smrg# and recognize all the CPU types, system types and aliases
427d5e3a19Smrg# that are meaningful with *any* GNU software.
437d5e3a19Smrg# Each package is responsible for reporting which valid configurations
447d5e3a19Smrg# it does not support.  The user should be able to distinguish
457d5e3a19Smrg# a failure to support a valid configuration from a meaningless
467d5e3a19Smrg# configuration.
477d5e3a19Smrg
487d5e3a19Smrg# The goal of this file is to map all the various variations of a given
497d5e3a19Smrg# machine specification into a single specification in the form:
507d5e3a19Smrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
517d5e3a19Smrg# or in some cases, the newer four-part form:
527d5e3a19Smrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
537d5e3a19Smrg# It is wrong to echo any other type of specification.
547d5e3a19Smrg
555212f86fSmrg# The "shellcheck disable" line above the timestamp inhibits complaints
565212f86fSmrg# about features and limitations of the classic Bourne shell that were
575212f86fSmrg# superseded or lifted in POSIX.  However, this script identifies a wide
585212f86fSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
595212f86fSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still
605212f86fSmrg# have a pre-POSIX /bin/sh.
615212f86fSmrg
627d5e3a19Smrgme=`echo "$0" | sed -e 's,.*/,,'`
637d5e3a19Smrg
647d5e3a19Smrgusage="\
6513e6bc1cSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
667d5e3a19Smrg
677d5e3a19SmrgCanonicalize a configuration name.
687d5e3a19Smrg
6913e6bc1cSmrgOptions:
707d5e3a19Smrg  -h, --help         print this help, then exit
717d5e3a19Smrg  -t, --time-stamp   print date of last modification, then exit
727d5e3a19Smrg  -v, --version      print version number, then exit
737d5e3a19Smrg
747d5e3a19SmrgReport bugs and patches to <config-patches@gnu.org>."
757d5e3a19Smrg
767d5e3a19Smrgversion="\
777d5e3a19SmrgGNU config.sub ($timestamp)
787d5e3a19Smrg
797f6d8fe2SmrgCopyright 1992-2022 Free Software Foundation, Inc.
807d5e3a19Smrg
817d5e3a19SmrgThis is free software; see the source for copying conditions.  There is NO
827d5e3a19Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
837d5e3a19Smrg
847d5e3a19Smrghelp="
857d5e3a19SmrgTry \`$me --help' for more information."
867d5e3a19Smrg
877d5e3a19Smrg# Parse command line
887d5e3a19Smrgwhile test $# -gt 0 ; do
897d5e3a19Smrg  case $1 in
907d5e3a19Smrg    --time-stamp | --time* | -t )
917d5e3a19Smrg       echo "$timestamp" ; exit ;;
927d5e3a19Smrg    --version | -v )
937d5e3a19Smrg       echo "$version" ; exit ;;
947d5e3a19Smrg    --help | --h* | -h )
957d5e3a19Smrg       echo "$usage"; exit ;;
967d5e3a19Smrg    -- )     # Stop option processing
977d5e3a19Smrg       shift; break ;;
987d5e3a19Smrg    - )	# Use stdin as input.
997d5e3a19Smrg       break ;;
1007d5e3a19Smrg    -* )
1015212f86fSmrg       echo "$me: invalid option $1$help" >&2
1027d5e3a19Smrg       exit 1 ;;
1037d5e3a19Smrg
1047d5e3a19Smrg    *local*)
1057d5e3a19Smrg       # First pass through any local machine types.
10613e6bc1cSmrg       echo "$1"
1077d5e3a19Smrg       exit ;;
1087d5e3a19Smrg
1097d5e3a19Smrg    * )
1107d5e3a19Smrg       break ;;
1117d5e3a19Smrg  esac
1127d5e3a19Smrgdone
1137d5e3a19Smrg
1147d5e3a19Smrgcase $# in
1157d5e3a19Smrg 0) echo "$me: missing argument$help" >&2
1167d5e3a19Smrg    exit 1;;
1177d5e3a19Smrg 1) ;;
1187d5e3a19Smrg *) echo "$me: too many arguments$help" >&2
1197d5e3a19Smrg    exit 1;;
1207d5e3a19Smrgesac
1217d5e3a19Smrg
1225212f86fSmrg# Split fields of configuration type
1235212f86fSmrg# shellcheck disable=SC2162
1245212f86fSmrgsaved_IFS=$IFS
1255212f86fSmrgIFS="-" read field1 field2 field3 field4 <<EOF
1265212f86fSmrg$1
1275212f86fSmrgEOF
1285212f86fSmrgIFS=$saved_IFS
1297d5e3a19Smrg
1305212f86fSmrg# Separate into logical components for further validation
1315212f86fSmrgcase $1 in
1325212f86fSmrg	*-*-*-*-*)
1335212f86fSmrg		echo Invalid configuration \`"$1"\': more than four components >&2
1345212f86fSmrg		exit 1
135b8414663Smrg		;;
1365212f86fSmrg	*-*-*-*)
1375212f86fSmrg		basic_machine=$field1-$field2
1385212f86fSmrg		basic_os=$field3-$field4
1397d5e3a19Smrg		;;
1405212f86fSmrg	*-*-*)
1415212f86fSmrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
1425212f86fSmrg		# parts
1435212f86fSmrg		maybe_os=$field2-$field3
1445212f86fSmrg		case $maybe_os in
1455212f86fSmrg			nto-qnx* | linux-* | uclinux-uclibc* \
1465212f86fSmrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
1475212f86fSmrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
1485212f86fSmrg			| storm-chaos* | os2-emx* | rtmk-nova*)
1495212f86fSmrg				basic_machine=$field1
1505212f86fSmrg				basic_os=$maybe_os
1515212f86fSmrg				;;
1525212f86fSmrg			android-linux)
1535212f86fSmrg				basic_machine=$field1-unknown
1545212f86fSmrg				basic_os=linux-android
1555212f86fSmrg				;;
1565212f86fSmrg			*)
1575212f86fSmrg				basic_machine=$field1-$field2
1585212f86fSmrg				basic_os=$field3
1595212f86fSmrg				;;
1605212f86fSmrg		esac
1617d5e3a19Smrg		;;
1625212f86fSmrg	*-*)
1635212f86fSmrg		# A lone config we happen to match not fitting any pattern
1645212f86fSmrg		case $field1-$field2 in
1655212f86fSmrg			decstation-3100)
1665212f86fSmrg				basic_machine=mips-dec
1675212f86fSmrg				basic_os=
1685212f86fSmrg				;;
1695212f86fSmrg			*-*)
1705212f86fSmrg				# Second component is usually, but not always the OS
1715212f86fSmrg				case $field2 in
1725212f86fSmrg					# Prevent following clause from handling this valid os
1735212f86fSmrg					sun*os*)
1745212f86fSmrg						basic_machine=$field1
1755212f86fSmrg						basic_os=$field2
1765212f86fSmrg						;;
1775212f86fSmrg					zephyr*)
1785212f86fSmrg						basic_machine=$field1-unknown
1795212f86fSmrg						basic_os=$field2
1805212f86fSmrg						;;
1815212f86fSmrg					# Manufacturers
1825212f86fSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
1835212f86fSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
1845212f86fSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
1855212f86fSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
1865212f86fSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
1875212f86fSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
1885212f86fSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
1895212f86fSmrg					| microblaze* | sim | cisco \
1905212f86fSmrg					| oki | wec | wrs | winbond)
1915212f86fSmrg						basic_machine=$field1-$field2
1925212f86fSmrg						basic_os=
1935212f86fSmrg						;;
1945212f86fSmrg					*)
1955212f86fSmrg						basic_machine=$field1
1965212f86fSmrg						basic_os=$field2
1975212f86fSmrg						;;
1985212f86fSmrg				esac
1995212f86fSmrg			;;
2005212f86fSmrg		esac
2017d5e3a19Smrg		;;
2025212f86fSmrg	*)
2035212f86fSmrg		# Convert single-component short-hands not valid as part of
2045212f86fSmrg		# multi-component configurations.
2055212f86fSmrg		case $field1 in
2065212f86fSmrg			386bsd)
2075212f86fSmrg				basic_machine=i386-pc
2085212f86fSmrg				basic_os=bsd
2095212f86fSmrg				;;
2105212f86fSmrg			a29khif)
2115212f86fSmrg				basic_machine=a29k-amd
2125212f86fSmrg				basic_os=udi
2135212f86fSmrg				;;
2145212f86fSmrg			adobe68k)
2155212f86fSmrg				basic_machine=m68010-adobe
2165212f86fSmrg				basic_os=scout
2175212f86fSmrg				;;
2185212f86fSmrg			alliant)
2195212f86fSmrg				basic_machine=fx80-alliant
2205212f86fSmrg				basic_os=
2215212f86fSmrg				;;
2225212f86fSmrg			altos | altos3068)
2235212f86fSmrg				basic_machine=m68k-altos
2245212f86fSmrg				basic_os=
2255212f86fSmrg				;;
2265212f86fSmrg			am29k)
2275212f86fSmrg				basic_machine=a29k-none
2285212f86fSmrg				basic_os=bsd
2295212f86fSmrg				;;
2305212f86fSmrg			amdahl)
2315212f86fSmrg				basic_machine=580-amdahl
2325212f86fSmrg				basic_os=sysv
2335212f86fSmrg				;;
2345212f86fSmrg			amiga)
2355212f86fSmrg				basic_machine=m68k-unknown
2365212f86fSmrg				basic_os=
2375212f86fSmrg				;;
2385212f86fSmrg			amigaos | amigados)
2395212f86fSmrg				basic_machine=m68k-unknown
2405212f86fSmrg				basic_os=amigaos
2415212f86fSmrg				;;
2425212f86fSmrg			amigaunix | amix)
2435212f86fSmrg				basic_machine=m68k-unknown
2445212f86fSmrg				basic_os=sysv4
2455212f86fSmrg				;;
2465212f86fSmrg			apollo68)
2475212f86fSmrg				basic_machine=m68k-apollo
2485212f86fSmrg				basic_os=sysv
2495212f86fSmrg				;;
2505212f86fSmrg			apollo68bsd)
2515212f86fSmrg				basic_machine=m68k-apollo
2525212f86fSmrg				basic_os=bsd
2535212f86fSmrg				;;
2545212f86fSmrg			aros)
2555212f86fSmrg				basic_machine=i386-pc
2565212f86fSmrg				basic_os=aros
2575212f86fSmrg				;;
2585212f86fSmrg			aux)
2595212f86fSmrg				basic_machine=m68k-apple
2605212f86fSmrg				basic_os=aux
2615212f86fSmrg				;;
2625212f86fSmrg			balance)
2635212f86fSmrg				basic_machine=ns32k-sequent
2645212f86fSmrg				basic_os=dynix
2655212f86fSmrg				;;
2665212f86fSmrg			blackfin)
2675212f86fSmrg				basic_machine=bfin-unknown
2685212f86fSmrg				basic_os=linux
2695212f86fSmrg				;;
2705212f86fSmrg			cegcc)
2715212f86fSmrg				basic_machine=arm-unknown
2725212f86fSmrg				basic_os=cegcc
2735212f86fSmrg				;;
2745212f86fSmrg			convex-c1)
2755212f86fSmrg				basic_machine=c1-convex
2765212f86fSmrg				basic_os=bsd
2775212f86fSmrg				;;
2785212f86fSmrg			convex-c2)
2795212f86fSmrg				basic_machine=c2-convex
2805212f86fSmrg				basic_os=bsd
2815212f86fSmrg				;;
2825212f86fSmrg			convex-c32)
2835212f86fSmrg				basic_machine=c32-convex
2845212f86fSmrg				basic_os=bsd
2855212f86fSmrg				;;
2865212f86fSmrg			convex-c34)
2875212f86fSmrg				basic_machine=c34-convex
2885212f86fSmrg				basic_os=bsd
2895212f86fSmrg				;;
2905212f86fSmrg			convex-c38)
2915212f86fSmrg				basic_machine=c38-convex
2925212f86fSmrg				basic_os=bsd
2935212f86fSmrg				;;
2945212f86fSmrg			cray)
2955212f86fSmrg				basic_machine=j90-cray
2965212f86fSmrg				basic_os=unicos
2975212f86fSmrg				;;
2985212f86fSmrg			crds | unos)
2995212f86fSmrg				basic_machine=m68k-crds
3005212f86fSmrg				basic_os=
3015212f86fSmrg				;;
3025212f86fSmrg			da30)
3035212f86fSmrg				basic_machine=m68k-da30
3045212f86fSmrg				basic_os=
3055212f86fSmrg				;;
3065212f86fSmrg			decstation | pmax | pmin | dec3100 | decstatn)
3075212f86fSmrg				basic_machine=mips-dec
3085212f86fSmrg				basic_os=
3095212f86fSmrg				;;
3105212f86fSmrg			delta88)
3115212f86fSmrg				basic_machine=m88k-motorola
3125212f86fSmrg				basic_os=sysv3
3135212f86fSmrg				;;
3145212f86fSmrg			dicos)
3155212f86fSmrg				basic_machine=i686-pc
3165212f86fSmrg				basic_os=dicos
3175212f86fSmrg				;;
3185212f86fSmrg			djgpp)
3195212f86fSmrg				basic_machine=i586-pc
3205212f86fSmrg				basic_os=msdosdjgpp
3215212f86fSmrg				;;
3225212f86fSmrg			ebmon29k)
3235212f86fSmrg				basic_machine=a29k-amd
3245212f86fSmrg				basic_os=ebmon
3255212f86fSmrg				;;
3265212f86fSmrg			es1800 | OSE68k | ose68k | ose | OSE)
3275212f86fSmrg				basic_machine=m68k-ericsson
3285212f86fSmrg				basic_os=ose
3295212f86fSmrg				;;
3305212f86fSmrg			gmicro)
3315212f86fSmrg				basic_machine=tron-gmicro
3325212f86fSmrg				basic_os=sysv
3335212f86fSmrg				;;
3345212f86fSmrg			go32)
3355212f86fSmrg				basic_machine=i386-pc
3365212f86fSmrg				basic_os=go32
3375212f86fSmrg				;;
3385212f86fSmrg			h8300hms)
3395212f86fSmrg				basic_machine=h8300-hitachi
3405212f86fSmrg				basic_os=hms
3415212f86fSmrg				;;
3425212f86fSmrg			h8300xray)
3435212f86fSmrg				basic_machine=h8300-hitachi
3445212f86fSmrg				basic_os=xray
3455212f86fSmrg				;;
3465212f86fSmrg			h8500hms)
3475212f86fSmrg				basic_machine=h8500-hitachi
3485212f86fSmrg				basic_os=hms
3495212f86fSmrg				;;
3505212f86fSmrg			harris)
3515212f86fSmrg				basic_machine=m88k-harris
3525212f86fSmrg				basic_os=sysv3
3535212f86fSmrg				;;
3545212f86fSmrg			hp300 | hp300hpux)
3555212f86fSmrg				basic_machine=m68k-hp
3565212f86fSmrg				basic_os=hpux
3575212f86fSmrg				;;
3585212f86fSmrg			hp300bsd)
3595212f86fSmrg				basic_machine=m68k-hp
3605212f86fSmrg				basic_os=bsd
3615212f86fSmrg				;;
3625212f86fSmrg			hppaosf)
3635212f86fSmrg				basic_machine=hppa1.1-hp
3645212f86fSmrg				basic_os=osf
3655212f86fSmrg				;;
3665212f86fSmrg			hppro)
3675212f86fSmrg				basic_machine=hppa1.1-hp
3685212f86fSmrg				basic_os=proelf
3695212f86fSmrg				;;
3705212f86fSmrg			i386mach)
3715212f86fSmrg				basic_machine=i386-mach
3725212f86fSmrg				basic_os=mach
3735212f86fSmrg				;;
3745212f86fSmrg			isi68 | isi)
3755212f86fSmrg				basic_machine=m68k-isi
3765212f86fSmrg				basic_os=sysv
3775212f86fSmrg				;;
3785212f86fSmrg			m68knommu)
3795212f86fSmrg				basic_machine=m68k-unknown
3805212f86fSmrg				basic_os=linux
3815212f86fSmrg				;;
3825212f86fSmrg			magnum | m3230)
3835212f86fSmrg				basic_machine=mips-mips
3845212f86fSmrg				basic_os=sysv
3855212f86fSmrg				;;
3865212f86fSmrg			merlin)
3875212f86fSmrg				basic_machine=ns32k-utek
3885212f86fSmrg				basic_os=sysv
3895212f86fSmrg				;;
3905212f86fSmrg			mingw64)
3915212f86fSmrg				basic_machine=x86_64-pc
3925212f86fSmrg				basic_os=mingw64
3935212f86fSmrg				;;
3945212f86fSmrg			mingw32)
3955212f86fSmrg				basic_machine=i686-pc
3965212f86fSmrg				basic_os=mingw32
3975212f86fSmrg				;;
3985212f86fSmrg			mingw32ce)
3995212f86fSmrg				basic_machine=arm-unknown
4005212f86fSmrg				basic_os=mingw32ce
4015212f86fSmrg				;;
4025212f86fSmrg			monitor)
4035212f86fSmrg				basic_machine=m68k-rom68k
4045212f86fSmrg				basic_os=coff
4055212f86fSmrg				;;
4065212f86fSmrg			morphos)
4075212f86fSmrg				basic_machine=powerpc-unknown
4085212f86fSmrg				basic_os=morphos
4095212f86fSmrg				;;
4105212f86fSmrg			moxiebox)
4115212f86fSmrg				basic_machine=moxie-unknown
4125212f86fSmrg				basic_os=moxiebox
4135212f86fSmrg				;;
4145212f86fSmrg			msdos)
4155212f86fSmrg				basic_machine=i386-pc
4165212f86fSmrg				basic_os=msdos
4175212f86fSmrg				;;
4185212f86fSmrg			msys)
4195212f86fSmrg				basic_machine=i686-pc
4205212f86fSmrg				basic_os=msys
4215212f86fSmrg				;;
4225212f86fSmrg			mvs)
4235212f86fSmrg				basic_machine=i370-ibm
4245212f86fSmrg				basic_os=mvs
4255212f86fSmrg				;;
4265212f86fSmrg			nacl)
4275212f86fSmrg				basic_machine=le32-unknown
4285212f86fSmrg				basic_os=nacl
4295212f86fSmrg				;;
4305212f86fSmrg			ncr3000)
4315212f86fSmrg				basic_machine=i486-ncr
4325212f86fSmrg				basic_os=sysv4
4335212f86fSmrg				;;
4345212f86fSmrg			netbsd386)
4355212f86fSmrg				basic_machine=i386-pc
4365212f86fSmrg				basic_os=netbsd
4375212f86fSmrg				;;
4385212f86fSmrg			netwinder)
4395212f86fSmrg				basic_machine=armv4l-rebel
4405212f86fSmrg				basic_os=linux
4415212f86fSmrg				;;
4425212f86fSmrg			news | news700 | news800 | news900)
4435212f86fSmrg				basic_machine=m68k-sony
4445212f86fSmrg				basic_os=newsos
4455212f86fSmrg				;;
4465212f86fSmrg			news1000)
4475212f86fSmrg				basic_machine=m68030-sony
4485212f86fSmrg				basic_os=newsos
4495212f86fSmrg				;;
4505212f86fSmrg			necv70)
4515212f86fSmrg				basic_machine=v70-nec
4525212f86fSmrg				basic_os=sysv
4535212f86fSmrg				;;
4545212f86fSmrg			nh3000)
4555212f86fSmrg				basic_machine=m68k-harris
4565212f86fSmrg				basic_os=cxux
4575212f86fSmrg				;;
4585212f86fSmrg			nh[45]000)
4595212f86fSmrg				basic_machine=m88k-harris
4605212f86fSmrg				basic_os=cxux
4615212f86fSmrg				;;
4625212f86fSmrg			nindy960)
4635212f86fSmrg				basic_machine=i960-intel
4645212f86fSmrg				basic_os=nindy
4655212f86fSmrg				;;
4665212f86fSmrg			mon960)
4675212f86fSmrg				basic_machine=i960-intel
4685212f86fSmrg				basic_os=mon960
4695212f86fSmrg				;;
4705212f86fSmrg			nonstopux)
4715212f86fSmrg				basic_machine=mips-compaq
4725212f86fSmrg				basic_os=nonstopux
4735212f86fSmrg				;;
4745212f86fSmrg			os400)
4755212f86fSmrg				basic_machine=powerpc-ibm
4765212f86fSmrg				basic_os=os400
4775212f86fSmrg				;;
4785212f86fSmrg			OSE68000 | ose68000)
4795212f86fSmrg				basic_machine=m68000-ericsson
4805212f86fSmrg				basic_os=ose
4815212f86fSmrg				;;
4825212f86fSmrg			os68k)
4835212f86fSmrg				basic_machine=m68k-none
4845212f86fSmrg				basic_os=os68k
4855212f86fSmrg				;;
4865212f86fSmrg			paragon)
4875212f86fSmrg				basic_machine=i860-intel
4885212f86fSmrg				basic_os=osf
4895212f86fSmrg				;;
4905212f86fSmrg			parisc)
4915212f86fSmrg				basic_machine=hppa-unknown
4925212f86fSmrg				basic_os=linux
4935212f86fSmrg				;;
4945212f86fSmrg			psp)
4955212f86fSmrg				basic_machine=mipsallegrexel-sony
4965212f86fSmrg				basic_os=psp
4975212f86fSmrg				;;
4985212f86fSmrg			pw32)
4995212f86fSmrg				basic_machine=i586-unknown
5005212f86fSmrg				basic_os=pw32
5015212f86fSmrg				;;
5025212f86fSmrg			rdos | rdos64)
5035212f86fSmrg				basic_machine=x86_64-pc
5045212f86fSmrg				basic_os=rdos
5055212f86fSmrg				;;
5065212f86fSmrg			rdos32)
5075212f86fSmrg				basic_machine=i386-pc
5085212f86fSmrg				basic_os=rdos
5095212f86fSmrg				;;
5105212f86fSmrg			rom68k)
5115212f86fSmrg				basic_machine=m68k-rom68k
5125212f86fSmrg				basic_os=coff
5135212f86fSmrg				;;
5145212f86fSmrg			sa29200)
5155212f86fSmrg				basic_machine=a29k-amd
5165212f86fSmrg				basic_os=udi
5175212f86fSmrg				;;
5185212f86fSmrg			sei)
5195212f86fSmrg				basic_machine=mips-sei
5205212f86fSmrg				basic_os=seiux
5215212f86fSmrg				;;
5225212f86fSmrg			sequent)
5235212f86fSmrg				basic_machine=i386-sequent
5245212f86fSmrg				basic_os=
5255212f86fSmrg				;;
5265212f86fSmrg			sps7)
5275212f86fSmrg				basic_machine=m68k-bull
5285212f86fSmrg				basic_os=sysv2
5295212f86fSmrg				;;
5305212f86fSmrg			st2000)
5315212f86fSmrg				basic_machine=m68k-tandem
5325212f86fSmrg				basic_os=
5335212f86fSmrg				;;
5345212f86fSmrg			stratus)
5355212f86fSmrg				basic_machine=i860-stratus
5365212f86fSmrg				basic_os=sysv4
5375212f86fSmrg				;;
5385212f86fSmrg			sun2)
5395212f86fSmrg				basic_machine=m68000-sun
5405212f86fSmrg				basic_os=
5415212f86fSmrg				;;
5425212f86fSmrg			sun2os3)
5435212f86fSmrg				basic_machine=m68000-sun
5445212f86fSmrg				basic_os=sunos3
5455212f86fSmrg				;;
5465212f86fSmrg			sun2os4)
5475212f86fSmrg				basic_machine=m68000-sun
5485212f86fSmrg				basic_os=sunos4
5495212f86fSmrg				;;
5505212f86fSmrg			sun3)
5515212f86fSmrg				basic_machine=m68k-sun
5525212f86fSmrg				basic_os=
5535212f86fSmrg				;;
5545212f86fSmrg			sun3os3)
5555212f86fSmrg				basic_machine=m68k-sun
5565212f86fSmrg				basic_os=sunos3
5575212f86fSmrg				;;
5585212f86fSmrg			sun3os4)
5595212f86fSmrg				basic_machine=m68k-sun
5605212f86fSmrg				basic_os=sunos4
5615212f86fSmrg				;;
5625212f86fSmrg			sun4)
5635212f86fSmrg				basic_machine=sparc-sun
5645212f86fSmrg				basic_os=
5655212f86fSmrg				;;
5665212f86fSmrg			sun4os3)
5675212f86fSmrg				basic_machine=sparc-sun
5685212f86fSmrg				basic_os=sunos3
5695212f86fSmrg				;;
5705212f86fSmrg			sun4os4)
5715212f86fSmrg				basic_machine=sparc-sun
5725212f86fSmrg				basic_os=sunos4
5735212f86fSmrg				;;
5745212f86fSmrg			sun4sol2)
5755212f86fSmrg				basic_machine=sparc-sun
5765212f86fSmrg				basic_os=solaris2
5775212f86fSmrg				;;
5785212f86fSmrg			sun386 | sun386i | roadrunner)
5795212f86fSmrg				basic_machine=i386-sun
5805212f86fSmrg				basic_os=
5815212f86fSmrg				;;
5825212f86fSmrg			sv1)
5835212f86fSmrg				basic_machine=sv1-cray
5845212f86fSmrg				basic_os=unicos
5855212f86fSmrg				;;
5865212f86fSmrg			symmetry)
5875212f86fSmrg				basic_machine=i386-sequent
5885212f86fSmrg				basic_os=dynix
5895212f86fSmrg				;;
5905212f86fSmrg			t3e)
5915212f86fSmrg				basic_machine=alphaev5-cray
5925212f86fSmrg				basic_os=unicos
5935212f86fSmrg				;;
5945212f86fSmrg			t90)
5955212f86fSmrg				basic_machine=t90-cray
5965212f86fSmrg				basic_os=unicos
5975212f86fSmrg				;;
5985212f86fSmrg			toad1)
5995212f86fSmrg				basic_machine=pdp10-xkl
6005212f86fSmrg				basic_os=tops20
6015212f86fSmrg				;;
6025212f86fSmrg			tpf)
6035212f86fSmrg				basic_machine=s390x-ibm
6045212f86fSmrg				basic_os=tpf
6055212f86fSmrg				;;
6065212f86fSmrg			udi29k)
6075212f86fSmrg				basic_machine=a29k-amd
6085212f86fSmrg				basic_os=udi
6095212f86fSmrg				;;
6105212f86fSmrg			ultra3)
6115212f86fSmrg				basic_machine=a29k-nyu
6125212f86fSmrg				basic_os=sym1
6135212f86fSmrg				;;
6145212f86fSmrg			v810 | necv810)
6155212f86fSmrg				basic_machine=v810-nec
6165212f86fSmrg				basic_os=none
6175212f86fSmrg				;;
6185212f86fSmrg			vaxv)
6195212f86fSmrg				basic_machine=vax-dec
6205212f86fSmrg				basic_os=sysv
6215212f86fSmrg				;;
6225212f86fSmrg			vms)
6235212f86fSmrg				basic_machine=vax-dec
6245212f86fSmrg				basic_os=vms
6255212f86fSmrg				;;
6265212f86fSmrg			vsta)
6275212f86fSmrg				basic_machine=i386-pc
6285212f86fSmrg				basic_os=vsta
6295212f86fSmrg				;;
6305212f86fSmrg			vxworks960)
6315212f86fSmrg				basic_machine=i960-wrs
6325212f86fSmrg				basic_os=vxworks
6335212f86fSmrg				;;
6345212f86fSmrg			vxworks68)
6355212f86fSmrg				basic_machine=m68k-wrs
6365212f86fSmrg				basic_os=vxworks
6375212f86fSmrg				;;
6385212f86fSmrg			vxworks29k)
6395212f86fSmrg				basic_machine=a29k-wrs
6405212f86fSmrg				basic_os=vxworks
6415212f86fSmrg				;;
6425212f86fSmrg			xbox)
6435212f86fSmrg				basic_machine=i686-pc
6445212f86fSmrg				basic_os=mingw32
6455212f86fSmrg				;;
6465212f86fSmrg			ymp)
6475212f86fSmrg				basic_machine=ymp-cray
6485212f86fSmrg				basic_os=unicos
6495212f86fSmrg				;;
6505212f86fSmrg			*)
6515212f86fSmrg				basic_machine=$1
6525212f86fSmrg				basic_os=
6535212f86fSmrg				;;
6545212f86fSmrg		esac
6557d5e3a19Smrg		;;
6567d5e3a19Smrgesac
6577d5e3a19Smrg
6585212f86fSmrg# Decode 1-component or ad-hoc basic machines
6597d5e3a19Smrgcase $basic_machine in
6605212f86fSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
6615212f86fSmrg	# some cases the only manufacturer, in others, it is the most popular.
6625212f86fSmrg	w89k)
6635212f86fSmrg		cpu=hppa1.1
6645212f86fSmrg		vendor=winbond
665b8414663Smrg		;;
6665212f86fSmrg	op50n)
6675212f86fSmrg		cpu=hppa1.1
6685212f86fSmrg		vendor=oki
6697d5e3a19Smrg		;;
6705212f86fSmrg	op60c)
6715212f86fSmrg		cpu=hppa1.1
6725212f86fSmrg		vendor=oki
6737d5e3a19Smrg		;;
6745212f86fSmrg	ibm*)
6755212f86fSmrg		cpu=i370
6765212f86fSmrg		vendor=ibm
6777d5e3a19Smrg		;;
6785212f86fSmrg	orion105)
6795212f86fSmrg		cpu=clipper
6805212f86fSmrg		vendor=highlevel
681b8414663Smrg		;;
6825212f86fSmrg	mac | mpw | mac-mpw)
6835212f86fSmrg		cpu=m68k
6845212f86fSmrg		vendor=apple
685b8414663Smrg		;;
6865212f86fSmrg	pmac | pmac-mpw)
6875212f86fSmrg		cpu=powerpc
6885212f86fSmrg		vendor=apple
689b8414663Smrg		;;
690b8414663Smrg
6917d5e3a19Smrg	# Recognize the various machine names and aliases which stand
6927d5e3a19Smrg	# for a CPU type and a company and sometimes even an OS.
6937d5e3a19Smrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
6945212f86fSmrg		cpu=m68000
6955212f86fSmrg		vendor=att
6967d5e3a19Smrg		;;
6977d5e3a19Smrg	3b*)
6985212f86fSmrg		cpu=we32k
6995212f86fSmrg		vendor=att
7001568b75bSmrg		;;
701765486e8Smrg	bluegene*)
7025212f86fSmrg		cpu=powerpc
7035212f86fSmrg		vendor=ibm
7045212f86fSmrg		basic_os=cnk
7057d5e3a19Smrg		;;
7067d5e3a19Smrg	decsystem10* | dec10*)
7075212f86fSmrg		cpu=pdp10
7085212f86fSmrg		vendor=dec
7095212f86fSmrg		basic_os=tops10
7107d5e3a19Smrg		;;
7117d5e3a19Smrg	decsystem20* | dec20*)
7125212f86fSmrg		cpu=pdp10
7135212f86fSmrg		vendor=dec
7145212f86fSmrg		basic_os=tops20
7157d5e3a19Smrg		;;
7167d5e3a19Smrg	delta | 3300 | motorola-3300 | motorola-delta \
7177d5e3a19Smrg	      | 3300-motorola | delta-motorola)
7185212f86fSmrg		cpu=m68k
7195212f86fSmrg		vendor=motorola
7207d5e3a19Smrg		;;
72113e6bc1cSmrg	dpx2*)
7225212f86fSmrg		cpu=m68k
7235212f86fSmrg		vendor=bull
7245212f86fSmrg		basic_os=sysv3
7257d5e3a19Smrg		;;
7267d5e3a19Smrg	encore | umax | mmax)
7275212f86fSmrg		cpu=ns32k
7285212f86fSmrg		vendor=encore
7297d5e3a19Smrg		;;
7305212f86fSmrg	elxsi)
7315212f86fSmrg		cpu=elxsi
7325212f86fSmrg		vendor=elxsi
7335212f86fSmrg		basic_os=${basic_os:-bsd}
7347d5e3a19Smrg		;;
7357d5e3a19Smrg	fx2800)
7365212f86fSmrg		cpu=i860
7375212f86fSmrg		vendor=alliant
7387d5e3a19Smrg		;;
7397d5e3a19Smrg	genix)
7405212f86fSmrg		cpu=ns32k
7415212f86fSmrg		vendor=ns
7427d5e3a19Smrg		;;
7437d5e3a19Smrg	h3050r* | hiux*)
7445212f86fSmrg		cpu=hppa1.1
7455212f86fSmrg		vendor=hitachi
7465212f86fSmrg		basic_os=hiuxwe2
7477d5e3a19Smrg		;;
7487d5e3a19Smrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
7495212f86fSmrg		cpu=hppa1.0
7505212f86fSmrg		vendor=hp
7517d5e3a19Smrg		;;
7527d5e3a19Smrg	hp9k2[0-9][0-9] | hp9k31[0-9])
7535212f86fSmrg		cpu=m68000
7545212f86fSmrg		vendor=hp
7557d5e3a19Smrg		;;
7567d5e3a19Smrg	hp9k3[2-9][0-9])
7575212f86fSmrg		cpu=m68k
7585212f86fSmrg		vendor=hp
7597d5e3a19Smrg		;;
7607d5e3a19Smrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
7615212f86fSmrg		cpu=hppa1.0
7625212f86fSmrg		vendor=hp
7637d5e3a19Smrg		;;
7647d5e3a19Smrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
7655212f86fSmrg		cpu=hppa1.1
7665212f86fSmrg		vendor=hp
7677d5e3a19Smrg		;;
7687d5e3a19Smrg	hp9k78[0-9] | hp78[0-9])
7697d5e3a19Smrg		# FIXME: really hppa2.0-hp
7705212f86fSmrg		cpu=hppa1.1
7715212f86fSmrg		vendor=hp
7727d5e3a19Smrg		;;
7737d5e3a19Smrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
7747d5e3a19Smrg		# FIXME: really hppa2.0-hp
7755212f86fSmrg		cpu=hppa1.1
7765212f86fSmrg		vendor=hp
7777d5e3a19Smrg		;;
7787d5e3a19Smrg	hp9k8[0-9][13679] | hp8[0-9][13679])
7795212f86fSmrg		cpu=hppa1.1
7805212f86fSmrg		vendor=hp
7817d5e3a19Smrg		;;
7827d5e3a19Smrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
7835212f86fSmrg		cpu=hppa1.0
7845212f86fSmrg		vendor=hp
7857d5e3a19Smrg		;;
7867d5e3a19Smrg	i*86v32)
7875212f86fSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7885212f86fSmrg		vendor=pc
7895212f86fSmrg		basic_os=sysv32
7907d5e3a19Smrg		;;
7917d5e3a19Smrg	i*86v4*)
7925212f86fSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7935212f86fSmrg		vendor=pc
7945212f86fSmrg		basic_os=sysv4
7957d5e3a19Smrg		;;
7967d5e3a19Smrg	i*86v)
7975212f86fSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
7985212f86fSmrg		vendor=pc
7995212f86fSmrg		basic_os=sysv
8007d5e3a19Smrg		;;
8017d5e3a19Smrg	i*86sol2)
8025212f86fSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
8035212f86fSmrg		vendor=pc
8045212f86fSmrg		basic_os=solaris2
8057d5e3a19Smrg		;;
8065212f86fSmrg	j90 | j90-cray)
8075212f86fSmrg		cpu=j90
8085212f86fSmrg		vendor=cray
8095212f86fSmrg		basic_os=${basic_os:-unicos}
8107d5e3a19Smrg		;;
8117d5e3a19Smrg	iris | iris4d)
8125212f86fSmrg		cpu=mips
8135212f86fSmrg		vendor=sgi
8145212f86fSmrg		case $basic_os in
8155212f86fSmrg		    irix*)
8167d5e3a19Smrg			;;
8177d5e3a19Smrg		    *)
8185212f86fSmrg			basic_os=irix4
8197d5e3a19Smrg			;;
8207d5e3a19Smrg		esac
8217d5e3a19Smrg		;;
8227d5e3a19Smrg	miniframe)
8235212f86fSmrg		cpu=m68000
8245212f86fSmrg		vendor=convergent
8257d5e3a19Smrg		;;
8265212f86fSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
8275212f86fSmrg		cpu=m68k
8285212f86fSmrg		vendor=atari
8295212f86fSmrg		basic_os=mint
8307d5e3a19Smrg		;;
8317d5e3a19Smrg	news-3600 | risc-news)
8325212f86fSmrg		cpu=mips
8335212f86fSmrg		vendor=sony
8345212f86fSmrg		basic_os=newsos
8357d5e3a19Smrg		;;
83613e6bc1cSmrg	next | m*-next)
8375212f86fSmrg		cpu=m68k
8385212f86fSmrg		vendor=next
8395212f86fSmrg		case $basic_os in
8405212f86fSmrg		    openstep*)
8415212f86fSmrg		        ;;
8425212f86fSmrg		    nextstep*)
8437d5e3a19Smrg			;;
8445212f86fSmrg		    ns2*)
8455212f86fSmrg		      basic_os=nextstep2
8467d5e3a19Smrg			;;
8477d5e3a19Smrg		    *)
8485212f86fSmrg		      basic_os=nextstep3
8497d5e3a19Smrg			;;
8507d5e3a19Smrg		esac
8517d5e3a19Smrg		;;
8527d5e3a19Smrg	np1)
8535212f86fSmrg		cpu=np1
8545212f86fSmrg		vendor=gould
85513e6bc1cSmrg		;;
8567d5e3a19Smrg	op50n-* | op60c-*)
8575212f86fSmrg		cpu=hppa1.1
8585212f86fSmrg		vendor=oki
8595212f86fSmrg		basic_os=proelf
8607d5e3a19Smrg		;;
8617d5e3a19Smrg	pa-hitachi)
8625212f86fSmrg		cpu=hppa1.1
8635212f86fSmrg		vendor=hitachi
8645212f86fSmrg		basic_os=hiuxwe2
8651568b75bSmrg		;;
8667d5e3a19Smrg	pbd)
8675212f86fSmrg		cpu=sparc
8685212f86fSmrg		vendor=tti
8697d5e3a19Smrg		;;
8707d5e3a19Smrg	pbb)
8715212f86fSmrg		cpu=m68k
8725212f86fSmrg		vendor=tti
8737d5e3a19Smrg		;;
8745212f86fSmrg	pc532)
8755212f86fSmrg		cpu=ns32k
8765212f86fSmrg		vendor=pc532
8777d5e3a19Smrg		;;
8787d5e3a19Smrg	pn)
8795212f86fSmrg		cpu=pn
8805212f86fSmrg		vendor=gould
8817d5e3a19Smrg		;;
8825212f86fSmrg	power)
8835212f86fSmrg		cpu=power
8845212f86fSmrg		vendor=ibm
8857d5e3a19Smrg		;;
8865212f86fSmrg	ps2)
8875212f86fSmrg		cpu=i386
8885212f86fSmrg		vendor=ibm
8897d5e3a19Smrg		;;
8905212f86fSmrg	rm[46]00)
8915212f86fSmrg		cpu=mips
8925212f86fSmrg		vendor=siemens
8937d5e3a19Smrg		;;
8945212f86fSmrg	rtpc | rtpc-*)
8955212f86fSmrg		cpu=romp
8965212f86fSmrg		vendor=ibm
8977d5e3a19Smrg		;;
8985212f86fSmrg	sde)
8995212f86fSmrg		cpu=mipsisa32
9005212f86fSmrg		vendor=sde
9015212f86fSmrg		basic_os=${basic_os:-elf}
9027d5e3a19Smrg		;;
9035212f86fSmrg	simso-wrs)
9045212f86fSmrg		cpu=sparclite
9055212f86fSmrg		vendor=wrs
9065212f86fSmrg		basic_os=vxworks
9077d5e3a19Smrg		;;
9085212f86fSmrg	tower | tower-32)
9095212f86fSmrg		cpu=m68k
9105212f86fSmrg		vendor=ncr
9117d5e3a19Smrg		;;
9125212f86fSmrg	vpp*|vx|vx-*)
9135212f86fSmrg		cpu=f301
9145212f86fSmrg		vendor=fujitsu
915b8414663Smrg		;;
9165212f86fSmrg	w65)
9175212f86fSmrg		cpu=w65
9185212f86fSmrg		vendor=wdc
9197d5e3a19Smrg		;;
9205212f86fSmrg	w89k-*)
9215212f86fSmrg		cpu=hppa1.1
9225212f86fSmrg		vendor=winbond
9235212f86fSmrg		basic_os=proelf
9247d5e3a19Smrg		;;
9255212f86fSmrg	none)
9265212f86fSmrg		cpu=none
9275212f86fSmrg		vendor=none
9287d5e3a19Smrg		;;
9295212f86fSmrg	leon|leon[3-9])
9305212f86fSmrg		cpu=sparc
9315212f86fSmrg		vendor=$basic_machine
9327d5e3a19Smrg		;;
9335212f86fSmrg	leon-*|leon[3-9]-*)
9345212f86fSmrg		cpu=sparc
9355212f86fSmrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
9367d5e3a19Smrg		;;
9375212f86fSmrg
9385212f86fSmrg	*-*)
9395212f86fSmrg		# shellcheck disable=SC2162
9405212f86fSmrg		saved_IFS=$IFS
9415212f86fSmrg		IFS="-" read cpu vendor <<EOF
9425212f86fSmrg$basic_machine
9435212f86fSmrgEOF
9445212f86fSmrg		IFS=$saved_IFS
9457d5e3a19Smrg		;;
9465212f86fSmrg	# We use `pc' rather than `unknown'
9475212f86fSmrg	# because (1) that's what they normally are, and
9485212f86fSmrg	# (2) the word "unknown" tends to confuse beginning users.
9495212f86fSmrg	i*86 | x86_64)
9505212f86fSmrg		cpu=$basic_machine
9515212f86fSmrg		vendor=pc
9527d5e3a19Smrg		;;
9535212f86fSmrg	# These rules are duplicated from below for sake of the special case above;
9545212f86fSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
9555212f86fSmrg	pc98)
9565212f86fSmrg		cpu=i386
9575212f86fSmrg		vendor=pc
9587d5e3a19Smrg		;;
9595212f86fSmrg	x64 | amd64)
9605212f86fSmrg		cpu=x86_64
9615212f86fSmrg		vendor=pc
9627d5e3a19Smrg		;;
9635212f86fSmrg	# Recognize the basic CPU types without company name.
9645212f86fSmrg	*)
9655212f86fSmrg		cpu=$basic_machine
9665212f86fSmrg		vendor=unknown
9677d5e3a19Smrg		;;
9685212f86fSmrgesac
9695212f86fSmrg
9705212f86fSmrgunset -v basic_machine
9715212f86fSmrg
9725212f86fSmrg# Decode basic machines in the full and proper CPU-Company form.
9735212f86fSmrgcase $cpu-$vendor in
9745212f86fSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
9755212f86fSmrg	# some cases the only manufacturer, in others, it is the most popular.
9765212f86fSmrg	craynv-unknown)
9775212f86fSmrg		vendor=cray
9785212f86fSmrg		basic_os=${basic_os:-unicosmp}
9797d5e3a19Smrg		;;
9805212f86fSmrg	c90-unknown | c90-cray)
9815212f86fSmrg		vendor=cray
9825212f86fSmrg		basic_os=${Basic_os:-unicos}
9837d5e3a19Smrg		;;
9845212f86fSmrg	fx80-unknown)
9855212f86fSmrg		vendor=alliant
9861568b75bSmrg		;;
9875212f86fSmrg	romp-unknown)
9885212f86fSmrg		vendor=ibm
9897d5e3a19Smrg		;;
9905212f86fSmrg	mmix-unknown)
9915212f86fSmrg		vendor=knuth
9927d5e3a19Smrg		;;
9935212f86fSmrg	microblaze-unknown | microblazeel-unknown)
9945212f86fSmrg		vendor=xilinx
9957d5e3a19Smrg		;;
9965212f86fSmrg	rs6000-unknown)
9975212f86fSmrg		vendor=ibm
9987d5e3a19Smrg		;;
9995212f86fSmrg	vax-unknown)
10005212f86fSmrg		vendor=dec
10017d5e3a19Smrg		;;
10025212f86fSmrg	pdp11-unknown)
10035212f86fSmrg		vendor=dec
1004b8414663Smrg		;;
10055212f86fSmrg	we32k-unknown)
10065212f86fSmrg		vendor=att
10077d5e3a19Smrg		;;
10085212f86fSmrg	cydra-unknown)
10095212f86fSmrg		vendor=cydrome
10107d5e3a19Smrg		;;
10115212f86fSmrg	i370-ibm*)
10125212f86fSmrg		vendor=ibm
10137d5e3a19Smrg		;;
10145212f86fSmrg	orion-unknown)
10155212f86fSmrg		vendor=highlevel
10167d5e3a19Smrg		;;
10175212f86fSmrg	xps-unknown | xps100-unknown)
10185212f86fSmrg		cpu=xps100
10195212f86fSmrg		vendor=honeywell
10207d5e3a19Smrg		;;
10215212f86fSmrg
10225212f86fSmrg	# Here we normalize CPU types with a missing or matching vendor
10237f6d8fe2Smrg	armh-unknown | armh-alt)
10247f6d8fe2Smrg		cpu=armv7l
10257f6d8fe2Smrg		vendor=alt
10267f6d8fe2Smrg		basic_os=${basic_os:-linux-gnueabihf}
10277f6d8fe2Smrg		;;
10285212f86fSmrg	dpx20-unknown | dpx20-bull)
10295212f86fSmrg		cpu=rs6000
10305212f86fSmrg		vendor=bull
10315212f86fSmrg		basic_os=${basic_os:-bosx}
10327d5e3a19Smrg		;;
10335212f86fSmrg
10345212f86fSmrg	# Here we normalize CPU types irrespective of the vendor
10355212f86fSmrg	amd64-*)
10365212f86fSmrg		cpu=x86_64
10377d5e3a19Smrg		;;
10385212f86fSmrg	blackfin-*)
10395212f86fSmrg		cpu=bfin
10405212f86fSmrg		basic_os=linux
10417d5e3a19Smrg		;;
10425212f86fSmrg	c54x-*)
10435212f86fSmrg		cpu=tic54x
10447d5e3a19Smrg		;;
10455212f86fSmrg	c55x-*)
10465212f86fSmrg		cpu=tic55x
10477d5e3a19Smrg		;;
10485212f86fSmrg	c6x-*)
10495212f86fSmrg		cpu=tic6x
10507d5e3a19Smrg		;;
10515212f86fSmrg	e500v[12]-*)
10525212f86fSmrg		cpu=powerpc
10535212f86fSmrg		basic_os=${basic_os}"spe"
10547d5e3a19Smrg		;;
10555212f86fSmrg	mips3*-*)
10565212f86fSmrg		cpu=mips64
10577d5e3a19Smrg		;;
10585212f86fSmrg	ms1-*)
10595212f86fSmrg		cpu=mt
10607d5e3a19Smrg		;;
10615212f86fSmrg	m68knommu-*)
10625212f86fSmrg		cpu=m68k
10635212f86fSmrg		basic_os=linux
10647d5e3a19Smrg		;;
10655212f86fSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
10665212f86fSmrg		cpu=s12z
10671568b75bSmrg		;;
10685212f86fSmrg	openrisc-*)
10695212f86fSmrg		cpu=or32
10707d5e3a19Smrg		;;
10715212f86fSmrg	parisc-*)
10725212f86fSmrg		cpu=hppa
10735212f86fSmrg		basic_os=linux
10747d5e3a19Smrg		;;
10755212f86fSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
10765212f86fSmrg		cpu=i586
10777d5e3a19Smrg		;;
10785212f86fSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
10795212f86fSmrg		cpu=i686
10807d5e3a19Smrg		;;
10815212f86fSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
10825212f86fSmrg		cpu=i686
10837d5e3a19Smrg		;;
10845212f86fSmrg	pentium4-*)
10855212f86fSmrg		cpu=i786
10867d5e3a19Smrg		;;
10875212f86fSmrg	pc98-*)
10885212f86fSmrg		cpu=i386
10897d5e3a19Smrg		;;
10905212f86fSmrg	ppc-* | ppcbe-*)
10915212f86fSmrg		cpu=powerpc
10927d5e3a19Smrg		;;
10935212f86fSmrg	ppcle-* | powerpclittle-*)
10945212f86fSmrg		cpu=powerpcle
10957d5e3a19Smrg		;;
10965212f86fSmrg	ppc64-*)
10975212f86fSmrg		cpu=powerpc64
10987d5e3a19Smrg		;;
10995212f86fSmrg	ppc64le-* | powerpc64little-*)
11005212f86fSmrg		cpu=powerpc64le
11017d5e3a19Smrg		;;
11025212f86fSmrg	sb1-*)
11035212f86fSmrg		cpu=mipsisa64sb1
11047d5e3a19Smrg		;;
11055212f86fSmrg	sb1el-*)
11065212f86fSmrg		cpu=mipsisa64sb1el
11077d5e3a19Smrg		;;
11085212f86fSmrg	sh5e[lb]-*)
11095212f86fSmrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
11107d5e3a19Smrg		;;
11115212f86fSmrg	spur-*)
11125212f86fSmrg		cpu=spur
11137d5e3a19Smrg		;;
11145212f86fSmrg	strongarm-* | thumb-*)
11155212f86fSmrg		cpu=arm
11167d5e3a19Smrg		;;
11175212f86fSmrg	tx39-*)
11185212f86fSmrg		cpu=mipstx39
111913e6bc1cSmrg		;;
11205212f86fSmrg	tx39el-*)
11215212f86fSmrg		cpu=mipstx39el
11227d5e3a19Smrg		;;
11235212f86fSmrg	x64-*)
11245212f86fSmrg		cpu=x86_64
11257d5e3a19Smrg		;;
1126b8414663Smrg	xscale-* | xscalee[bl]-*)
11275212f86fSmrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
11287d5e3a19Smrg		;;
11297f6d8fe2Smrg	arm64-* | aarch64le-*)
11305212f86fSmrg		cpu=aarch64
11317d5e3a19Smrg		;;
11327d5e3a19Smrg
11335212f86fSmrg	# Recognize the canonical CPU Types that limit and/or modify the
11345212f86fSmrg	# company names they are paired with.
11355212f86fSmrg	cr16-*)
11365212f86fSmrg		basic_os=${basic_os:-elf}
11377d5e3a19Smrg		;;
11385212f86fSmrg	crisv32-* | etraxfs*-*)
11395212f86fSmrg		cpu=crisv32
11405212f86fSmrg		vendor=axis
11417d5e3a19Smrg		;;
11425212f86fSmrg	cris-* | etrax*-*)
11435212f86fSmrg		cpu=cris
11445212f86fSmrg		vendor=axis
11457d5e3a19Smrg		;;
11465212f86fSmrg	crx-*)
11475212f86fSmrg		basic_os=${basic_os:-elf}
11487d5e3a19Smrg		;;
11495212f86fSmrg	neo-tandem)
11505212f86fSmrg		cpu=neo
11515212f86fSmrg		vendor=tandem
11527d5e3a19Smrg		;;
11535212f86fSmrg	nse-tandem)
11545212f86fSmrg		cpu=nse
11555212f86fSmrg		vendor=tandem
11567d5e3a19Smrg		;;
11575212f86fSmrg	nsr-tandem)
11585212f86fSmrg		cpu=nsr
11595212f86fSmrg		vendor=tandem
11607d5e3a19Smrg		;;
11615212f86fSmrg	nsv-tandem)
11625212f86fSmrg		cpu=nsv
11635212f86fSmrg		vendor=tandem
11647d5e3a19Smrg		;;
11655212f86fSmrg	nsx-tandem)
11665212f86fSmrg		cpu=nsx
11675212f86fSmrg		vendor=tandem
11687d5e3a19Smrg		;;
11695212f86fSmrg	mipsallegrexel-sony)
11705212f86fSmrg		cpu=mipsallegrexel
11715212f86fSmrg		vendor=sony
11727d5e3a19Smrg		;;
11735212f86fSmrg	tile*-*)
11745212f86fSmrg		basic_os=${basic_os:-linux-gnu}
11757d5e3a19Smrg		;;
11765212f86fSmrg
11777d5e3a19Smrg	*)
11785212f86fSmrg		# Recognize the canonical CPU types that are allowed with any
11795212f86fSmrg		# company name.
11805212f86fSmrg		case $cpu in
11815212f86fSmrg			1750a | 580 \
11825212f86fSmrg			| a29k \
11835212f86fSmrg			| aarch64 | aarch64_be \
11845212f86fSmrg			| abacus \
11855212f86fSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
11865212f86fSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
11875212f86fSmrg			| alphapca5[67] | alpha64pca5[67] \
11885212f86fSmrg			| am33_2.0 \
11895212f86fSmrg			| amdgcn \
11905212f86fSmrg			| arc | arceb | arc32 | arc64 \
11915212f86fSmrg			| arm | arm[lb]e | arme[lb] | armv* \
11925212f86fSmrg			| avr | avr32 \
11935212f86fSmrg			| asmjs \
11945212f86fSmrg			| ba \
11955212f86fSmrg			| be32 | be64 \
11965212f86fSmrg			| bfin | bpf | bs2000 \
11975212f86fSmrg			| c[123]* | c30 | [cjt]90 | c4x \
11985212f86fSmrg			| c8051 | clipper | craynv | csky | cydra \
11995212f86fSmrg			| d10v | d30v | dlx | dsp16xx \
12005212f86fSmrg			| e2k | elxsi | epiphany \
12015212f86fSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
12025212f86fSmrg			| h8300 | h8500 \
12035212f86fSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
12045212f86fSmrg			| hexagon \
12055212f86fSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
12065212f86fSmrg			| ip2k | iq2000 \
12075212f86fSmrg			| k1om \
12085212f86fSmrg			| le32 | le64 \
12095212f86fSmrg			| lm32 \
12105212f86fSmrg			| loongarch32 | loongarch64 | loongarchx32 \
12115212f86fSmrg			| m32c | m32r | m32rle \
12125212f86fSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
12135212f86fSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
12145212f86fSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
12155212f86fSmrg			| microblaze | microblazeel \
12165212f86fSmrg			| mips | mipsbe | mipseb | mipsel | mipsle \
12175212f86fSmrg			| mips16 \
12185212f86fSmrg			| mips64 | mips64eb | mips64el \
12195212f86fSmrg			| mips64octeon | mips64octeonel \
12205212f86fSmrg			| mips64orion | mips64orionel \
12215212f86fSmrg			| mips64r5900 | mips64r5900el \
12225212f86fSmrg			| mips64vr | mips64vrel \
12235212f86fSmrg			| mips64vr4100 | mips64vr4100el \
12245212f86fSmrg			| mips64vr4300 | mips64vr4300el \
12255212f86fSmrg			| mips64vr5000 | mips64vr5000el \
12265212f86fSmrg			| mips64vr5900 | mips64vr5900el \
12275212f86fSmrg			| mipsisa32 | mipsisa32el \
12285212f86fSmrg			| mipsisa32r2 | mipsisa32r2el \
12295212f86fSmrg			| mipsisa32r3 | mipsisa32r3el \
12305212f86fSmrg			| mipsisa32r5 | mipsisa32r5el \
12315212f86fSmrg			| mipsisa32r6 | mipsisa32r6el \
12325212f86fSmrg			| mipsisa64 | mipsisa64el \
12335212f86fSmrg			| mipsisa64r2 | mipsisa64r2el \
12345212f86fSmrg			| mipsisa64r3 | mipsisa64r3el \
12355212f86fSmrg			| mipsisa64r5 | mipsisa64r5el \
12365212f86fSmrg			| mipsisa64r6 | mipsisa64r6el \
12375212f86fSmrg			| mipsisa64sb1 | mipsisa64sb1el \
12385212f86fSmrg			| mipsisa64sr71k | mipsisa64sr71kel \
12395212f86fSmrg			| mipsr5900 | mipsr5900el \
12405212f86fSmrg			| mipstx39 | mipstx39el \
12415212f86fSmrg			| mmix \
12425212f86fSmrg			| mn10200 | mn10300 \
12435212f86fSmrg			| moxie \
12445212f86fSmrg			| mt \
12455212f86fSmrg			| msp430 \
12465212f86fSmrg			| nds32 | nds32le | nds32be \
12475212f86fSmrg			| nfp \
12485212f86fSmrg			| nios | nios2 | nios2eb | nios2el \
12495212f86fSmrg			| none | np1 | ns16k | ns32k | nvptx \
12505212f86fSmrg			| open8 \
12515212f86fSmrg			| or1k* \
12525212f86fSmrg			| or32 \
12535212f86fSmrg			| orion \
12545212f86fSmrg			| picochip \
12555212f86fSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
12565212f86fSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
12575212f86fSmrg			| pru \
12585212f86fSmrg			| pyramid \
12595212f86fSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
12605212f86fSmrg			| rl78 | romp | rs6000 | rx \
12615212f86fSmrg			| s390 | s390x \
12625212f86fSmrg			| score \
12635212f86fSmrg			| sh | shl \
12645212f86fSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
12655212f86fSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
12665212f86fSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
12675212f86fSmrg			| sparclite \
12685212f86fSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
12695212f86fSmrg			| spu \
12705212f86fSmrg			| tahoe \
12715212f86fSmrg			| thumbv7* \
12725212f86fSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
12735212f86fSmrg			| tron \
12745212f86fSmrg			| ubicom32 \
12755212f86fSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
12765212f86fSmrg			| vax \
12775212f86fSmrg			| visium \
12785212f86fSmrg			| w65 \
12795212f86fSmrg			| wasm32 | wasm64 \
12805212f86fSmrg			| we32k \
12815212f86fSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
12825212f86fSmrg			| xstormy16 | xtensa* \
12835212f86fSmrg			| ymp \
12845212f86fSmrg			| z8k | z80)
12855212f86fSmrg				;;
12865212f86fSmrg
12875212f86fSmrg			*)
12885212f86fSmrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
12895212f86fSmrg				exit 1
12905212f86fSmrg				;;
12915212f86fSmrg		esac
12927d5e3a19Smrg		;;
12937d5e3a19Smrgesac
12947d5e3a19Smrg
12957d5e3a19Smrg# Here we canonicalize certain aliases for manufacturers.
12965212f86fSmrgcase $vendor in
12975212f86fSmrg	digital*)
12985212f86fSmrg		vendor=dec
12997d5e3a19Smrg		;;
13005212f86fSmrg	commodore*)
13015212f86fSmrg		vendor=cbm
13027d5e3a19Smrg		;;
13037d5e3a19Smrg	*)
13047d5e3a19Smrg		;;
13057d5e3a19Smrgesac
13067d5e3a19Smrg
13077d5e3a19Smrg# Decode manufacturer-specific aliases for certain operating systems.
13087d5e3a19Smrg
13095212f86fSmrgif test x$basic_os != x
13107d5e3a19Smrgthen
13115212f86fSmrg
13127f6d8fe2Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
13135212f86fSmrg# set os.
13145212f86fSmrgcase $basic_os in
13155212f86fSmrg	gnu/linux*)
13165212f86fSmrg		kernel=linux
13175212f86fSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
13185212f86fSmrg		;;
13195212f86fSmrg	os2-emx)
13205212f86fSmrg		kernel=os2
13215212f86fSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
13225212f86fSmrg		;;
13235212f86fSmrg	nto-qnx*)
13245212f86fSmrg		kernel=nto
13255212f86fSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
13265212f86fSmrg		;;
13275212f86fSmrg	*-*)
13285212f86fSmrg		# shellcheck disable=SC2162
13295212f86fSmrg		saved_IFS=$IFS
13305212f86fSmrg		IFS="-" read kernel os <<EOF
13315212f86fSmrg$basic_os
13325212f86fSmrgEOF
13335212f86fSmrg		IFS=$saved_IFS
13345212f86fSmrg		;;
13355212f86fSmrg	# Default OS when just kernel was specified
13365212f86fSmrg	nto*)
13375212f86fSmrg		kernel=nto
13385212f86fSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
13395212f86fSmrg		;;
13405212f86fSmrg	linux*)
13415212f86fSmrg		kernel=linux
13425212f86fSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
13435212f86fSmrg		;;
13445212f86fSmrg	*)
13455212f86fSmrg		kernel=
13465212f86fSmrg		os=$basic_os
13475212f86fSmrg		;;
13485212f86fSmrgesac
13495212f86fSmrg
13505212f86fSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
13515212f86fSmrg# etc.)
13527d5e3a19Smrgcase $os in
135313e6bc1cSmrg	# First match some system type aliases that might get confused
135413e6bc1cSmrg	# with valid system types.
13555212f86fSmrg	# solaris* is a basic system type, with this one exception.
13565212f86fSmrg	auroraux)
13575212f86fSmrg		os=auroraux
1358765486e8Smrg		;;
13595212f86fSmrg	bluegene*)
13605212f86fSmrg		os=cnk
13617d5e3a19Smrg		;;
13625212f86fSmrg	solaris1 | solaris1.*)
13635212f86fSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
13647d5e3a19Smrg		;;
13655212f86fSmrg	solaris)
13665212f86fSmrg		os=solaris2
13677d5e3a19Smrg		;;
13685212f86fSmrg	unixware*)
13695212f86fSmrg		os=sysv4.2uw
13707d5e3a19Smrg		;;
137113e6bc1cSmrg	# es1800 is here to avoid being matched by es* (a different OS)
13725212f86fSmrg	es1800*)
13735212f86fSmrg		os=ose
137413e6bc1cSmrg		;;
13755212f86fSmrg	# Some version numbers need modification
13765212f86fSmrg	chorusos*)
13775212f86fSmrg		os=chorusos
13787d5e3a19Smrg		;;
13795212f86fSmrg	isc)
13805212f86fSmrg		os=isc2.2
13817d5e3a19Smrg		;;
13825212f86fSmrg	sco6)
13835212f86fSmrg		os=sco5v6
13847d5e3a19Smrg		;;
13855212f86fSmrg	sco5)
13865212f86fSmrg		os=sco3.2v5
13877d5e3a19Smrg		;;
13885212f86fSmrg	sco4)
13895212f86fSmrg		os=sco3.2v4
13907d5e3a19Smrg		;;
13915212f86fSmrg	sco3.2.[4-9]*)
13925212f86fSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
13937d5e3a19Smrg		;;
13945212f86fSmrg	sco*v* | scout)
13955212f86fSmrg		# Don't match below
13967d5e3a19Smrg		;;
13975212f86fSmrg	sco*)
13985212f86fSmrg		os=sco3.2v2
13997d5e3a19Smrg		;;
14005212f86fSmrg	psos*)
14015212f86fSmrg		os=psos
14027d5e3a19Smrg		;;
14035212f86fSmrg	qnx*)
14045212f86fSmrg		os=qnx
14057d5e3a19Smrg		;;
14065212f86fSmrg	hiux*)
14075212f86fSmrg		os=hiuxwe2
14087d5e3a19Smrg		;;
14095212f86fSmrg	lynx*178)
14105212f86fSmrg		os=lynxos178
14117d5e3a19Smrg		;;
14125212f86fSmrg	lynx*5)
14135212f86fSmrg		os=lynxos5
14147d5e3a19Smrg		;;
14155212f86fSmrg	lynxos*)
14165212f86fSmrg		# don't get caught up in next wildcard
14177d5e3a19Smrg		;;
14185212f86fSmrg	lynx*)
14195212f86fSmrg		os=lynxos
14207d5e3a19Smrg		;;
14215212f86fSmrg	mac[0-9]*)
14225212f86fSmrg		os=`echo "$os" | sed -e 's|mac|macos|'`
14237d5e3a19Smrg		;;
14245212f86fSmrg	opened*)
14255212f86fSmrg		os=openedition
14267d5e3a19Smrg		;;
14275212f86fSmrg	os400*)
14285212f86fSmrg		os=os400
14297d5e3a19Smrg		;;
14305212f86fSmrg	sunos5*)
14315212f86fSmrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
14327d5e3a19Smrg		;;
14335212f86fSmrg	sunos6*)
14345212f86fSmrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
14357d5e3a19Smrg		;;
14365212f86fSmrg	wince*)
14375212f86fSmrg		os=wince
14387d5e3a19Smrg		;;
14395212f86fSmrg	utek*)
14405212f86fSmrg		os=bsd
14417d5e3a19Smrg		;;
14425212f86fSmrg	dynix*)
14435212f86fSmrg		os=bsd
14447d5e3a19Smrg		;;
14455212f86fSmrg	acis*)
14465212f86fSmrg		os=aos
14477d5e3a19Smrg		;;
14485212f86fSmrg	atheos*)
14495212f86fSmrg		os=atheos
14507d5e3a19Smrg		;;
14515212f86fSmrg	syllable*)
14525212f86fSmrg		os=syllable
14535212f86fSmrg		;;
14545212f86fSmrg	386bsd)
14555212f86fSmrg		os=bsd
14565212f86fSmrg		;;
14575212f86fSmrg	ctix* | uts*)
14585212f86fSmrg		os=sysv
14595212f86fSmrg		;;
14605212f86fSmrg	nova*)
14615212f86fSmrg		os=rtmk-nova
14625212f86fSmrg		;;
14635212f86fSmrg	ns2)
14645212f86fSmrg		os=nextstep2
14655212f86fSmrg		;;
14665212f86fSmrg	# Preserve the version number of sinix5.
14675212f86fSmrg	sinix5.*)
14685212f86fSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
14697d5e3a19Smrg		;;
14705212f86fSmrg	sinix*)
14715212f86fSmrg		os=sysv4
14727d5e3a19Smrg		;;
14735212f86fSmrg	tpf*)
14745212f86fSmrg		os=tpf
14757d5e3a19Smrg		;;
14765212f86fSmrg	triton*)
14775212f86fSmrg		os=sysv3
14787d5e3a19Smrg		;;
14795212f86fSmrg	oss*)
14805212f86fSmrg		os=sysv3
14817d5e3a19Smrg		;;
14825212f86fSmrg	svr4*)
14835212f86fSmrg		os=sysv4
14847d5e3a19Smrg		;;
14855212f86fSmrg	svr3)
14865212f86fSmrg		os=sysv3
14877d5e3a19Smrg		;;
14885212f86fSmrg	sysvr4)
14895212f86fSmrg		os=sysv4
14907d5e3a19Smrg		;;
14915212f86fSmrg	ose*)
14925212f86fSmrg		os=ose
14937d5e3a19Smrg		;;
14945212f86fSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
14955212f86fSmrg		os=mint
1496765486e8Smrg		;;
14975212f86fSmrg	dicos*)
14985212f86fSmrg		os=dicos
14995212f86fSmrg		;;
15005212f86fSmrg	pikeos*)
150113e6bc1cSmrg		# Until real need of OS specific support for
150213e6bc1cSmrg		# particular features comes up, bare metal
150313e6bc1cSmrg		# configurations are quite functional.
15045212f86fSmrg		case $cpu in
150513e6bc1cSmrg		    arm*)
15065212f86fSmrg			os=eabi
150713e6bc1cSmrg			;;
150813e6bc1cSmrg		    *)
15095212f86fSmrg			os=elf
151013e6bc1cSmrg			;;
151113e6bc1cSmrg		esac
151213e6bc1cSmrg		;;
15137d5e3a19Smrg	*)
15145212f86fSmrg		# No normalization, but not necessarily accepted, that comes below.
15157d5e3a19Smrg		;;
15167d5e3a19Smrgesac
15175212f86fSmrg
15187d5e3a19Smrgelse
15197d5e3a19Smrg
15207d5e3a19Smrg# Here we handle the default operating systems that come with various machines.
15217d5e3a19Smrg# The value should be what the vendor currently ships out the door with their
15227d5e3a19Smrg# machine or put another way, the most popular os provided with the machine.
15237d5e3a19Smrg
15247d5e3a19Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
15257d5e3a19Smrg# "-sun"), then you have to tell the case statement up towards the top
15267d5e3a19Smrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
15277d5e3a19Smrg# will signal an error saying that MANUFACTURER isn't an operating
15287d5e3a19Smrg# system, and we'll never get to this point.
15297d5e3a19Smrg
15305212f86fSmrgkernel=
15315212f86fSmrgcase $cpu-$vendor in
1532b8414663Smrg	score-*)
15335212f86fSmrg		os=elf
15347d5e3a19Smrg		;;
1535b8414663Smrg	spu-*)
15365212f86fSmrg		os=elf
15377d5e3a19Smrg		;;
15387d5e3a19Smrg	*-acorn)
15395212f86fSmrg		os=riscix1.2
15407d5e3a19Smrg		;;
15417d5e3a19Smrg	arm*-rebel)
15425212f86fSmrg		kernel=linux
15435212f86fSmrg		os=gnu
15447d5e3a19Smrg		;;
15457d5e3a19Smrg	arm*-semi)
15465212f86fSmrg		os=aout
15477d5e3a19Smrg		;;
1548b8414663Smrg	c4x-* | tic4x-*)
15495212f86fSmrg		os=coff
1550b8414663Smrg		;;
1551b8414663Smrg	c8051-*)
15525212f86fSmrg		os=elf
15535212f86fSmrg		;;
15545212f86fSmrg	clipper-intergraph)
15555212f86fSmrg		os=clix
1556b8414663Smrg		;;
1557b8414663Smrg	hexagon-*)
15585212f86fSmrg		os=elf
15597d5e3a19Smrg		;;
1560bda5b58fSmrg	tic54x-*)
15615212f86fSmrg		os=coff
1562bda5b58fSmrg		;;
1563bda5b58fSmrg	tic55x-*)
15645212f86fSmrg		os=coff
1565bda5b58fSmrg		;;
1566bda5b58fSmrg	tic6x-*)
15675212f86fSmrg		os=coff
1568bda5b58fSmrg		;;
15697d5e3a19Smrg	# This must come before the *-dec entry.
15707d5e3a19Smrg	pdp10-*)
15715212f86fSmrg		os=tops20
15727d5e3a19Smrg		;;
15737d5e3a19Smrg	pdp11-*)
15745212f86fSmrg		os=none
15757d5e3a19Smrg		;;
15767d5e3a19Smrg	*-dec | vax-*)
15775212f86fSmrg		os=ultrix4.2
15787d5e3a19Smrg		;;
15797d5e3a19Smrg	m68*-apollo)
15805212f86fSmrg		os=domain
15817d5e3a19Smrg		;;
15827d5e3a19Smrg	i386-sun)
15835212f86fSmrg		os=sunos4.0.2
15847d5e3a19Smrg		;;
15857d5e3a19Smrg	m68000-sun)
15865212f86fSmrg		os=sunos3
15877d5e3a19Smrg		;;
15887d5e3a19Smrg	m68*-cisco)
15895212f86fSmrg		os=aout
15907d5e3a19Smrg		;;
1591b8414663Smrg	mep-*)
15925212f86fSmrg		os=elf
15931568b75bSmrg		;;
15947d5e3a19Smrg	mips*-cisco)
15955212f86fSmrg		os=elf
15967d5e3a19Smrg		;;
15977d5e3a19Smrg	mips*-*)
15985212f86fSmrg		os=elf
15997d5e3a19Smrg		;;
16007d5e3a19Smrg	or32-*)
16015212f86fSmrg		os=coff
16027d5e3a19Smrg		;;
16037d5e3a19Smrg	*-tti)	# must be before sparc entry or we get the wrong os.
16045212f86fSmrg		os=sysv3
16057d5e3a19Smrg		;;
16067d5e3a19Smrg	sparc-* | *-sun)
16075212f86fSmrg		os=sunos4.1.1
16087d5e3a19Smrg		;;
160913e6bc1cSmrg	pru-*)
16105212f86fSmrg		os=elf
161113e6bc1cSmrg		;;
16127d5e3a19Smrg	*-be)
16135212f86fSmrg		os=beos
16147d5e3a19Smrg		;;
16157d5e3a19Smrg	*-ibm)
16165212f86fSmrg		os=aix
16177d5e3a19Smrg		;;
1618b8414663Smrg	*-knuth)
16195212f86fSmrg		os=mmixware
16207d5e3a19Smrg		;;
16217d5e3a19Smrg	*-wec)
16225212f86fSmrg		os=proelf
16237d5e3a19Smrg		;;
16247d5e3a19Smrg	*-winbond)
16255212f86fSmrg		os=proelf
16267d5e3a19Smrg		;;
16277d5e3a19Smrg	*-oki)
16285212f86fSmrg		os=proelf
16297d5e3a19Smrg		;;
16307d5e3a19Smrg	*-hp)
16315212f86fSmrg		os=hpux
16327d5e3a19Smrg		;;
16337d5e3a19Smrg	*-hitachi)
16345212f86fSmrg		os=hiux
16357d5e3a19Smrg		;;
16367d5e3a19Smrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
16375212f86fSmrg		os=sysv
16387d5e3a19Smrg		;;
16397d5e3a19Smrg	*-cbm)
16405212f86fSmrg		os=amigaos
16417d5e3a19Smrg		;;
16427d5e3a19Smrg	*-dg)
16435212f86fSmrg		os=dgux
16447d5e3a19Smrg		;;
16457d5e3a19Smrg	*-dolphin)
16465212f86fSmrg		os=sysv3
16477d5e3a19Smrg		;;
16487d5e3a19Smrg	m68k-ccur)
16495212f86fSmrg		os=rtu
16507d5e3a19Smrg		;;
16517d5e3a19Smrg	m88k-omron*)
16525212f86fSmrg		os=luna
16537d5e3a19Smrg		;;
165413e6bc1cSmrg	*-next)
16555212f86fSmrg		os=nextstep
16567d5e3a19Smrg		;;
16577d5e3a19Smrg	*-sequent)
16585212f86fSmrg		os=ptx
16597d5e3a19Smrg		;;
16607d5e3a19Smrg	*-crds)
16615212f86fSmrg		os=unos
16627d5e3a19Smrg		;;
16637d5e3a19Smrg	*-ns)
16645212f86fSmrg		os=genix
16657d5e3a19Smrg		;;
16667d5e3a19Smrg	i370-*)
16675212f86fSmrg		os=mvs
16687d5e3a19Smrg		;;
16697d5e3a19Smrg	*-gould)
16705212f86fSmrg		os=sysv
16717d5e3a19Smrg		;;
16727d5e3a19Smrg	*-highlevel)
16735212f86fSmrg		os=bsd
16747d5e3a19Smrg		;;
16757d5e3a19Smrg	*-encore)
16765212f86fSmrg		os=bsd
16777d5e3a19Smrg		;;
16787d5e3a19Smrg	*-sgi)
16795212f86fSmrg		os=irix
16807d5e3a19Smrg		;;
16817d5e3a19Smrg	*-siemens)
16825212f86fSmrg		os=sysv4
16837d5e3a19Smrg		;;
16847d5e3a19Smrg	*-masscomp)
16855212f86fSmrg		os=rtu
16867d5e3a19Smrg		;;
16877d5e3a19Smrg	f30[01]-fujitsu | f700-fujitsu)
16885212f86fSmrg		os=uxpv
16897d5e3a19Smrg		;;
16907d5e3a19Smrg	*-rom68k)
16915212f86fSmrg		os=coff
16927d5e3a19Smrg		;;
16937d5e3a19Smrg	*-*bug)
16945212f86fSmrg		os=coff
16957d5e3a19Smrg		;;
16967d5e3a19Smrg	*-apple)
16975212f86fSmrg		os=macos
16987d5e3a19Smrg		;;
16997d5e3a19Smrg	*-atari*)
17005212f86fSmrg		os=mint
17015212f86fSmrg		;;
17025212f86fSmrg	*-wrs)
17035212f86fSmrg		os=vxworks
17047d5e3a19Smrg		;;
17057d5e3a19Smrg	*)
17065212f86fSmrg		os=none
17077d5e3a19Smrg		;;
17087d5e3a19Smrgesac
17095212f86fSmrg
17107d5e3a19Smrgfi
17117d5e3a19Smrg
17125212f86fSmrg# Now, validate our (potentially fixed-up) OS.
17135212f86fSmrgcase $os in
17145212f86fSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
17155212f86fSmrg	musl* | newlib* | relibc* | uclibc*)
17165212f86fSmrg		;;
17175212f86fSmrg	# Likewise for "kernel-abi"
17185212f86fSmrg	eabi* | gnueabi*)
17195212f86fSmrg		;;
17205212f86fSmrg	# VxWorks passes extra cpu info in the 4th filed.
17215212f86fSmrg	simlinux | simwindows | spe)
17225212f86fSmrg		;;
17235212f86fSmrg	# Now accept the basic system types.
17245212f86fSmrg	# The portable systems comes first.
17255212f86fSmrg	# Each alternative MUST end in a * to match a version number.
17265212f86fSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
17275212f86fSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
17285212f86fSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
17295212f86fSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
17305212f86fSmrg	     | hiux* | abug | nacl* | netware* | windows* \
17315212f86fSmrg	     | os9* | macos* | osx* | ios* \
17325212f86fSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
17335212f86fSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
17345212f86fSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
17355212f86fSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
17365212f86fSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
17375212f86fSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
17385212f86fSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
17395212f86fSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
17405212f86fSmrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
17415212f86fSmrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
17425212f86fSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
17435212f86fSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
17445212f86fSmrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
17455212f86fSmrg	     | midipix* | mingw32* | mingw64* | mint* \
17465212f86fSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
17475212f86fSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
17485212f86fSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
17495212f86fSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
17505212f86fSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
17515212f86fSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
17525212f86fSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
17535212f86fSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
17545212f86fSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
17555212f86fSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
17567f6d8fe2Smrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
17577f6d8fe2Smrg	     | fiwix* )
17585212f86fSmrg		;;
17595212f86fSmrg	# This one is extra strict with allowed versions
17605212f86fSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
17615212f86fSmrg		# Don't forget version if it is 3.2v4 or newer.
17625212f86fSmrg		;;
17635212f86fSmrg	none)
17645212f86fSmrg		;;
17655212f86fSmrg	*)
17665212f86fSmrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
17675212f86fSmrg		exit 1
17685212f86fSmrg		;;
17695212f86fSmrgesac
17705212f86fSmrg
17715212f86fSmrg# As a final step for OS-related things, validate the OS-kernel combination
17725212f86fSmrg# (given a valid OS), if there is a kernel.
17735212f86fSmrgcase $kernel-$os in
17745212f86fSmrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
17755212f86fSmrg		   | linux-musl* | linux-relibc* | linux-uclibc* )
17765212f86fSmrg		;;
17775212f86fSmrg	uclinux-uclibc* )
17785212f86fSmrg		;;
17795212f86fSmrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
17805212f86fSmrg		# These are just libc implementations, not actual OSes, and thus
17815212f86fSmrg		# require a kernel.
17825212f86fSmrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
17835212f86fSmrg		exit 1
17845212f86fSmrg		;;
17855212f86fSmrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
17865212f86fSmrg		;;
17875212f86fSmrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
17885212f86fSmrg		;;
17895212f86fSmrg	nto-qnx*)
17905212f86fSmrg		;;
17915212f86fSmrg	os2-emx)
17925212f86fSmrg		;;
17935212f86fSmrg	*-eabi* | *-gnueabi*)
17945212f86fSmrg		;;
17955212f86fSmrg	-*)
17965212f86fSmrg		# Blank kernel with real OS is always fine.
17975212f86fSmrg		;;
17985212f86fSmrg	*-*)
17995212f86fSmrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
18005212f86fSmrg		exit 1
18015212f86fSmrg		;;
18025212f86fSmrgesac
18035212f86fSmrg
18047d5e3a19Smrg# Here we handle the case where we know the os, and the CPU type, but not the
18057d5e3a19Smrg# manufacturer.  We pick the logical manufacturer.
18065212f86fSmrgcase $vendor in
18075212f86fSmrg	unknown)
18085212f86fSmrg		case $cpu-$os in
18095212f86fSmrg			*-riscix*)
18107d5e3a19Smrg				vendor=acorn
18117d5e3a19Smrg				;;
18125212f86fSmrg			*-sunos*)
18137d5e3a19Smrg				vendor=sun
18147d5e3a19Smrg				;;
18155212f86fSmrg			*-cnk* | *-aix*)
18167d5e3a19Smrg				vendor=ibm
18177d5e3a19Smrg				;;
18185212f86fSmrg			*-beos*)
18197d5e3a19Smrg				vendor=be
18207d5e3a19Smrg				;;
18215212f86fSmrg			*-hpux*)
18227d5e3a19Smrg				vendor=hp
18237d5e3a19Smrg				;;
18245212f86fSmrg			*-mpeix*)
18257d5e3a19Smrg				vendor=hp
18267d5e3a19Smrg				;;
18275212f86fSmrg			*-hiux*)
18287d5e3a19Smrg				vendor=hitachi
18297d5e3a19Smrg				;;
18305212f86fSmrg			*-unos*)
18317d5e3a19Smrg				vendor=crds
18327d5e3a19Smrg				;;
18335212f86fSmrg			*-dgux*)
18347d5e3a19Smrg				vendor=dg
18357d5e3a19Smrg				;;
18365212f86fSmrg			*-luna*)
18377d5e3a19Smrg				vendor=omron
18387d5e3a19Smrg				;;
18395212f86fSmrg			*-genix*)
18407d5e3a19Smrg				vendor=ns
18417d5e3a19Smrg				;;
18425212f86fSmrg			*-clix*)
18435212f86fSmrg				vendor=intergraph
18445212f86fSmrg				;;
18455212f86fSmrg			*-mvs* | *-opened*)
18465212f86fSmrg				vendor=ibm
18475212f86fSmrg				;;
18485212f86fSmrg			*-os400*)
18497d5e3a19Smrg				vendor=ibm
18507d5e3a19Smrg				;;
18515212f86fSmrg			s390-* | s390x-*)
18527d5e3a19Smrg				vendor=ibm
18537d5e3a19Smrg				;;
18545212f86fSmrg			*-ptx*)
18557d5e3a19Smrg				vendor=sequent
18567d5e3a19Smrg				;;
18575212f86fSmrg			*-tpf*)
18587d5e3a19Smrg				vendor=ibm
18597d5e3a19Smrg				;;
18605212f86fSmrg			*-vxsim* | *-vxworks* | *-windiss*)
18617d5e3a19Smrg				vendor=wrs
18627d5e3a19Smrg				;;
18635212f86fSmrg			*-aux*)
18647d5e3a19Smrg				vendor=apple
18657d5e3a19Smrg				;;
18665212f86fSmrg			*-hms*)
18677d5e3a19Smrg				vendor=hitachi
18687d5e3a19Smrg				;;
18695212f86fSmrg			*-mpw* | *-macos*)
18707d5e3a19Smrg				vendor=apple
18717d5e3a19Smrg				;;
18725212f86fSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
18737d5e3a19Smrg				vendor=atari
18747d5e3a19Smrg				;;
18755212f86fSmrg			*-vos*)
18767d5e3a19Smrg				vendor=stratus
18777d5e3a19Smrg				;;
18787d5e3a19Smrg		esac
18797d5e3a19Smrg		;;
18807d5e3a19Smrgesac
18817d5e3a19Smrg
18825212f86fSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
18837d5e3a19Smrgexit
18847d5e3a19Smrg
18857d5e3a19Smrg# Local variables:
18865212f86fSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
18877d5e3a19Smrg# time-stamp-start: "timestamp='"
18887d5e3a19Smrg# time-stamp-format: "%:y-%02m-%02d"
18897d5e3a19Smrg# time-stamp-end: "'"
18907d5e3a19Smrg# End:
1891