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