153354cdbSmrg#! /bin/sh
253354cdbSmrg# Configuration validation subroutine script.
3afb14e9bSmrg#   Copyright 1992-2021 Free Software Foundation, Inc.
453354cdbSmrg
5afb14e9bSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
6afb14e9bSmrg
7afb14e9bSmrgtimestamp='2021-08-14'
853354cdbSmrg
9ecb85c42Smrg# This file is free software; you can redistribute it and/or modify it
10ecb85c42Smrg# under the terms of the GNU General Public License as published by
11ecb85c42Smrg# the Free Software Foundation; either version 3 of the License, or
1253354cdbSmrg# (at your option) any later version.
1353354cdbSmrg#
14ecb85c42Smrg# This program is distributed in the hope that it will be useful, but
15ecb85c42Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
16ecb85c42Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17ecb85c42Smrg# General Public License for more details.
1853354cdbSmrg#
1953354cdbSmrg# You should have received a copy of the GNU General Public License
20afb14e9bSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
2153354cdbSmrg#
2253354cdbSmrg# As a special exception to the GNU General Public License, if you
2353354cdbSmrg# distribute this file as part of a program that contains a
2453354cdbSmrg# configuration script generated by Autoconf, you may include it under
25ecb85c42Smrg# the same distribution terms that you use for the rest of that
26ecb85c42Smrg# program.  This Exception is an additional permission under section 7
27ecb85c42Smrg# of the GNU General Public License, version 3 ("GPLv3").
2853354cdbSmrg
2953354cdbSmrg
30afb14e9bSmrg# Please send patches to <config-patches@gnu.org>.
3153354cdbSmrg#
3253354cdbSmrg# Configuration subroutine to validate and canonicalize a configuration type.
3353354cdbSmrg# Supply the specified configuration type as an argument.
3453354cdbSmrg# If it is invalid, we print an error message on stderr and exit with code 1.
3553354cdbSmrg# Otherwise, we print the canonical config type on stdout and succeed.
3653354cdbSmrg
3786bbecbeSmrg# You can get the latest version of this script from:
38afb14e9bSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
3986bbecbeSmrg
4053354cdbSmrg# This file is supposed to be the same for all GNU packages
4153354cdbSmrg# and recognize all the CPU types, system types and aliases
4253354cdbSmrg# that are meaningful with *any* GNU software.
4353354cdbSmrg# Each package is responsible for reporting which valid configurations
4453354cdbSmrg# it does not support.  The user should be able to distinguish
4553354cdbSmrg# a failure to support a valid configuration from a meaningless
4653354cdbSmrg# configuration.
4753354cdbSmrg
4853354cdbSmrg# The goal of this file is to map all the various variations of a given
4953354cdbSmrg# machine specification into a single specification in the form:
5053354cdbSmrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
5153354cdbSmrg# or in some cases, the newer four-part form:
5253354cdbSmrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
5353354cdbSmrg# It is wrong to echo any other type of specification.
5453354cdbSmrg
55afb14e9bSmrg# The "shellcheck disable" line above the timestamp inhibits complaints
56afb14e9bSmrg# about features and limitations of the classic Bourne shell that were
57afb14e9bSmrg# superseded or lifted in POSIX.  However, this script identifies a wide
58afb14e9bSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
59afb14e9bSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still
60afb14e9bSmrg# have a pre-POSIX /bin/sh.
61afb14e9bSmrg
6253354cdbSmrgme=`echo "$0" | sed -e 's,.*/,,'`
6353354cdbSmrg
6453354cdbSmrgusage="\
65afb14e9bSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
6653354cdbSmrg
6753354cdbSmrgCanonicalize a configuration name.
6853354cdbSmrg
69afb14e9bSmrgOptions:
7053354cdbSmrg  -h, --help         print this help, then exit
7153354cdbSmrg  -t, --time-stamp   print date of last modification, then exit
7253354cdbSmrg  -v, --version      print version number, then exit
7353354cdbSmrg
7453354cdbSmrgReport bugs and patches to <config-patches@gnu.org>."
7553354cdbSmrg
7653354cdbSmrgversion="\
7753354cdbSmrgGNU config.sub ($timestamp)
7853354cdbSmrg
79afb14e9bSmrgCopyright 1992-2021 Free Software Foundation, Inc.
8053354cdbSmrg
8153354cdbSmrgThis is free software; see the source for copying conditions.  There is NO
8253354cdbSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
8353354cdbSmrg
8453354cdbSmrghelp="
8553354cdbSmrgTry \`$me --help' for more information."
8653354cdbSmrg
8753354cdbSmrg# Parse command line
8853354cdbSmrgwhile test $# -gt 0 ; do
8953354cdbSmrg  case $1 in
9053354cdbSmrg    --time-stamp | --time* | -t )
9153354cdbSmrg       echo "$timestamp" ; exit ;;
9253354cdbSmrg    --version | -v )
9353354cdbSmrg       echo "$version" ; exit ;;
9453354cdbSmrg    --help | --h* | -h )
9553354cdbSmrg       echo "$usage"; exit ;;
9653354cdbSmrg    -- )     # Stop option processing
9753354cdbSmrg       shift; break ;;
9853354cdbSmrg    - )	# Use stdin as input.
9953354cdbSmrg       break ;;
10053354cdbSmrg    -* )
101afb14e9bSmrg       echo "$me: invalid option $1$help" >&2
10253354cdbSmrg       exit 1 ;;
10353354cdbSmrg
10453354cdbSmrg    *local*)
10553354cdbSmrg       # First pass through any local machine types.
106afb14e9bSmrg       echo "$1"
10753354cdbSmrg       exit ;;
10853354cdbSmrg
10953354cdbSmrg    * )
11053354cdbSmrg       break ;;
11153354cdbSmrg  esac
11253354cdbSmrgdone
11353354cdbSmrg
11453354cdbSmrgcase $# in
11553354cdbSmrg 0) echo "$me: missing argument$help" >&2
11653354cdbSmrg    exit 1;;
11753354cdbSmrg 1) ;;
11853354cdbSmrg *) echo "$me: too many arguments$help" >&2
11953354cdbSmrg    exit 1;;
12053354cdbSmrgesac
12153354cdbSmrg
122afb14e9bSmrg# Split fields of configuration type
123afb14e9bSmrg# shellcheck disable=SC2162
124afb14e9bSmrgsaved_IFS=$IFS
125afb14e9bSmrgIFS="-" read field1 field2 field3 field4 <<EOF
126afb14e9bSmrg$1
127afb14e9bSmrgEOF
128afb14e9bSmrgIFS=$saved_IFS
12953354cdbSmrg
130afb14e9bSmrg# Separate into logical components for further validation
131afb14e9bSmrgcase $1 in
132afb14e9bSmrg	*-*-*-*-*)
133afb14e9bSmrg		echo Invalid configuration \`"$1"\': more than four components >&2
134afb14e9bSmrg		exit 1
13553354cdbSmrg		;;
136afb14e9bSmrg	*-*-*-*)
137afb14e9bSmrg		basic_machine=$field1-$field2
138afb14e9bSmrg		basic_os=$field3-$field4
13953354cdbSmrg		;;
140afb14e9bSmrg	*-*-*)
141afb14e9bSmrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
142afb14e9bSmrg		# parts
143afb14e9bSmrg		maybe_os=$field2-$field3
144afb14e9bSmrg		case $maybe_os in
145afb14e9bSmrg			nto-qnx* | linux-* | uclinux-uclibc* \
146afb14e9bSmrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
147afb14e9bSmrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
148afb14e9bSmrg			| storm-chaos* | os2-emx* | rtmk-nova*)
149afb14e9bSmrg				basic_machine=$field1
150afb14e9bSmrg				basic_os=$maybe_os
151afb14e9bSmrg				;;
152afb14e9bSmrg			android-linux)
153afb14e9bSmrg				basic_machine=$field1-unknown
154afb14e9bSmrg				basic_os=linux-android
155afb14e9bSmrg				;;
156afb14e9bSmrg			*)
157afb14e9bSmrg				basic_machine=$field1-$field2
158afb14e9bSmrg				basic_os=$field3
159afb14e9bSmrg				;;
160afb14e9bSmrg		esac
16153354cdbSmrg		;;
162afb14e9bSmrg	*-*)
163afb14e9bSmrg		# A lone config we happen to match not fitting any pattern
164afb14e9bSmrg		case $field1-$field2 in
165afb14e9bSmrg			decstation-3100)
166afb14e9bSmrg				basic_machine=mips-dec
167afb14e9bSmrg				basic_os=
168afb14e9bSmrg				;;
169afb14e9bSmrg			*-*)
170afb14e9bSmrg				# Second component is usually, but not always the OS
171afb14e9bSmrg				case $field2 in
172afb14e9bSmrg					# Prevent following clause from handling this valid os
173afb14e9bSmrg					sun*os*)
174afb14e9bSmrg						basic_machine=$field1
175afb14e9bSmrg						basic_os=$field2
176afb14e9bSmrg						;;
177afb14e9bSmrg					zephyr*)
178afb14e9bSmrg						basic_machine=$field1-unknown
179afb14e9bSmrg						basic_os=$field2
180afb14e9bSmrg						;;
181afb14e9bSmrg					# Manufacturers
182afb14e9bSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
183afb14e9bSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
184afb14e9bSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
185afb14e9bSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
186afb14e9bSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
187afb14e9bSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
188afb14e9bSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
189afb14e9bSmrg					| microblaze* | sim | cisco \
190afb14e9bSmrg					| oki | wec | wrs | winbond)
191afb14e9bSmrg						basic_machine=$field1-$field2
192afb14e9bSmrg						basic_os=
193afb14e9bSmrg						;;
194afb14e9bSmrg					*)
195afb14e9bSmrg						basic_machine=$field1
196afb14e9bSmrg						basic_os=$field2
197afb14e9bSmrg						;;
198afb14e9bSmrg				esac
199afb14e9bSmrg			;;
200afb14e9bSmrg		esac
20153354cdbSmrg		;;
202afb14e9bSmrg	*)
203afb14e9bSmrg		# Convert single-component short-hands not valid as part of
204afb14e9bSmrg		# multi-component configurations.
205afb14e9bSmrg		case $field1 in
206afb14e9bSmrg			386bsd)
207afb14e9bSmrg				basic_machine=i386-pc
208afb14e9bSmrg				basic_os=bsd
209afb14e9bSmrg				;;
210afb14e9bSmrg			a29khif)
211afb14e9bSmrg				basic_machine=a29k-amd
212afb14e9bSmrg				basic_os=udi
213afb14e9bSmrg				;;
214afb14e9bSmrg			adobe68k)
215afb14e9bSmrg				basic_machine=m68010-adobe
216afb14e9bSmrg				basic_os=scout
217afb14e9bSmrg				;;
218afb14e9bSmrg			alliant)
219afb14e9bSmrg				basic_machine=fx80-alliant
220afb14e9bSmrg				basic_os=
221afb14e9bSmrg				;;
222afb14e9bSmrg			altos | altos3068)
223afb14e9bSmrg				basic_machine=m68k-altos
224afb14e9bSmrg				basic_os=
225afb14e9bSmrg				;;
226afb14e9bSmrg			am29k)
227afb14e9bSmrg				basic_machine=a29k-none
228afb14e9bSmrg				basic_os=bsd
229afb14e9bSmrg				;;
230afb14e9bSmrg			amdahl)
231afb14e9bSmrg				basic_machine=580-amdahl
232afb14e9bSmrg				basic_os=sysv
233afb14e9bSmrg				;;
234afb14e9bSmrg			amiga)
235afb14e9bSmrg				basic_machine=m68k-unknown
236afb14e9bSmrg				basic_os=
237afb14e9bSmrg				;;
238afb14e9bSmrg			amigaos | amigados)
239afb14e9bSmrg				basic_machine=m68k-unknown
240afb14e9bSmrg				basic_os=amigaos
241afb14e9bSmrg				;;
242afb14e9bSmrg			amigaunix | amix)
243afb14e9bSmrg				basic_machine=m68k-unknown
244afb14e9bSmrg				basic_os=sysv4
245afb14e9bSmrg				;;
246afb14e9bSmrg			apollo68)
247afb14e9bSmrg				basic_machine=m68k-apollo
248afb14e9bSmrg				basic_os=sysv
249afb14e9bSmrg				;;
250afb14e9bSmrg			apollo68bsd)
251afb14e9bSmrg				basic_machine=m68k-apollo
252afb14e9bSmrg				basic_os=bsd
253afb14e9bSmrg				;;
254afb14e9bSmrg			aros)
255afb14e9bSmrg				basic_machine=i386-pc
256afb14e9bSmrg				basic_os=aros
257afb14e9bSmrg				;;
258afb14e9bSmrg			aux)
259afb14e9bSmrg				basic_machine=m68k-apple
260afb14e9bSmrg				basic_os=aux
261afb14e9bSmrg				;;
262afb14e9bSmrg			balance)
263afb14e9bSmrg				basic_machine=ns32k-sequent
264afb14e9bSmrg				basic_os=dynix
265afb14e9bSmrg				;;
266afb14e9bSmrg			blackfin)
267afb14e9bSmrg				basic_machine=bfin-unknown
268afb14e9bSmrg				basic_os=linux
269afb14e9bSmrg				;;
270afb14e9bSmrg			cegcc)
271afb14e9bSmrg				basic_machine=arm-unknown
272afb14e9bSmrg				basic_os=cegcc
273afb14e9bSmrg				;;
274afb14e9bSmrg			convex-c1)
275afb14e9bSmrg				basic_machine=c1-convex
276afb14e9bSmrg				basic_os=bsd
277afb14e9bSmrg				;;
278afb14e9bSmrg			convex-c2)
279afb14e9bSmrg				basic_machine=c2-convex
280afb14e9bSmrg				basic_os=bsd
281afb14e9bSmrg				;;
282afb14e9bSmrg			convex-c32)
283afb14e9bSmrg				basic_machine=c32-convex
284afb14e9bSmrg				basic_os=bsd
285afb14e9bSmrg				;;
286afb14e9bSmrg			convex-c34)
287afb14e9bSmrg				basic_machine=c34-convex
288afb14e9bSmrg				basic_os=bsd
289afb14e9bSmrg				;;
290afb14e9bSmrg			convex-c38)
291afb14e9bSmrg				basic_machine=c38-convex
292afb14e9bSmrg				basic_os=bsd
293afb14e9bSmrg				;;
294afb14e9bSmrg			cray)
295afb14e9bSmrg				basic_machine=j90-cray
296afb14e9bSmrg				basic_os=unicos
297afb14e9bSmrg				;;
298afb14e9bSmrg			crds | unos)
299afb14e9bSmrg				basic_machine=m68k-crds
300afb14e9bSmrg				basic_os=
301afb14e9bSmrg				;;
302afb14e9bSmrg			da30)
303afb14e9bSmrg				basic_machine=m68k-da30
304afb14e9bSmrg				basic_os=
305afb14e9bSmrg				;;
306afb14e9bSmrg			decstation | pmax | pmin | dec3100 | decstatn)
307afb14e9bSmrg				basic_machine=mips-dec
308afb14e9bSmrg				basic_os=
309afb14e9bSmrg				;;
310afb14e9bSmrg			delta88)
311afb14e9bSmrg				basic_machine=m88k-motorola
312afb14e9bSmrg				basic_os=sysv3
313afb14e9bSmrg				;;
314afb14e9bSmrg			dicos)
315afb14e9bSmrg				basic_machine=i686-pc
316afb14e9bSmrg				basic_os=dicos
317afb14e9bSmrg				;;
318afb14e9bSmrg			djgpp)
319afb14e9bSmrg				basic_machine=i586-pc
320afb14e9bSmrg				basic_os=msdosdjgpp
321afb14e9bSmrg				;;
322afb14e9bSmrg			ebmon29k)
323afb14e9bSmrg				basic_machine=a29k-amd
324afb14e9bSmrg				basic_os=ebmon
325afb14e9bSmrg				;;
326afb14e9bSmrg			es1800 | OSE68k | ose68k | ose | OSE)
327afb14e9bSmrg				basic_machine=m68k-ericsson
328afb14e9bSmrg				basic_os=ose
329afb14e9bSmrg				;;
330afb14e9bSmrg			gmicro)
331afb14e9bSmrg				basic_machine=tron-gmicro
332afb14e9bSmrg				basic_os=sysv
333afb14e9bSmrg				;;
334afb14e9bSmrg			go32)
335afb14e9bSmrg				basic_machine=i386-pc
336afb14e9bSmrg				basic_os=go32
337afb14e9bSmrg				;;
338afb14e9bSmrg			h8300hms)
339afb14e9bSmrg				basic_machine=h8300-hitachi
340afb14e9bSmrg				basic_os=hms
341afb14e9bSmrg				;;
342afb14e9bSmrg			h8300xray)
343afb14e9bSmrg				basic_machine=h8300-hitachi
344afb14e9bSmrg				basic_os=xray
345afb14e9bSmrg				;;
346afb14e9bSmrg			h8500hms)
347afb14e9bSmrg				basic_machine=h8500-hitachi
348afb14e9bSmrg				basic_os=hms
349afb14e9bSmrg				;;
350afb14e9bSmrg			harris)
351afb14e9bSmrg				basic_machine=m88k-harris
352afb14e9bSmrg				basic_os=sysv3
353afb14e9bSmrg				;;
354afb14e9bSmrg			hp300 | hp300hpux)
355afb14e9bSmrg				basic_machine=m68k-hp
356afb14e9bSmrg				basic_os=hpux
357afb14e9bSmrg				;;
358afb14e9bSmrg			hp300bsd)
359afb14e9bSmrg				basic_machine=m68k-hp
360afb14e9bSmrg				basic_os=bsd
361afb14e9bSmrg				;;
362afb14e9bSmrg			hppaosf)
363afb14e9bSmrg				basic_machine=hppa1.1-hp
364afb14e9bSmrg				basic_os=osf
365afb14e9bSmrg				;;
366afb14e9bSmrg			hppro)
367afb14e9bSmrg				basic_machine=hppa1.1-hp
368afb14e9bSmrg				basic_os=proelf
369afb14e9bSmrg				;;
370afb14e9bSmrg			i386mach)
371afb14e9bSmrg				basic_machine=i386-mach
372afb14e9bSmrg				basic_os=mach
373afb14e9bSmrg				;;
374afb14e9bSmrg			isi68 | isi)
375afb14e9bSmrg				basic_machine=m68k-isi
376afb14e9bSmrg				basic_os=sysv
377afb14e9bSmrg				;;
378afb14e9bSmrg			m68knommu)
379afb14e9bSmrg				basic_machine=m68k-unknown
380afb14e9bSmrg				basic_os=linux
381afb14e9bSmrg				;;
382afb14e9bSmrg			magnum | m3230)
383afb14e9bSmrg				basic_machine=mips-mips
384afb14e9bSmrg				basic_os=sysv
385afb14e9bSmrg				;;
386afb14e9bSmrg			merlin)
387afb14e9bSmrg				basic_machine=ns32k-utek
388afb14e9bSmrg				basic_os=sysv
389afb14e9bSmrg				;;
390afb14e9bSmrg			mingw64)
391afb14e9bSmrg				basic_machine=x86_64-pc
392afb14e9bSmrg				basic_os=mingw64
393afb14e9bSmrg				;;
394afb14e9bSmrg			mingw32)
395afb14e9bSmrg				basic_machine=i686-pc
396afb14e9bSmrg				basic_os=mingw32
397afb14e9bSmrg				;;
398afb14e9bSmrg			mingw32ce)
399afb14e9bSmrg				basic_machine=arm-unknown
400afb14e9bSmrg				basic_os=mingw32ce
401afb14e9bSmrg				;;
402afb14e9bSmrg			monitor)
403afb14e9bSmrg				basic_machine=m68k-rom68k
404afb14e9bSmrg				basic_os=coff
405afb14e9bSmrg				;;
406afb14e9bSmrg			morphos)
407afb14e9bSmrg				basic_machine=powerpc-unknown
408afb14e9bSmrg				basic_os=morphos
409afb14e9bSmrg				;;
410afb14e9bSmrg			moxiebox)
411afb14e9bSmrg				basic_machine=moxie-unknown
412afb14e9bSmrg				basic_os=moxiebox
413afb14e9bSmrg				;;
414afb14e9bSmrg			msdos)
415afb14e9bSmrg				basic_machine=i386-pc
416afb14e9bSmrg				basic_os=msdos
417afb14e9bSmrg				;;
418afb14e9bSmrg			msys)
419afb14e9bSmrg				basic_machine=i686-pc
420afb14e9bSmrg				basic_os=msys
421afb14e9bSmrg				;;
422afb14e9bSmrg			mvs)
423afb14e9bSmrg				basic_machine=i370-ibm
424afb14e9bSmrg				basic_os=mvs
425afb14e9bSmrg				;;
426afb14e9bSmrg			nacl)
427afb14e9bSmrg				basic_machine=le32-unknown
428afb14e9bSmrg				basic_os=nacl
429afb14e9bSmrg				;;
430afb14e9bSmrg			ncr3000)
431afb14e9bSmrg				basic_machine=i486-ncr
432afb14e9bSmrg				basic_os=sysv4
433afb14e9bSmrg				;;
434afb14e9bSmrg			netbsd386)
435afb14e9bSmrg				basic_machine=i386-pc
436afb14e9bSmrg				basic_os=netbsd
437afb14e9bSmrg				;;
438afb14e9bSmrg			netwinder)
439afb14e9bSmrg				basic_machine=armv4l-rebel
440afb14e9bSmrg				basic_os=linux
441afb14e9bSmrg				;;
442afb14e9bSmrg			news | news700 | news800 | news900)
443afb14e9bSmrg				basic_machine=m68k-sony
444afb14e9bSmrg				basic_os=newsos
445afb14e9bSmrg				;;
446afb14e9bSmrg			news1000)
447afb14e9bSmrg				basic_machine=m68030-sony
448afb14e9bSmrg				basic_os=newsos
449afb14e9bSmrg				;;
450afb14e9bSmrg			necv70)
451afb14e9bSmrg				basic_machine=v70-nec
452afb14e9bSmrg				basic_os=sysv
453afb14e9bSmrg				;;
454afb14e9bSmrg			nh3000)
455afb14e9bSmrg				basic_machine=m68k-harris
456afb14e9bSmrg				basic_os=cxux
457afb14e9bSmrg				;;
458afb14e9bSmrg			nh[45]000)
459afb14e9bSmrg				basic_machine=m88k-harris
460afb14e9bSmrg				basic_os=cxux
461afb14e9bSmrg				;;
462afb14e9bSmrg			nindy960)
463afb14e9bSmrg				basic_machine=i960-intel
464afb14e9bSmrg				basic_os=nindy
465afb14e9bSmrg				;;
466afb14e9bSmrg			mon960)
467afb14e9bSmrg				basic_machine=i960-intel
468afb14e9bSmrg				basic_os=mon960
469afb14e9bSmrg				;;
470afb14e9bSmrg			nonstopux)
471afb14e9bSmrg				basic_machine=mips-compaq
472afb14e9bSmrg				basic_os=nonstopux
473afb14e9bSmrg				;;
474afb14e9bSmrg			os400)
475afb14e9bSmrg				basic_machine=powerpc-ibm
476afb14e9bSmrg				basic_os=os400
477afb14e9bSmrg				;;
478afb14e9bSmrg			OSE68000 | ose68000)
479afb14e9bSmrg				basic_machine=m68000-ericsson
480afb14e9bSmrg				basic_os=ose
481afb14e9bSmrg				;;
482afb14e9bSmrg			os68k)
483afb14e9bSmrg				basic_machine=m68k-none
484afb14e9bSmrg				basic_os=os68k
485afb14e9bSmrg				;;
486afb14e9bSmrg			paragon)
487afb14e9bSmrg				basic_machine=i860-intel
488afb14e9bSmrg				basic_os=osf
489afb14e9bSmrg				;;
490afb14e9bSmrg			parisc)
491afb14e9bSmrg				basic_machine=hppa-unknown
492afb14e9bSmrg				basic_os=linux
493afb14e9bSmrg				;;
494afb14e9bSmrg			psp)
495afb14e9bSmrg				basic_machine=mipsallegrexel-sony
496afb14e9bSmrg				basic_os=psp
497afb14e9bSmrg				;;
498afb14e9bSmrg			pw32)
499afb14e9bSmrg				basic_machine=i586-unknown
500afb14e9bSmrg				basic_os=pw32
501afb14e9bSmrg				;;
502afb14e9bSmrg			rdos | rdos64)
503afb14e9bSmrg				basic_machine=x86_64-pc
504afb14e9bSmrg				basic_os=rdos
505afb14e9bSmrg				;;
506afb14e9bSmrg			rdos32)
507afb14e9bSmrg				basic_machine=i386-pc
508afb14e9bSmrg				basic_os=rdos
509afb14e9bSmrg				;;
510afb14e9bSmrg			rom68k)
511afb14e9bSmrg				basic_machine=m68k-rom68k
512afb14e9bSmrg				basic_os=coff
513afb14e9bSmrg				;;
514afb14e9bSmrg			sa29200)
515afb14e9bSmrg				basic_machine=a29k-amd
516afb14e9bSmrg				basic_os=udi
517afb14e9bSmrg				;;
518afb14e9bSmrg			sei)
519afb14e9bSmrg				basic_machine=mips-sei
520afb14e9bSmrg				basic_os=seiux
521afb14e9bSmrg				;;
522afb14e9bSmrg			sequent)
523afb14e9bSmrg				basic_machine=i386-sequent
524afb14e9bSmrg				basic_os=
525afb14e9bSmrg				;;
526afb14e9bSmrg			sps7)
527afb14e9bSmrg				basic_machine=m68k-bull
528afb14e9bSmrg				basic_os=sysv2
529afb14e9bSmrg				;;
530afb14e9bSmrg			st2000)
531afb14e9bSmrg				basic_machine=m68k-tandem
532afb14e9bSmrg				basic_os=
533afb14e9bSmrg				;;
534afb14e9bSmrg			stratus)
535afb14e9bSmrg				basic_machine=i860-stratus
536afb14e9bSmrg				basic_os=sysv4
537afb14e9bSmrg				;;
538afb14e9bSmrg			sun2)
539afb14e9bSmrg				basic_machine=m68000-sun
540afb14e9bSmrg				basic_os=
541afb14e9bSmrg				;;
542afb14e9bSmrg			sun2os3)
543afb14e9bSmrg				basic_machine=m68000-sun
544afb14e9bSmrg				basic_os=sunos3
545afb14e9bSmrg				;;
546afb14e9bSmrg			sun2os4)
547afb14e9bSmrg				basic_machine=m68000-sun
548afb14e9bSmrg				basic_os=sunos4
549afb14e9bSmrg				;;
550afb14e9bSmrg			sun3)
551afb14e9bSmrg				basic_machine=m68k-sun
552afb14e9bSmrg				basic_os=
553afb14e9bSmrg				;;
554afb14e9bSmrg			sun3os3)
555afb14e9bSmrg				basic_machine=m68k-sun
556afb14e9bSmrg				basic_os=sunos3
557afb14e9bSmrg				;;
558afb14e9bSmrg			sun3os4)
559afb14e9bSmrg				basic_machine=m68k-sun
560afb14e9bSmrg				basic_os=sunos4
561afb14e9bSmrg				;;
562afb14e9bSmrg			sun4)
563afb14e9bSmrg				basic_machine=sparc-sun
564afb14e9bSmrg				basic_os=
565afb14e9bSmrg				;;
566afb14e9bSmrg			sun4os3)
567afb14e9bSmrg				basic_machine=sparc-sun
568afb14e9bSmrg				basic_os=sunos3
569afb14e9bSmrg				;;
570afb14e9bSmrg			sun4os4)
571afb14e9bSmrg				basic_machine=sparc-sun
572afb14e9bSmrg				basic_os=sunos4
573afb14e9bSmrg				;;
574afb14e9bSmrg			sun4sol2)
575afb14e9bSmrg				basic_machine=sparc-sun
576afb14e9bSmrg				basic_os=solaris2
577afb14e9bSmrg				;;
578afb14e9bSmrg			sun386 | sun386i | roadrunner)
579afb14e9bSmrg				basic_machine=i386-sun
580afb14e9bSmrg				basic_os=
581afb14e9bSmrg				;;
582afb14e9bSmrg			sv1)
583afb14e9bSmrg				basic_machine=sv1-cray
584afb14e9bSmrg				basic_os=unicos
585afb14e9bSmrg				;;
586afb14e9bSmrg			symmetry)
587afb14e9bSmrg				basic_machine=i386-sequent
588afb14e9bSmrg				basic_os=dynix
589afb14e9bSmrg				;;
590afb14e9bSmrg			t3e)
591afb14e9bSmrg				basic_machine=alphaev5-cray
592afb14e9bSmrg				basic_os=unicos
593afb14e9bSmrg				;;
594afb14e9bSmrg			t90)
595afb14e9bSmrg				basic_machine=t90-cray
596afb14e9bSmrg				basic_os=unicos
597afb14e9bSmrg				;;
598afb14e9bSmrg			toad1)
599afb14e9bSmrg				basic_machine=pdp10-xkl
600afb14e9bSmrg				basic_os=tops20
601afb14e9bSmrg				;;
602afb14e9bSmrg			tpf)
603afb14e9bSmrg				basic_machine=s390x-ibm
604afb14e9bSmrg				basic_os=tpf
605afb14e9bSmrg				;;
606afb14e9bSmrg			udi29k)
607afb14e9bSmrg				basic_machine=a29k-amd
608afb14e9bSmrg				basic_os=udi
609afb14e9bSmrg				;;
610afb14e9bSmrg			ultra3)
611afb14e9bSmrg				basic_machine=a29k-nyu
612afb14e9bSmrg				basic_os=sym1
613afb14e9bSmrg				;;
614afb14e9bSmrg			v810 | necv810)
615afb14e9bSmrg				basic_machine=v810-nec
616afb14e9bSmrg				basic_os=none
617afb14e9bSmrg				;;
618afb14e9bSmrg			vaxv)
619afb14e9bSmrg				basic_machine=vax-dec
620afb14e9bSmrg				basic_os=sysv
621afb14e9bSmrg				;;
622afb14e9bSmrg			vms)
623afb14e9bSmrg				basic_machine=vax-dec
624afb14e9bSmrg				basic_os=vms
625afb14e9bSmrg				;;
626afb14e9bSmrg			vsta)
627afb14e9bSmrg				basic_machine=i386-pc
628afb14e9bSmrg				basic_os=vsta
629afb14e9bSmrg				;;
630afb14e9bSmrg			vxworks960)
631afb14e9bSmrg				basic_machine=i960-wrs
632afb14e9bSmrg				basic_os=vxworks
633afb14e9bSmrg				;;
634afb14e9bSmrg			vxworks68)
635afb14e9bSmrg				basic_machine=m68k-wrs
636afb14e9bSmrg				basic_os=vxworks
637afb14e9bSmrg				;;
638afb14e9bSmrg			vxworks29k)
639afb14e9bSmrg				basic_machine=a29k-wrs
640afb14e9bSmrg				basic_os=vxworks
641afb14e9bSmrg				;;
642afb14e9bSmrg			xbox)
643afb14e9bSmrg				basic_machine=i686-pc
644afb14e9bSmrg				basic_os=mingw32
645afb14e9bSmrg				;;
646afb14e9bSmrg			ymp)
647afb14e9bSmrg				basic_machine=ymp-cray
648afb14e9bSmrg				basic_os=unicos
649afb14e9bSmrg				;;
650afb14e9bSmrg			*)
651afb14e9bSmrg				basic_machine=$1
652afb14e9bSmrg				basic_os=
653afb14e9bSmrg				;;
654afb14e9bSmrg		esac
65553354cdbSmrg		;;
65653354cdbSmrgesac
65753354cdbSmrg
658afb14e9bSmrg# Decode 1-component or ad-hoc basic machines
65953354cdbSmrgcase $basic_machine in
660afb14e9bSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
661afb14e9bSmrg	# some cases the only manufacturer, in others, it is the most popular.
662afb14e9bSmrg	w89k)
663afb14e9bSmrg		cpu=hppa1.1
664afb14e9bSmrg		vendor=winbond
66553354cdbSmrg		;;
666afb14e9bSmrg	op50n)
667afb14e9bSmrg		cpu=hppa1.1
668afb14e9bSmrg		vendor=oki
66961c899d4Smrg		;;
670afb14e9bSmrg	op60c)
671afb14e9bSmrg		cpu=hppa1.1
672afb14e9bSmrg		vendor=oki
673ecb85c42Smrg		;;
674afb14e9bSmrg	ibm*)
675afb14e9bSmrg		cpu=i370
676afb14e9bSmrg		vendor=ibm
67761c899d4Smrg		;;
678afb14e9bSmrg	orion105)
679afb14e9bSmrg		cpu=clipper
680afb14e9bSmrg		vendor=highlevel
68161c899d4Smrg		;;
682afb14e9bSmrg	mac | mpw | mac-mpw)
683afb14e9bSmrg		cpu=m68k
684afb14e9bSmrg		vendor=apple
68553354cdbSmrg		;;
686afb14e9bSmrg	pmac | pmac-mpw)
687afb14e9bSmrg		cpu=powerpc
688afb14e9bSmrg		vendor=apple
68953354cdbSmrg		;;
690afb14e9bSmrg
69153354cdbSmrg	# Recognize the various machine names and aliases which stand
69253354cdbSmrg	# for a CPU type and a company and sometimes even an OS.
69353354cdbSmrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
694afb14e9bSmrg		cpu=m68000
695afb14e9bSmrg		vendor=att
69653354cdbSmrg		;;
69753354cdbSmrg	3b*)
698afb14e9bSmrg		cpu=we32k
699afb14e9bSmrg		vendor=att
70053354cdbSmrg		;;
70186bbecbeSmrg	bluegene*)
702afb14e9bSmrg		cpu=powerpc
703afb14e9bSmrg		vendor=ibm
704afb14e9bSmrg		basic_os=cnk
70553354cdbSmrg		;;
70653354cdbSmrg	decsystem10* | dec10*)
707afb14e9bSmrg		cpu=pdp10
708afb14e9bSmrg		vendor=dec
709afb14e9bSmrg		basic_os=tops10
71053354cdbSmrg		;;
71153354cdbSmrg	decsystem20* | dec20*)
712afb14e9bSmrg		cpu=pdp10
713afb14e9bSmrg		vendor=dec
714afb14e9bSmrg		basic_os=tops20
71553354cdbSmrg		;;
71653354cdbSmrg	delta | 3300 | motorola-3300 | motorola-delta \
71753354cdbSmrg	      | 3300-motorola | delta-motorola)
718afb14e9bSmrg		cpu=m68k
719afb14e9bSmrg		vendor=motorola
72053354cdbSmrg		;;
721afb14e9bSmrg	dpx2*)
722afb14e9bSmrg		cpu=m68k
723afb14e9bSmrg		vendor=bull
724afb14e9bSmrg		basic_os=sysv3
72553354cdbSmrg		;;
72653354cdbSmrg	encore | umax | mmax)
727afb14e9bSmrg		cpu=ns32k
728afb14e9bSmrg		vendor=encore
72953354cdbSmrg		;;
730afb14e9bSmrg	elxsi)
731afb14e9bSmrg		cpu=elxsi
732afb14e9bSmrg		vendor=elxsi
733afb14e9bSmrg		basic_os=${basic_os:-bsd}
73453354cdbSmrg		;;
73553354cdbSmrg	fx2800)
736afb14e9bSmrg		cpu=i860
737afb14e9bSmrg		vendor=alliant
73853354cdbSmrg		;;
73953354cdbSmrg	genix)
740afb14e9bSmrg		cpu=ns32k
741afb14e9bSmrg		vendor=ns
74253354cdbSmrg		;;
74353354cdbSmrg	h3050r* | hiux*)
744afb14e9bSmrg		cpu=hppa1.1
745afb14e9bSmrg		vendor=hitachi
746afb14e9bSmrg		basic_os=hiuxwe2
74753354cdbSmrg		;;
74853354cdbSmrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
749afb14e9bSmrg		cpu=hppa1.0
750afb14e9bSmrg		vendor=hp
75153354cdbSmrg		;;
75253354cdbSmrg	hp9k2[0-9][0-9] | hp9k31[0-9])
753afb14e9bSmrg		cpu=m68000
754afb14e9bSmrg		vendor=hp
75553354cdbSmrg		;;
75653354cdbSmrg	hp9k3[2-9][0-9])
757afb14e9bSmrg		cpu=m68k
758afb14e9bSmrg		vendor=hp
75953354cdbSmrg		;;
76053354cdbSmrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
761afb14e9bSmrg		cpu=hppa1.0
762afb14e9bSmrg		vendor=hp
76353354cdbSmrg		;;
76453354cdbSmrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
765afb14e9bSmrg		cpu=hppa1.1
766afb14e9bSmrg		vendor=hp
76753354cdbSmrg		;;
76853354cdbSmrg	hp9k78[0-9] | hp78[0-9])
76953354cdbSmrg		# FIXME: really hppa2.0-hp
770afb14e9bSmrg		cpu=hppa1.1
771afb14e9bSmrg		vendor=hp
77253354cdbSmrg		;;
77353354cdbSmrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
77453354cdbSmrg		# FIXME: really hppa2.0-hp
775afb14e9bSmrg		cpu=hppa1.1
776afb14e9bSmrg		vendor=hp
77753354cdbSmrg		;;
77853354cdbSmrg	hp9k8[0-9][13679] | hp8[0-9][13679])
779afb14e9bSmrg		cpu=hppa1.1
780afb14e9bSmrg		vendor=hp
78153354cdbSmrg		;;
78253354cdbSmrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
783afb14e9bSmrg		cpu=hppa1.0
784afb14e9bSmrg		vendor=hp
78553354cdbSmrg		;;
78653354cdbSmrg	i*86v32)
787afb14e9bSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
788afb14e9bSmrg		vendor=pc
789afb14e9bSmrg		basic_os=sysv32
79053354cdbSmrg		;;
79153354cdbSmrg	i*86v4*)
792afb14e9bSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
793afb14e9bSmrg		vendor=pc
794afb14e9bSmrg		basic_os=sysv4
79553354cdbSmrg		;;
79653354cdbSmrg	i*86v)
797afb14e9bSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
798afb14e9bSmrg		vendor=pc
799afb14e9bSmrg		basic_os=sysv
80053354cdbSmrg		;;
80153354cdbSmrg	i*86sol2)
802afb14e9bSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
803afb14e9bSmrg		vendor=pc
804afb14e9bSmrg		basic_os=solaris2
80553354cdbSmrg		;;
806afb14e9bSmrg	j90 | j90-cray)
807afb14e9bSmrg		cpu=j90
808afb14e9bSmrg		vendor=cray
809afb14e9bSmrg		basic_os=${basic_os:-unicos}
81053354cdbSmrg		;;
81153354cdbSmrg	iris | iris4d)
812afb14e9bSmrg		cpu=mips
813afb14e9bSmrg		vendor=sgi
814afb14e9bSmrg		case $basic_os in
815afb14e9bSmrg		    irix*)
81653354cdbSmrg			;;
81753354cdbSmrg		    *)
818afb14e9bSmrg			basic_os=irix4
81953354cdbSmrg			;;
82053354cdbSmrg		esac
82153354cdbSmrg		;;
82253354cdbSmrg	miniframe)
823afb14e9bSmrg		cpu=m68000
824afb14e9bSmrg		vendor=convergent
82553354cdbSmrg		;;
826afb14e9bSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
827afb14e9bSmrg		cpu=m68k
828afb14e9bSmrg		vendor=atari
829afb14e9bSmrg		basic_os=mint
83053354cdbSmrg		;;
83153354cdbSmrg	news-3600 | risc-news)
832afb14e9bSmrg		cpu=mips
833afb14e9bSmrg		vendor=sony
834afb14e9bSmrg		basic_os=newsos
835afb14e9bSmrg		;;
836afb14e9bSmrg	next | m*-next)
837afb14e9bSmrg		cpu=m68k
838afb14e9bSmrg		vendor=next
839afb14e9bSmrg		case $basic_os in
840afb14e9bSmrg		    openstep*)
841afb14e9bSmrg		        ;;
842afb14e9bSmrg		    nextstep*)
84353354cdbSmrg			;;
844afb14e9bSmrg		    ns2*)
845afb14e9bSmrg		      basic_os=nextstep2
84653354cdbSmrg			;;
84753354cdbSmrg		    *)
848afb14e9bSmrg		      basic_os=nextstep3
84953354cdbSmrg			;;
85053354cdbSmrg		esac
85153354cdbSmrg		;;
85253354cdbSmrg	np1)
853afb14e9bSmrg		cpu=np1
854afb14e9bSmrg		vendor=gould
85553354cdbSmrg		;;
85653354cdbSmrg	op50n-* | op60c-*)
857afb14e9bSmrg		cpu=hppa1.1
858afb14e9bSmrg		vendor=oki
859afb14e9bSmrg		basic_os=proelf
86053354cdbSmrg		;;
86153354cdbSmrg	pa-hitachi)
862afb14e9bSmrg		cpu=hppa1.1
863afb14e9bSmrg		vendor=hitachi
864afb14e9bSmrg		basic_os=hiuxwe2
86553354cdbSmrg		;;
86653354cdbSmrg	pbd)
867afb14e9bSmrg		cpu=sparc
868afb14e9bSmrg		vendor=tti
86953354cdbSmrg		;;
87053354cdbSmrg	pbb)
871afb14e9bSmrg		cpu=m68k
872afb14e9bSmrg		vendor=tti
87353354cdbSmrg		;;
874afb14e9bSmrg	pc532)
875afb14e9bSmrg		cpu=ns32k
876afb14e9bSmrg		vendor=pc532
87753354cdbSmrg		;;
87853354cdbSmrg	pn)
879afb14e9bSmrg		cpu=pn
880afb14e9bSmrg		vendor=gould
88153354cdbSmrg		;;
882afb14e9bSmrg	power)
883afb14e9bSmrg		cpu=power
884afb14e9bSmrg		vendor=ibm
88553354cdbSmrg		;;
88653354cdbSmrg	ps2)
887afb14e9bSmrg		cpu=i386
888afb14e9bSmrg		vendor=ibm
88953354cdbSmrg		;;
89053354cdbSmrg	rm[46]00)
891afb14e9bSmrg		cpu=mips
892afb14e9bSmrg		vendor=siemens
89353354cdbSmrg		;;
89453354cdbSmrg	rtpc | rtpc-*)
895afb14e9bSmrg		cpu=romp
896afb14e9bSmrg		vendor=ibm
89753354cdbSmrg		;;
898afb14e9bSmrg	sde)
899afb14e9bSmrg		cpu=mipsisa32
900afb14e9bSmrg		vendor=sde
901afb14e9bSmrg		basic_os=${basic_os:-elf}
90253354cdbSmrg		;;
903afb14e9bSmrg	simso-wrs)
904afb14e9bSmrg		cpu=sparclite
905afb14e9bSmrg		vendor=wrs
906afb14e9bSmrg		basic_os=vxworks
90753354cdbSmrg		;;
908afb14e9bSmrg	tower | tower-32)
909afb14e9bSmrg		cpu=m68k
910afb14e9bSmrg		vendor=ncr
91153354cdbSmrg		;;
912afb14e9bSmrg	vpp*|vx|vx-*)
913afb14e9bSmrg		cpu=f301
914afb14e9bSmrg		vendor=fujitsu
91553354cdbSmrg		;;
916afb14e9bSmrg	w65)
917afb14e9bSmrg		cpu=w65
918afb14e9bSmrg		vendor=wdc
91953354cdbSmrg		;;
920afb14e9bSmrg	w89k-*)
921afb14e9bSmrg		cpu=hppa1.1
922afb14e9bSmrg		vendor=winbond
923afb14e9bSmrg		basic_os=proelf
92453354cdbSmrg		;;
925afb14e9bSmrg	none)
926afb14e9bSmrg		cpu=none
927afb14e9bSmrg		vendor=none
92853354cdbSmrg		;;
929afb14e9bSmrg	leon|leon[3-9])
930afb14e9bSmrg		cpu=sparc
931afb14e9bSmrg		vendor=$basic_machine
93253354cdbSmrg		;;
933afb14e9bSmrg	leon-*|leon[3-9]-*)
934afb14e9bSmrg		cpu=sparc
935afb14e9bSmrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
93653354cdbSmrg		;;
937afb14e9bSmrg
938afb14e9bSmrg	*-*)
939afb14e9bSmrg		# shellcheck disable=SC2162
940afb14e9bSmrg		saved_IFS=$IFS
941afb14e9bSmrg		IFS="-" read cpu vendor <<EOF
942afb14e9bSmrg$basic_machine
943afb14e9bSmrgEOF
944afb14e9bSmrg		IFS=$saved_IFS
94553354cdbSmrg		;;
946afb14e9bSmrg	# We use `pc' rather than `unknown'
947afb14e9bSmrg	# because (1) that's what they normally are, and
948afb14e9bSmrg	# (2) the word "unknown" tends to confuse beginning users.
949afb14e9bSmrg	i*86 | x86_64)
950afb14e9bSmrg		cpu=$basic_machine
951afb14e9bSmrg		vendor=pc
95253354cdbSmrg		;;
953afb14e9bSmrg	# These rules are duplicated from below for sake of the special case above;
954afb14e9bSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
955afb14e9bSmrg	pc98)
956afb14e9bSmrg		cpu=i386
957afb14e9bSmrg		vendor=pc
95853354cdbSmrg		;;
959afb14e9bSmrg	x64 | amd64)
960afb14e9bSmrg		cpu=x86_64
961afb14e9bSmrg		vendor=pc
96253354cdbSmrg		;;
963afb14e9bSmrg	# Recognize the basic CPU types without company name.
964afb14e9bSmrg	*)
965afb14e9bSmrg		cpu=$basic_machine
966afb14e9bSmrg		vendor=unknown
96761c899d4Smrg		;;
968afb14e9bSmrgesac
969afb14e9bSmrg
970afb14e9bSmrgunset -v basic_machine
971afb14e9bSmrg
972afb14e9bSmrg# Decode basic machines in the full and proper CPU-Company form.
973afb14e9bSmrgcase $cpu-$vendor in
974afb14e9bSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
975afb14e9bSmrg	# some cases the only manufacturer, in others, it is the most popular.
976afb14e9bSmrg	craynv-unknown)
977afb14e9bSmrg		vendor=cray
978afb14e9bSmrg		basic_os=${basic_os:-unicosmp}
97953354cdbSmrg		;;
980afb14e9bSmrg	c90-unknown | c90-cray)
981afb14e9bSmrg		vendor=cray
982afb14e9bSmrg		basic_os=${Basic_os:-unicos}
98353354cdbSmrg		;;
984afb14e9bSmrg	fx80-unknown)
985afb14e9bSmrg		vendor=alliant
98653354cdbSmrg		;;
987afb14e9bSmrg	romp-unknown)
988afb14e9bSmrg		vendor=ibm
98953354cdbSmrg		;;
990afb14e9bSmrg	mmix-unknown)
991afb14e9bSmrg		vendor=knuth
99253354cdbSmrg		;;
993afb14e9bSmrg	microblaze-unknown | microblazeel-unknown)
994afb14e9bSmrg		vendor=xilinx
99553354cdbSmrg		;;
996afb14e9bSmrg	rs6000-unknown)
997afb14e9bSmrg		vendor=ibm
99853354cdbSmrg		;;
999afb14e9bSmrg	vax-unknown)
1000afb14e9bSmrg		vendor=dec
100153354cdbSmrg		;;
1002afb14e9bSmrg	pdp11-unknown)
1003afb14e9bSmrg		vendor=dec
100453354cdbSmrg		;;
1005afb14e9bSmrg	we32k-unknown)
1006afb14e9bSmrg		vendor=att
100753354cdbSmrg		;;
1008afb14e9bSmrg	cydra-unknown)
1009afb14e9bSmrg		vendor=cydrome
101053354cdbSmrg		;;
1011afb14e9bSmrg	i370-ibm*)
1012afb14e9bSmrg		vendor=ibm
101353354cdbSmrg		;;
1014afb14e9bSmrg	orion-unknown)
1015afb14e9bSmrg		vendor=highlevel
101653354cdbSmrg		;;
1017afb14e9bSmrg	xps-unknown | xps100-unknown)
1018afb14e9bSmrg		cpu=xps100
1019afb14e9bSmrg		vendor=honeywell
102053354cdbSmrg		;;
1021afb14e9bSmrg
1022afb14e9bSmrg	# Here we normalize CPU types with a missing or matching vendor
1023afb14e9bSmrg	dpx20-unknown | dpx20-bull)
1024afb14e9bSmrg		cpu=rs6000
1025afb14e9bSmrg		vendor=bull
1026afb14e9bSmrg		basic_os=${basic_os:-bosx}
102753354cdbSmrg		;;
1028afb14e9bSmrg
1029afb14e9bSmrg	# Here we normalize CPU types irrespective of the vendor
1030afb14e9bSmrg	amd64-*)
1031afb14e9bSmrg		cpu=x86_64
103253354cdbSmrg		;;
1033afb14e9bSmrg	blackfin-*)
1034afb14e9bSmrg		cpu=bfin
1035afb14e9bSmrg		basic_os=linux
103653354cdbSmrg		;;
1037afb14e9bSmrg	c54x-*)
1038afb14e9bSmrg		cpu=tic54x
103953354cdbSmrg		;;
1040afb14e9bSmrg	c55x-*)
1041afb14e9bSmrg		cpu=tic55x
104253354cdbSmrg		;;
1043afb14e9bSmrg	c6x-*)
1044afb14e9bSmrg		cpu=tic6x
104553354cdbSmrg		;;
1046afb14e9bSmrg	e500v[12]-*)
1047afb14e9bSmrg		cpu=powerpc
1048afb14e9bSmrg		basic_os=${basic_os}"spe"
104953354cdbSmrg		;;
1050afb14e9bSmrg	mips3*-*)
1051afb14e9bSmrg		cpu=mips64
105253354cdbSmrg		;;
1053afb14e9bSmrg	ms1-*)
1054afb14e9bSmrg		cpu=mt
105553354cdbSmrg		;;
1056afb14e9bSmrg	m68knommu-*)
1057afb14e9bSmrg		cpu=m68k
1058afb14e9bSmrg		basic_os=linux
105953354cdbSmrg		;;
1060afb14e9bSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
1061afb14e9bSmrg		cpu=s12z
106253354cdbSmrg		;;
1063afb14e9bSmrg	openrisc-*)
1064afb14e9bSmrg		cpu=or32
106553354cdbSmrg		;;
1066afb14e9bSmrg	parisc-*)
1067afb14e9bSmrg		cpu=hppa
1068afb14e9bSmrg		basic_os=linux
106953354cdbSmrg		;;
1070afb14e9bSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
1071afb14e9bSmrg		cpu=i586
107253354cdbSmrg		;;
1073afb14e9bSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
1074afb14e9bSmrg		cpu=i686
107553354cdbSmrg		;;
1076afb14e9bSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
1077afb14e9bSmrg		cpu=i686
107853354cdbSmrg		;;
1079afb14e9bSmrg	pentium4-*)
1080afb14e9bSmrg		cpu=i786
108153354cdbSmrg		;;
1082afb14e9bSmrg	pc98-*)
1083afb14e9bSmrg		cpu=i386
108453354cdbSmrg		;;
1085afb14e9bSmrg	ppc-* | ppcbe-*)
1086afb14e9bSmrg		cpu=powerpc
108753354cdbSmrg		;;
1088afb14e9bSmrg	ppcle-* | powerpclittle-*)
1089afb14e9bSmrg		cpu=powerpcle
109053354cdbSmrg		;;
1091afb14e9bSmrg	ppc64-*)
1092afb14e9bSmrg		cpu=powerpc64
109361c899d4Smrg		;;
1094afb14e9bSmrg	ppc64le-* | powerpc64little-*)
1095afb14e9bSmrg		cpu=powerpc64le
109653354cdbSmrg		;;
1097afb14e9bSmrg	sb1-*)
1098afb14e9bSmrg		cpu=mipsisa64sb1
109953354cdbSmrg		;;
1100afb14e9bSmrg	sb1el-*)
1101afb14e9bSmrg		cpu=mipsisa64sb1el
110286bbecbeSmrg		;;
1103afb14e9bSmrg	sh5e[lb]-*)
1104afb14e9bSmrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
110553354cdbSmrg		;;
1106afb14e9bSmrg	spur-*)
1107afb14e9bSmrg		cpu=spur
110853354cdbSmrg		;;
1109afb14e9bSmrg	strongarm-* | thumb-*)
1110afb14e9bSmrg		cpu=arm
111153354cdbSmrg		;;
1112afb14e9bSmrg	tx39-*)
1113afb14e9bSmrg		cpu=mipstx39
111453354cdbSmrg		;;
1115afb14e9bSmrg	tx39el-*)
1116afb14e9bSmrg		cpu=mipstx39el
111753354cdbSmrg		;;
1118afb14e9bSmrg	x64-*)
1119afb14e9bSmrg		cpu=x86_64
112053354cdbSmrg		;;
1121afb14e9bSmrg	xscale-* | xscalee[bl]-*)
1122afb14e9bSmrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
112353354cdbSmrg		;;
1124afb14e9bSmrg	arm64-*)
1125afb14e9bSmrg		cpu=aarch64
112653354cdbSmrg		;;
1127afb14e9bSmrg
1128afb14e9bSmrg	# Recognize the canonical CPU Types that limit and/or modify the
1129afb14e9bSmrg	# company names they are paired with.
1130afb14e9bSmrg	cr16-*)
1131afb14e9bSmrg		basic_os=${basic_os:-elf}
113253354cdbSmrg		;;
1133afb14e9bSmrg	crisv32-* | etraxfs*-*)
1134afb14e9bSmrg		cpu=crisv32
1135afb14e9bSmrg		vendor=axis
113653354cdbSmrg		;;
1137afb14e9bSmrg	cris-* | etrax*-*)
1138afb14e9bSmrg		cpu=cris
1139afb14e9bSmrg		vendor=axis
114053354cdbSmrg		;;
1141afb14e9bSmrg	crx-*)
1142afb14e9bSmrg		basic_os=${basic_os:-elf}
114353354cdbSmrg		;;
1144afb14e9bSmrg	neo-tandem)
1145afb14e9bSmrg		cpu=neo
1146afb14e9bSmrg		vendor=tandem
114753354cdbSmrg		;;
1148afb14e9bSmrg	nse-tandem)
1149afb14e9bSmrg		cpu=nse
1150afb14e9bSmrg		vendor=tandem
115153354cdbSmrg		;;
1152afb14e9bSmrg	nsr-tandem)
1153afb14e9bSmrg		cpu=nsr
1154afb14e9bSmrg		vendor=tandem
115553354cdbSmrg		;;
1156afb14e9bSmrg	nsv-tandem)
1157afb14e9bSmrg		cpu=nsv
1158afb14e9bSmrg		vendor=tandem
115953354cdbSmrg		;;
1160afb14e9bSmrg	nsx-tandem)
1161afb14e9bSmrg		cpu=nsx
1162afb14e9bSmrg		vendor=tandem
116353354cdbSmrg		;;
1164afb14e9bSmrg	mipsallegrexel-sony)
1165afb14e9bSmrg		cpu=mipsallegrexel
1166afb14e9bSmrg		vendor=sony
116753354cdbSmrg		;;
1168afb14e9bSmrg	tile*-*)
1169afb14e9bSmrg		basic_os=${basic_os:-linux-gnu}
117053354cdbSmrg		;;
1171afb14e9bSmrg
117253354cdbSmrg	*)
1173afb14e9bSmrg		# Recognize the canonical CPU types that are allowed with any
1174afb14e9bSmrg		# company name.
1175afb14e9bSmrg		case $cpu in
1176afb14e9bSmrg			1750a | 580 \
1177afb14e9bSmrg			| a29k \
1178afb14e9bSmrg			| aarch64 | aarch64_be \
1179afb14e9bSmrg			| abacus \
1180afb14e9bSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
1181afb14e9bSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
1182afb14e9bSmrg			| alphapca5[67] | alpha64pca5[67] \
1183afb14e9bSmrg			| am33_2.0 \
1184afb14e9bSmrg			| amdgcn \
1185afb14e9bSmrg			| arc | arceb | arc32 | arc64 \
1186afb14e9bSmrg			| arm | arm[lb]e | arme[lb] | armv* \
1187afb14e9bSmrg			| avr | avr32 \
1188afb14e9bSmrg			| asmjs \
1189afb14e9bSmrg			| ba \
1190afb14e9bSmrg			| be32 | be64 \
1191afb14e9bSmrg			| bfin | bpf | bs2000 \
1192afb14e9bSmrg			| c[123]* | c30 | [cjt]90 | c4x \
1193afb14e9bSmrg			| c8051 | clipper | craynv | csky | cydra \
1194afb14e9bSmrg			| d10v | d30v | dlx | dsp16xx \
1195afb14e9bSmrg			| e2k | elxsi | epiphany \
1196afb14e9bSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
1197afb14e9bSmrg			| h8300 | h8500 \
1198afb14e9bSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
1199afb14e9bSmrg			| hexagon \
1200afb14e9bSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
1201afb14e9bSmrg			| ip2k | iq2000 \
1202afb14e9bSmrg			| k1om \
1203afb14e9bSmrg			| le32 | le64 \
1204afb14e9bSmrg			| lm32 \
1205afb14e9bSmrg			| loongarch32 | loongarch64 | loongarchx32 \
1206afb14e9bSmrg			| m32c | m32r | m32rle \
1207afb14e9bSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
1208afb14e9bSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
1209afb14e9bSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
1210afb14e9bSmrg			| microblaze | microblazeel \
1211afb14e9bSmrg			| mips | mipsbe | mipseb | mipsel | mipsle \
1212afb14e9bSmrg			| mips16 \
1213afb14e9bSmrg			| mips64 | mips64eb | mips64el \
1214afb14e9bSmrg			| mips64octeon | mips64octeonel \
1215afb14e9bSmrg			| mips64orion | mips64orionel \
1216afb14e9bSmrg			| mips64r5900 | mips64r5900el \
1217afb14e9bSmrg			| mips64vr | mips64vrel \
1218afb14e9bSmrg			| mips64vr4100 | mips64vr4100el \
1219afb14e9bSmrg			| mips64vr4300 | mips64vr4300el \
1220afb14e9bSmrg			| mips64vr5000 | mips64vr5000el \
1221afb14e9bSmrg			| mips64vr5900 | mips64vr5900el \
1222afb14e9bSmrg			| mipsisa32 | mipsisa32el \
1223afb14e9bSmrg			| mipsisa32r2 | mipsisa32r2el \
1224afb14e9bSmrg			| mipsisa32r3 | mipsisa32r3el \
1225afb14e9bSmrg			| mipsisa32r5 | mipsisa32r5el \
1226afb14e9bSmrg			| mipsisa32r6 | mipsisa32r6el \
1227afb14e9bSmrg			| mipsisa64 | mipsisa64el \
1228afb14e9bSmrg			| mipsisa64r2 | mipsisa64r2el \
1229afb14e9bSmrg			| mipsisa64r3 | mipsisa64r3el \
1230afb14e9bSmrg			| mipsisa64r5 | mipsisa64r5el \
1231afb14e9bSmrg			| mipsisa64r6 | mipsisa64r6el \
1232afb14e9bSmrg			| mipsisa64sb1 | mipsisa64sb1el \
1233afb14e9bSmrg			| mipsisa64sr71k | mipsisa64sr71kel \
1234afb14e9bSmrg			| mipsr5900 | mipsr5900el \
1235afb14e9bSmrg			| mipstx39 | mipstx39el \
1236afb14e9bSmrg			| mmix \
1237afb14e9bSmrg			| mn10200 | mn10300 \
1238afb14e9bSmrg			| moxie \
1239afb14e9bSmrg			| mt \
1240afb14e9bSmrg			| msp430 \
1241afb14e9bSmrg			| nds32 | nds32le | nds32be \
1242afb14e9bSmrg			| nfp \
1243afb14e9bSmrg			| nios | nios2 | nios2eb | nios2el \
1244afb14e9bSmrg			| none | np1 | ns16k | ns32k | nvptx \
1245afb14e9bSmrg			| open8 \
1246afb14e9bSmrg			| or1k* \
1247afb14e9bSmrg			| or32 \
1248afb14e9bSmrg			| orion \
1249afb14e9bSmrg			| picochip \
1250afb14e9bSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
1251afb14e9bSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
1252afb14e9bSmrg			| pru \
1253afb14e9bSmrg			| pyramid \
1254afb14e9bSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
1255afb14e9bSmrg			| rl78 | romp | rs6000 | rx \
1256afb14e9bSmrg			| s390 | s390x \
1257afb14e9bSmrg			| score \
1258afb14e9bSmrg			| sh | shl \
1259afb14e9bSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
1260afb14e9bSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
1261afb14e9bSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
1262afb14e9bSmrg			| sparclite \
1263afb14e9bSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
1264afb14e9bSmrg			| spu \
1265afb14e9bSmrg			| tahoe \
1266afb14e9bSmrg			| thumbv7* \
1267afb14e9bSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
1268afb14e9bSmrg			| tron \
1269afb14e9bSmrg			| ubicom32 \
1270afb14e9bSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
1271afb14e9bSmrg			| vax \
1272afb14e9bSmrg			| visium \
1273afb14e9bSmrg			| w65 \
1274afb14e9bSmrg			| wasm32 | wasm64 \
1275afb14e9bSmrg			| we32k \
1276afb14e9bSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
1277afb14e9bSmrg			| xstormy16 | xtensa* \
1278afb14e9bSmrg			| ymp \
1279afb14e9bSmrg			| z8k | z80)
1280afb14e9bSmrg				;;
1281afb14e9bSmrg
1282afb14e9bSmrg			*)
1283afb14e9bSmrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
1284afb14e9bSmrg				exit 1
1285afb14e9bSmrg				;;
1286afb14e9bSmrg		esac
128753354cdbSmrg		;;
128853354cdbSmrgesac
128953354cdbSmrg
129053354cdbSmrg# Here we canonicalize certain aliases for manufacturers.
1291afb14e9bSmrgcase $vendor in
1292afb14e9bSmrg	digital*)
1293afb14e9bSmrg		vendor=dec
129453354cdbSmrg		;;
1295afb14e9bSmrg	commodore*)
1296afb14e9bSmrg		vendor=cbm
129753354cdbSmrg		;;
129853354cdbSmrg	*)
129953354cdbSmrg		;;
130053354cdbSmrgesac
130153354cdbSmrg
130253354cdbSmrg# Decode manufacturer-specific aliases for certain operating systems.
130353354cdbSmrg
1304afb14e9bSmrgif test x$basic_os != x
130553354cdbSmrgthen
1306afb14e9bSmrg
1307afb14e9bSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
1308afb14e9bSmrg# set os.
1309afb14e9bSmrgcase $basic_os in
1310afb14e9bSmrg	gnu/linux*)
1311afb14e9bSmrg		kernel=linux
1312afb14e9bSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
1313afb14e9bSmrg		;;
1314afb14e9bSmrg	os2-emx)
1315afb14e9bSmrg		kernel=os2
1316afb14e9bSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
1317afb14e9bSmrg		;;
1318afb14e9bSmrg	nto-qnx*)
1319afb14e9bSmrg		kernel=nto
1320afb14e9bSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
1321afb14e9bSmrg		;;
1322afb14e9bSmrg	*-*)
1323afb14e9bSmrg		# shellcheck disable=SC2162
1324afb14e9bSmrg		saved_IFS=$IFS
1325afb14e9bSmrg		IFS="-" read kernel os <<EOF
1326afb14e9bSmrg$basic_os
1327afb14e9bSmrgEOF
1328afb14e9bSmrg		IFS=$saved_IFS
1329afb14e9bSmrg		;;
1330afb14e9bSmrg	# Default OS when just kernel was specified
1331afb14e9bSmrg	nto*)
1332afb14e9bSmrg		kernel=nto
1333afb14e9bSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
1334afb14e9bSmrg		;;
1335afb14e9bSmrg	linux*)
1336afb14e9bSmrg		kernel=linux
1337afb14e9bSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
1338afb14e9bSmrg		;;
1339afb14e9bSmrg	*)
1340afb14e9bSmrg		kernel=
1341afb14e9bSmrg		os=$basic_os
1342afb14e9bSmrg		;;
1343afb14e9bSmrgesac
1344afb14e9bSmrg
1345afb14e9bSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
1346afb14e9bSmrg# etc.)
134753354cdbSmrgcase $os in
1348afb14e9bSmrg	# First match some system type aliases that might get confused
1349afb14e9bSmrg	# with valid system types.
1350afb14e9bSmrg	# solaris* is a basic system type, with this one exception.
1351afb14e9bSmrg	auroraux)
1352afb14e9bSmrg		os=auroraux
135386bbecbeSmrg		;;
1354afb14e9bSmrg	bluegene*)
1355afb14e9bSmrg		os=cnk
135653354cdbSmrg		;;
1357afb14e9bSmrg	solaris1 | solaris1.*)
1358afb14e9bSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
135953354cdbSmrg		;;
1360afb14e9bSmrg	solaris)
1361afb14e9bSmrg		os=solaris2
136253354cdbSmrg		;;
1363afb14e9bSmrg	unixware*)
1364afb14e9bSmrg		os=sysv4.2uw
136553354cdbSmrg		;;
1366afb14e9bSmrg	# es1800 is here to avoid being matched by es* (a different OS)
1367afb14e9bSmrg	es1800*)
1368afb14e9bSmrg		os=ose
136953354cdbSmrg		;;
1370afb14e9bSmrg	# Some version numbers need modification
1371afb14e9bSmrg	chorusos*)
1372afb14e9bSmrg		os=chorusos
137353354cdbSmrg		;;
1374afb14e9bSmrg	isc)
1375afb14e9bSmrg		os=isc2.2
137653354cdbSmrg		;;
1377afb14e9bSmrg	sco6)
1378afb14e9bSmrg		os=sco5v6
137953354cdbSmrg		;;
1380afb14e9bSmrg	sco5)
1381afb14e9bSmrg		os=sco3.2v5
138253354cdbSmrg		;;
1383afb14e9bSmrg	sco4)
1384afb14e9bSmrg		os=sco3.2v4
138553354cdbSmrg		;;
1386afb14e9bSmrg	sco3.2.[4-9]*)
1387afb14e9bSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
138853354cdbSmrg		;;
1389afb14e9bSmrg	sco*v* | scout)
1390afb14e9bSmrg		# Don't match below
139153354cdbSmrg		;;
1392afb14e9bSmrg	sco*)
1393afb14e9bSmrg		os=sco3.2v2
139453354cdbSmrg		;;
1395afb14e9bSmrg	psos*)
1396afb14e9bSmrg		os=psos
139753354cdbSmrg		;;
1398afb14e9bSmrg	qnx*)
1399afb14e9bSmrg		os=qnx
140053354cdbSmrg		;;
1401afb14e9bSmrg	hiux*)
1402afb14e9bSmrg		os=hiuxwe2
140353354cdbSmrg		;;
1404afb14e9bSmrg	lynx*178)
1405afb14e9bSmrg		os=lynxos178
140653354cdbSmrg		;;
1407afb14e9bSmrg	lynx*5)
1408afb14e9bSmrg		os=lynxos5
140953354cdbSmrg		;;
1410afb14e9bSmrg	lynxos*)
1411afb14e9bSmrg		# don't get caught up in next wildcard
141253354cdbSmrg		;;
1413afb14e9bSmrg	lynx*)
1414afb14e9bSmrg		os=lynxos
141553354cdbSmrg		;;
1416afb14e9bSmrg	mac[0-9]*)
1417afb14e9bSmrg		os=`echo "$os" | sed -e 's|mac|macos|'`
141853354cdbSmrg		;;
1419afb14e9bSmrg	opened*)
1420afb14e9bSmrg		os=openedition
142153354cdbSmrg		;;
1422afb14e9bSmrg	os400*)
1423afb14e9bSmrg		os=os400
142453354cdbSmrg		;;
1425afb14e9bSmrg	sunos5*)
1426afb14e9bSmrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
142753354cdbSmrg		;;
1428afb14e9bSmrg	sunos6*)
1429afb14e9bSmrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
143053354cdbSmrg		;;
1431afb14e9bSmrg	wince*)
1432afb14e9bSmrg		os=wince
143353354cdbSmrg		;;
1434afb14e9bSmrg	utek*)
1435afb14e9bSmrg		os=bsd
143653354cdbSmrg		;;
1437afb14e9bSmrg	dynix*)
1438afb14e9bSmrg		os=bsd
143953354cdbSmrg		;;
1440afb14e9bSmrg	acis*)
1441afb14e9bSmrg		os=aos
144253354cdbSmrg		;;
1443afb14e9bSmrg	atheos*)
1444afb14e9bSmrg		os=atheos
144553354cdbSmrg		;;
1446afb14e9bSmrg	syllable*)
1447afb14e9bSmrg		os=syllable
144853354cdbSmrg		;;
1449afb14e9bSmrg	386bsd)
1450afb14e9bSmrg		os=bsd
145153354cdbSmrg		;;
1452afb14e9bSmrg	ctix* | uts*)
1453afb14e9bSmrg		os=sysv
145453354cdbSmrg		;;
1455afb14e9bSmrg	nova*)
1456afb14e9bSmrg		os=rtmk-nova
145753354cdbSmrg		;;
1458afb14e9bSmrg	ns2)
1459afb14e9bSmrg		os=nextstep2
146053354cdbSmrg		;;
1461afb14e9bSmrg	# Preserve the version number of sinix5.
1462afb14e9bSmrg	sinix5.*)
1463afb14e9bSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
146453354cdbSmrg		;;
1465afb14e9bSmrg	sinix*)
1466afb14e9bSmrg		os=sysv4
146753354cdbSmrg		;;
1468afb14e9bSmrg	tpf*)
1469afb14e9bSmrg		os=tpf
147053354cdbSmrg		;;
1471afb14e9bSmrg	triton*)
1472afb14e9bSmrg		os=sysv3
147353354cdbSmrg		;;
1474afb14e9bSmrg	oss*)
1475afb14e9bSmrg		os=sysv3
147653354cdbSmrg		;;
1477afb14e9bSmrg	svr4*)
1478afb14e9bSmrg		os=sysv4
147953354cdbSmrg		;;
1480afb14e9bSmrg	svr3)
1481afb14e9bSmrg		os=sysv3
148253354cdbSmrg		;;
1483afb14e9bSmrg	sysvr4)
1484afb14e9bSmrg		os=sysv4
148553354cdbSmrg		;;
1486afb14e9bSmrg	ose*)
1487afb14e9bSmrg		os=ose
148853354cdbSmrg		;;
1489afb14e9bSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
1490afb14e9bSmrg		os=mint
149186bbecbeSmrg		;;
1492afb14e9bSmrg	dicos*)
1493afb14e9bSmrg		os=dicos
149461c899d4Smrg		;;
1495afb14e9bSmrg	pikeos*)
1496afb14e9bSmrg		# Until real need of OS specific support for
1497afb14e9bSmrg		# particular features comes up, bare metal
1498afb14e9bSmrg		# configurations are quite functional.
1499afb14e9bSmrg		case $cpu in
1500afb14e9bSmrg		    arm*)
1501afb14e9bSmrg			os=eabi
1502afb14e9bSmrg			;;
1503afb14e9bSmrg		    *)
1504afb14e9bSmrg			os=elf
1505afb14e9bSmrg			;;
1506afb14e9bSmrg		esac
150753354cdbSmrg		;;
150853354cdbSmrg	*)
1509afb14e9bSmrg		# No normalization, but not necessarily accepted, that comes below.
151053354cdbSmrg		;;
151153354cdbSmrgesac
1512afb14e9bSmrg
151353354cdbSmrgelse
151453354cdbSmrg
151553354cdbSmrg# Here we handle the default operating systems that come with various machines.
151653354cdbSmrg# The value should be what the vendor currently ships out the door with their
151753354cdbSmrg# machine or put another way, the most popular os provided with the machine.
151853354cdbSmrg
151953354cdbSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
152053354cdbSmrg# "-sun"), then you have to tell the case statement up towards the top
152153354cdbSmrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
152253354cdbSmrg# will signal an error saying that MANUFACTURER isn't an operating
152353354cdbSmrg# system, and we'll never get to this point.
152453354cdbSmrg
1525afb14e9bSmrgkernel=
1526afb14e9bSmrgcase $cpu-$vendor in
152761c899d4Smrg	score-*)
1528afb14e9bSmrg		os=elf
152953354cdbSmrg		;;
153061c899d4Smrg	spu-*)
1531afb14e9bSmrg		os=elf
153253354cdbSmrg		;;
153353354cdbSmrg	*-acorn)
1534afb14e9bSmrg		os=riscix1.2
153553354cdbSmrg		;;
153653354cdbSmrg	arm*-rebel)
1537afb14e9bSmrg		kernel=linux
1538afb14e9bSmrg		os=gnu
153953354cdbSmrg		;;
154053354cdbSmrg	arm*-semi)
1541afb14e9bSmrg		os=aout
154253354cdbSmrg		;;
154361c899d4Smrg	c4x-* | tic4x-*)
1544afb14e9bSmrg		os=coff
154553354cdbSmrg		;;
1546ecb85c42Smrg	c8051-*)
1547afb14e9bSmrg		os=elf
1548afb14e9bSmrg		;;
1549afb14e9bSmrg	clipper-intergraph)
1550afb14e9bSmrg		os=clix
1551ecb85c42Smrg		;;
1552ecb85c42Smrg	hexagon-*)
1553afb14e9bSmrg		os=elf
1554ecb85c42Smrg		;;
155586bbecbeSmrg	tic54x-*)
1556afb14e9bSmrg		os=coff
155786bbecbeSmrg		;;
155886bbecbeSmrg	tic55x-*)
1559afb14e9bSmrg		os=coff
156086bbecbeSmrg		;;
156186bbecbeSmrg	tic6x-*)
1562afb14e9bSmrg		os=coff
156386bbecbeSmrg		;;
156453354cdbSmrg	# This must come before the *-dec entry.
156553354cdbSmrg	pdp10-*)
1566afb14e9bSmrg		os=tops20
156753354cdbSmrg		;;
156853354cdbSmrg	pdp11-*)
1569afb14e9bSmrg		os=none
157053354cdbSmrg		;;
157153354cdbSmrg	*-dec | vax-*)
1572afb14e9bSmrg		os=ultrix4.2
157353354cdbSmrg		;;
157453354cdbSmrg	m68*-apollo)
1575afb14e9bSmrg		os=domain
157653354cdbSmrg		;;
157753354cdbSmrg	i386-sun)
1578afb14e9bSmrg		os=sunos4.0.2
157953354cdbSmrg		;;
158053354cdbSmrg	m68000-sun)
1581afb14e9bSmrg		os=sunos3
158253354cdbSmrg		;;
158353354cdbSmrg	m68*-cisco)
1584afb14e9bSmrg		os=aout
158553354cdbSmrg		;;
158661c899d4Smrg	mep-*)
1587afb14e9bSmrg		os=elf
158853354cdbSmrg		;;
158953354cdbSmrg	mips*-cisco)
1590afb14e9bSmrg		os=elf
159153354cdbSmrg		;;
159253354cdbSmrg	mips*-*)
1593afb14e9bSmrg		os=elf
1594ecb85c42Smrg		;;
159553354cdbSmrg	or32-*)
1596afb14e9bSmrg		os=coff
159753354cdbSmrg		;;
159853354cdbSmrg	*-tti)	# must be before sparc entry or we get the wrong os.
1599afb14e9bSmrg		os=sysv3
160053354cdbSmrg		;;
160153354cdbSmrg	sparc-* | *-sun)
1602afb14e9bSmrg		os=sunos4.1.1
160353354cdbSmrg		;;
1604afb14e9bSmrg	pru-*)
1605afb14e9bSmrg		os=elf
160653354cdbSmrg		;;
1607afb14e9bSmrg	*-be)
1608afb14e9bSmrg		os=beos
160953354cdbSmrg		;;
161053354cdbSmrg	*-ibm)
1611afb14e9bSmrg		os=aix
161253354cdbSmrg		;;
161361c899d4Smrg	*-knuth)
1614afb14e9bSmrg		os=mmixware
161553354cdbSmrg		;;
161653354cdbSmrg	*-wec)
1617afb14e9bSmrg		os=proelf
161853354cdbSmrg		;;
161953354cdbSmrg	*-winbond)
1620afb14e9bSmrg		os=proelf
162153354cdbSmrg		;;
162253354cdbSmrg	*-oki)
1623afb14e9bSmrg		os=proelf
162453354cdbSmrg		;;
162553354cdbSmrg	*-hp)
1626afb14e9bSmrg		os=hpux
162753354cdbSmrg		;;
162853354cdbSmrg	*-hitachi)
1629afb14e9bSmrg		os=hiux
163053354cdbSmrg		;;
163153354cdbSmrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
1632afb14e9bSmrg		os=sysv
163353354cdbSmrg		;;
163453354cdbSmrg	*-cbm)
1635afb14e9bSmrg		os=amigaos
163653354cdbSmrg		;;
163753354cdbSmrg	*-dg)
1638afb14e9bSmrg		os=dgux
163953354cdbSmrg		;;
164053354cdbSmrg	*-dolphin)
1641afb14e9bSmrg		os=sysv3
164253354cdbSmrg		;;
164353354cdbSmrg	m68k-ccur)
1644afb14e9bSmrg		os=rtu
164553354cdbSmrg		;;
164653354cdbSmrg	m88k-omron*)
1647afb14e9bSmrg		os=luna
164853354cdbSmrg		;;
1649afb14e9bSmrg	*-next)
1650afb14e9bSmrg		os=nextstep
165153354cdbSmrg		;;
165253354cdbSmrg	*-sequent)
1653afb14e9bSmrg		os=ptx
165453354cdbSmrg		;;
165553354cdbSmrg	*-crds)
1656afb14e9bSmrg		os=unos
165753354cdbSmrg		;;
165853354cdbSmrg	*-ns)
1659afb14e9bSmrg		os=genix
166053354cdbSmrg		;;
166153354cdbSmrg	i370-*)
1662afb14e9bSmrg		os=mvs
166353354cdbSmrg		;;
166453354cdbSmrg	*-gould)
1665afb14e9bSmrg		os=sysv
166653354cdbSmrg		;;
166753354cdbSmrg	*-highlevel)
1668afb14e9bSmrg		os=bsd
166953354cdbSmrg		;;
167053354cdbSmrg	*-encore)
1671afb14e9bSmrg		os=bsd
167253354cdbSmrg		;;
167353354cdbSmrg	*-sgi)
1674afb14e9bSmrg		os=irix
167553354cdbSmrg		;;
167653354cdbSmrg	*-siemens)
1677afb14e9bSmrg		os=sysv4
167853354cdbSmrg		;;
167953354cdbSmrg	*-masscomp)
1680afb14e9bSmrg		os=rtu
168153354cdbSmrg		;;
168253354cdbSmrg	f30[01]-fujitsu | f700-fujitsu)
1683afb14e9bSmrg		os=uxpv
168453354cdbSmrg		;;
168553354cdbSmrg	*-rom68k)
1686afb14e9bSmrg		os=coff
168753354cdbSmrg		;;
168853354cdbSmrg	*-*bug)
1689afb14e9bSmrg		os=coff
169053354cdbSmrg		;;
169153354cdbSmrg	*-apple)
1692afb14e9bSmrg		os=macos
169353354cdbSmrg		;;
169453354cdbSmrg	*-atari*)
1695afb14e9bSmrg		os=mint
1696afb14e9bSmrg		;;
1697afb14e9bSmrg	*-wrs)
1698afb14e9bSmrg		os=vxworks
169953354cdbSmrg		;;
170053354cdbSmrg	*)
1701afb14e9bSmrg		os=none
170253354cdbSmrg		;;
170353354cdbSmrgesac
1704afb14e9bSmrg
170553354cdbSmrgfi
170653354cdbSmrg
1707afb14e9bSmrg# Now, validate our (potentially fixed-up) OS.
1708afb14e9bSmrgcase $os in
1709afb14e9bSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
1710afb14e9bSmrg	musl* | newlib* | relibc* | uclibc*)
1711afb14e9bSmrg		;;
1712afb14e9bSmrg	# Likewise for "kernel-abi"
1713afb14e9bSmrg	eabi* | gnueabi*)
1714afb14e9bSmrg		;;
1715afb14e9bSmrg	# VxWorks passes extra cpu info in the 4th filed.
1716afb14e9bSmrg	simlinux | simwindows | spe)
1717afb14e9bSmrg		;;
1718afb14e9bSmrg	# Now accept the basic system types.
1719afb14e9bSmrg	# The portable systems comes first.
1720afb14e9bSmrg	# Each alternative MUST end in a * to match a version number.
1721afb14e9bSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
1722afb14e9bSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
1723afb14e9bSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
1724afb14e9bSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
1725afb14e9bSmrg	     | hiux* | abug | nacl* | netware* | windows* \
1726afb14e9bSmrg	     | os9* | macos* | osx* | ios* \
1727afb14e9bSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
1728afb14e9bSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
1729afb14e9bSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
1730afb14e9bSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
1731afb14e9bSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
1732afb14e9bSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
1733afb14e9bSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
1734afb14e9bSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
1735afb14e9bSmrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
1736afb14e9bSmrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
1737afb14e9bSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
1738afb14e9bSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
1739afb14e9bSmrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
1740afb14e9bSmrg	     | midipix* | mingw32* | mingw64* | mint* \
1741afb14e9bSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
1742afb14e9bSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
1743afb14e9bSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
1744afb14e9bSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
1745afb14e9bSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
1746afb14e9bSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
1747afb14e9bSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
1748afb14e9bSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
1749afb14e9bSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
1750afb14e9bSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
1751afb14e9bSmrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*)
1752afb14e9bSmrg		;;
1753afb14e9bSmrg	# This one is extra strict with allowed versions
1754afb14e9bSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
1755afb14e9bSmrg		# Don't forget version if it is 3.2v4 or newer.
1756afb14e9bSmrg		;;
1757afb14e9bSmrg	none)
1758afb14e9bSmrg		;;
1759afb14e9bSmrg	*)
1760afb14e9bSmrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
1761afb14e9bSmrg		exit 1
1762afb14e9bSmrg		;;
1763afb14e9bSmrgesac
1764afb14e9bSmrg
1765afb14e9bSmrg# As a final step for OS-related things, validate the OS-kernel combination
1766afb14e9bSmrg# (given a valid OS), if there is a kernel.
1767afb14e9bSmrgcase $kernel-$os in
1768afb14e9bSmrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
1769afb14e9bSmrg		   | linux-musl* | linux-relibc* | linux-uclibc* )
1770afb14e9bSmrg		;;
1771afb14e9bSmrg	uclinux-uclibc* )
1772afb14e9bSmrg		;;
1773afb14e9bSmrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
1774afb14e9bSmrg		# These are just libc implementations, not actual OSes, and thus
1775afb14e9bSmrg		# require a kernel.
1776afb14e9bSmrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
1777afb14e9bSmrg		exit 1
1778afb14e9bSmrg		;;
1779afb14e9bSmrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
1780afb14e9bSmrg		;;
1781afb14e9bSmrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
1782afb14e9bSmrg		;;
1783afb14e9bSmrg	nto-qnx*)
1784afb14e9bSmrg		;;
1785afb14e9bSmrg	os2-emx)
1786afb14e9bSmrg		;;
1787afb14e9bSmrg	*-eabi* | *-gnueabi*)
1788afb14e9bSmrg		;;
1789afb14e9bSmrg	-*)
1790afb14e9bSmrg		# Blank kernel with real OS is always fine.
1791afb14e9bSmrg		;;
1792afb14e9bSmrg	*-*)
1793afb14e9bSmrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
1794afb14e9bSmrg		exit 1
1795afb14e9bSmrg		;;
1796afb14e9bSmrgesac
1797afb14e9bSmrg
179853354cdbSmrg# Here we handle the case where we know the os, and the CPU type, but not the
179953354cdbSmrg# manufacturer.  We pick the logical manufacturer.
1800afb14e9bSmrgcase $vendor in
1801afb14e9bSmrg	unknown)
1802afb14e9bSmrg		case $cpu-$os in
1803afb14e9bSmrg			*-riscix*)
180453354cdbSmrg				vendor=acorn
180553354cdbSmrg				;;
1806afb14e9bSmrg			*-sunos*)
180753354cdbSmrg				vendor=sun
180853354cdbSmrg				;;
1809afb14e9bSmrg			*-cnk* | *-aix*)
181053354cdbSmrg				vendor=ibm
181153354cdbSmrg				;;
1812afb14e9bSmrg			*-beos*)
181353354cdbSmrg				vendor=be
181453354cdbSmrg				;;
1815afb14e9bSmrg			*-hpux*)
181653354cdbSmrg				vendor=hp
181753354cdbSmrg				;;
1818afb14e9bSmrg			*-mpeix*)
181953354cdbSmrg				vendor=hp
182053354cdbSmrg				;;
1821afb14e9bSmrg			*-hiux*)
182253354cdbSmrg				vendor=hitachi
182353354cdbSmrg				;;
1824afb14e9bSmrg			*-unos*)
182553354cdbSmrg				vendor=crds
182653354cdbSmrg				;;
1827afb14e9bSmrg			*-dgux*)
182853354cdbSmrg				vendor=dg
182953354cdbSmrg				;;
1830afb14e9bSmrg			*-luna*)
183153354cdbSmrg				vendor=omron
183253354cdbSmrg				;;
1833afb14e9bSmrg			*-genix*)
183453354cdbSmrg				vendor=ns
183553354cdbSmrg				;;
1836afb14e9bSmrg			*-clix*)
1837afb14e9bSmrg				vendor=intergraph
1838afb14e9bSmrg				;;
1839afb14e9bSmrg			*-mvs* | *-opened*)
1840afb14e9bSmrg				vendor=ibm
1841afb14e9bSmrg				;;
1842afb14e9bSmrg			*-os400*)
184353354cdbSmrg				vendor=ibm
184453354cdbSmrg				;;
1845afb14e9bSmrg			s390-* | s390x-*)
184653354cdbSmrg				vendor=ibm
184753354cdbSmrg				;;
1848afb14e9bSmrg			*-ptx*)
184953354cdbSmrg				vendor=sequent
185053354cdbSmrg				;;
1851afb14e9bSmrg			*-tpf*)
185253354cdbSmrg				vendor=ibm
185353354cdbSmrg				;;
1854afb14e9bSmrg			*-vxsim* | *-vxworks* | *-windiss*)
185553354cdbSmrg				vendor=wrs
185653354cdbSmrg				;;
1857afb14e9bSmrg			*-aux*)
185853354cdbSmrg				vendor=apple
185953354cdbSmrg				;;
1860afb14e9bSmrg			*-hms*)
186153354cdbSmrg				vendor=hitachi
186253354cdbSmrg				;;
1863afb14e9bSmrg			*-mpw* | *-macos*)
186453354cdbSmrg				vendor=apple
186553354cdbSmrg				;;
1866afb14e9bSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
186753354cdbSmrg				vendor=atari
186853354cdbSmrg				;;
1869afb14e9bSmrg			*-vos*)
187053354cdbSmrg				vendor=stratus
187153354cdbSmrg				;;
187253354cdbSmrg		esac
187353354cdbSmrg		;;
187453354cdbSmrgesac
187553354cdbSmrg
1876afb14e9bSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
187753354cdbSmrgexit
187853354cdbSmrg
187953354cdbSmrg# Local variables:
1880afb14e9bSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
188153354cdbSmrg# time-stamp-start: "timestamp='"
188253354cdbSmrg# time-stamp-format: "%:y-%02m-%02d"
188353354cdbSmrg# time-stamp-end: "'"
188453354cdbSmrg# End:
1885