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