2ea2ea
#! /bin/sh
2ea2ea
# Configuration validation subroutine script.
2ea2ea
#   Copyright 1992-2018 Free Software Foundation, Inc.
2ea2ea
2ea2ea
timestamp='2018-08-29'
2ea2ea
2ea2ea
# This file is free software; you can redistribute it and/or modify it
2ea2ea
# under the terms of the GNU General Public License as published by
2ea2ea
# the Free Software Foundation; either version 3 of the License, or
2ea2ea
# (at your option) any later version.
2ea2ea
#
2ea2ea
# This program is distributed in the hope that it will be useful, but
2ea2ea
# WITHOUT ANY WARRANTY; without even the implied warranty of
2ea2ea
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
2ea2ea
# General Public License for more details.
2ea2ea
#
2ea2ea
# You should have received a copy of the GNU General Public License
2ea2ea
# along with this program; if not, see <https://www.gnu.org/licenses/>.
2ea2ea
#
2ea2ea
# As a special exception to the GNU General Public License, if you
2ea2ea
# distribute this file as part of a program that contains a
2ea2ea
# configuration script generated by Autoconf, you may include it under
2ea2ea
# the same distribution terms that you use for the rest of that
2ea2ea
# program.  This Exception is an additional permission under section 7
2ea2ea
# of the GNU General Public License, version 3 ("GPLv3").
2ea2ea
2ea2ea
2ea2ea
# Please send patches to <config-patches@gnu.org>.
2ea2ea
#
2ea2ea
# Configuration subroutine to validate and canonicalize a configuration type.
2ea2ea
# Supply the specified configuration type as an argument.
2ea2ea
# If it is invalid, we print an error message on stderr and exit with code 1.
2ea2ea
# Otherwise, we print the canonical config type on stdout and succeed.
2ea2ea
2ea2ea
# You can get the latest version of this script from:
2ea2ea
# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
2ea2ea
2ea2ea
# This file is supposed to be the same for all GNU packages
2ea2ea
# and recognize all the CPU types, system types and aliases
2ea2ea
# that are meaningful with *any* GNU software.
2ea2ea
# Each package is responsible for reporting which valid configurations
2ea2ea
# it does not support.  The user should be able to distinguish
2ea2ea
# a failure to support a valid configuration from a meaningless
2ea2ea
# configuration.
2ea2ea
2ea2ea
# The goal of this file is to map all the various variations of a given
2ea2ea
# machine specification into a single specification in the form:
2ea2ea
#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
2ea2ea
# or in some cases, the newer four-part form:
2ea2ea
#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
2ea2ea
# It is wrong to echo any other type of specification.
2ea2ea
2ea2ea
me=`echo "$0" | sed -e 's,.*/,,'`
2ea2ea
2ea2ea
usage="\
2ea2ea
Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
2ea2ea
2ea2ea
Canonicalize a configuration name.
2ea2ea
2ea2ea
Options:
2ea2ea
  -h, --help         print this help, then exit
2ea2ea
  -t, --time-stamp   print date of last modification, then exit
2ea2ea
  -v, --version      print version number, then exit
