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