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