2ea2ea
2ea2ea
Report bugs and patches to <config-patches@gnu.org>."
2ea2ea
2ea2ea
version="\
2ea2ea
GNU config.sub ($timestamp)
2ea2ea
2ea2ea
Copyright 1992-2018 Free Software Foundation, Inc.
2ea2ea
2ea2ea
This is free software; see the source for copying conditions.  There is NO
2ea2ea
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
2ea2ea
2ea2ea
help="
2ea2ea
Try \`$me --help' for more information."
2ea2ea
2ea2ea
# Parse command line
2ea2ea
while test $# -gt 0 ; do
2ea2ea
  case $1 in
2ea2ea
    --time-stamp | --time* | -t )
2ea2ea
       echo "$timestamp" ; exit ;;
2ea2ea
    --version | -v )
2ea2ea
       echo "$version" ; exit ;;
2ea2ea
    --help | --h* | -h )
2ea2ea
       echo "$usage"; exit ;;
2ea2ea
    -- )     # Stop option processing
2ea2ea
       shift; break ;;
2ea2ea
    - )	# Use stdin as input.
2ea2ea
       break ;;
2ea2ea
    -* )
2ea2ea
       echo "$me: invalid option $1$help"
2ea2ea
       exit 1 ;;
2ea2ea
2ea2ea
    *local*)
2ea2ea
       # First pass through any local machine types.
2ea2ea
       echo "$1"
2ea2ea
       exit ;;
2ea2ea
2ea2ea
    * )
2ea2ea
       break ;;
2ea2ea
  esac
2ea2ea
done
2ea2ea
2ea2ea
case $# in
2ea2ea
 0) echo "$me: missing argument$help" >&2
2ea2ea
    exit 1;;
2ea2ea
 1) ;;
2ea2ea
 *) echo "$me: too many arguments$help" >&2
2ea2ea
    exit 1;;
2ea2ea
esac
2ea2ea
2ea2ea
# Split fields of configuration type
2ea2ea
IFS="-" read -r field1 field2 field3 field4 <
2ea2ea
$1
2ea2ea
EOF
2ea2ea
2ea2ea
# Separate into logical components for further validation
2ea2ea
case $1 in
2ea2ea
	*-*-*-*-*)
2ea2ea
		echo Invalid configuration \`"$1"\': more than four components >&2
2ea2ea
		exit 1
2ea2ea
		;;
2ea2ea
	*-*-*-*)
2ea2ea
		basic_machine=$field1-$field2
2ea2ea
		os=$field3-$field4
2ea2ea
		;;
2ea2ea
	*-*-*)
2ea2ea
		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
2ea2ea
		# parts
2ea2ea
		maybe_os=$field2-$field3
2ea2ea
		case $maybe_os in
2ea2ea
			nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \
2ea2ea
			| linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \
2ea2ea
			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
2ea2ea
			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
2ea2ea
			| storm-chaos* | os2-emx* | rtmk-nova*)
2ea2ea
				basic_machine=$field1
2ea2ea
				os=$maybe_os
2ea2ea
				;;
2ea2ea
			android-linux)
2ea2ea
				basic_machine=$field1-unknown
2ea2ea
				os=linux-android
2ea2ea
				;;
2ea2ea
			*)
2ea2ea
				basic_machine=$field1-$field2
2ea2ea
				os=$field3
2ea2ea
				;;
2ea2ea
		esac
2ea2ea
		;;
2ea2ea
	*-*)
2ea2ea
		# A lone config we happen to match not fitting any patern
2ea2ea
		case $field1-$field2 in
2ea2ea
			decstation-3100)
2ea2ea
				basic_machine=mips-dec
2ea2ea
				os=
2ea2ea
				;;
2ea2ea
			*-*)
2ea2ea
				# Second component is usually, but not always the OS
2ea2ea
				case $field2 in
2ea2ea
					# Prevent following clause from handling this valid os
2ea2ea
					sun*os*)
2ea2ea
						basic_machine=$field1
2ea2ea
						os=$field2
2ea2ea
						;;
2ea2ea
					# Manufacturers
2ea2ea
					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
2ea2ea
					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
2ea2ea
					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
2ea2ea
					| convergent* | ncr* | news | 32* | 3600* | 3100* \
2ea2ea
					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
2ea2ea
					| ultra | tti* | harris | dolphin | highlevel | gould \
2ea2ea
					| cbm | ns | masscomp | apple | axis | knuth | cray \
2ea2ea
					| microblaze* | sim | cisco \
2ea2ea
					| oki | wec | wrs | winbond)
2ea2ea
						basic_machine=$field1-$field2
2ea2ea
						os=
2ea2ea
						;;
2ea2ea
					*)
2ea2ea
						basic_machine=$field1
2ea2ea
						os=$field2
2ea2ea
						;;
2ea2ea
				esac
2ea2ea
			;;
2ea2ea
		esac
2ea2ea
		;;
2ea2ea
	*)
2ea2ea
		# Convert single-component short-hands not valid as part of
2ea2ea
		# multi-component configurations.
2ea2ea
		case $field1 in
2ea2ea
			386bsd)
2ea2ea
				basic_machine=i386-pc
2ea2ea
				os=bsd
2ea2ea
				;;
2ea2ea
			a29khif)
2ea2ea
				basic_machine=a29k-amd
2ea2ea
				os=udi
2ea2ea
				;;
2ea2ea
			adobe68k)
2ea2ea
				basic_machine=m68010-adobe
2ea2ea
				os=scout
2ea2ea
				;;
2ea2ea
			alliant)
2ea2ea
				basic_machine=fx80-alliant
2ea2ea
				os=
2ea2ea
				;;
2ea2ea
			altos | altos3068)
2ea2ea
				basic_machine=m68k-altos
2ea2ea
				os=
2ea2ea
				;;
2ea2ea
			am29k)
2ea2ea
				basic_machine=a29k-none
2ea2ea
				os=bsd
2ea2ea
				;;
2ea2ea
			amdahl)
2ea2ea
				basic_machine=580-amdahl
2ea2ea
				os=sysv
2ea2ea
				;;
2ea2ea
			amiga)
2ea2ea
				basic_machine=m68k-unknown
2ea2ea
				os=
2ea2ea
				;;
2ea2ea
			amigaos | amigados)
2ea2ea
				basic_machine=m68k-unknown
2ea2ea
				os=amigaos
2ea2ea
				;;
2ea2ea
			amigaunix | amix)
2ea2ea
				basic_machine=m68k-unknown
2ea2ea
				os=sysv4
2ea2ea
				;;
2ea2ea
			apollo68)
2ea2ea
				basic_machine=m68k-apollo
2ea2ea
				os=sysv
2ea2ea
				;;
2ea2ea
			apollo68bsd)
2ea2ea
				basic_machine=m68k-apollo
2ea2ea
				os=bsd
2ea2ea
				;;
2ea2ea
			aros)
2ea2ea
				basic_machine=i386-pc
2ea2ea
				os=aros
2ea2ea
				;;
2ea2ea
			aux)
2ea2ea
				basic_machine=m68k-apple
2ea2ea
				os=aux
2ea2ea
				;;
2ea2ea
			balance)
2ea2ea
				basic_machine=ns32k-sequent
2ea2ea
				os=dynix
2ea2ea
				;;
2ea2ea
			blackfin)
2ea2ea
				basic_machine=bfin-unknown
2ea2ea
				os=linux
2ea2ea
				;;
2ea2ea
			cegcc)
2ea2ea
				basic_machine=arm-unknown
2ea2ea
				os=cegcc
2ea2ea
				;;
2ea2ea
			convex-c1)
2ea2ea
				basic_machine=c1-convex
2ea2ea
				os=bsd
2ea2ea
				;;
2ea2ea
			convex-c2)
2ea2ea
				basic_machine=c2-convex
2ea2ea
				os=bsd
2ea2ea
				;;
2ea2ea
			convex-c32)
2ea2ea
				basic_machine=c32-convex
2ea2ea
				os=bsd
2ea2ea
				;;
2ea2ea
			convex-c34)
2ea2ea
				basic_machine=c34-convex
2ea2ea
				os=bsd
2ea2ea
				;;
2ea2ea
			convex-c38)
2ea2ea
				basic_machine=c38-convex
2ea2ea
				os=bsd
2ea2ea
				;;
2ea2ea
			cray)
2ea2ea
				basic_machine=j90-cray
2ea2ea
				os=unicos
2ea2ea
				;;
2ea2ea
			crds | unos)
2ea2ea
				basic_machine=m68k-crds
2ea2ea
				os=
2ea2ea
				;;
2ea2ea
			da30)
2ea2ea
				basic_machine=m68k-da30
2ea2ea
				os=
2ea2ea
				;;
2ea2ea
			decstation | pmax | pmin | dec3100 | decstatn)
2ea2ea
				basic_machine=mips-dec
2ea2ea
				os=
2ea2ea
				;;
2ea2ea
			delta88)
2ea2ea
				basic_machine=m88k-motorola
2ea2ea
				os=sysv3
2ea2ea
				;;
2ea2ea
			dicos)
2ea2ea
				basic_machine=i686-pc
2ea2ea
				os=dicos
2ea2ea
				;;
2ea2ea
			djgpp)
2ea2ea
				basic_machine=i586-pc
2ea2ea
				os=msdosdjgpp
2ea2ea
				;;
2ea2ea
			ebmon29k)
2ea2ea
				basic_machine=a29k-amd
2ea2ea
				os=ebmon
2ea2ea
				;;
2ea2ea
			es1800 | OSE68k | ose68k | ose | OSE)
2ea2ea
				basic_machine=m68k-ericsson
2ea2ea
				os=ose
2ea2ea
				;;
2ea2ea
			gmicro)
2ea2ea
				basic_machine=tron-gmicro
2ea2ea
				os=sysv
2ea2ea
				;;
2ea2ea
			go32)
2ea2ea
				basic_machine=i386-pc
2ea2ea
				os=go32
2ea2ea
				;;
2ea2ea
			h8300hms)
2ea2ea
				basic_machine=h8300-hitachi
2ea2ea
				os=hms
2ea2ea
				;;
2ea2ea
			h8300xray)
2ea2ea
				basic_machine=h8300-hitachi
2ea2ea
				os=xray
2ea2ea
				;;
2ea2ea
			h8500hms)
2ea2ea
				basic_machine=h8500-hitachi
2ea2ea
				os=hms
2ea2ea
				;;
2ea2ea
			harris)
2ea2ea
				basic_machine=m88k-harris
2ea2ea
				os=sysv3
2ea2ea
				;;
2ea2ea
			hp300)
2ea2ea
				basic_machine=m68k-hp
2ea2ea
				;;
2ea2ea
			hp300bsd)
2ea2ea
				basic_machine=m68k-hp
2ea2ea
				os=bsd
2ea2ea
				;;
2ea2ea
			hp300hpux)
2ea2ea
				basic_machine=m68k-hp
2ea2ea
				os=hpux
2ea2ea
				;;
2ea2ea
			hppaosf)
2ea2ea
				basic_machine=hppa1.1-hp
2ea2ea
				os=osf
2ea2ea
				;;
2ea2ea
			hppro)
2ea2ea
				basic_machine=hppa1.1-hp
2ea2ea
				os=proelf
2ea2ea
				;;
2ea2ea
			i386mach)
2ea2ea
				basic_machine=i386-mach
2ea2ea
				os=mach
2ea2ea
				;;
2ea2ea
			vsta)
2ea2ea
				basic_machine=i386-pc
2ea2ea
				os=vsta
2ea2ea
				;;
2ea2ea
			isi68 | isi)
2ea2ea
				basic_machine=m68k-isi
2ea2ea
				os=sysv
2ea2ea
				;;
2ea2ea
			m68knommu)
2ea2ea
				basic_machine=m68k-unknown
2ea2ea
				os=linux
2ea2ea
				;;
2ea2ea
			magnum | m3230)
2ea2ea
				basic_machine=mips-mips
2ea2ea
				os=sysv
2ea2ea
				;;
2ea2ea
			merlin)
2ea2ea
				basic_machine=ns32k-utek
2ea2ea
				os=sysv
2ea2ea
				;;
2ea2ea
			mingw64)
2ea2ea
				basic_machine=x86_64-pc
2ea2ea
				os=mingw64
2ea2ea
				;;
2ea2ea
			mingw32)
2ea2ea
				basic_machine=i686-pc
2ea2ea
				os=mingw32
2ea2ea
				;;
2ea2ea
			mingw32ce)
2ea2ea
				basic_machine=arm-unknown
2ea2ea
				os=mingw32ce
2ea2ea
				;;
2ea2ea
			monitor)
2ea2ea
				basic_machine=m68k-rom68k
2ea2ea
				os=coff
2ea2ea
				;;
2ea2ea
			morphos)
2ea2ea
				basic_machine=powerpc-unknown
2ea2ea
				os=morphos
2ea2ea
				;;
2ea2ea
			moxiebox)
2ea2ea
				basic_machine=moxie-unknown
2ea2ea
				os=moxiebox
2ea2ea
				;;
2ea2ea
			msdos)
2ea2ea
				basic_machine=i386-pc
2ea2ea
				os=msdos
2ea2ea
				;;
2ea2ea
			msys)
2ea2ea
				basic_machine=i686-pc
2ea2ea
				os=msys
2ea2ea
				;;
2ea2ea
			mvs)
2ea2ea
				basic_machine=i370-ibm
2ea2ea
				os=mvs
2ea2ea
				;;
2ea2ea
			nacl)
2ea2ea
				basic_machine=le32-unknown
2ea2ea
				os=nacl
2ea2ea
				;;
2ea2ea
			ncr3000)
2ea2ea
				basic_machine=i486-ncr
2ea2ea
				os=sysv4
2ea2ea
				;;
2ea2ea
			netbsd386)
2ea2ea
				basic_machine=i386-pc
2ea2ea
				os=netbsd
2ea2ea
				;;
2ea2ea
			netwinder)
2ea2ea
				basic_machine=armv4l-rebel
2ea2ea
				os=linux
2ea2ea
				;;
2ea2ea
			news | news700 | news800 | news900)
2ea2ea
				basic_machine=m68k-sony
2ea2ea
				os=newsos
2ea2ea
				;;
2ea2ea
			news1000)
2ea2ea
				basic_machine=m68030-sony
2ea2ea
				os=newsos
2ea2ea
				;;
2ea2ea
			necv70)
2ea2ea
				basic_machine=v70-nec
2ea2ea
				os=sysv
2ea2ea
				;;
2ea2ea
			nh3000)
2ea2ea
				basic_machine=m68k-harris
2ea2ea
				os=cxux
2ea2ea
				;;
2ea2ea
			nh[45]000)
2ea2ea
				basic_machine=m88k-harris
2ea2ea
				os=cxux
2ea2ea
				;;
2ea2ea
			nindy960)
2ea2ea
				basic_machine=i960-intel
2ea2ea
				os=nindy
2ea2ea
				;;
2ea2ea
			mon960)
2ea2ea
				basic_machine=i960-intel
2ea2ea
				os=mon960
2ea2ea
				;;
2ea2ea
			nonstopux)
2ea2ea
				basic_machine=mips-compaq
2ea2ea
				os=nonstopux
2ea2ea
				;;
2ea2ea
			os400)
2ea2ea
				basic_machine=powerpc-ibm
2ea2ea
				os=os400
2ea2ea
				;;
2ea2ea
			OSE68000 | ose68000)
2ea2ea
				basic_machine=m68000-ericsson
2ea2ea
				os=ose
2ea2ea
				;;
2ea2ea
			os68k)
2ea2ea
				basic_machine=m68k-none
2ea2ea
				os=os68k
2ea2ea
				;;
2ea2ea
			paragon)
2ea2ea
				basic_machine=i860-intel
2ea2ea
				os=osf
2ea2ea
				;;
2ea2ea
			parisc)
2ea2ea
				basic_machine=hppa-unknown
2ea2ea
				os=linux
2ea2ea
				;;
2ea2ea
			pw32)
2ea2ea
				basic_machine=i586-unknown
2ea2ea
				os=pw32
2ea2ea
				;;
2ea2ea
			rdos | rdos64)
2ea2ea
				basic_machine=x86_64-pc
2ea2ea
				os=rdos
2ea2ea
				;;
2ea2ea
			rdos32)
2ea2ea
				basic_machine=i386-pc
2ea2ea
				os=rdos
2ea2ea
				;;
2ea2ea
			rom68k)
2ea2ea
				basic_machine=m68k-rom68k
2ea2ea
				os=coff
2ea2ea
				;;
2ea2ea
			sa29200)
2ea2ea
				basic_machine=a29k-amd
2ea2ea
				os=udi
2ea2ea
				;;
2ea2ea
			sei)
2ea2ea
				basic_machine=mips-sei
2ea2ea
				os=seiux
2ea2ea
				;;
2ea2ea
			sequent)
2ea2ea
				basic_machine=i386-sequent
2ea2ea
				os=
2ea2ea
				;;
2ea2ea
			sps7)
2ea2ea
				basic_machine=m68k-bull
2ea2ea
				os=sysv2
2ea2ea
				;;
2ea2ea
			st2000)
2ea2ea
				basic_machine=m68k-tandem
2ea2ea
				os=
2ea2ea
				;;
2ea2ea
			stratus)
2ea2ea
				basic_machine=i860-stratus
2ea2ea
				os=sysv4
2ea2ea
				;;
2ea2ea
			sun2)
2ea2ea
				basic_machine=m68000-sun
2ea2ea
				os=
2ea2ea
				;;
2ea2ea
			sun2os3)
2ea2ea
				basic_machine=m68000-sun
2ea2ea
				os=sunos3
2ea2ea
				;;
2ea2ea
			sun2os4)
2ea2ea
				basic_machine=m68000-sun
2ea2ea
				os=sunos4
2ea2ea
				;;
2ea2ea
			sun3)
2ea2ea
				basic_machine=m68k-sun
2ea2ea
				os=
2ea2ea
				;;
2ea2ea
			sun3os3)
2ea2ea
				basic_machine=m68k-sun
2ea2ea
				os=sunos3
2ea2ea
				;;
2ea2ea
			sun3os4)
2ea2ea
				basic_machine=m68k-sun
2ea2ea
				os=sunos4
2ea2ea
				;;
2ea2ea
			sun4)
2ea2ea
				basic_machine=sparc-sun
2ea2ea
				os=
2ea2ea
				;;
2ea2ea
			sun4os3)
2ea2ea
				basic_machine=sparc-sun
2ea2ea
				os=sunos3
2ea2ea
				;;
2ea2ea
			sun4os4)
2ea2ea
				basic_machine=sparc-sun
2ea2ea
				os=sunos4
2ea2ea
				;;
2ea2ea
			sun4sol2)
2ea2ea
				basic_machine=sparc-sun
2ea2ea
				os=solaris2
2ea2ea
				;;
2ea2ea
			sun386 | sun386i | roadrunner)
2ea2ea
				basic_machine=i386-sun
2ea2ea
				os=
2ea2ea
				;;
2ea2ea
			sv1)
2ea2ea
				basic_machine=sv1-cray
2ea2ea
				os=unicos
2ea2ea
				;;
2ea2ea
			symmetry)
2ea2ea
				basic_machine=i386-sequent
2ea2ea
				os=dynix
2ea2ea
				;;
2ea2ea
			t3e)
2ea2ea
				basic_machine=alphaev5-cray
2ea2ea
				os=unicos
2ea2ea
				;;
2ea2ea
			t90)
2ea2ea
				basic_machine=t90-cray
2ea2ea
				os=unicos
2ea2ea
				;;
2ea2ea
			toad1)
2ea2ea
				basic_machine=pdp10-xkl
2ea2ea
				os=tops20
2ea2ea
				;;
2ea2ea
			tpf)
2ea2ea
				basic_machine=s390x-ibm
2ea2ea
				os=tpf
2ea2ea
				;;
2ea2ea
			udi29k)
2ea2ea
				basic_machine=a29k-amd
2ea2ea
				os=udi
2ea2ea
				;;
2ea2ea
			ultra3)
2ea2ea
				basic_machine=a29k-nyu
2ea2ea
				os=sym1
2ea2ea
				;;
2ea2ea
			v810 | necv810)
2ea2ea
				basic_machine=v810-nec
2ea2ea
				os=none
2ea2ea
				;;
2ea2ea
			vaxv)
2ea2ea
				basic_machine=vax-dec
2ea2ea
				os=sysv
2ea2ea
				;;
2ea2ea
			vms)
2ea2ea
				basic_machine=vax-dec
2ea2ea
				os=vms
2ea2ea
				;;
2ea2ea
			vxworks960)
2ea2ea
				basic_machine=i960-wrs
2ea2ea
				os=vxworks
2ea2ea
				;;
2ea2ea
			vxworks68)
2ea2ea
				basic_machine=m68k-wrs
2ea2ea
				os=vxworks
2ea2ea
				;;
2ea2ea
			vxworks29k)
2ea2ea
				basic_machine=a29k-wrs
2ea2ea
				os=vxworks
2ea2ea
				;;
2ea2ea
			xbox)
2ea2ea
				basic_machine=i686-pc
2ea2ea
				os=mingw32
2ea2ea
				;;
2ea2ea
			ymp)
2ea2ea
				basic_machine=ymp-cray
2ea2ea
				os=unicos
2ea2ea
				;;
2ea2ea
			*)
2ea2ea
				basic_machine=$1
2ea2ea
				os=
2ea2ea
				;;
2ea2ea
		esac
2ea2ea
		;;
2ea2ea
esac
2ea2ea
2ea2ea
# Decode 1-component or ad-hoc basic machines
2ea2ea
case $basic_machine in
2ea2ea
	# Here we handle the default manufacturer of certain CPU types.  It is in
2ea2ea
	# some cases the only manufacturer, in others, it is the most popular.
2ea2ea
	w89k)
2ea2ea
		cpu=hppa1.1
2ea2ea
		vendor=winbond
2ea2ea
		;;
2ea2ea
	op50n)
2ea2ea
		cpu=hppa1.1
2ea2ea
		vendor=oki
2ea2ea
		;;
2ea2ea
	op60c)
2ea2ea
		cpu=hppa1.1
2ea2ea
		vendor=oki
2ea2ea
		;;
2ea2ea
	ibm*)
2ea2ea
		cpu=i370
2ea2ea
		vendor=ibm
2ea2ea
		;;
2ea2ea
	orion105)
2ea2ea
		cpu=clipper
2ea2ea
		vendor=highlevel
2ea2ea
		;;
2ea2ea
	mac | mpw | mac-mpw)
2ea2ea
		cpu=m68k
2ea2ea
		vendor=apple
2ea2ea
		;;
2ea2ea
	pmac | pmac-mpw)
2ea2ea
		cpu=powerpc
2ea2ea
		vendor=apple
2ea2ea
		;;
2ea2ea
2ea2ea
	# Recognize the various machine names and aliases which stand
2ea2ea
	# for a CPU type and a company and sometimes even an OS.
2ea2ea
	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
2ea2ea
		cpu=m68000
2ea2ea
		vendor=att
2ea2ea
		;;
2ea2ea
	3b*)
2ea2ea
		cpu=we32k
2ea2ea
		vendor=att
2ea2ea
		;;
2ea2ea
	bluegene*)
2ea2ea
		cpu=powerpc
2ea2ea
		vendor=ibm
2ea2ea
		os=cnk
2ea2ea
		;;
2ea2ea
	decsystem10* | dec10*)
2ea2ea
		cpu=pdp10
2ea2ea
		vendor=dec
2ea2ea
		os=tops10
2ea2ea
		;;
2ea2ea
	decsystem20* | dec20*)
2ea2ea
		cpu=pdp10
2ea2ea
		vendor=dec
2ea2ea
		os=tops20
2ea2ea
		;;
2ea2ea
	delta | 3300 | motorola-3300 | motorola-delta \
2ea2ea
	      | 3300-motorola | delta-motorola)
2ea2ea
		cpu=m68k
2ea2ea
		vendor=motorola
2ea2ea
		;;
2ea2ea
	dpx2*)
2ea2ea
		cpu=m68k
2ea2ea
		vendor=bull
2ea2ea
		os=sysv3
2ea2ea
		;;
2ea2ea
	encore | umax | mmax)
2ea2ea
		cpu=ns32k
2ea2ea
		vendor=encore
2ea2ea
		;;
2ea2ea
	elxsi)
2ea2ea
		cpu=elxsi
2ea2ea
		vendor=elxsi
2ea2ea
		os=${os:-bsd}
2ea2ea
		;;
2ea2ea
	fx2800)
2ea2ea
		cpu=i860
2ea2ea
		vendor=alliant
2ea2ea
		;;
2ea2ea
	genix)
2ea2ea
		cpu=ns32k
2ea2ea
		vendor=ns
2ea2ea
		;;
2ea2ea
	h3050r* | hiux*)
2ea2ea
		cpu=hppa1.1
2ea2ea
		vendor=hitachi
2ea2ea
		os=hiuxwe2
2ea2ea
		;;
2ea2ea
	hp3k9[0-9][0-9] | hp9[0-9][0-9])
2ea2ea
		cpu=hppa1.0
2ea2ea
		vendor=hp
2ea2ea
		;;
2ea2ea
	hp9k2[0-9][0-9] | hp9k31[0-9])
2ea2ea
		cpu=m68000
2ea2ea
		vendor=hp
2ea2ea
		;;
2ea2ea
	hp9k3[2-9][0-9])
2ea2ea
		cpu=m68k
2ea2ea
		vendor=hp
2ea2ea
		;;
2ea2ea
	hp9k6[0-9][0-9] | hp6[0-9][0-9])
2ea2ea
		cpu=hppa1.0
2ea2ea
		vendor=hp
2ea2ea
		;;
2ea2ea
	hp9k7[0-79][0-9] | hp7[0-79][0-9])
2ea2ea
		cpu=hppa1.1
2ea2ea
		vendor=hp
2ea2ea
		;;
2ea2ea
	hp9k78[0-9] | hp78[0-9])
2ea2ea
		# FIXME: really hppa2.0-hp
2ea2ea
		cpu=hppa1.1
2ea2ea
		vendor=hp
2ea2ea
		;;
2ea2ea
	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
2ea2ea
		# FIXME: really hppa2.0-hp
2ea2ea
		cpu=hppa1.1
2ea2ea
		vendor=hp
2ea2ea
		;;
2ea2ea
	hp9k8[0-9][13679] | hp8[0-9][13679])
2ea2ea
		cpu=hppa1.1
2ea2ea
		vendor=hp
2ea2ea
		;;
2ea2ea
	hp9k8[0-9][0-9] | hp8[0-9][0-9])
2ea2ea
		cpu=hppa1.0
2ea2ea
		vendor=hp
2ea2ea
		;;
2ea2ea
	i*86v32)
2ea2ea
		cpu=`echo "$1" | sed -e 's/86.*/86/'`
2ea2ea
		vendor=pc
2ea2ea
		os=sysv32
2ea2ea
		;;
2ea2ea
	i*86v4*)
2ea2ea
		cpu=`echo "$1" | sed -e 's/86.*/86/'`
2ea2ea
		vendor=pc
2ea2ea
		os=sysv4
2ea2ea
		;;
2ea2ea
	i*86v)
2ea2ea
		cpu=`echo "$1" | sed -e 's/86.*/86/'`
2ea2ea
		vendor=pc
2ea2ea
		os=sysv
2ea2ea
		;;
2ea2ea
	i*86sol2)
2ea2ea
		cpu=`echo "$1" | sed -e 's/86.*/86/'`
2ea2ea
		vendor=pc
2ea2ea
		os=solaris2
2ea2ea
		;;
2ea2ea
	j90 | j90-cray)
2ea2ea
		cpu=j90
2ea2ea
		vendor=cray
2ea2ea
		os=${os:-unicos}
2ea2ea
		;;
2ea2ea
	iris | iris4d)
2ea2ea
		cpu=mips
2ea2ea
		vendor=sgi
2ea2ea
		case $os in
2ea2ea
		    irix*)
2ea2ea
			;;
2ea2ea
		    *)
2ea2ea
			os=irix4
2ea2ea
			;;
2ea2ea
		esac
2ea2ea
		;;
2ea2ea
	miniframe)
2ea2ea
		cpu=m68000
2ea2ea
		vendor=convergent
2ea2ea
		;;
2ea2ea
	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
2ea2ea
		cpu=m68k
2ea2ea
		vendor=atari
2ea2ea
		os=mint
2ea2ea
		;;
2ea2ea
	news-3600 | risc-news)
2ea2ea
		cpu=mips
2ea2ea
		vendor=sony
2ea2ea
		os=newsos
2ea2ea
		;;
2ea2ea
	next | m*-next)
2ea2ea
		cpu=m68k
2ea2ea
		vendor=next
2ea2ea
		case $os in
2ea2ea
		    nextstep* )
2ea2ea
			;;
2ea2ea
		    ns2*)
2ea2ea
		      os=nextstep2
2ea2ea
			;;
2ea2ea
		    *)
2ea2ea
		      os=nextstep3
2ea2ea
			;;
2ea2ea
		esac
2ea2ea
		;;
2ea2ea
	np1)
2ea2ea
		cpu=np1
2ea2ea
		vendor=gould
2ea2ea
		;;
2ea2ea
	op50n-* | op60c-*)
2ea2ea
		cpu=hppa1.1
2ea2ea
		vendor=oki
2ea2ea
		os=proelf
2ea2ea
		;;
2ea2ea
	pa-hitachi)
2ea2ea
		cpu=hppa1.1
2ea2ea
		vendor=hitachi
2ea2ea
		os=hiuxwe2
2ea2ea
		;;
2ea2ea
	pbd)
2ea2ea
		cpu=sparc
2ea2ea
		vendor=tti
2ea2ea
		;;
2ea2ea
	pbb)
2ea2ea
		cpu=m68k
2ea2ea
		vendor=tti
2ea2ea
		;;
2ea2ea
	pc532)
2ea2ea
		cpu=ns32k
2ea2ea
		vendor=pc532
2ea2ea
		;;
2ea2ea
	pn)
2ea2ea
		cpu=pn
2ea2ea
		vendor=gould
2ea2ea
		;;
2ea2ea
	power)
2ea2ea
		cpu=power
2ea2ea
		vendor=ibm
2ea2ea
		;;
2ea2ea
	ps2)
2ea2ea
		cpu=i386
2ea2ea
		vendor=ibm
2ea2ea
		;;
2ea2ea
	rm[46]00)
2ea2ea
		cpu=mips
2ea2ea
		vendor=siemens
2ea2ea
		;;
2ea2ea
	rtpc | rtpc-*)
2ea2ea
		cpu=romp
2ea2ea
		vendor=ibm
2ea2ea
		;;
2ea2ea
	sde)
2ea2ea
		cpu=mipsisa32
2ea2ea
		vendor=sde
2ea2ea
		os=${os:-elf}
2ea2ea
		;;
2ea2ea
	simso-wrs)
2ea2ea
		cpu=sparclite
2ea2ea
		vendor=wrs
2ea2ea
		os=vxworks
2ea2ea
		;;
2ea2ea
	tower | tower-32)
2ea2ea
		cpu=m68k
2ea2ea
		vendor=ncr
2ea2ea
		;;
2ea2ea
	vpp*|vx|vx-*)
2ea2ea
		cpu=f301
2ea2ea
		vendor=fujitsu
2ea2ea
		;;
2ea2ea
	w65)
2ea2ea
		cpu=w65
2ea2ea
		vendor=wdc
2ea2ea
		;;
2ea2ea
	w89k-*)
2ea2ea
		cpu=hppa1.1
2ea2ea
		vendor=winbond
2ea2ea
		os=proelf
2ea2ea
		;;
2ea2ea
	none)
2ea2ea
		cpu=none
2ea2ea
		vendor=none
2ea2ea
		;;
2ea2ea
	leon|leon[3-9])
2ea2ea
		cpu=sparc
2ea2ea
		vendor=$basic_machine
2ea2ea
		;;
2ea2ea
	leon-*|leon[3-9]-*)
2ea2ea
		cpu=sparc
2ea2ea
		vendor=`echo "$basic_machine" | sed 's/-.*//'`
2ea2ea
		;;
2ea2ea
2ea2ea
	*-*)
2ea2ea
		IFS="-" read -r cpu vendor <
2ea2ea
$basic_machine
2ea2ea
EOF
2ea2ea
		;;
2ea2ea
	# We use `pc' rather than `unknown'
