config.sub revision 38d718bd
133c89af1Smrg#! /bin/sh
233c89af1Smrg# Configuration validation subroutine script.
338d718bdSmrg#   Copyright 1992-2023 Free Software Foundation, Inc.
433c89af1Smrg
5352bf44eSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
6352bf44eSmrg
738d718bdSmrgtimestamp='2023-01-21'
833c89af1Smrg
9ad47b356Smrg# This file is free software; you can redistribute it and/or modify it
10ad47b356Smrg# under the terms of the GNU General Public License as published by
1138d718bdSmrg# the Free Software Foundation, either version 3 of the License, or
1233c89af1Smrg# (at your option) any later version.
1333c89af1Smrg#
14ad47b356Smrg# This program is distributed in the hope that it will be useful, but
15ad47b356Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
16ad47b356Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17ad47b356Smrg# General Public License for more details.
1833c89af1Smrg#
1933c89af1Smrg# You should have received a copy of the GNU General Public License
20352bf44eSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
2133c89af1Smrg#
2233c89af1Smrg# As a special exception to the GNU General Public License, if you
2333c89af1Smrg# distribute this file as part of a program that contains a
2433c89af1Smrg# configuration script generated by Autoconf, you may include it under
25ad47b356Smrg# the same distribution terms that you use for the rest of that
26ad47b356Smrg# program.  This Exception is an additional permission under section 7
27ad47b356Smrg# of the GNU General Public License, version 3 ("GPLv3").
2833c89af1Smrg
2933c89af1Smrg
30ad47b356Smrg# Please send patches to <config-patches@gnu.org>.
3133c89af1Smrg#
3233c89af1Smrg# Configuration subroutine to validate and canonicalize a configuration type.
3333c89af1Smrg# Supply the specified configuration type as an argument.
3433c89af1Smrg# If it is invalid, we print an error message on stderr and exit with code 1.
3533c89af1Smrg# Otherwise, we print the canonical config type on stdout and succeed.
3633c89af1Smrg
3716d8e44fSmrg# You can get the latest version of this script from:
38352bf44eSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
3916d8e44fSmrg
4033c89af1Smrg# This file is supposed to be the same for all GNU packages
4133c89af1Smrg# and recognize all the CPU types, system types and aliases
4233c89af1Smrg# that are meaningful with *any* GNU software.
4333c89af1Smrg# Each package is responsible for reporting which valid configurations
4433c89af1Smrg# it does not support.  The user should be able to distinguish
4533c89af1Smrg# a failure to support a valid configuration from a meaningless
4633c89af1Smrg# configuration.
4733c89af1Smrg
4833c89af1Smrg# The goal of this file is to map all the various variations of a given
4933c89af1Smrg# machine specification into a single specification in the form:
5033c89af1Smrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
5133c89af1Smrg# or in some cases, the newer four-part form:
5233c89af1Smrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
5333c89af1Smrg# It is wrong to echo any other type of specification.
5433c89af1Smrg
55352bf44eSmrg# The "shellcheck disable" line above the timestamp inhibits complaints
56352bf44eSmrg# about features and limitations of the classic Bourne shell that were
57352bf44eSmrg# superseded or lifted in POSIX.  However, this script identifies a wide
58352bf44eSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
59352bf44eSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still
60352bf44eSmrg# have a pre-POSIX /bin/sh.
61352bf44eSmrg
6233c89af1Smrgme=`echo "$0" | sed -e 's,.*/,,'`
6333c89af1Smrg
6433c89af1Smrgusage="\
65352bf44eSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
6633c89af1Smrg
6733c89af1SmrgCanonicalize a configuration name.
6833c89af1Smrg
69352bf44eSmrgOptions:
7033c89af1Smrg  -h, --help         print this help, then exit
7133c89af1Smrg  -t, --time-stamp   print date of last modification, then exit
7233c89af1Smrg  -v, --version      print version number, then exit
7333c89af1Smrg
7433c89af1SmrgReport bugs and patches to <config-patches@gnu.org>."
7533c89af1Smrg
7633c89af1Smrgversion="\
7733c89af1SmrgGNU config.sub ($timestamp)
7833c89af1Smrg
7938d718bdSmrgCopyright 1992-2023 Free Software Foundation, Inc.
8033c89af1Smrg
8133c89af1SmrgThis is free software; see the source for copying conditions.  There is NO
8233c89af1Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
8333c89af1Smrg
8433c89af1Smrghelp="
8533c89af1SmrgTry \`$me --help' for more information."
8633c89af1Smrg
8733c89af1Smrg# Parse command line
8833c89af1Smrgwhile test $# -gt 0 ; do
8933c89af1Smrg  case $1 in
9033c89af1Smrg    --time-stamp | --time* | -t )
9133c89af1Smrg       echo "$timestamp" ; exit ;;
9233c89af1Smrg    --version | -v )
9333c89af1Smrg       echo "$version" ; exit ;;
9433c89af1Smrg    --help | --h* | -h )
9533c89af1Smrg       echo "$usage"; exit ;;
9633c89af1Smrg    -- )     # Stop option processing
9733c89af1Smrg       shift; break ;;
9833c89af1Smrg    - )	# Use stdin as input.
9933c89af1Smrg       break ;;
10033c89af1Smrg    -* )
101352bf44eSmrg       echo "$me: invalid option $1$help" >&2
10233c89af1Smrg       exit 1 ;;
10333c89af1Smrg
10433c89af1Smrg    *local*)
10533c89af1Smrg       # First pass through any local machine types.
106352bf44eSmrg       echo "$1"
10733c89af1Smrg       exit ;;
10833c89af1Smrg
10933c89af1Smrg    * )
11033c89af1Smrg       break ;;
11133c89af1Smrg  esac
11233c89af1Smrgdone
11333c89af1Smrg
11433c89af1Smrgcase $# in
11533c89af1Smrg 0) echo "$me: missing argument$help" >&2
11633c89af1Smrg    exit 1;;
11733c89af1Smrg 1) ;;
11833c89af1Smrg *) echo "$me: too many arguments$help" >&2
11933c89af1Smrg    exit 1;;
12033c89af1Smrgesac
12133c89af1Smrg
122352bf44eSmrg# Split fields of configuration type
123352bf44eSmrg# shellcheck disable=SC2162
124352bf44eSmrgsaved_IFS=$IFS
125352bf44eSmrgIFS="-" read field1 field2 field3 field4 <<EOF
126352bf44eSmrg$1
127352bf44eSmrgEOF
128352bf44eSmrgIFS=$saved_IFS
12933c89af1Smrg
130352bf44eSmrg# Separate into logical components for further validation
131352bf44eSmrgcase $1 in
132352bf44eSmrg	*-*-*-*-*)
133352bf44eSmrg		echo Invalid configuration \`"$1"\': more than four components >&2
134352bf44eSmrg		exit 1
13533c89af1Smrg		;;
136352bf44eSmrg	*-*-*-*)
137352bf44eSmrg		basic_machine=$field1-$field2
138352bf44eSmrg		basic_os=$field3-$field4
13933c89af1Smrg		;;
140352bf44eSmrg	*-*-*)
141352bf44eSmrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
142352bf44eSmrg		# parts
143352bf44eSmrg		maybe_os=$field2-$field3
144352bf44eSmrg		case $maybe_os in
145352bf44eSmrg			nto-qnx* | linux-* | uclinux-uclibc* \
146352bf44eSmrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
147352bf44eSmrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
14838d718bdSmrg			| storm-chaos* | os2-emx* | rtmk-nova* | managarm-*)
149352bf44eSmrg				basic_machine=$field1
150352bf44eSmrg				basic_os=$maybe_os
151352bf44eSmrg				;;
152352bf44eSmrg			android-linux)
153352bf44eSmrg				basic_machine=$field1-unknown
154352bf44eSmrg				basic_os=linux-android
155352bf44eSmrg				;;
156352bf44eSmrg			*)
157352bf44eSmrg				basic_machine=$field1-$field2
158352bf44eSmrg				basic_os=$field3
159352bf44eSmrg				;;
160352bf44eSmrg		esac
16133c89af1Smrg		;;
162352bf44eSmrg	*-*)
163352bf44eSmrg		# A lone config we happen to match not fitting any pattern
164352bf44eSmrg		case $field1-$field2 in
165352bf44eSmrg			decstation-3100)
166352bf44eSmrg				basic_machine=mips-dec
167352bf44eSmrg				basic_os=
168352bf44eSmrg				;;
169352bf44eSmrg			*-*)
170352bf44eSmrg				# Second component is usually, but not always the OS
171352bf44eSmrg				case $field2 in
172352bf44eSmrg					# Prevent following clause from handling this valid os
173352bf44eSmrg					sun*os*)
174352bf44eSmrg						basic_machine=$field1
175352bf44eSmrg						basic_os=$field2
176352bf44eSmrg						;;
177352bf44eSmrg					zephyr*)
178352bf44eSmrg						basic_machine=$field1-unknown
179352bf44eSmrg						basic_os=$field2
180352bf44eSmrg						;;
181352bf44eSmrg					# Manufacturers
182352bf44eSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
183352bf44eSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
184352bf44eSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
185352bf44eSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
186352bf44eSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
187352bf44eSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
188352bf44eSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
189352bf44eSmrg					| microblaze* | sim | cisco \
190352bf44eSmrg					| oki | wec | wrs | winbond)
191352bf44eSmrg						basic_machine=$field1-$field2
192352bf44eSmrg						basic_os=
193352bf44eSmrg						;;
194352bf44eSmrg					*)
195352bf44eSmrg						basic_machine=$field1
196352bf44eSmrg						basic_os=$field2
197352bf44eSmrg						;;
198352bf44eSmrg				esac
199352bf44eSmrg			;;
200352bf44eSmrg		esac
20133c89af1Smrg		;;
202352bf44eSmrg	*)
203352bf44eSmrg		# Convert single-component short-hands not valid as part of
204352bf44eSmrg		# multi-component configurations.
205352bf44eSmrg		case $field1 in
206352bf44eSmrg			386bsd)
207352bf44eSmrg				basic_machine=i386-pc
208352bf44eSmrg				basic_os=bsd
209352bf44eSmrg				;;
210352bf44eSmrg			a29khif)
211352bf44eSmrg				basic_machine=a29k-amd
212352bf44eSmrg				basic_os=udi
213352bf44eSmrg				;;
214352bf44eSmrg			adobe68k)
215352bf44eSmrg				basic_machine=m68010-adobe
216352bf44eSmrg				basic_os=scout
217352bf44eSmrg				;;
218352bf44eSmrg			alliant)
219352bf44eSmrg				basic_machine=fx80-alliant
220352bf44eSmrg				basic_os=
221352bf44eSmrg				;;
222352bf44eSmrg			altos | altos3068)
223352bf44eSmrg				basic_machine=m68k-altos
224352bf44eSmrg				basic_os=
225352bf44eSmrg				;;
226352bf44eSmrg			am29k)
227352bf44eSmrg				basic_machine=a29k-none
228352bf44eSmrg				basic_os=bsd
229352bf44eSmrg				;;
230352bf44eSmrg			amdahl)
231352bf44eSmrg				basic_machine=580-amdahl
232352bf44eSmrg				basic_os=sysv
233352bf44eSmrg				;;
234352bf44eSmrg			amiga)
235352bf44eSmrg				basic_machine=m68k-unknown
236352bf44eSmrg				basic_os=
237352bf44eSmrg				;;
238352bf44eSmrg			amigaos | amigados)
239352bf44eSmrg				basic_machine=m68k-unknown
240352bf44eSmrg				basic_os=amigaos
241352bf44eSmrg				;;
242352bf44eSmrg			amigaunix | amix)
243352bf44eSmrg				basic_machine=m68k-unknown
244352bf44eSmrg				basic_os=sysv4
245352bf44eSmrg				;;
246352bf44eSmrg			apollo68)
247352bf44eSmrg				basic_machine=m68k-apollo
248352bf44eSmrg				basic_os=sysv
249352bf44eSmrg				;;
250352bf44eSmrg			apollo68bsd)
251352bf44eSmrg				basic_machine=m68k-apollo
252352bf44eSmrg				basic_os=bsd
253352bf44eSmrg				;;
254352bf44eSmrg			aros)
255352bf44eSmrg				basic_machine=i386-pc
256352bf44eSmrg				basic_os=aros
257352bf44eSmrg				;;
258352bf44eSmrg			aux)
259352bf44eSmrg				basic_machine=m68k-apple
260352bf44eSmrg				basic_os=aux
261352bf44eSmrg				;;
262352bf44eSmrg			balance)
263352bf44eSmrg				basic_machine=ns32k-sequent
264352bf44eSmrg				basic_os=dynix
265352bf44eSmrg				;;
266352bf44eSmrg			blackfin)
267352bf44eSmrg				basic_machine=bfin-unknown
268352bf44eSmrg				basic_os=linux
269352bf44eSmrg				;;
270352bf44eSmrg			cegcc)
271352bf44eSmrg				basic_machine=arm-unknown
272352bf44eSmrg				basic_os=cegcc
273352bf44eSmrg				;;
274352bf44eSmrg			convex-c1)
275352bf44eSmrg				basic_machine=c1-convex
276352bf44eSmrg				basic_os=bsd
277352bf44eSmrg				;;
278352bf44eSmrg			convex-c2)
279352bf44eSmrg				basic_machine=c2-convex
280352bf44eSmrg				basic_os=bsd
281352bf44eSmrg				;;
282352bf44eSmrg			convex-c32)
283352bf44eSmrg				basic_machine=c32-convex
284352bf44eSmrg				basic_os=bsd
285352bf44eSmrg				;;
286352bf44eSmrg			convex-c34)
287352bf44eSmrg				basic_machine=c34-convex
288352bf44eSmrg				basic_os=bsd
289352bf44eSmrg				;;
290352bf44eSmrg			convex-c38)
291352bf44eSmrg				basic_machine=c38-convex
292352bf44eSmrg				basic_os=bsd
293352bf44eSmrg				;;
294352bf44eSmrg			cray)
295352bf44eSmrg				basic_machine=j90-cray
296352bf44eSmrg				basic_os=unicos
297352bf44eSmrg				;;
298352bf44eSmrg			crds | unos)
299352bf44eSmrg				basic_machine=m68k-crds
300352bf44eSmrg				basic_os=
301352bf44eSmrg				;;
302352bf44eSmrg			da30)
303352bf44eSmrg				basic_machine=m68k-da30
304352bf44eSmrg				basic_os=
305352bf44eSmrg				;;
306352bf44eSmrg			decstation | pmax | pmin | dec3100 | decstatn)
307352bf44eSmrg				basic_machine=mips-dec
308352bf44eSmrg				basic_os=
309352bf44eSmrg				;;
310352bf44eSmrg			delta88)
311352bf44eSmrg				basic_machine=m88k-motorola
312352bf44eSmrg				basic_os=sysv3
313352bf44eSmrg				;;
314352bf44eSmrg			dicos)
315352bf44eSmrg				basic_machine=i686-pc
316352bf44eSmrg				basic_os=dicos
317352bf44eSmrg				;;
318352bf44eSmrg			djgpp)
319352bf44eSmrg				basic_machine=i586-pc
320352bf44eSmrg				basic_os=msdosdjgpp
321352bf44eSmrg				;;
322352bf44eSmrg			ebmon29k)
323352bf44eSmrg				basic_machine=a29k-amd
324352bf44eSmrg				basic_os=ebmon
325352bf44eSmrg				;;
326352bf44eSmrg			es1800 | OSE68k | ose68k | ose | OSE)
327352bf44eSmrg				basic_machine=m68k-ericsson
328352bf44eSmrg				basic_os=ose
329352bf44eSmrg				;;
330352bf44eSmrg			gmicro)
331352bf44eSmrg				basic_machine=tron-gmicro
332352bf44eSmrg				basic_os=sysv
333352bf44eSmrg				;;
334352bf44eSmrg			go32)
335352bf44eSmrg				basic_machine=i386-pc
336352bf44eSmrg				basic_os=go32
337352bf44eSmrg				;;
338352bf44eSmrg			h8300hms)
339352bf44eSmrg				basic_machine=h8300-hitachi
340352bf44eSmrg				basic_os=hms
341352bf44eSmrg				;;
342352bf44eSmrg			h8300xray)
343352bf44eSmrg				basic_machine=h8300-hitachi
344352bf44eSmrg				basic_os=xray
345352bf44eSmrg				;;
346352bf44eSmrg			h8500hms)
347352bf44eSmrg				basic_machine=h8500-hitachi
348352bf44eSmrg				basic_os=hms
349352bf44eSmrg				;;
350352bf44eSmrg			harris)
351352bf44eSmrg				basic_machine=m88k-harris
352352bf44eSmrg				basic_os=sysv3
353352bf44eSmrg				;;
354352bf44eSmrg			hp300 | hp300hpux)
355352bf44eSmrg				basic_machine=m68k-hp
356352bf44eSmrg				basic_os=hpux
357352bf44eSmrg				;;
358352bf44eSmrg			hp300bsd)
359352bf44eSmrg				basic_machine=m68k-hp
360352bf44eSmrg				basic_os=bsd
361352bf44eSmrg				;;
362352bf44eSmrg			hppaosf)
363352bf44eSmrg				basic_machine=hppa1.1-hp
364352bf44eSmrg				basic_os=osf
365352bf44eSmrg				;;
366352bf44eSmrg			hppro)
367352bf44eSmrg				basic_machine=hppa1.1-hp
368352bf44eSmrg				basic_os=proelf
369352bf44eSmrg				;;
370352bf44eSmrg			i386mach)
371352bf44eSmrg				basic_machine=i386-mach
372352bf44eSmrg				basic_os=mach
373352bf44eSmrg				;;
374352bf44eSmrg			isi68 | isi)
375352bf44eSmrg				basic_machine=m68k-isi
376352bf44eSmrg				basic_os=sysv
377352bf44eSmrg				;;
378352bf44eSmrg			m68knommu)
379352bf44eSmrg				basic_machine=m68k-unknown
380352bf44eSmrg				basic_os=linux
381352bf44eSmrg				;;
382352bf44eSmrg			magnum | m3230)
383352bf44eSmrg				basic_machine=mips-mips
384352bf44eSmrg				basic_os=sysv
385352bf44eSmrg				;;
386352bf44eSmrg			merlin)
387352bf44eSmrg				basic_machine=ns32k-utek
388352bf44eSmrg				basic_os=sysv
389352bf44eSmrg				;;
390352bf44eSmrg			mingw64)
391352bf44eSmrg				basic_machine=x86_64-pc
392352bf44eSmrg				basic_os=mingw64
393352bf44eSmrg				;;
394352bf44eSmrg			mingw32)
395352bf44eSmrg				basic_machine=i686-pc
396352bf44eSmrg				basic_os=mingw32
397352bf44eSmrg				;;
398352bf44eSmrg			mingw32ce)
399352bf44eSmrg				basic_machine=arm-unknown
400352bf44eSmrg				basic_os=mingw32ce
401352bf44eSmrg				;;
402352bf44eSmrg			monitor)
403352bf44eSmrg				basic_machine=m68k-rom68k
404352bf44eSmrg				basic_os=coff
405352bf44eSmrg				;;
406352bf44eSmrg			morphos)
407352bf44eSmrg				basic_machine=powerpc-unknown
408352bf44eSmrg				basic_os=morphos
409352bf44eSmrg				;;
410352bf44eSmrg			moxiebox)
411352bf44eSmrg				basic_machine=moxie-unknown
412352bf44eSmrg				basic_os=moxiebox
413352bf44eSmrg				;;
414352bf44eSmrg			msdos)
415352bf44eSmrg				basic_machine=i386-pc
416352bf44eSmrg				basic_os=msdos
417352bf44eSmrg				;;
418352bf44eSmrg			msys)
419352bf44eSmrg				basic_machine=i686-pc
420352bf44eSmrg				basic_os=msys
421352bf44eSmrg				;;
422352bf44eSmrg			mvs)
423352bf44eSmrg				basic_machine=i370-ibm
424352bf44eSmrg				basic_os=mvs
425352bf44eSmrg				;;
426352bf44eSmrg			nacl)
427352bf44eSmrg				basic_machine=le32-unknown
428352bf44eSmrg				basic_os=nacl
429352bf44eSmrg				;;
430352bf44eSmrg			ncr3000)
431352bf44eSmrg				basic_machine=i486-ncr
432352bf44eSmrg				basic_os=sysv4
433352bf44eSmrg				;;
434352bf44eSmrg			netbsd386)
435352bf44eSmrg				basic_machine=i386-pc
436352bf44eSmrg				basic_os=netbsd
437352bf44eSmrg				;;
438352bf44eSmrg			netwinder)
439352bf44eSmrg				basic_machine=armv4l-rebel
440352bf44eSmrg				basic_os=linux
441352bf44eSmrg				;;
442352bf44eSmrg			news | news700 | news800 | news900)
443352bf44eSmrg				basic_machine=m68k-sony
444352bf44eSmrg				basic_os=newsos
445352bf44eSmrg				;;
446352bf44eSmrg			news1000)
447352bf44eSmrg				basic_machine=m68030-sony
448352bf44eSmrg				basic_os=newsos
449352bf44eSmrg				;;
450352bf44eSmrg			necv70)
451352bf44eSmrg				basic_machine=v70-nec
452352bf44eSmrg				basic_os=sysv
453352bf44eSmrg				;;
454352bf44eSmrg			nh3000)
455352bf44eSmrg				basic_machine=m68k-harris
456352bf44eSmrg				basic_os=cxux
457352bf44eSmrg				;;
458352bf44eSmrg			nh[45]000)
459352bf44eSmrg				basic_machine=m88k-harris
460352bf44eSmrg				basic_os=cxux
461352bf44eSmrg				;;
462352bf44eSmrg			nindy960)
463352bf44eSmrg				basic_machine=i960-intel
464352bf44eSmrg				basic_os=nindy
465352bf44eSmrg				;;
466352bf44eSmrg			mon960)
467352bf44eSmrg				basic_machine=i960-intel
468352bf44eSmrg				basic_os=mon960
469352bf44eSmrg				;;
470352bf44eSmrg			nonstopux)
471352bf44eSmrg				basic_machine=mips-compaq
472352bf44eSmrg				basic_os=nonstopux
473352bf44eSmrg				;;
474352bf44eSmrg			os400)
475352bf44eSmrg				basic_machine=powerpc-ibm
476352bf44eSmrg				basic_os=os400
477352bf44eSmrg				;;
478352bf44eSmrg			OSE68000 | ose68000)
479352bf44eSmrg				basic_machine=m68000-ericsson
480352bf44eSmrg				basic_os=ose
481352bf44eSmrg				;;
482352bf44eSmrg			os68k)
483352bf44eSmrg				basic_machine=m68k-none
484352bf44eSmrg				basic_os=os68k
485352bf44eSmrg				;;
486352bf44eSmrg			paragon)
487352bf44eSmrg				basic_machine=i860-intel
488352bf44eSmrg				basic_os=osf
489352bf44eSmrg				;;
490352bf44eSmrg			parisc)
491352bf44eSmrg				basic_machine=hppa-unknown
492352bf44eSmrg				basic_os=linux
493352bf44eSmrg				;;
494352bf44eSmrg			psp)
495352bf44eSmrg				basic_machine=mipsallegrexel-sony
496352bf44eSmrg				basic_os=psp
497352bf44eSmrg				;;
498352bf44eSmrg			pw32)
499352bf44eSmrg				basic_machine=i586-unknown
500352bf44eSmrg				basic_os=pw32
501352bf44eSmrg				;;
502352bf44eSmrg			rdos | rdos64)
503352bf44eSmrg				basic_machine=x86_64-pc
504352bf44eSmrg				basic_os=rdos
505352bf44eSmrg				;;
506352bf44eSmrg			rdos32)
507352bf44eSmrg				basic_machine=i386-pc
508352bf44eSmrg				basic_os=rdos
509352bf44eSmrg				;;
510352bf44eSmrg			rom68k)
511352bf44eSmrg				basic_machine=m68k-rom68k
512352bf44eSmrg				basic_os=coff
513352bf44eSmrg				;;
514352bf44eSmrg			sa29200)
515352bf44eSmrg				basic_machine=a29k-amd
516352bf44eSmrg				basic_os=udi
517352bf44eSmrg				;;
518352bf44eSmrg			sei)
519352bf44eSmrg				basic_machine=mips-sei
520352bf44eSmrg				basic_os=seiux
521352bf44eSmrg				;;
522352bf44eSmrg			sequent)
523352bf44eSmrg				basic_machine=i386-sequent
524352bf44eSmrg				basic_os=
525352bf44eSmrg				;;
526352bf44eSmrg			sps7)
527352bf44eSmrg				basic_machine=m68k-bull
528352bf44eSmrg				basic_os=sysv2
529352bf44eSmrg				;;
530352bf44eSmrg			st2000)
531352bf44eSmrg				basic_machine=m68k-tandem
532352bf44eSmrg				basic_os=
533352bf44eSmrg				;;
534352bf44eSmrg			stratus)
535352bf44eSmrg				basic_machine=i860-stratus
536352bf44eSmrg				basic_os=sysv4
537352bf44eSmrg				;;
538352bf44eSmrg			sun2)
539352bf44eSmrg				basic_machine=m68000-sun
540352bf44eSmrg				basic_os=
541352bf44eSmrg				;;
542352bf44eSmrg			sun2os3)
543352bf44eSmrg				basic_machine=m68000-sun
544352bf44eSmrg				basic_os=sunos3
545352bf44eSmrg				;;
546352bf44eSmrg			sun2os4)
547352bf44eSmrg				basic_machine=m68000-sun
548352bf44eSmrg				basic_os=sunos4
549352bf44eSmrg				;;
550352bf44eSmrg			sun3)
551352bf44eSmrg				basic_machine=m68k-sun
552352bf44eSmrg				basic_os=
553352bf44eSmrg				;;
554352bf44eSmrg			sun3os3)
555352bf44eSmrg				basic_machine=m68k-sun
556352bf44eSmrg				basic_os=sunos3
557352bf44eSmrg				;;
558352bf44eSmrg			sun3os4)
559352bf44eSmrg				basic_machine=m68k-sun
560352bf44eSmrg				basic_os=sunos4
561352bf44eSmrg				;;
562352bf44eSmrg			sun4)
563352bf44eSmrg				basic_machine=sparc-sun
564352bf44eSmrg				basic_os=
565352bf44eSmrg				;;
566352bf44eSmrg			sun4os3)
567352bf44eSmrg				basic_machine=sparc-sun
568352bf44eSmrg				basic_os=sunos3
569352bf44eSmrg				;;
570352bf44eSmrg			sun4os4)
571352bf44eSmrg				basic_machine=sparc-sun
572352bf44eSmrg				basic_os=sunos4
573352bf44eSmrg				;;
574352bf44eSmrg			sun4sol2)
575352bf44eSmrg				basic_machine=sparc-sun
576352bf44eSmrg				basic_os=solaris2
577352bf44eSmrg				;;
578352bf44eSmrg			sun386 | sun386i | roadrunner)
579352bf44eSmrg				basic_machine=i386-sun
580352bf44eSmrg				basic_os=
581352bf44eSmrg				;;
582352bf44eSmrg			sv1)
583352bf44eSmrg				basic_machine=sv1-cray
584352bf44eSmrg				basic_os=unicos
585352bf44eSmrg				;;
586352bf44eSmrg			symmetry)
587352bf44eSmrg				basic_machine=i386-sequent
588352bf44eSmrg				basic_os=dynix
589352bf44eSmrg				;;
590352bf44eSmrg			t3e)
591352bf44eSmrg				basic_machine=alphaev5-cray
592352bf44eSmrg				basic_os=unicos
593352bf44eSmrg				;;
594352bf44eSmrg			t90)
595352bf44eSmrg				basic_machine=t90-cray
596352bf44eSmrg				basic_os=unicos
597352bf44eSmrg				;;
598352bf44eSmrg			toad1)
599352bf44eSmrg				basic_machine=pdp10-xkl
600352bf44eSmrg				basic_os=tops20
601352bf44eSmrg				;;
602352bf44eSmrg			tpf)
603352bf44eSmrg				basic_machine=s390x-ibm
604352bf44eSmrg				basic_os=tpf
605352bf44eSmrg				;;
606352bf44eSmrg			udi29k)
607352bf44eSmrg				basic_machine=a29k-amd
608352bf44eSmrg				basic_os=udi
609352bf44eSmrg				;;
610352bf44eSmrg			ultra3)
611352bf44eSmrg				basic_machine=a29k-nyu
612352bf44eSmrg				basic_os=sym1
613352bf44eSmrg				;;
614352bf44eSmrg			v810 | necv810)
615352bf44eSmrg				basic_machine=v810-nec
616352bf44eSmrg				basic_os=none
617352bf44eSmrg				;;
618352bf44eSmrg			vaxv)
619352bf44eSmrg				basic_machine=vax-dec
620352bf44eSmrg				basic_os=sysv
621352bf44eSmrg				;;
622352bf44eSmrg			vms)
623352bf44eSmrg				basic_machine=vax-dec
624352bf44eSmrg				basic_os=vms
625352bf44eSmrg				;;
626352bf44eSmrg			vsta)
627352bf44eSmrg				basic_machine=i386-pc
628352bf44eSmrg				basic_os=vsta
629352bf44eSmrg				;;
630352bf44eSmrg			vxworks960)
631352bf44eSmrg				basic_machine=i960-wrs
632352bf44eSmrg				basic_os=vxworks
633352bf44eSmrg				;;
634352bf44eSmrg			vxworks68)
635352bf44eSmrg				basic_machine=m68k-wrs
636352bf44eSmrg				basic_os=vxworks
637352bf44eSmrg				;;
638352bf44eSmrg			vxworks29k)
639352bf44eSmrg				basic_machine=a29k-wrs
640352bf44eSmrg				basic_os=vxworks
641352bf44eSmrg				;;
642352bf44eSmrg			xbox)
643352bf44eSmrg				basic_machine=i686-pc
644352bf44eSmrg				basic_os=mingw32
645352bf44eSmrg				;;
646352bf44eSmrg			ymp)
647352bf44eSmrg				basic_machine=ymp-cray
648352bf44eSmrg				basic_os=unicos
649352bf44eSmrg				;;
650352bf44eSmrg			*)
651352bf44eSmrg				basic_machine=$1
652352bf44eSmrg				basic_os=
653352bf44eSmrg				;;
654352bf44eSmrg		esac
65533c89af1Smrg		;;
65633c89af1Smrgesac
65733c89af1Smrg
658352bf44eSmrg# Decode 1-component or ad-hoc basic machines
65933c89af1Smrgcase $basic_machine in
660352bf44eSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
661352bf44eSmrg	# some cases the only manufacturer, in others, it is the most popular.
662352bf44eSmrg	w89k)
663352bf44eSmrg		cpu=hppa1.1
664352bf44eSmrg		vendor=winbond
665ad47b356Smrg		;;
666352bf44eSmrg	op50n)
667352bf44eSmrg		cpu=hppa1.1
668352bf44eSmrg		vendor=oki
66933c89af1Smrg		;;
670352bf44eSmrg	op60c)
671352bf44eSmrg		cpu=hppa1.1
672352bf44eSmrg		vendor=oki
67333c89af1Smrg		;;
674352bf44eSmrg	ibm*)
675352bf44eSmrg		cpu=i370
676352bf44eSmrg		vendor=ibm
67733c89af1Smrg		;;
678352bf44eSmrg	orion105)
679352bf44eSmrg		cpu=clipper
680352bf44eSmrg		vendor=highlevel
681ad47b356Smrg		;;
682352bf44eSmrg	mac | mpw | mac-mpw)
683352bf44eSmrg		cpu=m68k
684352bf44eSmrg		vendor=apple
685988795beSmrg		;;
686352bf44eSmrg	pmac | pmac-mpw)
687352bf44eSmrg		cpu=powerpc
688352bf44eSmrg		vendor=apple
689988795beSmrg		;;
690988795beSmrg
69133c89af1Smrg	# Recognize the various machine names and aliases which stand
69233c89af1Smrg	# for a CPU type and a company and sometimes even an OS.
69333c89af1Smrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
694352bf44eSmrg		cpu=m68000
695352bf44eSmrg		vendor=att
69633c89af1Smrg		;;
69733c89af1Smrg	3b*)
698352bf44eSmrg		cpu=we32k
699352bf44eSmrg		vendor=att
700278eca22Smrg		;;
70116d8e44fSmrg	bluegene*)
702352bf44eSmrg		cpu=powerpc
703352bf44eSmrg		vendor=ibm
704352bf44eSmrg		basic_os=cnk
70533c89af1Smrg		;;
70633c89af1Smrg	decsystem10* | dec10*)
707352bf44eSmrg		cpu=pdp10
708352bf44eSmrg		vendor=dec
709352bf44eSmrg		basic_os=tops10
71033c89af1Smrg		;;
71133c89af1Smrg	decsystem20* | dec20*)
712352bf44eSmrg		cpu=pdp10
713352bf44eSmrg		vendor=dec
714352bf44eSmrg		basic_os=tops20
71533c89af1Smrg		;;
71633c89af1Smrg	delta | 3300 | motorola-3300 | motorola-delta \
71733c89af1Smrg	      | 3300-motorola | delta-motorola)
718352bf44eSmrg		cpu=m68k
719352bf44eSmrg		vendor=motorola
72033c89af1Smrg		;;
721352bf44eSmrg	dpx2*)
722352bf44eSmrg		cpu=m68k
723352bf44eSmrg		vendor=bull
724352bf44eSmrg		basic_os=sysv3
72533c89af1Smrg		;;
72633c89af1Smrg	encore | umax | mmax)
727352bf44eSmrg		cpu=ns32k
728352bf44eSmrg		vendor=encore
72933c89af1Smrg		;;
730352bf44eSmrg	elxsi)
731352bf44eSmrg		cpu=elxsi
732352bf44eSmrg		vendor=elxsi
733352bf44eSmrg		basic_os=${basic_os:-bsd}
73433c89af1Smrg		;;
73533c89af1Smrg	fx2800)
736352bf44eSmrg		cpu=i860
737352bf44eSmrg		vendor=alliant
73833c89af1Smrg		;;
73933c89af1Smrg	genix)
740352bf44eSmrg		cpu=ns32k
741352bf44eSmrg		vendor=ns
74233c89af1Smrg		;;
74333c89af1Smrg	h3050r* | hiux*)
744352bf44eSmrg		cpu=hppa1.1
745352bf44eSmrg		vendor=hitachi
746352bf44eSmrg		basic_os=hiuxwe2
74733c89af1Smrg		;;
74833c89af1Smrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
749352bf44eSmrg		cpu=hppa1.0
750352bf44eSmrg		vendor=hp
75133c89af1Smrg		;;
75233c89af1Smrg	hp9k2[0-9][0-9] | hp9k31[0-9])
753352bf44eSmrg		cpu=m68000
754352bf44eSmrg		vendor=hp
75533c89af1Smrg		;;
75633c89af1Smrg	hp9k3[2-9][0-9])
757352bf44eSmrg		cpu=m68k
758352bf44eSmrg		vendor=hp
75933c89af1Smrg		;;
76033c89af1Smrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
761352bf44eSmrg		cpu=hppa1.0
762352bf44eSmrg		vendor=hp
76333c89af1Smrg		;;
76433c89af1Smrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
765352bf44eSmrg		cpu=hppa1.1
766352bf44eSmrg		vendor=hp
76733c89af1Smrg		;;
76833c89af1Smrg	hp9k78[0-9] | hp78[0-9])
76933c89af1Smrg		# FIXME: really hppa2.0-hp
770352bf44eSmrg		cpu=hppa1.1
771352bf44eSmrg		vendor=hp
77233c89af1Smrg		;;
77333c89af1Smrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
77433c89af1Smrg		# FIXME: really hppa2.0-hp
775352bf44eSmrg		cpu=hppa1.1
776352bf44eSmrg		vendor=hp
77733c89af1Smrg		;;
77833c89af1Smrg	hp9k8[0-9][13679] | hp8[0-9][13679])
779352bf44eSmrg		cpu=hppa1.1
780352bf44eSmrg		vendor=hp
78133c89af1Smrg		;;
78233c89af1Smrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
783352bf44eSmrg		cpu=hppa1.0
784352bf44eSmrg		vendor=hp
78533c89af1Smrg		;;
78633c89af1Smrg	i*86v32)
787352bf44eSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
788352bf44eSmrg		vendor=pc
789352bf44eSmrg		basic_os=sysv32
79033c89af1Smrg		;;
79133c89af1Smrg	i*86v4*)
792352bf44eSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
793352bf44eSmrg		vendor=pc
794352bf44eSmrg		basic_os=sysv4
79533c89af1Smrg		;;
79633c89af1Smrg	i*86v)
797352bf44eSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
798352bf44eSmrg		vendor=pc
799352bf44eSmrg		basic_os=sysv
80033c89af1Smrg		;;
80133c89af1Smrg	i*86sol2)
802352bf44eSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
803352bf44eSmrg		vendor=pc
804352bf44eSmrg		basic_os=solaris2
80533c89af1Smrg		;;
806352bf44eSmrg	j90 | j90-cray)
807352bf44eSmrg		cpu=j90
808352bf44eSmrg		vendor=cray
809352bf44eSmrg		basic_os=${basic_os:-unicos}
81033c89af1Smrg		;;
81133c89af1Smrg	iris | iris4d)
812352bf44eSmrg		cpu=mips
813352bf44eSmrg		vendor=sgi
814352bf44eSmrg		case $basic_os in
815352bf44eSmrg		    irix*)
81633c89af1Smrg			;;
81733c89af1Smrg		    *)
818352bf44eSmrg			basic_os=irix4
81933c89af1Smrg			;;
82033c89af1Smrg		esac
82133c89af1Smrg		;;
82233c89af1Smrg	miniframe)
823352bf44eSmrg		cpu=m68000
824352bf44eSmrg		vendor=convergent
825988795beSmrg		;;
826352bf44eSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
827352bf44eSmrg		cpu=m68k
828352bf44eSmrg		vendor=atari
829352bf44eSmrg		basic_os=mint
83033c89af1Smrg		;;
83133c89af1Smrg	news-3600 | risc-news)
832352bf44eSmrg		cpu=mips
833352bf44eSmrg		vendor=sony
834352bf44eSmrg		basic_os=newsos
835352bf44eSmrg		;;
836352bf44eSmrg	next | m*-next)
837352bf44eSmrg		cpu=m68k
838352bf44eSmrg		vendor=next
839352bf44eSmrg		case $basic_os in
840352bf44eSmrg		    openstep*)
841352bf44eSmrg		        ;;
842352bf44eSmrg		    nextstep*)
84333c89af1Smrg			;;
844352bf44eSmrg		    ns2*)
845352bf44eSmrg		      basic_os=nextstep2
84633c89af1Smrg			;;
84733c89af1Smrg		    *)
848352bf44eSmrg		      basic_os=nextstep3
84933c89af1Smrg			;;
85033c89af1Smrg		esac
85133c89af1Smrg		;;
85233c89af1Smrg	np1)
853352bf44eSmrg		cpu=np1
854352bf44eSmrg		vendor=gould
85533c89af1Smrg		;;
85633c89af1Smrg	op50n-* | op60c-*)
857352bf44eSmrg		cpu=hppa1.1
858352bf44eSmrg		vendor=oki
859352bf44eSmrg		basic_os=proelf
86033c89af1Smrg		;;
86133c89af1Smrg	pa-hitachi)
862352bf44eSmrg		cpu=hppa1.1
863352bf44eSmrg		vendor=hitachi
864352bf44eSmrg		basic_os=hiuxwe2
865278eca22Smrg		;;
86633c89af1Smrg	pbd)
867352bf44eSmrg		cpu=sparc
868352bf44eSmrg		vendor=tti
86933c89af1Smrg		;;
87033c89af1Smrg	pbb)
871352bf44eSmrg		cpu=m68k
872352bf44eSmrg		vendor=tti
87333c89af1Smrg		;;
874352bf44eSmrg	pc532)
875352bf44eSmrg		cpu=ns32k
876352bf44eSmrg		vendor=pc532
87733c89af1Smrg		;;
87833c89af1Smrg	pn)
879352bf44eSmrg		cpu=pn
880352bf44eSmrg		vendor=gould
88133c89af1Smrg		;;
882352bf44eSmrg	power)
883352bf44eSmrg		cpu=power
884352bf44eSmrg		vendor=ibm
88533c89af1Smrg		;;
88633c89af1Smrg	ps2)
887352bf44eSmrg		cpu=i386
888352bf44eSmrg		vendor=ibm
88933c89af1Smrg		;;
89033c89af1Smrg	rm[46]00)
891352bf44eSmrg		cpu=mips
892352bf44eSmrg		vendor=siemens
89333c89af1Smrg		;;
89433c89af1Smrg	rtpc | rtpc-*)
895352bf44eSmrg		cpu=romp
896352bf44eSmrg		vendor=ibm
89733c89af1Smrg		;;
898352bf44eSmrg	sde)
899352bf44eSmrg		cpu=mipsisa32
900352bf44eSmrg		vendor=sde
901352bf44eSmrg		basic_os=${basic_os:-elf}
90233c89af1Smrg		;;
903352bf44eSmrg	simso-wrs)
904352bf44eSmrg		cpu=sparclite
905352bf44eSmrg		vendor=wrs
906352bf44eSmrg		basic_os=vxworks
90733c89af1Smrg		;;
908352bf44eSmrg	tower | tower-32)
909352bf44eSmrg		cpu=m68k
910352bf44eSmrg		vendor=ncr
91133c89af1Smrg		;;
912352bf44eSmrg	vpp*|vx|vx-*)
913352bf44eSmrg		cpu=f301
914352bf44eSmrg		vendor=fujitsu
91533c89af1Smrg		;;
916352bf44eSmrg	w65)
917352bf44eSmrg		cpu=w65
918352bf44eSmrg		vendor=wdc
91933c89af1Smrg		;;
920352bf44eSmrg	w89k-*)
921352bf44eSmrg		cpu=hppa1.1
922352bf44eSmrg		vendor=winbond
923352bf44eSmrg		basic_os=proelf
92433c89af1Smrg		;;
925352bf44eSmrg	none)
926352bf44eSmrg		cpu=none
927352bf44eSmrg		vendor=none
92833c89af1Smrg		;;
929352bf44eSmrg	leon|leon[3-9])
930352bf44eSmrg		cpu=sparc
931352bf44eSmrg		vendor=$basic_machine
93233c89af1Smrg		;;
933352bf44eSmrg	leon-*|leon[3-9]-*)
934352bf44eSmrg		cpu=sparc
935352bf44eSmrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
93633c89af1Smrg		;;
937352bf44eSmrg
938352bf44eSmrg	*-*)
939352bf44eSmrg		# shellcheck disable=SC2162
940352bf44eSmrg		saved_IFS=$IFS
941352bf44eSmrg		IFS="-" read cpu vendor <<EOF
942352bf44eSmrg$basic_machine
943352bf44eSmrgEOF
944352bf44eSmrg		IFS=$saved_IFS
94533c89af1Smrg		;;
946352bf44eSmrg	# We use `pc' rather than `unknown'
947352bf44eSmrg	# because (1) that's what they normally are, and
948352bf44eSmrg	# (2) the word "unknown" tends to confuse beginning users.
949352bf44eSmrg	i*86 | x86_64)
950352bf44eSmrg		cpu=$basic_machine
951352bf44eSmrg		vendor=pc
95233c89af1Smrg		;;
953352bf44eSmrg	# These rules are duplicated from below for sake of the special case above;
954352bf44eSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
955352bf44eSmrg	pc98)
956352bf44eSmrg		cpu=i386
957352bf44eSmrg		vendor=pc
95833c89af1Smrg		;;
959352bf44eSmrg	x64 | amd64)
960352bf44eSmrg		cpu=x86_64
961352bf44eSmrg		vendor=pc
96233c89af1Smrg		;;
963352bf44eSmrg	# Recognize the basic CPU types without company name.
964352bf44eSmrg	*)
965352bf44eSmrg		cpu=$basic_machine
966352bf44eSmrg		vendor=unknown
967988795beSmrg		;;
968352bf44eSmrgesac
969352bf44eSmrg
970352bf44eSmrgunset -v basic_machine
971352bf44eSmrg
972352bf44eSmrg# Decode basic machines in the full and proper CPU-Company form.
973352bf44eSmrgcase $cpu-$vendor in
974352bf44eSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
975352bf44eSmrg	# some cases the only manufacturer, in others, it is the most popular.
976352bf44eSmrg	craynv-unknown)
977352bf44eSmrg		vendor=cray
978352bf44eSmrg		basic_os=${basic_os:-unicosmp}
97933c89af1Smrg		;;
980352bf44eSmrg	c90-unknown | c90-cray)
981352bf44eSmrg		vendor=cray
982352bf44eSmrg		basic_os=${Basic_os:-unicos}
98333c89af1Smrg		;;
984352bf44eSmrg	fx80-unknown)
985352bf44eSmrg		vendor=alliant
98633c89af1Smrg		;;
987352bf44eSmrg	romp-unknown)
988352bf44eSmrg		vendor=ibm
98933c89af1Smrg		;;
990352bf44eSmrg	mmix-unknown)
991352bf44eSmrg		vendor=knuth
99233c89af1Smrg		;;
993352bf44eSmrg	microblaze-unknown | microblazeel-unknown)
994352bf44eSmrg		vendor=xilinx
99533c89af1Smrg		;;
996352bf44eSmrg	rs6000-unknown)
997352bf44eSmrg		vendor=ibm
99833c89af1Smrg		;;
999352bf44eSmrg	vax-unknown)
1000352bf44eSmrg		vendor=dec
100133c89af1Smrg		;;
1002352bf44eSmrg	pdp11-unknown)
1003352bf44eSmrg		vendor=dec
100433c89af1Smrg		;;
1005352bf44eSmrg	we32k-unknown)
1006352bf44eSmrg		vendor=att
100733c89af1Smrg		;;
1008352bf44eSmrg	cydra-unknown)
1009352bf44eSmrg		vendor=cydrome
101033c89af1Smrg		;;
1011352bf44eSmrg	i370-ibm*)
1012352bf44eSmrg		vendor=ibm
101333c89af1Smrg		;;
1014352bf44eSmrg	orion-unknown)
1015352bf44eSmrg		vendor=highlevel
101633c89af1Smrg		;;
1017352bf44eSmrg	xps-unknown | xps100-unknown)
1018352bf44eSmrg		cpu=xps100
1019352bf44eSmrg		vendor=honeywell
102033c89af1Smrg		;;
1021352bf44eSmrg
1022352bf44eSmrg	# Here we normalize CPU types with a missing or matching vendor
102338d718bdSmrg	armh-unknown | armh-alt)
102438d718bdSmrg		cpu=armv7l
102538d718bdSmrg		vendor=alt
102638d718bdSmrg		basic_os=${basic_os:-linux-gnueabihf}
102738d718bdSmrg		;;
1028352bf44eSmrg	dpx20-unknown | dpx20-bull)
1029352bf44eSmrg		cpu=rs6000
1030352bf44eSmrg		vendor=bull
1031352bf44eSmrg		basic_os=${basic_os:-bosx}
103233c89af1Smrg		;;
1033352bf44eSmrg
1034352bf44eSmrg	# Here we normalize CPU types irrespective of the vendor
1035352bf44eSmrg	amd64-*)
1036352bf44eSmrg		cpu=x86_64
1037278eca22Smrg		;;
1038352bf44eSmrg	blackfin-*)
1039352bf44eSmrg		cpu=bfin
1040352bf44eSmrg		basic_os=linux
104133c89af1Smrg		;;
1042352bf44eSmrg	c54x-*)
1043352bf44eSmrg		cpu=tic54x
104433c89af1Smrg		;;
1045352bf44eSmrg	c55x-*)
1046352bf44eSmrg		cpu=tic55x
104733c89af1Smrg		;;
1048352bf44eSmrg	c6x-*)
1049352bf44eSmrg		cpu=tic6x
105033c89af1Smrg		;;
1051352bf44eSmrg	e500v[12]-*)
1052352bf44eSmrg		cpu=powerpc
1053352bf44eSmrg		basic_os=${basic_os}"spe"
105433c89af1Smrg		;;
1055352bf44eSmrg	mips3*-*)
1056352bf44eSmrg		cpu=mips64
105733c89af1Smrg		;;
1058352bf44eSmrg	ms1-*)
1059352bf44eSmrg		cpu=mt
106033c89af1Smrg		;;
1061352bf44eSmrg	m68knommu-*)
1062352bf44eSmrg		cpu=m68k
1063352bf44eSmrg		basic_os=linux
106433c89af1Smrg		;;
1065352bf44eSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
1066352bf44eSmrg		cpu=s12z
106733c89af1Smrg		;;
1068352bf44eSmrg	openrisc-*)
1069352bf44eSmrg		cpu=or32
107033c89af1Smrg		;;
1071352bf44eSmrg	parisc-*)
1072352bf44eSmrg		cpu=hppa
1073352bf44eSmrg		basic_os=linux
107433c89af1Smrg		;;
1075352bf44eSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
1076352bf44eSmrg		cpu=i586
107733c89af1Smrg		;;
107838d718bdSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
1079352bf44eSmrg		cpu=i686
108033c89af1Smrg		;;
1081352bf44eSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
1082352bf44eSmrg		cpu=i686
108333c89af1Smrg		;;
1084352bf44eSmrg	pentium4-*)
1085352bf44eSmrg		cpu=i786
108633c89af1Smrg		;;
1087352bf44eSmrg	pc98-*)
1088352bf44eSmrg		cpu=i386
108933c89af1Smrg		;;
1090352bf44eSmrg	ppc-* | ppcbe-*)
1091352bf44eSmrg		cpu=powerpc
109233c89af1Smrg		;;
1093352bf44eSmrg	ppcle-* | powerpclittle-*)
1094352bf44eSmrg		cpu=powerpcle
109533c89af1Smrg		;;
1096352bf44eSmrg	ppc64-*)
1097352bf44eSmrg		cpu=powerpc64
1098988795beSmrg		;;
1099352bf44eSmrg	ppc64le-* | powerpc64little-*)
1100352bf44eSmrg		cpu=powerpc64le
110133c89af1Smrg		;;
1102352bf44eSmrg	sb1-*)
1103352bf44eSmrg		cpu=mipsisa64sb1
110433c89af1Smrg		;;
1105352bf44eSmrg	sb1el-*)
1106352bf44eSmrg		cpu=mipsisa64sb1el
1107278eca22Smrg		;;
1108352bf44eSmrg	sh5e[lb]-*)
1109352bf44eSmrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
111033c89af1Smrg		;;
1111352bf44eSmrg	spur-*)
1112352bf44eSmrg		cpu=spur
111333c89af1Smrg		;;
1114352bf44eSmrg	strongarm-* | thumb-*)
1115352bf44eSmrg		cpu=arm
111633c89af1Smrg		;;
1117352bf44eSmrg	tx39-*)
1118352bf44eSmrg		cpu=mipstx39
111933c89af1Smrg		;;
1120352bf44eSmrg	tx39el-*)
1121352bf44eSmrg		cpu=mipstx39el
112233c89af1Smrg		;;
1123352bf44eSmrg	x64-*)
1124352bf44eSmrg		cpu=x86_64
112533c89af1Smrg		;;
1126352bf44eSmrg	xscale-* | xscalee[bl]-*)
1127352bf44eSmrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
112833c89af1Smrg		;;
112938d718bdSmrg	arm64-* | aarch64le-*)
1130352bf44eSmrg		cpu=aarch64
113133c89af1Smrg		;;
1132352bf44eSmrg
1133352bf44eSmrg	# Recognize the canonical CPU Types that limit and/or modify the
1134352bf44eSmrg	# company names they are paired with.
1135352bf44eSmrg	cr16-*)
1136352bf44eSmrg		basic_os=${basic_os:-elf}
113733c89af1Smrg		;;
1138352bf44eSmrg	crisv32-* | etraxfs*-*)
1139352bf44eSmrg		cpu=crisv32
1140352bf44eSmrg		vendor=axis
114133c89af1Smrg		;;
1142352bf44eSmrg	cris-* | etrax*-*)
1143352bf44eSmrg		cpu=cris
1144352bf44eSmrg		vendor=axis
114533c89af1Smrg		;;
1146352bf44eSmrg	crx-*)
1147352bf44eSmrg		basic_os=${basic_os:-elf}
114833c89af1Smrg		;;
1149352bf44eSmrg	neo-tandem)
1150352bf44eSmrg		cpu=neo
1151352bf44eSmrg		vendor=tandem
115233c89af1Smrg		;;
1153352bf44eSmrg	nse-tandem)
1154352bf44eSmrg		cpu=nse
1155352bf44eSmrg		vendor=tandem
115633c89af1Smrg		;;
1157352bf44eSmrg	nsr-tandem)
1158352bf44eSmrg		cpu=nsr
1159352bf44eSmrg		vendor=tandem
116033c89af1Smrg		;;
1161352bf44eSmrg	nsv-tandem)
1162352bf44eSmrg		cpu=nsv
1163352bf44eSmrg		vendor=tandem
116433c89af1Smrg		;;
1165352bf44eSmrg	nsx-tandem)
1166352bf44eSmrg		cpu=nsx
1167352bf44eSmrg		vendor=tandem
116833c89af1Smrg		;;
1169352bf44eSmrg	mipsallegrexel-sony)
1170352bf44eSmrg		cpu=mipsallegrexel
1171352bf44eSmrg		vendor=sony
117233c89af1Smrg		;;
1173352bf44eSmrg	tile*-*)
1174352bf44eSmrg		basic_os=${basic_os:-linux-gnu}
117533c89af1Smrg		;;
1176352bf44eSmrg
117733c89af1Smrg	*)
1178352bf44eSmrg		# Recognize the canonical CPU types that are allowed with any
1179352bf44eSmrg		# company name.
1180352bf44eSmrg		case $cpu in
1181352bf44eSmrg			1750a | 580 \
1182352bf44eSmrg			| a29k \
1183352bf44eSmrg			| aarch64 | aarch64_be \
1184352bf44eSmrg			| abacus \
1185352bf44eSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
1186352bf44eSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
1187352bf44eSmrg			| alphapca5[67] | alpha64pca5[67] \
1188352bf44eSmrg			| am33_2.0 \
1189352bf44eSmrg			| amdgcn \
1190352bf44eSmrg			| arc | arceb | arc32 | arc64 \
1191352bf44eSmrg			| arm | arm[lb]e | arme[lb] | armv* \
1192352bf44eSmrg			| avr | avr32 \
1193352bf44eSmrg			| asmjs \
1194352bf44eSmrg			| ba \
1195352bf44eSmrg			| be32 | be64 \
1196352bf44eSmrg			| bfin | bpf | bs2000 \
1197352bf44eSmrg			| c[123]* | c30 | [cjt]90 | c4x \
1198352bf44eSmrg			| c8051 | clipper | craynv | csky | cydra \
1199352bf44eSmrg			| d10v | d30v | dlx | dsp16xx \
1200352bf44eSmrg			| e2k | elxsi | epiphany \
1201352bf44eSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
1202352bf44eSmrg			| h8300 | h8500 \
1203352bf44eSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
1204352bf44eSmrg			| hexagon \
1205352bf44eSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
1206352bf44eSmrg			| ip2k | iq2000 \
1207352bf44eSmrg			| k1om \
1208352bf44eSmrg			| le32 | le64 \
1209352bf44eSmrg			| lm32 \
121038d718bdSmrg			| loongarch32 | loongarch64 \
1211352bf44eSmrg			| m32c | m32r | m32rle \
1212352bf44eSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
1213352bf44eSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
1214352bf44eSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
1215352bf44eSmrg			| microblaze | microblazeel \
1216352bf44eSmrg			| mips | mipsbe | mipseb | mipsel | mipsle \
1217352bf44eSmrg			| mips16 \
1218352bf44eSmrg			| mips64 | mips64eb | mips64el \
1219352bf44eSmrg			| mips64octeon | mips64octeonel \
1220352bf44eSmrg			| mips64orion | mips64orionel \
1221352bf44eSmrg			| mips64r5900 | mips64r5900el \
1222352bf44eSmrg			| mips64vr | mips64vrel \
1223352bf44eSmrg			| mips64vr4100 | mips64vr4100el \
1224352bf44eSmrg			| mips64vr4300 | mips64vr4300el \
1225352bf44eSmrg			| mips64vr5000 | mips64vr5000el \
1226352bf44eSmrg			| mips64vr5900 | mips64vr5900el \
1227352bf44eSmrg			| mipsisa32 | mipsisa32el \
1228352bf44eSmrg			| mipsisa32r2 | mipsisa32r2el \
1229352bf44eSmrg			| mipsisa32r3 | mipsisa32r3el \
1230352bf44eSmrg			| mipsisa32r5 | mipsisa32r5el \
1231352bf44eSmrg			| mipsisa32r6 | mipsisa32r6el \
1232352bf44eSmrg			| mipsisa64 | mipsisa64el \
1233352bf44eSmrg			| mipsisa64r2 | mipsisa64r2el \
1234352bf44eSmrg			| mipsisa64r3 | mipsisa64r3el \
1235352bf44eSmrg			| mipsisa64r5 | mipsisa64r5el \
1236352bf44eSmrg			| mipsisa64r6 | mipsisa64r6el \
1237352bf44eSmrg			| mipsisa64sb1 | mipsisa64sb1el \
1238352bf44eSmrg			| mipsisa64sr71k | mipsisa64sr71kel \
1239352bf44eSmrg			| mipsr5900 | mipsr5900el \
1240352bf44eSmrg			| mipstx39 | mipstx39el \
1241352bf44eSmrg			| mmix \
1242352bf44eSmrg			| mn10200 | mn10300 \
1243352bf44eSmrg			| moxie \
1244352bf44eSmrg			| mt \
1245352bf44eSmrg			| msp430 \
1246352bf44eSmrg			| nds32 | nds32le | nds32be \
1247352bf44eSmrg			| nfp \
1248352bf44eSmrg			| nios | nios2 | nios2eb | nios2el \
1249352bf44eSmrg			| none | np1 | ns16k | ns32k | nvptx \
1250352bf44eSmrg			| open8 \
1251352bf44eSmrg			| or1k* \
1252352bf44eSmrg			| or32 \
1253352bf44eSmrg			| orion \
1254352bf44eSmrg			| picochip \
1255352bf44eSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
1256352bf44eSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
1257352bf44eSmrg			| pru \
1258352bf44eSmrg			| pyramid \
1259352bf44eSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
1260352bf44eSmrg			| rl78 | romp | rs6000 | rx \
1261352bf44eSmrg			| s390 | s390x \
1262352bf44eSmrg			| score \
1263352bf44eSmrg			| sh | shl \
1264352bf44eSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
1265352bf44eSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
1266352bf44eSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
1267352bf44eSmrg			| sparclite \
1268352bf44eSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
1269352bf44eSmrg			| spu \
1270352bf44eSmrg			| tahoe \
1271352bf44eSmrg			| thumbv7* \
1272352bf44eSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
1273352bf44eSmrg			| tron \
1274352bf44eSmrg			| ubicom32 \
1275352bf44eSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
1276352bf44eSmrg			| vax \
1277352bf44eSmrg			| visium \
1278352bf44eSmrg			| w65 \
1279352bf44eSmrg			| wasm32 | wasm64 \
1280352bf44eSmrg			| we32k \
1281352bf44eSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
1282352bf44eSmrg			| xstormy16 | xtensa* \
1283352bf44eSmrg			| ymp \
1284352bf44eSmrg			| z8k | z80)
1285352bf44eSmrg				;;
1286352bf44eSmrg
1287352bf44eSmrg			*)
1288352bf44eSmrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
1289352bf44eSmrg				exit 1
1290352bf44eSmrg				;;
1291352bf44eSmrg		esac
129233c89af1Smrg		;;
129333c89af1Smrgesac
129433c89af1Smrg
129533c89af1Smrg# Here we canonicalize certain aliases for manufacturers.
1296352bf44eSmrgcase $vendor in
1297352bf44eSmrg	digital*)
1298352bf44eSmrg		vendor=dec
129933c89af1Smrg		;;
1300352bf44eSmrg	commodore*)
1301352bf44eSmrg		vendor=cbm
130233c89af1Smrg		;;
130333c89af1Smrg	*)
130433c89af1Smrg		;;
130533c89af1Smrgesac
130633c89af1Smrg
130733c89af1Smrg# Decode manufacturer-specific aliases for certain operating systems.
130833c89af1Smrg
1309352bf44eSmrgif test x$basic_os != x
131033c89af1Smrgthen
1311352bf44eSmrg
131238d718bdSmrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
1313352bf44eSmrg# set os.
1314352bf44eSmrgcase $basic_os in
1315352bf44eSmrg	gnu/linux*)
1316352bf44eSmrg		kernel=linux
1317352bf44eSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
1318352bf44eSmrg		;;
1319352bf44eSmrg	os2-emx)
1320352bf44eSmrg		kernel=os2
1321352bf44eSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
1322352bf44eSmrg		;;
1323352bf44eSmrg	nto-qnx*)
1324352bf44eSmrg		kernel=nto
1325352bf44eSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
1326352bf44eSmrg		;;
1327352bf44eSmrg	*-*)
1328352bf44eSmrg		# shellcheck disable=SC2162
1329352bf44eSmrg		saved_IFS=$IFS
1330352bf44eSmrg		IFS="-" read kernel os <<EOF
1331352bf44eSmrg$basic_os
1332352bf44eSmrgEOF
1333352bf44eSmrg		IFS=$saved_IFS
1334352bf44eSmrg		;;
1335352bf44eSmrg	# Default OS when just kernel was specified
1336352bf44eSmrg	nto*)
1337352bf44eSmrg		kernel=nto
1338352bf44eSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
1339352bf44eSmrg		;;
1340352bf44eSmrg	linux*)
1341352bf44eSmrg		kernel=linux
1342352bf44eSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
1343352bf44eSmrg		;;
134438d718bdSmrg	managarm*)
134538d718bdSmrg		kernel=managarm
134638d718bdSmrg		os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
134738d718bdSmrg		;;
1348352bf44eSmrg	*)
1349352bf44eSmrg		kernel=
1350352bf44eSmrg		os=$basic_os
1351352bf44eSmrg		;;
1352352bf44eSmrgesac
1353352bf44eSmrg
1354352bf44eSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
1355352bf44eSmrg# etc.)
135633c89af1Smrgcase $os in
1357352bf44eSmrg	# First match some system type aliases that might get confused
1358352bf44eSmrg	# with valid system types.
1359352bf44eSmrg	# solaris* is a basic system type, with this one exception.
1360352bf44eSmrg	auroraux)
1361352bf44eSmrg		os=auroraux
136216d8e44fSmrg		;;
1363352bf44eSmrg	bluegene*)
1364352bf44eSmrg		os=cnk
136533c89af1Smrg		;;
1366352bf44eSmrg	solaris1 | solaris1.*)
1367352bf44eSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
136833c89af1Smrg		;;
1369352bf44eSmrg	solaris)
1370352bf44eSmrg		os=solaris2
137133c89af1Smrg		;;
1372352bf44eSmrg	unixware*)
1373352bf44eSmrg		os=sysv4.2uw
137433c89af1Smrg		;;
1375352bf44eSmrg	# es1800 is here to avoid being matched by es* (a different OS)
1376352bf44eSmrg	es1800*)
1377352bf44eSmrg		os=ose
137833c89af1Smrg		;;
1379352bf44eSmrg	# Some version numbers need modification
1380352bf44eSmrg	chorusos*)
1381352bf44eSmrg		os=chorusos
138233c89af1Smrg		;;
1383352bf44eSmrg	isc)
1384352bf44eSmrg		os=isc2.2
138533c89af1Smrg		;;
1386352bf44eSmrg	sco6)
1387352bf44eSmrg		os=sco5v6
138833c89af1Smrg		;;
1389352bf44eSmrg	sco5)
1390352bf44eSmrg		os=sco3.2v5
139133c89af1Smrg		;;
1392352bf44eSmrg	sco4)
1393352bf44eSmrg		os=sco3.2v4
139433c89af1Smrg		;;
1395352bf44eSmrg	sco3.2.[4-9]*)
1396352bf44eSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
139733c89af1Smrg		;;
1398352bf44eSmrg	sco*v* | scout)
1399352bf44eSmrg		# Don't match below
140033c89af1Smrg		;;
1401352bf44eSmrg	sco*)
1402352bf44eSmrg		os=sco3.2v2
140333c89af1Smrg		;;
1404352bf44eSmrg	psos*)
1405352bf44eSmrg		os=psos
140633c89af1Smrg		;;
1407352bf44eSmrg	qnx*)
1408352bf44eSmrg		os=qnx
140933c89af1Smrg		;;
1410352bf44eSmrg	hiux*)
1411352bf44eSmrg		os=hiuxwe2
141233c89af1Smrg		;;
1413352bf44eSmrg	lynx*178)
1414352bf44eSmrg		os=lynxos178
141533c89af1Smrg		;;
1416352bf44eSmrg	lynx*5)
1417352bf44eSmrg		os=lynxos5
141833c89af1Smrg		;;
1419352bf44eSmrg	lynxos*)
1420352bf44eSmrg		# don't get caught up in next wildcard
142133c89af1Smrg		;;
1422352bf44eSmrg	lynx*)
1423352bf44eSmrg		os=lynxos
142433c89af1Smrg		;;
1425352bf44eSmrg	mac[0-9]*)
1426352bf44eSmrg		os=`echo "$os" | sed -e 's|mac|macos|'`
142733c89af1Smrg		;;
1428352bf44eSmrg	opened*)
1429352bf44eSmrg		os=openedition
143033c89af1Smrg		;;
1431352bf44eSmrg	os400*)
1432352bf44eSmrg		os=os400
143333c89af1Smrg		;;
1434352bf44eSmrg	sunos5*)
1435352bf44eSmrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
143633c89af1Smrg		;;
1437352bf44eSmrg	sunos6*)
1438352bf44eSmrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
143933c89af1Smrg		;;
1440352bf44eSmrg	wince*)
1441352bf44eSmrg		os=wince
144233c89af1Smrg		;;
1443352bf44eSmrg	utek*)
1444352bf44eSmrg		os=bsd
144533c89af1Smrg		;;
1446352bf44eSmrg	dynix*)
1447352bf44eSmrg		os=bsd
144833c89af1Smrg		;;
1449352bf44eSmrg	acis*)
1450352bf44eSmrg		os=aos
145133c89af1Smrg		;;
1452352bf44eSmrg	atheos*)
1453352bf44eSmrg		os=atheos
145433c89af1Smrg		;;
1455352bf44eSmrg	syllable*)
1456352bf44eSmrg		os=syllable
145733c89af1Smrg		;;
1458352bf44eSmrg	386bsd)
1459352bf44eSmrg		os=bsd
146033c89af1Smrg		;;
1461352bf44eSmrg	ctix* | uts*)
1462352bf44eSmrg		os=sysv
146333c89af1Smrg		;;
1464352bf44eSmrg	nova*)
1465352bf44eSmrg		os=rtmk-nova
146633c89af1Smrg		;;
1467352bf44eSmrg	ns2)
1468352bf44eSmrg		os=nextstep2
146933c89af1Smrg		;;
1470352bf44eSmrg	# Preserve the version number of sinix5.
1471352bf44eSmrg	sinix5.*)
1472352bf44eSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
147333c89af1Smrg		;;
1474352bf44eSmrg	sinix*)
1475352bf44eSmrg		os=sysv4
147633c89af1Smrg		;;
1477352bf44eSmrg	tpf*)
1478352bf44eSmrg		os=tpf
147933c89af1Smrg		;;
1480352bf44eSmrg	triton*)
1481352bf44eSmrg		os=sysv3
148233c89af1Smrg		;;
1483352bf44eSmrg	oss*)
1484352bf44eSmrg		os=sysv3
148533c89af1Smrg		;;
1486352bf44eSmrg	svr4*)
1487352bf44eSmrg		os=sysv4
148833c89af1Smrg		;;
1489352bf44eSmrg	svr3)
1490352bf44eSmrg		os=sysv3
149133c89af1Smrg		;;
1492352bf44eSmrg	sysvr4)
1493352bf44eSmrg		os=sysv4
149433c89af1Smrg		;;
1495352bf44eSmrg	ose*)
1496352bf44eSmrg		os=ose
149733c89af1Smrg		;;
1498352bf44eSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
1499352bf44eSmrg		os=mint
1500278eca22Smrg		;;
1501352bf44eSmrg	dicos*)
1502352bf44eSmrg		os=dicos
1503988795beSmrg		;;
1504352bf44eSmrg	pikeos*)
1505352bf44eSmrg		# Until real need of OS specific support for
1506352bf44eSmrg		# particular features comes up, bare metal
1507352bf44eSmrg		# configurations are quite functional.
1508352bf44eSmrg		case $cpu in
1509352bf44eSmrg		    arm*)
1510352bf44eSmrg			os=eabi
1511352bf44eSmrg			;;
1512352bf44eSmrg		    *)
1513352bf44eSmrg			os=elf
1514352bf44eSmrg			;;
1515352bf44eSmrg		esac
151633c89af1Smrg		;;
151733c89af1Smrg	*)
1518352bf44eSmrg		# No normalization, but not necessarily accepted, that comes below.
151933c89af1Smrg		;;
152033c89af1Smrgesac
1521352bf44eSmrg
152233c89af1Smrgelse
152333c89af1Smrg
152433c89af1Smrg# Here we handle the default operating systems that come with various machines.
152533c89af1Smrg# The value should be what the vendor currently ships out the door with their
152633c89af1Smrg# machine or put another way, the most popular os provided with the machine.
152733c89af1Smrg
152833c89af1Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
152933c89af1Smrg# "-sun"), then you have to tell the case statement up towards the top
153033c89af1Smrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
153133c89af1Smrg# will signal an error saying that MANUFACTURER isn't an operating
153233c89af1Smrg# system, and we'll never get to this point.
153333c89af1Smrg
1534352bf44eSmrgkernel=
1535352bf44eSmrgcase $cpu-$vendor in
1536988795beSmrg	score-*)
1537352bf44eSmrg		os=elf
153833c89af1Smrg		;;
1539988795beSmrg	spu-*)
1540352bf44eSmrg		os=elf
154133c89af1Smrg		;;
154233c89af1Smrg	*-acorn)
1543352bf44eSmrg		os=riscix1.2
154433c89af1Smrg		;;
154533c89af1Smrg	arm*-rebel)
1546352bf44eSmrg		kernel=linux
1547352bf44eSmrg		os=gnu
154833c89af1Smrg		;;
154933c89af1Smrg	arm*-semi)
1550352bf44eSmrg		os=aout
155133c89af1Smrg		;;
1552988795beSmrg	c4x-* | tic4x-*)
1553352bf44eSmrg		os=coff
155433c89af1Smrg		;;
1555ad47b356Smrg	c8051-*)
1556352bf44eSmrg		os=elf
1557352bf44eSmrg		;;
1558352bf44eSmrg	clipper-intergraph)
1559352bf44eSmrg		os=clix
1560ad47b356Smrg		;;
1561ad47b356Smrg	hexagon-*)
1562352bf44eSmrg		os=elf
1563ad47b356Smrg		;;
156416d8e44fSmrg	tic54x-*)
1565352bf44eSmrg		os=coff
156616d8e44fSmrg		;;
156716d8e44fSmrg	tic55x-*)
1568352bf44eSmrg		os=coff
156916d8e44fSmrg		;;
157016d8e44fSmrg	tic6x-*)
1571352bf44eSmrg		os=coff
157216d8e44fSmrg		;;
157333c89af1Smrg	# This must come before the *-dec entry.
157433c89af1Smrg	pdp10-*)
1575352bf44eSmrg		os=tops20
157633c89af1Smrg		;;
157733c89af1Smrg	pdp11-*)
1578352bf44eSmrg		os=none
157933c89af1Smrg		;;
158033c89af1Smrg	*-dec | vax-*)
1581352bf44eSmrg		os=ultrix4.2
158233c89af1Smrg		;;
158333c89af1Smrg	m68*-apollo)
1584352bf44eSmrg		os=domain
158533c89af1Smrg		;;
158633c89af1Smrg	i386-sun)
1587352bf44eSmrg		os=sunos4.0.2
158833c89af1Smrg		;;
158933c89af1Smrg	m68000-sun)
1590352bf44eSmrg		os=sunos3
159133c89af1Smrg		;;
159233c89af1Smrg	m68*-cisco)
1593352bf44eSmrg		os=aout
159433c89af1Smrg		;;
1595988795beSmrg	mep-*)
1596352bf44eSmrg		os=elf
1597278eca22Smrg		;;
159833c89af1Smrg	mips*-cisco)
1599352bf44eSmrg		os=elf
160033c89af1Smrg		;;
160133c89af1Smrg	mips*-*)
1602352bf44eSmrg		os=elf
160333c89af1Smrg		;;
160433c89af1Smrg	or32-*)
1605352bf44eSmrg		os=coff
160633c89af1Smrg		;;
160733c89af1Smrg	*-tti)	# must be before sparc entry or we get the wrong os.
1608352bf44eSmrg		os=sysv3
160933c89af1Smrg		;;
161033c89af1Smrg	sparc-* | *-sun)
1611352bf44eSmrg		os=sunos4.1.1
161233c89af1Smrg		;;
1613352bf44eSmrg	pru-*)
1614352bf44eSmrg		os=elf
161533c89af1Smrg		;;
1616352bf44eSmrg	*-be)
1617352bf44eSmrg		os=beos
161833c89af1Smrg		;;
161933c89af1Smrg	*-ibm)
1620352bf44eSmrg		os=aix
162133c89af1Smrg		;;
1622988795beSmrg	*-knuth)
1623352bf44eSmrg		os=mmixware
162433c89af1Smrg		;;
162533c89af1Smrg	*-wec)
1626352bf44eSmrg		os=proelf
162733c89af1Smrg		;;
162833c89af1Smrg	*-winbond)
1629352bf44eSmrg		os=proelf
163033c89af1Smrg		;;
163133c89af1Smrg	*-oki)
1632352bf44eSmrg		os=proelf
163333c89af1Smrg		;;
163433c89af1Smrg	*-hp)
1635352bf44eSmrg		os=hpux
163633c89af1Smrg		;;
163733c89af1Smrg	*-hitachi)
1638352bf44eSmrg		os=hiux
163933c89af1Smrg		;;
164033c89af1Smrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
1641352bf44eSmrg		os=sysv
164233c89af1Smrg		;;
164333c89af1Smrg	*-cbm)
1644352bf44eSmrg		os=amigaos
164533c89af1Smrg		;;
164633c89af1Smrg	*-dg)
1647352bf44eSmrg		os=dgux
164833c89af1Smrg		;;
164933c89af1Smrg	*-dolphin)
1650352bf44eSmrg		os=sysv3
165133c89af1Smrg		;;
165233c89af1Smrg	m68k-ccur)
1653352bf44eSmrg		os=rtu
165433c89af1Smrg		;;
165533c89af1Smrg	m88k-omron*)
1656352bf44eSmrg		os=luna
165733c89af1Smrg		;;
1658352bf44eSmrg	*-next)
1659352bf44eSmrg		os=nextstep
166033c89af1Smrg		;;
166133c89af1Smrg	*-sequent)
1662352bf44eSmrg		os=ptx
166333c89af1Smrg		;;
166433c89af1Smrg	*-crds)
1665352bf44eSmrg		os=unos
166633c89af1Smrg		;;
166733c89af1Smrg	*-ns)
1668352bf44eSmrg		os=genix
166933c89af1Smrg		;;
167033c89af1Smrg	i370-*)
1671352bf44eSmrg		os=mvs
167233c89af1Smrg		;;
167333c89af1Smrg	*-gould)
1674352bf44eSmrg		os=sysv
167533c89af1Smrg		;;
167633c89af1Smrg	*-highlevel)
1677352bf44eSmrg		os=bsd
167833c89af1Smrg		;;
167933c89af1Smrg	*-encore)
1680352bf44eSmrg		os=bsd
168133c89af1Smrg		;;
168233c89af1Smrg	*-sgi)
1683352bf44eSmrg		os=irix
168433c89af1Smrg		;;
168533c89af1Smrg	*-siemens)
1686352bf44eSmrg		os=sysv4
168733c89af1Smrg		;;
168833c89af1Smrg	*-masscomp)
1689352bf44eSmrg		os=rtu
169033c89af1Smrg		;;
169133c89af1Smrg	f30[01]-fujitsu | f700-fujitsu)
1692352bf44eSmrg		os=uxpv
169333c89af1Smrg		;;
169433c89af1Smrg	*-rom68k)
1695352bf44eSmrg		os=coff
169633c89af1Smrg		;;
169733c89af1Smrg	*-*bug)
1698352bf44eSmrg		os=coff
169933c89af1Smrg		;;
170033c89af1Smrg	*-apple)
1701352bf44eSmrg		os=macos
170233c89af1Smrg		;;
170333c89af1Smrg	*-atari*)
1704352bf44eSmrg		os=mint
1705352bf44eSmrg		;;
1706352bf44eSmrg	*-wrs)
1707352bf44eSmrg		os=vxworks
170833c89af1Smrg		;;
170933c89af1Smrg	*)
1710352bf44eSmrg		os=none
171133c89af1Smrg		;;
171233c89af1Smrgesac
1713352bf44eSmrg
171433c89af1Smrgfi
171533c89af1Smrg
1716352bf44eSmrg# Now, validate our (potentially fixed-up) OS.
1717352bf44eSmrgcase $os in
1718352bf44eSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
1719352bf44eSmrg	musl* | newlib* | relibc* | uclibc*)
1720352bf44eSmrg		;;
1721352bf44eSmrg	# Likewise for "kernel-abi"
1722352bf44eSmrg	eabi* | gnueabi*)
1723352bf44eSmrg		;;
1724352bf44eSmrg	# VxWorks passes extra cpu info in the 4th filed.
1725352bf44eSmrg	simlinux | simwindows | spe)
1726352bf44eSmrg		;;
1727352bf44eSmrg	# Now accept the basic system types.
1728352bf44eSmrg	# The portable systems comes first.
1729352bf44eSmrg	# Each alternative MUST end in a * to match a version number.
1730352bf44eSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
1731352bf44eSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
1732352bf44eSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
1733352bf44eSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
1734352bf44eSmrg	     | hiux* | abug | nacl* | netware* | windows* \
1735352bf44eSmrg	     | os9* | macos* | osx* | ios* \
1736352bf44eSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
1737352bf44eSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
1738352bf44eSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
1739352bf44eSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
1740352bf44eSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
1741352bf44eSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
1742352bf44eSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
1743352bf44eSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
1744352bf44eSmrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
1745352bf44eSmrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
1746352bf44eSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
1747352bf44eSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
1748352bf44eSmrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
1749352bf44eSmrg	     | midipix* | mingw32* | mingw64* | mint* \
1750352bf44eSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
1751352bf44eSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
1752352bf44eSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
1753352bf44eSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
1754352bf44eSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
1755352bf44eSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
1756352bf44eSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
1757352bf44eSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
1758352bf44eSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
1759352bf44eSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
176038d718bdSmrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
176138d718bdSmrg	     | fiwix* | mlibc* )
1762352bf44eSmrg		;;
1763352bf44eSmrg	# This one is extra strict with allowed versions
1764352bf44eSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
1765352bf44eSmrg		# Don't forget version if it is 3.2v4 or newer.
1766352bf44eSmrg		;;
1767352bf44eSmrg	none)
1768352bf44eSmrg		;;
176938d718bdSmrg	kernel* )
177038d718bdSmrg		# Restricted further below
177138d718bdSmrg		;;
1772352bf44eSmrg	*)
1773352bf44eSmrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
1774352bf44eSmrg		exit 1
1775352bf44eSmrg		;;
1776352bf44eSmrgesac
1777352bf44eSmrg
1778352bf44eSmrg# As a final step for OS-related things, validate the OS-kernel combination
1779352bf44eSmrg# (given a valid OS), if there is a kernel.
1780352bf44eSmrgcase $kernel-$os in
1781352bf44eSmrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
178238d718bdSmrg		   | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* )
1783352bf44eSmrg		;;
1784352bf44eSmrg	uclinux-uclibc* )
1785352bf44eSmrg		;;
178638d718bdSmrg	managarm-mlibc* | managarm-kernel* )
178738d718bdSmrg		;;
178838d718bdSmrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* )
1789352bf44eSmrg		# These are just libc implementations, not actual OSes, and thus
1790352bf44eSmrg		# require a kernel.
1791352bf44eSmrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
1792352bf44eSmrg		exit 1
1793352bf44eSmrg		;;
179438d718bdSmrg	-kernel* )
179538d718bdSmrg		echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2
179638d718bdSmrg		exit 1
179738d718bdSmrg		;;
179838d718bdSmrg	*-kernel* )
179938d718bdSmrg		echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2
180038d718bdSmrg		exit 1
180138d718bdSmrg		;;
1802352bf44eSmrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
1803352bf44eSmrg		;;
1804352bf44eSmrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
1805352bf44eSmrg		;;
1806352bf44eSmrg	nto-qnx*)
1807352bf44eSmrg		;;
1808352bf44eSmrg	os2-emx)
1809352bf44eSmrg		;;
1810352bf44eSmrg	*-eabi* | *-gnueabi*)
1811352bf44eSmrg		;;
1812352bf44eSmrg	-*)
1813352bf44eSmrg		# Blank kernel with real OS is always fine.
1814352bf44eSmrg		;;
1815352bf44eSmrg	*-*)
1816352bf44eSmrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
1817352bf44eSmrg		exit 1
1818352bf44eSmrg		;;
1819352bf44eSmrgesac
1820352bf44eSmrg
182133c89af1Smrg# Here we handle the case where we know the os, and the CPU type, but not the
182233c89af1Smrg# manufacturer.  We pick the logical manufacturer.
1823352bf44eSmrgcase $vendor in
1824352bf44eSmrg	unknown)
1825352bf44eSmrg		case $cpu-$os in
1826352bf44eSmrg			*-riscix*)
182733c89af1Smrg				vendor=acorn
182833c89af1Smrg				;;
1829352bf44eSmrg			*-sunos*)
183033c89af1Smrg				vendor=sun
183133c89af1Smrg				;;
1832352bf44eSmrg			*-cnk* | *-aix*)
183333c89af1Smrg				vendor=ibm
183433c89af1Smrg				;;
1835352bf44eSmrg			*-beos*)
183633c89af1Smrg				vendor=be
183733c89af1Smrg				;;
1838352bf44eSmrg			*-hpux*)
183933c89af1Smrg				vendor=hp
184033c89af1Smrg				;;
1841352bf44eSmrg			*-mpeix*)
184233c89af1Smrg				vendor=hp
184333c89af1Smrg				;;
1844352bf44eSmrg			*-hiux*)
184533c89af1Smrg				vendor=hitachi
184633c89af1Smrg				;;
1847352bf44eSmrg			*-unos*)
184833c89af1Smrg				vendor=crds
184933c89af1Smrg				;;
1850352bf44eSmrg			*-dgux*)
185133c89af1Smrg				vendor=dg
185233c89af1Smrg				;;
1853352bf44eSmrg			*-luna*)
185433c89af1Smrg				vendor=omron
185533c89af1Smrg				;;
1856352bf44eSmrg			*-genix*)
185733c89af1Smrg				vendor=ns
185833c89af1Smrg				;;
1859352bf44eSmrg			*-clix*)
1860352bf44eSmrg				vendor=intergraph
1861352bf44eSmrg				;;
1862352bf44eSmrg			*-mvs* | *-opened*)
1863352bf44eSmrg				vendor=ibm
1864352bf44eSmrg				;;
1865352bf44eSmrg			*-os400*)
186633c89af1Smrg				vendor=ibm
186733c89af1Smrg				;;
1868352bf44eSmrg			s390-* | s390x-*)
186933c89af1Smrg				vendor=ibm
187033c89af1Smrg				;;
1871352bf44eSmrg			*-ptx*)
187233c89af1Smrg				vendor=sequent
187333c89af1Smrg				;;
1874352bf44eSmrg			*-tpf*)
187533c89af1Smrg				vendor=ibm
187633c89af1Smrg				;;
1877352bf44eSmrg			*-vxsim* | *-vxworks* | *-windiss*)
187833c89af1Smrg				vendor=wrs
187933c89af1Smrg				;;
1880352bf44eSmrg			*-aux*)
188133c89af1Smrg				vendor=apple
188233c89af1Smrg				;;
1883352bf44eSmrg			*-hms*)
188433c89af1Smrg				vendor=hitachi
188533c89af1Smrg				;;
1886352bf44eSmrg			*-mpw* | *-macos*)
188733c89af1Smrg				vendor=apple
188833c89af1Smrg				;;
1889352bf44eSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
189033c89af1Smrg				vendor=atari
189133c89af1Smrg				;;
1892352bf44eSmrg			*-vos*)
189333c89af1Smrg				vendor=stratus
189433c89af1Smrg				;;
189533c89af1Smrg		esac
189633c89af1Smrg		;;
189733c89af1Smrgesac
189833c89af1Smrg
1899352bf44eSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
190033c89af1Smrgexit
190133c89af1Smrg
190233c89af1Smrg# Local variables:
1903352bf44eSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
190433c89af1Smrg# time-stamp-start: "timestamp='"
190533c89af1Smrg# time-stamp-format: "%:y-%02m-%02d"
190633c89af1Smrg# time-stamp-end: "'"
190733c89af1Smrg# End:
1908