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