2ea2ea
	# because (1) that's what they normally are, and
2ea2ea
	# (2) the word "unknown" tends to confuse beginning users.
2ea2ea
	i*86 | x86_64)
2ea2ea
		cpu=$basic_machine
2ea2ea
		vendor=pc
2ea2ea
		;;
2ea2ea
	# These rules are duplicated from below for sake of the special case above;
2ea2ea
	# i.e. things that normalized to x86 arches should also default to "pc"
2ea2ea
	pc98)
2ea2ea
		cpu=i386
2ea2ea
		vendor=pc
2ea2ea
		;;
2ea2ea
	x64 | amd64)
2ea2ea
		cpu=x86_64
2ea2ea
		vendor=pc
2ea2ea
		;;
2ea2ea
	# Recognize the basic CPU types without company name.
2ea2ea
	*)
2ea2ea
		cpu=$basic_machine
2ea2ea
		vendor=unknown
2ea2ea
		;;
2ea2ea
esac
2ea2ea
2ea2ea
unset -v basic_machine
2ea2ea
2ea2ea
# Decode basic machines in the full and proper CPU-Company form.
2ea2ea
case $cpu-$vendor in
2ea2ea
	# Here we handle the default manufacturer of certain CPU types in cannonical form. It is in
2ea2ea
	# some cases the only manufacturer, in others, it is the most popular.
