1c30f5000Smrg#! /bin/sh
2e0963edeSmrg# Configuration validation subroutine script.
3c30f5000Smrg#   Copyright 1992-2021 Free Software Foundation, Inc.
4e0963edeSmrg
5c30f5000Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale
6c30f5000Smrg
7c30f5000Smrgtimestamp='2021-08-14'
8e0963edeSmrg
9e494fffdSmrg# This file is free software; you can redistribute it and/or modify it
10e494fffdSmrg# under the terms of the GNU General Public License as published by
11e494fffdSmrg# the Free Software Foundation; either version 3 of the License, or
12e0963edeSmrg# (at your option) any later version.
13e0963edeSmrg#
14e494fffdSmrg# This program is distributed in the hope that it will be useful, but
15e494fffdSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of
16e494fffdSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17e494fffdSmrg# General Public License for more details.
18e0963edeSmrg#
19e0963edeSmrg# You should have received a copy of the GNU General Public License
20c30f5000Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
21e0963edeSmrg#
22e0963edeSmrg# As a special exception to the GNU General Public License, if you
23e0963edeSmrg# distribute this file as part of a program that contains a
24e0963edeSmrg# configuration script generated by Autoconf, you may include it under
25e494fffdSmrg# the same distribution terms that you use for the rest of that
26e494fffdSmrg# program.  This Exception is an additional permission under section 7
27e494fffdSmrg# of the GNU General Public License, version 3 ("GPLv3").
28e0963edeSmrg
29e0963edeSmrg
30b3a827e2Smrg# Please send patches to <config-patches@gnu.org>.
31e0963edeSmrg#
32e0963edeSmrg# Configuration subroutine to validate and canonicalize a configuration type.
33e0963edeSmrg# Supply the specified configuration type as an argument.
34e0963edeSmrg# If it is invalid, we print an error message on stderr and exit with code 1.
35e0963edeSmrg# Otherwise, we print the canonical config type on stdout and succeed.
36e0963edeSmrg
3749e108a1Smrg# You can get the latest version of this script from:
38c30f5000Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
3949e108a1Smrg
40e0963edeSmrg# This file is supposed to be the same for all GNU packages
41e0963edeSmrg# and recognize all the CPU types, system types and aliases
42e0963edeSmrg# that are meaningful with *any* GNU software.
43e0963edeSmrg# Each package is responsible for reporting which valid configurations
44e0963edeSmrg# it does not support.  The user should be able to distinguish
45e0963edeSmrg# a failure to support a valid configuration from a meaningless
46e0963edeSmrg# configuration.
47e0963edeSmrg
48e0963edeSmrg# The goal of this file is to map all the various variations of a given
49e0963edeSmrg# machine specification into a single specification in the form:
50e0963edeSmrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
51e0963edeSmrg# or in some cases, the newer four-part form:
52e0963edeSmrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
53e0963edeSmrg# It is wrong to echo any other type of specification.
54e0963edeSmrg
55c30f5000Smrg# The "shellcheck disable" line above the timestamp inhibits complaints
56c30f5000Smrg# about features and limitations of the classic Bourne shell that were
57c30f5000Smrg# superseded or lifted in POSIX.  However, this script identifies a wide
58c30f5000Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
59c30f5000Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still
60c30f5000Smrg# have a pre-POSIX /bin/sh.
61c30f5000Smrg
62e0963edeSmrgme=`echo "$0" | sed -e 's,.*/,,'`
63e0963edeSmrg
64e0963edeSmrgusage="\
65b3a827e2SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
66e0963edeSmrg
67e0963edeSmrgCanonicalize a configuration name.
68e0963edeSmrg
69c30f5000SmrgOptions:
70e0963edeSmrg  -h, --help         print this help, then exit
71e0963edeSmrg  -t, --time-stamp   print date of last modification, then exit
72e0963edeSmrg  -v, --version      print version number, then exit
73e0963edeSmrg
74e0963edeSmrgReport bugs and patches to <config-patches@gnu.org>."
75e0963edeSmrg
76e0963edeSmrgversion="\
77e0963edeSmrgGNU config.sub ($timestamp)
78e0963edeSmrg
79c30f5000SmrgCopyright 1992-2021 Free Software Foundation, Inc.
80e0963edeSmrg
81e0963edeSmrgThis is free software; see the source for copying conditions.  There is NO
82e0963edeSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
83e0963edeSmrg
84e0963edeSmrghelp="
85e0963edeSmrgTry \`$me --help' for more information."
86e0963edeSmrg
87e0963edeSmrg# Parse command line
88e0963edeSmrgwhile test $# -gt 0 ; do
89e0963edeSmrg  case $1 in
90e0963edeSmrg    --time-stamp | --time* | -t )
91e0963edeSmrg       echo "$timestamp" ; exit ;;
92e0963edeSmrg    --version | -v )
93e0963edeSmrg       echo "$version" ; exit ;;
94e0963edeSmrg    --help | --h* | -h )
95e0963edeSmrg       echo "$usage"; exit ;;
96e0963edeSmrg    -- )     # Stop option processing
97e0963edeSmrg       shift; break ;;
98e0963edeSmrg    - )	# Use stdin as input.
99e0963edeSmrg       break ;;
100e0963edeSmrg    -* )
101c30f5000Smrg       echo "$me: invalid option $1$help" >&2
102e0963edeSmrg       exit 1 ;;
103e0963edeSmrg
104e0963edeSmrg    *local*)
105e0963edeSmrg       # First pass through any local machine types.
106c30f5000Smrg       echo "$1"
107e0963edeSmrg       exit ;;
108e0963edeSmrg
109e0963edeSmrg    * )
110e0963edeSmrg       break ;;
111e0963edeSmrg  esac
112e0963edeSmrgdone
113e0963edeSmrg
114e0963edeSmrgcase $# in
115e0963edeSmrg 0) echo "$me: missing argument$help" >&2
116e0963edeSmrg    exit 1;;
117e0963edeSmrg 1) ;;
118e0963edeSmrg *) echo "$me: too many arguments$help" >&2
119e0963edeSmrg    exit 1;;
120e0963edeSmrgesac
121e0963edeSmrg
122c30f5000Smrg# Split fields of configuration type
123c30f5000Smrg# shellcheck disable=SC2162
124c30f5000Smrgsaved_IFS=$IFS
125c30f5000SmrgIFS="-" read field1 field2 field3 field4 <<EOF
126c30f5000Smrg$1
127c30f5000SmrgEOF
128c30f5000SmrgIFS=$saved_IFS
129e0963edeSmrg
130c30f5000Smrg# Separate into logical components for further validation
131c30f5000Smrgcase $1 in
132c30f5000Smrg	*-*-*-*-*)
133c30f5000Smrg		echo Invalid configuration \`"$1"\': more than four components >&2
134c30f5000Smrg		exit 1
135e0963edeSmrg		;;
136c30f5000Smrg	*-*-*-*)
137c30f5000Smrg		basic_machine=$field1-$field2
138c30f5000Smrg		basic_os=$field3-$field4
139e0963edeSmrg		;;
140c30f5000Smrg	*-*-*)
141c30f5000Smrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
142c30f5000Smrg		# parts
143c30f5000Smrg		maybe_os=$field2-$field3
144c30f5000Smrg		case $maybe_os in
145c30f5000Smrg			nto-qnx* | linux-* | uclinux-uclibc* \
146c30f5000Smrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
147c30f5000Smrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
148c30f5000Smrg			| storm-chaos* | os2-emx* | rtmk-nova*)
149c30f5000Smrg				basic_machine=$field1
150c30f5000Smrg				basic_os=$maybe_os
151c30f5000Smrg				;;
152c30f5000Smrg			android-linux)
153c30f5000Smrg				basic_machine=$field1-unknown
154c30f5000Smrg				basic_os=linux-android
155c30f5000Smrg				;;
156c30f5000Smrg			*)
157c30f5000Smrg				basic_machine=$field1-$field2
158c30f5000Smrg				basic_os=$field3
159c30f5000Smrg				;;
160c30f5000Smrg		esac
161e0963edeSmrg		;;
162c30f5000Smrg	*-*)
163c30f5000Smrg		# A lone config we happen to match not fitting any pattern
164c30f5000Smrg		case $field1-$field2 in
165c30f5000Smrg			decstation-3100)
166c30f5000Smrg				basic_machine=mips-dec
167c30f5000Smrg				basic_os=
168c30f5000Smrg				;;
169c30f5000Smrg			*-*)
170c30f5000Smrg				# Second component is usually, but not always the OS
171c30f5000Smrg				case $field2 in
172c30f5000Smrg					# Prevent following clause from handling this valid os
173c30f5000Smrg					sun*os*)
174c30f5000Smrg						basic_machine=$field1
175c30f5000Smrg						basic_os=$field2
176c30f5000Smrg						;;
177c30f5000Smrg					zephyr*)
178c30f5000Smrg						basic_machine=$field1-unknown
179c30f5000Smrg						basic_os=$field2
180c30f5000Smrg						;;
181c30f5000Smrg					# Manufacturers
182c30f5000Smrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
183c30f5000Smrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
184c30f5000Smrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
185c30f5000Smrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
186c30f5000Smrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
187c30f5000Smrg					| ultra | tti* | harris | dolphin | highlevel | gould \
188c30f5000Smrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
189c30f5000Smrg					| microblaze* | sim | cisco \
190c30f5000Smrg					| oki | wec | wrs | winbond)
191c30f5000Smrg						basic_machine=$field1-$field2
192c30f5000Smrg						basic_os=
193c30f5000Smrg						;;
194c30f5000Smrg					*)
195c30f5000Smrg						basic_machine=$field1
196c30f5000Smrg						basic_os=$field2
197c30f5000Smrg						;;
198c30f5000Smrg				esac
199c30f5000Smrg			;;
200c30f5000Smrg		esac
201e0963edeSmrg		;;
202c30f5000Smrg	*)
203c30f5000Smrg		# Convert single-component short-hands not valid as part of
204c30f5000Smrg		# multi-component configurations.
205c30f5000Smrg		case $field1 in
206c30f5000Smrg			386bsd)
207c30f5000Smrg				basic_machine=i386-pc
208c30f5000Smrg				basic_os=bsd
209c30f5000Smrg				;;
210c30f5000Smrg			a29khif)
211c30f5000Smrg				basic_machine=a29k-amd
212c30f5000Smrg				basic_os=udi
213c30f5000Smrg				;;
214c30f5000Smrg			adobe68k)
215c30f5000Smrg				basic_machine=m68010-adobe
216c30f5000Smrg				basic_os=scout
217c30f5000Smrg				;;
218c30f5000Smrg			alliant)
219c30f5000Smrg				basic_machine=fx80-alliant
220c30f5000Smrg				basic_os=
221c30f5000Smrg				;;
222c30f5000Smrg			altos | altos3068)
223c30f5000Smrg				basic_machine=m68k-altos
224c30f5000Smrg				basic_os=
225c30f5000Smrg				;;
226c30f5000Smrg			am29k)
227c30f5000Smrg				basic_machine=a29k-none
228c30f5000Smrg				basic_os=bsd
229c30f5000Smrg				;;
230c30f5000Smrg			amdahl)
231c30f5000Smrg				basic_machine=580-amdahl
232c30f5000Smrg				basic_os=sysv
233c30f5000Smrg				;;
234c30f5000Smrg			amiga)
235c30f5000Smrg				basic_machine=m68k-unknown
236c30f5000Smrg				basic_os=
237c30f5000Smrg				;;
238c30f5000Smrg			amigaos | amigados)
239c30f5000Smrg				basic_machine=m68k-unknown
240c30f5000Smrg				basic_os=amigaos
241c30f5000Smrg				;;
242c30f5000Smrg			amigaunix | amix)
243c30f5000Smrg				basic_machine=m68k-unknown
244c30f5000Smrg				basic_os=sysv4
245c30f5000Smrg				;;
246c30f5000Smrg			apollo68)
247c30f5000Smrg				basic_machine=m68k-apollo
248c30f5000Smrg				basic_os=sysv
249c30f5000Smrg				;;
250c30f5000Smrg			apollo68bsd)
251c30f5000Smrg				basic_machine=m68k-apollo
252c30f5000Smrg				basic_os=bsd
253c30f5000Smrg				;;
254c30f5000Smrg			aros)
255c30f5000Smrg				basic_machine=i386-pc
256c30f5000Smrg				basic_os=aros
257c30f5000Smrg				;;
258c30f5000Smrg			aux)
259c30f5000Smrg				basic_machine=m68k-apple
260c30f5000Smrg				basic_os=aux
261c30f5000Smrg				;;
262c30f5000Smrg			balance)
263c30f5000Smrg				basic_machine=ns32k-sequent
264c30f5000Smrg				basic_os=dynix
265c30f5000Smrg				;;
266c30f5000Smrg			blackfin)
267c30f5000Smrg				basic_machine=bfin-unknown
268c30f5000Smrg				basic_os=linux
269c30f5000Smrg				;;
270c30f5000Smrg			cegcc)
271c30f5000Smrg				basic_machine=arm-unknown
272c30f5000Smrg				basic_os=cegcc
273c30f5000Smrg				;;
274c30f5000Smrg			convex-c1)
275c30f5000Smrg				basic_machine=c1-convex
276c30f5000Smrg				basic_os=bsd
277c30f5000Smrg				;;
278c30f5000Smrg			convex-c2)
279c30f5000Smrg				basic_machine=c2-convex
280c30f5000Smrg				basic_os=bsd
281c30f5000Smrg				;;
282c30f5000Smrg			convex-c32)
283c30f5000Smrg				basic_machine=c32-convex
284c30f5000Smrg				basic_os=bsd
285c30f5000Smrg				;;
286c30f5000Smrg			convex-c34)
287c30f5000Smrg				basic_machine=c34-convex
288c30f5000Smrg				basic_os=bsd
289c30f5000Smrg				;;
290c30f5000Smrg			convex-c38)
291c30f5000Smrg				basic_machine=c38-convex
292c30f5000Smrg				basic_os=bsd
293c30f5000Smrg				;;
294c30f5000Smrg			cray)
295c30f5000Smrg				basic_machine=j90-cray
296c30f5000Smrg				basic_os=unicos
297c30f5000Smrg				;;
298c30f5000Smrg			crds | unos)
299c30f5000Smrg				basic_machine=m68k-crds
300c30f5000Smrg				basic_os=
301c30f5000Smrg				;;
302c30f5000Smrg			da30)
303c30f5000Smrg				basic_machine=m68k-da30
304c30f5000Smrg				basic_os=
305c30f5000Smrg				;;
306c30f5000Smrg			decstation | pmax | pmin | dec3100 | decstatn)
307c30f5000Smrg				basic_machine=mips-dec
308c30f5000Smrg				basic_os=
309c30f5000Smrg				;;
310c30f5000Smrg			delta88)
311c30f5000Smrg				basic_machine=m88k-motorola
312c30f5000Smrg				basic_os=sysv3
313c30f5000Smrg				;;
314c30f5000Smrg			dicos)
315c30f5000Smrg				basic_machine=i686-pc
316c30f5000Smrg				basic_os=dicos
317c30f5000Smrg				;;
318c30f5000Smrg			djgpp)
319c30f5000Smrg				basic_machine=i586-pc
320c30f5000Smrg				basic_os=msdosdjgpp
321c30f5000Smrg				;;
322c30f5000Smrg			ebmon29k)
323c30f5000Smrg				basic_machine=a29k-amd
324c30f5000Smrg				basic_os=ebmon
325c30f5000Smrg				;;
326c30f5000Smrg			es1800 | OSE68k | ose68k | ose | OSE)
327c30f5000Smrg				basic_machine=m68k-ericsson
328c30f5000Smrg				basic_os=ose
329c30f5000Smrg				;;
330c30f5000Smrg			gmicro)
331c30f5000Smrg				basic_machine=tron-gmicro
332c30f5000Smrg				basic_os=sysv
333c30f5000Smrg				;;
334c30f5000Smrg			go32)
335c30f5000Smrg				basic_machine=i386-pc
336c30f5000Smrg				basic_os=go32
337c30f5000Smrg				;;
338c30f5000Smrg			h8300hms)
339c30f5000Smrg				basic_machine=h8300-hitachi
340c30f5000Smrg				basic_os=hms
341c30f5000Smrg				;;
342c30f5000Smrg			h8300xray)
343c30f5000Smrg				basic_machine=h8300-hitachi
344c30f5000Smrg				basic_os=xray
345c30f5000Smrg				;;
346c30f5000Smrg			h8500hms)
347c30f5000Smrg				basic_machine=h8500-hitachi
348c30f5000Smrg				basic_os=hms
349c30f5000Smrg				;;
350c30f5000Smrg			harris)
351c30f5000Smrg				basic_machine=m88k-harris
352c30f5000Smrg				basic_os=sysv3
353c30f5000Smrg				;;
354c30f5000Smrg			hp300 | hp300hpux)
355c30f5000Smrg				basic_machine=m68k-hp
356c30f5000Smrg				basic_os=hpux
357c30f5000Smrg				;;
358c30f5000Smrg			hp300bsd)
359c30f5000Smrg				basic_machine=m68k-hp
360c30f5000Smrg				basic_os=bsd
361c30f5000Smrg				;;
362c30f5000Smrg			hppaosf)
363c30f5000Smrg				basic_machine=hppa1.1-hp
364c30f5000Smrg				basic_os=osf
365c30f5000Smrg				;;
366c30f5000Smrg			hppro)
367c30f5000Smrg				basic_machine=hppa1.1-hp
368c30f5000Smrg				basic_os=proelf
369c30f5000Smrg				;;
370c30f5000Smrg			i386mach)
371c30f5000Smrg				basic_machine=i386-mach
372c30f5000Smrg				basic_os=mach
373c30f5000Smrg				;;
374c30f5000Smrg			isi68 | isi)
375c30f5000Smrg				basic_machine=m68k-isi
376c30f5000Smrg				basic_os=sysv
377c30f5000Smrg				;;
378c30f5000Smrg			m68knommu)
379c30f5000Smrg				basic_machine=m68k-unknown
380c30f5000Smrg				basic_os=linux
381c30f5000Smrg				;;
382c30f5000Smrg			magnum | m3230)
383c30f5000Smrg				basic_machine=mips-mips
384c30f5000Smrg				basic_os=sysv
385c30f5000Smrg				;;
386c30f5000Smrg			merlin)
387c30f5000Smrg				basic_machine=ns32k-utek
388c30f5000Smrg				basic_os=sysv
389c30f5000Smrg				;;
390c30f5000Smrg			mingw64)
391c30f5000Smrg				basic_machine=x86_64-pc
392c30f5000Smrg				basic_os=mingw64
393c30f5000Smrg				;;
394c30f5000Smrg			mingw32)
395c30f5000Smrg				basic_machine=i686-pc
396c30f5000Smrg				basic_os=mingw32
397c30f5000Smrg				;;
398c30f5000Smrg			mingw32ce)
399c30f5000Smrg				basic_machine=arm-unknown
400c30f5000Smrg				basic_os=mingw32ce
401c30f5000Smrg				;;
402c30f5000Smrg			monitor)
403c30f5000Smrg				basic_machine=m68k-rom68k
404c30f5000Smrg				basic_os=coff
405c30f5000Smrg				;;
406c30f5000Smrg			morphos)
407c30f5000Smrg				basic_machine=powerpc-unknown
408c30f5000Smrg				basic_os=morphos
409c30f5000Smrg				;;
410c30f5000Smrg			moxiebox)
411c30f5000Smrg				basic_machine=moxie-unknown
412c30f5000Smrg				basic_os=moxiebox
413c30f5000Smrg				;;
414c30f5000Smrg			msdos)
415c30f5000Smrg				basic_machine=i386-pc
416c30f5000Smrg				basic_os=msdos
417c30f5000Smrg				;;
418c30f5000Smrg			msys)
419c30f5000Smrg				basic_machine=i686-pc
420c30f5000Smrg				basic_os=msys
421c30f5000Smrg				;;
422c30f5000Smrg			mvs)
423c30f5000Smrg				basic_machine=i370-ibm
424c30f5000Smrg				basic_os=mvs
425c30f5000Smrg				;;
426c30f5000Smrg			nacl)
427c30f5000Smrg				basic_machine=le32-unknown
428c30f5000Smrg				basic_os=nacl
429c30f5000Smrg				;;
430c30f5000Smrg			ncr3000)
431c30f5000Smrg				basic_machine=i486-ncr
432c30f5000Smrg				basic_os=sysv4
433c30f5000Smrg				;;
434c30f5000Smrg			netbsd386)
435c30f5000Smrg				basic_machine=i386-pc
436c30f5000Smrg				basic_os=netbsd
437c30f5000Smrg				;;
438c30f5000Smrg			netwinder)
439c30f5000Smrg				basic_machine=armv4l-rebel
440c30f5000Smrg				basic_os=linux
441c30f5000Smrg				;;
442c30f5000Smrg			news | news700 | news800 | news900)
443c30f5000Smrg				basic_machine=m68k-sony
444c30f5000Smrg				basic_os=newsos
445c30f5000Smrg				;;
446c30f5000Smrg			news1000)
447c30f5000Smrg				basic_machine=m68030-sony
448c30f5000Smrg				basic_os=newsos
449c30f5000Smrg				;;
450c30f5000Smrg			necv70)
451c30f5000Smrg				basic_machine=v70-nec
452c30f5000Smrg				basic_os=sysv
453c30f5000Smrg				;;
454c30f5000Smrg			nh3000)
455c30f5000Smrg				basic_machine=m68k-harris
456c30f5000Smrg				basic_os=cxux
457c30f5000Smrg				;;
458c30f5000Smrg			nh[45]000)
459c30f5000Smrg				basic_machine=m88k-harris
460c30f5000Smrg				basic_os=cxux
461c30f5000Smrg				;;
462c30f5000Smrg			nindy960)
463c30f5000Smrg				basic_machine=i960-intel
464c30f5000Smrg				basic_os=nindy
465c30f5000Smrg				;;
466c30f5000Smrg			mon960)
467c30f5000Smrg				basic_machine=i960-intel
468c30f5000Smrg				basic_os=mon960
469c30f5000Smrg				;;
470c30f5000Smrg			nonstopux)
471c30f5000Smrg				basic_machine=mips-compaq
472c30f5000Smrg				basic_os=nonstopux
473c30f5000Smrg				;;
474c30f5000Smrg			os400)
475c30f5000Smrg				basic_machine=powerpc-ibm
476c30f5000Smrg				basic_os=os400
477c30f5000Smrg				;;
478c30f5000Smrg			OSE68000 | ose68000)
479c30f5000Smrg				basic_machine=m68000-ericsson
480c30f5000Smrg				basic_os=ose
481c30f5000Smrg				;;
482c30f5000Smrg			os68k)
483c30f5000Smrg				basic_machine=m68k-none
484c30f5000Smrg				basic_os=os68k
485c30f5000Smrg				;;
486c30f5000Smrg			paragon)
487c30f5000Smrg				basic_machine=i860-intel
488c30f5000Smrg				basic_os=osf
489c30f5000Smrg				;;
490c30f5000Smrg			parisc)
491c30f5000Smrg				basic_machine=hppa-unknown
492c30f5000Smrg				basic_os=linux
493c30f5000Smrg				;;
494c30f5000Smrg			psp)
495c30f5000Smrg				basic_machine=mipsallegrexel-sony
496c30f5000Smrg				basic_os=psp
497c30f5000Smrg				;;
498c30f5000Smrg			pw32)
499c30f5000Smrg				basic_machine=i586-unknown
500c30f5000Smrg				basic_os=pw32
501c30f5000Smrg				;;
502c30f5000Smrg			rdos | rdos64)
503c30f5000Smrg				basic_machine=x86_64-pc
504c30f5000Smrg				basic_os=rdos
505c30f5000Smrg				;;
506c30f5000Smrg			rdos32)
507c30f5000Smrg				basic_machine=i386-pc
508c30f5000Smrg				basic_os=rdos
509c30f5000Smrg				;;
510c30f5000Smrg			rom68k)
511c30f5000Smrg				basic_machine=m68k-rom68k
512c30f5000Smrg				basic_os=coff
513c30f5000Smrg				;;
514c30f5000Smrg			sa29200)
515c30f5000Smrg				basic_machine=a29k-amd
516c30f5000Smrg				basic_os=udi
517c30f5000Smrg				;;
518c30f5000Smrg			sei)
519c30f5000Smrg				basic_machine=mips-sei
520c30f5000Smrg				basic_os=seiux
521c30f5000Smrg				;;
522c30f5000Smrg			sequent)
523c30f5000Smrg				basic_machine=i386-sequent
524c30f5000Smrg				basic_os=
525c30f5000Smrg				;;
526c30f5000Smrg			sps7)
527c30f5000Smrg				basic_machine=m68k-bull
528c30f5000Smrg				basic_os=sysv2
529c30f5000Smrg				;;
530c30f5000Smrg			st2000)
531c30f5000Smrg				basic_machine=m68k-tandem
532c30f5000Smrg				basic_os=
533c30f5000Smrg				;;
534c30f5000Smrg			stratus)
535c30f5000Smrg				basic_machine=i860-stratus
536c30f5000Smrg				basic_os=sysv4
537c30f5000Smrg				;;
538c30f5000Smrg			sun2)
539c30f5000Smrg				basic_machine=m68000-sun
540c30f5000Smrg				basic_os=
541c30f5000Smrg				;;
542c30f5000Smrg			sun2os3)
543c30f5000Smrg				basic_machine=m68000-sun
544c30f5000Smrg				basic_os=sunos3
545c30f5000Smrg				;;
546c30f5000Smrg			sun2os4)
547c30f5000Smrg				basic_machine=m68000-sun
548c30f5000Smrg				basic_os=sunos4
549c30f5000Smrg				;;
550c30f5000Smrg			sun3)
551c30f5000Smrg				basic_machine=m68k-sun
552c30f5000Smrg				basic_os=
553c30f5000Smrg				;;
554c30f5000Smrg			sun3os3)
555c30f5000Smrg				basic_machine=m68k-sun
556c30f5000Smrg				basic_os=sunos3
557c30f5000Smrg				;;
558c30f5000Smrg			sun3os4)
559c30f5000Smrg				basic_machine=m68k-sun
560c30f5000Smrg				basic_os=sunos4
561c30f5000Smrg				;;
562c30f5000Smrg			sun4)
563c30f5000Smrg				basic_machine=sparc-sun
564c30f5000Smrg				basic_os=
565c30f5000Smrg				;;
566c30f5000Smrg			sun4os3)
567c30f5000Smrg				basic_machine=sparc-sun
568c30f5000Smrg				basic_os=sunos3
569c30f5000Smrg				;;
570c30f5000Smrg			sun4os4)
571c30f5000Smrg				basic_machine=sparc-sun
572c30f5000Smrg				basic_os=sunos4
573c30f5000Smrg				;;
574c30f5000Smrg			sun4sol2)
575c30f5000Smrg				basic_machine=sparc-sun
576c30f5000Smrg				basic_os=solaris2
577c30f5000Smrg				;;
578c30f5000Smrg			sun386 | sun386i | roadrunner)
579c30f5000Smrg				basic_machine=i386-sun
580c30f5000Smrg				basic_os=
581c30f5000Smrg				;;
582c30f5000Smrg			sv1)
583c30f5000Smrg				basic_machine=sv1-cray
584c30f5000Smrg				basic_os=unicos
585c30f5000Smrg				;;
586c30f5000Smrg			symmetry)
587c30f5000Smrg				basic_machine=i386-sequent
588c30f5000Smrg				basic_os=dynix
589c30f5000Smrg				;;
590c30f5000Smrg			t3e)
591c30f5000Smrg				basic_machine=alphaev5-cray
592c30f5000Smrg				basic_os=unicos
593c30f5000Smrg				;;
594c30f5000Smrg			t90)
595c30f5000Smrg				basic_machine=t90-cray
596c30f5000Smrg				basic_os=unicos
597c30f5000Smrg				;;
598c30f5000Smrg			toad1)
599c30f5000Smrg				basic_machine=pdp10-xkl
600c30f5000Smrg				basic_os=tops20
601c30f5000Smrg				;;
602c30f5000Smrg			tpf)
603c30f5000Smrg				basic_machine=s390x-ibm
604c30f5000Smrg				basic_os=tpf
605c30f5000Smrg				;;
606c30f5000Smrg			udi29k)
607c30f5000Smrg				basic_machine=a29k-amd
608c30f5000Smrg				basic_os=udi
609c30f5000Smrg				;;
610c30f5000Smrg			ultra3)
611c30f5000Smrg				basic_machine=a29k-nyu
612c30f5000Smrg				basic_os=sym1
613c30f5000Smrg				;;
614c30f5000Smrg			v810 | necv810)
615c30f5000Smrg				basic_machine=v810-nec
616c30f5000Smrg				basic_os=none
617c30f5000Smrg				;;
618c30f5000Smrg			vaxv)
619c30f5000Smrg				basic_machine=vax-dec
620c30f5000Smrg				basic_os=sysv
621c30f5000Smrg				;;
622c30f5000Smrg			vms)
623c30f5000Smrg				basic_machine=vax-dec
624c30f5000Smrg				basic_os=vms
625c30f5000Smrg				;;
626c30f5000Smrg			vsta)
627c30f5000Smrg				basic_machine=i386-pc
628c30f5000Smrg				basic_os=vsta
629c30f5000Smrg				;;
630c30f5000Smrg			vxworks960)
631c30f5000Smrg				basic_machine=i960-wrs
632c30f5000Smrg				basic_os=vxworks
633c30f5000Smrg				;;
634c30f5000Smrg			vxworks68)
635c30f5000Smrg				basic_machine=m68k-wrs
636c30f5000Smrg				basic_os=vxworks
637c30f5000Smrg				;;
638c30f5000Smrg			vxworks29k)
639c30f5000Smrg				basic_machine=a29k-wrs
640c30f5000Smrg				basic_os=vxworks
641c30f5000Smrg				;;
642c30f5000Smrg			xbox)
643c30f5000Smrg				basic_machine=i686-pc
644c30f5000Smrg				basic_os=mingw32
645c30f5000Smrg				;;
646c30f5000Smrg			ymp)
647c30f5000Smrg				basic_machine=ymp-cray
648c30f5000Smrg				basic_os=unicos
649c30f5000Smrg				;;
650c30f5000Smrg			*)
651c30f5000Smrg				basic_machine=$1
652c30f5000Smrg				basic_os=
653c30f5000Smrg				;;
654c30f5000Smrg		esac
655e0963edeSmrg		;;
656e0963edeSmrgesac
657e0963edeSmrg
658c30f5000Smrg# Decode 1-component or ad-hoc basic machines
659e0963edeSmrgcase $basic_machine in
660c30f5000Smrg	# Here we handle the default manufacturer of certain CPU types.  It is in
661c30f5000Smrg	# some cases the only manufacturer, in others, it is the most popular.
662c30f5000Smrg	w89k)
663c30f5000Smrg		cpu=hppa1.1
664c30f5000Smrg		vendor=winbond
665e0963edeSmrg		;;
666c30f5000Smrg	op50n)
667c30f5000Smrg		cpu=hppa1.1
668c30f5000Smrg		vendor=oki
669e0963edeSmrg		;;
670c30f5000Smrg	op60c)
671c30f5000Smrg		cpu=hppa1.1
672c30f5000Smrg		vendor=oki
673e0963edeSmrg		;;
674c30f5000Smrg	ibm*)
675c30f5000Smrg		cpu=i370
676c30f5000Smrg		vendor=ibm
677e494fffdSmrg		;;
678c30f5000Smrg	orion105)
679c30f5000Smrg		cpu=clipper
680c30f5000Smrg		vendor=highlevel
681e494fffdSmrg		;;
682c30f5000Smrg	mac | mpw | mac-mpw)
683c30f5000Smrg		cpu=m68k
684c30f5000Smrg		vendor=apple
685e494fffdSmrg		;;
686c30f5000Smrg	pmac | pmac-mpw)
687c30f5000Smrg		cpu=powerpc
688c30f5000Smrg		vendor=apple
689e494fffdSmrg		;;
690e494fffdSmrg
691e0963edeSmrg	# Recognize the various machine names and aliases which stand
692e0963edeSmrg	# for a CPU type and a company and sometimes even an OS.
693e0963edeSmrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
694c30f5000Smrg		cpu=m68000
695c30f5000Smrg		vendor=att
696e0963edeSmrg		;;
697e0963edeSmrg	3b*)
698c30f5000Smrg		cpu=we32k
699c30f5000Smrg		vendor=att
700f05b35a2Smrg		;;
70149e108a1Smrg	bluegene*)
702c30f5000Smrg		cpu=powerpc
703c30f5000Smrg		vendor=ibm
704c30f5000Smrg		basic_os=cnk
705e0963edeSmrg		;;
706e0963edeSmrg	decsystem10* | dec10*)
707c30f5000Smrg		cpu=pdp10
708c30f5000Smrg		vendor=dec
709c30f5000Smrg		basic_os=tops10
710e0963edeSmrg		;;
711e0963edeSmrg	decsystem20* | dec20*)
712c30f5000Smrg		cpu=pdp10
713c30f5000Smrg		vendor=dec
714c30f5000Smrg		basic_os=tops20
715e0963edeSmrg		;;
716e0963edeSmrg	delta | 3300 | motorola-3300 | motorola-delta \
717e0963edeSmrg	      | 3300-motorola | delta-motorola)
718c30f5000Smrg		cpu=m68k
719c30f5000Smrg		vendor=motorola
720e0963edeSmrg		;;
721c30f5000Smrg	dpx2*)
722c30f5000Smrg		cpu=m68k
723c30f5000Smrg		vendor=bull
724c30f5000Smrg		basic_os=sysv3
725e0963edeSmrg		;;
726e0963edeSmrg	encore | umax | mmax)
727c30f5000Smrg		cpu=ns32k
728c30f5000Smrg		vendor=encore
729e0963edeSmrg		;;
730c30f5000Smrg	elxsi)
731c30f5000Smrg		cpu=elxsi
732c30f5000Smrg		vendor=elxsi
733c30f5000Smrg		basic_os=${basic_os:-bsd}
734e0963edeSmrg		;;
735e0963edeSmrg	fx2800)
736c30f5000Smrg		cpu=i860
737c30f5000Smrg		vendor=alliant
738e0963edeSmrg		;;
739e0963edeSmrg	genix)
740c30f5000Smrg		cpu=ns32k
741c30f5000Smrg		vendor=ns
742e0963edeSmrg		;;
743e0963edeSmrg	h3050r* | hiux*)
744c30f5000Smrg		cpu=hppa1.1
745c30f5000Smrg		vendor=hitachi
746c30f5000Smrg		basic_os=hiuxwe2
747e0963edeSmrg		;;
748e0963edeSmrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
749c30f5000Smrg		cpu=hppa1.0
750c30f5000Smrg		vendor=hp
751e0963edeSmrg		;;
752e0963edeSmrg	hp9k2[0-9][0-9] | hp9k31[0-9])
753c30f5000Smrg		cpu=m68000
754c30f5000Smrg		vendor=hp
755e0963edeSmrg		;;
756e0963edeSmrg	hp9k3[2-9][0-9])
757c30f5000Smrg		cpu=m68k
758c30f5000Smrg		vendor=hp
759e0963edeSmrg		;;
760e0963edeSmrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
761c30f5000Smrg		cpu=hppa1.0
762c30f5000Smrg		vendor=hp
763e0963edeSmrg		;;
764e0963edeSmrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
765c30f5000Smrg		cpu=hppa1.1
766c30f5000Smrg		vendor=hp
767e0963edeSmrg		;;
768e0963edeSmrg	hp9k78[0-9] | hp78[0-9])
769e0963edeSmrg		# FIXME: really hppa2.0-hp
770c30f5000Smrg		cpu=hppa1.1
771c30f5000Smrg		vendor=hp
772e0963edeSmrg		;;
773e0963edeSmrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
774e0963edeSmrg		# FIXME: really hppa2.0-hp
775c30f5000Smrg		cpu=hppa1.1
776c30f5000Smrg		vendor=hp
777e0963edeSmrg		;;
778e0963edeSmrg	hp9k8[0-9][13679] | hp8[0-9][13679])
779c30f5000Smrg		cpu=hppa1.1
780c30f5000Smrg		vendor=hp
781e0963edeSmrg		;;
782e0963edeSmrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
783c30f5000Smrg		cpu=hppa1.0
784c30f5000Smrg		vendor=hp
785e0963edeSmrg		;;
786e0963edeSmrg	i*86v32)
787c30f5000Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
788c30f5000Smrg		vendor=pc
789c30f5000Smrg		basic_os=sysv32
790e0963edeSmrg		;;
791e0963edeSmrg	i*86v4*)
792c30f5000Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
793c30f5000Smrg		vendor=pc
794c30f5000Smrg		basic_os=sysv4
795e0963edeSmrg		;;
796e0963edeSmrg	i*86v)
797c30f5000Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
798c30f5000Smrg		vendor=pc
799c30f5000Smrg		basic_os=sysv
800e0963edeSmrg		;;
801e0963edeSmrg	i*86sol2)
802c30f5000Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
803c30f5000Smrg		vendor=pc
804c30f5000Smrg		basic_os=solaris2
805e0963edeSmrg		;;
806c30f5000Smrg	j90 | j90-cray)
807c30f5000Smrg		cpu=j90
808c30f5000Smrg		vendor=cray
809c30f5000Smrg		basic_os=${basic_os:-unicos}
810e0963edeSmrg		;;
811e0963edeSmrg	iris | iris4d)
812c30f5000Smrg		cpu=mips
813c30f5000Smrg		vendor=sgi
814c30f5000Smrg		case $basic_os in
815c30f5000Smrg		    irix*)
816e0963edeSmrg			;;
817e0963edeSmrg		    *)
818c30f5000Smrg			basic_os=irix4
819e0963edeSmrg			;;
820e0963edeSmrg		esac
821e0963edeSmrg		;;
822e0963edeSmrg	miniframe)
823c30f5000Smrg		cpu=m68000
824c30f5000Smrg		vendor=convergent
825e0963edeSmrg		;;
826c30f5000Smrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
827c30f5000Smrg		cpu=m68k
828c30f5000Smrg		vendor=atari
829c30f5000Smrg		basic_os=mint
830e0963edeSmrg		;;
831e0963edeSmrg	news-3600 | risc-news)
832c30f5000Smrg		cpu=mips
833c30f5000Smrg		vendor=sony
834c30f5000Smrg		basic_os=newsos
835c30f5000Smrg		;;
836c30f5000Smrg	next | m*-next)
837c30f5000Smrg		cpu=m68k
838c30f5000Smrg		vendor=next
839c30f5000Smrg		case $basic_os in
840c30f5000Smrg		    openstep*)
841c30f5000Smrg		        ;;
842c30f5000Smrg		    nextstep*)
843e0963edeSmrg			;;
844c30f5000Smrg		    ns2*)
845c30f5000Smrg		      basic_os=nextstep2
846e0963edeSmrg			;;
847e0963edeSmrg		    *)
848c30f5000Smrg		      basic_os=nextstep3
849e0963edeSmrg			;;
850e0963edeSmrg		esac
851e0963edeSmrg		;;
852e0963edeSmrg	np1)
853c30f5000Smrg		cpu=np1
854c30f5000Smrg		vendor=gould
855b3a827e2Smrg		;;
856e0963edeSmrg	op50n-* | op60c-*)
857c30f5000Smrg		cpu=hppa1.1
858c30f5000Smrg		vendor=oki
859c30f5000Smrg		basic_os=proelf
860e0963edeSmrg		;;
861e0963edeSmrg	pa-hitachi)
862c30f5000Smrg		cpu=hppa1.1
863c30f5000Smrg		vendor=hitachi
864c30f5000Smrg		basic_os=hiuxwe2
865f05b35a2Smrg		;;
866e0963edeSmrg	pbd)
867c30f5000Smrg		cpu=sparc
868c30f5000Smrg		vendor=tti
869e0963edeSmrg		;;
870e0963edeSmrg	pbb)
871c30f5000Smrg		cpu=m68k
872c30f5000Smrg		vendor=tti
873e0963edeSmrg		;;
874c30f5000Smrg	pc532)
875c30f5000Smrg		cpu=ns32k
876c30f5000Smrg		vendor=pc532
877e0963edeSmrg		;;
878e0963edeSmrg	pn)
879c30f5000Smrg		cpu=pn
880c30f5000Smrg		vendor=gould
881e0963edeSmrg		;;
882c30f5000Smrg	power)
883c30f5000Smrg		cpu=power
884c30f5000Smrg		vendor=ibm
885e0963edeSmrg		;;
886e0963edeSmrg	ps2)
887c30f5000Smrg		cpu=i386
888c30f5000Smrg		vendor=ibm
889e0963edeSmrg		;;
890e0963edeSmrg	rm[46]00)
891c30f5000Smrg		cpu=mips
892c30f5000Smrg		vendor=siemens
893e0963edeSmrg		;;
894e0963edeSmrg	rtpc | rtpc-*)
895c30f5000Smrg		cpu=romp
896c30f5000Smrg		vendor=ibm
897e0963edeSmrg		;;
898e0963edeSmrg	sde)
899c30f5000Smrg		cpu=mipsisa32
900c30f5000Smrg		vendor=sde
901c30f5000Smrg		basic_os=${basic_os:-elf}
902e0963edeSmrg		;;
903c30f5000Smrg	simso-wrs)
904c30f5000Smrg		cpu=sparclite
905c30f5000Smrg		vendor=wrs
906c30f5000Smrg		basic_os=vxworks
907e0963edeSmrg		;;
908c30f5000Smrg	tower | tower-32)
909c30f5000Smrg		cpu=m68k
910c30f5000Smrg		vendor=ncr
911e0963edeSmrg		;;
912c30f5000Smrg	vpp*|vx|vx-*)
913c30f5000Smrg		cpu=f301
914c30f5000Smrg		vendor=fujitsu
915e0963edeSmrg		;;
916c30f5000Smrg	w65)
917c30f5000Smrg		cpu=w65
918c30f5000Smrg		vendor=wdc
919e0963edeSmrg		;;
920c30f5000Smrg	w89k-*)
921c30f5000Smrg		cpu=hppa1.1
922c30f5000Smrg		vendor=winbond
923c30f5000Smrg		basic_os=proelf
924e0963edeSmrg		;;
925c30f5000Smrg	none)
926c30f5000Smrg		cpu=none
927c30f5000Smrg		vendor=none
928e0963edeSmrg		;;
929c30f5000Smrg	leon|leon[3-9])
930c30f5000Smrg		cpu=sparc
931c30f5000Smrg		vendor=$basic_machine
932e0963edeSmrg		;;
933c30f5000Smrg	leon-*|leon[3-9]-*)
934c30f5000Smrg		cpu=sparc
935c30f5000Smrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
936e0963edeSmrg		;;
937c30f5000Smrg
938c30f5000Smrg	*-*)
939c30f5000Smrg		# shellcheck disable=SC2162
940c30f5000Smrg		saved_IFS=$IFS
941c30f5000Smrg		IFS="-" read cpu vendor <<EOF
942c30f5000Smrg$basic_machine
943c30f5000SmrgEOF
944c30f5000Smrg		IFS=$saved_IFS
945e0963edeSmrg		;;
946c30f5000Smrg	# We use `pc' rather than `unknown'
947c30f5000Smrg	# because (1) that's what they normally are, and
948c30f5000Smrg	# (2) the word "unknown" tends to confuse beginning users.
949c30f5000Smrg	i*86 | x86_64)
950c30f5000Smrg		cpu=$basic_machine
951c30f5000Smrg		vendor=pc
952e0963edeSmrg		;;
953c30f5000Smrg	# These rules are duplicated from below for sake of the special case above;
954c30f5000Smrg	# i.e. things that normalized to x86 arches should also default to "pc"
955c30f5000Smrg	pc98)
956c30f5000Smrg		cpu=i386
957c30f5000Smrg		vendor=pc
958e494fffdSmrg		;;
959c30f5000Smrg	x64 | amd64)
960c30f5000Smrg		cpu=x86_64
961c30f5000Smrg		vendor=pc
962e0963edeSmrg		;;
963c30f5000Smrg	# Recognize the basic CPU types without company name.
964c30f5000Smrg	*)
965c30f5000Smrg		cpu=$basic_machine
966c30f5000Smrg		vendor=unknown
967e0963edeSmrg		;;
968c30f5000Smrgesac
969c30f5000Smrg
970c30f5000Smrgunset -v basic_machine
971c30f5000Smrg
972c30f5000Smrg# Decode basic machines in the full and proper CPU-Company form.
973c30f5000Smrgcase $cpu-$vendor in
974c30f5000Smrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
975c30f5000Smrg	# some cases the only manufacturer, in others, it is the most popular.
976c30f5000Smrg	craynv-unknown)
977c30f5000Smrg		vendor=cray
978c30f5000Smrg		basic_os=${basic_os:-unicosmp}
979e0963edeSmrg		;;
980c30f5000Smrg	c90-unknown | c90-cray)
981c30f5000Smrg		vendor=cray
982c30f5000Smrg		basic_os=${Basic_os:-unicos}
983e0963edeSmrg		;;
984c30f5000Smrg	fx80-unknown)
985c30f5000Smrg		vendor=alliant
986e0963edeSmrg		;;
987c30f5000Smrg	romp-unknown)
988c30f5000Smrg		vendor=ibm
989e0963edeSmrg		;;
990c30f5000Smrg	mmix-unknown)
991c30f5000Smrg		vendor=knuth
992e0963edeSmrg		;;
993c30f5000Smrg	microblaze-unknown | microblazeel-unknown)
994c30f5000Smrg		vendor=xilinx
995e0963edeSmrg		;;
996c30f5000Smrg	rs6000-unknown)
997c30f5000Smrg		vendor=ibm
998e0963edeSmrg		;;
999c30f5000Smrg	vax-unknown)
1000c30f5000Smrg		vendor=dec
1001e0963edeSmrg		;;
1002c30f5000Smrg	pdp11-unknown)
1003c30f5000Smrg		vendor=dec
1004e0963edeSmrg		;;
1005c30f5000Smrg	we32k-unknown)
1006c30f5000Smrg		vendor=att
1007e0963edeSmrg		;;
1008c30f5000Smrg	cydra-unknown)
1009c30f5000Smrg		vendor=cydrome
1010e0963edeSmrg		;;
1011c30f5000Smrg	i370-ibm*)
1012c30f5000Smrg		vendor=ibm
1013e0963edeSmrg		;;
1014c30f5000Smrg	orion-unknown)
1015c30f5000Smrg		vendor=highlevel
1016e0963edeSmrg		;;
1017c30f5000Smrg	xps-unknown | xps100-unknown)
1018c30f5000Smrg		cpu=xps100
1019c30f5000Smrg		vendor=honeywell
1020f05b35a2Smrg		;;
1021c30f5000Smrg
1022c30f5000Smrg	# Here we normalize CPU types with a missing or matching vendor
1023c30f5000Smrg	dpx20-unknown | dpx20-bull)
1024c30f5000Smrg		cpu=rs6000
1025c30f5000Smrg		vendor=bull
1026c30f5000Smrg		basic_os=${basic_os:-bosx}
1027e0963edeSmrg		;;
1028c30f5000Smrg
1029c30f5000Smrg	# Here we normalize CPU types irrespective of the vendor
1030c30f5000Smrg	amd64-*)
1031c30f5000Smrg		cpu=x86_64
1032e0963edeSmrg		;;
1033c30f5000Smrg	blackfin-*)
1034c30f5000Smrg		cpu=bfin
1035c30f5000Smrg		basic_os=linux
1036e0963edeSmrg		;;
1037c30f5000Smrg	c54x-*)
1038c30f5000Smrg		cpu=tic54x
1039e0963edeSmrg		;;
1040c30f5000Smrg	c55x-*)
1041c30f5000Smrg		cpu=tic55x
1042e0963edeSmrg		;;
1043c30f5000Smrg	c6x-*)
1044c30f5000Smrg		cpu=tic6x
1045e0963edeSmrg		;;
1046c30f5000Smrg	e500v[12]-*)
1047c30f5000Smrg		cpu=powerpc
1048c30f5000Smrg		basic_os=${basic_os}"spe"
1049e0963edeSmrg		;;
1050c30f5000Smrg	mips3*-*)
1051c30f5000Smrg		cpu=mips64
1052e0963edeSmrg		;;
1053c30f5000Smrg	ms1-*)
1054c30f5000Smrg		cpu=mt
1055e0963edeSmrg		;;
1056c30f5000Smrg	m68knommu-*)
1057c30f5000Smrg		cpu=m68k
1058c30f5000Smrg		basic_os=linux
1059e0963edeSmrg		;;
1060c30f5000Smrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
1061c30f5000Smrg		cpu=s12z
1062e0963edeSmrg		;;
1063c30f5000Smrg	openrisc-*)
1064c30f5000Smrg		cpu=or32
1065e0963edeSmrg		;;
1066c30f5000Smrg	parisc-*)
1067c30f5000Smrg		cpu=hppa
1068c30f5000Smrg		basic_os=linux
1069e0963edeSmrg		;;
1070c30f5000Smrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
1071c30f5000Smrg		cpu=i586
1072e0963edeSmrg		;;
1073c30f5000Smrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
1074c30f5000Smrg		cpu=i686
1075b3a827e2Smrg		;;
1076c30f5000Smrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
1077c30f5000Smrg		cpu=i686
1078e0963edeSmrg		;;
1079c30f5000Smrg	pentium4-*)
1080c30f5000Smrg		cpu=i786
1081e0963edeSmrg		;;
1082c30f5000Smrg	pc98-*)
1083c30f5000Smrg		cpu=i386
1084e0963edeSmrg		;;
1085c30f5000Smrg	ppc-* | ppcbe-*)
1086c30f5000Smrg		cpu=powerpc
1087e0963edeSmrg		;;
1088c30f5000Smrg	ppcle-* | powerpclittle-*)
1089c30f5000Smrg		cpu=powerpcle
1090e494fffdSmrg		;;
1091c30f5000Smrg	ppc64-*)
1092c30f5000Smrg		cpu=powerpc64
1093e0963edeSmrg		;;
1094c30f5000Smrg	ppc64le-* | powerpc64little-*)
1095c30f5000Smrg		cpu=powerpc64le
1096e0963edeSmrg		;;
1097c30f5000Smrg	sb1-*)
1098c30f5000Smrg		cpu=mipsisa64sb1
1099f05b35a2Smrg		;;
1100c30f5000Smrg	sb1el-*)
1101c30f5000Smrg		cpu=mipsisa64sb1el
1102e0963edeSmrg		;;
1103c30f5000Smrg	sh5e[lb]-*)
1104c30f5000Smrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
1105e0963edeSmrg		;;
1106c30f5000Smrg	spur-*)
1107c30f5000Smrg		cpu=spur
1108e0963edeSmrg		;;
1109c30f5000Smrg	strongarm-* | thumb-*)
1110c30f5000Smrg		cpu=arm
1111e0963edeSmrg		;;
1112c30f5000Smrg	tx39-*)
1113c30f5000Smrg		cpu=mipstx39
1114e0963edeSmrg		;;
1115c30f5000Smrg	tx39el-*)
1116c30f5000Smrg		cpu=mipstx39el
1117e0963edeSmrg		;;
1118c30f5000Smrg	x64-*)
1119c30f5000Smrg		cpu=x86_64
1120e0963edeSmrg		;;
1121c30f5000Smrg	xscale-* | xscalee[bl]-*)
1122c30f5000Smrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
1123e0963edeSmrg		;;
1124c30f5000Smrg	arm64-*)
1125c30f5000Smrg		cpu=aarch64
1126e0963edeSmrg		;;
1127c30f5000Smrg
1128c30f5000Smrg	# Recognize the canonical CPU Types that limit and/or modify the
1129c30f5000Smrg	# company names they are paired with.
1130c30f5000Smrg	cr16-*)
1131c30f5000Smrg		basic_os=${basic_os:-elf}
1132e0963edeSmrg		;;
1133c30f5000Smrg	crisv32-* | etraxfs*-*)
1134c30f5000Smrg		cpu=crisv32
1135c30f5000Smrg		vendor=axis
1136e0963edeSmrg		;;
1137c30f5000Smrg	cris-* | etrax*-*)
1138c30f5000Smrg		cpu=cris
1139c30f5000Smrg		vendor=axis
1140e0963edeSmrg		;;
1141c30f5000Smrg	crx-*)
1142c30f5000Smrg		basic_os=${basic_os:-elf}
1143e0963edeSmrg		;;
1144c30f5000Smrg	neo-tandem)
1145c30f5000Smrg		cpu=neo
1146c30f5000Smrg		vendor=tandem
1147e0963edeSmrg		;;
1148c30f5000Smrg	nse-tandem)
1149c30f5000Smrg		cpu=nse
1150c30f5000Smrg		vendor=tandem
1151e0963edeSmrg		;;
1152c30f5000Smrg	nsr-tandem)
1153c30f5000Smrg		cpu=nsr
1154c30f5000Smrg		vendor=tandem
1155e0963edeSmrg		;;
1156c30f5000Smrg	nsv-tandem)
1157c30f5000Smrg		cpu=nsv
1158c30f5000Smrg		vendor=tandem
1159e0963edeSmrg		;;
1160c30f5000Smrg	nsx-tandem)
1161c30f5000Smrg		cpu=nsx
1162c30f5000Smrg		vendor=tandem
1163e0963edeSmrg		;;
1164c30f5000Smrg	mipsallegrexel-sony)
1165c30f5000Smrg		cpu=mipsallegrexel
1166c30f5000Smrg		vendor=sony
1167e0963edeSmrg		;;
1168c30f5000Smrg	tile*-*)
1169c30f5000Smrg		basic_os=${basic_os:-linux-gnu}
1170c30f5000Smrg		;;
1171c30f5000Smrg
1172e0963edeSmrg	*)
1173c30f5000Smrg		# Recognize the canonical CPU types that are allowed with any
1174c30f5000Smrg		# company name.
1175c30f5000Smrg		case $cpu in
1176c30f5000Smrg			1750a | 580 \
1177c30f5000Smrg			| a29k \
1178c30f5000Smrg			| aarch64 | aarch64_be \
1179c30f5000Smrg			| abacus \
1180c30f5000Smrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
1181c30f5000Smrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
1182c30f5000Smrg			| alphapca5[67] | alpha64pca5[67] \
1183c30f5000Smrg			| am33_2.0 \
1184c30f5000Smrg			| amdgcn \
1185c30f5000Smrg			| arc | arceb | arc32 | arc64 \
1186c30f5000Smrg			| arm | arm[lb]e | arme[lb] | armv* \
1187c30f5000Smrg			| avr | avr32 \
1188c30f5000Smrg			| asmjs \
1189c30f5000Smrg			| ba \
1190c30f5000Smrg			| be32 | be64 \
1191c30f5000Smrg			| bfin | bpf | bs2000 \
1192c30f5000Smrg			| c[123]* | c30 | [cjt]90 | c4x \
1193c30f5000Smrg			| c8051 | clipper | craynv | csky | cydra \
1194c30f5000Smrg			| d10v | d30v | dlx | dsp16xx \
1195c30f5000Smrg			| e2k | elxsi | epiphany \
1196c30f5000Smrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
1197c30f5000Smrg			| h8300 | h8500 \
1198c30f5000Smrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
1199c30f5000Smrg			| hexagon \
1200c30f5000Smrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
1201c30f5000Smrg			| ip2k | iq2000 \
1202c30f5000Smrg			| k1om \
1203c30f5000Smrg			| le32 | le64 \
1204c30f5000Smrg			| lm32 \
1205c30f5000Smrg			| loongarch32 | loongarch64 | loongarchx32 \
1206c30f5000Smrg			| m32c | m32r | m32rle \
1207c30f5000Smrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
1208c30f5000Smrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
1209c30f5000Smrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
1210c30f5000Smrg			| microblaze | microblazeel \
1211c30f5000Smrg			| mips | mipsbe | mipseb | mipsel | mipsle \
1212c30f5000Smrg			| mips16 \
1213c30f5000Smrg			| mips64 | mips64eb | mips64el \
1214c30f5000Smrg			| mips64octeon | mips64octeonel \
1215c30f5000Smrg			| mips64orion | mips64orionel \
1216c30f5000Smrg			| mips64r5900 | mips64r5900el \
1217c30f5000Smrg			| mips64vr | mips64vrel \
1218c30f5000Smrg			| mips64vr4100 | mips64vr4100el \
1219c30f5000Smrg			| mips64vr4300 | mips64vr4300el \
1220c30f5000Smrg			| mips64vr5000 | mips64vr5000el \
1221c30f5000Smrg			| mips64vr5900 | mips64vr5900el \
1222c30f5000Smrg			| mipsisa32 | mipsisa32el \
1223c30f5000Smrg			| mipsisa32r2 | mipsisa32r2el \
1224c30f5000Smrg			| mipsisa32r3 | mipsisa32r3el \
1225c30f5000Smrg			| mipsisa32r5 | mipsisa32r5el \
1226c30f5000Smrg			| mipsisa32r6 | mipsisa32r6el \
1227c30f5000Smrg			| mipsisa64 | mipsisa64el \
1228c30f5000Smrg			| mipsisa64r2 | mipsisa64r2el \
1229c30f5000Smrg			| mipsisa64r3 | mipsisa64r3el \
1230c30f5000Smrg			| mipsisa64r5 | mipsisa64r5el \
1231c30f5000Smrg			| mipsisa64r6 | mipsisa64r6el \
1232c30f5000Smrg			| mipsisa64sb1 | mipsisa64sb1el \
1233c30f5000Smrg			| mipsisa64sr71k | mipsisa64sr71kel \
1234c30f5000Smrg			| mipsr5900 | mipsr5900el \
1235c30f5000Smrg			| mipstx39 | mipstx39el \
1236c30f5000Smrg			| mmix \
1237c30f5000Smrg			| mn10200 | mn10300 \
1238c30f5000Smrg			| moxie \
1239c30f5000Smrg			| mt \
1240c30f5000Smrg			| msp430 \
1241c30f5000Smrg			| nds32 | nds32le | nds32be \
1242c30f5000Smrg			| nfp \
1243c30f5000Smrg			| nios | nios2 | nios2eb | nios2el \
1244c30f5000Smrg			| none | np1 | ns16k | ns32k | nvptx \
1245c30f5000Smrg			| open8 \
1246c30f5000Smrg			| or1k* \
1247c30f5000Smrg			| or32 \
1248c30f5000Smrg			| orion \
1249c30f5000Smrg			| picochip \
1250c30f5000Smrg			| pdp10 | pdp11 | pj | pjl | pn | power \
1251c30f5000Smrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
1252c30f5000Smrg			| pru \
1253c30f5000Smrg			| pyramid \
1254c30f5000Smrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
1255c30f5000Smrg			| rl78 | romp | rs6000 | rx \
1256c30f5000Smrg			| s390 | s390x \
1257c30f5000Smrg			| score \
1258c30f5000Smrg			| sh | shl \
1259c30f5000Smrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
1260c30f5000Smrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
1261c30f5000Smrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
1262c30f5000Smrg			| sparclite \
1263c30f5000Smrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
1264c30f5000Smrg			| spu \
1265c30f5000Smrg			| tahoe \
1266c30f5000Smrg			| thumbv7* \
1267c30f5000Smrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
1268c30f5000Smrg			| tron \
1269c30f5000Smrg			| ubicom32 \
1270c30f5000Smrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
1271c30f5000Smrg			| vax \
1272c30f5000Smrg			| visium \
1273c30f5000Smrg			| w65 \
1274c30f5000Smrg			| wasm32 | wasm64 \
1275c30f5000Smrg			| we32k \
1276c30f5000Smrg			| x86 | x86_64 | xc16x | xgate | xps100 \
1277c30f5000Smrg			| xstormy16 | xtensa* \
1278c30f5000Smrg			| ymp \
1279c30f5000Smrg			| z8k | z80)
1280c30f5000Smrg				;;
1281c30f5000Smrg
1282c30f5000Smrg			*)
1283c30f5000Smrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
1284c30f5000Smrg				exit 1
1285c30f5000Smrg				;;
1286c30f5000Smrg		esac
1287e0963edeSmrg		;;
1288e0963edeSmrgesac
1289e0963edeSmrg
1290e0963edeSmrg# Here we canonicalize certain aliases for manufacturers.
1291c30f5000Smrgcase $vendor in
1292c30f5000Smrg	digital*)
1293c30f5000Smrg		vendor=dec
1294e0963edeSmrg		;;
1295c30f5000Smrg	commodore*)
1296c30f5000Smrg		vendor=cbm
1297e0963edeSmrg		;;
1298e0963edeSmrg	*)
1299e0963edeSmrg		;;
1300e0963edeSmrgesac
1301e0963edeSmrg
1302e0963edeSmrg# Decode manufacturer-specific aliases for certain operating systems.
1303e0963edeSmrg
1304c30f5000Smrgif test x$basic_os != x
1305e0963edeSmrgthen
1306c30f5000Smrg
1307c30f5000Smrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
1308c30f5000Smrg# set os.
1309c30f5000Smrgcase $basic_os in
1310c30f5000Smrg	gnu/linux*)
1311c30f5000Smrg		kernel=linux
1312c30f5000Smrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
1313c30f5000Smrg		;;
1314c30f5000Smrg	os2-emx)
1315c30f5000Smrg		kernel=os2
1316c30f5000Smrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
1317c30f5000Smrg		;;
1318c30f5000Smrg	nto-qnx*)
1319c30f5000Smrg		kernel=nto
1320c30f5000Smrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
1321c30f5000Smrg		;;
1322c30f5000Smrg	*-*)
1323c30f5000Smrg		# shellcheck disable=SC2162
1324c30f5000Smrg		saved_IFS=$IFS
1325c30f5000Smrg		IFS="-" read kernel os <<EOF
1326c30f5000Smrg$basic_os
1327c30f5000SmrgEOF
1328c30f5000Smrg		IFS=$saved_IFS
1329c30f5000Smrg		;;
1330c30f5000Smrg	# Default OS when just kernel was specified
1331c30f5000Smrg	nto*)
1332c30f5000Smrg		kernel=nto
1333c30f5000Smrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
1334c30f5000Smrg		;;
1335c30f5000Smrg	linux*)
1336c30f5000Smrg		kernel=linux
1337c30f5000Smrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
133849e108a1Smrg		;;
1339c30f5000Smrg	*)
1340c30f5000Smrg		kernel=
1341c30f5000Smrg		os=$basic_os
1342e0963edeSmrg		;;
1343c30f5000Smrgesac
1344c30f5000Smrg
1345c30f5000Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
1346c30f5000Smrg# etc.)
1347c30f5000Smrgcase $os in
1348c30f5000Smrg	# First match some system type aliases that might get confused
1349c30f5000Smrg	# with valid system types.
1350c30f5000Smrg	# solaris* is a basic system type, with this one exception.
1351c30f5000Smrg	auroraux)
1352c30f5000Smrg		os=auroraux
1353e0963edeSmrg		;;
1354c30f5000Smrg	bluegene*)
1355c30f5000Smrg		os=cnk
1356e0963edeSmrg		;;
1357c30f5000Smrg	solaris1 | solaris1.*)
1358c30f5000Smrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
1359e0963edeSmrg		;;
1360c30f5000Smrg	solaris)
1361c30f5000Smrg		os=solaris2
1362e0963edeSmrg		;;
1363c30f5000Smrg	unixware*)
1364c30f5000Smrg		os=sysv4.2uw
1365e0963edeSmrg		;;
1366c30f5000Smrg	# es1800 is here to avoid being matched by es* (a different OS)
1367c30f5000Smrg	es1800*)
1368c30f5000Smrg		os=ose
1369e0963edeSmrg		;;
1370c30f5000Smrg	# Some version numbers need modification
1371c30f5000Smrg	chorusos*)
1372c30f5000Smrg		os=chorusos
1373e0963edeSmrg		;;
1374c30f5000Smrg	isc)
1375c30f5000Smrg		os=isc2.2
1376e0963edeSmrg		;;
1377c30f5000Smrg	sco6)
1378c30f5000Smrg		os=sco5v6
1379e0963edeSmrg		;;
1380c30f5000Smrg	sco5)
1381c30f5000Smrg		os=sco3.2v5
1382e0963edeSmrg		;;
1383c30f5000Smrg	sco4)
1384c30f5000Smrg		os=sco3.2v4
1385e0963edeSmrg		;;
1386c30f5000Smrg	sco3.2.[4-9]*)
1387c30f5000Smrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
1388e0963edeSmrg		;;
1389c30f5000Smrg	sco*v* | scout)
1390c30f5000Smrg		# Don't match below
1391e0963edeSmrg		;;
1392c30f5000Smrg	sco*)
1393c30f5000Smrg		os=sco3.2v2
1394e0963edeSmrg		;;
1395c30f5000Smrg	psos*)
1396c30f5000Smrg		os=psos
1397e0963edeSmrg		;;
1398c30f5000Smrg	qnx*)
1399c30f5000Smrg		os=qnx
1400e0963edeSmrg		;;
1401c30f5000Smrg	hiux*)
1402c30f5000Smrg		os=hiuxwe2
1403e0963edeSmrg		;;
1404c30f5000Smrg	lynx*178)
1405c30f5000Smrg		os=lynxos178
1406e0963edeSmrg		;;
1407c30f5000Smrg	lynx*5)
1408c30f5000Smrg		os=lynxos5
1409e0963edeSmrg		;;
1410c30f5000Smrg	lynxos*)
1411c30f5000Smrg		# don't get caught up in next wildcard
1412e0963edeSmrg		;;
1413c30f5000Smrg	lynx*)
1414c30f5000Smrg		os=lynxos
1415e0963edeSmrg		;;
1416c30f5000Smrg	mac[0-9]*)
1417c30f5000Smrg		os=`echo "$os" | sed -e 's|mac|macos|'`
1418e0963edeSmrg		;;
1419c30f5000Smrg	opened*)
1420c30f5000Smrg		os=openedition
1421e0963edeSmrg		;;
1422c30f5000Smrg	os400*)
1423c30f5000Smrg		os=os400
1424e0963edeSmrg		;;
1425c30f5000Smrg	sunos5*)
1426c30f5000Smrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
1427e0963edeSmrg		;;
1428c30f5000Smrg	sunos6*)
1429c30f5000Smrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
1430e0963edeSmrg		;;
1431c30f5000Smrg	wince*)
1432c30f5000Smrg		os=wince
1433e0963edeSmrg		;;
1434c30f5000Smrg	utek*)
1435c30f5000Smrg		os=bsd
1436e0963edeSmrg		;;
1437c30f5000Smrg	dynix*)
1438c30f5000Smrg		os=bsd
1439e0963edeSmrg		;;
1440c30f5000Smrg	acis*)
1441c30f5000Smrg		os=aos
1442e0963edeSmrg		;;
1443c30f5000Smrg	atheos*)
1444c30f5000Smrg		os=atheos
1445e0963edeSmrg		;;
1446c30f5000Smrg	syllable*)
1447c30f5000Smrg		os=syllable
1448e0963edeSmrg		;;
1449c30f5000Smrg	386bsd)
1450c30f5000Smrg		os=bsd
1451e0963edeSmrg		;;
1452c30f5000Smrg	ctix* | uts*)
1453c30f5000Smrg		os=sysv
1454e0963edeSmrg		;;
1455c30f5000Smrg	nova*)
1456c30f5000Smrg		os=rtmk-nova
1457e0963edeSmrg		;;
1458c30f5000Smrg	ns2)
1459c30f5000Smrg		os=nextstep2
1460e0963edeSmrg		;;
1461c30f5000Smrg	# Preserve the version number of sinix5.
1462c30f5000Smrg	sinix5.*)
1463c30f5000Smrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
1464e0963edeSmrg		;;
1465c30f5000Smrg	sinix*)
1466c30f5000Smrg		os=sysv4
1467e0963edeSmrg		;;
1468c30f5000Smrg	tpf*)
1469c30f5000Smrg		os=tpf
1470e0963edeSmrg		;;
1471c30f5000Smrg	triton*)
1472c30f5000Smrg		os=sysv3
1473e0963edeSmrg		;;
1474c30f5000Smrg	oss*)
1475c30f5000Smrg		os=sysv3
1476e0963edeSmrg		;;
1477c30f5000Smrg	svr4*)
1478c30f5000Smrg		os=sysv4
1479e0963edeSmrg		;;
1480c30f5000Smrg	svr3)
1481c30f5000Smrg		os=sysv3
1482e0963edeSmrg		;;
1483c30f5000Smrg	sysvr4)
1484c30f5000Smrg		os=sysv4
1485f05b35a2Smrg		;;
1486c30f5000Smrg	ose*)
1487c30f5000Smrg		os=ose
1488e494fffdSmrg		;;
1489c30f5000Smrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
1490c30f5000Smrg		os=mint
1491b3a827e2Smrg		;;
1492c30f5000Smrg	dicos*)
1493c30f5000Smrg		os=dicos
1494c30f5000Smrg		;;
1495c30f5000Smrg	pikeos*)
1496c30f5000Smrg		# Until real need of OS specific support for
1497c30f5000Smrg		# particular features comes up, bare metal
1498c30f5000Smrg		# configurations are quite functional.
1499c30f5000Smrg		case $cpu in
1500c30f5000Smrg		    arm*)
1501c30f5000Smrg			os=eabi
1502c30f5000Smrg			;;
1503c30f5000Smrg		    *)
1504c30f5000Smrg			os=elf
1505c30f5000Smrg			;;
1506c30f5000Smrg		esac
1507e0963edeSmrg		;;
1508e0963edeSmrg	*)
1509c30f5000Smrg		# No normalization, but not necessarily accepted, that comes below.
1510e0963edeSmrg		;;
1511e0963edeSmrgesac
1512c30f5000Smrg
1513e0963edeSmrgelse
1514e0963edeSmrg
1515e0963edeSmrg# Here we handle the default operating systems that come with various machines.
1516e0963edeSmrg# The value should be what the vendor currently ships out the door with their
1517e0963edeSmrg# machine or put another way, the most popular os provided with the machine.
1518e0963edeSmrg
1519e0963edeSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
1520e0963edeSmrg# "-sun"), then you have to tell the case statement up towards the top
1521e0963edeSmrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
1522e0963edeSmrg# will signal an error saying that MANUFACTURER isn't an operating
1523e0963edeSmrg# system, and we'll never get to this point.
1524e0963edeSmrg
1525c30f5000Smrgkernel=
1526c30f5000Smrgcase $cpu-$vendor in
1527e494fffdSmrg	score-*)
1528c30f5000Smrg		os=elf
1529e0963edeSmrg		;;
1530e494fffdSmrg	spu-*)
1531c30f5000Smrg		os=elf
1532e0963edeSmrg		;;
1533e0963edeSmrg	*-acorn)
1534c30f5000Smrg		os=riscix1.2
1535e0963edeSmrg		;;
1536e0963edeSmrg	arm*-rebel)
1537c30f5000Smrg		kernel=linux
1538c30f5000Smrg		os=gnu
1539e0963edeSmrg		;;
1540e0963edeSmrg	arm*-semi)
1541c30f5000Smrg		os=aout
1542e0963edeSmrg		;;
1543e494fffdSmrg	c4x-* | tic4x-*)
1544c30f5000Smrg		os=coff
1545e494fffdSmrg		;;
1546b3a827e2Smrg	c8051-*)
1547c30f5000Smrg		os=elf
1548c30f5000Smrg		;;
1549c30f5000Smrg	clipper-intergraph)
1550c30f5000Smrg		os=clix
1551b3a827e2Smrg		;;
1552e494fffdSmrg	hexagon-*)
1553c30f5000Smrg		os=elf
1554e0963edeSmrg		;;
155549e108a1Smrg	tic54x-*)
1556c30f5000Smrg		os=coff
155749e108a1Smrg		;;
155849e108a1Smrg	tic55x-*)
1559c30f5000Smrg		os=coff
156049e108a1Smrg		;;
156149e108a1Smrg	tic6x-*)
1562c30f5000Smrg		os=coff
156349e108a1Smrg		;;
1564e0963edeSmrg	# This must come before the *-dec entry.
1565e0963edeSmrg	pdp10-*)
1566c30f5000Smrg		os=tops20
1567e0963edeSmrg		;;
1568e0963edeSmrg	pdp11-*)
1569c30f5000Smrg		os=none
1570e0963edeSmrg		;;
1571e0963edeSmrg	*-dec | vax-*)
1572c30f5000Smrg		os=ultrix4.2
1573e0963edeSmrg		;;
1574e0963edeSmrg	m68*-apollo)
1575c30f5000Smrg		os=domain
1576e0963edeSmrg		;;
1577e0963edeSmrg	i386-sun)
1578c30f5000Smrg		os=sunos4.0.2
1579e0963edeSmrg		;;
1580e0963edeSmrg	m68000-sun)
1581c30f5000Smrg		os=sunos3
1582e0963edeSmrg		;;
1583e0963edeSmrg	m68*-cisco)
1584c30f5000Smrg		os=aout
1585e0963edeSmrg		;;
1586e494fffdSmrg	mep-*)
1587c30f5000Smrg		os=elf
1588e0963edeSmrg		;;
1589e0963edeSmrg	mips*-cisco)
1590c30f5000Smrg		os=elf
1591e0963edeSmrg		;;
1592e0963edeSmrg	mips*-*)
1593c30f5000Smrg		os=elf
1594e0963edeSmrg		;;
1595e0963edeSmrg	or32-*)
1596c30f5000Smrg		os=coff
1597e0963edeSmrg		;;
1598e0963edeSmrg	*-tti)	# must be before sparc entry or we get the wrong os.
1599c30f5000Smrg		os=sysv3
1600e0963edeSmrg		;;
1601e0963edeSmrg	sparc-* | *-sun)
1602c30f5000Smrg		os=sunos4.1.1
1603e0963edeSmrg		;;
1604b3a827e2Smrg	pru-*)
1605c30f5000Smrg		os=elf
1606b3a827e2Smrg		;;
1607e0963edeSmrg	*-be)
1608c30f5000Smrg		os=beos
1609e0963edeSmrg		;;
1610e0963edeSmrg	*-ibm)
1611c30f5000Smrg		os=aix
1612e0963edeSmrg		;;
1613e494fffdSmrg	*-knuth)
1614c30f5000Smrg		os=mmixware
1615e0963edeSmrg		;;
1616e0963edeSmrg	*-wec)
1617c30f5000Smrg		os=proelf
1618e0963edeSmrg		;;
1619e0963edeSmrg	*-winbond)
1620c30f5000Smrg		os=proelf
1621e0963edeSmrg		;;
1622e0963edeSmrg	*-oki)
1623c30f5000Smrg		os=proelf
1624e0963edeSmrg		;;
1625e0963edeSmrg	*-hp)
1626c30f5000Smrg		os=hpux
1627e0963edeSmrg		;;
1628e0963edeSmrg	*-hitachi)
1629c30f5000Smrg		os=hiux
1630e0963edeSmrg		;;
1631e0963edeSmrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
1632c30f5000Smrg		os=sysv
1633e0963edeSmrg		;;
1634e0963edeSmrg	*-cbm)
1635c30f5000Smrg		os=amigaos
1636e0963edeSmrg		;;
1637e0963edeSmrg	*-dg)
1638c30f5000Smrg		os=dgux
1639e0963edeSmrg		;;
1640e0963edeSmrg	*-dolphin)
1641c30f5000Smrg		os=sysv3
1642e0963edeSmrg		;;
1643e0963edeSmrg	m68k-ccur)
1644c30f5000Smrg		os=rtu
1645e0963edeSmrg		;;
1646e0963edeSmrg	m88k-omron*)
1647c30f5000Smrg		os=luna
1648e0963edeSmrg		;;
1649c30f5000Smrg	*-next)
1650c30f5000Smrg		os=nextstep
1651e0963edeSmrg		;;
1652e0963edeSmrg	*-sequent)
1653c30f5000Smrg		os=ptx
1654e0963edeSmrg		;;
1655e0963edeSmrg	*-crds)
1656c30f5000Smrg		os=unos
1657e0963edeSmrg		;;
1658e0963edeSmrg	*-ns)
1659c30f5000Smrg		os=genix
1660e0963edeSmrg		;;
1661e0963edeSmrg	i370-*)
1662c30f5000Smrg		os=mvs
1663e0963edeSmrg		;;
1664e0963edeSmrg	*-gould)
1665c30f5000Smrg		os=sysv
1666e0963edeSmrg		;;
1667e0963edeSmrg	*-highlevel)
1668c30f5000Smrg		os=bsd
1669e0963edeSmrg		;;
1670e0963edeSmrg	*-encore)
1671c30f5000Smrg		os=bsd
1672e0963edeSmrg		;;
1673e0963edeSmrg	*-sgi)
1674c30f5000Smrg		os=irix
1675e0963edeSmrg		;;
1676e0963edeSmrg	*-siemens)
1677c30f5000Smrg		os=sysv4
1678e0963edeSmrg		;;
1679e0963edeSmrg	*-masscomp)
1680c30f5000Smrg		os=rtu
1681e0963edeSmrg		;;
1682e0963edeSmrg	f30[01]-fujitsu | f700-fujitsu)
1683c30f5000Smrg		os=uxpv
1684e0963edeSmrg		;;
1685e0963edeSmrg	*-rom68k)
1686c30f5000Smrg		os=coff
1687e0963edeSmrg		;;
1688e0963edeSmrg	*-*bug)
1689c30f5000Smrg		os=coff
1690e0963edeSmrg		;;
1691e0963edeSmrg	*-apple)
1692c30f5000Smrg		os=macos
1693e0963edeSmrg		;;
1694e0963edeSmrg	*-atari*)
1695c30f5000Smrg		os=mint
1696c30f5000Smrg		;;
1697c30f5000Smrg	*-wrs)
1698c30f5000Smrg		os=vxworks
1699e0963edeSmrg		;;
1700e0963edeSmrg	*)
1701c30f5000Smrg		os=none
1702e0963edeSmrg		;;
1703e0963edeSmrgesac
1704c30f5000Smrg
1705e0963edeSmrgfi
1706e0963edeSmrg
1707c30f5000Smrg# Now, validate our (potentially fixed-up) OS.
1708c30f5000Smrgcase $os in
1709c30f5000Smrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
1710c30f5000Smrg	musl* | newlib* | relibc* | uclibc*)
1711c30f5000Smrg		;;
1712c30f5000Smrg	# Likewise for "kernel-abi"
1713c30f5000Smrg	eabi* | gnueabi*)
1714c30f5000Smrg		;;
1715c30f5000Smrg	# VxWorks passes extra cpu info in the 4th filed.
1716c30f5000Smrg	simlinux | simwindows | spe)
1717c30f5000Smrg		;;
1718c30f5000Smrg	# Now accept the basic system types.
1719c30f5000Smrg	# The portable systems comes first.
1720c30f5000Smrg	# Each alternative MUST end in a * to match a version number.
1721c30f5000Smrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
1722c30f5000Smrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
1723c30f5000Smrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
1724c30f5000Smrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
1725c30f5000Smrg	     | hiux* | abug | nacl* | netware* | windows* \
1726c30f5000Smrg	     | os9* | macos* | osx* | ios* \
1727c30f5000Smrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
1728c30f5000Smrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
1729c30f5000Smrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
1730c30f5000Smrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
1731c30f5000Smrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
1732c30f5000Smrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
1733c30f5000Smrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
1734c30f5000Smrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
1735c30f5000Smrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
1736c30f5000Smrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
1737c30f5000Smrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
1738c30f5000Smrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
1739c30f5000Smrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
1740c30f5000Smrg	     | midipix* | mingw32* | mingw64* | mint* \
1741c30f5000Smrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
1742c30f5000Smrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
1743c30f5000Smrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
1744c30f5000Smrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
1745c30f5000Smrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
1746c30f5000Smrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
1747c30f5000Smrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
1748c30f5000Smrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
1749c30f5000Smrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
1750c30f5000Smrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
1751c30f5000Smrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*)
1752c30f5000Smrg		;;
1753c30f5000Smrg	# This one is extra strict with allowed versions
1754c30f5000Smrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
1755c30f5000Smrg		# Don't forget version if it is 3.2v4 or newer.
1756c30f5000Smrg		;;
1757c30f5000Smrg	none)
1758c30f5000Smrg		;;
1759c30f5000Smrg	*)
1760c30f5000Smrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
1761c30f5000Smrg		exit 1
1762c30f5000Smrg		;;
1763c30f5000Smrgesac
1764c30f5000Smrg
1765c30f5000Smrg# As a final step for OS-related things, validate the OS-kernel combination
1766c30f5000Smrg# (given a valid OS), if there is a kernel.
1767c30f5000Smrgcase $kernel-$os in
1768c30f5000Smrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
1769c30f5000Smrg		   | linux-musl* | linux-relibc* | linux-uclibc* )
1770c30f5000Smrg		;;
1771c30f5000Smrg	uclinux-uclibc* )
1772c30f5000Smrg		;;
1773c30f5000Smrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
1774c30f5000Smrg		# These are just libc implementations, not actual OSes, and thus
1775c30f5000Smrg		# require a kernel.
1776c30f5000Smrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
1777c30f5000Smrg		exit 1
1778c30f5000Smrg		;;
1779c30f5000Smrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
1780c30f5000Smrg		;;
1781c30f5000Smrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
1782c30f5000Smrg		;;
1783c30f5000Smrg	nto-qnx*)
1784c30f5000Smrg		;;
1785c30f5000Smrg	os2-emx)
1786c30f5000Smrg		;;
1787c30f5000Smrg	*-eabi* | *-gnueabi*)
1788c30f5000Smrg		;;
1789c30f5000Smrg	-*)
1790c30f5000Smrg		# Blank kernel with real OS is always fine.
1791c30f5000Smrg		;;
1792c30f5000Smrg	*-*)
1793c30f5000Smrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
1794c30f5000Smrg		exit 1
1795c30f5000Smrg		;;
1796c30f5000Smrgesac
1797c30f5000Smrg
1798e0963edeSmrg# Here we handle the case where we know the os, and the CPU type, but not the
1799e0963edeSmrg# manufacturer.  We pick the logical manufacturer.
1800c30f5000Smrgcase $vendor in
1801c30f5000Smrg	unknown)
1802c30f5000Smrg		case $cpu-$os in
1803c30f5000Smrg			*-riscix*)
1804e0963edeSmrg				vendor=acorn
1805e0963edeSmrg				;;
1806c30f5000Smrg			*-sunos*)
1807e0963edeSmrg				vendor=sun
1808e0963edeSmrg				;;
1809c30f5000Smrg			*-cnk* | *-aix*)
1810e0963edeSmrg				vendor=ibm
1811e0963edeSmrg				;;
1812c30f5000Smrg			*-beos*)
1813e0963edeSmrg				vendor=be
1814e0963edeSmrg				;;
1815c30f5000Smrg			*-hpux*)
1816e0963edeSmrg				vendor=hp
1817e0963edeSmrg				;;
1818c30f5000Smrg			*-mpeix*)
1819e0963edeSmrg				vendor=hp
1820e0963edeSmrg				;;
1821c30f5000Smrg			*-hiux*)
1822e0963edeSmrg				vendor=hitachi
1823e0963edeSmrg				;;
1824c30f5000Smrg			*-unos*)
1825e0963edeSmrg				vendor=crds
1826e0963edeSmrg				;;
1827c30f5000Smrg			*-dgux*)
1828e0963edeSmrg				vendor=dg
1829e0963edeSmrg				;;
1830c30f5000Smrg			*-luna*)
1831e0963edeSmrg				vendor=omron
1832e0963edeSmrg				;;
1833c30f5000Smrg			*-genix*)
1834e0963edeSmrg				vendor=ns
1835e0963edeSmrg				;;
1836c30f5000Smrg			*-clix*)
1837c30f5000Smrg				vendor=intergraph
1838c30f5000Smrg				;;
1839c30f5000Smrg			*-mvs* | *-opened*)
1840c30f5000Smrg				vendor=ibm
1841c30f5000Smrg				;;
1842c30f5000Smrg			*-os400*)
1843e0963edeSmrg				vendor=ibm
1844e0963edeSmrg				;;
1845c30f5000Smrg			s390-* | s390x-*)
1846e0963edeSmrg				vendor=ibm
1847e0963edeSmrg				;;
1848c30f5000Smrg			*-ptx*)
1849e0963edeSmrg				vendor=sequent
1850e0963edeSmrg				;;
1851c30f5000Smrg			*-tpf*)
1852e0963edeSmrg				vendor=ibm
1853e0963edeSmrg				;;
1854c30f5000Smrg			*-vxsim* | *-vxworks* | *-windiss*)
1855e0963edeSmrg				vendor=wrs
1856e0963edeSmrg				;;
1857c30f5000Smrg			*-aux*)
1858e0963edeSmrg				vendor=apple
1859e0963edeSmrg				;;
1860c30f5000Smrg			*-hms*)
1861e0963edeSmrg				vendor=hitachi
1862e0963edeSmrg				;;
1863c30f5000Smrg			*-mpw* | *-macos*)
1864e0963edeSmrg				vendor=apple
1865e0963edeSmrg				;;
1866c30f5000Smrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
1867e0963edeSmrg				vendor=atari
1868e0963edeSmrg				;;
1869c30f5000Smrg			*-vos*)
1870e0963edeSmrg				vendor=stratus
1871e0963edeSmrg				;;
1872e0963edeSmrg		esac
1873e0963edeSmrg		;;
1874e0963edeSmrgesac
1875e0963edeSmrg
1876c30f5000Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
1877e0963edeSmrgexit
1878e0963edeSmrg
1879e0963edeSmrg# Local variables:
1880c30f5000Smrg# eval: (add-hook 'before-save-hook 'time-stamp)
1881e0963edeSmrg# time-stamp-start: "timestamp='"
1882e0963edeSmrg# time-stamp-format: "%:y-%02m-%02d"
1883e0963edeSmrg# time-stamp-end: "'"
1884e0963edeSmrg# End:
1885