Annotation of parser3/config.sub, revision 1.7
1.1 paf 1: #! /bin/sh
1.3 paf 2: # Configuration validation subroutine script.
1.7 ! moko 3: # Copyright 1992-2024 Free Software Foundation, Inc.
1.6 moko 4:
1.7 ! moko 5: # shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale
! 6:
! 7: timestamp='2024-05-27'
1.6 moko 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
1.7 ! moko 11: # the Free Software Foundation, either version 3 of the License, or
1.1 paf 12: # (at your option) any later version.
13: #
1.6 moko 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.
1.1 paf 18: #
19: # You should have received a copy of the GNU General Public License
1.7 ! moko 20: # along with this program; if not, see <https://www.gnu.org/licenses/>.
1.5 moko 21: #
1.1 paf 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
1.6 moko 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").
1.1 paf 28:
1.5 moko 29:
1.6 moko 30: # Please send patches to <config-patches@gnu.org>.
1.1 paf 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:
1.5 moko 37: # You can get the latest version of this script from:
1.7 ! moko 38: # https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
1.5 moko 39:
1.1 paf 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:
1.7 ! moko 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:
1.3 paf 62: me=`echo "$0" | sed -e 's,.*/,,'`
63:
64: usage="\
1.7 ! moko 65: Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
1.3 paf 66:
67: Canonicalize a configuration name.
68:
1.7 ! moko 69: Options:
1.3 paf 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:
1.7 ! moko 79: Copyright 1992-2024 Free Software Foundation, Inc.
1.3 paf 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="
1.7 ! moko 85: Try '$me --help' for more information."
1.3 paf 86:
87: # Parse command line
88: while test $# -gt 0 ; do
89: case $1 in
90: --time-stamp | --time* | -t )
1.5 moko 91: echo "$timestamp" ; exit ;;
1.3 paf 92: --version | -v )
1.5 moko 93: echo "$version" ; exit ;;
1.3 paf 94: --help | --h* | -h )
1.5 moko 95: echo "$usage"; exit ;;
1.3 paf 96: -- ) # Stop option processing
97: shift; break ;;
98: - ) # Use stdin as input.
99: break ;;
100: -* )
1.7 ! moko 101: echo "$me: invalid option $1$help" >&2
1.3 paf 102: exit 1 ;;
103:
104: *local*)
105: # First pass through any local machine types.
1.7 ! moko 106: echo "$1"
1.5 moko 107: exit ;;
1.3 paf 108:
109: * )
110: break ;;
111: esac
112: done
1.1 paf 113:
1.3 paf 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;;
1.1 paf 120: esac
121:
1.7 ! moko 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
1.1 paf 134: ;;
1.7 ! moko 135: *-*-*-*)
! 136: basic_machine=$field1-$field2
! 137: basic_os=$field3-$field4
1.1 paf 138: ;;
1.7 ! moko 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: | linux-* \
! 149: | managarm-* \
! 150: | netbsd*-eabi* \
! 151: | netbsd*-gnu* \
! 152: | nto-qnx* \
! 153: | os2-emx* \
! 154: | rtmk-nova* \
! 155: | storm-chaos* \
! 156: | uclinux-gnu* \
! 157: | uclinux-uclibc* \
! 158: | windows-* )
! 159: basic_machine=$field1
! 160: basic_os=$maybe_os
! 161: ;;
! 162: android-linux)
! 163: basic_machine=$field1-unknown
! 164: basic_os=linux-android
! 165: ;;
! 166: *)
! 167: basic_machine=$field1-$field2
! 168: basic_os=$field3
! 169: ;;
! 170: esac
1.5 moko 171: ;;
1.7 ! moko 172: *-*)
! 173: case $field1-$field2 in
! 174: # Shorthands that happen to contain a single dash
! 175: convex-c[12] | convex-c3[248])
! 176: basic_machine=$field2-convex
! 177: basic_os=
! 178: ;;
! 179: decstation-3100)
! 180: basic_machine=mips-dec
! 181: basic_os=
! 182: ;;
! 183: *-*)
! 184: # Second component is usually, but not always the OS
! 185: case $field2 in
! 186: # Do not treat sunos as a manufacturer
! 187: sun*os*)
! 188: basic_machine=$field1
! 189: basic_os=$field2
! 190: ;;
! 191: # Manufacturers
! 192: 3100* \
! 193: | 32* \
! 194: | 3300* \
! 195: | 3600* \
! 196: | 7300* \
! 197: | acorn \
! 198: | altos* \
! 199: | apollo \
! 200: | apple \
! 201: | atari \
! 202: | att* \
! 203: | axis \
! 204: | be \
! 205: | bull \
! 206: | cbm \
! 207: | ccur \
! 208: | cisco \
! 209: | commodore \
! 210: | convergent* \
! 211: | convex* \
! 212: | cray \
! 213: | crds \
! 214: | dec* \
! 215: | delta* \
! 216: | dg \
! 217: | digital \
! 218: | dolphin \
! 219: | encore* \
! 220: | gould \
! 221: | harris \
! 222: | highlevel \
! 223: | hitachi* \
! 224: | hp \
! 225: | ibm* \
! 226: | intergraph \
! 227: | isi* \
! 228: | knuth \
! 229: | masscomp \
! 230: | microblaze* \
! 231: | mips* \
! 232: | motorola* \
! 233: | ncr* \
! 234: | news \
! 235: | next \
! 236: | ns \
! 237: | oki \
! 238: | omron* \
! 239: | pc533* \
! 240: | rebel \
! 241: | rom68k \
! 242: | rombug \
! 243: | semi \
! 244: | sequent* \
! 245: | siemens \
! 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: 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
1.1 paf 275: ;;
1.7 ! moko 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
1.1 paf 709: ;;
710: esac
711:
1.7 ! moko 712: # Decode 1-component or ad-hoc basic machines
1.1 paf 713: case $basic_machine in
1.7 ! moko 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
1.1 paf 719: ;;
1.7 ! moko 720: op50n)
! 721: cpu=hppa1.1
! 722: vendor=oki
1.5 moko 723: ;;
1.7 ! moko 724: op60c)
! 725: cpu=hppa1.1
! 726: vendor=oki
1.5 moko 727: ;;
1.7 ! moko 728: ibm*)
! 729: cpu=i370
! 730: vendor=ibm
1.5 moko 731: ;;
1.7 ! moko 732: orion105)
! 733: cpu=clipper
! 734: vendor=highlevel
1.6 moko 735: ;;
1.7 ! moko 736: mac | mpw | mac-mpw)
! 737: cpu=m68k
! 738: vendor=apple
1.3 paf 739: ;;
1.7 ! moko 740: pmac | pmac-mpw)
! 741: cpu=powerpc
! 742: vendor=apple
1.5 moko 743: ;;
1.1 paf 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)
1.7 ! moko 748: cpu=m68000
! 749: vendor=att
1.1 paf 750: ;;
751: 3b*)
1.7 ! moko 752: cpu=we32k
! 753: vendor=att
1.5 moko 754: ;;
755: bluegene*)
1.7 ! moko 756: cpu=powerpc
! 757: vendor=ibm
! 758: basic_os=cnk
1.1 paf 759: ;;
1.3 paf 760: decsystem10* | dec10*)
1.7 ! moko 761: cpu=pdp10
! 762: vendor=dec
! 763: basic_os=tops10
1.3 paf 764: ;;
765: decsystem20* | dec20*)
1.7 ! moko 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
1.3 paf 790: ;;
1.7 ! moko 791: encore | umax | mmax)
! 792: cpu=ns32k
! 793: vendor=encore
1.1 paf 794: ;;
795: elxsi)
1.7 ! moko 796: cpu=elxsi
! 797: vendor=elxsi
! 798: basic_os=${basic_os:-bsd}
1.1 paf 799: ;;
800: fx2800)
1.7 ! moko 801: cpu=i860
! 802: vendor=alliant
1.1 paf 803: ;;
804: genix)
1.7 ! moko 805: cpu=ns32k
! 806: vendor=ns
1.3 paf 807: ;;
1.1 paf 808: h3050r* | hiux*)
1.7 ! moko 809: cpu=hppa1.1
! 810: vendor=hitachi
! 811: basic_os=hiuxwe2
1.1 paf 812: ;;
813: hp3k9[0-9][0-9] | hp9[0-9][0-9])
1.7 ! moko 814: cpu=hppa1.0
! 815: vendor=hp
1.1 paf 816: ;;
817: hp9k2[0-9][0-9] | hp9k31[0-9])
1.7 ! moko 818: cpu=m68000
! 819: vendor=hp
1.1 paf 820: ;;
821: hp9k3[2-9][0-9])
1.7 ! moko 822: cpu=m68k
! 823: vendor=hp
1.1 paf 824: ;;
825: hp9k6[0-9][0-9] | hp6[0-9][0-9])
1.7 ! moko 826: cpu=hppa1.0
! 827: vendor=hp
1.1 paf 828: ;;
829: hp9k7[0-79][0-9] | hp7[0-79][0-9])
1.7 ! moko 830: cpu=hppa1.1
! 831: vendor=hp
1.1 paf 832: ;;
833: hp9k78[0-9] | hp78[0-9])
834: # FIXME: really hppa2.0-hp
1.7 ! moko 835: cpu=hppa1.1
! 836: vendor=hp
1.1 paf 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
1.7 ! moko 840: cpu=hppa1.1
! 841: vendor=hp
1.1 paf 842: ;;
843: hp9k8[0-9][13679] | hp8[0-9][13679])
1.7 ! moko 844: cpu=hppa1.1
! 845: vendor=hp
1.1 paf 846: ;;
847: hp9k8[0-9][0-9] | hp8[0-9][0-9])
1.7 ! moko 848: cpu=hppa1.0
! 849: vendor=hp
1.1 paf 850: ;;
1.3 paf 851: i*86v32)
1.7 ! moko 852: cpu=`echo "$1" | sed -e 's/86.*/86/'`
! 853: vendor=pc
! 854: basic_os=sysv32
1.1 paf 855: ;;
1.3 paf 856: i*86v4*)
1.7 ! moko 857: cpu=`echo "$1" | sed -e 's/86.*/86/'`
! 858: vendor=pc
! 859: basic_os=sysv4
1.1 paf 860: ;;
1.3 paf 861: i*86v)
1.7 ! moko 862: cpu=`echo "$1" | sed -e 's/86.*/86/'`
! 863: vendor=pc
! 864: basic_os=sysv
1.1 paf 865: ;;
1.3 paf 866: i*86sol2)
1.7 ! moko 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}
1.1 paf 875: ;;
876: iris | iris4d)
1.7 ! moko 877: cpu=mips
! 878: vendor=sgi
! 879: case $basic_os in
! 880: irix*)
1.1 paf 881: ;;
882: *)
1.7 ! moko 883: basic_os=irix4
1.1 paf 884: ;;
885: esac
886: ;;
887: miniframe)
1.7 ! moko 888: cpu=m68000
! 889: vendor=convergent
1.5 moko 890: ;;
1.7 ! moko 891: *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
! 892: cpu=m68k
! 893: vendor=atari
! 894: basic_os=mint
1.1 paf 895: ;;
896: news-3600 | risc-news)
1.7 ! moko 897: cpu=mips
! 898: vendor=sony
! 899: basic_os=newsos
! 900: ;;
! 901: next | m*-next)
! 902: cpu=m68k
! 903: vendor=next
1.3 paf 904: ;;
1.1 paf 905: np1)
1.7 ! moko 906: cpu=np1
! 907: vendor=gould
1.1 paf 908: ;;
909: op50n-* | op60c-*)
1.7 ! moko 910: cpu=hppa1.1
! 911: vendor=oki
! 912: basic_os=proelf
1.1 paf 913: ;;
914: pa-hitachi)
1.7 ! moko 915: cpu=hppa1.1
! 916: vendor=hitachi
! 917: basic_os=hiuxwe2
1.5 moko 918: ;;
1.1 paf 919: pbd)
1.7 ! moko 920: cpu=sparc
! 921: vendor=tti
1.1 paf 922: ;;
923: pbb)
1.7 ! moko 924: cpu=m68k
! 925: vendor=tti
1.1 paf 926: ;;
1.7 ! moko 927: pc532)
! 928: cpu=ns32k
! 929: vendor=pc532
1.1 paf 930: ;;
1.7 ! moko 931: pn)
! 932: cpu=pn
! 933: vendor=gould
1.5 moko 934: ;;
1.7 ! moko 935: power)
! 936: cpu=power
! 937: vendor=ibm
1.5 moko 938: ;;
1.7 ! moko 939: ps2)
! 940: cpu=i386
! 941: vendor=ibm
1.1 paf 942: ;;
1.7 ! moko 943: rm[46]00)
! 944: cpu=mips
! 945: vendor=siemens
1.1 paf 946: ;;
1.7 ! moko 947: rtpc | rtpc-*)
! 948: cpu=romp
! 949: vendor=ibm
1.1 paf 950: ;;
1.7 ! moko 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
1.5 moko 960: ;;
1.7 ! moko 961: tower | tower-32)
! 962: cpu=m68k
! 963: vendor=ncr
1.1 paf 964: ;;
1.7 ! moko 965: vpp*|vx|vx-*)
! 966: cpu=f301
! 967: vendor=fujitsu
1.1 paf 968: ;;
1.7 ! moko 969: w65)
! 970: cpu=w65
! 971: vendor=wdc
1.1 paf 972: ;;
1.7 ! moko 973: w89k-*)
! 974: cpu=hppa1.1
! 975: vendor=winbond
! 976: basic_os=proelf
1.5 moko 977: ;;
1.7 ! moko 978: none)
! 979: cpu=none
! 980: vendor=none
1.1 paf 981: ;;
1.7 ! moko 982: leon|leon[3-9])
! 983: cpu=sparc
! 984: vendor=$basic_machine
1.1 paf 985: ;;
1.7 ! moko 986: leon-*|leon[3-9]-*)
! 987: cpu=sparc
! 988: vendor=`echo "$basic_machine" | sed 's/-.*//'`
1.3 paf 989: ;;
1.7 ! moko 990:
! 991: *-*)
! 992: saved_IFS=$IFS
! 993: IFS="-" read cpu vendor <<EOF
! 994: $basic_machine
! 995: EOF
! 996: IFS=$saved_IFS
1.1 paf 997: ;;
1.7 ! moko 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
1.3 paf 1004: ;;
1.7 ! moko 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
1.1 paf 1010: ;;
1.7 ! moko 1011: x64 | amd64)
! 1012: cpu=x86_64
! 1013: vendor=pc
1.3 paf 1014: ;;
1.7 ! moko 1015: # Recognize the basic CPU types without company name.
! 1016: *)
! 1017: cpu=$basic_machine
! 1018: vendor=unknown
1.3 paf 1019: ;;
1.7 ! moko 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}
1.3 paf 1035: ;;
1.7 ! moko 1036: c90-unknown | c90-cray)
! 1037: vendor=cray
! 1038: basic_os=${basic_os:-unicos}
1.3 paf 1039: ;;
1.7 ! moko 1040: fx80-unknown)
! 1041: vendor=alliant
1.1 paf 1042: ;;
1.7 ! moko 1043: romp-unknown)
! 1044: vendor=ibm
1.1 paf 1045: ;;
1.7 ! moko 1046: mmix-unknown)
! 1047: vendor=knuth
1.1 paf 1048: ;;
1.7 ! moko 1049: microblaze-unknown | microblazeel-unknown)
! 1050: vendor=xilinx
1.1 paf 1051: ;;
1.7 ! moko 1052: rs6000-unknown)
! 1053: vendor=ibm
1.3 paf 1054: ;;
1.7 ! moko 1055: vax-unknown)
! 1056: vendor=dec
1.3 paf 1057: ;;
1.7 ! moko 1058: pdp11-unknown)
! 1059: vendor=dec
1.1 paf 1060: ;;
1.7 ! moko 1061: we32k-unknown)
! 1062: vendor=att
1.3 paf 1063: ;;
1.7 ! moko 1064: cydra-unknown)
! 1065: vendor=cydrome
1.3 paf 1066: ;;
1.7 ! moko 1067: i370-ibm*)
! 1068: vendor=ibm
1.5 moko 1069: ;;
1.7 ! moko 1070: orion-unknown)
! 1071: vendor=highlevel
1.5 moko 1072: ;;
1.7 ! moko 1073: xps-unknown | xps100-unknown)
! 1074: cpu=xps100
! 1075: vendor=honeywell
1.1 paf 1076: ;;
1.7 ! moko 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}
1.1 paf 1083: ;;
1.7 ! moko 1084:
! 1085: # Normalized CPU+vendor pairs that imply an OS, if not otherwise specified
! 1086: m68k-isi)
! 1087: basic_os=${basic_os:-sysv}
1.5 moko 1088: ;;
1.7 ! moko 1089: m68k-sony)
! 1090: basic_os=${basic_os:-newsos}
1.5 moko 1091: ;;
1.7 ! moko 1092: m68k-tektronix)
! 1093: basic_os=${basic_os:-bsd}
1.1 paf 1094: ;;
1.7 ! moko 1095: m88k-harris)
! 1096: basic_os=${basic_os:-sysv3}
1.1 paf 1097: ;;
1.7 ! moko 1098: i386-bull | m68k-bull)
! 1099: basic_os=${basic_os:-sysv3}
1.1 paf 1100: ;;
1.7 ! moko 1101: rs6000-bull)
! 1102: basic_os=${basic_os:-bosx}
1.1 paf 1103: ;;
1.7 ! moko 1104: mips-sni)
! 1105: basic_os=${basic_os:-sysv4}
1.1 paf 1106: ;;
1.7 ! moko 1107:
! 1108: # Here we normalize CPU types irrespective of the vendor
! 1109: amd64-*)
! 1110: cpu=x86_64
1.5 moko 1111: ;;
1.7 ! moko 1112: blackfin-*)
! 1113: cpu=bfin
! 1114: basic_os=${basic_os:-linux}
1.1 paf 1115: ;;
1.7 ! moko 1116: c54x-*)
! 1117: cpu=tic54x
1.1 paf 1118: ;;
1.7 ! moko 1119: c55x-*)
! 1120: cpu=tic55x
1.1 paf 1121: ;;
1.7 ! moko 1122: c6x-*)
! 1123: cpu=tic6x
1.1 paf 1124: ;;
1.7 ! moko 1125: e500v[12]-*)
! 1126: cpu=powerpc
! 1127: basic_os=${basic_os}"spe"
1.1 paf 1128: ;;
1.7 ! moko 1129: mips3*-*)
! 1130: cpu=mips64
1.1 paf 1131: ;;
1.7 ! moko 1132: ms1-*)
! 1133: cpu=mt
1.1 paf 1134: ;;
1.7 ! moko 1135: m68knommu-*)
! 1136: cpu=m68k
! 1137: basic_os=${basic_os:-linux}
1.1 paf 1138: ;;
1.7 ! moko 1139: m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
! 1140: cpu=s12z
1.1 paf 1141: ;;
1.7 ! moko 1142: openrisc-*)
! 1143: cpu=or32
1.1 paf 1144: ;;
1.7 ! moko 1145: parisc-*)
! 1146: cpu=hppa
! 1147: basic_os=${basic_os:-linux}
1.1 paf 1148: ;;
1.7 ! moko 1149: pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
! 1150: cpu=i586
1.1 paf 1151: ;;
1.7 ! moko 1152: pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
! 1153: cpu=i686
1.1 paf 1154: ;;
1.7 ! moko 1155: pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
! 1156: cpu=i686
1.3 paf 1157: ;;
1.7 ! moko 1158: pentium4-*)
! 1159: cpu=i786
1.1 paf 1160: ;;
1.7 ! moko 1161: ppc-* | ppcbe-*)
! 1162: cpu=powerpc
1.3 paf 1163: ;;
1.7 ! moko 1164: ppcle-* | powerpclittle-*)
! 1165: cpu=powerpcle
1.1 paf 1166: ;;
1.7 ! moko 1167: ppc64-*)
! 1168: cpu=powerpc64
1.1 paf 1169: ;;
1.7 ! moko 1170: ppc64le-* | powerpc64little-*)
! 1171: cpu=powerpc64le
1.3 paf 1172: ;;
1.7 ! moko 1173: sb1-*)
! 1174: cpu=mipsisa64sb1
1.1 paf 1175: ;;
1.7 ! moko 1176: sb1el-*)
! 1177: cpu=mipsisa64sb1el
1.1 paf 1178: ;;
1.7 ! moko 1179: sh5e[lb]-*)
! 1180: cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
1.3 paf 1181: ;;
1.7 ! moko 1182: spur-*)
! 1183: cpu=spur
1.1 paf 1184: ;;
1.7 ! moko 1185: strongarm-* | thumb-*)
! 1186: cpu=arm
1.1 paf 1187: ;;
1.7 ! moko 1188: tx39-*)
! 1189: cpu=mipstx39
1.4 paf 1190: ;;
1.7 ! moko 1191: tx39el-*)
! 1192: cpu=mipstx39el
1.3 paf 1193: ;;
1.5 moko 1194: xscale-* | xscalee[bl]-*)
1.7 ! moko 1195: cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
1.5 moko 1196: ;;
1.7 ! moko 1197: arm64-* | aarch64le-*)
! 1198: cpu=aarch64
1.1 paf 1199: ;;
1200:
1.7 ! moko 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}
1.1 paf 1205: ;;
1.7 ! moko 1206: crisv32-* | etraxfs*-*)
! 1207: cpu=crisv32
! 1208: vendor=axis
1.1 paf 1209: ;;
1.7 ! moko 1210: cris-* | etrax*-*)
! 1211: cpu=cris
! 1212: vendor=axis
1.1 paf 1213: ;;
1.7 ! moko 1214: crx-*)
! 1215: basic_os=${basic_os:-elf}
1.1 paf 1216: ;;
1.7 ! moko 1217: neo-tandem)
! 1218: cpu=neo
! 1219: vendor=tandem
1.5 moko 1220: ;;
1.7 ! moko 1221: nse-tandem)
! 1222: cpu=nse
! 1223: vendor=tandem
1.1 paf 1224: ;;
1.7 ! moko 1225: nsr-tandem)
! 1226: cpu=nsr
! 1227: vendor=tandem
1.1 paf 1228: ;;
1.7 ! moko 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
1.3 paf 1240: ;;
1.7 ! moko 1241: tile*-*)
! 1242: basic_os=${basic_os:-linux-gnu}
1.1 paf 1243: ;;
1.7 ! moko 1244:
1.1 paf 1245: *)
1.7 ! moko 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: | ip2k \
! 1325: | iq2000 \
! 1326: | javascript \
! 1327: | k1om \
! 1328: | kvx \
! 1329: | le32 \
! 1330: | le64 \
! 1331: | lm32 \
! 1332: | loongarch32 \
! 1333: | loongarch64 \
! 1334: | m32c \
! 1335: | m32r \
! 1336: | m32rle \
! 1337: | m5200 \
! 1338: | m68000 \
! 1339: | m680[012346]0 \
! 1340: | m6811 \
! 1341: | m6812 \
! 1342: | m68360 \
! 1343: | m683?2 \
! 1344: | m68hc11 \
! 1345: | m68hc12 \
! 1346: | m68hcs12x \
! 1347: | m68k \
! 1348: | m88110 \
! 1349: | m88k \
! 1350: | maxq \
! 1351: | mb \
! 1352: | mcore \
! 1353: | mep \
! 1354: | metag \
! 1355: | microblaze \
! 1356: | microblazeel \
! 1357: | mips* \
! 1358: | mmix \
! 1359: | mn10200 \
! 1360: | mn10300 \
! 1361: | moxie \
! 1362: | msp430 \
! 1363: | mt \
! 1364: | nanomips* \
! 1365: | nds32 \
! 1366: | nds32be \
! 1367: | nds32le \
! 1368: | nfp \
! 1369: | nios \
! 1370: | nios2 \
! 1371: | nios2eb \
! 1372: | nios2el \
! 1373: | none \
! 1374: | np1 \
! 1375: | ns16k \
! 1376: | ns32k \
! 1377: | nvptx \
! 1378: | open8 \
! 1379: | or1k* \
! 1380: | or32 \
! 1381: | orion \
! 1382: | pdp10 \
! 1383: | pdp11 \
! 1384: | picochip \
! 1385: | pj \
! 1386: | pjl \
! 1387: | pn \
! 1388: | power \
! 1389: | powerpc \
! 1390: | powerpc64 \
! 1391: | powerpc64le \
! 1392: | powerpcle \
! 1393: | powerpcspe \
! 1394: | pru \
! 1395: | pyramid \
! 1396: | riscv \
! 1397: | riscv32 \
! 1398: | riscv32be \
! 1399: | riscv64 \
! 1400: | riscv64be \
! 1401: | rl78 \
! 1402: | romp \
! 1403: | rs6000 \
! 1404: | rx \
! 1405: | s390 \
! 1406: | s390x \
! 1407: | score \
! 1408: | sh \
! 1409: | sh64 \
! 1410: | sh64le \
! 1411: | sh[12345][lb]e \
! 1412: | sh[1234] \
! 1413: | sh[1234]e[lb] \
! 1414: | sh[23]e \
! 1415: | sh[23]ele \
! 1416: | sh[24]a \
! 1417: | sh[24]ae[lb] \
! 1418: | sh[lb]e \
! 1419: | she[lb] \
! 1420: | shl \
! 1421: | sparc \
! 1422: | sparc64 \
! 1423: | sparc64b \
! 1424: | sparc64v \
! 1425: | sparc86x \
! 1426: | sparclet \
! 1427: | sparclite \
! 1428: | sparcv8 \
! 1429: | sparcv9 \
! 1430: | sparcv9b \
! 1431: | sparcv9v \
! 1432: | spu \
! 1433: | sv1 \
! 1434: | sx* \
! 1435: | tahoe \
! 1436: | thumbv7* \
! 1437: | tic30 \
! 1438: | tic4x \
! 1439: | tic54x \
! 1440: | tic55x \
! 1441: | tic6x \
! 1442: | tic80 \
! 1443: | tron \
! 1444: | ubicom32 \
! 1445: | v70 \
! 1446: | v810 \
! 1447: | v850 \
! 1448: | v850e \
! 1449: | v850e1 \
! 1450: | v850e2 \
! 1451: | v850e2v3 \
! 1452: | v850es \
! 1453: | vax \
! 1454: | vc4 \
! 1455: | visium \
! 1456: | w65 \
! 1457: | wasm32 \
! 1458: | wasm64 \
! 1459: | we32k \
! 1460: | x86 \
! 1461: | x86_64 \
! 1462: | xc16x \
! 1463: | xgate \
! 1464: | xps100 \
! 1465: | xstormy16 \
! 1466: | xtensa* \
! 1467: | ymp \
! 1468: | z80 \
! 1469: | z8k)
! 1470: ;;
! 1471:
! 1472: *)
! 1473: echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
! 1474: exit 1
! 1475: ;;
! 1476: esac
1.1 paf 1477: ;;
1478: esac
1479:
1480: # Here we canonicalize certain aliases for manufacturers.
1.7 ! moko 1481: case $vendor in
! 1482: digital*)
! 1483: vendor=dec
1.1 paf 1484: ;;
1.7 ! moko 1485: commodore*)
! 1486: vendor=cbm
1.1 paf 1487: ;;
1488: *)
1489: ;;
1490: esac
1491:
1492: # Decode manufacturer-specific aliases for certain operating systems.
1493:
1.7 ! moko 1494: if test x"$basic_os" != x
1.1 paf 1495: then
1.7 ! moko 1496:
! 1497: # First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
! 1498: # set os.
! 1499: obj=
! 1500: case $basic_os in
! 1501: gnu/linux*)
! 1502: kernel=linux
! 1503: os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
! 1504: ;;
! 1505: os2-emx)
! 1506: kernel=os2
! 1507: os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
! 1508: ;;
! 1509: nto-qnx*)
! 1510: kernel=nto
! 1511: os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
! 1512: ;;
! 1513: *-*)
! 1514: saved_IFS=$IFS
! 1515: IFS="-" read kernel os <<EOF
! 1516: $basic_os
! 1517: EOF
! 1518: IFS=$saved_IFS
! 1519: ;;
! 1520: # Default OS when just kernel was specified
! 1521: nto*)
! 1522: kernel=nto
! 1523: os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
! 1524: ;;
! 1525: linux*)
! 1526: kernel=linux
! 1527: os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
! 1528: ;;
! 1529: managarm*)
! 1530: kernel=managarm
! 1531: os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
! 1532: ;;
! 1533: *)
! 1534: kernel=
! 1535: os=$basic_os
! 1536: ;;
! 1537: esac
! 1538:
! 1539: # Now, normalize the OS (knowing we just have one component, it's not a kernel,
! 1540: # etc.)
1.1 paf 1541: case $os in
1.7 ! moko 1542: # First match some system type aliases that might get confused
! 1543: # with valid system types.
! 1544: # solaris* is a basic system type, with this one exception.
! 1545: auroraux)
! 1546: os=auroraux
! 1547: ;;
! 1548: bluegene*)
! 1549: os=cnk
! 1550: ;;
! 1551: solaris1 | solaris1.*)
! 1552: os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
! 1553: ;;
! 1554: solaris)
! 1555: os=solaris2
! 1556: ;;
! 1557: unixware*)
! 1558: os=sysv4.2uw
! 1559: ;;
! 1560: # The marketing names for NeXT's operating systems were
! 1561: # NeXTSTEP, NeXTSTEP 2, OpenSTEP 3, OpenSTEP 4. 'openstep' is
! 1562: # mapped to 'openstep3', but 'openstep1' and 'openstep2' are
! 1563: # mapped to 'nextstep' and 'nextstep2', consistent with the
! 1564: # treatment of SunOS/Solaris.
! 1565: ns | ns1 | nextstep | nextstep1 | openstep1)
! 1566: os=nextstep
! 1567: ;;
! 1568: ns2 | nextstep2 | openstep2)
! 1569: os=nextstep2
! 1570: ;;
! 1571: ns3 | nextstep3 | openstep | openstep3)
! 1572: os=openstep3
! 1573: ;;
! 1574: ns4 | nextstep4 | openstep4)
! 1575: os=openstep4
! 1576: ;;
! 1577: # es1800 is here to avoid being matched by es* (a different OS)
! 1578: es1800*)
! 1579: os=ose
1.1 paf 1580: ;;
1.7 ! moko 1581: # Some version numbers need modification
! 1582: chorusos*)
! 1583: os=chorusos
1.5 moko 1584: ;;
1.7 ! moko 1585: isc)
! 1586: os=isc2.2
1.1 paf 1587: ;;
1.7 ! moko 1588: sco6)
! 1589: os=sco5v6
1.1 paf 1590: ;;
1.7 ! moko 1591: sco5)
! 1592: os=sco3.2v5
1.1 paf 1593: ;;
1.7 ! moko 1594: sco4)
! 1595: os=sco3.2v4
1.5 moko 1596: ;;
1.7 ! moko 1597: sco3.2.[4-9]*)
! 1598: os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
1.1 paf 1599: ;;
1.7 ! moko 1600: sco*v* | scout)
! 1601: # Don't match below
1.1 paf 1602: ;;
1.7 ! moko 1603: sco*)
! 1604: os=sco3.2v2
1.1 paf 1605: ;;
1.7 ! moko 1606: psos*)
! 1607: os=psos
1.1 paf 1608: ;;
1.7 ! moko 1609: qnx*)
! 1610: os=qnx
1.5 moko 1611: ;;
1.7 ! moko 1612: hiux*)
! 1613: os=hiuxwe2
1.1 paf 1614: ;;
1.7 ! moko 1615: lynx*178)
! 1616: os=lynxos178
1.1 paf 1617: ;;
1.7 ! moko 1618: lynx*5)
! 1619: os=lynxos5
1.1 paf 1620: ;;
1.7 ! moko 1621: lynxos*)
! 1622: # don't get caught up in next wildcard
1.1 paf 1623: ;;
1.7 ! moko 1624: lynx*)
! 1625: os=lynxos
1.1 paf 1626: ;;
1.7 ! moko 1627: mac[0-9]*)
! 1628: os=`echo "$os" | sed -e 's|mac|macos|'`
1.1 paf 1629: ;;
1.7 ! moko 1630: opened*)
! 1631: os=openedition
1.3 paf 1632: ;;
1.7 ! moko 1633: os400*)
! 1634: os=os400
1.5 moko 1635: ;;
1.7 ! moko 1636: sunos5*)
! 1637: os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
1.1 paf 1638: ;;
1.7 ! moko 1639: sunos6*)
! 1640: os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
1.1 paf 1641: ;;
1.7 ! moko 1642: wince*)
! 1643: os=wince
1.3 paf 1644: ;;
1.7 ! moko 1645: utek*)
! 1646: os=bsd
! 1647: vendor=`echo "$vendor" | sed -e 's|^unknown$|tektronix|'`
1.1 paf 1648: ;;
1.7 ! moko 1649: dynix*)
! 1650: os=bsd
1.1 paf 1651: ;;
1.7 ! moko 1652: acis*)
! 1653: os=aos
1.1 paf 1654: ;;
1.7 ! moko 1655: atheos*)
! 1656: os=atheos
1.1 paf 1657: ;;
1.7 ! moko 1658: syllable*)
! 1659: os=syllable
1.5 moko 1660: ;;
1.7 ! moko 1661: 386bsd)
! 1662: os=bsd
1.1 paf 1663: ;;
1.7 ! moko 1664: ctix*)
! 1665: os=sysv
! 1666: vendor=`echo "$vendor" | sed -e 's|^unknown$|convergent|'`
! 1667: ;;
! 1668: uts*)
! 1669: os=sysv
! 1670: ;;
! 1671: nova*)
! 1672: kernel=rtmk
! 1673: os=nova
1.1 paf 1674: ;;
1.7 ! moko 1675: # Preserve the version number of sinix5.
! 1676: sinix5.*)
! 1677: os=`echo "$os" | sed -e 's|sinix|sysv|'`
! 1678: vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'`
1.1 paf 1679: ;;
1.7 ! moko 1680: sinix*)
! 1681: os=sysv4
! 1682: vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'`
1.1 paf 1683: ;;
1.7 ! moko 1684: tpf*)
! 1685: os=tpf
1.1 paf 1686: ;;
1.7 ! moko 1687: triton*)
! 1688: os=sysv3
1.1 paf 1689: ;;
1.7 ! moko 1690: oss*)
! 1691: os=sysv3
1.1 paf 1692: ;;
1.7 ! moko 1693: svr4*)
! 1694: os=sysv4
1.1 paf 1695: ;;
1.7 ! moko 1696: svr3)
! 1697: os=sysv3
1.1 paf 1698: ;;
1.7 ! moko 1699: sysvr4)
! 1700: os=sysv4
1.1 paf 1701: ;;
1.7 ! moko 1702: ose*)
! 1703: os=ose
1.5 moko 1704: ;;
1.7 ! moko 1705: *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
! 1706: os=mint
1.5 moko 1707: ;;
1.7 ! moko 1708: dicos*)
! 1709: os=dicos
1.5 moko 1710: ;;
1.7 ! moko 1711: pikeos*)
! 1712: # Until real need of OS specific support for
! 1713: # particular features comes up, bare metal
! 1714: # configurations are quite functional.
! 1715: case $cpu in
! 1716: arm*)
! 1717: os=eabi
! 1718: ;;
! 1719: *)
! 1720: os=
! 1721: obj=elf
! 1722: ;;
! 1723: esac
1.5 moko 1724: ;;
1.7 ! moko 1725: aout* | coff* | elf* | pe*)
! 1726: # These are machine code file formats, not OSes
! 1727: obj=$os
! 1728: os=
1.1 paf 1729: ;;
1730: *)
1.7 ! moko 1731: # No normalization, but not necessarily accepted, that comes below.
1.1 paf 1732: ;;
1733: esac
1.7 ! moko 1734:
1.1 paf 1735: else
1736:
1737: # Here we handle the default operating systems that come with various machines.
1738: # The value should be what the vendor currently ships out the door with their
1739: # machine or put another way, the most popular os provided with the machine.
1740:
1741: # Note that if you're going to try to match "-MANUFACTURER" here (say,
1742: # "-sun"), then you have to tell the case statement up towards the top
1743: # that MANUFACTURER isn't an operating system. Otherwise, code above
1744: # will signal an error saying that MANUFACTURER isn't an operating
1745: # system, and we'll never get to this point.
1746:
1.7 ! moko 1747: kernel=
! 1748: obj=
! 1749: case $cpu-$vendor in
1.5 moko 1750: score-*)
1.7 ! moko 1751: os=
! 1752: obj=elf
1.5 moko 1753: ;;
1754: spu-*)
1.7 ! moko 1755: os=
! 1756: obj=elf
1.5 moko 1757: ;;
1.1 paf 1758: *-acorn)
1.7 ! moko 1759: os=riscix1.2
1.1 paf 1760: ;;
1761: arm*-rebel)
1.7 ! moko 1762: kernel=linux
! 1763: os=gnu
1.1 paf 1764: ;;
1765: arm*-semi)
1.7 ! moko 1766: os=
! 1767: obj=aout
1.1 paf 1768: ;;
1.5 moko 1769: c4x-* | tic4x-*)
1.7 ! moko 1770: os=
! 1771: obj=coff
1.5 moko 1772: ;;
1.6 moko 1773: c8051-*)
1.7 ! moko 1774: os=
! 1775: obj=elf
! 1776: ;;
! 1777: clipper-intergraph)
! 1778: os=clix
1.6 moko 1779: ;;
1780: hexagon-*)
1.7 ! moko 1781: os=
! 1782: obj=elf
1.6 moko 1783: ;;
1.5 moko 1784: tic54x-*)
1.7 ! moko 1785: os=
! 1786: obj=coff
1.5 moko 1787: ;;
1788: tic55x-*)
1.7 ! moko 1789: os=
! 1790: obj=coff
1.5 moko 1791: ;;
1792: tic6x-*)
1.7 ! moko 1793: os=
! 1794: obj=coff
1.5 moko 1795: ;;
1.3 paf 1796: # This must come before the *-dec entry.
1797: pdp10-*)
1.7 ! moko 1798: os=tops20
1.3 paf 1799: ;;
1800: pdp11-*)
1.7 ! moko 1801: os=none
1.1 paf 1802: ;;
1803: *-dec | vax-*)
1.7 ! moko 1804: os=ultrix4.2
1.1 paf 1805: ;;
1806: m68*-apollo)
1.7 ! moko 1807: os=domain
1.1 paf 1808: ;;
1809: i386-sun)
1.7 ! moko 1810: os=sunos4.0.2
1.1 paf 1811: ;;
1812: m68000-sun)
1.7 ! moko 1813: os=sunos3
1.1 paf 1814: ;;
1815: m68*-cisco)
1.7 ! moko 1816: os=
! 1817: obj=aout
1.1 paf 1818: ;;
1.5 moko 1819: mep-*)
1.7 ! moko 1820: os=
! 1821: obj=elf
! 1822: ;;
! 1823: # The -sgi and -siemens entries must be before the mips- entry
! 1824: # or we get the wrong os.
! 1825: *-sgi)
! 1826: os=irix
! 1827: ;;
! 1828: *-siemens)
! 1829: os=sysv4
1.5 moko 1830: ;;
1.1 paf 1831: mips*-cisco)
1.7 ! moko 1832: os=
! 1833: obj=elf
1.1 paf 1834: ;;
1.7 ! moko 1835: mips*-*|nanomips*-*)
! 1836: os=
! 1837: obj=elf
1.1 paf 1838: ;;
1.3 paf 1839: or32-*)
1.7 ! moko 1840: os=
! 1841: obj=coff
1.3 paf 1842: ;;
1.7 ! moko 1843: # This must be before the sparc-* entry or we get the wrong os.
! 1844: *-tti)
! 1845: os=sysv3
1.1 paf 1846: ;;
1847: sparc-* | *-sun)
1.7 ! moko 1848: os=sunos4.1.1
! 1849: ;;
! 1850: pru-*)
! 1851: os=
! 1852: obj=elf
1.1 paf 1853: ;;
1854: *-be)
1.7 ! moko 1855: os=beos
1.5 moko 1856: ;;
1.1 paf 1857: *-ibm)
1.7 ! moko 1858: os=aix
1.1 paf 1859: ;;
1.5 moko 1860: *-knuth)
1.7 ! moko 1861: os=mmixware
1.5 moko 1862: ;;
1.1 paf 1863: *-wec)
1.7 ! moko 1864: os=proelf
1.1 paf 1865: ;;
1866: *-winbond)
1.7 ! moko 1867: os=proelf
1.1 paf 1868: ;;
1869: *-oki)
1.7 ! moko 1870: os=proelf
1.1 paf 1871: ;;
1872: *-hp)
1.7 ! moko 1873: os=hpux
1.1 paf 1874: ;;
1875: *-hitachi)
1.7 ! moko 1876: os=hiuxwe2
1.1 paf 1877: ;;
1878: i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
1.7 ! moko 1879: os=sysv
1.1 paf 1880: ;;
1881: *-cbm)
1.7 ! moko 1882: os=amigaos
1.1 paf 1883: ;;
1884: *-dg)
1.7 ! moko 1885: os=dgux
1.1 paf 1886: ;;
1887: *-dolphin)
1.7 ! moko 1888: os=sysv3
1.1 paf 1889: ;;
1890: m68k-ccur)
1.7 ! moko 1891: os=rtu
1.1 paf 1892: ;;
1893: m88k-omron*)
1.7 ! moko 1894: os=luna
1.1 paf 1895: ;;
1.7 ! moko 1896: *-next)
! 1897: os=nextstep
1.1 paf 1898: ;;
1899: *-sequent)
1.7 ! moko 1900: os=ptx
1.1 paf 1901: ;;
1902: *-crds)
1.7 ! moko 1903: os=unos
1.1 paf 1904: ;;
1905: *-ns)
1.7 ! moko 1906: os=genix
1.1 paf 1907: ;;
1908: i370-*)
1.7 ! moko 1909: os=mvs
1.1 paf 1910: ;;
1.3 paf 1911: *-gould)
1.7 ! moko 1912: os=sysv
1.1 paf 1913: ;;
1.3 paf 1914: *-highlevel)
1.7 ! moko 1915: os=bsd
1.1 paf 1916: ;;
1917: *-encore)
1.7 ! moko 1918: os=bsd
1.1 paf 1919: ;;
1920: *-masscomp)
1.7 ! moko 1921: os=rtu
1.1 paf 1922: ;;
1.3 paf 1923: f30[01]-fujitsu | f700-fujitsu)
1.7 ! moko 1924: os=uxpv
1.1 paf 1925: ;;
1926: *-rom68k)
1.7 ! moko 1927: os=
! 1928: obj=coff
1.1 paf 1929: ;;
1930: *-*bug)
1.7 ! moko 1931: os=
! 1932: obj=coff
1.1 paf 1933: ;;
1934: *-apple)
1.7 ! moko 1935: os=macos
1.1 paf 1936: ;;
1937: *-atari*)
1.7 ! moko 1938: os=mint
! 1939: ;;
! 1940: *-wrs)
! 1941: os=vxworks
1.1 paf 1942: ;;
1943: *)
1.7 ! moko 1944: os=none
1.1 paf 1945: ;;
1946: esac
1.7 ! moko 1947:
1.1 paf 1948: fi
1949:
1.7 ! moko 1950: # Now, validate our (potentially fixed-up) individual pieces (OS, OBJ).
! 1951:
! 1952: case $os in
! 1953: # Sometimes we do "kernel-libc", so those need to count as OSes.
! 1954: llvm* | musl* | newlib* | relibc* | uclibc*)
! 1955: ;;
! 1956: # Likewise for "kernel-abi"
! 1957: eabi* | gnueabi*)
! 1958: ;;
! 1959: # VxWorks passes extra cpu info in the 4th filed.
! 1960: simlinux | simwindows | spe)
! 1961: ;;
! 1962: # See `case $cpu-$os` validation below
! 1963: ghcjs)
! 1964: ;;
! 1965: # Now accept the basic system types.
! 1966: # Each alternative MUST end in a * to match a version number.
! 1967: abug \
! 1968: | aix* \
! 1969: | amdhsa* \
! 1970: | amigados* \
! 1971: | amigaos* \
! 1972: | android* \
! 1973: | aof* \
! 1974: | aos* \
! 1975: | aros* \
! 1976: | atheos* \
! 1977: | auroraux* \
! 1978: | aux* \
! 1979: | beos* \
! 1980: | bitrig* \
! 1981: | bme* \
! 1982: | bosx* \
! 1983: | bsd* \
! 1984: | cegcc* \
! 1985: | chorusos* \
! 1986: | chorusrdb* \
! 1987: | clix* \
! 1988: | cloudabi* \
! 1989: | cnk* \
! 1990: | conix* \
! 1991: | cos* \
! 1992: | cxux* \
! 1993: | cygwin* \
! 1994: | darwin* \
! 1995: | dgux* \
! 1996: | dicos* \
! 1997: | dnix* \
! 1998: | domain* \
! 1999: | dragonfly* \
! 2000: | drops* \
! 2001: | ebmon* \
! 2002: | ecoff* \
! 2003: | ekkobsd* \
! 2004: | emscripten* \
! 2005: | emx* \
! 2006: | es* \
! 2007: | fiwix* \
! 2008: | freebsd* \
! 2009: | fuchsia* \
! 2010: | genix* \
! 2011: | genode* \
! 2012: | glidix* \
! 2013: | gnu* \
! 2014: | go32* \
! 2015: | haiku* \
! 2016: | hcos* \
! 2017: | hiux* \
! 2018: | hms* \
! 2019: | hpux* \
! 2020: | ieee* \
! 2021: | interix* \
! 2022: | ios* \
! 2023: | iris* \
! 2024: | irix* \
! 2025: | ironclad* \
! 2026: | isc* \
! 2027: | its* \
! 2028: | l4re* \
! 2029: | libertybsd* \
! 2030: | lites* \
! 2031: | lnews* \
! 2032: | luna* \
! 2033: | lynxos* \
! 2034: | mach* \
! 2035: | macos* \
! 2036: | magic* \
! 2037: | mbr* \
! 2038: | midipix* \
! 2039: | midnightbsd* \
! 2040: | mingw32* \
! 2041: | mingw64* \
! 2042: | minix* \
! 2043: | mint* \
! 2044: | mirbsd* \
! 2045: | mks* \
! 2046: | mlibc* \
! 2047: | mmixware* \
! 2048: | mon960* \
! 2049: | morphos* \
! 2050: | moss* \
! 2051: | moxiebox* \
! 2052: | mpeix* \
! 2053: | mpw* \
! 2054: | msdos* \
! 2055: | msys* \
! 2056: | mvs* \
! 2057: | nacl* \
! 2058: | netbsd* \
! 2059: | netware* \
! 2060: | newsos* \
! 2061: | nextstep* \
! 2062: | nindy* \
! 2063: | nonstopux* \
! 2064: | nova* \
! 2065: | nsk* \
! 2066: | nucleus* \
! 2067: | nx6 \
! 2068: | nx7 \
! 2069: | oabi* \
! 2070: | ohos* \
! 2071: | onefs* \
! 2072: | openbsd* \
! 2073: | openedition* \
! 2074: | openstep* \
! 2075: | os108* \
! 2076: | os2* \
! 2077: | os400* \
! 2078: | os68k* \
! 2079: | os9* \
! 2080: | ose* \
! 2081: | osf* \
! 2082: | oskit* \
! 2083: | osx* \
! 2084: | palmos* \
! 2085: | phoenix* \
! 2086: | plan9* \
! 2087: | powermax* \
! 2088: | powerunix* \
! 2089: | proelf* \
! 2090: | psos* \
! 2091: | psp* \
! 2092: | ptx* \
! 2093: | pw32* \
! 2094: | qnx* \
! 2095: | rdos* \
! 2096: | redox* \
! 2097: | rhapsody* \
! 2098: | riscix* \
! 2099: | riscos* \
! 2100: | rtems* \
! 2101: | rtmk* \
! 2102: | rtu* \
! 2103: | scout* \
! 2104: | secbsd* \
! 2105: | sei* \
! 2106: | serenity* \
! 2107: | sim* \
! 2108: | skyos* \
! 2109: | solaris* \
! 2110: | solidbsd* \
! 2111: | sortix* \
! 2112: | storm-chaos* \
! 2113: | sunos \
! 2114: | sunos[34]* \
! 2115: | superux* \
! 2116: | syllable* \
! 2117: | sym* \
! 2118: | sysv* \
! 2119: | tenex* \
! 2120: | tirtos* \
! 2121: | toppers* \
! 2122: | tops10* \
! 2123: | tops20* \
! 2124: | tpf* \
! 2125: | tvos* \
! 2126: | twizzler* \
! 2127: | uclinux* \
! 2128: | udi* \
! 2129: | udk* \
! 2130: | ultrix* \
! 2131: | unicos* \
! 2132: | uniplus* \
! 2133: | unleashed* \
! 2134: | unos* \
! 2135: | uwin* \
! 2136: | uxpv* \
! 2137: | v88r* \
! 2138: |*vms* \
! 2139: | vos* \
! 2140: | vsta* \
! 2141: | vxsim* \
! 2142: | vxworks* \
! 2143: | wasi* \
! 2144: | watchos* \
! 2145: | wince* \
! 2146: | windiss* \
! 2147: | windows* \
! 2148: | winnt* \
! 2149: | xenix* \
! 2150: | xray* \
! 2151: | zephyr* \
! 2152: | zvmoe* )
! 2153: ;;
! 2154: # This one is extra strict with allowed versions
! 2155: sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
! 2156: # Don't forget version if it is 3.2v4 or newer.
! 2157: ;;
! 2158: # This refers to builds using the UEFI calling convention
! 2159: # (which depends on the architecture) and PE file format.
! 2160: # Note that this is both a different calling convention and
! 2161: # different file format than that of GNU-EFI
! 2162: # (x86_64-w64-mingw32).
! 2163: uefi)
! 2164: ;;
! 2165: none)
! 2166: ;;
! 2167: kernel* | msvc* )
! 2168: # Restricted further below
! 2169: ;;
! 2170: '')
! 2171: if test x"$obj" = x
! 2172: then
! 2173: echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
! 2174: fi
! 2175: ;;
! 2176: *)
! 2177: echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
! 2178: exit 1
! 2179: ;;
! 2180: esac
! 2181:
! 2182: case $obj in
! 2183: aout* | coff* | elf* | pe*)
! 2184: ;;
! 2185: '')
! 2186: # empty is fine
! 2187: ;;
! 2188: *)
! 2189: echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
! 2190: exit 1
! 2191: ;;
! 2192: esac
! 2193:
! 2194: # Here we handle the constraint that a (synthetic) cpu and os are
! 2195: # valid only in combination with each other and nowhere else.
! 2196: case $cpu-$os in
! 2197: # The "javascript-unknown-ghcjs" triple is used by GHC; we
! 2198: # accept it here in order to tolerate that, but reject any
! 2199: # variations.
! 2200: javascript-ghcjs)
! 2201: ;;
! 2202: javascript-* | *-ghcjs)
! 2203: echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
! 2204: exit 1
! 2205: ;;
! 2206: esac
! 2207:
! 2208: # As a final step for OS-related things, validate the OS-kernel combination
! 2209: # (given a valid OS), if there is a kernel.
! 2210: case $kernel-$os-$obj in
! 2211: linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
! 2212: | linux-mlibc*- | linux-musl*- | linux-newlib*- \
! 2213: | linux-relibc*- | linux-uclibc*- | linux-ohos*- )
! 2214: ;;
! 2215: uclinux-uclibc*- | uclinux-gnu*- )
! 2216: ;;
! 2217: managarm-mlibc*- | managarm-kernel*- )
! 2218: ;;
! 2219: windows*-msvc*-)
! 2220: ;;
! 2221: -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
! 2222: | -uclibc*- )
! 2223: # These are just libc implementations, not actual OSes, and thus
! 2224: # require a kernel.
! 2225: echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
! 2226: exit 1
! 2227: ;;
! 2228: -kernel*- )
! 2229: echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
! 2230: exit 1
! 2231: ;;
! 2232: *-kernel*- )
! 2233: echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
! 2234: exit 1
! 2235: ;;
! 2236: *-msvc*- )
! 2237: echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
! 2238: exit 1
! 2239: ;;
! 2240: kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-)
! 2241: ;;
! 2242: vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
! 2243: ;;
! 2244: nto-qnx*-)
! 2245: ;;
! 2246: os2-emx-)
! 2247: ;;
! 2248: rtmk-nova-)
! 2249: ;;
! 2250: *-eabi*- | *-gnueabi*-)
! 2251: ;;
! 2252: none--*)
! 2253: # None (no kernel, i.e. freestanding / bare metal),
! 2254: # can be paired with an machine code file format
! 2255: ;;
! 2256: -*-)
! 2257: # Blank kernel with real OS is always fine.
! 2258: ;;
! 2259: --*)
! 2260: # Blank kernel and OS with real machine code file format is always fine.
! 2261: ;;
! 2262: *-*-*)
! 2263: echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
! 2264: exit 1
! 2265: ;;
! 2266: esac
! 2267:
1.1 paf 2268: # Here we handle the case where we know the os, and the CPU type, but not the
2269: # manufacturer. We pick the logical manufacturer.
1.7 ! moko 2270: case $vendor in
! 2271: unknown)
! 2272: case $cpu-$os in
! 2273: *-riscix*)
1.1 paf 2274: vendor=acorn
2275: ;;
1.7 ! moko 2276: *-sunos* | *-solaris*)
1.1 paf 2277: vendor=sun
2278: ;;
1.7 ! moko 2279: *-cnk* | *-aix*)
1.1 paf 2280: vendor=ibm
2281: ;;
1.7 ! moko 2282: *-beos*)
1.1 paf 2283: vendor=be
2284: ;;
1.7 ! moko 2285: *-hpux*)
1.1 paf 2286: vendor=hp
2287: ;;
1.7 ! moko 2288: *-mpeix*)
1.1 paf 2289: vendor=hp
2290: ;;
1.7 ! moko 2291: *-hiux*)
1.1 paf 2292: vendor=hitachi
2293: ;;
1.7 ! moko 2294: *-unos*)
1.1 paf 2295: vendor=crds
2296: ;;
1.7 ! moko 2297: *-dgux*)
1.1 paf 2298: vendor=dg
2299: ;;
1.7 ! moko 2300: *-luna*)
1.1 paf 2301: vendor=omron
2302: ;;
1.7 ! moko 2303: *-genix*)
1.1 paf 2304: vendor=ns
2305: ;;
1.7 ! moko 2306: *-clix*)
! 2307: vendor=intergraph
! 2308: ;;
! 2309: *-mvs* | *-opened*)
! 2310: vendor=ibm
! 2311: ;;
! 2312: *-os400*)
1.1 paf 2313: vendor=ibm
2314: ;;
1.7 ! moko 2315: s390-* | s390x-*)
1.5 moko 2316: vendor=ibm
2317: ;;
1.7 ! moko 2318: *-ptx*)
1.1 paf 2319: vendor=sequent
2320: ;;
1.7 ! moko 2321: *-tpf*)
1.5 moko 2322: vendor=ibm
2323: ;;
1.7 ! moko 2324: *-vxsim* | *-vxworks* | *-windiss*)
1.1 paf 2325: vendor=wrs
2326: ;;
1.7 ! moko 2327: *-aux*)
1.1 paf 2328: vendor=apple
2329: ;;
1.7 ! moko 2330: *-hms*)
1.1 paf 2331: vendor=hitachi
2332: ;;
1.7 ! moko 2333: *-mpw* | *-macos*)
1.1 paf 2334: vendor=apple
2335: ;;
1.7 ! moko 2336: *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
1.1 paf 2337: vendor=atari
2338: ;;
1.7 ! moko 2339: *-vos*)
1.3 paf 2340: vendor=stratus
2341: ;;
1.1 paf 2342: esac
2343: ;;
2344: esac
2345:
1.7 ! moko 2346: echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
1.5 moko 2347: exit
1.3 paf 2348:
2349: # Local variables:
1.7 ! moko 2350: # eval: (add-hook 'before-save-hook 'time-stamp)
1.3 paf 2351: # time-stamp-start: "timestamp='"
2352: # time-stamp-format: "%:y-%02m-%02d"
2353: # time-stamp-end: "'"
2354: # End:
E-mail: