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