config.sub revision a0c41156
145bc899bSmrg#! /bin/sh
245bc899bSmrg# Configuration validation subroutine script.
3a0c41156Smrg#   Copyright 1992-2018 Free Software Foundation, Inc.
445bc899bSmrg
5a0c41156Smrgtimestamp='2018-08-29'
645bc899bSmrg
7c97b1c41Smrg# This file is free software; you can redistribute it and/or modify it
8c97b1c41Smrg# under the terms of the GNU General Public License as published by
9c97b1c41Smrg# the Free Software Foundation; either version 3 of the License, or
1045bc899bSmrg# (at your option) any later version.
1145bc899bSmrg#
12c97b1c41Smrg# This program is distributed in the hope that it will be useful, but
13c97b1c41Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
14c97b1c41Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15c97b1c41Smrg# General Public License for more details.
1645bc899bSmrg#
1745bc899bSmrg# You should have received a copy of the GNU General Public License
18a0c41156Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>.
1950f2e948Smrg#
2045bc899bSmrg# As a special exception to the GNU General Public License, if you
2145bc899bSmrg# distribute this file as part of a program that contains a
2245bc899bSmrg# configuration script generated by Autoconf, you may include it under
23c97b1c41Smrg# the same distribution terms that you use for the rest of that
24c97b1c41Smrg# program.  This Exception is an additional permission under section 7
25c97b1c41Smrg# of the GNU General Public License, version 3 ("GPLv3").
2645bc899bSmrg
2750f2e948Smrg
2857ba8e8bSmrg# Please send patches to <config-patches@gnu.org>.
2945bc899bSmrg#
3045bc899bSmrg# Configuration subroutine to validate and canonicalize a configuration type.
3145bc899bSmrg# Supply the specified configuration type as an argument.
3245bc899bSmrg# If it is invalid, we print an error message on stderr and exit with code 1.
3345bc899bSmrg# Otherwise, we print the canonical config type on stdout and succeed.
3445bc899bSmrg
35b40a6198Smrg# You can get the latest version of this script from:
36a0c41156Smrg# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
37b40a6198Smrg
3845bc899bSmrg# This file is supposed to be the same for all GNU packages
3945bc899bSmrg# and recognize all the CPU types, system types and aliases
4045bc899bSmrg# that are meaningful with *any* GNU software.
4145bc899bSmrg# Each package is responsible for reporting which valid configurations
4245bc899bSmrg# it does not support.  The user should be able to distinguish
4345bc899bSmrg# a failure to support a valid configuration from a meaningless
4445bc899bSmrg# configuration.
4545bc899bSmrg
4645bc899bSmrg# The goal of this file is to map all the various variations of a given
4745bc899bSmrg# machine specification into a single specification in the form:
4845bc899bSmrg#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
4945bc899bSmrg# or in some cases, the newer four-part form:
5045bc899bSmrg#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
5145bc899bSmrg# It is wrong to echo any other type of specification.
5245bc899bSmrg
5345bc899bSmrgme=`echo "$0" | sed -e 's,.*/,,'`
5445bc899bSmrg
5545bc899bSmrgusage="\
56f2408745SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
5745bc899bSmrg
5845bc899bSmrgCanonicalize a configuration name.
5945bc899bSmrg
60a0c41156SmrgOptions:
6145bc899bSmrg  -h, --help         print this help, then exit
6245bc899bSmrg  -t, --time-stamp   print date of last modification, then exit
6345bc899bSmrg  -v, --version      print version number, then exit
6445bc899bSmrg
6545bc899bSmrgReport bugs and patches to <config-patches@gnu.org>."
6645bc899bSmrg
6745bc899bSmrgversion="\
6845bc899bSmrgGNU config.sub ($timestamp)
6945bc899bSmrg
70a0c41156SmrgCopyright 1992-2018 Free Software Foundation, Inc.
7145bc899bSmrg
7245bc899bSmrgThis is free software; see the source for copying conditions.  There is NO
7345bc899bSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
7445bc899bSmrg
7545bc899bSmrghelp="
7645bc899bSmrgTry \`$me --help' for more information."
7745bc899bSmrg
7845bc899bSmrg# Parse command line
7945bc899bSmrgwhile test $# -gt 0 ; do
8045bc899bSmrg  case $1 in
8145bc899bSmrg    --time-stamp | --time* | -t )
8250f2e948Smrg       echo "$timestamp" ; exit ;;
8345bc899bSmrg    --version | -v )
8450f2e948Smrg       echo "$version" ; exit ;;
8545bc899bSmrg    --help | --h* | -h )
8650f2e948Smrg       echo "$usage"; exit ;;
8745bc899bSmrg    -- )     # Stop option processing
8845bc899bSmrg       shift; break ;;
8945bc899bSmrg    - )	# Use stdin as input.
9045bc899bSmrg       break ;;
9145bc899bSmrg    -* )
9245bc899bSmrg       echo "$me: invalid option $1$help"
9345bc899bSmrg       exit 1 ;;
9445bc899bSmrg
9545bc899bSmrg    *local*)
9645bc899bSmrg       # First pass through any local machine types.
97a0c41156Smrg       echo "$1"
9850f2e948Smrg       exit ;;
9945bc899bSmrg
10045bc899bSmrg    * )
10145bc899bSmrg       break ;;
10245bc899bSmrg  esac
10345bc899bSmrgdone
10445bc899bSmrg
10545bc899bSmrgcase $# in
10645bc899bSmrg 0) echo "$me: missing argument$help" >&2
10745bc899bSmrg    exit 1;;
10845bc899bSmrg 1) ;;
10945bc899bSmrg *) echo "$me: too many arguments$help" >&2
11045bc899bSmrg    exit 1;;
11145bc899bSmrgesac
11245bc899bSmrg
113a0c41156Smrg# Split fields of configuration type
114a0c41156SmrgIFS="-" read -r field1 field2 field3 field4 <<EOF
115a0c41156Smrg$1
116a0c41156SmrgEOF
11745bc899bSmrg
118a0c41156Smrg# Separate into logical components for further validation
119a0c41156Smrgcase $1 in
120a0c41156Smrg	*-*-*-*-*)
121a0c41156Smrg		echo Invalid configuration \`"$1"\': more than four components >&2
122a0c41156Smrg		exit 1
12345bc899bSmrg		;;
124a0c41156Smrg	*-*-*-*)
125a0c41156Smrg		basic_machine=$field1-$field2
126a0c41156Smrg		os=$field3-$field4
12745bc899bSmrg		;;
128a0c41156Smrg	*-*-*)
129a0c41156Smrg		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
130a0c41156Smrg		# parts
131a0c41156Smrg		maybe_os=$field2-$field3
132a0c41156Smrg		case $maybe_os in
133a0c41156Smrg			nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \
134a0c41156Smrg			| linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \
135a0c41156Smrg			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
136a0c41156Smrg			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
137a0c41156Smrg			| storm-chaos* | os2-emx* | rtmk-nova*)
138a0c41156Smrg				basic_machine=$field1
139a0c41156Smrg				os=$maybe_os
140a0c41156Smrg				;;
141a0c41156Smrg			android-linux)
142a0c41156Smrg				basic_machine=$field1-unknown
143a0c41156Smrg				os=linux-android
144a0c41156Smrg				;;
145a0c41156Smrg			*)
146a0c41156Smrg				basic_machine=$field1-$field2
147a0c41156Smrg				os=$field3
148a0c41156Smrg				;;
149a0c41156Smrg		esac
15045bc899bSmrg		;;
151a0c41156Smrg	*-*)
152a0c41156Smrg		# A lone config we happen to match not fitting any patern
153a0c41156Smrg		case $field1-$field2 in
154a0c41156Smrg			decstation-3100)
155a0c41156Smrg				basic_machine=mips-dec
156a0c41156Smrg				os=
157a0c41156Smrg				;;
158a0c41156Smrg			*-*)
159a0c41156Smrg				# Second component is usually, but not always the OS
160a0c41156Smrg				case $field2 in
161a0c41156Smrg					# Prevent following clause from handling this valid os
162a0c41156Smrg					sun*os*)
163a0c41156Smrg						basic_machine=$field1
164a0c41156Smrg						os=$field2
165a0c41156Smrg						;;
166a0c41156Smrg					# Manufacturers
167a0c41156Smrg					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
168a0c41156Smrg					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
169a0c41156Smrg					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
170a0c41156Smrg					| convergent* | ncr* | news | 32* | 3600* | 3100* \
171a0c41156Smrg					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
172a0c41156Smrg					| ultra | tti* | harris | dolphin | highlevel | gould \
173a0c41156Smrg					| cbm | ns | masscomp | apple | axis | knuth | cray \
174a0c41156Smrg					| microblaze* | sim | cisco \
175a0c41156Smrg					| oki | wec | wrs | winbond)
176a0c41156Smrg						basic_machine=$field1-$field2
177a0c41156Smrg						os=
178a0c41156Smrg						;;
179a0c41156Smrg					*)
180a0c41156Smrg						basic_machine=$field1
181a0c41156Smrg						os=$field2
182a0c41156Smrg						;;
183a0c41156Smrg				esac
184a0c41156Smrg			;;
185a0c41156Smrg		esac
18645bc899bSmrg		;;
187a0c41156Smrg	*)
188a0c41156Smrg		# Convert single-component short-hands not valid as part of
189a0c41156Smrg		# multi-component configurations.
190a0c41156Smrg		case $field1 in
191a0c41156Smrg			386bsd)
192a0c41156Smrg				basic_machine=i386-pc
193a0c41156Smrg				os=bsd
194a0c41156Smrg				;;
195a0c41156Smrg			a29khif)
196a0c41156Smrg				basic_machine=a29k-amd
197a0c41156Smrg				os=udi
198a0c41156Smrg				;;
199a0c41156Smrg			adobe68k)
200a0c41156Smrg				basic_machine=m68010-adobe
201a0c41156Smrg				os=scout
202a0c41156Smrg				;;
203a0c41156Smrg			alliant)
204a0c41156Smrg				basic_machine=fx80-alliant
205a0c41156Smrg				os=
206a0c41156Smrg				;;
207a0c41156Smrg			altos | altos3068)
208a0c41156Smrg				basic_machine=m68k-altos
209a0c41156Smrg				os=
210a0c41156Smrg				;;
211a0c41156Smrg			am29k)
212a0c41156Smrg				basic_machine=a29k-none
213a0c41156Smrg				os=bsd
214a0c41156Smrg				;;
215a0c41156Smrg			amdahl)
216a0c41156Smrg				basic_machine=580-amdahl
217a0c41156Smrg				os=sysv
218a0c41156Smrg				;;
219a0c41156Smrg			amiga)
220a0c41156Smrg				basic_machine=m68k-unknown
221a0c41156Smrg				os=
222a0c41156Smrg				;;
223a0c41156Smrg			amigaos | amigados)
224a0c41156Smrg				basic_machine=m68k-unknown
225a0c41156Smrg				os=amigaos
226a0c41156Smrg				;;
227a0c41156Smrg			amigaunix | amix)
228a0c41156Smrg				basic_machine=m68k-unknown
229a0c41156Smrg				os=sysv4
230a0c41156Smrg				;;
231a0c41156Smrg			apollo68)
232a0c41156Smrg				basic_machine=m68k-apollo
233a0c41156Smrg				os=sysv
234a0c41156Smrg				;;
235a0c41156Smrg			apollo68bsd)
236a0c41156Smrg				basic_machine=m68k-apollo
237a0c41156Smrg				os=bsd
238a0c41156Smrg				;;
239a0c41156Smrg			aros)
240a0c41156Smrg				basic_machine=i386-pc
241a0c41156Smrg				os=aros
242a0c41156Smrg				;;
243a0c41156Smrg			aux)
244a0c41156Smrg				basic_machine=m68k-apple
245a0c41156Smrg				os=aux
246a0c41156Smrg				;;
247a0c41156Smrg			balance)
248a0c41156Smrg				basic_machine=ns32k-sequent
249a0c41156Smrg				os=dynix
250a0c41156Smrg				;;
251a0c41156Smrg			blackfin)
252a0c41156Smrg				basic_machine=bfin-unknown
253a0c41156Smrg				os=linux
254a0c41156Smrg				;;
255a0c41156Smrg			cegcc)
256a0c41156Smrg				basic_machine=arm-unknown
257a0c41156Smrg				os=cegcc
258a0c41156Smrg				;;
259a0c41156Smrg			convex-c1)
260a0c41156Smrg				basic_machine=c1-convex
261a0c41156Smrg				os=bsd
262a0c41156Smrg				;;
263a0c41156Smrg			convex-c2)
264a0c41156Smrg				basic_machine=c2-convex
265a0c41156Smrg				os=bsd
266a0c41156Smrg				;;
267a0c41156Smrg			convex-c32)
268a0c41156Smrg				basic_machine=c32-convex
269a0c41156Smrg				os=bsd
270a0c41156Smrg				;;
271a0c41156Smrg			convex-c34)
272a0c41156Smrg				basic_machine=c34-convex
273a0c41156Smrg				os=bsd
274a0c41156Smrg				;;
275a0c41156Smrg			convex-c38)
276a0c41156Smrg				basic_machine=c38-convex
277a0c41156Smrg				os=bsd
278a0c41156Smrg				;;
279a0c41156Smrg			cray)
280a0c41156Smrg				basic_machine=j90-cray
281a0c41156Smrg				os=unicos
282a0c41156Smrg				;;
283a0c41156Smrg			crds | unos)
284a0c41156Smrg				basic_machine=m68k-crds
285a0c41156Smrg				os=
286a0c41156Smrg				;;
287a0c41156Smrg			da30)
288a0c41156Smrg				basic_machine=m68k-da30
289a0c41156Smrg				os=
290a0c41156Smrg				;;
291a0c41156Smrg			decstation | pmax | pmin | dec3100 | decstatn)
292a0c41156Smrg				basic_machine=mips-dec
293a0c41156Smrg				os=
294a0c41156Smrg				;;
295a0c41156Smrg			delta88)
296a0c41156Smrg				basic_machine=m88k-motorola
297a0c41156Smrg				os=sysv3
298a0c41156Smrg				;;
299a0c41156Smrg			dicos)
300a0c41156Smrg				basic_machine=i686-pc
301a0c41156Smrg				os=dicos
302a0c41156Smrg				;;
303a0c41156Smrg			djgpp)
304a0c41156Smrg				basic_machine=i586-pc
305a0c41156Smrg				os=msdosdjgpp
306a0c41156Smrg				;;
307a0c41156Smrg			ebmon29k)
308a0c41156Smrg				basic_machine=a29k-amd
309a0c41156Smrg				os=ebmon
310a0c41156Smrg				;;
311a0c41156Smrg			es1800 | OSE68k | ose68k | ose | OSE)
312a0c41156Smrg				basic_machine=m68k-ericsson
313a0c41156Smrg				os=ose
314a0c41156Smrg				;;
315a0c41156Smrg			gmicro)
316a0c41156Smrg				basic_machine=tron-gmicro
317a0c41156Smrg				os=sysv
318a0c41156Smrg				;;
319a0c41156Smrg			go32)
320a0c41156Smrg				basic_machine=i386-pc
321a0c41156Smrg				os=go32
322a0c41156Smrg				;;
323a0c41156Smrg			h8300hms)
324a0c41156Smrg				basic_machine=h8300-hitachi
325a0c41156Smrg				os=hms
326a0c41156Smrg				;;
327a0c41156Smrg			h8300xray)
328a0c41156Smrg				basic_machine=h8300-hitachi
329a0c41156Smrg				os=xray
330a0c41156Smrg				;;
331a0c41156Smrg			h8500hms)
332a0c41156Smrg				basic_machine=h8500-hitachi
333a0c41156Smrg				os=hms
334a0c41156Smrg				;;
335a0c41156Smrg			harris)
336a0c41156Smrg				basic_machine=m88k-harris
337a0c41156Smrg				os=sysv3
338a0c41156Smrg				;;
339a0c41156Smrg			hp300)
340a0c41156Smrg				basic_machine=m68k-hp
341a0c41156Smrg				;;
342a0c41156Smrg			hp300bsd)
343a0c41156Smrg				basic_machine=m68k-hp
344a0c41156Smrg				os=bsd
345a0c41156Smrg				;;
346a0c41156Smrg			hp300hpux)
347a0c41156Smrg				basic_machine=m68k-hp
348a0c41156Smrg				os=hpux
349a0c41156Smrg				;;
350a0c41156Smrg			hppaosf)
351a0c41156Smrg				basic_machine=hppa1.1-hp
352a0c41156Smrg				os=osf
353a0c41156Smrg				;;
354a0c41156Smrg			hppro)
355a0c41156Smrg				basic_machine=hppa1.1-hp
356a0c41156Smrg				os=proelf
357a0c41156Smrg				;;
358a0c41156Smrg			i386mach)
359a0c41156Smrg				basic_machine=i386-mach
360a0c41156Smrg				os=mach
361a0c41156Smrg				;;
362a0c41156Smrg			vsta)
363a0c41156Smrg				basic_machine=i386-pc
364a0c41156Smrg				os=vsta
365a0c41156Smrg				;;
366a0c41156Smrg			isi68 | isi)
367a0c41156Smrg				basic_machine=m68k-isi
368a0c41156Smrg				os=sysv
369a0c41156Smrg				;;
370a0c41156Smrg			m68knommu)
371a0c41156Smrg				basic_machine=m68k-unknown
372a0c41156Smrg				os=linux
373a0c41156Smrg				;;
374a0c41156Smrg			magnum | m3230)
375a0c41156Smrg				basic_machine=mips-mips
376a0c41156Smrg				os=sysv
377a0c41156Smrg				;;
378a0c41156Smrg			merlin)
379a0c41156Smrg				basic_machine=ns32k-utek
380a0c41156Smrg				os=sysv
381a0c41156Smrg				;;
382a0c41156Smrg			mingw64)
383a0c41156Smrg				basic_machine=x86_64-pc
384a0c41156Smrg				os=mingw64
385a0c41156Smrg				;;
386a0c41156Smrg			mingw32)
387a0c41156Smrg				basic_machine=i686-pc
388a0c41156Smrg				os=mingw32
389a0c41156Smrg				;;
390a0c41156Smrg			mingw32ce)
391a0c41156Smrg				basic_machine=arm-unknown
392a0c41156Smrg				os=mingw32ce
393a0c41156Smrg				;;
394a0c41156Smrg			monitor)
395a0c41156Smrg				basic_machine=m68k-rom68k
396a0c41156Smrg				os=coff
397a0c41156Smrg				;;
398a0c41156Smrg			morphos)
399a0c41156Smrg				basic_machine=powerpc-unknown
400a0c41156Smrg				os=morphos
401a0c41156Smrg				;;
402a0c41156Smrg			moxiebox)
403a0c41156Smrg				basic_machine=moxie-unknown
404a0c41156Smrg				os=moxiebox
405a0c41156Smrg				;;
406a0c41156Smrg			msdos)
407a0c41156Smrg				basic_machine=i386-pc
408a0c41156Smrg				os=msdos
409a0c41156Smrg				;;
410a0c41156Smrg			msys)
411a0c41156Smrg				basic_machine=i686-pc
412a0c41156Smrg				os=msys
413a0c41156Smrg				;;
414a0c41156Smrg			mvs)
415a0c41156Smrg				basic_machine=i370-ibm
416a0c41156Smrg				os=mvs
417a0c41156Smrg				;;
418a0c41156Smrg			nacl)
419a0c41156Smrg				basic_machine=le32-unknown
420a0c41156Smrg				os=nacl
421a0c41156Smrg				;;
422a0c41156Smrg			ncr3000)
423a0c41156Smrg				basic_machine=i486-ncr
424a0c41156Smrg				os=sysv4
425a0c41156Smrg				;;
426a0c41156Smrg			netbsd386)
427a0c41156Smrg				basic_machine=i386-pc
428a0c41156Smrg				os=netbsd
429a0c41156Smrg				;;
430a0c41156Smrg			netwinder)
431a0c41156Smrg				basic_machine=armv4l-rebel
432a0c41156Smrg				os=linux
433a0c41156Smrg				;;
434a0c41156Smrg			news | news700 | news800 | news900)
435a0c41156Smrg				basic_machine=m68k-sony
436a0c41156Smrg				os=newsos
437a0c41156Smrg				;;
438a0c41156Smrg			news1000)
439a0c41156Smrg				basic_machine=m68030-sony
440a0c41156Smrg				os=newsos
441a0c41156Smrg				;;
442a0c41156Smrg			necv70)
443a0c41156Smrg				basic_machine=v70-nec
444a0c41156Smrg				os=sysv
445a0c41156Smrg				;;
446a0c41156Smrg			nh3000)
447a0c41156Smrg				basic_machine=m68k-harris
448a0c41156Smrg				os=cxux
449a0c41156Smrg				;;
450a0c41156Smrg			nh[45]000)
451a0c41156Smrg				basic_machine=m88k-harris
452a0c41156Smrg				os=cxux
453a0c41156Smrg				;;
454a0c41156Smrg			nindy960)
455a0c41156Smrg				basic_machine=i960-intel
456a0c41156Smrg				os=nindy
457a0c41156Smrg				;;
458a0c41156Smrg			mon960)
459a0c41156Smrg				basic_machine=i960-intel
460a0c41156Smrg				os=mon960
461a0c41156Smrg				;;
462a0c41156Smrg			nonstopux)
463a0c41156Smrg				basic_machine=mips-compaq
464a0c41156Smrg				os=nonstopux
465a0c41156Smrg				;;
466a0c41156Smrg			os400)
467a0c41156Smrg				basic_machine=powerpc-ibm
468a0c41156Smrg				os=os400
469a0c41156Smrg				;;
470a0c41156Smrg			OSE68000 | ose68000)
471a0c41156Smrg				basic_machine=m68000-ericsson
472a0c41156Smrg				os=ose
473a0c41156Smrg				;;
474a0c41156Smrg			os68k)
475a0c41156Smrg				basic_machine=m68k-none
476a0c41156Smrg				os=os68k
477a0c41156Smrg				;;
478a0c41156Smrg			paragon)
479a0c41156Smrg				basic_machine=i860-intel
480a0c41156Smrg				os=osf
481a0c41156Smrg				;;
482a0c41156Smrg			parisc)
483a0c41156Smrg				basic_machine=hppa-unknown
484a0c41156Smrg				os=linux
485a0c41156Smrg				;;
486a0c41156Smrg			pw32)
487a0c41156Smrg				basic_machine=i586-unknown
488a0c41156Smrg				os=pw32
489a0c41156Smrg				;;
490a0c41156Smrg			rdos | rdos64)
491a0c41156Smrg				basic_machine=x86_64-pc
492a0c41156Smrg				os=rdos
493a0c41156Smrg				;;
494a0c41156Smrg			rdos32)
495a0c41156Smrg				basic_machine=i386-pc
496a0c41156Smrg				os=rdos
497a0c41156Smrg				;;
498a0c41156Smrg			rom68k)
499a0c41156Smrg				basic_machine=m68k-rom68k
500a0c41156Smrg				os=coff
501a0c41156Smrg				;;
502a0c41156Smrg			sa29200)
503a0c41156Smrg				basic_machine=a29k-amd
504a0c41156Smrg				os=udi
505a0c41156Smrg				;;
506a0c41156Smrg			sei)
507a0c41156Smrg				basic_machine=mips-sei
508a0c41156Smrg				os=seiux
509a0c41156Smrg				;;
510a0c41156Smrg			sequent)
511a0c41156Smrg				basic_machine=i386-sequent
512a0c41156Smrg				os=
513a0c41156Smrg				;;
514a0c41156Smrg			sps7)
515a0c41156Smrg				basic_machine=m68k-bull
516a0c41156Smrg				os=sysv2
517a0c41156Smrg				;;
518a0c41156Smrg			st2000)
519a0c41156Smrg				basic_machine=m68k-tandem
520a0c41156Smrg				os=
521a0c41156Smrg				;;
522a0c41156Smrg			stratus)
523a0c41156Smrg				basic_machine=i860-stratus
524a0c41156Smrg				os=sysv4
525a0c41156Smrg				;;
526a0c41156Smrg			sun2)
527a0c41156Smrg				basic_machine=m68000-sun
528a0c41156Smrg				os=
529a0c41156Smrg				;;
530a0c41156Smrg			sun2os3)
531a0c41156Smrg				basic_machine=m68000-sun
532a0c41156Smrg				os=sunos3
533a0c41156Smrg				;;
534a0c41156Smrg			sun2os4)
535a0c41156Smrg				basic_machine=m68000-sun
536a0c41156Smrg				os=sunos4
537a0c41156Smrg				;;
538a0c41156Smrg			sun3)
539a0c41156Smrg				basic_machine=m68k-sun
540a0c41156Smrg				os=
541a0c41156Smrg				;;
542a0c41156Smrg			sun3os3)
543a0c41156Smrg				basic_machine=m68k-sun
544a0c41156Smrg				os=sunos3
545a0c41156Smrg				;;
546a0c41156Smrg			sun3os4)
547a0c41156Smrg				basic_machine=m68k-sun
548a0c41156Smrg				os=sunos4
549a0c41156Smrg				;;
550a0c41156Smrg			sun4)
551a0c41156Smrg				basic_machine=sparc-sun
552a0c41156Smrg				os=
553a0c41156Smrg				;;
554a0c41156Smrg			sun4os3)
555a0c41156Smrg				basic_machine=sparc-sun
556a0c41156Smrg				os=sunos3
557a0c41156Smrg				;;
558a0c41156Smrg			sun4os4)
559a0c41156Smrg				basic_machine=sparc-sun
560a0c41156Smrg				os=sunos4
561a0c41156Smrg				;;
562a0c41156Smrg			sun4sol2)
563a0c41156Smrg				basic_machine=sparc-sun
564a0c41156Smrg				os=solaris2
565a0c41156Smrg				;;
566a0c41156Smrg			sun386 | sun386i | roadrunner)
567a0c41156Smrg				basic_machine=i386-sun
568a0c41156Smrg				os=
569a0c41156Smrg				;;
570a0c41156Smrg			sv1)
571a0c41156Smrg				basic_machine=sv1-cray
572a0c41156Smrg				os=unicos
573a0c41156Smrg				;;
574a0c41156Smrg			symmetry)
575a0c41156Smrg				basic_machine=i386-sequent
576a0c41156Smrg				os=dynix
577a0c41156Smrg				;;
578a0c41156Smrg			t3e)
579a0c41156Smrg				basic_machine=alphaev5-cray
580a0c41156Smrg				os=unicos
581a0c41156Smrg				;;
582a0c41156Smrg			t90)
583a0c41156Smrg				basic_machine=t90-cray
584a0c41156Smrg				os=unicos
585a0c41156Smrg				;;
586a0c41156Smrg			toad1)
587a0c41156Smrg				basic_machine=pdp10-xkl
588a0c41156Smrg				os=tops20
589a0c41156Smrg				;;
590a0c41156Smrg			tpf)
591a0c41156Smrg				basic_machine=s390x-ibm
592a0c41156Smrg				os=tpf
593a0c41156Smrg				;;
594a0c41156Smrg			udi29k)
595a0c41156Smrg				basic_machine=a29k-amd
596a0c41156Smrg				os=udi
597a0c41156Smrg				;;
598a0c41156Smrg			ultra3)
599a0c41156Smrg				basic_machine=a29k-nyu
600a0c41156Smrg				os=sym1
601a0c41156Smrg				;;
602a0c41156Smrg			v810 | necv810)
603a0c41156Smrg				basic_machine=v810-nec
604a0c41156Smrg				os=none
605a0c41156Smrg				;;
606a0c41156Smrg			vaxv)
607a0c41156Smrg				basic_machine=vax-dec
608a0c41156Smrg				os=sysv
609a0c41156Smrg				;;
610a0c41156Smrg			vms)
611a0c41156Smrg				basic_machine=vax-dec
612a0c41156Smrg				os=vms
613a0c41156Smrg				;;
614a0c41156Smrg			vxworks960)
615a0c41156Smrg				basic_machine=i960-wrs
616a0c41156Smrg				os=vxworks
617a0c41156Smrg				;;
618a0c41156Smrg			vxworks68)
619a0c41156Smrg				basic_machine=m68k-wrs
620a0c41156Smrg				os=vxworks
621a0c41156Smrg				;;
622a0c41156Smrg			vxworks29k)
623a0c41156Smrg				basic_machine=a29k-wrs
624a0c41156Smrg				os=vxworks
625a0c41156Smrg				;;
626a0c41156Smrg			xbox)
627a0c41156Smrg				basic_machine=i686-pc
628a0c41156Smrg				os=mingw32
629a0c41156Smrg				;;
630a0c41156Smrg			ymp)
631a0c41156Smrg				basic_machine=ymp-cray
632a0c41156Smrg				os=unicos
633a0c41156Smrg				;;
634a0c41156Smrg			*)
635a0c41156Smrg				basic_machine=$1
636a0c41156Smrg				os=
637a0c41156Smrg				;;
638a0c41156Smrg		esac
63945bc899bSmrg		;;
64045bc899bSmrgesac
64145bc899bSmrg
642a0c41156Smrg# Decode 1-component or ad-hoc basic machines
64345bc899bSmrgcase $basic_machine in
644a0c41156Smrg	# Here we handle the default manufacturer of certain CPU types.  It is in
645a0c41156Smrg	# some cases the only manufacturer, in others, it is the most popular.
646a0c41156Smrg	w89k)
647a0c41156Smrg		cpu=hppa1.1
648a0c41156Smrg		vendor=winbond
64945bc899bSmrg		;;
650a0c41156Smrg	op50n)
651a0c41156Smrg		cpu=hppa1.1
652a0c41156Smrg		vendor=oki
65345bc899bSmrg		;;
654a0c41156Smrg	op60c)
655a0c41156Smrg		cpu=hppa1.1
656a0c41156Smrg		vendor=oki
65750f2e948Smrg		;;
658a0c41156Smrg	ibm*)
659a0c41156Smrg		cpu=i370
660a0c41156Smrg		vendor=ibm
661b40a6198Smrg		;;
662a0c41156Smrg	orion105)
663a0c41156Smrg		cpu=clipper
664a0c41156Smrg		vendor=highlevel
665c97b1c41Smrg		;;
666a0c41156Smrg	mac | mpw | mac-mpw)
667a0c41156Smrg		cpu=m68k
668a0c41156Smrg		vendor=apple
669b40a6198Smrg		;;
670a0c41156Smrg	pmac | pmac-mpw)
671a0c41156Smrg		cpu=powerpc
672a0c41156Smrg		vendor=apple
673b40a6198Smrg		;;
674b40a6198Smrg
67545bc899bSmrg	# Recognize the various machine names and aliases which stand
67645bc899bSmrg	# for a CPU type and a company and sometimes even an OS.
67745bc899bSmrg	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
678a0c41156Smrg		cpu=m68000
679a0c41156Smrg		vendor=att
68045bc899bSmrg		;;
68145bc899bSmrg	3b*)
682a0c41156Smrg		cpu=we32k
683a0c41156Smrg		vendor=att
68450f2e948Smrg		;;
685b40a6198Smrg	bluegene*)
686a0c41156Smrg		cpu=powerpc
687a0c41156Smrg		vendor=ibm
688a0c41156Smrg		os=cnk
68945bc899bSmrg		;;
69045bc899bSmrg	decsystem10* | dec10*)
691a0c41156Smrg		cpu=pdp10
692a0c41156Smrg		vendor=dec
693a0c41156Smrg		os=tops10
69445bc899bSmrg		;;
69545bc899bSmrg	decsystem20* | dec20*)
696a0c41156Smrg		cpu=pdp10
697a0c41156Smrg		vendor=dec
698a0c41156Smrg		os=tops20
69945bc899bSmrg		;;
70045bc899bSmrg	delta | 3300 | motorola-3300 | motorola-delta \
70145bc899bSmrg	      | 3300-motorola | delta-motorola)
702a0c41156Smrg		cpu=m68k
703a0c41156Smrg		vendor=motorola
70445bc899bSmrg		;;
705a0c41156Smrg	dpx2*)
706a0c41156Smrg		cpu=m68k
707a0c41156Smrg		vendor=bull
708a0c41156Smrg		os=sysv3
70945bc899bSmrg		;;
71045bc899bSmrg	encore | umax | mmax)
711a0c41156Smrg		cpu=ns32k
712a0c41156Smrg		vendor=encore
71345bc899bSmrg		;;
714a0c41156Smrg	elxsi)
715a0c41156Smrg		cpu=elxsi
716a0c41156Smrg		vendor=elxsi
717a0c41156Smrg		os=${os:-bsd}
71845bc899bSmrg		;;
71945bc899bSmrg	fx2800)
720a0c41156Smrg		cpu=i860
721a0c41156Smrg		vendor=alliant
72245bc899bSmrg		;;
72345bc899bSmrg	genix)
724a0c41156Smrg		cpu=ns32k
725a0c41156Smrg		vendor=ns
72645bc899bSmrg		;;
72745bc899bSmrg	h3050r* | hiux*)
728a0c41156Smrg		cpu=hppa1.1
729a0c41156Smrg		vendor=hitachi
730a0c41156Smrg		os=hiuxwe2
73145bc899bSmrg		;;
73245bc899bSmrg	hp3k9[0-9][0-9] | hp9[0-9][0-9])
733a0c41156Smrg		cpu=hppa1.0
734a0c41156Smrg		vendor=hp
73545bc899bSmrg		;;
73645bc899bSmrg	hp9k2[0-9][0-9] | hp9k31[0-9])
737a0c41156Smrg		cpu=m68000
738a0c41156Smrg		vendor=hp
73945bc899bSmrg		;;
74045bc899bSmrg	hp9k3[2-9][0-9])
741a0c41156Smrg		cpu=m68k
742a0c41156Smrg		vendor=hp
74345bc899bSmrg		;;
74445bc899bSmrg	hp9k6[0-9][0-9] | hp6[0-9][0-9])
745a0c41156Smrg		cpu=hppa1.0
746a0c41156Smrg		vendor=hp
74745bc899bSmrg		;;
74845bc899bSmrg	hp9k7[0-79][0-9] | hp7[0-79][0-9])
749a0c41156Smrg		cpu=hppa1.1
750a0c41156Smrg		vendor=hp
75145bc899bSmrg		;;
75245bc899bSmrg	hp9k78[0-9] | hp78[0-9])
75345bc899bSmrg		# FIXME: really hppa2.0-hp
754a0c41156Smrg		cpu=hppa1.1
755a0c41156Smrg		vendor=hp
75645bc899bSmrg		;;
75745bc899bSmrg	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
75845bc899bSmrg		# FIXME: really hppa2.0-hp
759a0c41156Smrg		cpu=hppa1.1
760a0c41156Smrg		vendor=hp
76145bc899bSmrg		;;
76245bc899bSmrg	hp9k8[0-9][13679] | hp8[0-9][13679])
763a0c41156Smrg		cpu=hppa1.1
764a0c41156Smrg		vendor=hp
76545bc899bSmrg		;;
76645bc899bSmrg	hp9k8[0-9][0-9] | hp8[0-9][0-9])
767a0c41156Smrg		cpu=hppa1.0
768a0c41156Smrg		vendor=hp
76945bc899bSmrg		;;
77045bc899bSmrg	i*86v32)
771a0c41156Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
772a0c41156Smrg		vendor=pc
773a0c41156Smrg		os=sysv32
77445bc899bSmrg		;;
77545bc899bSmrg	i*86v4*)
776a0c41156Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
777a0c41156Smrg		vendor=pc
778a0c41156Smrg		os=sysv4
77945bc899bSmrg		;;
78045bc899bSmrg	i*86v)
781a0c41156Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
782a0c41156Smrg		vendor=pc
783a0c41156Smrg		os=sysv
78445bc899bSmrg		;;
78545bc899bSmrg	i*86sol2)
786a0c41156Smrg		cpu=`echo "$1" | sed -e 's/86.*/86/'`
787a0c41156Smrg		vendor=pc
788a0c41156Smrg		os=solaris2
78945bc899bSmrg		;;
790a0c41156Smrg	j90 | j90-cray)
791a0c41156Smrg		cpu=j90
792a0c41156Smrg		vendor=cray
793a0c41156Smrg		os=${os:-unicos}
79445bc899bSmrg		;;
79545bc899bSmrg	iris | iris4d)
796a0c41156Smrg		cpu=mips
797a0c41156Smrg		vendor=sgi
79845bc899bSmrg		case $os in
799a0c41156Smrg		    irix*)
80045bc899bSmrg			;;
80145bc899bSmrg		    *)
802a0c41156Smrg			os=irix4
80345bc899bSmrg			;;
80445bc899bSmrg		esac
80545bc899bSmrg		;;
80645bc899bSmrg	miniframe)
807a0c41156Smrg		cpu=m68000
808a0c41156Smrg		vendor=convergent
809b40a6198Smrg		;;
810a0c41156Smrg	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
811a0c41156Smrg		cpu=m68k
812a0c41156Smrg		vendor=atari
813a0c41156Smrg		os=mint
81445bc899bSmrg		;;
81545bc899bSmrg	news-3600 | risc-news)
816a0c41156Smrg		cpu=mips
817a0c41156Smrg		vendor=sony
818a0c41156Smrg		os=newsos
81945bc899bSmrg		;;
820a0c41156Smrg	next | m*-next)
821a0c41156Smrg		cpu=m68k
822a0c41156Smrg		vendor=next
82345bc899bSmrg		case $os in
824a0c41156Smrg		    nextstep* )
82545bc899bSmrg			;;
826a0c41156Smrg		    ns2*)
827a0c41156Smrg		      os=nextstep2
82845bc899bSmrg			;;
82945bc899bSmrg		    *)
830a0c41156Smrg		      os=nextstep3
83145bc899bSmrg			;;
83245bc899bSmrg		esac
83345bc899bSmrg		;;
83445bc899bSmrg	np1)
835a0c41156Smrg		cpu=np1
836a0c41156Smrg		vendor=gould
837f2408745Smrg		;;
83845bc899bSmrg	op50n-* | op60c-*)
839a0c41156Smrg		cpu=hppa1.1
840a0c41156Smrg		vendor=oki
841a0c41156Smrg		os=proelf
84245bc899bSmrg		;;
84345bc899bSmrg	pa-hitachi)
844a0c41156Smrg		cpu=hppa1.1
845a0c41156Smrg		vendor=hitachi
846a0c41156Smrg		os=hiuxwe2
84750f2e948Smrg		;;
84845bc899bSmrg	pbd)
849a0c41156Smrg		cpu=sparc
850a0c41156Smrg		vendor=tti
85145bc899bSmrg		;;
85245bc899bSmrg	pbb)
853a0c41156Smrg		cpu=m68k
854a0c41156Smrg		vendor=tti
85545bc899bSmrg		;;
856a0c41156Smrg	pc532)
857a0c41156Smrg		cpu=ns32k
858a0c41156Smrg		vendor=pc532
85945bc899bSmrg		;;
86045bc899bSmrg	pn)
861a0c41156Smrg		cpu=pn
862a0c41156Smrg		vendor=gould
86345bc899bSmrg		;;
864a0c41156Smrg	power)
865a0c41156Smrg		cpu=power
866a0c41156Smrg		vendor=ibm
86745bc899bSmrg		;;
86845bc899bSmrg	ps2)
869a0c41156Smrg		cpu=i386
870a0c41156Smrg		vendor=ibm
87145bc899bSmrg		;;
87245bc899bSmrg	rm[46]00)
873a0c41156Smrg		cpu=mips
874a0c41156Smrg		vendor=siemens
87545bc899bSmrg		;;
87645bc899bSmrg	rtpc | rtpc-*)
877a0c41156Smrg		cpu=romp
878a0c41156Smrg		vendor=ibm
87945bc899bSmrg		;;
88050f2e948Smrg	sde)
881a0c41156Smrg		cpu=mipsisa32
882a0c41156Smrg		vendor=sde
883a0c41156Smrg		os=${os:-elf}
88450f2e948Smrg		;;
885a0c41156Smrg	simso-wrs)
886a0c41156Smrg		cpu=sparclite
887a0c41156Smrg		vendor=wrs
888a0c41156Smrg		os=vxworks
88945bc899bSmrg		;;
890a0c41156Smrg	tower | tower-32)
891a0c41156Smrg		cpu=m68k
892a0c41156Smrg		vendor=ncr
89345bc899bSmrg		;;
894a0c41156Smrg	vpp*|vx|vx-*)
895a0c41156Smrg		cpu=f301
896a0c41156Smrg		vendor=fujitsu
89745bc899bSmrg		;;
898a0c41156Smrg	w65)
899a0c41156Smrg		cpu=w65
900a0c41156Smrg		vendor=wdc
90150f2e948Smrg		;;
902a0c41156Smrg	w89k-*)
903a0c41156Smrg		cpu=hppa1.1
904a0c41156Smrg		vendor=winbond
905a0c41156Smrg		os=proelf
90645bc899bSmrg		;;
907a0c41156Smrg	none)
908a0c41156Smrg		cpu=none
909a0c41156Smrg		vendor=none
91045bc899bSmrg		;;
911a0c41156Smrg	leon|leon[3-9])
912a0c41156Smrg		cpu=sparc
913a0c41156Smrg		vendor=$basic_machine
91445bc899bSmrg		;;
915a0c41156Smrg	leon-*|leon[3-9]-*)
916a0c41156Smrg		cpu=sparc
917a0c41156Smrg		vendor=`echo "$basic_machine" | sed 's/-.*//'`
91845bc899bSmrg		;;
919a0c41156Smrg
920a0c41156Smrg	*-*)
921a0c41156Smrg		IFS="-" read -r cpu vendor <<EOF
922a0c41156Smrg$basic_machine
923a0c41156SmrgEOF
92445bc899bSmrg		;;
925a0c41156Smrg	# We use `pc' rather than `unknown'
926a0c41156Smrg	# because (1) that's what they normally are, and
927a0c41156Smrg	# (2) the word "unknown" tends to confuse beginning users.
928a0c41156Smrg	i*86 | x86_64)
929a0c41156Smrg		cpu=$basic_machine
930a0c41156Smrg		vendor=pc
93145bc899bSmrg		;;
932a0c41156Smrg	# These rules are duplicated from below for sake of the special case above;
933a0c41156Smrg	# i.e. things that normalized to x86 arches should also default to "pc"
934a0c41156Smrg	pc98)
935a0c41156Smrg		cpu=i386
936a0c41156Smrg		vendor=pc
937b40a6198Smrg		;;
938a0c41156Smrg	x64 | amd64)
939a0c41156Smrg		cpu=x86_64
940a0c41156Smrg		vendor=pc
94145bc899bSmrg		;;
942a0c41156Smrg	# Recognize the basic CPU types without company name.
943a0c41156Smrg	*)
944a0c41156Smrg		cpu=$basic_machine
945a0c41156Smrg		vendor=unknown
94645bc899bSmrg		;;
947a0c41156Smrgesac
948a0c41156Smrg
949a0c41156Smrgunset -v basic_machine
950a0c41156Smrg
951a0c41156Smrg# Decode basic machines in the full and proper CPU-Company form.
952a0c41156Smrgcase $cpu-$vendor in
953a0c41156Smrg	# Here we handle the default manufacturer of certain CPU types in cannonical form. It is in
954a0c41156Smrg	# some cases the only manufacturer, in others, it is the most popular.
955a0c41156Smrg	craynv-unknown)
956a0c41156Smrg		vendor=cray
957a0c41156Smrg		os=${os:-unicosmp}
95845bc899bSmrg		;;
959a0c41156Smrg	c90-unknown | c90-cray)
960a0c41156Smrg		vendor=cray
961a0c41156Smrg		os=${os:-unicos}
96245bc899bSmrg		;;
963a0c41156Smrg	fx80-unknown)
964a0c41156Smrg		vendor=alliant
96545bc899bSmrg		;;
966a0c41156Smrg	romp-unknown)
967a0c41156Smrg		vendor=ibm
96845bc899bSmrg		;;
969a0c41156Smrg	mmix-unknown)
970a0c41156Smrg		vendor=knuth
97145bc899bSmrg		;;
972a0c41156Smrg	microblaze-unknown | microblazeel-unknown)
973a0c41156Smrg		vendor=xilinx
97445bc899bSmrg		;;
975a0c41156Smrg	rs6000-unknown)
976a0c41156Smrg		vendor=ibm
97745bc899bSmrg		;;
978a0c41156Smrg	vax-unknown)
979a0c41156Smrg		vendor=dec
98045bc899bSmrg		;;
981a0c41156Smrg	pdp11-unknown)
982a0c41156Smrg		vendor=dec
98345bc899bSmrg		;;
984a0c41156Smrg	we32k-unknown)
985a0c41156Smrg		vendor=att
98645bc899bSmrg		;;
987a0c41156Smrg	cydra-unknown)
988a0c41156Smrg		vendor=cydrome
98945bc899bSmrg		;;
990a0c41156Smrg	i370-ibm*)
991a0c41156Smrg		vendor=ibm
99245bc899bSmrg		;;
993a0c41156Smrg	orion-unknown)
994a0c41156Smrg		vendor=highlevel
99545bc899bSmrg		;;
996a0c41156Smrg	xps-unknown | xps100-unknown)
997a0c41156Smrg		cpu=xps100
998a0c41156Smrg		vendor=honeywell
99950f2e948Smrg		;;
1000a0c41156Smrg
1001a0c41156Smrg	# Here we normalize CPU types with a missing or matching vendor
1002a0c41156Smrg	dpx20-unknown | dpx20-bull)
1003a0c41156Smrg		cpu=rs6000
1004a0c41156Smrg		vendor=bull
1005a0c41156Smrg		os=${os:-bosx}
100645bc899bSmrg		;;
1007a0c41156Smrg
1008a0c41156Smrg	# Here we normalize CPU types irrespective of the vendor
1009a0c41156Smrg	amd64-*)
1010a0c41156Smrg		cpu=x86_64
101145bc899bSmrg		;;
1012a0c41156Smrg	blackfin-*)
1013a0c41156Smrg		cpu=bfin
1014a0c41156Smrg		os=linux
101545bc899bSmrg		;;
1016a0c41156Smrg	c54x-*)
1017a0c41156Smrg		cpu=tic54x
101845bc899bSmrg		;;
1019a0c41156Smrg	c55x-*)
1020a0c41156Smrg		cpu=tic55x
102150f2e948Smrg		;;
1022a0c41156Smrg	c6x-*)
1023a0c41156Smrg		cpu=tic6x
102445bc899bSmrg		;;
1025a0c41156Smrg	e500v[12]-*)
1026a0c41156Smrg		cpu=powerpc
1027a0c41156Smrg		os=$os"spe"
102845bc899bSmrg		;;
1029a0c41156Smrg	mips3*-*)
1030a0c41156Smrg		cpu=mips64
103145bc899bSmrg		;;
1032a0c41156Smrg	ms1-*)
1033a0c41156Smrg		cpu=mt
103445bc899bSmrg		;;
1035a0c41156Smrg	m68knommu-*)
1036a0c41156Smrg		cpu=m68k
1037a0c41156Smrg		os=linux
103845bc899bSmrg		;;
1039a0c41156Smrg	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
1040a0c41156Smrg		cpu=s12z
104145bc899bSmrg		;;
1042a0c41156Smrg	openrisc-*)
1043a0c41156Smrg		cpu=or32
104445bc899bSmrg		;;
1045a0c41156Smrg	parisc-*)
1046a0c41156Smrg		cpu=hppa
1047a0c41156Smrg		os=linux
104845bc899bSmrg		;;
1049a0c41156Smrg	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
1050a0c41156Smrg		cpu=i586
105145bc899bSmrg		;;
1052a0c41156Smrg	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
1053a0c41156Smrg		cpu=i686
1054f2408745Smrg		;;
1055a0c41156Smrg	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
1056a0c41156Smrg		cpu=i686
105745bc899bSmrg		;;
1058a0c41156Smrg	pentium4-*)
1059a0c41156Smrg		cpu=i786
106045bc899bSmrg		;;
1061a0c41156Smrg	pc98-*)
1062a0c41156Smrg		cpu=i386
106350f2e948Smrg		;;
1064a0c41156Smrg	ppc-* | ppcbe-*)
1065a0c41156Smrg		cpu=powerpc
106645bc899bSmrg		;;
1067a0c41156Smrg	ppcle-* | powerpclittle-*)
1068a0c41156Smrg		cpu=powerpcle
1069b40a6198Smrg		;;
1070a0c41156Smrg	ppc64-*)
1071a0c41156Smrg		cpu=powerpc64
107245bc899bSmrg		;;
1073a0c41156Smrg	ppc64le-* | powerpc64little-*)
1074a0c41156Smrg		cpu=powerpc64le
107545bc899bSmrg		;;
1076a0c41156Smrg	sb1-*)
1077a0c41156Smrg		cpu=mipsisa64sb1
1078b40a6198Smrg		;;
1079a0c41156Smrg	sb1el-*)
1080a0c41156Smrg		cpu=mipsisa64sb1el
108145bc899bSmrg		;;
1082a0c41156Smrg	sh5e[lb]-*)
1083a0c41156Smrg		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
108445bc899bSmrg		;;
1085a0c41156Smrg	spur-*)
1086a0c41156Smrg		cpu=spur
108745bc899bSmrg		;;
1088a0c41156Smrg	strongarm-* | thumb-*)
1089a0c41156Smrg		cpu=arm
109045bc899bSmrg		;;
1091a0c41156Smrg	tx39-*)
1092a0c41156Smrg		cpu=mipstx39
109345bc899bSmrg		;;
1094a0c41156Smrg	tx39el-*)
1095a0c41156Smrg		cpu=mipstx39el
109650f2e948Smrg		;;
1097a0c41156Smrg	x64-*)
1098a0c41156Smrg		cpu=x86_64
109945bc899bSmrg		;;
1100a0c41156Smrg	xscale-* | xscalee[bl]-*)
1101a0c41156Smrg		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
110245bc899bSmrg		;;
1103a0c41156Smrg
1104a0c41156Smrg	# Recognize the cannonical CPU Types that limit and/or modify the
1105a0c41156Smrg	# company names they are paired with.
1106a0c41156Smrg	cr16-*)
1107a0c41156Smrg		os=${os:-elf}
110845bc899bSmrg		;;
1109a0c41156Smrg	crisv32-* | etraxfs*-*)
1110a0c41156Smrg		cpu=crisv32
1111a0c41156Smrg		vendor=axis
111245bc899bSmrg		;;
1113a0c41156Smrg	cris-* | etrax*-*)
1114a0c41156Smrg		cpu=cris
1115a0c41156Smrg		vendor=axis
111645bc899bSmrg		;;
1117a0c41156Smrg	crx-*)
1118a0c41156Smrg		os=${os:-elf}
111945bc899bSmrg		;;
1120a0c41156Smrg	neo-tandem)
1121a0c41156Smrg		cpu=neo
1122a0c41156Smrg		vendor=tandem
112345bc899bSmrg		;;
1124a0c41156Smrg	nse-tandem)
1125a0c41156Smrg		cpu=nse
1126a0c41156Smrg		vendor=tandem
112745bc899bSmrg		;;
1128a0c41156Smrg	nsr-tandem)
1129a0c41156Smrg		cpu=nsr
1130a0c41156Smrg		vendor=tandem
113145bc899bSmrg		;;
1132a0c41156Smrg	nsv-tandem)
1133a0c41156Smrg		cpu=nsv
1134a0c41156Smrg		vendor=tandem
113545bc899bSmrg		;;
1136a0c41156Smrg	nsx-tandem)
1137a0c41156Smrg		cpu=nsx
1138a0c41156Smrg		vendor=tandem
113945bc899bSmrg		;;
1140a0c41156Smrg	s390-*)
1141a0c41156Smrg		cpu=s390
1142a0c41156Smrg		vendor=ibm
1143a0c41156Smrg		;;
1144a0c41156Smrg	s390x-*)
1145a0c41156Smrg		cpu=s390x
1146a0c41156Smrg		vendor=ibm
114745bc899bSmrg		;;
1148a0c41156Smrg	tile*-*)
1149a0c41156Smrg		os=${os:-linux-gnu}
115045bc899bSmrg		;;
1151a0c41156Smrg
115245bc899bSmrg	*)
1153a0c41156Smrg		# Recognize the cannonical CPU types that are allowed with any
1154a0c41156Smrg		# company name.
1155a0c41156Smrg		case $cpu in
1156a0c41156Smrg			1750a | 580 \
1157a0c41156Smrg			| a29k \
1158a0c41156Smrg			| aarch64 | aarch64_be \
1159a0c41156Smrg			| abacus \
1160a0c41156Smrg			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
1161a0c41156Smrg			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
1162a0c41156Smrg			| alphapca5[67] | alpha64pca5[67] \
1163a0c41156Smrg			| am33_2.0 \
1164a0c41156Smrg			| arc | arceb \
1165a0c41156Smrg			| arm  | arm[lb]e | arme[lb] | armv* \
1166a0c41156Smrg			| avr | avr32 \
1167a0c41156Smrg			| asmjs \
1168a0c41156Smrg			| ba \
1169a0c41156Smrg			| be32 | be64 \
1170a0c41156Smrg			| bfin | bs2000 \
1171a0c41156Smrg			| c[123]* | c30 | [cjt]90 | c4x \
1172a0c41156Smrg			| c8051 | clipper | craynv | csky | cydra \
1173a0c41156Smrg			| d10v | d30v | dlx | dsp16xx \
1174a0c41156Smrg			| e2k | elxsi | epiphany \
1175a0c41156Smrg			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
1176a0c41156Smrg			| h8300 | h8500 \
1177a0c41156Smrg			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
1178a0c41156Smrg			| hexagon \
1179a0c41156Smrg			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
1180a0c41156Smrg			| ip2k | iq2000 \
1181a0c41156Smrg			| k1om \
1182a0c41156Smrg			| le32 | le64 \
1183a0c41156Smrg			| lm32 \
1184a0c41156Smrg			| m32c | m32r | m32rle \
1185a0c41156Smrg			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k | v70 | w65 \
1186a0c41156Smrg			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip \
1187a0c41156Smrg			| m88110 | m88k | maxq | mb | mcore | mep | metag \
1188a0c41156Smrg			| microblaze | microblazeel \
1189a0c41156Smrg			| mips | mipsbe | mipseb | mipsel | mipsle \
1190a0c41156Smrg			| mips16 \
1191a0c41156Smrg			| mips64 | mips64el \
1192a0c41156Smrg			| mips64octeon | mips64octeonel \
1193a0c41156Smrg			| mips64orion | mips64orionel \
1194a0c41156Smrg			| mips64r5900 | mips64r5900el \
1195a0c41156Smrg			| mips64vr | mips64vrel \
1196a0c41156Smrg			| mips64vr4100 | mips64vr4100el \
1197a0c41156Smrg			| mips64vr4300 | mips64vr4300el \
1198a0c41156Smrg			| mips64vr5000 | mips64vr5000el \
1199a0c41156Smrg			| mips64vr5900 | mips64vr5900el \
1200a0c41156Smrg			| mipsisa32 | mipsisa32el \
1201a0c41156Smrg			| mipsisa32r2 | mipsisa32r2el \
1202a0c41156Smrg			| mipsisa32r6 | mipsisa32r6el \
1203a0c41156Smrg			| mipsisa64 | mipsisa64el \
1204a0c41156Smrg			| mipsisa64r2 | mipsisa64r2el \
1205a0c41156Smrg			| mipsisa64r6 | mipsisa64r6el \
1206a0c41156Smrg			| mipsisa64sb1 | mipsisa64sb1el \
1207a0c41156Smrg			| mipsisa64sr71k | mipsisa64sr71kel \
1208a0c41156Smrg			| mipsr5900 | mipsr5900el \
1209a0c41156Smrg			| mipstx39 | mipstx39el \
1210a0c41156Smrg			| mmix \
1211a0c41156Smrg			| mn10200 | mn10300 \
1212a0c41156Smrg			| moxie \
1213a0c41156Smrg			| mt \
1214a0c41156Smrg			| msp430 \
1215a0c41156Smrg			| nds32 | nds32le | nds32be \
1216a0c41156Smrg			| nfp \
1217a0c41156Smrg			| nios | nios2 | nios2eb | nios2el \
1218a0c41156Smrg			| none | np1 | ns16k | ns32k \
1219a0c41156Smrg			| open8 \
1220a0c41156Smrg			| or1k* \
1221a0c41156Smrg			| or32 \
1222a0c41156Smrg			| orion \
1223a0c41156Smrg			| pdp10 | pdp11 | pj | pjl | pn | power \
1224a0c41156Smrg			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
1225a0c41156Smrg			| pru \
1226a0c41156Smrg			| pyramid \
1227a0c41156Smrg			| riscv | riscv32 | riscv64 \
1228a0c41156Smrg			| rl78 | romp | rs6000 | rx \
1229a0c41156Smrg			| score \
1230a0c41156Smrg			| sh | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
1231a0c41156Smrg			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
1232a0c41156Smrg			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
1233a0c41156Smrg			| sparclite \
1234a0c41156Smrg			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
1235a0c41156Smrg			| spu \
1236a0c41156Smrg			| tahoe \
1237a0c41156Smrg			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
1238a0c41156Smrg			| tron \
1239a0c41156Smrg			| ubicom32 \
1240a0c41156Smrg			| v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
1241a0c41156Smrg			| vax \
1242a0c41156Smrg			| visium \
1243a0c41156Smrg			| wasm32 \
1244a0c41156Smrg			| we32k \
1245a0c41156Smrg			| x86 | x86_64 | xc16x | xgate | xps100 \
1246a0c41156Smrg			| xstormy16 | xtensa* \
1247a0c41156Smrg			| ymp \
1248a0c41156Smrg			| z8k | z80)
1249a0c41156Smrg				;;
1250a0c41156Smrg
1251a0c41156Smrg			*)
1252a0c41156Smrg				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
1253a0c41156Smrg				exit 1
1254a0c41156Smrg				;;
1255a0c41156Smrg		esac
125645bc899bSmrg		;;
125745bc899bSmrgesac
125845bc899bSmrg
125945bc899bSmrg# Here we canonicalize certain aliases for manufacturers.
1260a0c41156Smrgcase $vendor in
1261a0c41156Smrg	digital*)
1262a0c41156Smrg		vendor=dec
126345bc899bSmrg		;;
1264a0c41156Smrg	commodore*)
1265a0c41156Smrg		vendor=cbm
126645bc899bSmrg		;;
126745bc899bSmrg	*)
126845bc899bSmrg		;;
126945bc899bSmrgesac
127045bc899bSmrg
127145bc899bSmrg# Decode manufacturer-specific aliases for certain operating systems.
127245bc899bSmrg
1273a0c41156Smrgif [ x$os != x ]
127445bc899bSmrgthen
127545bc899bSmrgcase $os in
1276a0c41156Smrg	# First match some system type aliases that might get confused
1277a0c41156Smrg	# with valid system types.
1278a0c41156Smrg	# solaris* is a basic system type, with this one exception.
1279a0c41156Smrg	auroraux)
1280a0c41156Smrg		os=auroraux
1281b40a6198Smrg		;;
1282a0c41156Smrg	bluegene*)
1283a0c41156Smrg		os=cnk
128445bc899bSmrg		;;
1285a0c41156Smrg	solaris1 | solaris1.*)
1286a0c41156Smrg		os=`echo $os | sed -e 's|solaris1|sunos4|'`
128745bc899bSmrg		;;
1288a0c41156Smrg	solaris)
1289a0c41156Smrg		os=solaris2
129045bc899bSmrg		;;
1291a0c41156Smrg	unixware*)
1292a0c41156Smrg		os=sysv4.2uw
129345bc899bSmrg		;;
1294a0c41156Smrg	gnu/linux*)
129545bc899bSmrg		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
129645bc899bSmrg		;;
1297a0c41156Smrg	# es1800 is here to avoid being matched by es* (a different OS)
1298a0c41156Smrg	es1800*)
1299a0c41156Smrg		os=ose
1300a0c41156Smrg		;;
1301a0c41156Smrg	# Some version numbers need modification
1302a0c41156Smrg	chorusos*)
1303a0c41156Smrg		os=chorusos
1304a0c41156Smrg		;;
1305a0c41156Smrg	isc)
1306a0c41156Smrg		os=isc2.2
1307a0c41156Smrg		;;
1308a0c41156Smrg	sco6)
1309a0c41156Smrg		os=sco5v6
1310a0c41156Smrg		;;
1311a0c41156Smrg	sco5)
1312a0c41156Smrg		os=sco3.2v5
1313a0c41156Smrg		;;
1314a0c41156Smrg	sco4)
1315a0c41156Smrg		os=sco3.2v4
1316a0c41156Smrg		;;
1317a0c41156Smrg	sco3.2.[4-9]*)
1318a0c41156Smrg		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
1319a0c41156Smrg		;;
1320a0c41156Smrg	sco3.2v[4-9]* | sco5v6*)
1321a0c41156Smrg		# Don't forget version if it is 3.2v4 or newer.
1322a0c41156Smrg		;;
1323a0c41156Smrg	scout)
1324a0c41156Smrg		# Don't match below
1325a0c41156Smrg		;;
1326a0c41156Smrg	sco*)
1327a0c41156Smrg		os=sco3.2v2
1328a0c41156Smrg		;;
1329a0c41156Smrg	psos*)
1330a0c41156Smrg		os=psos
1331a0c41156Smrg		;;
1332a0c41156Smrg	# Now accept the basic system types.
133345bc899bSmrg	# The portable systems comes first.
1334a0c41156Smrg	# Each alternative MUST end in a * to match a version number.
1335a0c41156Smrg	# sysv* is not here because it comes later, after sysvr4.
1336a0c41156Smrg	gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
1337a0c41156Smrg	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\
1338a0c41156Smrg	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
1339a0c41156Smrg	     | sym* | kopensolaris* | plan9* \
1340a0c41156Smrg	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
1341a0c41156Smrg	     | aos* | aros* | cloudabi* | sortix* \
1342a0c41156Smrg	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
1343a0c41156Smrg	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
1344a0c41156Smrg	     | knetbsd* | mirbsd* | netbsd* \
1345a0c41156Smrg	     | bitrig* | openbsd* | solidbsd* | libertybsd* \
1346a0c41156Smrg	     | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
1347a0c41156Smrg	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
1348a0c41156Smrg	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
1349a0c41156Smrg	     | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \
1350a0c41156Smrg	     | chorusrdb* | cegcc* | glidix* \
1351a0c41156Smrg	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
1352a0c41156Smrg	     | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \
1353a0c41156Smrg	     | linux-newlib* | linux-musl* | linux-uclibc* \
1354a0c41156Smrg	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
1355a0c41156Smrg	     | interix* | uwin* | mks* | rhapsody* | darwin* \
1356a0c41156Smrg	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
1357a0c41156Smrg	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
1358a0c41156Smrg	     | os2* | vos* | palmos* | uclinux* | nucleus* \
1359a0c41156Smrg	     | morphos* | superux* | rtmk* | windiss* \
1360a0c41156Smrg	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
1361a0c41156Smrg	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
1362a0c41156Smrg	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
1363a0c41156Smrg	     | midnightbsd*)
136445bc899bSmrg	# Remember, each alternative MUST END IN *, to match a version number.
136545bc899bSmrg		;;
1366a0c41156Smrg	qnx*)
1367a0c41156Smrg		case $cpu in
1368a0c41156Smrg		    x86 | i*86)
136945bc899bSmrg			;;
137045bc899bSmrg		    *)
1371a0c41156Smrg			os=nto-$os
137245bc899bSmrg			;;
137345bc899bSmrg		esac
137445bc899bSmrg		;;
1375a0c41156Smrg	hiux*)
1376a0c41156Smrg		os=hiuxwe2
137745bc899bSmrg		;;
1378a0c41156Smrg	nto-qnx*)
137945bc899bSmrg		;;
1380a0c41156Smrg	nto*)
1381a0c41156Smrg		os=`echo $os | sed -e 's|nto|nto-qnx|'`
138245bc899bSmrg		;;
1383a0c41156Smrg	sim | xray | os68k* | v88r* \
1384a0c41156Smrg	    | windows* | osx | abug | netware* | os9* \
1385a0c41156Smrg	    | macos* | mpw* | magic* | mmixware* | mon960* | lnews*)
138645bc899bSmrg		;;
1387a0c41156Smrg	linux-dietlibc)
1388a0c41156Smrg		os=linux-dietlibc
138950f2e948Smrg		;;
1390a0c41156Smrg	linux*)
139145bc899bSmrg		os=`echo $os | sed -e 's|linux|linux-gnu|'`
139245bc899bSmrg		;;
1393a0c41156Smrg	lynx*178)
1394a0c41156Smrg		os=lynxos178
139545bc899bSmrg		;;
1396a0c41156Smrg	lynx*5)
1397a0c41156Smrg		os=lynxos5
139845bc899bSmrg		;;
1399a0c41156Smrg	lynx*)
1400a0c41156Smrg		os=lynxos
140145bc899bSmrg		;;
1402a0c41156Smrg	mac*)
1403a0c41156Smrg		os=`echo "$os" | sed -e 's|mac|macos|'`
140450f2e948Smrg		;;
1405a0c41156Smrg	opened*)
1406a0c41156Smrg		os=openedition
140745bc899bSmrg		;;
1408a0c41156Smrg	os400*)
1409a0c41156Smrg		os=os400
141045bc899bSmrg		;;
1411a0c41156Smrg	sunos5*)
1412a0c41156Smrg		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
141345bc899bSmrg		;;
1414a0c41156Smrg	sunos6*)
1415a0c41156Smrg		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
141645bc899bSmrg		;;
1417a0c41156Smrg	wince*)
1418a0c41156Smrg		os=wince
141945bc899bSmrg		;;
1420a0c41156Smrg	utek*)
1421a0c41156Smrg		os=bsd
142245bc899bSmrg		;;
1423a0c41156Smrg	dynix*)
1424a0c41156Smrg		os=bsd
142545bc899bSmrg		;;
1426a0c41156Smrg	acis*)
1427a0c41156Smrg		os=aos
142850f2e948Smrg		;;
1429a0c41156Smrg	atheos*)
1430a0c41156Smrg		os=atheos
143145bc899bSmrg		;;
1432a0c41156Smrg	syllable*)
1433a0c41156Smrg		os=syllable
1434a0c41156Smrg		;;
1435a0c41156Smrg	386bsd)
1436a0c41156Smrg		os=bsd
143745bc899bSmrg		;;
1438a0c41156Smrg	ctix* | uts*)
1439a0c41156Smrg		os=sysv
144045bc899bSmrg		;;
1441a0c41156Smrg	nova*)
1442a0c41156Smrg		os=rtmk-nova
144345bc899bSmrg		;;
1444a0c41156Smrg	ns2)
1445a0c41156Smrg		os=nextstep2
1446a0c41156Smrg		;;
1447a0c41156Smrg	nsk*)
1448a0c41156Smrg		os=nsk
144945bc899bSmrg		;;
145045bc899bSmrg	# Preserve the version number of sinix5.
1451a0c41156Smrg	sinix5.*)
145245bc899bSmrg		os=`echo $os | sed -e 's|sinix|sysv|'`
145345bc899bSmrg		;;
1454a0c41156Smrg	sinix*)
1455a0c41156Smrg		os=sysv4
145650f2e948Smrg		;;
1457a0c41156Smrg	tpf*)
1458a0c41156Smrg		os=tpf
145945bc899bSmrg		;;
1460a0c41156Smrg	triton*)
1461a0c41156Smrg		os=sysv3
146245bc899bSmrg		;;
1463a0c41156Smrg	oss*)
1464a0c41156Smrg		os=sysv3
146545bc899bSmrg		;;
1466a0c41156Smrg	svr4*)
1467a0c41156Smrg		os=sysv4
146845bc899bSmrg		;;
1469a0c41156Smrg	svr3)
1470a0c41156Smrg		os=sysv3
147145bc899bSmrg		;;
1472a0c41156Smrg	sysvr4)
1473a0c41156Smrg		os=sysv4
147445bc899bSmrg		;;
1475a0c41156Smrg	# This must come after sysvr4.
1476a0c41156Smrg	sysv*)
147745bc899bSmrg		;;
1478a0c41156Smrg	ose*)
1479a0c41156Smrg		os=ose
148045bc899bSmrg		;;
1481a0c41156Smrg	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
1482a0c41156Smrg		os=mint
148345bc899bSmrg		;;
1484a0c41156Smrg	zvmoe)
1485a0c41156Smrg		os=zvmoe
148645bc899bSmrg		;;
1487a0c41156Smrg	dicos*)
1488a0c41156Smrg		os=dicos
148945bc899bSmrg		;;
1490a0c41156Smrg	pikeos*)
1491a0c41156Smrg		# Until real need of OS specific support for
1492a0c41156Smrg		# particular features comes up, bare metal
1493a0c41156Smrg		# configurations are quite functional.
1494a0c41156Smrg		case $cpu in
1495a0c41156Smrg		    arm*)
1496a0c41156Smrg			os=eabi
1497a0c41156Smrg			;;
1498a0c41156Smrg		    *)
1499a0c41156Smrg			os=elf
1500a0c41156Smrg			;;
1501a0c41156Smrg		esac
150250f2e948Smrg		;;
1503a0c41156Smrg	nacl*)
1504b40a6198Smrg		;;
1505a0c41156Smrg	ios)
1506b40a6198Smrg		;;
1507a0c41156Smrg	none)
1508f2408745Smrg		;;
1509a0c41156Smrg	*-eabi)
151045bc899bSmrg		;;
151145bc899bSmrg	*)
1512a0c41156Smrg		echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
151345bc899bSmrg		exit 1
151445bc899bSmrg		;;
151545bc899bSmrgesac
151645bc899bSmrgelse
151745bc899bSmrg
151845bc899bSmrg# Here we handle the default operating systems that come with various machines.
151945bc899bSmrg# The value should be what the vendor currently ships out the door with their
152045bc899bSmrg# machine or put another way, the most popular os provided with the machine.
152145bc899bSmrg
152245bc899bSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say,
152345bc899bSmrg# "-sun"), then you have to tell the case statement up towards the top
152445bc899bSmrg# that MANUFACTURER isn't an operating system.  Otherwise, code above
152545bc899bSmrg# will signal an error saying that MANUFACTURER isn't an operating
152645bc899bSmrg# system, and we'll never get to this point.
152745bc899bSmrg
1528a0c41156Smrgcase $cpu-$vendor in
1529b40a6198Smrg	score-*)
1530a0c41156Smrg		os=elf
153150f2e948Smrg		;;
1532b40a6198Smrg	spu-*)
1533a0c41156Smrg		os=elf
153450f2e948Smrg		;;
153545bc899bSmrg	*-acorn)
1536a0c41156Smrg		os=riscix1.2
153745bc899bSmrg		;;
153845bc899bSmrg	arm*-rebel)
1539a0c41156Smrg		os=linux
154045bc899bSmrg		;;
154145bc899bSmrg	arm*-semi)
1542a0c41156Smrg		os=aout
154345bc899bSmrg		;;
1544b40a6198Smrg	c4x-* | tic4x-*)
1545a0c41156Smrg		os=coff
1546b40a6198Smrg		;;
1547c97b1c41Smrg	c8051-*)
1548a0c41156Smrg		os=elf
1549a0c41156Smrg		;;
1550a0c41156Smrg	clipper-intergraph)
1551a0c41156Smrg		os=clix
1552c97b1c41Smrg		;;
1553c97b1c41Smrg	hexagon-*)
1554a0c41156Smrg		os=elf
1555c97b1c41Smrg		;;
1556b40a6198Smrg	tic54x-*)
1557a0c41156Smrg		os=coff
1558b40a6198Smrg		;;
1559b40a6198Smrg	tic55x-*)
1560a0c41156Smrg		os=coff
1561b40a6198Smrg		;;
1562b40a6198Smrg	tic6x-*)
1563a0c41156Smrg		os=coff
156445bc899bSmrg		;;
156545bc899bSmrg	# This must come before the *-dec entry.
156645bc899bSmrg	pdp10-*)
1567a0c41156Smrg		os=tops20
156845bc899bSmrg		;;
156945bc899bSmrg	pdp11-*)
1570a0c41156Smrg		os=none
157145bc899bSmrg		;;
157245bc899bSmrg	*-dec | vax-*)
1573a0c41156Smrg		os=ultrix4.2
157445bc899bSmrg		;;
157545bc899bSmrg	m68*-apollo)
1576a0c41156Smrg		os=domain
157745bc899bSmrg		;;
157845bc899bSmrg	i386-sun)
1579a0c41156Smrg		os=sunos4.0.2
158045bc899bSmrg		;;
158145bc899bSmrg	m68000-sun)
1582a0c41156Smrg		os=sunos3
158345bc899bSmrg		;;
158445bc899bSmrg	m68*-cisco)
1585a0c41156Smrg		os=aout
158645bc899bSmrg		;;
1587b40a6198Smrg	mep-*)
1588a0c41156Smrg		os=elf
158950f2e948Smrg		;;
159045bc899bSmrg	mips*-cisco)
1591a0c41156Smrg		os=elf
159245bc899bSmrg		;;
159345bc899bSmrg	mips*-*)
1594a0c41156Smrg		os=elf
159545bc899bSmrg		;;
159645bc899bSmrg	or32-*)
1597a0c41156Smrg		os=coff
159845bc899bSmrg		;;
159945bc899bSmrg	*-tti)	# must be before sparc entry or we get the wrong os.
1600a0c41156Smrg		os=sysv3
160145bc899bSmrg		;;
160245bc899bSmrg	sparc-* | *-sun)
1603a0c41156Smrg		os=sunos4.1.1
160445bc899bSmrg		;;
1605f2408745Smrg	pru-*)
1606a0c41156Smrg		os=elf
1607f2408745Smrg		;;
160845bc899bSmrg	*-be)
1609a0c41156Smrg		os=beos
161050f2e948Smrg		;;
161145bc899bSmrg	*-ibm)
1612a0c41156Smrg		os=aix
161345bc899bSmrg		;;
1614b40a6198Smrg	*-knuth)
1615a0c41156Smrg		os=mmixware
161650f2e948Smrg		;;
161745bc899bSmrg	*-wec)
1618a0c41156Smrg		os=proelf
161945bc899bSmrg		;;
162045bc899bSmrg	*-winbond)
1621a0c41156Smrg		os=proelf
162245bc899bSmrg		;;
162345bc899bSmrg	*-oki)
1624a0c41156Smrg		os=proelf
162545bc899bSmrg		;;
162645bc899bSmrg	*-hp)
1627a0c41156Smrg		os=hpux
162845bc899bSmrg		;;
162945bc899bSmrg	*-hitachi)
1630a0c41156Smrg		os=hiux
163145bc899bSmrg		;;
163245bc899bSmrg	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
1633a0c41156Smrg		os=sysv
163445bc899bSmrg		;;
163545bc899bSmrg	*-cbm)
1636a0c41156Smrg		os=amigaos
163745bc899bSmrg		;;
163845bc899bSmrg	*-dg)
1639a0c41156Smrg		os=dgux
164045bc899bSmrg		;;
164145bc899bSmrg	*-dolphin)
1642a0c41156Smrg		os=sysv3
164345bc899bSmrg		;;
164445bc899bSmrg	m68k-ccur)
1645a0c41156Smrg		os=rtu
164645bc899bSmrg		;;
164745bc899bSmrg	m88k-omron*)
1648a0c41156Smrg		os=luna
164945bc899bSmrg		;;
1650a0c41156Smrg	*-next)
1651a0c41156Smrg		os=nextstep
165245bc899bSmrg		;;
165345bc899bSmrg	*-sequent)
1654a0c41156Smrg		os=ptx
165545bc899bSmrg		;;
165645bc899bSmrg	*-crds)
1657a0c41156Smrg		os=unos
165845bc899bSmrg		;;
165945bc899bSmrg	*-ns)
1660a0c41156Smrg		os=genix
166145bc899bSmrg		;;
166245bc899bSmrg	i370-*)
1663a0c41156Smrg		os=mvs
166445bc899bSmrg		;;
166545bc899bSmrg	*-gould)
1666a0c41156Smrg		os=sysv
166745bc899bSmrg		;;
166845bc899bSmrg	*-highlevel)
1669a0c41156Smrg		os=bsd
167045bc899bSmrg		;;
167145bc899bSmrg	*-encore)
1672a0c41156Smrg		os=bsd
167345bc899bSmrg		;;
167445bc899bSmrg	*-sgi)
1675a0c41156Smrg		os=irix
167645bc899bSmrg		;;
167745bc899bSmrg	*-siemens)
1678a0c41156Smrg		os=sysv4
167945bc899bSmrg		;;
168045bc899bSmrg	*-masscomp)
1681a0c41156Smrg		os=rtu
168245bc899bSmrg		;;
168345bc899bSmrg	f30[01]-fujitsu | f700-fujitsu)
1684a0c41156Smrg		os=uxpv
168545bc899bSmrg		;;
168645bc899bSmrg	*-rom68k)
1687a0c41156Smrg		os=coff
168845bc899bSmrg		;;
168945bc899bSmrg	*-*bug)
1690a0c41156Smrg		os=coff
169145bc899bSmrg		;;
169245bc899bSmrg	*-apple)
1693a0c41156Smrg		os=macos
169445bc899bSmrg		;;
169545bc899bSmrg	*-atari*)
1696a0c41156Smrg		os=mint
1697a0c41156Smrg		;;
1698a0c41156Smrg	*-wrs)
1699a0c41156Smrg		os=vxworks
170045bc899bSmrg		;;
170145bc899bSmrg	*)
1702a0c41156Smrg		os=none
170345bc899bSmrg		;;
170445bc899bSmrgesac
170545bc899bSmrgfi
170645bc899bSmrg
170745bc899bSmrg# Here we handle the case where we know the os, and the CPU type, but not the
170845bc899bSmrg# manufacturer.  We pick the logical manufacturer.
1709a0c41156Smrgcase $vendor in
1710a0c41156Smrg	unknown)
171145bc899bSmrg		case $os in
1712a0c41156Smrg			riscix*)
171345bc899bSmrg				vendor=acorn
171445bc899bSmrg				;;
1715a0c41156Smrg			sunos*)
171645bc899bSmrg				vendor=sun
171745bc899bSmrg				;;
1718a0c41156Smrg			cnk*|-aix*)
171945bc899bSmrg				vendor=ibm
172045bc899bSmrg				;;
1721a0c41156Smrg			beos*)
172245bc899bSmrg				vendor=be
172345bc899bSmrg				;;
1724a0c41156Smrg			hpux*)
172545bc899bSmrg				vendor=hp
172645bc899bSmrg				;;
1727a0c41156Smrg			mpeix*)
172845bc899bSmrg				vendor=hp
172945bc899bSmrg				;;
1730a0c41156Smrg			hiux*)
173145bc899bSmrg				vendor=hitachi
173245bc899bSmrg				;;
1733a0c41156Smrg			unos*)
173445bc899bSmrg				vendor=crds
173545bc899bSmrg				;;
1736a0c41156Smrg			dgux*)
173745bc899bSmrg				vendor=dg
173845bc899bSmrg				;;
1739a0c41156Smrg			luna*)
174045bc899bSmrg				vendor=omron
174145bc899bSmrg				;;
1742a0c41156Smrg			genix*)
174345bc899bSmrg				vendor=ns
174445bc899bSmrg				;;
1745a0c41156Smrg			clix*)
1746a0c41156Smrg				vendor=intergraph
1747a0c41156Smrg				;;
1748a0c41156Smrg			mvs* | opened*)
174945bc899bSmrg				vendor=ibm
175045bc899bSmrg				;;
1751a0c41156Smrg			os400*)
175250f2e948Smrg				vendor=ibm
175350f2e948Smrg				;;
1754a0c41156Smrg			ptx*)
175545bc899bSmrg				vendor=sequent
175645bc899bSmrg				;;
1757a0c41156Smrg			tpf*)
175850f2e948Smrg				vendor=ibm
175950f2e948Smrg				;;
1760a0c41156Smrg			vxsim* | vxworks* | windiss*)
176145bc899bSmrg				vendor=wrs
176245bc899bSmrg				;;
1763a0c41156Smrg			aux*)
176445bc899bSmrg				vendor=apple
176545bc899bSmrg				;;
1766a0c41156Smrg			hms*)
176745bc899bSmrg				vendor=hitachi
176845bc899bSmrg				;;
1769a0c41156Smrg			mpw* | macos*)
177045bc899bSmrg				vendor=apple
177145bc899bSmrg				;;
1772a0c41156Smrg			*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
177345bc899bSmrg				vendor=atari
177445bc899bSmrg				;;
1775a0c41156Smrg			vos*)
177645bc899bSmrg				vendor=stratus
177745bc899bSmrg				;;
177845bc899bSmrg		esac
177945bc899bSmrg		;;
178045bc899bSmrgesac
178145bc899bSmrg
1782a0c41156Smrgecho "$cpu-$vendor-$os"
178350f2e948Smrgexit
178445bc899bSmrg
178545bc899bSmrg# Local variables:
1786a0c41156Smrg# eval: (add-hook 'before-save-hook 'time-stamp)
178745bc899bSmrg# time-stamp-start: "timestamp='"
178845bc899bSmrg# time-stamp-format: "%:y-%02m-%02d"
178945bc899bSmrg# time-stamp-end: "'"
179045bc899bSmrg# End:
1791