2ea2ea
	craynv-unknown)
2ea2ea
		vendor=cray
2ea2ea
		os=${os:-unicosmp}
2ea2ea
		;;
2ea2ea
	c90-unknown | c90-cray)
2ea2ea
		vendor=cray
2ea2ea
		os=${os:-unicos}
2ea2ea
		;;
2ea2ea
	fx80-unknown)
2ea2ea
		vendor=alliant
2ea2ea
		;;
2ea2ea
	romp-unknown)
2ea2ea
		vendor=ibm
2ea2ea
		;;
2ea2ea
	mmix-unknown)
2ea2ea
		vendor=knuth
2ea2ea
		;;
2ea2ea
	microblaze-unknown | microblazeel-unknown)
2ea2ea
		vendor=xilinx
2ea2ea
		;;
2ea2ea
	rs6000-unknown)
2ea2ea
		vendor=ibm
2ea2ea
		;;
2ea2ea
	vax-unknown)
2ea2ea
		vendor=dec
2ea2ea
		;;
2ea2ea
	pdp11-unknown)
2ea2ea
		vendor=dec
2ea2ea
		;;
2ea2ea
	we32k-unknown)
2ea2ea
		vendor=att
2ea2ea
		;;
2ea2ea
	cydra-unknown)
2ea2ea
		vendor=cydrome
