config.sub revision b8df70be
14c61c93dSmrg#! /bin/sh
24c61c93dSmrg# Configuration validation subroutine script.
3b8df70beSmrg#   Copyright 1992-2021 Free Software Foundation, Inc.
44c61c93dSmrg
5b8df70beSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
6b8df70beSmrg
7b8df70beSmrgtimestamp='2021-07-03'
84c61c93dSmrg
91c80d5b0Smrg# This file is free software; you can redistribute it and/or modify it
101c80d5b0Smrg# under the terms of the GNU General Public License as published by
111c80d5b0Smrg# the Free Software Foundation; either version 3 of the License, or
124c61c93dSmrg# (at your option) any later version.
134c61c93dSmrg#
141c80d5b0Smrg# This program is distributed in the hope that it will be useful, but
151c80d5b0Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
161c80d5b0Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
171c80d5b0Smrg# General Public License for more details.
184c61c93dSmrg#
194c61c93dSmrg# You should have received a copy of the GNU General Public License
20b8df70beSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
214c61c93dSmrg#
224c61c93dSmrg# As a special exception to the GNU General Public License, if you
234c61c93dSmrg# distribute this file as part of a program that contains a
244c61c93dSmrg# configuration script generated by Autoconf, you may include it under
251c80d5b0Smrg# the same distribution terms that you use for the rest of that
261c80d5b0Smrg# program.  This Exception is an additional permission under section 7
271c80d5b0Smrg# of the GNU General Public License, version 3 ("GPLv3").
284c61c93dSmrg
294c61c93dSmrg
3041fe0c2aSmrg# Please send patches to <config-patches@gnu.org>.
314c61c93dSmrg#
324c61c93dSmrg# Configuration subroutine to validate and canonicalize a configuration type.
334c61c93dSmrg# Supply the specified configuration type as an argument.
344c61c93dSmrg# If it is invalid, we print an error message on stderr and exit with code 1.
354c61c93dSmrg# Otherwise, we print the canonical config type on stdout and succeed.
364c61c93dSmrg
37d7ffce2aSmrg# You can get the latest version of this script from:
38b8df70beSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
39d7ffce2aSmrg
404c61c93dSmrg# This file is supposed to be the same for all GNU packages
414c61c93dSmrg# and recognize all the CPU types, system types and aliases
424c61c93dSmrg# that are meaningful with *any* GNU software.
434c61c93dSmrg# Each package is responsible for reporting which valid configurations
444c61c93dSmrg# it does not support.  The user should be able to distinguish
454c61c93dSmrg# a failure to support a valid configuration from a meaningless
464c61c93dSmrg# configuration.
474c61c93dSmrg
484c61c93dSmrg# The goal of this file is to map all the various variations of a given
494c61c93dSmrg# machine specification into a single specification in the form:
504c61c93dSmrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
514c61c93dSmrg# or in some cases, the newer four-part form:
524c61c93dSmrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
534c61c93dSmrg# It is wrong to echo any other type of specification.
544c61c93dSmrg
55b8df70beSmrg# The "shellcheck disable" line above the timestamp inhibits complaints
56b8df70beSmrg# about features and limitations of the classic Bourne shell that were
57b8df70beSmrg# superseded or lifted in POSIX.  However, this script identifies a wide
58b8df70beSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
59b8df70beSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still
60b8df70beSmrg# have a pre-POSIX /bin/sh.
61b8df70beSmrg
624c61c93dSmrgme=`echo "$0" | sed -e 's,.*/,,'`
634c61c93dSmrg
644c61c93dSmrgusage="\
65b8df70beSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
664c61c93dSmrg
674c61c93dSmrgCanonicalize a configuration name.
684c61c93dSmrg
69b8df70beSmrgOptions:
704c61c93dSmrg  -h, --help         print this help, then exit
714c61c93dSmrg  -t, --time-stamp   print date of last modification, then exit
724c61c93dSmrg  -v, --version      print version number, then exit
734c61c93dSmrg
744c61c93dSmrgReport bugs and patches to <config-patches@gnu.org>."
754c61c93dSmrg
764c61c93dSmrgversion="\
774c61c93dSmrgGNU config.sub ($timestamp)
784c61c93dSmrg
79b8df70beSmrgCopyright 1992-2021 Free Software Foundation, Inc.
804c61c93dSmrg
814c61c93dSmrgThis is free software; see the source for copying conditions.  There is NO
824c61c93dSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
834c61c93dSmrg
844c61c93dSmrghelp="
854c61c93dSmrgTry \`$me --help' for more information."
864c61c93dSmrg
874c61c93dSmrg# Parse command line
884c61c93dSmrgwhile test $# -gt 0 ; do
894c61c93dSmrg  case $1 in
904c61c93dSmrg    --time-stamp | --time* | -t )
914c61c93dSmrg       echo "$timestamp" ; exit ;;
924c61c93dSmrg    --version | -v )
934c61c93dSmrg       echo "$version" ; exit ;;
944c61c93dSmrg    --help | --h* | -h )
954c61c93dSmrg       echo "$usage"; exit ;;
964c61c93dSmrg    -- )     # Stop option processing
974c61c93dSmrg       shift; break ;;
984c61c93dSmrg    - )	# Use stdin as input.
994c61c93dSmrg       break ;;
1004c61c93dSmrg    -* )
101b8df70beSmrg       echo "$me: invalid option $1$help" >&2
1024c61c93dSmrg       exit 1 ;;
1034c61c93dSmrg
1044c61c93dSmrg    *local*)
1054c61c93dSmrg       # First pass through any local machine types.
106b8df70beSmrg       echo "$1"
1074c61c93dSmrg       exit ;;
1084c61c93dSmrg
1094c61c93dSmrg    * )
1104c61c93dSmrg       break ;;
1114c61c93dSmrg  esac
1124c61c93dSmrgdone
1134c61c93dSmrg
1144c61c93dSmrgcase $# in
1154c61c93dSmrg 0) echo "$me: missing argument$help" >&2
1164c61c93dSmrg    exit 1;;
1174c61c93dSmrg 1) ;;
1184c61c93dSmrg *) echo "$me: too many arguments$help" >&2
1194c61c93dSmrg    exit 1;;
1204c61c93dSmrgesac
1214c61c93dSmrg
122b8df70beSmrg# Split fields of configuration type
123b8df70beSmrg# shellcheck disable=SC2162
124b8df70beSmrgIFS="-" read field1 field2 field3 field4 <<EOF
125b8df70beSmrg$1
126b8df70beSmrgEOF
1274c61c93dSmrg
128b8df70beSmrg# Separate into logical components for further validation
129b8df70beSmrgcase $1 in
130b8df70beSmrg	*-*-*-*-*)
131b8df70beSmrg		echo Invalid configuration \`"$1"\': more than four components >&2
132b8df70beSmrg		exit 1
1334c61c93dSmrg		;;
134b8df70beSmrg	*-*-*-*)
135b8df70beSmrg		basic_machine=$field1-$field2
136b8df70beSmrg		basic_os=$field3-$field4
1374c61c93dSmrg		;;
138b8df70beSmrg	*-*-*)
139b8df70beSmrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
140b8df70beSmrg		# parts
141b8df70beSmrg		maybe_os=$field2-$field3
142b8df70beSmrg		case $maybe_os in
143b8df70beSmrg			nto-qnx* | linux-* | uclinux-uclibc* \
144b8df70beSmrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
145b8df70beSmrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
146b8df70beSmrg			| storm-chaos* | os2-emx* | rtmk-nova*)
147b8df70beSmrg				basic_machine=$field1
148b8df70beSmrg				basic_os=$maybe_os
149b8df70beSmrg				;;
150b8df70beSmrg			android-linux)
151b8df70beSmrg				basic_machine=$field1-unknown
152b8df70beSmrg				basic_os=linux-android
153b8df70beSmrg				;;
154b8df70beSmrg			*)
155b8df70beSmrg				basic_machine=$field1-$field2
156b8df70beSmrg				basic_os=$field3
157b8df70beSmrg				;;
158b8df70beSmrg		esac
1594c61c93dSmrg		;;
160b8df70beSmrg	*-*)
161b8df70beSmrg		# A lone config we happen to match not fitting any pattern
162b8df70beSmrg		case $field1-$field2 in
163b8df70beSmrg			decstation-3100)
164b8df70beSmrg				basic_machine=mips-dec
165b8df70beSmrg				basic_os=
166b8df70beSmrg				;;
167b8df70beSmrg			*-*)
168b8df70beSmrg				# Second component is usually, but not always the OS
169b8df70beSmrg				case $field2 in
170b8df70beSmrg					# Prevent following clause from handling this valid os
171b8df70beSmrg					sun*os*)
172b8df70beSmrg						basic_machine=$field1
173b8df70beSmrg						basic_os=$field2
174b8df70beSmrg						;;
175b8df70beSmrg					# Manufacturers
176b8df70beSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
177b8df70beSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
178b8df70beSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
179b8df70beSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
180b8df70beSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
181b8df70beSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
182b8df70beSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
183b8df70beSmrg					| microblaze* | sim | cisco \
184b8df70beSmrg					| oki | wec | wrs | winbond)
185b8df70beSmrg						basic_machine=$field1-$field2
186b8df70beSmrg						basic_os=
187b8df70beSmrg						;;
188b8df70beSmrg					*)
189b8df70beSmrg						basic_machine=$field1
190b8df70beSmrg						basic_os=$field2
191b8df70beSmrg						;;
192b8df70beSmrg				esac
193b8df70beSmrg			;;
194b8df70beSmrg		esac
1954c61c93dSmrg		;;
196b8df70beSmrg	*)
197b8df70beSmrg		# Convert single-component short-hands not valid as part of
198b8df70beSmrg		# multi-component configurations.
199b8df70beSmrg		case $field1 in
200b8df70beSmrg			386bsd)
201b8df70beSmrg				basic_machine=i386-pc
202b8df70beSmrg				basic_os=bsd
203b8df70beSmrg				;;
204b8df70beSmrg			a29khif)
205b8df70beSmrg				basic_machine=a29k-amd
206b8df70beSmrg				basic_os=udi
207b8df70beSmrg				;;
208b8df70beSmrg			adobe68k)
209b8df70beSmrg				basic_machine=m68010-adobe
210b8df70beSmrg				basic_os=scout
211b8df70beSmrg				;;
212b8df70beSmrg			alliant)
213b8df70beSmrg				basic_machine=fx80-alliant
214b8df70beSmrg				basic_os=
215b8df70beSmrg				;;
216b8df70beSmrg			altos | altos3068)
217b8df70beSmrg				basic_machine=m68k-altos
218b8df70beSmrg				basic_os=
219b8df70beSmrg				;;
220b8df70beSmrg			am29k)
221b8df70beSmrg				basic_machine=a29k-none
222b8df70beSmrg				basic_os=bsd
223b8df70beSmrg				;;
224b8df70beSmrg			amdahl)
225b8df70beSmrg				basic_machine=580-amdahl
226b8df70beSmrg				basic_os=sysv
227b8df70beSmrg				;;
228b8df70beSmrg			amiga)
229b8df70beSmrg				basic_machine=m68k-unknown
230b8df70beSmrg				basic_os=
231b8df70beSmrg				;;
232b8df70beSmrg			amigaos | amigados)
233b8df70beSmrg				basic_machine=m68k-unknown
234b8df70beSmrg				basic_os=amigaos
235b8df70beSmrg				;;
236b8df70beSmrg			amigaunix | amix)
237b8df70beSmrg				basic_machine=m68k-unknown
238b8df70beSmrg				basic_os=sysv4
239b8df70beSmrg				;;
240b8df70beSmrg			apollo68)
241b8df70beSmrg				basic_machine=m68k-apollo
242b8df70beSmrg				basic_os=sysv
243b8df70beSmrg				;;
244b8df70beSmrg			apollo68bsd)
245b8df70beSmrg				basic_machine=m68k-apollo
246b8df70beSmrg				basic_os=bsd
247b8df70beSmrg				;;
248b8df70beSmrg			aros)
249b8df70beSmrg				basic_machine=i386-pc
250b8df70beSmrg				basic_os=aros
251b8df70beSmrg				;;
252b8df70beSmrg			aux)
253b8df70beSmrg				basic_machine=m68k-apple
254b8df70beSmrg				basic_os=aux
255b8df70beSmrg				;;
256b8df70beSmrg			balance)
257b8df70beSmrg				basic_machine=ns32k-sequent
258b8df70beSmrg				basic_os=dynix
259b8df70beSmrg				;;
260b8df70beSmrg			blackfin)
261b8df70beSmrg				basic_machine=bfin-unknown
262b8df70beSmrg				basic_os=linux
263b8df70beSmrg				;;
264b8df70beSmrg			cegcc)
265b8df70beSmrg				basic_machine=arm-unknown
266b8df70beSmrg				basic_os=cegcc
267b8df70beSmrg				;;
268b8df70beSmrg			convex-c1)
269b8df70beSmrg				basic_machine=c1-convex
270b8df70beSmrg				basic_os=bsd
271b8df70beSmrg				;;
272b8df70beSmrg			convex-c2)
273b8df70beSmrg				basic_machine=c2-convex
274b8df70beSmrg				basic_os=bsd
275b8df70beSmrg				;;
276b8df70beSmrg			convex-c32)
277b8df70beSmrg				basic_machine=c32-convex
278b8df70beSmrg				basic_os=bsd
279b8df70beSmrg				;;
280b8df70beSmrg			convex-c34)
281b8df70beSmrg				basic_machine=c34-convex
282b8df70beSmrg				basic_os=bsd
283b8df70beSmrg				;;
284b8df70beSmrg			convex-c38)
285b8df70beSmrg				basic_machine=c38-convex
286b8df70beSmrg				basic_os=bsd
287b8df70beSmrg				;;
288b8df70beSmrg			cray)
289b8df70beSmrg				basic_machine=j90-cray
290b8df70beSmrg				basic_os=unicos
291b8df70beSmrg				;;
292b8df70beSmrg			crds | unos)
293b8df70beSmrg				basic_machine=m68k-crds
294b8df70beSmrg				basic_os=
295b8df70beSmrg				;;
296b8df70beSmrg			da30)
297b8df70beSmrg				basic_machine=m68k-da30
298b8df70beSmrg				basic_os=
299b8df70beSmrg				;;
300b8df70beSmrg			decstation | pmax | pmin | dec3100 | decstatn)
301b8df70beSmrg				basic_machine=mips-dec
302b8df70beSmrg				basic_os=
303b8df70beSmrg				;;
304b8df70beSmrg			delta88)
305b8df70beSmrg				basic_machine=m88k-motorola
306b8df70beSmrg				basic_os=sysv3
307b8df70beSmrg				;;
308b8df70beSmrg			dicos)
309b8df70beSmrg				basic_machine=i686-pc
310b8df70beSmrg				basic_os=dicos
311b8df70beSmrg				;;
312b8df70beSmrg			djgpp)
313b8df70beSmrg				basic_machine=i586-pc
314b8df70beSmrg				basic_os=msdosdjgpp
315b8df70beSmrg				;;
316b8df70beSmrg			ebmon29k)
317b8df70beSmrg				basic_machine=a29k-amd
318b8df70beSmrg				basic_os=ebmon
319b8df70beSmrg				;;
320b8df70beSmrg			es1800 | OSE68k | ose68k | ose | OSE)
321b8df70beSmrg				basic_machine=m68k-ericsson
322b8df70beSmrg				basic_os=ose
323b8df70beSmrg				;;
324b8df70beSmrg			gmicro)
325b8df70beSmrg				basic_machine=tron-gmicro
326b8df70beSmrg				basic_os=sysv
327b8df70beSmrg				;;
328b8df70beSmrg			go32)
329b8df70beSmrg				basic_machine=i386-pc
330b8df70beSmrg				basic_os=go32
331b8df70beSmrg				;;
332b8df70beSmrg			h8300hms)
333b8df70beSmrg				basic_machine=h8300-hitachi
334b8df70beSmrg				basic_os=hms
335b8df70beSmrg				;;
336b8df70beSmrg			h8300xray)
337b8df70beSmrg				basic_machine=h8300-hitachi
338b8df70beSmrg				basic_os=xray
339b8df70beSmrg				;;
340b8df70beSmrg			h8500hms)
341b8df70beSmrg				basic_machine=h8500-hitachi
342b8df70beSmrg				basic_os=hms
343b8df70beSmrg				;;
344b8df70beSmrg			harris)
345b8df70beSmrg				basic_machine=m88k-harris
346b8df70beSmrg				basic_os=sysv3
347b8df70beSmrg				;;
348b8df70beSmrg			hp300 | hp300hpux)
349b8df70beSmrg				basic_machine=m68k-hp
350b8df70beSmrg				basic_os=hpux
351b8df70beSmrg				;;
352b8df70beSmrg			hp300bsd)
353b8df70beSmrg				basic_machine=m68k-hp
354b8df70beSmrg				basic_os=bsd
355b8df70beSmrg				;;
356b8df70beSmrg			hppaosf)
357b8df70beSmrg				basic_machine=hppa1.1-hp
358b8df70beSmrg				basic_os=osf
359b8df70beSmrg				;;
360b8df70beSmrg			hppro)
361b8df70beSmrg				basic_machine=hppa1.1-hp
362b8df70beSmrg				basic_os=proelf
363b8df70beSmrg				;;
364b8df70beSmrg			i386mach)
365b8df70beSmrg				basic_machine=i386-mach
366b8df70beSmrg				basic_os=mach
367b8df70beSmrg				;;
368b8df70beSmrg			isi68 | isi)
369b8df70beSmrg				basic_machine=m68k-isi
370b8df70beSmrg				basic_os=sysv
371b8df70beSmrg				;;
372b8df70beSmrg			m68knommu)
373b8df70beSmrg				basic_machine=m68k-unknown
374b8df70beSmrg				basic_os=linux
375b8df70beSmrg				;;
376b8df70beSmrg			magnum | m3230)
377b8df70beSmrg				basic_machine=mips-mips
378b8df70beSmrg				basic_os=sysv
379b8df70beSmrg				;;
380b8df70beSmrg			merlin)
381b8df70beSmrg				basic_machine=ns32k-utek
382b8df70beSmrg				basic_os=sysv
383b8df70beSmrg				;;
384b8df70beSmrg			mingw64)
385b8df70beSmrg				basic_machine=x86_64-pc
386b8df70beSmrg				basic_os=mingw64
387b8df70beSmrg				;;
388b8df70beSmrg			mingw32)
389b8df70beSmrg				basic_machine=i686-pc
390b8df70beSmrg				basic_os=mingw32
391b8df70beSmrg				;;
392b8df70beSmrg			mingw32ce)
393b8df70beSmrg				basic_machine=arm-unknown
394b8df70beSmrg				basic_os=mingw32ce
395b8df70beSmrg				;;
396b8df70beSmrg			monitor)
397b8df70beSmrg				basic_machine=m68k-rom68k
398b8df70beSmrg				basic_os=coff
399b8df70beSmrg				;;
400b8df70beSmrg			morphos)
401b8df70beSmrg				basic_machine=powerpc-unknown
402b8df70beSmrg				basic_os=morphos
403b8df70beSmrg				;;
404b8df70beSmrg			moxiebox)
405b8df70beSmrg				basic_machine=moxie-unknown
406b8df70beSmrg				basic_os=moxiebox
407b8df70beSmrg				;;
408b8df70beSmrg			msdos)
409b8df70beSmrg				basic_machine=i386-pc
410b8df70beSmrg				basic_os=msdos
411b8df70beSmrg				;;
412b8df70beSmrg			msys)
413b8df70beSmrg				basic_machine=i686-pc
414b8df70beSmrg				basic_os=msys
415b8df70beSmrg				;;
416b8df70beSmrg			mvs)
417b8df70beSmrg				basic_machine=i370-ibm
418b8df70beSmrg				basic_os=mvs
419b8df70beSmrg				;;
420b8df70beSmrg			nacl)
421b8df70beSmrg				basic_machine=le32-unknown
422b8df70beSmrg				basic_os=nacl
423b8df70beSmrg				;;
424b8df70beSmrg			ncr3000)
425b8df70beSmrg				basic_machine=i486-ncr
426b8df70beSmrg				basic_os=sysv4
427b8df70beSmrg				;;
428b8df70beSmrg			netbsd386)
429b8df70beSmrg				basic_machine=i386-pc
430b8df70beSmrg				basic_os=netbsd
431b8df70beSmrg				;;
432b8df70beSmrg			netwinder)
433b8df70beSmrg				basic_machine=armv4l-rebel
434b8df70beSmrg				basic_os=linux
435b8df70beSmrg				;;
436b8df70beSmrg			news | news700 | news800 | news900)
437b8df70beSmrg				basic_machine=m68k-sony
438b8df70beSmrg				basic_os=newsos
439b8df70beSmrg				;;
440b8df70beSmrg			news1000)
441b8df70beSmrg				basic_machine=m68030-sony
442b8df70beSmrg				basic_os=newsos
443b8df70beSmrg				;;
444b8df70beSmrg			necv70)
445b8df70beSmrg				basic_machine=v70-nec
446b8df70beSmrg				basic_os=sysv
447b8df70beSmrg				;;
448b8df70beSmrg			nh3000)
449b8df70beSmrg				basic_machine=m68k-harris
450b8df70beSmrg				basic_os=cxux
451b8df70beSmrg				;;
452b8df70beSmrg			nh[45]000)
453b8df70beSmrg				basic_machine=m88k-harris
454b8df70beSmrg				basic_os=cxux
455b8df70beSmrg				;;
456b8df70beSmrg			nindy960)
457b8df70beSmrg				basic_machine=i960-intel
458b8df70beSmrg				basic_os=nindy
459b8df70beSmrg				;;
460b8df70beSmrg			mon960)
461b8df70beSmrg				basic_machine=i960-intel
462b8df70beSmrg				basic_os=mon960
463b8df70beSmrg				;;
464b8df70beSmrg			nonstopux)
465b8df70beSmrg				basic_machine=mips-compaq
466b8df70beSmrg				basic_os=nonstopux
467b8df70beSmrg				;;
468b8df70beSmrg			os400)
469b8df70beSmrg				basic_machine=powerpc-ibm
470b8df70beSmrg				basic_os=os400
471b8df70beSmrg				;;
472b8df70beSmrg			OSE68000 | ose68000)
473b8df70beSmrg				basic_machine=m68000-ericsson
474b8df70beSmrg				basic_os=ose
475b8df70beSmrg				;;
476b8df70beSmrg			os68k)
477b8df70beSmrg				basic_machine=m68k-none
478b8df70beSmrg				basic_os=os68k
479b8df70beSmrg				;;
480b8df70beSmrg			paragon)
481b8df70beSmrg				basic_machine=i860-intel
482b8df70beSmrg				basic_os=osf
483b8df70beSmrg				;;
484b8df70beSmrg			parisc)
485b8df70beSmrg				basic_machine=hppa-unknown
486b8df70beSmrg				basic_os=linux
487b8df70beSmrg				;;
488b8df70beSmrg			psp)
489b8df70beSmrg				basic_machine=mipsallegrexel-sony
490b8df70beSmrg				basic_os=psp
491b8df70beSmrg				;;
492b8df70beSmrg			pw32)
493b8df70beSmrg				basic_machine=i586-unknown
494b8df70beSmrg				basic_os=pw32
495b8df70beSmrg				;;
496b8df70beSmrg			rdos | rdos64)
497b8df70beSmrg				basic_machine=x86_64-pc
498b8df70beSmrg				basic_os=rdos
499b8df70beSmrg				;;
500b8df70beSmrg			rdos32)
501b8df70beSmrg				basic_machine=i386-pc
502b8df70beSmrg				basic_os=rdos
503b8df70beSmrg				;;
504b8df70beSmrg			rom68k)
505b8df70beSmrg				basic_machine=m68k-rom68k
506b8df70beSmrg				basic_os=coff
507b8df70beSmrg				;;
508b8df70beSmrg			sa29200)
509b8df70beSmrg				basic_machine=a29k-amd
510b8df70beSmrg				basic_os=udi
511b8df70beSmrg				;;
512b8df70beSmrg			sei)
513b8df70beSmrg				basic_machine=mips-sei
514b8df70beSmrg				basic_os=seiux
515b8df70beSmrg				;;
516b8df70beSmrg			sequent)
517b8df70beSmrg				basic_machine=i386-sequent
518b8df70beSmrg				basic_os=
519b8df70beSmrg				;;
520b8df70beSmrg			sps7)
521b8df70beSmrg				basic_machine=m68k-bull
522b8df70beSmrg				basic_os=sysv2
523b8df70beSmrg				;;
524b8df70beSmrg			st2000)
525b8df70beSmrg				basic_machine=m68k-tandem
526b8df70beSmrg				basic_os=
527b8df70beSmrg				;;
528b8df70beSmrg			stratus)
529b8df70beSmrg				basic_machine=i860-stratus
530b8df70beSmrg				basic_os=sysv4
531b8df70beSmrg				;;
532b8df70beSmrg			sun2)
533b8df70beSmrg				basic_machine=m68000-sun
534b8df70beSmrg				basic_os=
535b8df70beSmrg				;;
536b8df70beSmrg			sun2os3)
537b8df70beSmrg				basic_machine=m68000-sun
538b8df70beSmrg				basic_os=sunos3
539b8df70beSmrg				;;
540b8df70beSmrg			sun2os4)
541b8df70beSmrg				basic_machine=m68000-sun
542b8df70beSmrg				basic_os=sunos4
543b8df70beSmrg				;;
544b8df70beSmrg			sun3)
545b8df70beSmrg				basic_machine=m68k-sun
546b8df70beSmrg				basic_os=
547b8df70beSmrg				;;
548b8df70beSmrg			sun3os3)
549b8df70beSmrg				basic_machine=m68k-sun
550b8df70beSmrg				basic_os=sunos3
551b8df70beSmrg				;;
552b8df70beSmrg			sun3os4)
553b8df70beSmrg				basic_machine=m68k-sun
554b8df70beSmrg				basic_os=sunos4
555b8df70beSmrg				;;
556b8df70beSmrg			sun4)
557b8df70beSmrg				basic_machine=sparc-sun
558b8df70beSmrg				basic_os=
559b8df70beSmrg				;;
560b8df70beSmrg			sun4os3)
561b8df70beSmrg				basic_machine=sparc-sun
562b8df70beSmrg				basic_os=sunos3
563b8df70beSmrg				;;
564b8df70beSmrg			sun4os4)
565b8df70beSmrg				basic_machine=sparc-sun
566b8df70beSmrg				basic_os=sunos4
567b8df70beSmrg				;;
568b8df70beSmrg			sun4sol2)
569b8df70beSmrg				basic_machine=sparc-sun
570b8df70beSmrg				basic_os=solaris2
571b8df70beSmrg				;;
572b8df70beSmrg			sun386 | sun386i | roadrunner)
573b8df70beSmrg				basic_machine=i386-sun
574b8df70beSmrg				basic_os=
575b8df70beSmrg				;;
576b8df70beSmrg			sv1)
577b8df70beSmrg				basic_machine=sv1-cray
578b8df70beSmrg				basic_os=unicos
579b8df70beSmrg				;;
580b8df70beSmrg			symmetry)
581b8df70beSmrg				basic_machine=i386-sequent
582b8df70beSmrg				basic_os=dynix
583b8df70beSmrg				;;
584b8df70beSmrg			t3e)
585b8df70beSmrg				basic_machine=alphaev5-cray
586b8df70beSmrg				basic_os=unicos
587b8df70beSmrg				;;
588b8df70beSmrg			t90)
589b8df70beSmrg				basic_machine=t90-cray
590b8df70beSmrg				basic_os=unicos
591b8df70beSmrg				;;
592b8df70beSmrg			toad1)
593b8df70beSmrg				basic_machine=pdp10-xkl
594b8df70beSmrg				basic_os=tops20
595b8df70beSmrg				;;
596b8df70beSmrg			tpf)
597b8df70beSmrg				basic_machine=s390x-ibm
598b8df70beSmrg				basic_os=tpf
599b8df70beSmrg				;;
600b8df70beSmrg			udi29k)
601b8df70beSmrg				basic_machine=a29k-amd
602b8df70beSmrg				basic_os=udi
603b8df70beSmrg				;;
604b8df70beSmrg			ultra3)
605b8df70beSmrg				basic_machine=a29k-nyu
606b8df70beSmrg				basic_os=sym1
607b8df70beSmrg				;;
608b8df70beSmrg			v810 | necv810)
609b8df70beSmrg				basic_machine=v810-nec
610b8df70beSmrg				basic_os=none
611b8df70beSmrg				;;
612b8df70beSmrg			vaxv)
613b8df70beSmrg				basic_machine=vax-dec
614b8df70beSmrg				basic_os=sysv
615b8df70beSmrg				;;
616b8df70beSmrg			vms)
617b8df70beSmrg				basic_machine=vax-dec
618b8df70beSmrg				basic_os=vms
619b8df70beSmrg				;;
620b8df70beSmrg			vsta)
621b8df70beSmrg				basic_machine=i386-pc
622b8df70beSmrg				basic_os=vsta
623b8df70beSmrg				;;
624b8df70beSmrg			vxworks960)
625b8df70beSmrg				basic_machine=i960-wrs
626b8df70beSmrg				basic_os=vxworks
627b8df70beSmrg				;;
628b8df70beSmrg			vxworks68)
629b8df70beSmrg				basic_machine=m68k-wrs
630b8df70beSmrg				basic_os=vxworks
631b8df70beSmrg				;;
632b8df70beSmrg			vxworks29k)
633b8df70beSmrg				basic_machine=a29k-wrs
634b8df70beSmrg				basic_os=vxworks
635b8df70beSmrg				;;
636b8df70beSmrg			xbox)
637b8df70beSmrg				basic_machine=i686-pc
638b8df70beSmrg				basic_os=mingw32
639b8df70beSmrg				;;
640b8df70beSmrg			ymp)
641b8df70beSmrg				basic_machine=ymp-cray
642b8df70beSmrg				basic_os=unicos
643b8df70beSmrg				;;
644b8df70beSmrg			*)
645b8df70beSmrg				basic_machine=$1
646b8df70beSmrg				basic_os=
647b8df70beSmrg				;;
648b8df70beSmrg		esac
6494c61c93dSmrg		;;
6504c61c93dSmrgesac
6514c61c93dSmrg
652b8df70beSmrg# Decode 1-component or ad-hoc basic machines
6534c61c93dSmrgcase $basic_machine in
654b8df70beSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
655b8df70beSmrg	# some cases the only manufacturer, in others, it is the most popular.
656b8df70beSmrg	w89k)
657b8df70beSmrg		cpu=hppa1.1
658b8df70beSmrg		vendor=winbond
65941fe0c2aSmrg		;;
660b8df70beSmrg	op50n)
661b8df70beSmrg		cpu=hppa1.1
662b8df70beSmrg		vendor=oki
6634c61c93dSmrg		;;
664b8df70beSmrg	op60c)
665b8df70beSmrg		cpu=hppa1.1
666b8df70beSmrg		vendor=oki
6674c61c93dSmrg		;;
668b8df70beSmrg	ibm*)
669b8df70beSmrg		cpu=i370
670b8df70beSmrg		vendor=ibm
6714c61c93dSmrg		;;
672b8df70beSmrg	orion105)
673b8df70beSmrg		cpu=clipper
674b8df70beSmrg		vendor=highlevel
6751c80d5b0Smrg		;;
676b8df70beSmrg	mac | mpw | mac-mpw)
677b8df70beSmrg		cpu=m68k
678b8df70beSmrg		vendor=apple
6791c80d5b0Smrg		;;
680b8df70beSmrg	pmac | pmac-mpw)
681b8df70beSmrg		cpu=powerpc
682b8df70beSmrg		vendor=apple
6831c80d5b0Smrg		;;
6841c80d5b0Smrg
6854c61c93dSmrg	# Recognize the various machine names and aliases which stand
6864c61c93dSmrg	# for a CPU type and a company and sometimes even an OS.
6874c61c93dSmrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
688b8df70beSmrg		cpu=m68000
689b8df70beSmrg		vendor=att
6904c61c93dSmrg		;;
6914c61c93dSmrg	3b*)
692b8df70beSmrg		cpu=we32k
693b8df70beSmrg		vendor=att
6944c61c93dSmrg		;;
695d7ffce2aSmrg	bluegene*)
696b8df70beSmrg		cpu=powerpc
697b8df70beSmrg		vendor=ibm
698b8df70beSmrg		basic_os=cnk
6994c61c93dSmrg		;;
7004c61c93dSmrg	decsystem10* | dec10*)
701b8df70beSmrg		cpu=pdp10
702b8df70beSmrg		vendor=dec
703b8df70beSmrg		basic_os=tops10
7044c61c93dSmrg		;;
7054c61c93dSmrg	decsystem20* | dec20*)
706b8df70beSmrg		cpu=pdp10
707b8df70beSmrg		vendor=dec
708b8df70beSmrg		basic_os=tops20
7094c61c93dSmrg		;;
7104c61c93dSmrg	delta | 3300 | motorola-3300 | motorola-delta \
7114c61c93dSmrg	      | 3300-motorola | delta-motorola)
712b8df70beSmrg		cpu=m68k
713b8df70beSmrg		vendor=motorola
7144c61c93dSmrg		;;
715b8df70beSmrg	dpx2*)
716b8df70beSmrg		cpu=m68k
717b8df70beSmrg		vendor=bull
718b8df70beSmrg		basic_os=sysv3
7194c61c93dSmrg		;;
7204c61c93dSmrg	encore | umax | mmax)
721b8df70beSmrg		cpu=ns32k
722b8df70beSmrg		vendor=encore
7234c61c93dSmrg		;;
724b8df70beSmrg	elxsi)
725b8df70beSmrg		cpu=elxsi
726b8df70beSmrg		vendor=elxsi
727b8df70beSmrg		basic_os=${basic_os:-bsd}
7284c61c93dSmrg		;;
7294c61c93dSmrg	fx2800)
730b8df70beSmrg		cpu=i860
731b8df70beSmrg		vendor=alliant
7324c61c93dSmrg		;;
7334c61c93dSmrg	genix)
734b8df70beSmrg		cpu=ns32k
735b8df70beSmrg		vendor=ns
7364c61c93dSmrg		;;
7374c61c93dSmrg	h3050r* | hiux*)
738b8df70beSmrg		cpu=hppa1.1
739b8df70beSmrg		vendor=hitachi
740b8df70beSmrg		basic_os=hiuxwe2
7414c61c93dSmrg		;;
7424c61c93dSmrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
743b8df70beSmrg		cpu=hppa1.0
744b8df70beSmrg		vendor=hp
7454c61c93dSmrg		;;
7464c61c93dSmrg	hp9k2[0-9][0-9] | hp9k31[0-9])
747b8df70beSmrg		cpu=m68000
748b8df70beSmrg		vendor=hp
7494c61c93dSmrg		;;
7504c61c93dSmrg	hp9k3[2-9][0-9])
751b8df70beSmrg		cpu=m68k
752b8df70beSmrg		vendor=hp
7534c61c93dSmrg		;;
7544c61c93dSmrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
755b8df70beSmrg		cpu=hppa1.0
756b8df70beSmrg		vendor=hp
7574c61c93dSmrg		;;
7584c61c93dSmrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
759b8df70beSmrg		cpu=hppa1.1
760b8df70beSmrg		vendor=hp
7614c61c93dSmrg		;;
7624c61c93dSmrg	hp9k78[0-9] | hp78[0-9])
7634c61c93dSmrg		# FIXME: really hppa2.0-hp
764b8df70beSmrg		cpu=hppa1.1
765b8df70beSmrg		vendor=hp
7664c61c93dSmrg		;;
7674c61c93dSmrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
7684c61c93dSmrg		# FIXME: really hppa2.0-hp
769b8df70beSmrg		cpu=hppa1.1
770b8df70beSmrg		vendor=hp
7714c61c93dSmrg		;;
7724c61c93dSmrg	hp9k8[0-9][13679] | hp8[0-9][13679])
773b8df70beSmrg		cpu=hppa1.1
774b8df70beSmrg		vendor=hp
7754c61c93dSmrg		;;
7764c61c93dSmrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
777b8df70beSmrg		cpu=hppa1.0
778b8df70beSmrg		vendor=hp
7794c61c93dSmrg		;;
7804c61c93dSmrg	i*86v32)
781b8df70beSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
782b8df70beSmrg		vendor=pc
783b8df70beSmrg		basic_os=sysv32
7844c61c93dSmrg		;;
7854c61c93dSmrg	i*86v4*)
786b8df70beSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
787b8df70beSmrg		vendor=pc
788b8df70beSmrg		basic_os=sysv4
7894c61c93dSmrg		;;
7904c61c93dSmrg	i*86v)
791b8df70beSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
792b8df70beSmrg		vendor=pc
793b8df70beSmrg		basic_os=sysv
7944c61c93dSmrg		;;
7954c61c93dSmrg	i*86sol2)
796b8df70beSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
797b8df70beSmrg		vendor=pc
798b8df70beSmrg		basic_os=solaris2
7994c61c93dSmrg		;;
800b8df70beSmrg	j90 | j90-cray)
801b8df70beSmrg		cpu=j90
802b8df70beSmrg		vendor=cray
803b8df70beSmrg		basic_os=${basic_os:-unicos}
8044c61c93dSmrg		;;
8054c61c93dSmrg	iris | iris4d)
806b8df70beSmrg		cpu=mips
807b8df70beSmrg		vendor=sgi
808b8df70beSmrg		case $basic_os in
809b8df70beSmrg		    irix*)
8104c61c93dSmrg			;;
8114c61c93dSmrg		    *)
812b8df70beSmrg			basic_os=irix4
8134c61c93dSmrg			;;
8144c61c93dSmrg		esac
8154c61c93dSmrg		;;
8164c61c93dSmrg	miniframe)
817b8df70beSmrg		cpu=m68000
818b8df70beSmrg		vendor=convergent
8194c61c93dSmrg		;;
820b8df70beSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
821b8df70beSmrg		cpu=m68k
822b8df70beSmrg		vendor=atari
823b8df70beSmrg		basic_os=mint
8244c61c93dSmrg		;;
8254c61c93dSmrg	news-3600 | risc-news)
826b8df70beSmrg		cpu=mips
827b8df70beSmrg		vendor=sony
828b8df70beSmrg		basic_os=newsos
829b8df70beSmrg		;;
830b8df70beSmrg	next | m*-next)
831b8df70beSmrg		cpu=m68k
832b8df70beSmrg		vendor=next
833b8df70beSmrg		case $basic_os in
834b8df70beSmrg		    openstep*)
835b8df70beSmrg		        ;;
836b8df70beSmrg		    nextstep*)
8374c61c93dSmrg			;;
838b8df70beSmrg		    ns2*)
839b8df70beSmrg		      basic_os=nextstep2
8404c61c93dSmrg			;;
8414c61c93dSmrg		    *)
842b8df70beSmrg		      basic_os=nextstep3
8434c61c93dSmrg			;;
8444c61c93dSmrg		esac
8454c61c93dSmrg		;;
8464c61c93dSmrg	np1)
847b8df70beSmrg		cpu=np1
848b8df70beSmrg		vendor=gould
8494c61c93dSmrg		;;
8504c61c93dSmrg	op50n-* | op60c-*)
851b8df70beSmrg		cpu=hppa1.1
852b8df70beSmrg		vendor=oki
853b8df70beSmrg		basic_os=proelf
8544c61c93dSmrg		;;
8554c61c93dSmrg	pa-hitachi)
856b8df70beSmrg		cpu=hppa1.1
857b8df70beSmrg		vendor=hitachi
858b8df70beSmrg		basic_os=hiuxwe2
8594c61c93dSmrg		;;
8604c61c93dSmrg	pbd)
861b8df70beSmrg		cpu=sparc
862b8df70beSmrg		vendor=tti
8634c61c93dSmrg		;;
8644c61c93dSmrg	pbb)
865b8df70beSmrg		cpu=m68k
866b8df70beSmrg		vendor=tti
8674c61c93dSmrg		;;
868b8df70beSmrg	pc532)
869b8df70beSmrg		cpu=ns32k
870b8df70beSmrg		vendor=pc532
8714c61c93dSmrg		;;
8724c61c93dSmrg	pn)
873b8df70beSmrg		cpu=pn
874b8df70beSmrg		vendor=gould
8754c61c93dSmrg		;;
876b8df70beSmrg	power)
877b8df70beSmrg		cpu=power
878b8df70beSmrg		vendor=ibm
8794c61c93dSmrg		;;
8804c61c93dSmrg	ps2)
881b8df70beSmrg		cpu=i386
882b8df70beSmrg		vendor=ibm
8834c61c93dSmrg		;;
8844c61c93dSmrg	rm[46]00)
885b8df70beSmrg		cpu=mips
886b8df70beSmrg		vendor=siemens
8874c61c93dSmrg		;;
8884c61c93dSmrg	rtpc | rtpc-*)
889b8df70beSmrg		cpu=romp
890b8df70beSmrg		vendor=ibm
8914c61c93dSmrg		;;
892b8df70beSmrg	sde)
893b8df70beSmrg		cpu=mipsisa32
894b8df70beSmrg		vendor=sde
895b8df70beSmrg		basic_os=${basic_os:-elf}
8964c61c93dSmrg		;;
897b8df70beSmrg	simso-wrs)
898b8df70beSmrg		cpu=sparclite
899b8df70beSmrg		vendor=wrs
900b8df70beSmrg		basic_os=vxworks
9014c61c93dSmrg		;;
902b8df70beSmrg	tower | tower-32)
903b8df70beSmrg		cpu=m68k
904b8df70beSmrg		vendor=ncr
9054c61c93dSmrg		;;
906b8df70beSmrg	vpp*|vx|vx-*)
907b8df70beSmrg		cpu=f301
908b8df70beSmrg		vendor=fujitsu
9094c61c93dSmrg		;;
910b8df70beSmrg	w65)
911b8df70beSmrg		cpu=w65
912b8df70beSmrg		vendor=wdc
9134c61c93dSmrg		;;
914b8df70beSmrg	w89k-*)
915b8df70beSmrg		cpu=hppa1.1
916b8df70beSmrg		vendor=winbond
917b8df70beSmrg		basic_os=proelf
9184c61c93dSmrg		;;
919b8df70beSmrg	none)
920b8df70beSmrg		cpu=none
921b8df70beSmrg		vendor=none
9224c61c93dSmrg		;;
923b8df70beSmrg	leon|leon[3-9])
924b8df70beSmrg		cpu=sparc
925b8df70beSmrg		vendor=$basic_machine
9264c61c93dSmrg		;;
927b8df70beSmrg	leon-*|leon[3-9]-*)
928b8df70beSmrg		cpu=sparc
929b8df70beSmrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
9304c61c93dSmrg		;;
931b8df70beSmrg
932b8df70beSmrg	*-*)
933b8df70beSmrg		# shellcheck disable=SC2162
934b8df70beSmrg		IFS="-" read cpu vendor <<EOF
935b8df70beSmrg$basic_machine
936b8df70beSmrgEOF
9374c61c93dSmrg		;;
938b8df70beSmrg	# We use `pc' rather than `unknown'
939b8df70beSmrg	# because (1) that's what they normally are, and
940b8df70beSmrg	# (2) the word "unknown" tends to confuse beginning users.
941b8df70beSmrg	i*86 | x86_64)
942b8df70beSmrg		cpu=$basic_machine
943b8df70beSmrg		vendor=pc
9444c61c93dSmrg		;;
945b8df70beSmrg	# These rules are duplicated from below for sake of the special case above;
946b8df70beSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
947b8df70beSmrg	pc98)
948b8df70beSmrg		cpu=i386
949b8df70beSmrg		vendor=pc
9504c61c93dSmrg		;;
951b8df70beSmrg	x64 | amd64)
952b8df70beSmrg		cpu=x86_64
953b8df70beSmrg		vendor=pc
9544c61c93dSmrg		;;
955b8df70beSmrg	# Recognize the basic CPU types without company name.
956b8df70beSmrg	*)
957b8df70beSmrg		cpu=$basic_machine
958b8df70beSmrg		vendor=unknown
9591c80d5b0Smrg		;;
960b8df70beSmrgesac
961b8df70beSmrg
962b8df70beSmrgunset -v basic_machine
963b8df70beSmrg
964b8df70beSmrg# Decode basic machines in the full and proper CPU-Company form.
965b8df70beSmrgcase $cpu-$vendor in
966b8df70beSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
967b8df70beSmrg	# some cases the only manufacturer, in others, it is the most popular.
968b8df70beSmrg	craynv-unknown)
969b8df70beSmrg		vendor=cray
970b8df70beSmrg		basic_os=${basic_os:-unicosmp}
9714c61c93dSmrg		;;
972b8df70beSmrg	c90-unknown | c90-cray)
973b8df70beSmrg		vendor=cray
974b8df70beSmrg		basic_os=${Basic_os:-unicos}
9754c61c93dSmrg		;;
976b8df70beSmrg	fx80-unknown)
977b8df70beSmrg		vendor=alliant
9784c61c93dSmrg		;;
979b8df70beSmrg	romp-unknown)
980b8df70beSmrg		vendor=ibm
9814c61c93dSmrg		;;
982b8df70beSmrg	mmix-unknown)
983b8df70beSmrg		vendor=knuth
9844c61c93dSmrg		;;
985b8df70beSmrg	microblaze-unknown | microblazeel-unknown)
986b8df70beSmrg		vendor=xilinx
9874c61c93dSmrg		;;
988b8df70beSmrg	rs6000-unknown)
989b8df70beSmrg		vendor=ibm
9904c61c93dSmrg		;;
991b8df70beSmrg	vax-unknown)
992b8df70beSmrg		vendor=dec
9934c61c93dSmrg		;;
994b8df70beSmrg	pdp11-unknown)
995b8df70beSmrg		vendor=dec
9964c61c93dSmrg		;;
997b8df70beSmrg	we32k-unknown)
998b8df70beSmrg		vendor=att
9994c61c93dSmrg		;;
1000b8df70beSmrg	cydra-unknown)
1001b8df70beSmrg		vendor=cydrome
10024c61c93dSmrg		;;
1003b8df70beSmrg	i370-ibm*)
1004b8df70beSmrg		vendor=ibm
10054c61c93dSmrg		;;
1006b8df70beSmrg	orion-unknown)
1007b8df70beSmrg		vendor=highlevel
10084c61c93dSmrg		;;
1009b8df70beSmrg	xps-unknown | xps100-unknown)
1010b8df70beSmrg		cpu=xps100
1011b8df70beSmrg		vendor=honeywell
10124c61c93dSmrg		;;
1013b8df70beSmrg
1014b8df70beSmrg	# Here we normalize CPU types with a missing or matching vendor
1015b8df70beSmrg	dpx20-unknown | dpx20-bull)
1016b8df70beSmrg		cpu=rs6000
1017b8df70beSmrg		vendor=bull
1018b8df70beSmrg		basic_os=${basic_os:-bosx}
10194c61c93dSmrg		;;
1020b8df70beSmrg
1021b8df70beSmrg	# Here we normalize CPU types irrespective of the vendor
1022b8df70beSmrg	amd64-*)
1023b8df70beSmrg		cpu=x86_64
10244c61c93dSmrg		;;
1025b8df70beSmrg	blackfin-*)
1026b8df70beSmrg		cpu=bfin
1027b8df70beSmrg		basic_os=linux
10284c61c93dSmrg		;;
1029b8df70beSmrg	c54x-*)
1030b8df70beSmrg		cpu=tic54x
10314c61c93dSmrg		;;
1032b8df70beSmrg	c55x-*)
1033b8df70beSmrg		cpu=tic55x
10344c61c93dSmrg		;;
1035b8df70beSmrg	c6x-*)
1036b8df70beSmrg		cpu=tic6x
10374c61c93dSmrg		;;
1038b8df70beSmrg	e500v[12]-*)
1039b8df70beSmrg		cpu=powerpc
1040b8df70beSmrg		basic_os=${basic_os}"spe"
10414c61c93dSmrg		;;
1042b8df70beSmrg	mips3*-*)
1043b8df70beSmrg		cpu=mips64
10444c61c93dSmrg		;;
1045b8df70beSmrg	ms1-*)
1046b8df70beSmrg		cpu=mt
10474c61c93dSmrg		;;
1048b8df70beSmrg	m68knommu-*)
1049b8df70beSmrg		cpu=m68k
1050b8df70beSmrg		basic_os=linux
10514c61c93dSmrg		;;
1052b8df70beSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
1053b8df70beSmrg		cpu=s12z
10544c61c93dSmrg		;;
1055b8df70beSmrg	openrisc-*)
1056b8df70beSmrg		cpu=or32
10574c61c93dSmrg		;;
1058b8df70beSmrg	parisc-*)
1059b8df70beSmrg		cpu=hppa
1060b8df70beSmrg		basic_os=linux
10614c61c93dSmrg		;;
1062b8df70beSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
1063b8df70beSmrg		cpu=i586
10644c61c93dSmrg		;;
1065b8df70beSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
1066b8df70beSmrg		cpu=i686
10674c61c93dSmrg		;;
1068b8df70beSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
1069b8df70beSmrg		cpu=i686
10704c61c93dSmrg		;;
1071b8df70beSmrg	pentium4-*)
1072b8df70beSmrg		cpu=i786
10734c61c93dSmrg		;;
1074b8df70beSmrg	pc98-*)
1075b8df70beSmrg		cpu=i386
10764c61c93dSmrg		;;
1077b8df70beSmrg	ppc-* | ppcbe-*)
1078b8df70beSmrg		cpu=powerpc
10794c61c93dSmrg		;;
1080b8df70beSmrg	ppcle-* | powerpclittle-*)
1081b8df70beSmrg		cpu=powerpcle
10824c61c93dSmrg		;;
1083b8df70beSmrg	ppc64-*)
1084b8df70beSmrg		cpu=powerpc64
10851c80d5b0Smrg		;;
1086b8df70beSmrg	ppc64le-* | powerpc64little-*)
1087b8df70beSmrg		cpu=powerpc64le
10884c61c93dSmrg		;;
1089b8df70beSmrg	sb1-*)
1090b8df70beSmrg		cpu=mipsisa64sb1
10914c61c93dSmrg		;;
1092b8df70beSmrg	sb1el-*)
1093b8df70beSmrg		cpu=mipsisa64sb1el
10944c61c93dSmrg		;;
1095b8df70beSmrg	sh5e[lb]-*)
1096b8df70beSmrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
10974c61c93dSmrg		;;
1098b8df70beSmrg	spur-*)
1099b8df70beSmrg		cpu=spur
11004c61c93dSmrg		;;
1101b8df70beSmrg	strongarm-* | thumb-*)
1102b8df70beSmrg		cpu=arm
11034c61c93dSmrg		;;
1104b8df70beSmrg	tx39-*)
1105b8df70beSmrg		cpu=mipstx39
11064c61c93dSmrg		;;
1107b8df70beSmrg	tx39el-*)
1108b8df70beSmrg		cpu=mipstx39el
11094c61c93dSmrg		;;
1110b8df70beSmrg	x64-*)
1111b8df70beSmrg		cpu=x86_64
11124c61c93dSmrg		;;
1113b8df70beSmrg	xscale-* | xscalee[bl]-*)
1114b8df70beSmrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
11154c61c93dSmrg		;;
1116b8df70beSmrg	arm64-*)
1117b8df70beSmrg		cpu=aarch64
11184c61c93dSmrg		;;
1119b8df70beSmrg
1120b8df70beSmrg	# Recognize the canonical CPU Types that limit and/or modify the
1121b8df70beSmrg	# company names they are paired with.
1122b8df70beSmrg	cr16-*)
1123b8df70beSmrg		basic_os=${basic_os:-elf}
11244c61c93dSmrg		;;
1125b8df70beSmrg	crisv32-* | etraxfs*-*)
1126b8df70beSmrg		cpu=crisv32
1127b8df70beSmrg		vendor=axis
11284c61c93dSmrg		;;
1129b8df70beSmrg	cris-* | etrax*-*)
1130b8df70beSmrg		cpu=cris
1131b8df70beSmrg		vendor=axis
11324c61c93dSmrg		;;
1133b8df70beSmrg	crx-*)
1134b8df70beSmrg		basic_os=${basic_os:-elf}
11354c61c93dSmrg		;;
1136b8df70beSmrg	neo-tandem)
1137b8df70beSmrg		cpu=neo
1138b8df70beSmrg		vendor=tandem
11394c61c93dSmrg		;;
1140b8df70beSmrg	nse-tandem)
1141b8df70beSmrg		cpu=nse
1142b8df70beSmrg		vendor=tandem
11434c61c93dSmrg		;;
1144b8df70beSmrg	nsr-tandem)
1145b8df70beSmrg		cpu=nsr
1146b8df70beSmrg		vendor=tandem
11474c61c93dSmrg		;;
1148b8df70beSmrg	nsv-tandem)
1149b8df70beSmrg		cpu=nsv
1150b8df70beSmrg		vendor=tandem
11514c61c93dSmrg		;;
1152b8df70beSmrg	nsx-tandem)
1153b8df70beSmrg		cpu=nsx
1154b8df70beSmrg		vendor=tandem
11554c61c93dSmrg		;;
1156b8df70beSmrg	mipsallegrexel-sony)
1157b8df70beSmrg		cpu=mipsallegrexel
1158b8df70beSmrg		vendor=sony
11594c61c93dSmrg		;;
1160b8df70beSmrg	tile*-*)
1161b8df70beSmrg		basic_os=${basic_os:-linux-gnu}
11624c61c93dSmrg		;;
1163b8df70beSmrg
11644c61c93dSmrg	*)
1165b8df70beSmrg		# Recognize the canonical CPU types that are allowed with any
1166b8df70beSmrg		# company name.
1167b8df70beSmrg		case $cpu in
1168b8df70beSmrg			1750a | 580 \
1169b8df70beSmrg			| a29k \
1170b8df70beSmrg			| aarch64 | aarch64_be \
1171b8df70beSmrg			| abacus \
1172b8df70beSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
1173b8df70beSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
1174b8df70beSmrg			| alphapca5[67] | alpha64pca5[67] \
1175b8df70beSmrg			| am33_2.0 \
1176b8df70beSmrg			| amdgcn \
1177b8df70beSmrg			| arc | arceb | arc32 | arc64 \
1178b8df70beSmrg			| arm | arm[lb]e | arme[lb] | armv* \
1179b8df70beSmrg			| avr | avr32 \
1180b8df70beSmrg			| asmjs \
1181b8df70beSmrg			| ba \
1182b8df70beSmrg			| be32 | be64 \
1183b8df70beSmrg			| bfin | bpf | bs2000 \
1184b8df70beSmrg			| c[123]* | c30 | [cjt]90 | c4x \
1185b8df70beSmrg			| c8051 | clipper | craynv | csky | cydra \
1186b8df70beSmrg			| d10v | d30v | dlx | dsp16xx \
1187b8df70beSmrg			| e2k | elxsi | epiphany \
1188b8df70beSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
1189b8df70beSmrg			| h8300 | h8500 \
1190b8df70beSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
1191b8df70beSmrg			| hexagon \
1192b8df70beSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
1193b8df70beSmrg			| ip2k | iq2000 \
1194b8df70beSmrg			| k1om \
1195b8df70beSmrg			| le32 | le64 \
1196b8df70beSmrg			| lm32 \
1197b8df70beSmrg			| loongarch32 | loongarch64 | loongarchx32 \
1198b8df70beSmrg			| m32c | m32r | m32rle \
1199b8df70beSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
1200b8df70beSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
1201b8df70beSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
1202b8df70beSmrg			| microblaze | microblazeel \
1203b8df70beSmrg			| mips | mipsbe | mipseb | mipsel | mipsle \
1204b8df70beSmrg			| mips16 \
1205b8df70beSmrg			| mips64 | mips64eb | mips64el \
1206b8df70beSmrg			| mips64octeon | mips64octeonel \
1207b8df70beSmrg			| mips64orion | mips64orionel \
1208b8df70beSmrg			| mips64r5900 | mips64r5900el \
1209b8df70beSmrg			| mips64vr | mips64vrel \
1210b8df70beSmrg			| mips64vr4100 | mips64vr4100el \
1211b8df70beSmrg			| mips64vr4300 | mips64vr4300el \
1212b8df70beSmrg			| mips64vr5000 | mips64vr5000el \
1213b8df70beSmrg			| mips64vr5900 | mips64vr5900el \
1214b8df70beSmrg			| mipsisa32 | mipsisa32el \
1215b8df70beSmrg			| mipsisa32r2 | mipsisa32r2el \
1216b8df70beSmrg			| mipsisa32r3 | mipsisa32r3el \
1217b8df70beSmrg			| mipsisa32r5 | mipsisa32r5el \
1218b8df70beSmrg			| mipsisa32r6 | mipsisa32r6el \
1219b8df70beSmrg			| mipsisa64 | mipsisa64el \
1220b8df70beSmrg			| mipsisa64r2 | mipsisa64r2el \
1221b8df70beSmrg			| mipsisa64r3 | mipsisa64r3el \
1222b8df70beSmrg			| mipsisa64r5 | mipsisa64r5el \
1223b8df70beSmrg			| mipsisa64r6 | mipsisa64r6el \
1224b8df70beSmrg			| mipsisa64sb1 | mipsisa64sb1el \
1225b8df70beSmrg			| mipsisa64sr71k | mipsisa64sr71kel \
1226b8df70beSmrg			| mipsr5900 | mipsr5900el \
1227b8df70beSmrg			| mipstx39 | mipstx39el \
1228b8df70beSmrg			| mmix \
1229b8df70beSmrg			| mn10200 | mn10300 \
1230b8df70beSmrg			| moxie \
1231b8df70beSmrg			| mt \
1232b8df70beSmrg			| msp430 \
1233b8df70beSmrg			| nds32 | nds32le | nds32be \
1234b8df70beSmrg			| nfp \
1235b8df70beSmrg			| nios | nios2 | nios2eb | nios2el \
1236b8df70beSmrg			| none | np1 | ns16k | ns32k | nvptx \
1237b8df70beSmrg			| open8 \
1238b8df70beSmrg			| or1k* \
1239b8df70beSmrg			| or32 \
1240b8df70beSmrg			| orion \
1241b8df70beSmrg			| picochip \
1242b8df70beSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
1243b8df70beSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
1244b8df70beSmrg			| pru \
1245b8df70beSmrg			| pyramid \
1246b8df70beSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
1247b8df70beSmrg			| rl78 | romp | rs6000 | rx \
1248b8df70beSmrg			| s390 | s390x \
1249b8df70beSmrg			| score \
1250b8df70beSmrg			| sh | shl \
1251b8df70beSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
1252b8df70beSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
1253b8df70beSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
1254b8df70beSmrg			| sparclite \
1255b8df70beSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
1256b8df70beSmrg			| spu \
1257b8df70beSmrg			| tahoe \
1258b8df70beSmrg			| thumbv7* \
1259b8df70beSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
1260b8df70beSmrg			| tron \
1261b8df70beSmrg			| ubicom32 \
1262b8df70beSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
1263b8df70beSmrg			| vax \
1264b8df70beSmrg			| visium \
1265b8df70beSmrg			| w65 \
1266b8df70beSmrg			| wasm32 | wasm64 \
1267b8df70beSmrg			| we32k \
1268b8df70beSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
1269b8df70beSmrg			| xstormy16 | xtensa* \
1270b8df70beSmrg			| ymp \
1271b8df70beSmrg			| z8k | z80)
1272b8df70beSmrg				;;
1273b8df70beSmrg
1274b8df70beSmrg			*)
1275b8df70beSmrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
1276b8df70beSmrg				exit 1
1277b8df70beSmrg				;;
1278b8df70beSmrg		esac
12794c61c93dSmrg		;;
12804c61c93dSmrgesac
12814c61c93dSmrg
12824c61c93dSmrg# Here we canonicalize certain aliases for manufacturers.
1283b8df70beSmrgcase $vendor in
1284b8df70beSmrg	digital*)
1285b8df70beSmrg		vendor=dec
12864c61c93dSmrg		;;
1287b8df70beSmrg	commodore*)
1288b8df70beSmrg		vendor=cbm
12894c61c93dSmrg		;;
12904c61c93dSmrg	*)
12914c61c93dSmrg		;;
12924c61c93dSmrgesac
12934c61c93dSmrg
12944c61c93dSmrg# Decode manufacturer-specific aliases for certain operating systems.
12954c61c93dSmrg
1296b8df70beSmrgif test x$basic_os != x
12974c61c93dSmrgthen
1298b8df70beSmrg
1299b8df70beSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
1300b8df70beSmrg# set os.
1301b8df70beSmrgcase $basic_os in
1302b8df70beSmrg	gnu/linux*)
1303b8df70beSmrg		kernel=linux
1304b8df70beSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
1305b8df70beSmrg		;;
1306b8df70beSmrg	os2-emx)
1307b8df70beSmrg		kernel=os2
1308b8df70beSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
1309b8df70beSmrg		;;
1310b8df70beSmrg	nto-qnx*)
1311b8df70beSmrg		kernel=nto
1312b8df70beSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
1313b8df70beSmrg		;;
1314b8df70beSmrg	*-*)
1315b8df70beSmrg		# shellcheck disable=SC2162
1316b8df70beSmrg		IFS="-" read kernel os <<EOF
1317b8df70beSmrg$basic_os
1318b8df70beSmrgEOF
1319b8df70beSmrg		;;
1320b8df70beSmrg	# Default OS when just kernel was specified
1321b8df70beSmrg	nto*)
1322b8df70beSmrg		kernel=nto
1323b8df70beSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
1324b8df70beSmrg		;;
1325b8df70beSmrg	linux*)
1326b8df70beSmrg		kernel=linux
1327b8df70beSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
1328b8df70beSmrg		;;
1329b8df70beSmrg	*)
1330b8df70beSmrg		kernel=
1331b8df70beSmrg		os=$basic_os
1332b8df70beSmrg		;;
1333b8df70beSmrgesac
1334b8df70beSmrg
1335b8df70beSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
1336b8df70beSmrg# etc.)
13374c61c93dSmrgcase $os in
1338b8df70beSmrg	# First match some system type aliases that might get confused
1339b8df70beSmrg	# with valid system types.
1340b8df70beSmrg	# solaris* is a basic system type, with this one exception.
1341b8df70beSmrg	auroraux)
1342b8df70beSmrg		os=auroraux
1343d7ffce2aSmrg		;;
1344b8df70beSmrg	bluegene*)
1345b8df70beSmrg		os=cnk
13464c61c93dSmrg		;;
1347b8df70beSmrg	solaris1 | solaris1.*)
1348b8df70beSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
13494c61c93dSmrg		;;
1350b8df70beSmrg	solaris)
1351b8df70beSmrg		os=solaris2
13524c61c93dSmrg		;;
1353b8df70beSmrg	unixware*)
1354b8df70beSmrg		os=sysv4.2uw
13554c61c93dSmrg		;;
1356b8df70beSmrg	# es1800 is here to avoid being matched by es* (a different OS)
1357b8df70beSmrg	es1800*)
1358b8df70beSmrg		os=ose
13594c61c93dSmrg		;;
1360b8df70beSmrg	# Some version numbers need modification
1361b8df70beSmrg	chorusos*)
1362b8df70beSmrg		os=chorusos
13634c61c93dSmrg		;;
1364b8df70beSmrg	isc)
1365b8df70beSmrg		os=isc2.2
13664c61c93dSmrg		;;
1367b8df70beSmrg	sco6)
1368b8df70beSmrg		os=sco5v6
13694c61c93dSmrg		;;
1370b8df70beSmrg	sco5)
1371b8df70beSmrg		os=sco3.2v5
13724c61c93dSmrg		;;
1373b8df70beSmrg	sco4)
1374b8df70beSmrg		os=sco3.2v4
13754c61c93dSmrg		;;
1376b8df70beSmrg	sco3.2.[4-9]*)
1377b8df70beSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
13784c61c93dSmrg		;;
1379b8df70beSmrg	sco*v* | scout)
1380b8df70beSmrg		# Don't match below
13814c61c93dSmrg		;;
1382b8df70beSmrg	sco*)
1383b8df70beSmrg		os=sco3.2v2
13844c61c93dSmrg		;;
1385b8df70beSmrg	psos*)
1386b8df70beSmrg		os=psos
13874c61c93dSmrg		;;
1388b8df70beSmrg	qnx*)
1389b8df70beSmrg		os=qnx
13904c61c93dSmrg		;;
1391b8df70beSmrg	hiux*)
1392b8df70beSmrg		os=hiuxwe2
13934c61c93dSmrg		;;
1394b8df70beSmrg	lynx*178)
1395b8df70beSmrg		os=lynxos178
13964c61c93dSmrg		;;
1397b8df70beSmrg	lynx*5)
1398b8df70beSmrg		os=lynxos5
13994c61c93dSmrg		;;
1400b8df70beSmrg	lynxos*)
1401b8df70beSmrg		# don't get caught up in next wildcard
14024c61c93dSmrg		;;
1403b8df70beSmrg	lynx*)
1404b8df70beSmrg		os=lynxos
14054c61c93dSmrg		;;
1406b8df70beSmrg	mac[0-9]*)
1407b8df70beSmrg		os=`echo "$os" | sed -e 's|mac|macos|'`
14084c61c93dSmrg		;;
1409b8df70beSmrg	opened*)
1410b8df70beSmrg		os=openedition
14114c61c93dSmrg		;;
1412b8df70beSmrg	os400*)
1413b8df70beSmrg		os=os400
14144c61c93dSmrg		;;
1415b8df70beSmrg	sunos5*)
1416b8df70beSmrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
14174c61c93dSmrg		;;
1418b8df70beSmrg	sunos6*)
1419b8df70beSmrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
14204c61c93dSmrg		;;
1421b8df70beSmrg	wince*)
1422b8df70beSmrg		os=wince
14234c61c93dSmrg		;;
1424b8df70beSmrg	utek*)
1425b8df70beSmrg		os=bsd
14264c61c93dSmrg		;;
1427b8df70beSmrg	dynix*)
1428b8df70beSmrg		os=bsd
14294c61c93dSmrg		;;
1430b8df70beSmrg	acis*)
1431b8df70beSmrg		os=aos
14324c61c93dSmrg		;;
1433b8df70beSmrg	atheos*)
1434b8df70beSmrg		os=atheos
14354c61c93dSmrg		;;
1436b8df70beSmrg	syllable*)
1437b8df70beSmrg		os=syllable
14384c61c93dSmrg		;;
1439b8df70beSmrg	386bsd)
1440b8df70beSmrg		os=bsd
14414c61c93dSmrg		;;
1442b8df70beSmrg	ctix* | uts*)
1443b8df70beSmrg		os=sysv
14444c61c93dSmrg		;;
1445b8df70beSmrg	nova*)
1446b8df70beSmrg		os=rtmk-nova
14474c61c93dSmrg		;;
1448b8df70beSmrg	ns2)
1449b8df70beSmrg		os=nextstep2
14504c61c93dSmrg		;;
1451b8df70beSmrg	# Preserve the version number of sinix5.
1452b8df70beSmrg	sinix5.*)
1453b8df70beSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
14544c61c93dSmrg		;;
1455b8df70beSmrg	sinix*)
1456b8df70beSmrg		os=sysv4
14574c61c93dSmrg		;;
1458b8df70beSmrg	tpf*)
1459b8df70beSmrg		os=tpf
14604c61c93dSmrg		;;
1461b8df70beSmrg	triton*)
1462b8df70beSmrg		os=sysv3
14634c61c93dSmrg		;;
1464b8df70beSmrg	oss*)
1465b8df70beSmrg		os=sysv3
14664c61c93dSmrg		;;
1467b8df70beSmrg	svr4*)
1468b8df70beSmrg		os=sysv4
14694c61c93dSmrg		;;
1470b8df70beSmrg	svr3)
1471b8df70beSmrg		os=sysv3
14724c61c93dSmrg		;;
1473b8df70beSmrg	sysvr4)
1474b8df70beSmrg		os=sysv4
14754c61c93dSmrg		;;
1476b8df70beSmrg	ose*)
1477b8df70beSmrg		os=ose
14784c61c93dSmrg		;;
1479b8df70beSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
1480b8df70beSmrg		os=mint
14814c61c93dSmrg		;;
1482b8df70beSmrg	dicos*)
1483b8df70beSmrg		os=dicos
14841c80d5b0Smrg		;;
1485b8df70beSmrg	pikeos*)
1486b8df70beSmrg		# Until real need of OS specific support for
1487b8df70beSmrg		# particular features comes up, bare metal
1488b8df70beSmrg		# configurations are quite functional.
1489b8df70beSmrg		case $cpu in
1490b8df70beSmrg		    arm*)
1491b8df70beSmrg			os=eabi
1492b8df70beSmrg			;;
1493b8df70beSmrg		    *)
1494b8df70beSmrg			os=elf
1495b8df70beSmrg			;;
1496b8df70beSmrg		esac
14974c61c93dSmrg		;;
14984c61c93dSmrg	*)
1499b8df70beSmrg		# No normalization, but not necessarily accepted, that comes below.
15004c61c93dSmrg		;;
15014c61c93dSmrgesac
1502b8df70beSmrg
15034c61c93dSmrgelse
15044c61c93dSmrg
15054c61c93dSmrg# Here we handle the default operating systems that come with various machines.
15064c61c93dSmrg# The value should be what the vendor currently ships out the door with their
15074c61c93dSmrg# machine or put another way, the most popular os provided with the machine.
15084c61c93dSmrg
15094c61c93dSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
15104c61c93dSmrg# "-sun"), then you have to tell the case statement up towards the top
15114c61c93dSmrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
15124c61c93dSmrg# will signal an error saying that MANUFACTURER isn't an operating
15134c61c93dSmrg# system, and we'll never get to this point.
15144c61c93dSmrg
1515b8df70beSmrgkernel=
1516b8df70beSmrgcase $cpu-$vendor in
15171c80d5b0Smrg	score-*)
1518b8df70beSmrg		os=elf
15194c61c93dSmrg		;;
15201c80d5b0Smrg	spu-*)
1521b8df70beSmrg		os=elf
15224c61c93dSmrg		;;
15234c61c93dSmrg	*-acorn)
1524b8df70beSmrg		os=riscix1.2
15254c61c93dSmrg		;;
15264c61c93dSmrg	arm*-rebel)
1527b8df70beSmrg		kernel=linux
1528b8df70beSmrg		os=gnu
15294c61c93dSmrg		;;
15304c61c93dSmrg	arm*-semi)
1531b8df70beSmrg		os=aout
15324c61c93dSmrg		;;
15331c80d5b0Smrg	c4x-* | tic4x-*)
1534b8df70beSmrg		os=coff
15351c80d5b0Smrg		;;
153641fe0c2aSmrg	c8051-*)
1537b8df70beSmrg		os=elf
1538b8df70beSmrg		;;
1539b8df70beSmrg	clipper-intergraph)
1540b8df70beSmrg		os=clix
154141fe0c2aSmrg		;;
15421c80d5b0Smrg	hexagon-*)
1543b8df70beSmrg		os=elf
15444c61c93dSmrg		;;
1545d7ffce2aSmrg	tic54x-*)
1546b8df70beSmrg		os=coff
1547d7ffce2aSmrg		;;
1548d7ffce2aSmrg	tic55x-*)
1549b8df70beSmrg		os=coff
1550d7ffce2aSmrg		;;
1551d7ffce2aSmrg	tic6x-*)
1552b8df70beSmrg		os=coff
1553d7ffce2aSmrg		;;
15544c61c93dSmrg	# This must come before the *-dec entry.
15554c61c93dSmrg	pdp10-*)
1556b8df70beSmrg		os=tops20
15574c61c93dSmrg		;;
15584c61c93dSmrg	pdp11-*)
1559b8df70beSmrg		os=none
15604c61c93dSmrg		;;
15614c61c93dSmrg	*-dec | vax-*)
1562b8df70beSmrg		os=ultrix4.2
15634c61c93dSmrg		;;
15644c61c93dSmrg	m68*-apollo)
1565b8df70beSmrg		os=domain
15664c61c93dSmrg		;;
15674c61c93dSmrg	i386-sun)
1568b8df70beSmrg		os=sunos4.0.2
15694c61c93dSmrg		;;
15704c61c93dSmrg	m68000-sun)
1571b8df70beSmrg		os=sunos3
15724c61c93dSmrg		;;
15734c61c93dSmrg	m68*-cisco)
1574b8df70beSmrg		os=aout
15754c61c93dSmrg		;;
15761c80d5b0Smrg	mep-*)
1577b8df70beSmrg		os=elf
15784c61c93dSmrg		;;
15794c61c93dSmrg	mips*-cisco)
1580b8df70beSmrg		os=elf
15814c61c93dSmrg		;;
15824c61c93dSmrg	mips*-*)
1583b8df70beSmrg		os=elf
15844c61c93dSmrg		;;
15854c61c93dSmrg	or32-*)
1586b8df70beSmrg		os=coff
15874c61c93dSmrg		;;
15884c61c93dSmrg	*-tti)	# must be before sparc entry or we get the wrong os.
1589b8df70beSmrg		os=sysv3
15904c61c93dSmrg		;;
15914c61c93dSmrg	sparc-* | *-sun)
1592b8df70beSmrg		os=sunos4.1.1
15934c61c93dSmrg		;;
1594b8df70beSmrg	pru-*)
1595b8df70beSmrg		os=elf
15964c61c93dSmrg		;;
1597b8df70beSmrg	*-be)
1598b8df70beSmrg		os=beos
15994c61c93dSmrg		;;
16004c61c93dSmrg	*-ibm)
1601b8df70beSmrg		os=aix
16024c61c93dSmrg		;;
16031c80d5b0Smrg	*-knuth)
1604b8df70beSmrg		os=mmixware
16054c61c93dSmrg		;;
16064c61c93dSmrg	*-wec)
1607b8df70beSmrg		os=proelf
16084c61c93dSmrg		;;
16094c61c93dSmrg	*-winbond)
1610b8df70beSmrg		os=proelf
16114c61c93dSmrg		;;
16124c61c93dSmrg	*-oki)
1613b8df70beSmrg		os=proelf
16144c61c93dSmrg		;;
16154c61c93dSmrg	*-hp)
1616b8df70beSmrg		os=hpux
16174c61c93dSmrg		;;
16184c61c93dSmrg	*-hitachi)
1619b8df70beSmrg		os=hiux
16204c61c93dSmrg		;;
16214c61c93dSmrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
1622b8df70beSmrg		os=sysv
16234c61c93dSmrg		;;
16244c61c93dSmrg	*-cbm)
1625b8df70beSmrg		os=amigaos
16264c61c93dSmrg		;;
16274c61c93dSmrg	*-dg)
1628b8df70beSmrg		os=dgux
16294c61c93dSmrg		;;
16304c61c93dSmrg	*-dolphin)
1631b8df70beSmrg		os=sysv3
16324c61c93dSmrg		;;
16334c61c93dSmrg	m68k-ccur)
1634b8df70beSmrg		os=rtu
16354c61c93dSmrg		;;
16364c61c93dSmrg	m88k-omron*)
1637b8df70beSmrg		os=luna
16384c61c93dSmrg		;;
1639b8df70beSmrg	*-next)
1640b8df70beSmrg		os=nextstep
16414c61c93dSmrg		;;
16424c61c93dSmrg	*-sequent)
1643b8df70beSmrg		os=ptx
16444c61c93dSmrg		;;
16454c61c93dSmrg	*-crds)
1646b8df70beSmrg		os=unos
16474c61c93dSmrg		;;
16484c61c93dSmrg	*-ns)
1649b8df70beSmrg		os=genix
16504c61c93dSmrg		;;
16514c61c93dSmrg	i370-*)
1652b8df70beSmrg		os=mvs
16534c61c93dSmrg		;;
16544c61c93dSmrg	*-gould)
1655b8df70beSmrg		os=sysv
16564c61c93dSmrg		;;
16574c61c93dSmrg	*-highlevel)
1658b8df70beSmrg		os=bsd
16594c61c93dSmrg		;;
16604c61c93dSmrg	*-encore)
1661b8df70beSmrg		os=bsd
16624c61c93dSmrg		;;
16634c61c93dSmrg	*-sgi)
1664b8df70beSmrg		os=irix
16654c61c93dSmrg		;;
16664c61c93dSmrg	*-siemens)
1667b8df70beSmrg		os=sysv4
16684c61c93dSmrg		;;
16694c61c93dSmrg	*-masscomp)
1670b8df70beSmrg		os=rtu
16714c61c93dSmrg		;;
16724c61c93dSmrg	f30[01]-fujitsu | f700-fujitsu)
1673b8df70beSmrg		os=uxpv
16744c61c93dSmrg		;;
16754c61c93dSmrg	*-rom68k)
1676b8df70beSmrg		os=coff
16774c61c93dSmrg		;;
16784c61c93dSmrg	*-*bug)
1679b8df70beSmrg		os=coff
16804c61c93dSmrg		;;
16814c61c93dSmrg	*-apple)
1682b8df70beSmrg		os=macos
16834c61c93dSmrg		;;
16844c61c93dSmrg	*-atari*)
1685b8df70beSmrg		os=mint
1686b8df70beSmrg		;;
1687b8df70beSmrg	*-wrs)
1688b8df70beSmrg		os=vxworks
16894c61c93dSmrg		;;
16904c61c93dSmrg	*)
1691b8df70beSmrg		os=none
16924c61c93dSmrg		;;
16934c61c93dSmrgesac
1694b8df70beSmrg
16954c61c93dSmrgfi
16964c61c93dSmrg
1697b8df70beSmrg# Now, validate our (potentially fixed-up) OS.
1698b8df70beSmrgcase $os in
1699b8df70beSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
1700b8df70beSmrg	musl* | newlib* | uclibc*)
1701b8df70beSmrg		;;
1702b8df70beSmrg	# Likewise for "kernel-abi"
1703b8df70beSmrg	eabi* | gnueabi*)
1704b8df70beSmrg		;;
1705b8df70beSmrg	# VxWorks passes extra cpu info in the 4th filed.
1706b8df70beSmrg	simlinux | simwindows | spe)
1707b8df70beSmrg		;;
1708b8df70beSmrg	# Now accept the basic system types.
1709b8df70beSmrg	# The portable systems comes first.
1710b8df70beSmrg	# Each alternative MUST end in a * to match a version number.
1711b8df70beSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
1712b8df70beSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
1713b8df70beSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
1714b8df70beSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
1715b8df70beSmrg	     | hiux* | abug | nacl* | netware* | windows* \
1716b8df70beSmrg	     | os9* | macos* | osx* | ios* \
1717b8df70beSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
1718b8df70beSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
1719b8df70beSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
1720b8df70beSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
1721b8df70beSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
1722b8df70beSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
1723b8df70beSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
1724b8df70beSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
1725b8df70beSmrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
1726b8df70beSmrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
1727b8df70beSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
1728b8df70beSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
1729b8df70beSmrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
1730b8df70beSmrg	     | midipix* | mingw32* | mingw64* | mint* \
1731b8df70beSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
1732b8df70beSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
1733b8df70beSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
1734b8df70beSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
1735b8df70beSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
1736b8df70beSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
1737b8df70beSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
1738b8df70beSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
1739b8df70beSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
1740b8df70beSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
1741b8df70beSmrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx*)
1742b8df70beSmrg		;;
1743b8df70beSmrg	# This one is extra strict with allowed versions
1744b8df70beSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
1745b8df70beSmrg		# Don't forget version if it is 3.2v4 or newer.
1746b8df70beSmrg		;;
1747b8df70beSmrg	none)
1748b8df70beSmrg		;;
1749b8df70beSmrg	*)
1750b8df70beSmrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
1751b8df70beSmrg		exit 1
1752b8df70beSmrg		;;
1753b8df70beSmrgesac
1754b8df70beSmrg
1755b8df70beSmrg# As a final step for OS-related things, validate the OS-kernel combination
1756b8df70beSmrg# (given a valid OS), if there is a kernel.
1757b8df70beSmrgcase $kernel-$os in
1758b8df70beSmrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* )
1759b8df70beSmrg		;;
1760b8df70beSmrg	uclinux-uclibc* )
1761b8df70beSmrg		;;
1762b8df70beSmrg	-dietlibc* | -newlib* | -musl* | -uclibc* )
1763b8df70beSmrg		# These are just libc implementations, not actual OSes, and thus
1764b8df70beSmrg		# require a kernel.
1765b8df70beSmrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
1766b8df70beSmrg		exit 1
1767b8df70beSmrg		;;
1768b8df70beSmrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
1769b8df70beSmrg		;;
1770b8df70beSmrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
1771b8df70beSmrg		;;
1772b8df70beSmrg	nto-qnx*)
1773b8df70beSmrg		;;
1774b8df70beSmrg	os2-emx)
1775b8df70beSmrg		;;
1776b8df70beSmrg	*-eabi* | *-gnueabi*)
1777b8df70beSmrg		;;
1778b8df70beSmrg	-*)
1779b8df70beSmrg		# Blank kernel with real OS is always fine.
1780b8df70beSmrg		;;
1781b8df70beSmrg	*-*)
1782b8df70beSmrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
1783b8df70beSmrg		exit 1
1784b8df70beSmrg		;;
1785b8df70beSmrgesac
1786b8df70beSmrg
17874c61c93dSmrg# Here we handle the case where we know the os, and the CPU type, but not the
17884c61c93dSmrg# manufacturer.  We pick the logical manufacturer.
1789b8df70beSmrgcase $vendor in
1790b8df70beSmrg	unknown)
1791b8df70beSmrg		case $cpu-$os in
1792b8df70beSmrg			*-riscix*)
17934c61c93dSmrg				vendor=acorn
17944c61c93dSmrg				;;
1795b8df70beSmrg			*-sunos*)
17964c61c93dSmrg				vendor=sun
17974c61c93dSmrg				;;
1798b8df70beSmrg			*-cnk* | *-aix*)
17994c61c93dSmrg				vendor=ibm
18004c61c93dSmrg				;;
1801b8df70beSmrg			*-beos*)
18024c61c93dSmrg				vendor=be
18034c61c93dSmrg				;;
1804b8df70beSmrg			*-hpux*)
18054c61c93dSmrg				vendor=hp
18064c61c93dSmrg				;;
1807b8df70beSmrg			*-mpeix*)
18084c61c93dSmrg				vendor=hp
18094c61c93dSmrg				;;
1810b8df70beSmrg			*-hiux*)
18114c61c93dSmrg				vendor=hitachi
18124c61c93dSmrg				;;
1813b8df70beSmrg			*-unos*)
18144c61c93dSmrg				vendor=crds
18154c61c93dSmrg				;;
1816b8df70beSmrg			*-dgux*)
18174c61c93dSmrg				vendor=dg
18184c61c93dSmrg				;;
1819b8df70beSmrg			*-luna*)
18204c61c93dSmrg				vendor=omron
18214c61c93dSmrg				;;
1822b8df70beSmrg			*-genix*)
18234c61c93dSmrg				vendor=ns
18244c61c93dSmrg				;;
1825b8df70beSmrg			*-clix*)
1826b8df70beSmrg				vendor=intergraph
1827b8df70beSmrg				;;
1828b8df70beSmrg			*-mvs* | *-opened*)
1829b8df70beSmrg				vendor=ibm
1830b8df70beSmrg				;;
1831b8df70beSmrg			*-os400*)
18324c61c93dSmrg				vendor=ibm
18334c61c93dSmrg				;;
1834b8df70beSmrg			s390-* | s390x-*)
18354c61c93dSmrg				vendor=ibm
18364c61c93dSmrg				;;
1837b8df70beSmrg			*-ptx*)
18384c61c93dSmrg				vendor=sequent
18394c61c93dSmrg				;;
1840b8df70beSmrg			*-tpf*)
18414c61c93dSmrg				vendor=ibm
18424c61c93dSmrg				;;
1843b8df70beSmrg			*-vxsim* | *-vxworks* | *-windiss*)
18444c61c93dSmrg				vendor=wrs
18454c61c93dSmrg				;;
1846b8df70beSmrg			*-aux*)
18474c61c93dSmrg				vendor=apple
18484c61c93dSmrg				;;
1849b8df70beSmrg			*-hms*)
18504c61c93dSmrg				vendor=hitachi
18514c61c93dSmrg				;;
1852b8df70beSmrg			*-mpw* | *-macos*)
18534c61c93dSmrg				vendor=apple
18544c61c93dSmrg				;;
1855b8df70beSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
18564c61c93dSmrg				vendor=atari
18574c61c93dSmrg				;;
1858b8df70beSmrg			*-vos*)
18594c61c93dSmrg				vendor=stratus
18604c61c93dSmrg				;;
18614c61c93dSmrg		esac
18624c61c93dSmrg		;;
18634c61c93dSmrgesac
18644c61c93dSmrg
1865b8df70beSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
18664c61c93dSmrgexit
18674c61c93dSmrg
18684c61c93dSmrg# Local variables:
1869b8df70beSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
18704c61c93dSmrg# time-stamp-start: "timestamp='"
18714c61c93dSmrg# time-stamp-format: "%:y-%02m-%02d"
18724c61c93dSmrg# time-stamp-end: "'"
18734c61c93dSmrg# End:
1874