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