2ea2ea
		;;
2ea2ea
	i370-ibm*)
2ea2ea
		vendor=ibm
2ea2ea
		;;
2ea2ea
	orion-unknown)
2ea2ea
		vendor=highlevel
2ea2ea
		;;
2ea2ea
	xps-unknown | xps100-unknown)
2ea2ea
		cpu=xps100
2ea2ea
		vendor=honeywell
2ea2ea
		;;
2ea2ea
2ea2ea
	# Here we normalize CPU types with a missing or matching vendor
2ea2ea
	dpx20-unknown | dpx20-bull)
2ea2ea
		cpu=rs6000
2ea2ea
		vendor=bull
2ea2ea
		os=${os:-bosx}
2ea2ea
		;;
2ea2ea
2ea2ea
	# Here we normalize CPU types irrespective of the vendor
2ea2ea
	amd64-*)
2ea2ea
		cpu=x86_64
2ea2ea
		;;
2ea2ea
	blackfin-*)
2ea2ea
		cpu=bfin
2ea2ea
		os=linux
2ea2ea
		;;
2ea2ea
	c54x-*)
2ea2ea
		cpu=tic54x
2ea2ea
		;;
2ea2ea
	c55x-*)
2ea2ea
		cpu=tic55x
2ea2ea
		;;
2ea2ea
	c6x-*)
2ea2ea
		cpu=tic6x
2ea2ea
		;;
2ea2ea
	e500v[12]-*)
2ea2ea
		cpu=powerpc
2ea2ea
		os=$os"spe"
2ea2ea
		;;
2ea2ea
	mips3*-*)
2ea2ea
		cpu=mips64
2ea2ea
		;;
2ea2ea
	ms1-*)
2ea2ea
		cpu=mt
2ea2ea
		;;
2ea2ea
	m68knommu-*)
2ea2ea
		cpu=m68k
2ea2ea
		os=linux
2ea2ea
		;;
2ea2ea
	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
2ea2ea
		cpu=s12z
2ea2ea
		;;
2ea2ea
	openrisc-*)
2ea2ea
		cpu=or32
2ea2ea
		;;
2ea2ea
	parisc-*)
2ea2ea
		cpu=hppa
2ea2ea
		os=linux
2ea2ea
		;;
2ea2ea
	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
2ea2ea
		cpu=i586
2ea2ea
		;;
2ea2ea
	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
2ea2ea
		cpu=i686
2ea2ea
		;;
2ea2ea
	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
2ea2ea
		cpu=i686
2ea2ea
		;;
2ea2ea
	pentium4-*)
2ea2ea
		cpu=i786
2ea2ea
		;;
2ea2ea
	pc98-*)
2ea2ea
		cpu=i386
2ea2ea
		;;
2ea2ea
	ppc-* | ppcbe-*)
2ea2ea
		cpu=powerpc
2ea2ea
		;;
2ea2ea
	ppcle-* | powerpclittle-*)
2ea2ea
		cpu=powerpcle
2ea2ea
		;;
2ea2ea
	ppc64-*)
2ea2ea
		cpu=powerpc64
2ea2ea
		;;
2ea2ea
	ppc64le-* | powerpc64little-*)
2ea2ea
		cpu=powerpc64le
2ea2ea
		;;
2ea2ea
	sb1-*)
2ea2ea
		cpu=mipsisa64sb1
2ea2ea
		;;
2ea2ea
	sb1el-*)
2ea2ea
		cpu=mipsisa64sb1el
2ea2ea
		;;
2ea2ea
	sh5e[lb]-*)
2ea2ea
		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
2ea2ea
		;;
2ea2ea
	spur-*)
2ea2ea
		cpu=spur
2ea2ea
		;;
2ea2ea
	strongarm-* | thumb-*)
2ea2ea
		cpu=arm
2ea2ea
		;;
2ea2ea
	tx39-*)
2ea2ea
		cpu=mipstx39
2ea2ea
		;;
2ea2ea
	tx39el-*)
2ea2ea
		cpu=mipstx39el
2ea2ea
		;;
2ea2ea
	x64-*)
2ea2ea
		cpu=x86_64
2ea2ea
		;;
2ea2ea
	xscale-* | xscalee[bl]-*)
2ea2ea
		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
2ea2ea
		;;
2ea2ea
2ea2ea
	# Recognize the cannonical CPU Types that limit and/or modify the
2ea2ea
	# company names they are paired with.
2ea2ea
	cr16-*)
2ea2ea
		os=${os:-elf}
