config.sub revision 111ba1da
18ff16396Smrg#! /bin/sh
28ff16396Smrg# Configuration validation subroutine script.
3111ba1daSmrg#   Copyright 1992-2023 Free Software Foundation, Inc.
48ff16396Smrg
5111ba1daSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale
68ff16396Smrg
7111ba1daSmrgtimestamp='2023-01-21'
8111ba1daSmrg
9111ba1daSmrg# This file is free software; you can redistribute it and/or modify it
10111ba1daSmrg# under the terms of the GNU General Public License as published by
11111ba1daSmrg# the Free Software Foundation, either version 3 of the License, or
128ff16396Smrg# (at your option) any later version.
138ff16396Smrg#
14111ba1daSmrg# This program is distributed in the hope that it will be useful, but
15111ba1daSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of
16111ba1daSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17111ba1daSmrg# General Public License for more details.
188ff16396Smrg#
198ff16396Smrg# You should have received a copy of the GNU General Public License
20111ba1daSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
218ff16396Smrg#
228ff16396Smrg# As a special exception to the GNU General Public License, if you
238ff16396Smrg# distribute this file as part of a program that contains a
248ff16396Smrg# configuration script generated by Autoconf, you may include it under
25111ba1daSmrg# the same distribution terms that you use for the rest of that
26111ba1daSmrg# program.  This Exception is an additional permission under section 7
27111ba1daSmrg# of the GNU General Public License, version 3 ("GPLv3").
288ff16396Smrg
298ff16396Smrg
30111ba1daSmrg# Please send patches to <config-patches@gnu.org>.
318ff16396Smrg#
328ff16396Smrg# Configuration subroutine to validate and canonicalize a configuration type.
338ff16396Smrg# Supply the specified configuration type as an argument.
348ff16396Smrg# If it is invalid, we print an error message on stderr and exit with code 1.
358ff16396Smrg# Otherwise, we print the canonical config type on stdout and succeed.
368ff16396Smrg
37d5d8cc55Smrg# You can get the latest version of this script from:
38111ba1daSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
39d5d8cc55Smrg
408ff16396Smrg# This file is supposed to be the same for all GNU packages
418ff16396Smrg# and recognize all the CPU types, system types and aliases
428ff16396Smrg# that are meaningful with *any* GNU software.
438ff16396Smrg# Each package is responsible for reporting which valid configurations
448ff16396Smrg# it does not support.  The user should be able to distinguish
458ff16396Smrg# a failure to support a valid configuration from a meaningless
468ff16396Smrg# configuration.
478ff16396Smrg
488ff16396Smrg# The goal of this file is to map all the various variations of a given
498ff16396Smrg# machine specification into a single specification in the form:
508ff16396Smrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
518ff16396Smrg# or in some cases, the newer four-part form:
528ff16396Smrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
538ff16396Smrg# It is wrong to echo any other type of specification.
548ff16396Smrg
55111ba1daSmrg# The "shellcheck disable" line above the timestamp inhibits complaints
56111ba1daSmrg# about features and limitations of the classic Bourne shell that were
57111ba1daSmrg# superseded or lifted in POSIX.  However, this script identifies a wide
58111ba1daSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and
59111ba1daSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still
60111ba1daSmrg# have a pre-POSIX /bin/sh.
61111ba1daSmrg
628ff16396Smrgme=`echo "$0" | sed -e 's,.*/,,'`
638ff16396Smrg
648ff16396Smrgusage="\
65111ba1daSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
668ff16396Smrg
678ff16396SmrgCanonicalize a configuration name.
688ff16396Smrg
69111ba1daSmrgOptions:
708ff16396Smrg  -h, --help         print this help, then exit
718ff16396Smrg  -t, --time-stamp   print date of last modification, then exit
728ff16396Smrg  -v, --version      print version number, then exit
738ff16396Smrg
748ff16396SmrgReport bugs and patches to <config-patches@gnu.org>."
758ff16396Smrg
768ff16396Smrgversion="\
778ff16396SmrgGNU config.sub ($timestamp)
788ff16396Smrg
79111ba1daSmrgCopyright 1992-2023 Free Software Foundation, Inc.
808ff16396Smrg
818ff16396SmrgThis is free software; see the source for copying conditions.  There is NO
828ff16396Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
838ff16396Smrg
848ff16396Smrghelp="
858ff16396SmrgTry \`$me --help' for more information."
868ff16396Smrg
878ff16396Smrg# Parse command line
888ff16396Smrgwhile test $# -gt 0 ; do
898ff16396Smrg  case $1 in
908ff16396Smrg    --time-stamp | --time* | -t )
918ff16396Smrg       echo "$timestamp" ; exit ;;
928ff16396Smrg    --version | -v )
938ff16396Smrg       echo "$version" ; exit ;;
948ff16396Smrg    --help | --h* | -h )
958ff16396Smrg       echo "$usage"; exit ;;
968ff16396Smrg    -- )     # Stop option processing
978ff16396Smrg       shift; break ;;
988ff16396Smrg    - )	# Use stdin as input.
998ff16396Smrg       break ;;
1008ff16396Smrg    -* )
101111ba1daSmrg       echo "$me: invalid option $1$help" >&2
1028ff16396Smrg       exit 1 ;;
1038ff16396Smrg
1048ff16396Smrg    *local*)
1058ff16396Smrg       # First pass through any local machine types.
106111ba1daSmrg       echo "$1"
1078ff16396Smrg       exit ;;
1088ff16396Smrg
1098ff16396Smrg    * )
1108ff16396Smrg       break ;;
1118ff16396Smrg  esac
1128ff16396Smrgdone
1138ff16396Smrg
1148ff16396Smrgcase $# in
1158ff16396Smrg 0) echo "$me: missing argument$help" >&2
1168ff16396Smrg    exit 1;;
1178ff16396Smrg 1) ;;
1188ff16396Smrg *) echo "$me: too many arguments$help" >&2
1198ff16396Smrg    exit 1;;
1208ff16396Smrgesac
1218ff16396Smrg
122111ba1daSmrg# Split fields of configuration type
123111ba1daSmrg# shellcheck disable=SC2162
124111ba1daSmrgsaved_IFS=$IFS
125111ba1daSmrgIFS="-" read field1 field2 field3 field4 <<EOF
126111ba1daSmrg$1
127111ba1daSmrgEOF
128111ba1daSmrgIFS=$saved_IFS
1298ff16396Smrg
130111ba1daSmrg# Separate into logical components for further validation
131111ba1daSmrgcase $1 in
132111ba1daSmrg	*-*-*-*-*)
133111ba1daSmrg		echo Invalid configuration \`"$1"\': more than four components >&2
134111ba1daSmrg		exit 1
1358ff16396Smrg		;;
136111ba1daSmrg	*-*-*-*)
137111ba1daSmrg		basic_machine=$field1-$field2
138111ba1daSmrg		basic_os=$field3-$field4
1398ff16396Smrg		;;
140111ba1daSmrg	*-*-*)
141111ba1daSmrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
142111ba1daSmrg		# parts
143111ba1daSmrg		maybe_os=$field2-$field3
144111ba1daSmrg		case $maybe_os in
145111ba1daSmrg			nto-qnx* | linux-* | uclinux-uclibc* \
146111ba1daSmrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
147111ba1daSmrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
148111ba1daSmrg			| storm-chaos* | os2-emx* | rtmk-nova* | managarm-*)
149111ba1daSmrg				basic_machine=$field1
150111ba1daSmrg				basic_os=$maybe_os
151111ba1daSmrg				;;
152111ba1daSmrg			android-linux)
153111ba1daSmrg				basic_machine=$field1-unknown
154111ba1daSmrg				basic_os=linux-android
155111ba1daSmrg				;;
156111ba1daSmrg			*)
157111ba1daSmrg				basic_machine=$field1-$field2
158111ba1daSmrg				basic_os=$field3
159111ba1daSmrg				;;
160111ba1daSmrg		esac
1618ff16396Smrg		;;
162111ba1daSmrg	*-*)
163111ba1daSmrg		# A lone config we happen to match not fitting any pattern
164111ba1daSmrg		case $field1-$field2 in
165111ba1daSmrg			decstation-3100)
166111ba1daSmrg				basic_machine=mips-dec
167111ba1daSmrg				basic_os=
168111ba1daSmrg				;;
169111ba1daSmrg			*-*)
170111ba1daSmrg				# Second component is usually, but not always the OS
171111ba1daSmrg				case $field2 in
172111ba1daSmrg					# Prevent following clause from handling this valid os
173111ba1daSmrg					sun*os*)
174111ba1daSmrg						basic_machine=$field1
175111ba1daSmrg						basic_os=$field2
176111ba1daSmrg						;;
177111ba1daSmrg					zephyr*)
178111ba1daSmrg						basic_machine=$field1-unknown
179111ba1daSmrg						basic_os=$field2
180111ba1daSmrg						;;
181111ba1daSmrg					# Manufacturers
182111ba1daSmrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
183111ba1daSmrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
184111ba1daSmrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
185111ba1daSmrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
186111ba1daSmrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
187111ba1daSmrg					| ultra | tti* | harris | dolphin | highlevel | gould \
188111ba1daSmrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
189111ba1daSmrg					| microblaze* | sim | cisco \
190111ba1daSmrg					| oki | wec | wrs | winbond)
191111ba1daSmrg						basic_machine=$field1-$field2
192111ba1daSmrg						basic_os=
193111ba1daSmrg						;;
194111ba1daSmrg					*)
195111ba1daSmrg						basic_machine=$field1
196111ba1daSmrg						basic_os=$field2
197111ba1daSmrg						;;
198111ba1daSmrg				esac
199111ba1daSmrg			;;
200111ba1daSmrg		esac
2018ff16396Smrg		;;
202111ba1daSmrg	*)
203111ba1daSmrg		# Convert single-component short-hands not valid as part of
204111ba1daSmrg		# multi-component configurations.
205111ba1daSmrg		case $field1 in
206111ba1daSmrg			386bsd)
207111ba1daSmrg				basic_machine=i386-pc
208111ba1daSmrg				basic_os=bsd
209111ba1daSmrg				;;
210111ba1daSmrg			a29khif)
211111ba1daSmrg				basic_machine=a29k-amd
212111ba1daSmrg				basic_os=udi
213111ba1daSmrg				;;
214111ba1daSmrg			adobe68k)
215111ba1daSmrg				basic_machine=m68010-adobe
216111ba1daSmrg				basic_os=scout
217111ba1daSmrg				;;
218111ba1daSmrg			alliant)
219111ba1daSmrg				basic_machine=fx80-alliant
220111ba1daSmrg				basic_os=
221111ba1daSmrg				;;
222111ba1daSmrg			altos | altos3068)
223111ba1daSmrg				basic_machine=m68k-altos
224111ba1daSmrg				basic_os=
225111ba1daSmrg				;;
226111ba1daSmrg			am29k)
227111ba1daSmrg				basic_machine=a29k-none
228111ba1daSmrg				basic_os=bsd
229111ba1daSmrg				;;
230111ba1daSmrg			amdahl)
231111ba1daSmrg				basic_machine=580-amdahl
232111ba1daSmrg				basic_os=sysv
233111ba1daSmrg				;;
234111ba1daSmrg			amiga)
235111ba1daSmrg				basic_machine=m68k-unknown
236111ba1daSmrg				basic_os=
237111ba1daSmrg				;;
238111ba1daSmrg			amigaos | amigados)
239111ba1daSmrg				basic_machine=m68k-unknown
240111ba1daSmrg				basic_os=amigaos
241111ba1daSmrg				;;
242111ba1daSmrg			amigaunix | amix)
243111ba1daSmrg				basic_machine=m68k-unknown
244111ba1daSmrg				basic_os=sysv4
245111ba1daSmrg				;;
246111ba1daSmrg			apollo68)
247111ba1daSmrg				basic_machine=m68k-apollo
248111ba1daSmrg				basic_os=sysv
249111ba1daSmrg				;;
250111ba1daSmrg			apollo68bsd)
251111ba1daSmrg				basic_machine=m68k-apollo
252111ba1daSmrg				basic_os=bsd
253111ba1daSmrg				;;
254111ba1daSmrg			aros)
255111ba1daSmrg				basic_machine=i386-pc
256111ba1daSmrg				basic_os=aros
257111ba1daSmrg				;;
258111ba1daSmrg			aux)
259111ba1daSmrg				basic_machine=m68k-apple
260111ba1daSmrg				basic_os=aux
261111ba1daSmrg				;;
262111ba1daSmrg			balance)
263111ba1daSmrg				basic_machine=ns32k-sequent
264111ba1daSmrg				basic_os=dynix
265111ba1daSmrg				;;
266111ba1daSmrg			blackfin)
267111ba1daSmrg				basic_machine=bfin-unknown
268111ba1daSmrg				basic_os=linux
269111ba1daSmrg				;;
270111ba1daSmrg			cegcc)
271111ba1daSmrg				basic_machine=arm-unknown
272111ba1daSmrg				basic_os=cegcc
273111ba1daSmrg				;;
274111ba1daSmrg			convex-c1)
275111ba1daSmrg				basic_machine=c1-convex
276111ba1daSmrg				basic_os=bsd
277111ba1daSmrg				;;
278111ba1daSmrg			convex-c2)
279111ba1daSmrg				basic_machine=c2-convex
280111ba1daSmrg				basic_os=bsd
281111ba1daSmrg				;;
282111ba1daSmrg			convex-c32)
283111ba1daSmrg				basic_machine=c32-convex
284111ba1daSmrg				basic_os=bsd
285111ba1daSmrg				;;
286111ba1daSmrg			convex-c34)
287111ba1daSmrg				basic_machine=c34-convex
288111ba1daSmrg				basic_os=bsd
289111ba1daSmrg				;;
290111ba1daSmrg			convex-c38)
291111ba1daSmrg				basic_machine=c38-convex
292111ba1daSmrg				basic_os=bsd
293111ba1daSmrg				;;
294111ba1daSmrg			cray)
295111ba1daSmrg				basic_machine=j90-cray
296111ba1daSmrg				basic_os=unicos
297111ba1daSmrg				;;
298111ba1daSmrg			crds | unos)
299111ba1daSmrg				basic_machine=m68k-crds
300111ba1daSmrg				basic_os=
301111ba1daSmrg				;;
302111ba1daSmrg			da30)
303111ba1daSmrg				basic_machine=m68k-da30
304111ba1daSmrg				basic_os=
305111ba1daSmrg				;;
306111ba1daSmrg			decstation | pmax | pmin | dec3100 | decstatn)
307111ba1daSmrg				basic_machine=mips-dec
308111ba1daSmrg				basic_os=
309111ba1daSmrg				;;
310111ba1daSmrg			delta88)
311111ba1daSmrg				basic_machine=m88k-motorola
312111ba1daSmrg				basic_os=sysv3
313111ba1daSmrg				;;
314111ba1daSmrg			dicos)
315111ba1daSmrg				basic_machine=i686-pc
316111ba1daSmrg				basic_os=dicos
317111ba1daSmrg				;;
318111ba1daSmrg			djgpp)
319111ba1daSmrg				basic_machine=i586-pc
320111ba1daSmrg				basic_os=msdosdjgpp
321111ba1daSmrg				;;
322111ba1daSmrg			ebmon29k)
323111ba1daSmrg				basic_machine=a29k-amd
324111ba1daSmrg				basic_os=ebmon
325111ba1daSmrg				;;
326111ba1daSmrg			es1800 | OSE68k | ose68k | ose | OSE)
327111ba1daSmrg				basic_machine=m68k-ericsson
328111ba1daSmrg				basic_os=ose
329111ba1daSmrg				;;
330111ba1daSmrg			gmicro)
331111ba1daSmrg				basic_machine=tron-gmicro
332111ba1daSmrg				basic_os=sysv
333111ba1daSmrg				;;
334111ba1daSmrg			go32)
335111ba1daSmrg				basic_machine=i386-pc
336111ba1daSmrg				basic_os=go32
337111ba1daSmrg				;;
338111ba1daSmrg			h8300hms)
339111ba1daSmrg				basic_machine=h8300-hitachi
340111ba1daSmrg				basic_os=hms
341111ba1daSmrg				;;
342111ba1daSmrg			h8300xray)
343111ba1daSmrg				basic_machine=h8300-hitachi
344111ba1daSmrg				basic_os=xray
345111ba1daSmrg				;;
346111ba1daSmrg			h8500hms)
347111ba1daSmrg				basic_machine=h8500-hitachi
348111ba1daSmrg				basic_os=hms
349111ba1daSmrg				;;
350111ba1daSmrg			harris)
351111ba1daSmrg				basic_machine=m88k-harris
352111ba1daSmrg				basic_os=sysv3
353111ba1daSmrg				;;
354111ba1daSmrg			hp300 | hp300hpux)
355111ba1daSmrg				basic_machine=m68k-hp
356111ba1daSmrg				basic_os=hpux
357111ba1daSmrg				;;
358111ba1daSmrg			hp300bsd)
359111ba1daSmrg				basic_machine=m68k-hp
360111ba1daSmrg				basic_os=bsd
361111ba1daSmrg				;;
362111ba1daSmrg			hppaosf)
363111ba1daSmrg				basic_machine=hppa1.1-hp
364111ba1daSmrg				basic_os=osf
365111ba1daSmrg				;;
366111ba1daSmrg			hppro)
367111ba1daSmrg				basic_machine=hppa1.1-hp
368111ba1daSmrg				basic_os=proelf
369111ba1daSmrg				;;
370111ba1daSmrg			i386mach)
371111ba1daSmrg				basic_machine=i386-mach
372111ba1daSmrg				basic_os=mach
373111ba1daSmrg				;;
374111ba1daSmrg			isi68 | isi)
375111ba1daSmrg				basic_machine=m68k-isi
376111ba1daSmrg				basic_os=sysv
377111ba1daSmrg				;;
378111ba1daSmrg			m68knommu)
379111ba1daSmrg				basic_machine=m68k-unknown
380111ba1daSmrg				basic_os=linux
381111ba1daSmrg				;;
382111ba1daSmrg			magnum | m3230)
383111ba1daSmrg				basic_machine=mips-mips
384111ba1daSmrg				basic_os=sysv
385111ba1daSmrg				;;
386111ba1daSmrg			merlin)
387111ba1daSmrg				basic_machine=ns32k-utek
388111ba1daSmrg				basic_os=sysv
389111ba1daSmrg				;;
390111ba1daSmrg			mingw64)
391111ba1daSmrg				basic_machine=x86_64-pc
392111ba1daSmrg				basic_os=mingw64
393111ba1daSmrg				;;
394111ba1daSmrg			mingw32)
395111ba1daSmrg				basic_machine=i686-pc
396111ba1daSmrg				basic_os=mingw32
397111ba1daSmrg				;;
398111ba1daSmrg			mingw32ce)
399111ba1daSmrg				basic_machine=arm-unknown
400111ba1daSmrg				basic_os=mingw32ce
401111ba1daSmrg				;;
402111ba1daSmrg			monitor)
403111ba1daSmrg				basic_machine=m68k-rom68k
404111ba1daSmrg				basic_os=coff
405111ba1daSmrg				;;
406111ba1daSmrg			morphos)
407111ba1daSmrg				basic_machine=powerpc-unknown
408111ba1daSmrg				basic_os=morphos
409111ba1daSmrg				;;
410111ba1daSmrg			moxiebox)
411111ba1daSmrg				basic_machine=moxie-unknown
412111ba1daSmrg				basic_os=moxiebox
413111ba1daSmrg				;;
414111ba1daSmrg			msdos)
415111ba1daSmrg				basic_machine=i386-pc
416111ba1daSmrg				basic_os=msdos
417111ba1daSmrg				;;
418111ba1daSmrg			msys)
419111ba1daSmrg				basic_machine=i686-pc
420111ba1daSmrg				basic_os=msys
421111ba1daSmrg				;;
422111ba1daSmrg			mvs)
423111ba1daSmrg				basic_machine=i370-ibm
424111ba1daSmrg				basic_os=mvs
425111ba1daSmrg				;;
426111ba1daSmrg			nacl)
427111ba1daSmrg				basic_machine=le32-unknown
428111ba1daSmrg				basic_os=nacl
429111ba1daSmrg				;;
430111ba1daSmrg			ncr3000)
431111ba1daSmrg				basic_machine=i486-ncr
432111ba1daSmrg				basic_os=sysv4
433111ba1daSmrg				;;
434111ba1daSmrg			netbsd386)
435111ba1daSmrg				basic_machine=i386-pc
436111ba1daSmrg				basic_os=netbsd
437111ba1daSmrg				;;
438111ba1daSmrg			netwinder)
439111ba1daSmrg				basic_machine=armv4l-rebel
440111ba1daSmrg				basic_os=linux
441111ba1daSmrg				;;
442111ba1daSmrg			news | news700 | news800 | news900)
443111ba1daSmrg				basic_machine=m68k-sony
444111ba1daSmrg				basic_os=newsos
445111ba1daSmrg				;;
446111ba1daSmrg			news1000)
447111ba1daSmrg				basic_machine=m68030-sony
448111ba1daSmrg				basic_os=newsos
449111ba1daSmrg				;;
450111ba1daSmrg			necv70)
451111ba1daSmrg				basic_machine=v70-nec
452111ba1daSmrg				basic_os=sysv
453111ba1daSmrg				;;
454111ba1daSmrg			nh3000)
455111ba1daSmrg				basic_machine=m68k-harris
456111ba1daSmrg				basic_os=cxux
457111ba1daSmrg				;;
458111ba1daSmrg			nh[45]000)
459111ba1daSmrg				basic_machine=m88k-harris
460111ba1daSmrg				basic_os=cxux
461111ba1daSmrg				;;
462111ba1daSmrg			nindy960)
463111ba1daSmrg				basic_machine=i960-intel
464111ba1daSmrg				basic_os=nindy
465111ba1daSmrg				;;
466111ba1daSmrg			mon960)
467111ba1daSmrg				basic_machine=i960-intel
468111ba1daSmrg				basic_os=mon960
469111ba1daSmrg				;;
470111ba1daSmrg			nonstopux)
471111ba1daSmrg				basic_machine=mips-compaq
472111ba1daSmrg				basic_os=nonstopux
473111ba1daSmrg				;;
474111ba1daSmrg			os400)
475111ba1daSmrg				basic_machine=powerpc-ibm
476111ba1daSmrg				basic_os=os400
477111ba1daSmrg				;;
478111ba1daSmrg			OSE68000 | ose68000)
479111ba1daSmrg				basic_machine=m68000-ericsson
480111ba1daSmrg				basic_os=ose
481111ba1daSmrg				;;
482111ba1daSmrg			os68k)
483111ba1daSmrg				basic_machine=m68k-none
484111ba1daSmrg				basic_os=os68k
485111ba1daSmrg				;;
486111ba1daSmrg			paragon)
487111ba1daSmrg				basic_machine=i860-intel
488111ba1daSmrg				basic_os=osf
489111ba1daSmrg				;;
490111ba1daSmrg			parisc)
491111ba1daSmrg				basic_machine=hppa-unknown
492111ba1daSmrg				basic_os=linux
493111ba1daSmrg				;;
494111ba1daSmrg			psp)
495111ba1daSmrg				basic_machine=mipsallegrexel-sony
496111ba1daSmrg				basic_os=psp
497111ba1daSmrg				;;
498111ba1daSmrg			pw32)
499111ba1daSmrg				basic_machine=i586-unknown
500111ba1daSmrg				basic_os=pw32
501111ba1daSmrg				;;
502111ba1daSmrg			rdos | rdos64)
503111ba1daSmrg				basic_machine=x86_64-pc
504111ba1daSmrg				basic_os=rdos
505111ba1daSmrg				;;
506111ba1daSmrg			rdos32)
507111ba1daSmrg				basic_machine=i386-pc
508111ba1daSmrg				basic_os=rdos
509111ba1daSmrg				;;
510111ba1daSmrg			rom68k)
511111ba1daSmrg				basic_machine=m68k-rom68k
512111ba1daSmrg				basic_os=coff
513111ba1daSmrg				;;
514111ba1daSmrg			sa29200)
515111ba1daSmrg				basic_machine=a29k-amd
516111ba1daSmrg				basic_os=udi
517111ba1daSmrg				;;
518111ba1daSmrg			sei)
519111ba1daSmrg				basic_machine=mips-sei
520111ba1daSmrg				basic_os=seiux
521111ba1daSmrg				;;
522111ba1daSmrg			sequent)
523111ba1daSmrg				basic_machine=i386-sequent
524111ba1daSmrg				basic_os=
525111ba1daSmrg				;;
526111ba1daSmrg			sps7)
527111ba1daSmrg				basic_machine=m68k-bull
528111ba1daSmrg				basic_os=sysv2
529111ba1daSmrg				;;
530111ba1daSmrg			st2000)
531111ba1daSmrg				basic_machine=m68k-tandem
532111ba1daSmrg				basic_os=
533111ba1daSmrg				;;
534111ba1daSmrg			stratus)
535111ba1daSmrg				basic_machine=i860-stratus
536111ba1daSmrg				basic_os=sysv4
537111ba1daSmrg				;;
538111ba1daSmrg			sun2)
539111ba1daSmrg				basic_machine=m68000-sun
540111ba1daSmrg				basic_os=
541111ba1daSmrg				;;
542111ba1daSmrg			sun2os3)
543111ba1daSmrg				basic_machine=m68000-sun
544111ba1daSmrg				basic_os=sunos3
545111ba1daSmrg				;;
546111ba1daSmrg			sun2os4)
547111ba1daSmrg				basic_machine=m68000-sun
548111ba1daSmrg				basic_os=sunos4
549111ba1daSmrg				;;
550111ba1daSmrg			sun3)
551111ba1daSmrg				basic_machine=m68k-sun
552111ba1daSmrg				basic_os=
553111ba1daSmrg				;;
554111ba1daSmrg			sun3os3)
555111ba1daSmrg				basic_machine=m68k-sun
556111ba1daSmrg				basic_os=sunos3
557111ba1daSmrg				;;
558111ba1daSmrg			sun3os4)
559111ba1daSmrg				basic_machine=m68k-sun
560111ba1daSmrg				basic_os=sunos4
561111ba1daSmrg				;;
562111ba1daSmrg			sun4)
563111ba1daSmrg				basic_machine=sparc-sun
564111ba1daSmrg				basic_os=
565111ba1daSmrg				;;
566111ba1daSmrg			sun4os3)
567111ba1daSmrg				basic_machine=sparc-sun
568111ba1daSmrg				basic_os=sunos3
569111ba1daSmrg				;;
570111ba1daSmrg			sun4os4)
571111ba1daSmrg				basic_machine=sparc-sun
572111ba1daSmrg				basic_os=sunos4
573111ba1daSmrg				;;
574111ba1daSmrg			sun4sol2)
575111ba1daSmrg				basic_machine=sparc-sun
576111ba1daSmrg				basic_os=solaris2
577111ba1daSmrg				;;
578111ba1daSmrg			sun386 | sun386i | roadrunner)
579111ba1daSmrg				basic_machine=i386-sun
580111ba1daSmrg				basic_os=
581111ba1daSmrg				;;
582111ba1daSmrg			sv1)
583111ba1daSmrg				basic_machine=sv1-cray
584111ba1daSmrg				basic_os=unicos
585111ba1daSmrg				;;
586111ba1daSmrg			symmetry)
587111ba1daSmrg				basic_machine=i386-sequent
588111ba1daSmrg				basic_os=dynix
589111ba1daSmrg				;;
590111ba1daSmrg			t3e)
591111ba1daSmrg				basic_machine=alphaev5-cray
592111ba1daSmrg				basic_os=unicos
593111ba1daSmrg				;;
594111ba1daSmrg			t90)
595111ba1daSmrg				basic_machine=t90-cray
596111ba1daSmrg				basic_os=unicos
597111ba1daSmrg				;;
598111ba1daSmrg			toad1)
599111ba1daSmrg				basic_machine=pdp10-xkl
600111ba1daSmrg				basic_os=tops20
601111ba1daSmrg				;;
602111ba1daSmrg			tpf)
603111ba1daSmrg				basic_machine=s390x-ibm
604111ba1daSmrg				basic_os=tpf
605111ba1daSmrg				;;
606111ba1daSmrg			udi29k)
607111ba1daSmrg				basic_machine=a29k-amd
608111ba1daSmrg				basic_os=udi
609111ba1daSmrg				;;
610111ba1daSmrg			ultra3)
611111ba1daSmrg				basic_machine=a29k-nyu
612111ba1daSmrg				basic_os=sym1
613111ba1daSmrg				;;
614111ba1daSmrg			v810 | necv810)
615111ba1daSmrg				basic_machine=v810-nec
616111ba1daSmrg				basic_os=none
617111ba1daSmrg				;;
618111ba1daSmrg			vaxv)
619111ba1daSmrg				basic_machine=vax-dec
620111ba1daSmrg				basic_os=sysv
621111ba1daSmrg				;;
622111ba1daSmrg			vms)
623111ba1daSmrg				basic_machine=vax-dec
624111ba1daSmrg				basic_os=vms
625111ba1daSmrg				;;
626111ba1daSmrg			vsta)
627111ba1daSmrg				basic_machine=i386-pc
628111ba1daSmrg				basic_os=vsta
629111ba1daSmrg				;;
630111ba1daSmrg			vxworks960)
631111ba1daSmrg				basic_machine=i960-wrs
632111ba1daSmrg				basic_os=vxworks
633111ba1daSmrg				;;
634111ba1daSmrg			vxworks68)
635111ba1daSmrg				basic_machine=m68k-wrs
636111ba1daSmrg				basic_os=vxworks
637111ba1daSmrg				;;
638111ba1daSmrg			vxworks29k)
639111ba1daSmrg				basic_machine=a29k-wrs
640111ba1daSmrg				basic_os=vxworks
641111ba1daSmrg				;;
642111ba1daSmrg			xbox)
643111ba1daSmrg				basic_machine=i686-pc
644111ba1daSmrg				basic_os=mingw32
645111ba1daSmrg				;;
646111ba1daSmrg			ymp)
647111ba1daSmrg				basic_machine=ymp-cray
648111ba1daSmrg				basic_os=unicos
649111ba1daSmrg				;;
650111ba1daSmrg			*)
651111ba1daSmrg				basic_machine=$1
652111ba1daSmrg				basic_os=
653111ba1daSmrg				;;
654111ba1daSmrg		esac
6558ff16396Smrg		;;
656111ba1daSmrgesac
657111ba1daSmrg
658111ba1daSmrg# Decode 1-component or ad-hoc basic machines
659111ba1daSmrgcase $basic_machine in
660111ba1daSmrg	# Here we handle the default manufacturer of certain CPU types.  It is in
661111ba1daSmrg	# some cases the only manufacturer, in others, it is the most popular.
662111ba1daSmrg	w89k)
663111ba1daSmrg		cpu=hppa1.1
664111ba1daSmrg		vendor=winbond
6658ff16396Smrg		;;
666111ba1daSmrg	op50n)
667111ba1daSmrg		cpu=hppa1.1
668111ba1daSmrg		vendor=oki
6698ff16396Smrg		;;
670111ba1daSmrg	op60c)
671111ba1daSmrg		cpu=hppa1.1
672111ba1daSmrg		vendor=oki
6738ff16396Smrg		;;
674111ba1daSmrg	ibm*)
675111ba1daSmrg		cpu=i370
676111ba1daSmrg		vendor=ibm
6778ff16396Smrg		;;
678111ba1daSmrg	orion105)
679111ba1daSmrg		cpu=clipper
680111ba1daSmrg		vendor=highlevel
6818ff16396Smrg		;;
682111ba1daSmrg	mac | mpw | mac-mpw)
683111ba1daSmrg		cpu=m68k
684111ba1daSmrg		vendor=apple
6858ff16396Smrg		;;
686111ba1daSmrg	pmac | pmac-mpw)
687111ba1daSmrg		cpu=powerpc
688111ba1daSmrg		vendor=apple
6898ff16396Smrg		;;
6908ff16396Smrg
6918ff16396Smrg	# Recognize the various machine names and aliases which stand
6928ff16396Smrg	# for a CPU type and a company and sometimes even an OS.
6938ff16396Smrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
694111ba1daSmrg		cpu=m68000
695111ba1daSmrg		vendor=att
6968ff16396Smrg		;;
6978ff16396Smrg	3b*)
698111ba1daSmrg		cpu=we32k
699111ba1daSmrg		vendor=att
7008ff16396Smrg		;;
701d5d8cc55Smrg	bluegene*)
702111ba1daSmrg		cpu=powerpc
703111ba1daSmrg		vendor=ibm
704111ba1daSmrg		basic_os=cnk
7058ff16396Smrg		;;
7068ff16396Smrg	decsystem10* | dec10*)
707111ba1daSmrg		cpu=pdp10
708111ba1daSmrg		vendor=dec
709111ba1daSmrg		basic_os=tops10
7108ff16396Smrg		;;
7118ff16396Smrg	decsystem20* | dec20*)
712111ba1daSmrg		cpu=pdp10
713111ba1daSmrg		vendor=dec
714111ba1daSmrg		basic_os=tops20
7158ff16396Smrg		;;
7168ff16396Smrg	delta | 3300 | motorola-3300 | motorola-delta \
7178ff16396Smrg	      | 3300-motorola | delta-motorola)
718111ba1daSmrg		cpu=m68k
719111ba1daSmrg		vendor=motorola
7208ff16396Smrg		;;
721111ba1daSmrg	dpx2*)
722111ba1daSmrg		cpu=m68k
723111ba1daSmrg		vendor=bull
724111ba1daSmrg		basic_os=sysv3
7258ff16396Smrg		;;
7268ff16396Smrg	encore | umax | mmax)
727111ba1daSmrg		cpu=ns32k
728111ba1daSmrg		vendor=encore
7298ff16396Smrg		;;
730111ba1daSmrg	elxsi)
731111ba1daSmrg		cpu=elxsi
732111ba1daSmrg		vendor=elxsi
733111ba1daSmrg		basic_os=${basic_os:-bsd}
7348ff16396Smrg		;;
7358ff16396Smrg	fx2800)
736111ba1daSmrg		cpu=i860
737111ba1daSmrg		vendor=alliant
7388ff16396Smrg		;;
7398ff16396Smrg	genix)
740111ba1daSmrg		cpu=ns32k
741111ba1daSmrg		vendor=ns
7428ff16396Smrg		;;
7438ff16396Smrg	h3050r* | hiux*)
744111ba1daSmrg		cpu=hppa1.1
745111ba1daSmrg		vendor=hitachi
746111ba1daSmrg		basic_os=hiuxwe2
7478ff16396Smrg		;;
7488ff16396Smrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
749111ba1daSmrg		cpu=hppa1.0
750111ba1daSmrg		vendor=hp
7518ff16396Smrg		;;
7528ff16396Smrg	hp9k2[0-9][0-9] | hp9k31[0-9])
753111ba1daSmrg		cpu=m68000
754111ba1daSmrg		vendor=hp
7558ff16396Smrg		;;
7568ff16396Smrg	hp9k3[2-9][0-9])
757111ba1daSmrg		cpu=m68k
758111ba1daSmrg		vendor=hp
7598ff16396Smrg		;;
7608ff16396Smrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
761111ba1daSmrg		cpu=hppa1.0
762111ba1daSmrg		vendor=hp
7638ff16396Smrg		;;
7648ff16396Smrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
765111ba1daSmrg		cpu=hppa1.1
766111ba1daSmrg		vendor=hp
7678ff16396Smrg		;;
7688ff16396Smrg	hp9k78[0-9] | hp78[0-9])
7698ff16396Smrg		# FIXME: really hppa2.0-hp
770111ba1daSmrg		cpu=hppa1.1
771111ba1daSmrg		vendor=hp
7728ff16396Smrg		;;
7738ff16396Smrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
7748ff16396Smrg		# FIXME: really hppa2.0-hp
775111ba1daSmrg		cpu=hppa1.1
776111ba1daSmrg		vendor=hp
7778ff16396Smrg		;;
7788ff16396Smrg	hp9k8[0-9][13679] | hp8[0-9][13679])
779111ba1daSmrg		cpu=hppa1.1
780111ba1daSmrg		vendor=hp
7818ff16396Smrg		;;
7828ff16396Smrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
783111ba1daSmrg		cpu=hppa1.0
784111ba1daSmrg		vendor=hp
7858ff16396Smrg		;;
7868ff16396Smrg	i*86v32)
787111ba1daSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
788111ba1daSmrg		vendor=pc
789111ba1daSmrg		basic_os=sysv32
7908ff16396Smrg		;;
7918ff16396Smrg	i*86v4*)
792111ba1daSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
793111ba1daSmrg		vendor=pc
794111ba1daSmrg		basic_os=sysv4
7958ff16396Smrg		;;
7968ff16396Smrg	i*86v)
797111ba1daSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
798111ba1daSmrg		vendor=pc
799111ba1daSmrg		basic_os=sysv
8008ff16396Smrg		;;
8018ff16396Smrg	i*86sol2)
802111ba1daSmrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
803111ba1daSmrg		vendor=pc
804111ba1daSmrg		basic_os=solaris2
8058ff16396Smrg		;;
806111ba1daSmrg	j90 | j90-cray)
807111ba1daSmrg		cpu=j90
808111ba1daSmrg		vendor=cray
809111ba1daSmrg		basic_os=${basic_os:-unicos}
8108ff16396Smrg		;;
8118ff16396Smrg	iris | iris4d)
812111ba1daSmrg		cpu=mips
813111ba1daSmrg		vendor=sgi
814111ba1daSmrg		case $basic_os in
815111ba1daSmrg		    irix*)
8168ff16396Smrg			;;
8178ff16396Smrg		    *)
818111ba1daSmrg			basic_os=irix4
8198ff16396Smrg			;;
8208ff16396Smrg		esac
8218ff16396Smrg		;;
8228ff16396Smrg	miniframe)
823111ba1daSmrg		cpu=m68000
824111ba1daSmrg		vendor=convergent
8258ff16396Smrg		;;
826111ba1daSmrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
827111ba1daSmrg		cpu=m68k
828111ba1daSmrg		vendor=atari
829111ba1daSmrg		basic_os=mint
8308ff16396Smrg		;;
8318ff16396Smrg	news-3600 | risc-news)
832111ba1daSmrg		cpu=mips
833111ba1daSmrg		vendor=sony
834111ba1daSmrg		basic_os=newsos
835111ba1daSmrg		;;
836111ba1daSmrg	next | m*-next)
837111ba1daSmrg		cpu=m68k
838111ba1daSmrg		vendor=next
839111ba1daSmrg		case $basic_os in
840111ba1daSmrg		    openstep*)
841111ba1daSmrg		        ;;
842111ba1daSmrg		    nextstep*)
8438ff16396Smrg			;;
844111ba1daSmrg		    ns2*)
845111ba1daSmrg		      basic_os=nextstep2
8468ff16396Smrg			;;
8478ff16396Smrg		    *)
848111ba1daSmrg		      basic_os=nextstep3
8498ff16396Smrg			;;
8508ff16396Smrg		esac
8518ff16396Smrg		;;
8528ff16396Smrg	np1)
853111ba1daSmrg		cpu=np1
854111ba1daSmrg		vendor=gould
8558ff16396Smrg		;;
8568ff16396Smrg	op50n-* | op60c-*)
857111ba1daSmrg		cpu=hppa1.1
858111ba1daSmrg		vendor=oki
859111ba1daSmrg		basic_os=proelf
8608ff16396Smrg		;;
8618ff16396Smrg	pa-hitachi)
862111ba1daSmrg		cpu=hppa1.1
863111ba1daSmrg		vendor=hitachi
864111ba1daSmrg		basic_os=hiuxwe2
8658ff16396Smrg		;;
8668ff16396Smrg	pbd)
867111ba1daSmrg		cpu=sparc
868111ba1daSmrg		vendor=tti
8698ff16396Smrg		;;
8708ff16396Smrg	pbb)
871111ba1daSmrg		cpu=m68k
872111ba1daSmrg		vendor=tti
8738ff16396Smrg		;;
874111ba1daSmrg	pc532)
875111ba1daSmrg		cpu=ns32k
876111ba1daSmrg		vendor=pc532
8778ff16396Smrg		;;
8788ff16396Smrg	pn)
879111ba1daSmrg		cpu=pn
880111ba1daSmrg		vendor=gould
8818ff16396Smrg		;;
882111ba1daSmrg	power)
883111ba1daSmrg		cpu=power
884111ba1daSmrg		vendor=ibm
8858ff16396Smrg		;;
8868ff16396Smrg	ps2)
887111ba1daSmrg		cpu=i386
888111ba1daSmrg		vendor=ibm
8898ff16396Smrg		;;
8908ff16396Smrg	rm[46]00)
891111ba1daSmrg		cpu=mips
892111ba1daSmrg		vendor=siemens
8938ff16396Smrg		;;
8948ff16396Smrg	rtpc | rtpc-*)
895111ba1daSmrg		cpu=romp
896111ba1daSmrg		vendor=ibm
8978ff16396Smrg		;;
898111ba1daSmrg	sde)
899111ba1daSmrg		cpu=mipsisa32
900111ba1daSmrg		vendor=sde
901111ba1daSmrg		basic_os=${basic_os:-elf}
9028ff16396Smrg		;;
903111ba1daSmrg	simso-wrs)
904111ba1daSmrg		cpu=sparclite
905111ba1daSmrg		vendor=wrs
906111ba1daSmrg		basic_os=vxworks
9078ff16396Smrg		;;
908111ba1daSmrg	tower | tower-32)
909111ba1daSmrg		cpu=m68k
910111ba1daSmrg		vendor=ncr
9118ff16396Smrg		;;
912111ba1daSmrg	vpp*|vx|vx-*)
913111ba1daSmrg		cpu=f301
914111ba1daSmrg		vendor=fujitsu
9158ff16396Smrg		;;
916111ba1daSmrg	w65)
917111ba1daSmrg		cpu=w65
918111ba1daSmrg		vendor=wdc
9198ff16396Smrg		;;
920111ba1daSmrg	w89k-*)
921111ba1daSmrg		cpu=hppa1.1
922111ba1daSmrg		vendor=winbond
923111ba1daSmrg		basic_os=proelf
9248ff16396Smrg		;;
925111ba1daSmrg	none)
926111ba1daSmrg		cpu=none
927111ba1daSmrg		vendor=none
9288ff16396Smrg		;;
929111ba1daSmrg	leon|leon[3-9])
930111ba1daSmrg		cpu=sparc
931111ba1daSmrg		vendor=$basic_machine
9328ff16396Smrg		;;
933111ba1daSmrg	leon-*|leon[3-9]-*)
934111ba1daSmrg		cpu=sparc
935111ba1daSmrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
9368ff16396Smrg		;;
937111ba1daSmrg
938111ba1daSmrg	*-*)
939111ba1daSmrg		# shellcheck disable=SC2162
940111ba1daSmrg		saved_IFS=$IFS
941111ba1daSmrg		IFS="-" read cpu vendor <<EOF
942111ba1daSmrg$basic_machine
943111ba1daSmrgEOF
944111ba1daSmrg		IFS=$saved_IFS
9458ff16396Smrg		;;
946111ba1daSmrg	# We use `pc' rather than `unknown'
947111ba1daSmrg	# because (1) that's what they normally are, and
948111ba1daSmrg	# (2) the word "unknown" tends to confuse beginning users.
949111ba1daSmrg	i*86 | x86_64)
950111ba1daSmrg		cpu=$basic_machine
951111ba1daSmrg		vendor=pc
9528ff16396Smrg		;;
953111ba1daSmrg	# These rules are duplicated from below for sake of the special case above;
954111ba1daSmrg	# i.e. things that normalized to x86 arches should also default to "pc"
955111ba1daSmrg	pc98)
956111ba1daSmrg		cpu=i386
957111ba1daSmrg		vendor=pc
9588ff16396Smrg		;;
959111ba1daSmrg	x64 | amd64)
960111ba1daSmrg		cpu=x86_64
961111ba1daSmrg		vendor=pc
9628ff16396Smrg		;;
963111ba1daSmrg	# Recognize the basic CPU types without company name.
964111ba1daSmrg	*)
965111ba1daSmrg		cpu=$basic_machine
966111ba1daSmrg		vendor=unknown
9678ff16396Smrg		;;
968111ba1daSmrgesac
969111ba1daSmrg
970111ba1daSmrgunset -v basic_machine
971111ba1daSmrg
972111ba1daSmrg# Decode basic machines in the full and proper CPU-Company form.
973111ba1daSmrgcase $cpu-$vendor in
974111ba1daSmrg	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
975111ba1daSmrg	# some cases the only manufacturer, in others, it is the most popular.
976111ba1daSmrg	craynv-unknown)
977111ba1daSmrg		vendor=cray
978111ba1daSmrg		basic_os=${basic_os:-unicosmp}
9798ff16396Smrg		;;
980111ba1daSmrg	c90-unknown | c90-cray)
981111ba1daSmrg		vendor=cray
982111ba1daSmrg		basic_os=${Basic_os:-unicos}
9838ff16396Smrg		;;
984111ba1daSmrg	fx80-unknown)
985111ba1daSmrg		vendor=alliant
9868ff16396Smrg		;;
987111ba1daSmrg	romp-unknown)
988111ba1daSmrg		vendor=ibm
9898ff16396Smrg		;;
990111ba1daSmrg	mmix-unknown)
991111ba1daSmrg		vendor=knuth
9928ff16396Smrg		;;
993111ba1daSmrg	microblaze-unknown | microblazeel-unknown)
994111ba1daSmrg		vendor=xilinx
9958ff16396Smrg		;;
996111ba1daSmrg	rs6000-unknown)
997111ba1daSmrg		vendor=ibm
9988ff16396Smrg		;;
999111ba1daSmrg	vax-unknown)
1000111ba1daSmrg		vendor=dec
10018ff16396Smrg		;;
1002111ba1daSmrg	pdp11-unknown)
1003111ba1daSmrg		vendor=dec
10048ff16396Smrg		;;
1005111ba1daSmrg	we32k-unknown)
1006111ba1daSmrg		vendor=att
10078ff16396Smrg		;;
1008111ba1daSmrg	cydra-unknown)
1009111ba1daSmrg		vendor=cydrome
10108ff16396Smrg		;;
1011111ba1daSmrg	i370-ibm*)
1012111ba1daSmrg		vendor=ibm
10138ff16396Smrg		;;
1014111ba1daSmrg	orion-unknown)
1015111ba1daSmrg		vendor=highlevel
10168ff16396Smrg		;;
1017111ba1daSmrg	xps-unknown | xps100-unknown)
1018111ba1daSmrg		cpu=xps100
1019111ba1daSmrg		vendor=honeywell
10208ff16396Smrg		;;
1021111ba1daSmrg
1022111ba1daSmrg	# Here we normalize CPU types with a missing or matching vendor
1023111ba1daSmrg	armh-unknown | armh-alt)
1024111ba1daSmrg		cpu=armv7l
1025111ba1daSmrg		vendor=alt
1026111ba1daSmrg		basic_os=${basic_os:-linux-gnueabihf}
10278ff16396Smrg		;;
1028111ba1daSmrg	dpx20-unknown | dpx20-bull)
1029111ba1daSmrg		cpu=rs6000
1030111ba1daSmrg		vendor=bull
1031111ba1daSmrg		basic_os=${basic_os:-bosx}
10328ff16396Smrg		;;
1033111ba1daSmrg
1034111ba1daSmrg	# Here we normalize CPU types irrespective of the vendor
1035111ba1daSmrg	amd64-*)
1036111ba1daSmrg		cpu=x86_64
10378ff16396Smrg		;;
1038111ba1daSmrg	blackfin-*)
1039111ba1daSmrg		cpu=bfin
1040111ba1daSmrg		basic_os=linux
10418ff16396Smrg		;;
1042111ba1daSmrg	c54x-*)
1043111ba1daSmrg		cpu=tic54x
10448ff16396Smrg		;;
1045111ba1daSmrg	c55x-*)
1046111ba1daSmrg		cpu=tic55x
10478ff16396Smrg		;;
1048111ba1daSmrg	c6x-*)
1049111ba1daSmrg		cpu=tic6x
10508ff16396Smrg		;;
1051111ba1daSmrg	e500v[12]-*)
1052111ba1daSmrg		cpu=powerpc
1053111ba1daSmrg		basic_os=${basic_os}"spe"
10548ff16396Smrg		;;
1055111ba1daSmrg	mips3*-*)
1056111ba1daSmrg		cpu=mips64
10578ff16396Smrg		;;
1058111ba1daSmrg	ms1-*)
1059111ba1daSmrg		cpu=mt
10608ff16396Smrg		;;
1061111ba1daSmrg	m68knommu-*)
1062111ba1daSmrg		cpu=m68k
1063111ba1daSmrg		basic_os=linux
10648ff16396Smrg		;;
1065111ba1daSmrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
1066111ba1daSmrg		cpu=s12z
10678ff16396Smrg		;;
1068111ba1daSmrg	openrisc-*)
1069111ba1daSmrg		cpu=or32
10708ff16396Smrg		;;
1071111ba1daSmrg	parisc-*)
1072111ba1daSmrg		cpu=hppa
1073111ba1daSmrg		basic_os=linux
10748ff16396Smrg		;;
1075111ba1daSmrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
1076111ba1daSmrg		cpu=i586
10778ff16396Smrg		;;
1078111ba1daSmrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
1079111ba1daSmrg		cpu=i686
10808ff16396Smrg		;;
1081111ba1daSmrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
1082111ba1daSmrg		cpu=i686
10838ff16396Smrg		;;
1084111ba1daSmrg	pentium4-*)
1085111ba1daSmrg		cpu=i786
10868ff16396Smrg		;;
1087111ba1daSmrg	pc98-*)
1088111ba1daSmrg		cpu=i386
10898ff16396Smrg		;;
1090111ba1daSmrg	ppc-* | ppcbe-*)
1091111ba1daSmrg		cpu=powerpc
10928ff16396Smrg		;;
1093111ba1daSmrg	ppcle-* | powerpclittle-*)
1094111ba1daSmrg		cpu=powerpcle
10958ff16396Smrg		;;
1096111ba1daSmrg	ppc64-*)
1097111ba1daSmrg		cpu=powerpc64
10988ff16396Smrg		;;
1099111ba1daSmrg	ppc64le-* | powerpc64little-*)
1100111ba1daSmrg		cpu=powerpc64le
11018ff16396Smrg		;;
1102111ba1daSmrg	sb1-*)
1103111ba1daSmrg		cpu=mipsisa64sb1
11048ff16396Smrg		;;
1105111ba1daSmrg	sb1el-*)
1106111ba1daSmrg		cpu=mipsisa64sb1el
11078ff16396Smrg		;;
1108111ba1daSmrg	sh5e[lb]-*)
1109111ba1daSmrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
11108ff16396Smrg		;;
1111111ba1daSmrg	spur-*)
1112111ba1daSmrg		cpu=spur
11138ff16396Smrg		;;
1114111ba1daSmrg	strongarm-* | thumb-*)
1115111ba1daSmrg		cpu=arm
11168ff16396Smrg		;;
1117111ba1daSmrg	tx39-*)
1118111ba1daSmrg		cpu=mipstx39
11198ff16396Smrg		;;
1120111ba1daSmrg	tx39el-*)
1121111ba1daSmrg		cpu=mipstx39el
11228ff16396Smrg		;;
1123111ba1daSmrg	x64-*)
1124111ba1daSmrg		cpu=x86_64
11258ff16396Smrg		;;
1126111ba1daSmrg	xscale-* | xscalee[bl]-*)
1127111ba1daSmrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
11288ff16396Smrg		;;
1129111ba1daSmrg	arm64-* | aarch64le-*)
1130111ba1daSmrg		cpu=aarch64
11318ff16396Smrg		;;
1132111ba1daSmrg
1133111ba1daSmrg	# Recognize the canonical CPU Types that limit and/or modify the
1134111ba1daSmrg	# company names they are paired with.
1135111ba1daSmrg	cr16-*)
1136111ba1daSmrg		basic_os=${basic_os:-elf}
11378ff16396Smrg		;;
1138111ba1daSmrg	crisv32-* | etraxfs*-*)
1139111ba1daSmrg		cpu=crisv32
1140111ba1daSmrg		vendor=axis
11418ff16396Smrg		;;
1142111ba1daSmrg	cris-* | etrax*-*)
1143111ba1daSmrg		cpu=cris
1144111ba1daSmrg		vendor=axis
11458ff16396Smrg		;;
1146111ba1daSmrg	crx-*)
1147111ba1daSmrg		basic_os=${basic_os:-elf}
11488ff16396Smrg		;;
1149111ba1daSmrg	neo-tandem)
1150111ba1daSmrg		cpu=neo
1151111ba1daSmrg		vendor=tandem
11528ff16396Smrg		;;
1153111ba1daSmrg	nse-tandem)
1154111ba1daSmrg		cpu=nse
1155111ba1daSmrg		vendor=tandem
11568ff16396Smrg		;;
1157111ba1daSmrg	nsr-tandem)
1158111ba1daSmrg		cpu=nsr
1159111ba1daSmrg		vendor=tandem
11608ff16396Smrg		;;
1161111ba1daSmrg	nsv-tandem)
1162111ba1daSmrg		cpu=nsv
1163111ba1daSmrg		vendor=tandem
11648ff16396Smrg		;;
1165111ba1daSmrg	nsx-tandem)
1166111ba1daSmrg		cpu=nsx
1167111ba1daSmrg		vendor=tandem
11688ff16396Smrg		;;
1169111ba1daSmrg	mipsallegrexel-sony)
1170111ba1daSmrg		cpu=mipsallegrexel
1171111ba1daSmrg		vendor=sony
11728ff16396Smrg		;;
1173111ba1daSmrg	tile*-*)
1174111ba1daSmrg		basic_os=${basic_os:-linux-gnu}
11758ff16396Smrg		;;
1176111ba1daSmrg
11778ff16396Smrg	*)
1178111ba1daSmrg		# Recognize the canonical CPU types that are allowed with any
1179111ba1daSmrg		# company name.
1180111ba1daSmrg		case $cpu in
1181111ba1daSmrg			1750a | 580 \
1182111ba1daSmrg			| a29k \
1183111ba1daSmrg			| aarch64 | aarch64_be \
1184111ba1daSmrg			| abacus \
1185111ba1daSmrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
1186111ba1daSmrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
1187111ba1daSmrg			| alphapca5[67] | alpha64pca5[67] \
1188111ba1daSmrg			| am33_2.0 \
1189111ba1daSmrg			| amdgcn \
1190111ba1daSmrg			| arc | arceb | arc32 | arc64 \
1191111ba1daSmrg			| arm | arm[lb]e | arme[lb] | armv* \
1192111ba1daSmrg			| avr | avr32 \
1193111ba1daSmrg			| asmjs \
1194111ba1daSmrg			| ba \
1195111ba1daSmrg			| be32 | be64 \
1196111ba1daSmrg			| bfin | bpf | bs2000 \
1197111ba1daSmrg			| c[123]* | c30 | [cjt]90 | c4x \
1198111ba1daSmrg			| c8051 | clipper | craynv | csky | cydra \
1199111ba1daSmrg			| d10v | d30v | dlx | dsp16xx \
1200111ba1daSmrg			| e2k | elxsi | epiphany \
1201111ba1daSmrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
1202111ba1daSmrg			| h8300 | h8500 \
1203111ba1daSmrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
1204111ba1daSmrg			| hexagon \
1205111ba1daSmrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
1206111ba1daSmrg			| ip2k | iq2000 \
1207111ba1daSmrg			| k1om \
1208111ba1daSmrg			| le32 | le64 \
1209111ba1daSmrg			| lm32 \
1210111ba1daSmrg			| loongarch32 | loongarch64 \
1211111ba1daSmrg			| m32c | m32r | m32rle \
1212111ba1daSmrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
1213111ba1daSmrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
1214111ba1daSmrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
1215111ba1daSmrg			| microblaze | microblazeel \
1216111ba1daSmrg			| mips | mipsbe | mipseb | mipsel | mipsle \
1217111ba1daSmrg			| mips16 \
1218111ba1daSmrg			| mips64 | mips64eb | mips64el \
1219111ba1daSmrg			| mips64octeon | mips64octeonel \
1220111ba1daSmrg			| mips64orion | mips64orionel \
1221111ba1daSmrg			| mips64r5900 | mips64r5900el \
1222111ba1daSmrg			| mips64vr | mips64vrel \
1223111ba1daSmrg			| mips64vr4100 | mips64vr4100el \
1224111ba1daSmrg			| mips64vr4300 | mips64vr4300el \
1225111ba1daSmrg			| mips64vr5000 | mips64vr5000el \
1226111ba1daSmrg			| mips64vr5900 | mips64vr5900el \
1227111ba1daSmrg			| mipsisa32 | mipsisa32el \
1228111ba1daSmrg			| mipsisa32r2 | mipsisa32r2el \
1229111ba1daSmrg			| mipsisa32r3 | mipsisa32r3el \
1230111ba1daSmrg			| mipsisa32r5 | mipsisa32r5el \
1231111ba1daSmrg			| mipsisa32r6 | mipsisa32r6el \
1232111ba1daSmrg			| mipsisa64 | mipsisa64el \
1233111ba1daSmrg			| mipsisa64r2 | mipsisa64r2el \
1234111ba1daSmrg			| mipsisa64r3 | mipsisa64r3el \
1235111ba1daSmrg			| mipsisa64r5 | mipsisa64r5el \
1236111ba1daSmrg			| mipsisa64r6 | mipsisa64r6el \
1237111ba1daSmrg			| mipsisa64sb1 | mipsisa64sb1el \
1238111ba1daSmrg			| mipsisa64sr71k | mipsisa64sr71kel \
1239111ba1daSmrg			| mipsr5900 | mipsr5900el \
1240111ba1daSmrg			| mipstx39 | mipstx39el \
1241111ba1daSmrg			| mmix \
1242111ba1daSmrg			| mn10200 | mn10300 \
1243111ba1daSmrg			| moxie \
1244111ba1daSmrg			| mt \
1245111ba1daSmrg			| msp430 \
1246111ba1daSmrg			| nds32 | nds32le | nds32be \
1247111ba1daSmrg			| nfp \
1248111ba1daSmrg			| nios | nios2 | nios2eb | nios2el \
1249111ba1daSmrg			| none | np1 | ns16k | ns32k | nvptx \
1250111ba1daSmrg			| open8 \
1251111ba1daSmrg			| or1k* \
1252111ba1daSmrg			| or32 \
1253111ba1daSmrg			| orion \
1254111ba1daSmrg			| picochip \
1255111ba1daSmrg			| pdp10 | pdp11 | pj | pjl | pn | power \
1256111ba1daSmrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
1257111ba1daSmrg			| pru \
1258111ba1daSmrg			| pyramid \
1259111ba1daSmrg			| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
1260111ba1daSmrg			| rl78 | romp | rs6000 | rx \
1261111ba1daSmrg			| s390 | s390x \
1262111ba1daSmrg			| score \
1263111ba1daSmrg			| sh | shl \
1264111ba1daSmrg			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
1265111ba1daSmrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
1266111ba1daSmrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
1267111ba1daSmrg			| sparclite \
1268111ba1daSmrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
1269111ba1daSmrg			| spu \
1270111ba1daSmrg			| tahoe \
1271111ba1daSmrg			| thumbv7* \
1272111ba1daSmrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
1273111ba1daSmrg			| tron \
1274111ba1daSmrg			| ubicom32 \
1275111ba1daSmrg			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
1276111ba1daSmrg			| vax \
1277111ba1daSmrg			| visium \
1278111ba1daSmrg			| w65 \
1279111ba1daSmrg			| wasm32 | wasm64 \
1280111ba1daSmrg			| we32k \
1281111ba1daSmrg			| x86 | x86_64 | xc16x | xgate | xps100 \
1282111ba1daSmrg			| xstormy16 | xtensa* \
1283111ba1daSmrg			| ymp \
1284111ba1daSmrg			| z8k | z80)
1285111ba1daSmrg				;;
1286111ba1daSmrg
1287111ba1daSmrg			*)
1288111ba1daSmrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
1289111ba1daSmrg				exit 1
1290111ba1daSmrg				;;
1291111ba1daSmrg		esac
12928ff16396Smrg		;;
12938ff16396Smrgesac
12948ff16396Smrg
12958ff16396Smrg# Here we canonicalize certain aliases for manufacturers.
1296111ba1daSmrgcase $vendor in
1297111ba1daSmrg	digital*)
1298111ba1daSmrg		vendor=dec
12998ff16396Smrg		;;
1300111ba1daSmrg	commodore*)
1301111ba1daSmrg		vendor=cbm
13028ff16396Smrg		;;
13038ff16396Smrg	*)
13048ff16396Smrg		;;
13058ff16396Smrgesac
13068ff16396Smrg
13078ff16396Smrg# Decode manufacturer-specific aliases for certain operating systems.
13088ff16396Smrg
1309111ba1daSmrgif test x$basic_os != x
13108ff16396Smrgthen
1311111ba1daSmrg
1312111ba1daSmrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
1313111ba1daSmrg# set os.
1314111ba1daSmrgcase $basic_os in
1315111ba1daSmrg	gnu/linux*)
1316111ba1daSmrg		kernel=linux
1317111ba1daSmrg		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
1318111ba1daSmrg		;;
1319111ba1daSmrg	os2-emx)
1320111ba1daSmrg		kernel=os2
1321111ba1daSmrg		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
1322111ba1daSmrg		;;
1323111ba1daSmrg	nto-qnx*)
1324111ba1daSmrg		kernel=nto
1325111ba1daSmrg		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
1326111ba1daSmrg		;;
1327111ba1daSmrg	*-*)
1328111ba1daSmrg		# shellcheck disable=SC2162
1329111ba1daSmrg		saved_IFS=$IFS
1330111ba1daSmrg		IFS="-" read kernel os <<EOF
1331111ba1daSmrg$basic_os
1332111ba1daSmrgEOF
1333111ba1daSmrg		IFS=$saved_IFS
1334111ba1daSmrg		;;
1335111ba1daSmrg	# Default OS when just kernel was specified
1336111ba1daSmrg	nto*)
1337111ba1daSmrg		kernel=nto
1338111ba1daSmrg		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
1339111ba1daSmrg		;;
1340111ba1daSmrg	linux*)
1341111ba1daSmrg		kernel=linux
1342111ba1daSmrg		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
1343111ba1daSmrg		;;
1344111ba1daSmrg	managarm*)
1345111ba1daSmrg		kernel=managarm
1346111ba1daSmrg		os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
1347111ba1daSmrg		;;
1348111ba1daSmrg	*)
1349111ba1daSmrg		kernel=
1350111ba1daSmrg		os=$basic_os
1351111ba1daSmrg		;;
1352111ba1daSmrgesac
1353111ba1daSmrg
1354111ba1daSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel,
1355111ba1daSmrg# etc.)
13568ff16396Smrgcase $os in
1357111ba1daSmrg	# First match some system type aliases that might get confused
1358111ba1daSmrg	# with valid system types.
1359111ba1daSmrg	# solaris* is a basic system type, with this one exception.
1360111ba1daSmrg	auroraux)
1361111ba1daSmrg		os=auroraux
1362d5d8cc55Smrg		;;
1363111ba1daSmrg	bluegene*)
1364111ba1daSmrg		os=cnk
13658ff16396Smrg		;;
1366111ba1daSmrg	solaris1 | solaris1.*)
1367111ba1daSmrg		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
13688ff16396Smrg		;;
1369111ba1daSmrg	solaris)
1370111ba1daSmrg		os=solaris2
13718ff16396Smrg		;;
1372111ba1daSmrg	unixware*)
1373111ba1daSmrg		os=sysv4.2uw
13748ff16396Smrg		;;
1375111ba1daSmrg	# es1800 is here to avoid being matched by es* (a different OS)
1376111ba1daSmrg	es1800*)
1377111ba1daSmrg		os=ose
13788ff16396Smrg		;;
1379111ba1daSmrg	# Some version numbers need modification
1380111ba1daSmrg	chorusos*)
1381111ba1daSmrg		os=chorusos
13828ff16396Smrg		;;
1383111ba1daSmrg	isc)
1384111ba1daSmrg		os=isc2.2
13858ff16396Smrg		;;
1386111ba1daSmrg	sco6)
1387111ba1daSmrg		os=sco5v6
13888ff16396Smrg		;;
1389111ba1daSmrg	sco5)
1390111ba1daSmrg		os=sco3.2v5
13918ff16396Smrg		;;
1392111ba1daSmrg	sco4)
1393111ba1daSmrg		os=sco3.2v4
13948ff16396Smrg		;;
1395111ba1daSmrg	sco3.2.[4-9]*)
1396111ba1daSmrg		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
13978ff16396Smrg		;;
1398111ba1daSmrg	sco*v* | scout)
1399111ba1daSmrg		# Don't match below
14008ff16396Smrg		;;
1401111ba1daSmrg	sco*)
1402111ba1daSmrg		os=sco3.2v2
14038ff16396Smrg		;;
1404111ba1daSmrg	psos*)
1405111ba1daSmrg		os=psos
14068ff16396Smrg		;;
1407111ba1daSmrg	qnx*)
1408111ba1daSmrg		os=qnx
14098ff16396Smrg		;;
1410111ba1daSmrg	hiux*)
1411111ba1daSmrg		os=hiuxwe2
14128ff16396Smrg		;;
1413111ba1daSmrg	lynx*178)
1414111ba1daSmrg		os=lynxos178
14158ff16396Smrg		;;
1416111ba1daSmrg	lynx*5)
1417111ba1daSmrg		os=lynxos5
14188ff16396Smrg		;;
1419111ba1daSmrg	lynxos*)
1420111ba1daSmrg		# don't get caught up in next wildcard
14218ff16396Smrg		;;
1422111ba1daSmrg	lynx*)
1423111ba1daSmrg		os=lynxos
14248ff16396Smrg		;;
1425111ba1daSmrg	mac[0-9]*)
1426111ba1daSmrg		os=`echo "$os" | sed -e 's|mac|macos|'`
14278ff16396Smrg		;;
1428111ba1daSmrg	opened*)
1429111ba1daSmrg		os=openedition
14308ff16396Smrg		;;
1431111ba1daSmrg	os400*)
1432111ba1daSmrg		os=os400
14338ff16396Smrg		;;
1434111ba1daSmrg	sunos5*)
1435111ba1daSmrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
14368ff16396Smrg		;;
1437111ba1daSmrg	sunos6*)
1438111ba1daSmrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
14398ff16396Smrg		;;
1440111ba1daSmrg	wince*)
1441111ba1daSmrg		os=wince
14428ff16396Smrg		;;
1443111ba1daSmrg	utek*)
1444111ba1daSmrg		os=bsd
14458ff16396Smrg		;;
1446111ba1daSmrg	dynix*)
1447111ba1daSmrg		os=bsd
14488ff16396Smrg		;;
1449111ba1daSmrg	acis*)
1450111ba1daSmrg		os=aos
14518ff16396Smrg		;;
1452111ba1daSmrg	atheos*)
1453111ba1daSmrg		os=atheos
14548ff16396Smrg		;;
1455111ba1daSmrg	syllable*)
1456111ba1daSmrg		os=syllable
14578ff16396Smrg		;;
1458111ba1daSmrg	386bsd)
1459111ba1daSmrg		os=bsd
14608ff16396Smrg		;;
1461111ba1daSmrg	ctix* | uts*)
1462111ba1daSmrg		os=sysv
14638ff16396Smrg		;;
1464111ba1daSmrg	nova*)
1465111ba1daSmrg		os=rtmk-nova
14668ff16396Smrg		;;
1467111ba1daSmrg	ns2)
1468111ba1daSmrg		os=nextstep2
14698ff16396Smrg		;;
1470111ba1daSmrg	# Preserve the version number of sinix5.
1471111ba1daSmrg	sinix5.*)
1472111ba1daSmrg		os=`echo "$os" | sed -e 's|sinix|sysv|'`
14738ff16396Smrg		;;
1474111ba1daSmrg	sinix*)
1475111ba1daSmrg		os=sysv4
14768ff16396Smrg		;;
1477111ba1daSmrg	tpf*)
1478111ba1daSmrg		os=tpf
14798ff16396Smrg		;;
1480111ba1daSmrg	triton*)
1481111ba1daSmrg		os=sysv3
14828ff16396Smrg		;;
1483111ba1daSmrg	oss*)
1484111ba1daSmrg		os=sysv3
14858ff16396Smrg		;;
1486111ba1daSmrg	svr4*)
1487111ba1daSmrg		os=sysv4
14888ff16396Smrg		;;
1489111ba1daSmrg	svr3)
1490111ba1daSmrg		os=sysv3
14918ff16396Smrg		;;
1492111ba1daSmrg	sysvr4)
1493111ba1daSmrg		os=sysv4
14948ff16396Smrg		;;
1495111ba1daSmrg	ose*)
1496111ba1daSmrg		os=ose
14978ff16396Smrg		;;
1498111ba1daSmrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
1499111ba1daSmrg		os=mint
15008ff16396Smrg		;;
1501111ba1daSmrg	dicos*)
1502111ba1daSmrg		os=dicos
15038ff16396Smrg		;;
1504111ba1daSmrg	pikeos*)
1505111ba1daSmrg		# Until real need of OS specific support for
1506111ba1daSmrg		# particular features comes up, bare metal
1507111ba1daSmrg		# configurations are quite functional.
1508111ba1daSmrg		case $cpu in
1509111ba1daSmrg		    arm*)
1510111ba1daSmrg			os=eabi
1511111ba1daSmrg			;;
1512111ba1daSmrg		    *)
1513111ba1daSmrg			os=elf
1514111ba1daSmrg			;;
1515111ba1daSmrg		esac
15168ff16396Smrg		;;
15178ff16396Smrg	*)
1518111ba1daSmrg		# No normalization, but not necessarily accepted, that comes below.
15198ff16396Smrg		;;
15208ff16396Smrgesac
1521111ba1daSmrg
15228ff16396Smrgelse
15238ff16396Smrg
15248ff16396Smrg# Here we handle the default operating systems that come with various machines.
15258ff16396Smrg# The value should be what the vendor currently ships out the door with their
15268ff16396Smrg# machine or put another way, the most popular os provided with the machine.
15278ff16396Smrg
15288ff16396Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
15298ff16396Smrg# "-sun"), then you have to tell the case statement up towards the top
15308ff16396Smrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
15318ff16396Smrg# will signal an error saying that MANUFACTURER isn't an operating
15328ff16396Smrg# system, and we'll never get to this point.
15338ff16396Smrg
1534111ba1daSmrgkernel=
1535111ba1daSmrgcase $cpu-$vendor in
1536111ba1daSmrg	score-*)
1537111ba1daSmrg		os=elf
15388ff16396Smrg		;;
1539111ba1daSmrg	spu-*)
1540111ba1daSmrg		os=elf
15418ff16396Smrg		;;
15428ff16396Smrg	*-acorn)
1543111ba1daSmrg		os=riscix1.2
15448ff16396Smrg		;;
15458ff16396Smrg	arm*-rebel)
1546111ba1daSmrg		kernel=linux
1547111ba1daSmrg		os=gnu
15488ff16396Smrg		;;
15498ff16396Smrg	arm*-semi)
1550111ba1daSmrg		os=aout
1551111ba1daSmrg		;;
1552111ba1daSmrg	c4x-* | tic4x-*)
1553111ba1daSmrg		os=coff
1554111ba1daSmrg		;;
1555111ba1daSmrg	c8051-*)
1556111ba1daSmrg		os=elf
1557111ba1daSmrg		;;
1558111ba1daSmrg	clipper-intergraph)
1559111ba1daSmrg		os=clix
15608ff16396Smrg		;;
1561111ba1daSmrg	hexagon-*)
1562111ba1daSmrg		os=elf
15638ff16396Smrg		;;
1564d5d8cc55Smrg	tic54x-*)
1565111ba1daSmrg		os=coff
1566d5d8cc55Smrg		;;
1567d5d8cc55Smrg	tic55x-*)
1568111ba1daSmrg		os=coff
1569d5d8cc55Smrg		;;
1570d5d8cc55Smrg	tic6x-*)
1571111ba1daSmrg		os=coff
1572d5d8cc55Smrg		;;
15738ff16396Smrg	# This must come before the *-dec entry.
15748ff16396Smrg	pdp10-*)
1575111ba1daSmrg		os=tops20
15768ff16396Smrg		;;
15778ff16396Smrg	pdp11-*)
1578111ba1daSmrg		os=none
15798ff16396Smrg		;;
15808ff16396Smrg	*-dec | vax-*)
1581111ba1daSmrg		os=ultrix4.2
15828ff16396Smrg		;;
15838ff16396Smrg	m68*-apollo)
1584111ba1daSmrg		os=domain
15858ff16396Smrg		;;
15868ff16396Smrg	i386-sun)
1587111ba1daSmrg		os=sunos4.0.2
15888ff16396Smrg		;;
15898ff16396Smrg	m68000-sun)
1590111ba1daSmrg		os=sunos3
15918ff16396Smrg		;;
15928ff16396Smrg	m68*-cisco)
1593111ba1daSmrg		os=aout
15948ff16396Smrg		;;
1595111ba1daSmrg	mep-*)
1596111ba1daSmrg		os=elf
15978ff16396Smrg		;;
15988ff16396Smrg	mips*-cisco)
1599111ba1daSmrg		os=elf
16008ff16396Smrg		;;
16018ff16396Smrg	mips*-*)
1602111ba1daSmrg		os=elf
16038ff16396Smrg		;;
16048ff16396Smrg	or32-*)
1605111ba1daSmrg		os=coff
16068ff16396Smrg		;;
16078ff16396Smrg	*-tti)	# must be before sparc entry or we get the wrong os.
1608111ba1daSmrg		os=sysv3
16098ff16396Smrg		;;
16108ff16396Smrg	sparc-* | *-sun)
1611111ba1daSmrg		os=sunos4.1.1
16128ff16396Smrg		;;
1613111ba1daSmrg	pru-*)
1614111ba1daSmrg		os=elf
16158ff16396Smrg		;;
1616111ba1daSmrg	*-be)
1617111ba1daSmrg		os=beos
16188ff16396Smrg		;;
16198ff16396Smrg	*-ibm)
1620111ba1daSmrg		os=aix
16218ff16396Smrg		;;
1622111ba1daSmrg	*-knuth)
1623111ba1daSmrg		os=mmixware
16248ff16396Smrg		;;
16258ff16396Smrg	*-wec)
1626111ba1daSmrg		os=proelf
16278ff16396Smrg		;;
16288ff16396Smrg	*-winbond)
1629111ba1daSmrg		os=proelf
16308ff16396Smrg		;;
16318ff16396Smrg	*-oki)
1632111ba1daSmrg		os=proelf
16338ff16396Smrg		;;
16348ff16396Smrg	*-hp)
1635111ba1daSmrg		os=hpux
16368ff16396Smrg		;;
16378ff16396Smrg	*-hitachi)
1638111ba1daSmrg		os=hiux
16398ff16396Smrg		;;
16408ff16396Smrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
1641111ba1daSmrg		os=sysv
16428ff16396Smrg		;;
16438ff16396Smrg	*-cbm)
1644111ba1daSmrg		os=amigaos
16458ff16396Smrg		;;
16468ff16396Smrg	*-dg)
1647111ba1daSmrg		os=dgux
16488ff16396Smrg		;;
16498ff16396Smrg	*-dolphin)
1650111ba1daSmrg		os=sysv3
16518ff16396Smrg		;;
16528ff16396Smrg	m68k-ccur)
1653111ba1daSmrg		os=rtu
16548ff16396Smrg		;;
16558ff16396Smrg	m88k-omron*)
1656111ba1daSmrg		os=luna
16578ff16396Smrg		;;
1658111ba1daSmrg	*-next)
1659111ba1daSmrg		os=nextstep
16608ff16396Smrg		;;
16618ff16396Smrg	*-sequent)
1662111ba1daSmrg		os=ptx
16638ff16396Smrg		;;
16648ff16396Smrg	*-crds)
1665111ba1daSmrg		os=unos
16668ff16396Smrg		;;
16678ff16396Smrg	*-ns)
1668111ba1daSmrg		os=genix
16698ff16396Smrg		;;
16708ff16396Smrg	i370-*)
1671111ba1daSmrg		os=mvs
16728ff16396Smrg		;;
16738ff16396Smrg	*-gould)
1674111ba1daSmrg		os=sysv
16758ff16396Smrg		;;
16768ff16396Smrg	*-highlevel)
1677111ba1daSmrg		os=bsd
16788ff16396Smrg		;;
16798ff16396Smrg	*-encore)
1680111ba1daSmrg		os=bsd
16818ff16396Smrg		;;
16828ff16396Smrg	*-sgi)
1683111ba1daSmrg		os=irix
16848ff16396Smrg		;;
16858ff16396Smrg	*-siemens)
1686111ba1daSmrg		os=sysv4
16878ff16396Smrg		;;
16888ff16396Smrg	*-masscomp)
1689111ba1daSmrg		os=rtu
16908ff16396Smrg		;;
16918ff16396Smrg	f30[01]-fujitsu | f700-fujitsu)
1692111ba1daSmrg		os=uxpv
16938ff16396Smrg		;;
16948ff16396Smrg	*-rom68k)
1695111ba1daSmrg		os=coff
16968ff16396Smrg		;;
16978ff16396Smrg	*-*bug)
1698111ba1daSmrg		os=coff
16998ff16396Smrg		;;
17008ff16396Smrg	*-apple)
1701111ba1daSmrg		os=macos
17028ff16396Smrg		;;
17038ff16396Smrg	*-atari*)
1704111ba1daSmrg		os=mint
1705111ba1daSmrg		;;
1706111ba1daSmrg	*-wrs)
1707111ba1daSmrg		os=vxworks
17088ff16396Smrg		;;
17098ff16396Smrg	*)
1710111ba1daSmrg		os=none
17118ff16396Smrg		;;
17128ff16396Smrgesac
1713111ba1daSmrg
17148ff16396Smrgfi
17158ff16396Smrg
1716111ba1daSmrg# Now, validate our (potentially fixed-up) OS.
1717111ba1daSmrgcase $os in
1718111ba1daSmrg	# Sometimes we do "kernel-libc", so those need to count as OSes.
1719111ba1daSmrg	musl* | newlib* | relibc* | uclibc*)
1720111ba1daSmrg		;;
1721111ba1daSmrg	# Likewise for "kernel-abi"
1722111ba1daSmrg	eabi* | gnueabi*)
1723111ba1daSmrg		;;
1724111ba1daSmrg	# VxWorks passes extra cpu info in the 4th filed.
1725111ba1daSmrg	simlinux | simwindows | spe)
1726111ba1daSmrg		;;
1727111ba1daSmrg	# Now accept the basic system types.
1728111ba1daSmrg	# The portable systems comes first.
1729111ba1daSmrg	# Each alternative MUST end in a * to match a version number.
1730111ba1daSmrg	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
1731111ba1daSmrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
1732111ba1daSmrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
1733111ba1daSmrg	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
1734111ba1daSmrg	     | hiux* | abug | nacl* | netware* | windows* \
1735111ba1daSmrg	     | os9* | macos* | osx* | ios* \
1736111ba1daSmrg	     | mpw* | magic* | mmixware* | mon960* | lnews* \
1737111ba1daSmrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
1738111ba1daSmrg	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
1739111ba1daSmrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
1740111ba1daSmrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
1741111ba1daSmrg	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
1742111ba1daSmrg	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
1743111ba1daSmrg	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
1744111ba1daSmrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
1745111ba1daSmrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
1746111ba1daSmrg	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
1747111ba1daSmrg	     | chorusrdb* | cegcc* | glidix* | serenity* \
1748111ba1daSmrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
1749111ba1daSmrg	     | midipix* | mingw32* | mingw64* | mint* \
1750111ba1daSmrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
1751111ba1daSmrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
1752111ba1daSmrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
1753111ba1daSmrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
1754111ba1daSmrg	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
1755111ba1daSmrg	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
1756111ba1daSmrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
1757111ba1daSmrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
1758111ba1daSmrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
1759111ba1daSmrg	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
1760111ba1daSmrg	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
1761111ba1daSmrg	     | fiwix* | mlibc* )
1762111ba1daSmrg		;;
1763111ba1daSmrg	# This one is extra strict with allowed versions
1764111ba1daSmrg	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
1765111ba1daSmrg		# Don't forget version if it is 3.2v4 or newer.
1766111ba1daSmrg		;;
1767111ba1daSmrg	none)
1768111ba1daSmrg		;;
1769111ba1daSmrg	kernel* )
1770111ba1daSmrg		# Restricted further below
1771111ba1daSmrg		;;
1772111ba1daSmrg	*)
1773111ba1daSmrg		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
1774111ba1daSmrg		exit 1
1775111ba1daSmrg		;;
1776111ba1daSmrgesac
1777111ba1daSmrg
1778111ba1daSmrg# As a final step for OS-related things, validate the OS-kernel combination
1779111ba1daSmrg# (given a valid OS), if there is a kernel.
1780111ba1daSmrgcase $kernel-$os in
1781111ba1daSmrg	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
1782111ba1daSmrg		   | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* )
1783111ba1daSmrg		;;
1784111ba1daSmrg	uclinux-uclibc* )
1785111ba1daSmrg		;;
1786111ba1daSmrg	managarm-mlibc* | managarm-kernel* )
1787111ba1daSmrg		;;
1788111ba1daSmrg	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* )
1789111ba1daSmrg		# These are just libc implementations, not actual OSes, and thus
1790111ba1daSmrg		# require a kernel.
1791111ba1daSmrg		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
1792111ba1daSmrg		exit 1
1793111ba1daSmrg		;;
1794111ba1daSmrg	-kernel* )
1795111ba1daSmrg		echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2
1796111ba1daSmrg		exit 1
1797111ba1daSmrg		;;
1798111ba1daSmrg	*-kernel* )
1799111ba1daSmrg		echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2
1800111ba1daSmrg		exit 1
1801111ba1daSmrg		;;
1802111ba1daSmrg	kfreebsd*-gnu* | kopensolaris*-gnu*)
1803111ba1daSmrg		;;
1804111ba1daSmrg	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
1805111ba1daSmrg		;;
1806111ba1daSmrg	nto-qnx*)
1807111ba1daSmrg		;;
1808111ba1daSmrg	os2-emx)
1809111ba1daSmrg		;;
1810111ba1daSmrg	*-eabi* | *-gnueabi*)
1811111ba1daSmrg		;;
1812111ba1daSmrg	-*)
1813111ba1daSmrg		# Blank kernel with real OS is always fine.
1814111ba1daSmrg		;;
1815111ba1daSmrg	*-*)
1816111ba1daSmrg		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
1817111ba1daSmrg		exit 1
1818111ba1daSmrg		;;
1819111ba1daSmrgesac
1820111ba1daSmrg
18218ff16396Smrg# Here we handle the case where we know the os, and the CPU type, but not the
18228ff16396Smrg# manufacturer.  We pick the logical manufacturer.
1823111ba1daSmrgcase $vendor in
1824111ba1daSmrg	unknown)
1825111ba1daSmrg		case $cpu-$os in
1826111ba1daSmrg			*-riscix*)
18278ff16396Smrg				vendor=acorn
18288ff16396Smrg				;;
1829111ba1daSmrg			*-sunos*)
18308ff16396Smrg				vendor=sun
18318ff16396Smrg				;;
1832111ba1daSmrg			*-cnk* | *-aix*)
18338ff16396Smrg				vendor=ibm
18348ff16396Smrg				;;
1835111ba1daSmrg			*-beos*)
18368ff16396Smrg				vendor=be
18378ff16396Smrg				;;
1838111ba1daSmrg			*-hpux*)
18398ff16396Smrg				vendor=hp
18408ff16396Smrg				;;
1841111ba1daSmrg			*-mpeix*)
18428ff16396Smrg				vendor=hp
18438ff16396Smrg				;;
1844111ba1daSmrg			*-hiux*)
18458ff16396Smrg				vendor=hitachi
18468ff16396Smrg				;;
1847111ba1daSmrg			*-unos*)
18488ff16396Smrg				vendor=crds
18498ff16396Smrg				;;
1850111ba1daSmrg			*-dgux*)
18518ff16396Smrg				vendor=dg
18528ff16396Smrg				;;
1853111ba1daSmrg			*-luna*)
18548ff16396Smrg				vendor=omron
18558ff16396Smrg				;;
1856111ba1daSmrg			*-genix*)
18578ff16396Smrg				vendor=ns
18588ff16396Smrg				;;
1859111ba1daSmrg			*-clix*)
1860111ba1daSmrg				vendor=intergraph
1861111ba1daSmrg				;;
1862111ba1daSmrg			*-mvs* | *-opened*)
1863111ba1daSmrg				vendor=ibm
1864111ba1daSmrg				;;
1865111ba1daSmrg			*-os400*)
18668ff16396Smrg				vendor=ibm
18678ff16396Smrg				;;
1868111ba1daSmrg			s390-* | s390x-*)
18698ff16396Smrg				vendor=ibm
18708ff16396Smrg				;;
1871111ba1daSmrg			*-ptx*)
18728ff16396Smrg				vendor=sequent
18738ff16396Smrg				;;
1874111ba1daSmrg			*-tpf*)
18758ff16396Smrg				vendor=ibm
18768ff16396Smrg				;;
1877111ba1daSmrg			*-vxsim* | *-vxworks* | *-windiss*)
18788ff16396Smrg				vendor=wrs
18798ff16396Smrg				;;
1880111ba1daSmrg			*-aux*)
18818ff16396Smrg				vendor=apple
18828ff16396Smrg				;;
1883111ba1daSmrg			*-hms*)
18848ff16396Smrg				vendor=hitachi
18858ff16396Smrg				;;
1886111ba1daSmrg			*-mpw* | *-macos*)
18878ff16396Smrg				vendor=apple
18888ff16396Smrg				;;
1889111ba1daSmrg			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
18908ff16396Smrg				vendor=atari
18918ff16396Smrg				;;
1892111ba1daSmrg			*-vos*)
18938ff16396Smrg				vendor=stratus
18948ff16396Smrg				;;
18958ff16396Smrg		esac
18968ff16396Smrg		;;
18978ff16396Smrgesac
18988ff16396Smrg
1899111ba1daSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os"
19008ff16396Smrgexit
19018ff16396Smrg
19028ff16396Smrg# Local variables:
1903111ba1daSmrg# eval: (add-hook 'before-save-hook 'time-stamp)
19048ff16396Smrg# time-stamp-start: "timestamp='"
19058ff16396Smrg# time-stamp-format: "%:y-%02m-%02d"
19068ff16396Smrg# time-stamp-end: "'"
19078ff16396Smrg# End:
1908