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