2ea2ea
		;;
2ea2ea
	crisv32-* | etraxfs*-*)
2ea2ea
		cpu=crisv32
2ea2ea
		vendor=axis
2ea2ea
		;;
2ea2ea
	cris-* | etrax*-*)
2ea2ea
		cpu=cris
2ea2ea
		vendor=axis
2ea2ea
		;;
2ea2ea
	crx-*)
2ea2ea
		os=${os:-elf}
2ea2ea
		;;
2ea2ea
	neo-tandem)
2ea2ea
		cpu=neo
2ea2ea
		vendor=tandem
2ea2ea
		;;
2ea2ea
	nse-tandem)
2ea2ea
		cpu=nse
2ea2ea
		vendor=tandem
2ea2ea
		;;
2ea2ea
	nsr-tandem)
2ea2ea
		cpu=nsr
2ea2ea
		vendor=tandem
2ea2ea
		;;
2ea2ea
	nsv-tandem)
2ea2ea
		cpu=nsv
2ea2ea
		vendor=tandem
2ea2ea
		;;
2ea2ea
	nsx-tandem)
2ea2ea
		cpu=nsx
2ea2ea
		vendor=tandem
2ea2ea
		;;
2ea2ea
	s390-*)
2ea2ea
		cpu=s390
2ea2ea
		vendor=ibm
2ea2ea
		;;
2ea2ea
	s390x-*)
2ea2ea
		cpu=s390x
2ea2ea
		vendor=ibm
2ea2ea
		;;
2ea2ea
	tile*-*)
2ea2ea
		os=${os:-linux-gnu}
2ea2ea
		;;
2ea2ea
2ea2ea
	*)
2ea2ea
		# Recognize the cannonical CPU types that are allowed with any
2ea2ea
		# company name.
2ea2ea
		case $cpu in
2ea2ea
			1750a | 580 \
2ea2ea
			| a29k \
2ea2ea
			| aarch64 | aarch64_be \
2ea2ea
			| abacus \
2ea2ea
			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
2ea2ea
			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
2ea2ea
			| alphapca5[67] | alpha64pca5[67] \
2ea2ea
			| am33_2.0 \
2ea2ea
			| arc | arceb \
2ea2ea
			| arm  | arm[lb]e | arme[lb] | armv* \
2ea2ea
			| avr | avr32 \
2ea2ea
			| asmjs \
2ea2ea
			| ba \
2ea2ea
			| be32 | be64 \
2ea2ea
			| bfin | bs2000 \
2ea2ea
			| c[123]* | c30 | [cjt]90 | c4x \
2ea2ea
			| c8051 | clipper | craynv | csky | cydra \
2ea2ea
			| d10v | d30v | dlx | dsp16xx \
2ea2ea
			| e2k | elxsi | epiphany \
2ea2ea
			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
2ea2ea
			| h8300 | h8500 \
2ea2ea
			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
2ea2ea
			| hexagon \
2ea2ea
			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
2ea2ea
			| ip2k | iq2000 \
2ea2ea
			| k1om \
2ea2ea
			| le32 | le64 \
2ea2ea
			| lm32 \
2ea2ea
			| m32c | m32r | m32rle \
2ea2ea
			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k | v70 | w65 \
2ea2ea
			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip \
2ea2ea
			| m88110 | m88k | maxq | mb | mcore | mep | metag \
2ea2ea
			| microblaze | microblazeel \
2ea2ea
			| mips | mipsbe | mipseb | mipsel | mipsle \
2ea2ea
			| mips16 \
2ea2ea
			| mips64 | mips64el \
2ea2ea
			| mips64octeon | mips64octeonel \
2ea2ea
			| mips64orion | mips64orionel \
2ea2ea
			| mips64r5900 | mips64r5900el \
2ea2ea
			| mips64vr | mips64vrel \
2ea2ea
			| mips64vr4100 | mips64vr4100el \
2ea2ea
			| mips64vr4300 | mips64vr4300el \
2ea2ea
			| mips64vr5000 | mips64vr5000el \
2ea2ea
			| mips64vr5900 | mips64vr5900el \
2ea2ea
			| mipsisa32 | mipsisa32el \
2ea2ea
			| mipsisa32r2 | mipsisa32r2el \
2ea2ea
			| mipsisa32r6 | mipsisa32r6el \
2ea2ea
			| mipsisa64 | mipsisa64el \
2ea2ea
			| mipsisa64r2 | mipsisa64r2el \
2ea2ea
			| mipsisa64r6 | mipsisa64r6el \
2ea2ea
			| mipsisa64sb1 | mipsisa64sb1el \
2ea2ea
			| mipsisa64sr71k | mipsisa64sr71kel \
2ea2ea
			| mipsr5900 | mipsr5900el \
2ea2ea
			| mipstx39 | mipstx39el \
2ea2ea
			| mmix \
2ea2ea
			| mn10200 | mn10300 \
2ea2ea
			| moxie \
2ea2ea
			| mt \
2ea2ea
			| msp430 \
2ea2ea
			| nds32 | nds32le | nds32be \
2ea2ea
			| nfp \
2ea2ea
			| nios | nios2 | nios2eb | nios2el \
2ea2ea
			| none | np1 | ns16k | ns32k \
2ea2ea
			| open8 \
2ea2ea
			| or1k* \
2ea2ea
			| or32 \
2ea2ea
			| orion \
2ea2ea
			| pdp10 | pdp11 | pj | pjl | pn | power \
2ea2ea
			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
2ea2ea
			| pru \
2ea2ea
			| pyramid \
2ea2ea
			| riscv | riscv32 | riscv64 \
2ea2ea
			| rl78 | romp | rs6000 | rx \
2ea2ea
			| score \
2ea2ea
			| sh | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
2ea2ea
			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
2ea2ea
			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
2ea2ea
			| sparclite \
2ea2ea
			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
2ea2ea
			| spu \
2ea2ea
			| tahoe \
2ea2ea
			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
2ea2ea
			| tron \
2ea2ea
			| ubicom32 \
2ea2ea
			| v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
2ea2ea
			| vax \
2ea2ea
			| visium \
2ea2ea
			| wasm32 \
2ea2ea
			| we32k \
2ea2ea
			| x86 | x86_64 | xc16x | xgate | xps100 \
2ea2ea
			| xstormy16 | xtensa* \
2ea2ea
			| ymp \
2ea2ea
			| z8k | z80)
2ea2ea
				;;
2ea2ea
2ea2ea
			*)
2ea2ea
				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
2ea2ea
				exit 1
2ea2ea
				;;
2ea2ea
		esac
2ea2ea
		;;
2ea2ea
esac
2ea2ea
2ea2ea
# Here we canonicalize certain aliases for manufacturers.
2ea2ea
case $vendor in
2ea2ea
	digital*)
2ea2ea
		vendor=dec
2ea2ea
		;;
2ea2ea
	commodore*)
2ea2ea
		vendor=cbm
2ea2ea
		;;
2ea2ea
	*)
2ea2ea
		;;
2ea2ea
esac
2ea2ea
2ea2ea
# Decode manufacturer-specific aliases for certain operating systems.
2ea2ea
2ea2ea
if [ x$os != x ]
2ea2ea
then
2ea2ea
case $os in
2ea2ea
	# First match some system type aliases that might get confused
2ea2ea
	# with valid system types.
2ea2ea
	# solaris* is a basic system type, with this one exception.
2ea2ea
	auroraux)
2ea2ea
		os=auroraux
2ea2ea
		;;
2ea2ea
	bluegene*)
2ea2ea
		os=cnk
2ea2ea
		;;
2ea2ea
	solaris1 | solaris1.*)
2ea2ea
		os=`echo $os | sed -e 's|solaris1|sunos4|'`
2ea2ea
		;;
2ea2ea
	solaris)
2ea2ea
		os=solaris2
2ea2ea
		;;
2ea2ea
	unixware*)
2ea2ea
		os=sysv4.2uw
2ea2ea
		;;
2ea2ea
	gnu/linux*)
2ea2ea
		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
2ea2ea
		;;
2ea2ea
	# es1800 is here to avoid being matched by es* (a different OS)
2ea2ea
	es1800*)
2ea2ea
		os=ose
2ea2ea
		;;
2ea2ea
	# Some version numbers need modification
2ea2ea
	chorusos*)
2ea2ea
		os=chorusos
2ea2ea
		;;
2ea2ea
	isc)
2ea2ea
		os=isc2.2
2ea2ea
		;;
2ea2ea
	sco6)
2ea2ea
		os=sco5v6
2ea2ea
		;;
2ea2ea
	sco5)
2ea2ea
		os=sco3.2v5
