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