config.sub revision 352bf44e
133c89af1Smrg#! /bin/sh
233c89af1Smrg# Configuration validation subroutine script.
3352bf44eSmrg#   Copyright 1992-2021 Free Software Foundation, Inc.
433c89af1Smrg
5352bf44eSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
6352bf44eSmrg
7352bf44eSmrgtimestamp='2021-08-14'
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
11ad47b356Smrg# 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
79352bf44eSmrgCopyright 1992-2021 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* \
148352bf44eSmrg			| storm-chaos* | os2-emx* | rtmk-nova*)
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
1023352bf44eSmrg	dpx20-unknown | dpx20-bull)
1024352bf44eSmrg		cpu=rs6000
1025352bf44eSmrg		vendor=bull
1026352bf44eSmrg		basic_os=${basic_os:-bosx}
102733c89af1Smrg		;;
1028352bf44eSmrg
1029352bf44eSmrg	# Here we normalize CPU types irrespective of the vendor
1030352bf44eSmrg	amd64-*)
1031352bf44eSmrg		cpu=x86_64
1032278eca22Smrg		;;
1033352bf44eSmrg	blackfin-*)
1034352bf44eSmrg		cpu=bfin
1035352bf44eSmrg		basic_os=linux
103633c89af1Smrg		;;
1037352bf44eSmrg	c54x-*)
1038352bf44eSmrg		cpu=tic54x
103933c89af1Smrg		;;
1040352bf44eSmrg	c55x-*)
1041352bf44eSmrg		cpu=tic55x
104233c89af1Smrg		;;
1043352bf44eSmrg	c6x-*)
1044352bf44eSmrg		cpu=tic6x
104533c89af1Smrg		;;
1046352bf44eSmrg	e500v[12]-*)
1047352bf44eSmrg		cpu=powerpc
1048352bf44eSmrg		basic_os=${basic_os}"spe"
104933c89af1Smrg		;;
1050352bf44eSmrg	mips3*-*)
1051352bf44eSmrg		cpu=mips64
105233c89af1Smrg		;;
1053352bf44eSmrg	ms1-*)
1054352bf44eSmrg		cpu=mt
105533c89af1Smrg		;;
1056352bf44eSmrg	m68knommu-*)
1057352bf44eSmrg		cpu=m68k
1058352bf44eSmrg		basic_os=linux
105933c89af1Smrg		;;
1060352bf44eSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
1061352bf44eSmrg		cpu=s12z
106233c89af1Smrg		;;
1063352bf44eSmrg	openrisc-*)
1064352bf44eSmrg		cpu=or32
106533c89af1Smrg		;;
1066352bf44eSmrg	parisc-*)
1067352bf44eSmrg		cpu=hppa
1068352bf44eSmrg		basic_os=linux
106933c89af1Smrg		;;
1070352bf44eSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
1071352bf44eSmrg		cpu=i586
107233c89af1Smrg		;;
1073352bf44eSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
1074352bf44eSmrg		cpu=i686
107533c89af1Smrg		;;
1076352bf44eSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
1077352bf44eSmrg		cpu=i686
107833c89af1Smrg		;;
1079352bf44eSmrg	pentium4-*)
1080352bf44eSmrg		cpu=i786
108133c89af1Smrg		;;
1082352bf44eSmrg	pc98-*)
1083352bf44eSmrg		cpu=i386
108433c89af1Smrg		;;
1085352bf44eSmrg	ppc-* | ppcbe-*)
1086352bf44eSmrg		cpu=powerpc
108733c89af1Smrg		;;
1088352bf44eSmrg	ppcle-* | powerpclittle-*)
1089352bf44eSmrg		cpu=powerpcle
109033c89af1Smrg		;;
1091352bf44eSmrg	ppc64-*)
1092352bf44eSmrg		cpu=powerpc64
1093988795beSmrg		;;
1094352bf44eSmrg	ppc64le-* | powerpc64little-*)
1095352bf44eSmrg		cpu=powerpc64le
109633c89af1Smrg		;;
1097352bf44eSmrg	sb1-*)
1098352bf44eSmrg		cpu=mipsisa64sb1
109933c89af1Smrg		;;
1100352bf44eSmrg	sb1el-*)
1101352bf44eSmrg		cpu=mipsisa64sb1el
1102278eca22Smrg		;;
1103352bf44eSmrg	sh5e[lb]-*)
1104352bf44eSmrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
110533c89af1Smrg		;;
1106352bf44eSmrg	spur-*)
1107352bf44eSmrg		cpu=spur
110833c89af1Smrg		;;
1109352bf44eSmrg	strongarm-* | thumb-*)
1110352bf44eSmrg		cpu=arm
111133c89af1Smrg		;;
1112352bf44eSmrg	tx39-*)
1113352bf44eSmrg		cpu=mipstx39
111433c89af1Smrg		;;
1115352bf44eSmrg	tx39el-*)
1116352bf44eSmrg		cpu=mipstx39el
111733c89af1Smrg		;;
1118352bf44eSmrg	x64-*)
1119352bf44eSmrg		cpu=x86_64
112033c89af1Smrg		;;
1121352bf44eSmrg	xscale-* | xscalee[bl]-*)
1122352bf44eSmrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
112333c89af1Smrg		;;
1124352bf44eSmrg	arm64-*)
1125352bf44eSmrg		cpu=aarch64
112633c89af1Smrg		;;
1127352bf44eSmrg
1128352bf44eSmrg	# Recognize the canonical CPU Types that limit and/or modify the
1129352bf44eSmrg	# company names they are paired with.
1130352bf44eSmrg	cr16-*)
1131352bf44eSmrg		basic_os=${basic_os:-elf}
113233c89af1Smrg		;;
1133352bf44eSmrg	crisv32-* | etraxfs*-*)
1134352bf44eSmrg		cpu=crisv32
1135352bf44eSmrg		vendor=axis
113633c89af1Smrg		;;
1137352bf44eSmrg	cris-* | etrax*-*)
1138352bf44eSmrg		cpu=cris
1139352bf44eSmrg		vendor=axis
114033c89af1Smrg		;;
1141352bf44eSmrg	crx-*)
1142352bf44eSmrg		basic_os=${basic_os:-elf}
114333c89af1Smrg		;;
1144352bf44eSmrg	neo-tandem)
1145352bf44eSmrg		cpu=neo
1146352bf44eSmrg		vendor=tandem
114733c89af1Smrg		;;
1148352bf44eSmrg	nse-tandem)
1149352bf44eSmrg		cpu=nse
1150352bf44eSmrg		vendor=tandem
115133c89af1Smrg		;;
1152352bf44eSmrg	nsr-tandem)
1153352bf44eSmrg		cpu=nsr
1154352bf44eSmrg		vendor=tandem
115533c89af1Smrg		;;
1156352bf44eSmrg	nsv-tandem)
1157352bf44eSmrg		cpu=nsv
1158352bf44eSmrg		vendor=tandem
115933c89af1Smrg		;;
1160352bf44eSmrg	nsx-tandem)
1161352bf44eSmrg		cpu=nsx
1162352bf44eSmrg		vendor=tandem
116333c89af1Smrg		;;
1164352bf44eSmrg	mipsallegrexel-sony)
1165352bf44eSmrg		cpu=mipsallegrexel
1166352bf44eSmrg		vendor=sony
116733c89af1Smrg		;;
1168352bf44eSmrg	tile*-*)
1169352bf44eSmrg		basic_os=${basic_os:-linux-gnu}
117033c89af1Smrg		;;
1171352bf44eSmrg
117233c89af1Smrg	*)
1173352bf44eSmrg		# Recognize the canonical CPU types that are allowed with any
1174352bf44eSmrg		# company name.
1175352bf44eSmrg		case $cpu in
1176352bf44eSmrg			1750a | 580 \
1177352bf44eSmrg			| a29k \
1178352bf44eSmrg			| aarch64 | aarch64_be \
1179352bf44eSmrg			| abacus \
1180352bf44eSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
1181352bf44eSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
1182352bf44eSmrg			| alphapca5[67] | alpha64pca5[67] \
1183352bf44eSmrg			| am33_2.0 \
1184352bf44eSmrg			| amdgcn \
1185352bf44eSmrg			| arc | arceb | arc32 | arc64 \
1186352bf44eSmrg			| arm | arm[lb]e | arme[lb] | armv* \
1187352bf44eSmrg			| avr | avr32 \
1188352bf44eSmrg			| asmjs \
1189352bf44eSmrg			| ba \
1190352bf44eSmrg			| be32 | be64 \
1191352bf44eSmrg			| bfin | bpf | bs2000 \
1192352bf44eSmrg			| c[123]* | c30 | [cjt]90 | c4x \
1193352bf44eSmrg			| c8051 | clipper | craynv | csky | cydra \
1194352bf44eSmrg			| d10v | d30v | dlx | dsp16xx \
1195352bf44eSmrg			| e2k | elxsi | epiphany \
1196352bf44eSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
1197352bf44eSmrg			| h8300 | h8500 \
1198352bf44eSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
1199352bf44eSmrg			| hexagon \
1200352bf44eSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
1201352bf44eSmrg			| ip2k | iq2000 \
1202352bf44eSmrg			| k1om \
1203352bf44eSmrg			| le32 | le64 \
1204352bf44eSmrg			| lm32 \
1205352bf44eSmrg			| loongarch32 | loongarch64 | loongarchx32 \
1206352bf44eSmrg			| m32c | m32r | m32rle \
1207352bf44eSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
1208352bf44eSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
1209352bf44eSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
1210352bf44eSmrg			| microblaze | microblazeel \
1211352bf44eSmrg			| mips | mipsbe | mipseb | mipsel | mipsle \
1212352bf44eSmrg			| mips16 \
1213352bf44eSmrg			| mips64 | mips64eb | mips64el \
1214352bf44eSmrg			| mips64octeon | mips64octeonel \
1215352bf44eSmrg			| mips64orion | mips64orionel \
1216352bf44eSmrg			| mips64r5900 | mips64r5900el \
1217352bf44eSmrg			| mips64vr | mips64vrel \
1218352bf44eSmrg			| mips64vr4100 | mips64vr4100el \
1219352bf44eSmrg			| mips64vr4300 | mips64vr4300el \
1220352bf44eSmrg			| mips64vr5000 | mips64vr5000el \
1221352bf44eSmrg			| mips64vr5900 | mips64vr5900el \
1222352bf44eSmrg			| mipsisa32 | mipsisa32el \
1223352bf44eSmrg			| mipsisa32r2 | mipsisa32r2el \
1224352bf44eSmrg			| mipsisa32r3 | mipsisa32r3el \
1225352bf44eSmrg			| mipsisa32r5 | mipsisa32r5el \
1226352bf44eSmrg			| mipsisa32r6 | mipsisa32r6el \
1227352bf44eSmrg			| mipsisa64 | mipsisa64el \
1228352bf44eSmrg			| mipsisa64r2 | mipsisa64r2el \
1229352bf44eSmrg			| mipsisa64r3 | mipsisa64r3el \
1230352bf44eSmrg			| mipsisa64r5 | mipsisa64r5el \
1231352bf44eSmrg			| mipsisa64r6 | mipsisa64r6el \
1232352bf44eSmrg			| mipsisa64sb1 | mipsisa64sb1el \
1233352bf44eSmrg			| mipsisa64sr71k | mipsisa64sr71kel \
1234352bf44eSmrg			| mipsr5900 | mipsr5900el \
1235352bf44eSmrg			| mipstx39 | mipstx39el \
1236352bf44eSmrg			| mmix \
1237352bf44eSmrg			| mn10200 | mn10300 \
1238352bf44eSmrg			| moxie \
1239352bf44eSmrg			| mt \
1240352bf44eSmrg			| msp430 \
1241352bf44eSmrg			| nds32 | nds32le | nds32be \
1242352bf44eSmrg			| nfp \
1243352bf44eSmrg			| nios | nios2 | nios2eb | nios2el \
1244352bf44eSmrg			| none | np1 | ns16k | ns32k | nvptx \
1245352bf44eSmrg			| open8 \
1246352bf44eSmrg			| or1k* \
1247352bf44eSmrg			| or32 \
1248352bf44eSmrg			| orion \
1249352bf44eSmrg			| picochip \
1250352bf44eSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
1251352bf44eSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
1252352bf44eSmrg			| pru \
1253352bf44eSmrg			| pyramid \
1254352bf44eSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
1255352bf44eSmrg			| rl78 | romp | rs6000 | rx \
1256352bf44eSmrg			| s390 | s390x \
1257352bf44eSmrg			| score \
1258352bf44eSmrg			| sh | shl \
1259352bf44eSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
1260352bf44eSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
1261352bf44eSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
1262352bf44eSmrg			| sparclite \
1263352bf44eSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
1264352bf44eSmrg			| spu \
1265352bf44eSmrg			| tahoe \
1266352bf44eSmrg			| thumbv7* \
1267352bf44eSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
1268352bf44eSmrg			| tron \
1269352bf44eSmrg			| ubicom32 \
1270352bf44eSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
1271352bf44eSmrg			| vax \
1272352bf44eSmrg			| visium \
1273352bf44eSmrg			| w65 \
1274352bf44eSmrg			| wasm32 | wasm64 \
1275352bf44eSmrg			| we32k \
1276352bf44eSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
1277352bf44eSmrg			| xstormy16 | xtensa* \
1278352bf44eSmrg			| ymp \
1279352bf44eSmrg			| z8k | z80)
1280352bf44eSmrg				;;
1281352bf44eSmrg
1282352bf44eSmrg			*)
1283352bf44eSmrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
1284352bf44eSmrg				exit 1
1285352bf44eSmrg				;;
1286352bf44eSmrg		esac
128733c89af1Smrg		;;
128833c89af1Smrgesac
128933c89af1Smrg
129033c89af1Smrg# Here we canonicalize certain aliases for manufacturers.
1291352bf44eSmrgcase $vendor in
1292352bf44eSmrg	digital*)
1293352bf44eSmrg		vendor=dec
129433c89af1Smrg		;;
1295352bf44eSmrg	commodore*)
1296352bf44eSmrg		vendor=cbm
129733c89af1Smrg		;;
129833c89af1Smrg	*)
129933c89af1Smrg		;;
130033c89af1Smrgesac
130133c89af1Smrg
130233c89af1Smrg# Decode manufacturer-specific aliases for certain operating systems.
130333c89af1Smrg
1304352bf44eSmrgif test x$basic_os != x
130533c89af1Smrgthen
1306352bf44eSmrg
1307352bf44eSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
1308352bf44eSmrg# set os.
1309352bf44eSmrgcase $basic_os in
1310352bf44eSmrg	gnu/linux*)
1311352bf44eSmrg		kernel=linux
1312352bf44eSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
1313352bf44eSmrg		;;
1314352bf44eSmrg	os2-emx)
1315352bf44eSmrg		kernel=os2
1316352bf44eSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
1317352bf44eSmrg		;;
1318352bf44eSmrg	nto-qnx*)
1319352bf44eSmrg		kernel=nto
1320352bf44eSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
1321352bf44eSmrg		;;
1322352bf44eSmrg	*-*)
1323352bf44eSmrg		# shellcheck disable=SC2162
1324352bf44eSmrg		saved_IFS=$IFS
1325352bf44eSmrg		IFS="-" read kernel os <<EOF
1326352bf44eSmrg$basic_os
1327352bf44eSmrgEOF
1328352bf44eSmrg		IFS=$saved_IFS
1329352bf44eSmrg		;;
1330352bf44eSmrg	# Default OS when just kernel was specified
1331352bf44eSmrg	nto*)
1332352bf44eSmrg		kernel=nto
1333352bf44eSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
1334352bf44eSmrg		;;
1335352bf44eSmrg	linux*)
1336352bf44eSmrg		kernel=linux
1337352bf44eSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
1338352bf44eSmrg		;;
1339352bf44eSmrg	*)
1340352bf44eSmrg		kernel=
1341352bf44eSmrg		os=$basic_os
1342352bf44eSmrg		;;
1343352bf44eSmrgesac
1344352bf44eSmrg
1345352bf44eSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
1346352bf44eSmrg# etc.)
134733c89af1Smrgcase $os in
1348352bf44eSmrg	# First match some system type aliases that might get confused
1349352bf44eSmrg	# with valid system types.
1350352bf44eSmrg	# solaris* is a basic system type, with this one exception.
1351352bf44eSmrg	auroraux)
1352352bf44eSmrg		os=auroraux
135316d8e44fSmrg		;;
1354352bf44eSmrg	bluegene*)
1355352bf44eSmrg		os=cnk
135633c89af1Smrg		;;
1357352bf44eSmrg	solaris1 | solaris1.*)
1358352bf44eSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
135933c89af1Smrg		;;
1360352bf44eSmrg	solaris)
1361352bf44eSmrg		os=solaris2
136233c89af1Smrg		;;
1363352bf44eSmrg	unixware*)
1364352bf44eSmrg		os=sysv4.2uw
136533c89af1Smrg		;;
1366352bf44eSmrg	# es1800 is here to avoid being matched by es* (a different OS)
1367352bf44eSmrg	es1800*)
1368352bf44eSmrg		os=ose
136933c89af1Smrg		;;
1370352bf44eSmrg	# Some version numbers need modification
1371352bf44eSmrg	chorusos*)
1372352bf44eSmrg		os=chorusos
137333c89af1Smrg		;;
1374352bf44eSmrg	isc)
1375352bf44eSmrg		os=isc2.2
137633c89af1Smrg		;;
1377352bf44eSmrg	sco6)
1378352bf44eSmrg		os=sco5v6
137933c89af1Smrg		;;
1380352bf44eSmrg	sco5)
1381352bf44eSmrg		os=sco3.2v5
138233c89af1Smrg		;;
1383352bf44eSmrg	sco4)
1384352bf44eSmrg		os=sco3.2v4
138533c89af1Smrg		;;
1386352bf44eSmrg	sco3.2.[4-9]*)
1387352bf44eSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
138833c89af1Smrg		;;
1389352bf44eSmrg	sco*v* | scout)
1390352bf44eSmrg		# Don't match below
139133c89af1Smrg		;;
1392352bf44eSmrg	sco*)
1393352bf44eSmrg		os=sco3.2v2
139433c89af1Smrg		;;
1395352bf44eSmrg	psos*)
1396352bf44eSmrg		os=psos
139733c89af1Smrg		;;
1398352bf44eSmrg	qnx*)
1399352bf44eSmrg		os=qnx
140033c89af1Smrg		;;
1401352bf44eSmrg	hiux*)
1402352bf44eSmrg		os=hiuxwe2
140333c89af1Smrg		;;
1404352bf44eSmrg	lynx*178)
1405352bf44eSmrg		os=lynxos178
140633c89af1Smrg		;;
1407352bf44eSmrg	lynx*5)
1408352bf44eSmrg		os=lynxos5
140933c89af1Smrg		;;
1410352bf44eSmrg	lynxos*)
1411352bf44eSmrg		# don't get caught up in next wildcard
141233c89af1Smrg		;;
1413352bf44eSmrg	lynx*)
1414352bf44eSmrg		os=lynxos
141533c89af1Smrg		;;
1416352bf44eSmrg	mac[0-9]*)
1417352bf44eSmrg		os=`echo "$os" | sed -e 's|mac|macos|'`
141833c89af1Smrg		;;
1419352bf44eSmrg	opened*)
1420352bf44eSmrg		os=openedition
142133c89af1Smrg		;;
1422352bf44eSmrg	os400*)
1423352bf44eSmrg		os=os400
142433c89af1Smrg		;;
1425352bf44eSmrg	sunos5*)
1426352bf44eSmrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
142733c89af1Smrg		;;
1428352bf44eSmrg	sunos6*)
1429352bf44eSmrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
143033c89af1Smrg		;;
1431352bf44eSmrg	wince*)
1432352bf44eSmrg		os=wince
143333c89af1Smrg		;;
1434352bf44eSmrg	utek*)
1435352bf44eSmrg		os=bsd
143633c89af1Smrg		;;
1437352bf44eSmrg	dynix*)
1438352bf44eSmrg		os=bsd
143933c89af1Smrg		;;
1440352bf44eSmrg	acis*)
1441352bf44eSmrg		os=aos
144233c89af1Smrg		;;
1443352bf44eSmrg	atheos*)
1444352bf44eSmrg		os=atheos
144533c89af1Smrg		;;
1446352bf44eSmrg	syllable*)
1447352bf44eSmrg		os=syllable
144833c89af1Smrg		;;
1449352bf44eSmrg	386bsd)
1450352bf44eSmrg		os=bsd
145133c89af1Smrg		;;
1452352bf44eSmrg	ctix* | uts*)
1453352bf44eSmrg		os=sysv
145433c89af1Smrg		;;
1455352bf44eSmrg	nova*)
1456352bf44eSmrg		os=rtmk-nova
145733c89af1Smrg		;;
1458352bf44eSmrg	ns2)
1459352bf44eSmrg		os=nextstep2
146033c89af1Smrg		;;
1461352bf44eSmrg	# Preserve the version number of sinix5.
1462352bf44eSmrg	sinix5.*)
1463352bf44eSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
146433c89af1Smrg		;;
1465352bf44eSmrg	sinix*)
1466352bf44eSmrg		os=sysv4
146733c89af1Smrg		;;
1468352bf44eSmrg	tpf*)
1469352bf44eSmrg		os=tpf
147033c89af1Smrg		;;
1471352bf44eSmrg	triton*)
1472352bf44eSmrg		os=sysv3
147333c89af1Smrg		;;
1474352bf44eSmrg	oss*)
1475352bf44eSmrg		os=sysv3
147633c89af1Smrg		;;
1477352bf44eSmrg	svr4*)
1478352bf44eSmrg		os=sysv4
147933c89af1Smrg		;;
1480352bf44eSmrg	svr3)
1481352bf44eSmrg		os=sysv3
148233c89af1Smrg		;;
1483352bf44eSmrg	sysvr4)
1484352bf44eSmrg		os=sysv4
148533c89af1Smrg		;;
1486352bf44eSmrg	ose*)
1487352bf44eSmrg		os=ose
148833c89af1Smrg		;;
1489352bf44eSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
1490352bf44eSmrg		os=mint
1491278eca22Smrg		;;
1492352bf44eSmrg	dicos*)
1493352bf44eSmrg		os=dicos
1494988795beSmrg		;;
1495352bf44eSmrg	pikeos*)
1496352bf44eSmrg		# Until real need of OS specific support for
1497352bf44eSmrg		# particular features comes up, bare metal
1498352bf44eSmrg		# configurations are quite functional.
1499352bf44eSmrg		case $cpu in
1500352bf44eSmrg		    arm*)
1501352bf44eSmrg			os=eabi
1502352bf44eSmrg			;;
1503352bf44eSmrg		    *)
1504352bf44eSmrg			os=elf
1505352bf44eSmrg			;;
1506352bf44eSmrg		esac
150733c89af1Smrg		;;
150833c89af1Smrg	*)
1509352bf44eSmrg		# No normalization, but not necessarily accepted, that comes below.
151033c89af1Smrg		;;
151133c89af1Smrgesac
1512352bf44eSmrg
151333c89af1Smrgelse
151433c89af1Smrg
151533c89af1Smrg# Here we handle the default operating systems that come with various machines.
151633c89af1Smrg# The value should be what the vendor currently ships out the door with their
151733c89af1Smrg# machine or put another way, the most popular os provided with the machine.
151833c89af1Smrg
151933c89af1Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
152033c89af1Smrg# "-sun"), then you have to tell the case statement up towards the top
152133c89af1Smrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
152233c89af1Smrg# will signal an error saying that MANUFACTURER isn't an operating
152333c89af1Smrg# system, and we'll never get to this point.
152433c89af1Smrg
1525352bf44eSmrgkernel=
1526352bf44eSmrgcase $cpu-$vendor in
1527988795beSmrg	score-*)
1528352bf44eSmrg		os=elf
152933c89af1Smrg		;;
1530988795beSmrg	spu-*)
1531352bf44eSmrg		os=elf
153233c89af1Smrg		;;
153333c89af1Smrg	*-acorn)
1534352bf44eSmrg		os=riscix1.2
153533c89af1Smrg		;;
153633c89af1Smrg	arm*-rebel)
1537352bf44eSmrg		kernel=linux
1538352bf44eSmrg		os=gnu
153933c89af1Smrg		;;
154033c89af1Smrg	arm*-semi)
1541352bf44eSmrg		os=aout
154233c89af1Smrg		;;
1543988795beSmrg	c4x-* | tic4x-*)
1544352bf44eSmrg		os=coff
154533c89af1Smrg		;;
1546ad47b356Smrg	c8051-*)
1547352bf44eSmrg		os=elf
1548352bf44eSmrg		;;
1549352bf44eSmrg	clipper-intergraph)
1550352bf44eSmrg		os=clix
1551ad47b356Smrg		;;
1552ad47b356Smrg	hexagon-*)
1553352bf44eSmrg		os=elf
1554ad47b356Smrg		;;
155516d8e44fSmrg	tic54x-*)
1556352bf44eSmrg		os=coff
155716d8e44fSmrg		;;
155816d8e44fSmrg	tic55x-*)
1559352bf44eSmrg		os=coff
156016d8e44fSmrg		;;
156116d8e44fSmrg	tic6x-*)
1562352bf44eSmrg		os=coff
156316d8e44fSmrg		;;
156433c89af1Smrg	# This must come before the *-dec entry.
156533c89af1Smrg	pdp10-*)
1566352bf44eSmrg		os=tops20
156733c89af1Smrg		;;
156833c89af1Smrg	pdp11-*)
1569352bf44eSmrg		os=none
157033c89af1Smrg		;;
157133c89af1Smrg	*-dec | vax-*)
1572352bf44eSmrg		os=ultrix4.2
157333c89af1Smrg		;;
157433c89af1Smrg	m68*-apollo)
1575352bf44eSmrg		os=domain
157633c89af1Smrg		;;
157733c89af1Smrg	i386-sun)
1578352bf44eSmrg		os=sunos4.0.2
157933c89af1Smrg		;;
158033c89af1Smrg	m68000-sun)
1581352bf44eSmrg		os=sunos3
158233c89af1Smrg		;;
158333c89af1Smrg	m68*-cisco)
1584352bf44eSmrg		os=aout
158533c89af1Smrg		;;
1586988795beSmrg	mep-*)
1587352bf44eSmrg		os=elf
1588278eca22Smrg		;;
158933c89af1Smrg	mips*-cisco)
1590352bf44eSmrg		os=elf
159133c89af1Smrg		;;
159233c89af1Smrg	mips*-*)
1593352bf44eSmrg		os=elf
159433c89af1Smrg		;;
159533c89af1Smrg	or32-*)
1596352bf44eSmrg		os=coff
159733c89af1Smrg		;;
159833c89af1Smrg	*-tti)	# must be before sparc entry or we get the wrong os.
1599352bf44eSmrg		os=sysv3
160033c89af1Smrg		;;
160133c89af1Smrg	sparc-* | *-sun)
1602352bf44eSmrg		os=sunos4.1.1
160333c89af1Smrg		;;
1604352bf44eSmrg	pru-*)
1605352bf44eSmrg		os=elf
160633c89af1Smrg		;;
1607352bf44eSmrg	*-be)
1608352bf44eSmrg		os=beos
160933c89af1Smrg		;;
161033c89af1Smrg	*-ibm)
1611352bf44eSmrg		os=aix
161233c89af1Smrg		;;
1613988795beSmrg	*-knuth)
1614352bf44eSmrg		os=mmixware
161533c89af1Smrg		;;
161633c89af1Smrg	*-wec)
1617352bf44eSmrg		os=proelf
161833c89af1Smrg		;;
161933c89af1Smrg	*-winbond)
1620352bf44eSmrg		os=proelf
162133c89af1Smrg		;;
162233c89af1Smrg	*-oki)
1623352bf44eSmrg		os=proelf
162433c89af1Smrg		;;
162533c89af1Smrg	*-hp)
1626352bf44eSmrg		os=hpux
162733c89af1Smrg		;;
162833c89af1Smrg	*-hitachi)
1629352bf44eSmrg		os=hiux
163033c89af1Smrg		;;
163133c89af1Smrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
1632352bf44eSmrg		os=sysv
163333c89af1Smrg		;;
163433c89af1Smrg	*-cbm)
1635352bf44eSmrg		os=amigaos
163633c89af1Smrg		;;
163733c89af1Smrg	*-dg)
1638352bf44eSmrg		os=dgux
163933c89af1Smrg		;;
164033c89af1Smrg	*-dolphin)
1641352bf44eSmrg		os=sysv3
164233c89af1Smrg		;;
164333c89af1Smrg	m68k-ccur)
1644352bf44eSmrg		os=rtu
164533c89af1Smrg		;;
164633c89af1Smrg	m88k-omron*)
1647352bf44eSmrg		os=luna
164833c89af1Smrg		;;
1649352bf44eSmrg	*-next)
1650352bf44eSmrg		os=nextstep
165133c89af1Smrg		;;
165233c89af1Smrg	*-sequent)
1653352bf44eSmrg		os=ptx
165433c89af1Smrg		;;
165533c89af1Smrg	*-crds)
1656352bf44eSmrg		os=unos
165733c89af1Smrg		;;
165833c89af1Smrg	*-ns)
1659352bf44eSmrg		os=genix
166033c89af1Smrg		;;
166133c89af1Smrg	i370-*)
1662352bf44eSmrg		os=mvs
166333c89af1Smrg		;;
166433c89af1Smrg	*-gould)
1665352bf44eSmrg		os=sysv
166633c89af1Smrg		;;
166733c89af1Smrg	*-highlevel)
1668352bf44eSmrg		os=bsd
166933c89af1Smrg		;;
167033c89af1Smrg	*-encore)
1671352bf44eSmrg		os=bsd
167233c89af1Smrg		;;
167333c89af1Smrg	*-sgi)
1674352bf44eSmrg		os=irix
167533c89af1Smrg		;;
167633c89af1Smrg	*-siemens)
1677352bf44eSmrg		os=sysv4
167833c89af1Smrg		;;
167933c89af1Smrg	*-masscomp)
1680352bf44eSmrg		os=rtu
168133c89af1Smrg		;;
168233c89af1Smrg	f30[01]-fujitsu | f700-fujitsu)
1683352bf44eSmrg		os=uxpv
168433c89af1Smrg		;;
168533c89af1Smrg	*-rom68k)
1686352bf44eSmrg		os=coff
168733c89af1Smrg		;;
168833c89af1Smrg	*-*bug)
1689352bf44eSmrg		os=coff
169033c89af1Smrg		;;
169133c89af1Smrg	*-apple)
1692352bf44eSmrg		os=macos
169333c89af1Smrg		;;
169433c89af1Smrg	*-atari*)
1695352bf44eSmrg		os=mint
1696352bf44eSmrg		;;
1697352bf44eSmrg	*-wrs)
1698352bf44eSmrg		os=vxworks
169933c89af1Smrg		;;
170033c89af1Smrg	*)
1701352bf44eSmrg		os=none
170233c89af1Smrg		;;
170333c89af1Smrgesac
1704352bf44eSmrg
170533c89af1Smrgfi
170633c89af1Smrg
1707352bf44eSmrg# Now, validate our (potentially fixed-up) OS.
1708352bf44eSmrgcase $os in
1709352bf44eSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
1710352bf44eSmrg	musl* | newlib* | relibc* | uclibc*)
1711352bf44eSmrg		;;
1712352bf44eSmrg	# Likewise for "kernel-abi"
1713352bf44eSmrg	eabi* | gnueabi*)
1714352bf44eSmrg		;;
1715352bf44eSmrg	# VxWorks passes extra cpu info in the 4th filed.
1716352bf44eSmrg	simlinux | simwindows | spe)
1717352bf44eSmrg		;;
1718352bf44eSmrg	# Now accept the basic system types.
1719352bf44eSmrg	# The portable systems comes first.
1720352bf44eSmrg	# Each alternative MUST end in a * to match a version number.
1721352bf44eSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
1722352bf44eSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
1723352bf44eSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
1724352bf44eSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
1725352bf44eSmrg	     | hiux* | abug | nacl* | netware* | windows* \
1726352bf44eSmrg	     | os9* | macos* | osx* | ios* \
1727352bf44eSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
1728352bf44eSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
1729352bf44eSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
1730352bf44eSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
1731352bf44eSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
1732352bf44eSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
1733352bf44eSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
1734352bf44eSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
1735352bf44eSmrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
1736352bf44eSmrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
1737352bf44eSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
1738352bf44eSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
1739352bf44eSmrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
1740352bf44eSmrg	     | midipix* | mingw32* | mingw64* | mint* \
1741352bf44eSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
1742352bf44eSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
1743352bf44eSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
1744352bf44eSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
1745352bf44eSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
1746352bf44eSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
1747352bf44eSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
1748352bf44eSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
1749352bf44eSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
1750352bf44eSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
1751352bf44eSmrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*)
1752352bf44eSmrg		;;
1753352bf44eSmrg	# This one is extra strict with allowed versions
1754352bf44eSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
1755352bf44eSmrg		# Don't forget version if it is 3.2v4 or newer.
1756352bf44eSmrg		;;
1757352bf44eSmrg	none)
1758352bf44eSmrg		;;
1759352bf44eSmrg	*)
1760352bf44eSmrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
1761352bf44eSmrg		exit 1
1762352bf44eSmrg		;;
1763352bf44eSmrgesac
1764352bf44eSmrg
1765352bf44eSmrg# As a final step for OS-related things, validate the OS-kernel combination
1766352bf44eSmrg# (given a valid OS), if there is a kernel.
1767352bf44eSmrgcase $kernel-$os in
1768352bf44eSmrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
1769352bf44eSmrg		   | linux-musl* | linux-relibc* | linux-uclibc* )
1770352bf44eSmrg		;;
1771352bf44eSmrg	uclinux-uclibc* )
1772352bf44eSmrg		;;
1773352bf44eSmrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
1774352bf44eSmrg		# These are just libc implementations, not actual OSes, and thus
1775352bf44eSmrg		# require a kernel.
1776352bf44eSmrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
1777352bf44eSmrg		exit 1
1778352bf44eSmrg		;;
1779352bf44eSmrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
1780352bf44eSmrg		;;
1781352bf44eSmrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
1782352bf44eSmrg		;;
1783352bf44eSmrg	nto-qnx*)
1784352bf44eSmrg		;;
1785352bf44eSmrg	os2-emx)
1786352bf44eSmrg		;;
1787352bf44eSmrg	*-eabi* | *-gnueabi*)
1788352bf44eSmrg		;;
1789352bf44eSmrg	-*)
1790352bf44eSmrg		# Blank kernel with real OS is always fine.
1791352bf44eSmrg		;;
1792352bf44eSmrg	*-*)
1793352bf44eSmrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
1794352bf44eSmrg		exit 1
1795352bf44eSmrg		;;
1796352bf44eSmrgesac
1797352bf44eSmrg
179833c89af1Smrg# Here we handle the case where we know the os, and the CPU type, but not the
179933c89af1Smrg# manufacturer.  We pick the logical manufacturer.
1800352bf44eSmrgcase $vendor in
1801352bf44eSmrg	unknown)
1802352bf44eSmrg		case $cpu-$os in
1803352bf44eSmrg			*-riscix*)
180433c89af1Smrg				vendor=acorn
180533c89af1Smrg				;;
1806352bf44eSmrg			*-sunos*)
180733c89af1Smrg				vendor=sun
180833c89af1Smrg				;;
1809352bf44eSmrg			*-cnk* | *-aix*)
181033c89af1Smrg				vendor=ibm
181133c89af1Smrg				;;
1812352bf44eSmrg			*-beos*)
181333c89af1Smrg				vendor=be
181433c89af1Smrg				;;
1815352bf44eSmrg			*-hpux*)
181633c89af1Smrg				vendor=hp
181733c89af1Smrg				;;
1818352bf44eSmrg			*-mpeix*)
181933c89af1Smrg				vendor=hp
182033c89af1Smrg				;;
1821352bf44eSmrg			*-hiux*)
182233c89af1Smrg				vendor=hitachi
182333c89af1Smrg				;;
1824352bf44eSmrg			*-unos*)
182533c89af1Smrg				vendor=crds
182633c89af1Smrg				;;
1827352bf44eSmrg			*-dgux*)
182833c89af1Smrg				vendor=dg
182933c89af1Smrg				;;
1830352bf44eSmrg			*-luna*)
183133c89af1Smrg				vendor=omron
183233c89af1Smrg				;;
1833352bf44eSmrg			*-genix*)
183433c89af1Smrg				vendor=ns
183533c89af1Smrg				;;
1836352bf44eSmrg			*-clix*)
1837352bf44eSmrg				vendor=intergraph
1838352bf44eSmrg				;;
1839352bf44eSmrg			*-mvs* | *-opened*)
1840352bf44eSmrg				vendor=ibm
1841352bf44eSmrg				;;
1842352bf44eSmrg			*-os400*)
184333c89af1Smrg				vendor=ibm
184433c89af1Smrg				;;
1845352bf44eSmrg			s390-* | s390x-*)
184633c89af1Smrg				vendor=ibm
184733c89af1Smrg				;;
1848352bf44eSmrg			*-ptx*)
184933c89af1Smrg				vendor=sequent
185033c89af1Smrg				;;
1851352bf44eSmrg			*-tpf*)
185233c89af1Smrg				vendor=ibm
185333c89af1Smrg				;;
1854352bf44eSmrg			*-vxsim* | *-vxworks* | *-windiss*)
185533c89af1Smrg				vendor=wrs
185633c89af1Smrg				;;
1857352bf44eSmrg			*-aux*)
185833c89af1Smrg				vendor=apple
185933c89af1Smrg				;;
1860352bf44eSmrg			*-hms*)
186133c89af1Smrg				vendor=hitachi
186233c89af1Smrg				;;
1863352bf44eSmrg			*-mpw* | *-macos*)
186433c89af1Smrg				vendor=apple
186533c89af1Smrg				;;
1866352bf44eSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
186733c89af1Smrg				vendor=atari
186833c89af1Smrg				;;
1869352bf44eSmrg			*-vos*)
187033c89af1Smrg				vendor=stratus
187133c89af1Smrg				;;
187233c89af1Smrg		esac
187333c89af1Smrg		;;
187433c89af1Smrgesac
187533c89af1Smrg
1876352bf44eSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
187733c89af1Smrgexit
187833c89af1Smrg
187933c89af1Smrg# Local variables:
1880352bf44eSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
188133c89af1Smrg# time-stamp-start: "timestamp='"
188233c89af1Smrg# time-stamp-format: "%:y-%02m-%02d"
188333c89af1Smrg# time-stamp-end: "'"
188433c89af1Smrg# End:
1885