2ea2ea
		;;
2ea2ea
	sco4)
2ea2ea
		os=sco3.2v4
2ea2ea
		;;
2ea2ea
	sco3.2.[4-9]*)
2ea2ea
		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
2ea2ea
		;;
2ea2ea
	sco3.2v[4-9]* | sco5v6*)
2ea2ea
		# Don't forget version if it is 3.2v4 or newer.
2ea2ea
		;;
2ea2ea
	scout)
2ea2ea
		# Don't match below
2ea2ea
		;;
2ea2ea
	sco*)
2ea2ea
		os=sco3.2v2
2ea2ea
		;;
2ea2ea
	psos*)
2ea2ea
		os=psos
2ea2ea
		;;
2ea2ea
	# Now accept the basic system types.
2ea2ea
	# The portable systems comes first.
2ea2ea
	# Each alternative MUST end in a * to match a version number.
2ea2ea
	# sysv* is not here because it comes later, after sysvr4.
2ea2ea
	gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
2ea2ea
	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\
2ea2ea
	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
2ea2ea
	     | sym* | kopensolaris* | plan9* \
2ea2ea
	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
2ea2ea
	     | aos* | aros* | cloudabi* | sortix* \
2ea2ea
	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
2ea2ea
	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
2ea2ea
	     | knetbsd* | mirbsd* | netbsd* \
2ea2ea
	     | bitrig* | openbsd* | solidbsd* | libertybsd* \
2ea2ea
	     | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
2ea2ea
	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
2ea2ea
	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
2ea2ea
	     | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \
2ea2ea
	     | chorusrdb* | cegcc* | glidix* \
2ea2ea
	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
2ea2ea
	     | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \
2ea2ea
	     | linux-newlib* | linux-musl* | linux-uclibc* \
2ea2ea
	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
2ea2ea
	     | interix* | uwin* | mks* | rhapsody* | darwin* \
2ea2ea
	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
2ea2ea
	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
2ea2ea
	     | os2* | vos* | palmos* | uclinux* | nucleus* \
2ea2ea
	     | morphos* | superux* | rtmk* | windiss* \
2ea2ea
	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
2ea2ea
	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
2ea2ea
	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
2ea2ea
	     | midnightbsd*)
2ea2ea
	# Remember, each alternative MUST END IN *, to match a version number.
2ea2ea
		;;
2ea2ea
	qnx*)
2ea2ea
		case $cpu in
2ea2ea
		    x86 | i*86)
2ea2ea
			;;
2ea2ea
		    *)
2ea2ea
			os=nto-$os
2ea2ea
			;;
2ea2ea
		esac
2ea2ea
		;;
2ea2ea
	hiux*)
2ea2ea
		os=hiuxwe2
2ea2ea
		;;
2ea2ea
	nto-qnx*)
2ea2ea
		;;
2ea2ea
	nto*)
2ea2ea
		os=`echo $os | sed -e 's|nto|nto-qnx|'`
2ea2ea
		;;
2ea2ea
	sim | xray | os68k* | v88r* \
2ea2ea
	    | windows* | osx | abug | netware* | os9* \
2ea2ea
	    | macos* | mpw* | magic* | mmixware* | mon960* | lnews*)
2ea2ea
		;;
2ea2ea
	linux-dietlibc)
2ea2ea
		os=linux-dietlibc
2ea2ea
		;;
2ea2ea
	linux*)
2ea2ea
		os=`echo $os | sed -e 's|linux|linux-gnu|'`
2ea2ea
		;;
2ea2ea
	lynx*178)
2ea2ea
		os=lynxos178
2ea2ea
		;;
2ea2ea
	lynx*5)
2ea2ea
		os=lynxos5
2ea2ea
		;;
2ea2ea
	lynx*)
2ea2ea
		os=lynxos
2ea2ea
		;;
2ea2ea
	mac*)
2ea2ea
		os=`echo "$os" | sed -e 's|mac|macos|'`
2ea2ea
		;;
2ea2ea
	opened*)
2ea2ea
		os=openedition
2ea2ea
		;;
2ea2ea
	os400*)
2ea2ea
		os=os400
2ea2ea
		;;
2ea2ea
	sunos5*)
2ea2ea
		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
2ea2ea
		;;
2ea2ea
	sunos6*)
2ea2ea
		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
2ea2ea
		;;
2ea2ea
	wince*)
2ea2ea
		os=wince
2ea2ea
		;;
2ea2ea
	utek*)
2ea2ea
		os=bsd
2ea2ea
		;;
2ea2ea
	dynix*)
2ea2ea
		os=bsd
2ea2ea
		;;
2ea2ea
	acis*)
2ea2ea
		os=aos
2ea2ea
		;;
2ea2ea
	atheos*)
2ea2ea
		os=atheos
2ea2ea
		;;
2ea2ea
	syllable*)
2ea2ea
		os=syllable
2ea2ea
		;;
2ea2ea
	386bsd)
2ea2ea
		os=bsd
2ea2ea
		;;
2ea2ea
	ctix* | uts*)
2ea2ea
		os=sysv
2ea2ea
		;;
2ea2ea
	nova*)
2ea2ea
		os=rtmk-nova
2ea2ea
		;;
2ea2ea
	ns2)
2ea2ea
		os=nextstep2
2ea2ea
		;;
2ea2ea
	nsk*)
2ea2ea
		os=nsk
2ea2ea
		;;
2ea2ea
	# Preserve the version number of sinix5.
2ea2ea
	sinix5.*)
2ea2ea
		os=`echo $os | sed -e 's|sinix|sysv|'`
2ea2ea
		;;
2ea2ea
	sinix*)
2ea2ea
		os=sysv4
2ea2ea
		;;
2ea2ea
	tpf*)
2ea2ea
		os=tpf
2ea2ea
		;;
2ea2ea
	triton*)
2ea2ea
		os=sysv3
2ea2ea
		;;
2ea2ea
	oss*)
2ea2ea
		os=sysv3
2ea2ea
		;;
2ea2ea
	svr4*)
2ea2ea
		os=sysv4
2ea2ea
		;;
2ea2ea
	svr3)
2ea2ea
		os=sysv3
2ea2ea
		;;
2ea2ea
	sysvr4)
2ea2ea
		os=sysv4
2ea2ea
		;;
2ea2ea
	# This must come after sysvr4.
2ea2ea
	sysv*)
2ea2ea
		;;
2ea2ea
	ose*)
2ea2ea
		os=ose
2ea2ea
		;;
2ea2ea
	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
2ea2ea
		os=mint
2ea2ea
		;;
2ea2ea
	zvmoe)
2ea2ea
		os=zvmoe
2ea2ea
		;;
2ea2ea
	dicos*)
2ea2ea
		os=dicos
2ea2ea
		;;
2ea2ea
	pikeos*)
2ea2ea
		# Until real need of OS specific support for
2ea2ea
		# particular features comes up, bare metal
2ea2ea
		# configurations are quite functional.
2ea2ea
		case $cpu in
2ea2ea
		    arm*)
2ea2ea
			os=eabi
2ea2ea
			;;
2ea2ea
		    *)
2ea2ea
			os=elf
2ea2ea
			;;
2ea2ea
		esac
2ea2ea
		;;
2ea2ea
	nacl*)
2ea2ea
		;;
2ea2ea
	ios)
2ea2ea
		;;
2ea2ea
	none)
2ea2ea
		;;
2ea2ea
	*-eabi)
2ea2ea
		;;
2ea2ea
	*)
2ea2ea
		echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
2ea2ea
		exit 1
2ea2ea
		;;
2ea2ea
esac
2ea2ea
else
2ea2ea
2ea2ea
# Here we handle the default operating systems that come with various machines.
2ea2ea
# The value should be what the vendor currently ships out the door with their
2ea2ea
# machine or put another way, the most popular os provided with the machine.
2ea2ea
2ea2ea
# Note that if you're going to try to match "-MANUFACTURER" here (say,
2ea2ea
# "-sun"), then you have to tell the case statement up towards the top
2ea2ea
# that MANUFACTURER isn't an operating system.  Otherwise, code above
2ea2ea
# will signal an error saying that MANUFACTURER isn't an operating
2ea2ea
# system, and we'll never get to this point.
2ea2ea
2ea2ea
case $cpu-$vendor in
2ea2ea
	score-*)
2ea2ea
		os=elf
2ea2ea
		;;
2ea2ea
	spu-*)
2ea2ea
		os=elf
2ea2ea
		;;
2ea2ea
	*-acorn)
2ea2ea
		os=riscix1.2
2ea2ea
		;;
2ea2ea
	arm*-rebel)
2ea2ea
		os=linux
2ea2ea
		;;
2ea2ea
	arm*-semi)
2ea2ea
		os=aout
2ea2ea
		;;
2ea2ea
	c4x-* | tic4x-*)
2ea2ea
		os=coff
2ea2ea
		;;
2ea2ea
	c8051-*)
2ea2ea
		os=elf
2ea2ea
		;;
2ea2ea
	clipper-intergraph)
2ea2ea
		os=clix
2ea2ea
		;;
2ea2ea
	hexagon-*)
2ea2ea
		os=elf
2ea2ea
		;;
2ea2ea
	tic54x-*)
2ea2ea
		os=coff
2ea2ea
		;;
2ea2ea
	tic55x-*)
2ea2ea
		os=coff
2ea2ea
		;;
2ea2ea
	tic6x-*)
2ea2ea
		os=coff
2ea2ea
		;;
2ea2ea
	# This must come before the *-dec entry.
2ea2ea
	pdp10-*)
2ea2ea
		os=tops20
2ea2ea
		;;
2ea2ea
	pdp11-*)
2ea2ea
		os=none
2ea2ea
		;;
2ea2ea
	*-dec | vax-*)
2ea2ea
		os=ultrix4.2
2ea2ea
		;;
2ea2ea
	m68*-apollo)
2ea2ea
		os=domain
2ea2ea
		;;
2ea2ea
	i386-sun)
2ea2ea
		os=sunos4.0.2
2ea2ea
		;;
2ea2ea
	m68000-sun)
2ea2ea
		os=sunos3
2ea2ea
		;;
2ea2ea
	m68*-cisco)
2ea2ea
		os=aout
2ea2ea
		;;
2ea2ea
	mep-*)
2ea2ea
		os=elf
2ea2ea
		;;
2ea2ea
	mips*-cisco)
2ea2ea
		os=elf
2ea2ea
		;;
2ea2ea
	mips*-*)
2ea2ea
		os=elf
2ea2ea
		;;
2ea2ea
	or32-*)
2ea2ea
		os=coff
2ea2ea
		;;
2ea2ea
	*-tti)	# must be before sparc entry or we get the wrong os.
2ea2ea
		os=sysv3
2ea2ea
		;;
2ea2ea
	sparc-* | *-sun)
2ea2ea
		os=sunos4.1.1
2ea2ea
		;;
2ea2ea
	pru-*)
2ea2ea
		os=elf
2ea2ea
		;;
2ea2ea
	*-be)
2ea2ea
		os=beos
2ea2ea
		;;
2ea2ea
	*-ibm)
2ea2ea
		os=aix
2ea2ea
		;;
2ea2ea
	*-knuth)
2ea2ea
		os=mmixware
2ea2ea
		;;
2ea2ea
	*-wec)
2ea2ea
		os=proelf
2ea2ea
		;;
2ea2ea
	*-winbond)
2ea2ea
		os=proelf
2ea2ea
		;;
2ea2ea
	*-oki)
2ea2ea
		os=proelf
2ea2ea
		;;
2ea2ea
	*-hp)
2ea2ea
		os=hpux
2ea2ea
		;;
2ea2ea
	*-hitachi)
2ea2ea
		os=hiux
2ea2ea
		;;
2ea2ea
	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
2ea2ea
		os=sysv
2ea2ea
		;;
2ea2ea
	*-cbm)
2ea2ea
		os=amigaos
2ea2ea
		;;
2ea2ea
	*-dg)
2ea2ea
		os=dgux
2ea2ea
		;;
2ea2ea
	*-dolphin)
2ea2ea
		os=sysv3
2ea2ea
		;;
2ea2ea
	m68k-ccur)
2ea2ea
		os=rtu
2ea2ea
		;;
2ea2ea
	m88k-omron*)
2ea2ea
		os=luna
2ea2ea
		;;
2ea2ea
	*-next)
2ea2ea
		os=nextstep
2ea2ea
		;;
2ea2ea
	*-sequent)
2ea2ea
		os=ptx
2ea2ea
		;;
2ea2ea
	*-crds)
2ea2ea
		os=unos
2ea2ea
		;;
2ea2ea
	*-ns)
2ea2ea
		os=genix
2ea2ea
		;;
2ea2ea
	i370-*)
2ea2ea
		os=mvs
2ea2ea
		;;
2ea2ea
	*-gould)
2ea2ea
		os=sysv
2ea2ea
		;;
2ea2ea
	*-highlevel)
2ea2ea
		os=bsd
2ea2ea
		;;
2ea2ea
	*-encore)
2ea2ea
		os=bsd
2ea2ea
		;;
2ea2ea
	*-sgi)
2ea2ea
		os=irix
2ea2ea
		;;
2ea2ea
	*-siemens)
2ea2ea
		os=sysv4
2ea2ea
		;;
2ea2ea
	*-masscomp)
2ea2ea
		os=rtu
2ea2ea
		;;
2ea2ea
	f30[01]-fujitsu | f700-fujitsu)
2ea2ea
		os=uxpv
2ea2ea
		;;
2ea2ea
	*-rom68k)
2ea2ea
		os=coff
2ea2ea
		;;
2ea2ea
	*-*bug)
2ea2ea
		os=coff
2ea2ea
		;;
2ea2ea
	*-apple)
2ea2ea
		os=macos
2ea2ea
		;;
2ea2ea
	*-atari*)
2ea2ea
		os=mint
2ea2ea
		;;
2ea2ea
	*-wrs)
2ea2ea
		os=vxworks
2ea2ea
		;;
2ea2ea
	*)
2ea2ea
		os=none
2ea2ea
		;;
2ea2ea
esac
2ea2ea
fi
2ea2ea
2ea2ea
# Here we handle the case where we know the os, and the CPU type, but not the
2ea2ea
# manufacturer.  We pick the logical manufacturer.
2ea2ea
case $vendor in
2ea2ea
	unknown)
2ea2ea
		case $os in
2ea2ea
			riscix*)
2ea2ea
				vendor=acorn
2ea2ea
				;;
2ea2ea
			sunos*)
2ea2ea
				vendor=sun
2ea2ea
				;;
2ea2ea
			cnk*|-aix*)
2ea2ea
				vendor=ibm
2ea2ea
				;;
2ea2ea
			beos*)
2ea2ea
				vendor=be
2ea2ea
				;;
2ea2ea
			hpux*)
2ea2ea
				vendor=hp
2ea2ea
				;;
2ea2ea
			mpeix*)
2ea2ea
				vendor=hp
2ea2ea
				;;
2ea2ea
			hiux*)
2ea2ea
				vendor=hitachi
2ea2ea
				;;
2ea2ea
			unos*)
2ea2ea
				vendor=crds
2ea2ea
				;;
2ea2ea
			dgux*)
2ea2ea
				vendor=dg
2ea2ea
				;;
2ea2ea
			luna*)
2ea2ea
				vendor=omron
2ea2ea
				;;
2ea2ea
			genix*)
2ea2ea
				vendor=ns
2ea2ea
				;;
2ea2ea
			clix*)
2ea2ea
				vendor=intergraph
2ea2ea
				;;
2ea2ea
			mvs* | opened*)
2ea2ea
				vendor=ibm
2ea2ea
				;;
2ea2ea
			os400*)
2ea2ea
				vendor=ibm
2ea2ea
				;;
2ea2ea
			ptx*)
2ea2ea
				vendor=sequent
2ea2ea
				;;
2ea2ea
			tpf*)
2ea2ea
				vendor=ibm
2ea2ea
				;;
2ea2ea
			vxsim* | vxworks* | windiss*)
2ea2ea
				vendor=wrs
2ea2ea
				;;
2ea2ea
			aux*)
2ea2ea
				vendor=apple
2ea2ea
				;;
2ea2ea
			hms*)
2ea2ea
				vendor=hitachi
2ea2ea
				;;
2ea2ea
			mpw* | macos*)
2ea2ea
				vendor=apple
2ea2ea
				;;
2ea2ea
			*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
2ea2ea
				vendor=atari
2ea2ea
				;;
2ea2ea
			vos*)
2ea2ea
				vendor=stratus
2ea2ea
				;;
2ea2ea
		esac
2ea2ea
		;;
2ea2ea
esac
2ea2ea
2ea2ea
echo "$cpu-$vendor-$os"
2ea2ea
exit
2ea2ea
2ea2ea
# Local variables:
2ea2ea
# eval: (add-hook 'before-save-hook 'time-stamp)
2ea2ea
# time-stamp-start: "timestamp='"
2ea2ea
# time-stamp-format: "%:y-%02m-%02d"
2ea2ea
# time-stamp-end: "'"
2ea2ea
# End: