1#! /bin/sh 2# Configuration validation subroutine script. 3# Copyright 1992-2024 Free Software Foundation, Inc. 4 5# shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale 6 7timestamp='2024-05-27' 8 9# This file is free software; you can redistribute it and/or modify it 10# under the terms of the GNU General Public License as published by 11# the Free Software Foundation, either version 3 of the License, or 12# (at your option) any later version. 13# 14# This program is distributed in the hope that it will be useful, but 15# WITHOUT ANY WARRANTY; without even the implied warranty of 16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17# General Public License for more details. 18# 19# You should have received a copy of the GNU General Public License 20# along with this program; if not, see <https://www.gnu.org/licenses/>. 21# 22# As a special exception to the GNU General Public License, if you 23# distribute this file as part of a program that contains a 24# configuration script generated by Autoconf, you may include it under 25# the same distribution terms that you use for the rest of that 26# program. This Exception is an additional permission under section 7 27# of the GNU General Public License, version 3 ("GPLv3"). 28 29 30# Please send patches to <config-patches@gnu.org>. 31# 32# Configuration subroutine to validate and canonicalize a configuration type. 33# Supply the specified configuration type as an argument. 34# If it is invalid, we print an error message on stderr and exit with code 1. 35# Otherwise, we print the canonical config type on stdout and succeed. 36 37# You can get the latest version of this script from: 38# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39 40# This file is supposed to be the same for all GNU packages 41# and recognize all the CPU types, system types and aliases 42# that are meaningful with *any* GNU software. 43# Each package is responsible for reporting which valid configurations 44# it does not support. The user should be able to distinguish 45# a failure to support a valid configuration from a meaningless 46# configuration. 47 48# The goal of this file is to map all the various variations of a given 49# machine specification into a single specification in the form: 50# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51# or in some cases, the newer four-part form: 52# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53# It is wrong to echo any other type of specification. 54 55# The "shellcheck disable" line above the timestamp inhibits complaints 56# about features and limitations of the classic Bourne shell that were 57# superseded or lifted in POSIX. However, this script identifies a wide 58# variety of pre-POSIX systems that do not have POSIX shells at all, and 59# even some reasonably current systems (Solaris 10 as case-in-point) still 60# have a pre-POSIX /bin/sh. 61 62me=`echo "$0" | sed -e 's,.*/,,'` 63 64usage="\ 65Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66 67Canonicalize a configuration name. 68 69Options: 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 74Report bugs and patches to <config-patches@gnu.org>." 75 76version="\ 77GNU config.sub ($timestamp) 78 79Copyright 1992-2024 Free Software Foundation, Inc. 80 81This is free software; see the source for copying conditions. There is NO 82warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83 84help=" 85Try '$me --help' for more information." 86 87# Parse command line 88while test $# -gt 0 ; do 89 case $1 in 90 --time-stamp | --time* | -t ) 91 echo "$timestamp" ; exit ;; 92 --version | -v ) 93 echo "$version" ; exit ;; 94 --help | --h* | -h ) 95 echo "$usage"; exit ;; 96 -- ) # Stop option processing 97 shift; break ;; 98 - ) # Use stdin as input. 99 break ;; 100 -* ) 101 echo "$me: invalid option $1$help" >&2 102 exit 1 ;; 103 104 *local*) 105 # First pass through any local machine types. 106 echo "$1" 107 exit ;; 108 109 * ) 110 break ;; 111 esac 112done 113 114case $# 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;; 120esac 121 122# Split fields of configuration type 123saved_IFS=$IFS 124IFS="-" read field1 field2 field3 field4 <<EOF 125$1 126EOF 127IFS=$saved_IFS 128 129# Separate into logical components for further validation 130case $1 in 131 *-*-*-*-*) 132 echo "Invalid configuration '$1': more than four components" >&2 133 exit 1 134 ;; 135 *-*-*-*) 136 basic_machine=$field1-$field2 137 basic_os=$field3-$field4 138 ;; 139 *-*-*) 140 # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 141 # parts 142 maybe_os=$field2-$field3 143 case $maybe_os in 144 cloudabi*-eabi* \ 145 | kfreebsd*-gnu* \ 146 | knetbsd*-gnu* \ 147 | kopensolaris*-gnu* \ 148 | 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 171 ;; 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 275 ;; 276 *) 277 # Convert single-component short-hands not valid as part of 278 # multi-component configurations. 279 case $field1 in 280 386bsd) 281 basic_machine=i386-pc 282 basic_os=bsd 283 ;; 284 a29khif) 285 basic_machine=a29k-amd 286 basic_os=udi 287 ;; 288 adobe68k) 289 basic_machine=m68010-adobe 290 basic_os=scout 291 ;; 292 alliant) 293 basic_machine=fx80-alliant 294 basic_os= 295 ;; 296 altos | altos3068) 297 basic_machine=m68k-altos 298 basic_os= 299 ;; 300 am29k) 301 basic_machine=a29k-none 302 basic_os=bsd 303 ;; 304 amdahl) 305 basic_machine=580-amdahl 306 basic_os=sysv 307 ;; 308 amiga) 309 basic_machine=m68k-unknown 310 basic_os= 311 ;; 312 amigaos | amigados) 313 basic_machine=m68k-unknown 314 basic_os=amigaos 315 ;; 316 amigaunix | amix) 317 basic_machine=m68k-unknown 318 basic_os=sysv4 319 ;; 320 apollo68) 321 basic_machine=m68k-apollo 322 basic_os=sysv 323 ;; 324 apollo68bsd) 325 basic_machine=m68k-apollo 326 basic_os=bsd 327 ;; 328 aros) 329 basic_machine=i386-pc 330 basic_os=aros 331 ;; 332 aux) 333 basic_machine=m68k-apple 334 basic_os=aux 335 ;; 336 balance) 337 basic_machine=ns32k-sequent 338 basic_os=dynix 339 ;; 340 blackfin) 341 basic_machine=bfin-unknown 342 basic_os=linux 343 ;; 344 cegcc) 345 basic_machine=arm-unknown 346 basic_os=cegcc 347 ;; 348 cray) 349 basic_machine=j90-cray 350 basic_os=unicos 351 ;; 352 crds | unos) 353 basic_machine=m68k-crds 354 basic_os= 355 ;; 356 da30) 357 basic_machine=m68k-da30 358 basic_os= 359 ;; 360 decstation | pmax | pmin | dec3100 | decstatn) 361 basic_machine=mips-dec 362 basic_os= 363 ;; 364 delta88) 365 basic_machine=m88k-motorola 366 basic_os=sysv3 367 ;; 368 dicos) 369 basic_machine=i686-pc 370 basic_os=dicos 371 ;; 372 djgpp) 373 basic_machine=i586-pc 374 basic_os=msdosdjgpp 375 ;; 376 ebmon29k) 377 basic_machine=a29k-amd 378 basic_os=ebmon 379 ;; 380 es1800 | OSE68k | ose68k | ose | OSE) 381 basic_machine=m68k-ericsson 382 basic_os=ose 383 ;; 384 gmicro) 385 basic_machine=tron-gmicro 386 basic_os=sysv 387 ;; 388 go32) 389 basic_machine=i386-pc 390 basic_os=go32 391 ;; 392 h8300hms) 393 basic_machine=h8300-hitachi 394 basic_os=hms 395 ;; 396 h8300xray) 397 basic_machine=h8300-hitachi 398 basic_os=xray 399 ;; 400 h8500hms) 401 basic_machine=h8500-hitachi 402 basic_os=hms 403 ;; 404 harris) 405 basic_machine=m88k-harris 406 basic_os=sysv3 407 ;; 408 hp300 | hp300hpux) 409 basic_machine=m68k-hp 410 basic_os=hpux 411 ;; 412 hp300bsd) 413 basic_machine=m68k-hp 414 basic_os=bsd 415 ;; 416 hppaosf) 417 basic_machine=hppa1.1-hp 418 basic_os=osf 419 ;; 420 hppro) 421 basic_machine=hppa1.1-hp 422 basic_os=proelf 423 ;; 424 i386mach) 425 basic_machine=i386-mach 426 basic_os=mach 427 ;; 428 isi68 | isi) 429 basic_machine=m68k-isi 430 basic_os=sysv 431 ;; 432 m68knommu) 433 basic_machine=m68k-unknown 434 basic_os=linux 435 ;; 436 magnum | m3230) 437 basic_machine=mips-mips 438 basic_os=sysv 439 ;; 440 merlin) 441 basic_machine=ns32k-utek 442 basic_os=sysv 443 ;; 444 mingw64) 445 basic_machine=x86_64-pc 446 basic_os=mingw64 447 ;; 448 mingw32) 449 basic_machine=i686-pc 450 basic_os=mingw32 451 ;; 452 mingw32ce) 453 basic_machine=arm-unknown 454 basic_os=mingw32ce 455 ;; 456 monitor) 457 basic_machine=m68k-rom68k 458 basic_os=coff 459 ;; 460 morphos) 461 basic_machine=powerpc-unknown 462 basic_os=morphos 463 ;; 464 moxiebox) 465 basic_machine=moxie-unknown 466 basic_os=moxiebox 467 ;; 468 msdos) 469 basic_machine=i386-pc 470 basic_os=msdos 471 ;; 472 msys) 473 basic_machine=i686-pc 474 basic_os=msys 475 ;; 476 mvs) 477 basic_machine=i370-ibm 478 basic_os=mvs 479 ;; 480 nacl) 481 basic_machine=le32-unknown 482 basic_os=nacl 483 ;; 484 ncr3000) 485 basic_machine=i486-ncr 486 basic_os=sysv4 487 ;; 488 netbsd386) 489 basic_machine=i386-pc 490 basic_os=netbsd 491 ;; 492 netwinder) 493 basic_machine=armv4l-rebel 494 basic_os=linux 495 ;; 496 news | news700 | news800 | news900) 497 basic_machine=m68k-sony 498 basic_os=newsos 499 ;; 500 news1000) 501 basic_machine=m68030-sony 502 basic_os=newsos 503 ;; 504 necv70) 505 basic_machine=v70-nec 506 basic_os=sysv 507 ;; 508 nh3000) 509 basic_machine=m68k-harris 510 basic_os=cxux 511 ;; 512 nh[45]000) 513 basic_machine=m88k-harris 514 basic_os=cxux 515 ;; 516 nindy960) 517 basic_machine=i960-intel 518 basic_os=nindy 519 ;; 520 mon960) 521 basic_machine=i960-intel 522 basic_os=mon960 523 ;; 524 nonstopux) 525 basic_machine=mips-compaq 526 basic_os=nonstopux 527 ;; 528 os400) 529 basic_machine=powerpc-ibm 530 basic_os=os400 531 ;; 532 OSE68000 | ose68000) 533 basic_machine=m68000-ericsson 534 basic_os=ose 535 ;; 536 os68k) 537 basic_machine=m68k-none 538 basic_os=os68k 539 ;; 540 paragon) 541 basic_machine=i860-intel 542 basic_os=osf 543 ;; 544 parisc) 545 basic_machine=hppa-unknown 546 basic_os=linux 547 ;; 548 psp) 549 basic_machine=mipsallegrexel-sony 550 basic_os=psp 551 ;; 552 pw32) 553 basic_machine=i586-unknown 554 basic_os=pw32 555 ;; 556 rdos | rdos64) 557 basic_machine=x86_64-pc 558 basic_os=rdos 559 ;; 560 rdos32) 561 basic_machine=i386-pc 562 basic_os=rdos 563 ;; 564 rom68k) 565 basic_machine=m68k-rom68k 566 basic_os=coff 567 ;; 568 sa29200) 569 basic_machine=a29k-amd 570 basic_os=udi 571 ;; 572 sei) 573 basic_machine=mips-sei 574 basic_os=seiux 575 ;; 576 sequent) 577 basic_machine=i386-sequent 578 basic_os= 579 ;; 580 sps7) 581 basic_machine=m68k-bull 582 basic_os=sysv2 583 ;; 584 st2000) 585 basic_machine=m68k-tandem 586 basic_os= 587 ;; 588 stratus) 589 basic_machine=i860-stratus 590 basic_os=sysv4 591 ;; 592 sun2) 593 basic_machine=m68000-sun 594 basic_os= 595 ;; 596 sun2os3) 597 basic_machine=m68000-sun 598 basic_os=sunos3 599 ;; 600 sun2os4) 601 basic_machine=m68000-sun 602 basic_os=sunos4 603 ;; 604 sun3) 605 basic_machine=m68k-sun 606 basic_os= 607 ;; 608 sun3os3) 609 basic_machine=m68k-sun 610 basic_os=sunos3 611 ;; 612 sun3os4) 613 basic_machine=m68k-sun 614 basic_os=sunos4 615 ;; 616 sun4) 617 basic_machine=sparc-sun 618 basic_os= 619 ;; 620 sun4os3) 621 basic_machine=sparc-sun 622 basic_os=sunos3 623 ;; 624 sun4os4) 625 basic_machine=sparc-sun 626 basic_os=sunos4 627 ;; 628 sun4sol2) 629 basic_machine=sparc-sun 630 basic_os=solaris2 631 ;; 632 sun386 | sun386i | roadrunner) 633 basic_machine=i386-sun 634 basic_os= 635 ;; 636 sv1) 637 basic_machine=sv1-cray 638 basic_os=unicos 639 ;; 640 symmetry) 641 basic_machine=i386-sequent 642 basic_os=dynix 643 ;; 644 t3e) 645 basic_machine=alphaev5-cray 646 basic_os=unicos 647 ;; 648 t90) 649 basic_machine=t90-cray 650 basic_os=unicos 651 ;; 652 toad1) 653 basic_machine=pdp10-xkl 654 basic_os=tops20 655 ;; 656 tpf) 657 basic_machine=s390x-ibm 658 basic_os=tpf 659 ;; 660 udi29k) 661 basic_machine=a29k-amd 662 basic_os=udi 663 ;; 664 ultra3) 665 basic_machine=a29k-nyu 666 basic_os=sym1 667 ;; 668 v810 | necv810) 669 basic_machine=v810-nec 670 basic_os=none 671 ;; 672 vaxv) 673 basic_machine=vax-dec 674 basic_os=sysv 675 ;; 676 vms) 677 basic_machine=vax-dec 678 basic_os=vms 679 ;; 680 vsta) 681 basic_machine=i386-pc 682 basic_os=vsta 683 ;; 684 vxworks960) 685 basic_machine=i960-wrs 686 basic_os=vxworks 687 ;; 688 vxworks68) 689 basic_machine=m68k-wrs 690 basic_os=vxworks 691 ;; 692 vxworks29k) 693 basic_machine=a29k-wrs 694 basic_os=vxworks 695 ;; 696 xbox) 697 basic_machine=i686-pc 698 basic_os=mingw32 699 ;; 700 ymp) 701 basic_machine=ymp-cray 702 basic_os=unicos 703 ;; 704 *) 705 basic_machine=$1 706 basic_os= 707 ;; 708 esac 709 ;; 710esac 711 712# Decode 1-component or ad-hoc basic machines 713case $basic_machine in 714 # Here we handle the default manufacturer of certain CPU types. It is in 715 # some cases the only manufacturer, in others, it is the most popular. 716 w89k) 717 cpu=hppa1.1 718 vendor=winbond 719 ;; 720 op50n) 721 cpu=hppa1.1 722 vendor=oki 723 ;; 724 op60c) 725 cpu=hppa1.1 726 vendor=oki 727 ;; 728 ibm*) 729 cpu=i370 730 vendor=ibm 731 ;; 732 orion105) 733 cpu=clipper 734 vendor=highlevel 735 ;; 736 mac | mpw | mac-mpw) 737 cpu=m68k 738 vendor=apple 739 ;; 740 pmac | pmac-mpw) 741 cpu=powerpc 742 vendor=apple 743 ;; 744 745 # Recognize the various machine names and aliases which stand 746 # for a CPU type and a company and sometimes even an OS. 747 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 748 cpu=m68000 749 vendor=att 750 ;; 751 3b*) 752 cpu=we32k 753 vendor=att 754 ;; 755 bluegene*) 756 cpu=powerpc 757 vendor=ibm 758 basic_os=cnk 759 ;; 760 decsystem10* | dec10*) 761 cpu=pdp10 762 vendor=dec 763 basic_os=tops10 764 ;; 765 decsystem20* | dec20*) 766 cpu=pdp10 767 vendor=dec 768 basic_os=tops20 769 ;; 770 delta | 3300 | delta-motorola | 3300-motorola | motorola-delta | motorola-3300) 771 cpu=m68k 772 vendor=motorola 773 ;; 774 # This used to be dpx2*, but that gets the RS6000-based 775 # DPX/20 and the x86-based DPX/2-100 wrong. See 776 # https://oldskool.silicium.org/stations/bull_dpx20.htm 777 # https://www.feb-patrimoine.com/english/bull_dpx2.htm 778 # https://www.feb-patrimoine.com/english/unix_and_bull.htm 779 dpx2 | dpx2[23]00 | dpx2[23]xx) 780 cpu=m68k 781 vendor=bull 782 ;; 783 dpx2100 | dpx21xx) 784 cpu=i386 785 vendor=bull 786 ;; 787 dpx20) 788 cpu=rs6000 789 vendor=bull 790 ;; 791 encore | umax | mmax) 792 cpu=ns32k 793 vendor=encore 794 ;; 795 elxsi) 796 cpu=elxsi 797 vendor=elxsi 798 basic_os=${basic_os:-bsd} 799 ;; 800 fx2800) 801 cpu=i860 802 vendor=alliant 803 ;; 804 genix) 805 cpu=ns32k 806 vendor=ns 807 ;; 808 h3050r* | hiux*) 809 cpu=hppa1.1 810 vendor=hitachi 811 basic_os=hiuxwe2 812 ;; 813 hp3k9[0-9][0-9] | hp9[0-9][0-9]) 814 cpu=hppa1.0 815 vendor=hp 816 ;; 817 hp9k2[0-9][0-9] | hp9k31[0-9]) 818 cpu=m68000 819 vendor=hp 820 ;; 821 hp9k3[2-9][0-9]) 822 cpu=m68k 823 vendor=hp 824 ;; 825 hp9k6[0-9][0-9] | hp6[0-9][0-9]) 826 cpu=hppa1.0 827 vendor=hp 828 ;; 829 hp9k7[0-79][0-9] | hp7[0-79][0-9]) 830 cpu=hppa1.1 831 vendor=hp 832 ;; 833 hp9k78[0-9] | hp78[0-9]) 834 # FIXME: really hppa2.0-hp 835 cpu=hppa1.1 836 vendor=hp 837 ;; 838 hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 839 # FIXME: really hppa2.0-hp 840 cpu=hppa1.1 841 vendor=hp 842 ;; 843 hp9k8[0-9][13679] | hp8[0-9][13679]) 844 cpu=hppa1.1 845 vendor=hp 846 ;; 847 hp9k8[0-9][0-9] | hp8[0-9][0-9]) 848 cpu=hppa1.0 849 vendor=hp 850 ;; 851 i*86v32) 852 cpu=`echo "$1" | sed -e 's/86.*/86/'` 853 vendor=pc 854 basic_os=sysv32 855 ;; 856 i*86v4*) 857 cpu=`echo "$1" | sed -e 's/86.*/86/'` 858 vendor=pc 859 basic_os=sysv4 860 ;; 861 i*86v) 862 cpu=`echo "$1" | sed -e 's/86.*/86/'` 863 vendor=pc 864 basic_os=sysv 865 ;; 866 i*86sol2) 867 cpu=`echo "$1" | sed -e 's/86.*/86/'` 868 vendor=pc 869 basic_os=solaris2 870 ;; 871 j90 | j90-cray) 872 cpu=j90 873 vendor=cray 874 basic_os=${basic_os:-unicos} 875 ;; 876 iris | iris4d) 877 cpu=mips 878 vendor=sgi 879 case $basic_os in 880 irix*) 881 ;; 882 *) 883 basic_os=irix4 884 ;; 885 esac 886 ;; 887 miniframe) 888 cpu=m68000 889 vendor=convergent 890 ;; 891 *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 892 cpu=m68k 893 vendor=atari 894 basic_os=mint 895 ;; 896 news-3600 | risc-news) 897 cpu=mips 898 vendor=sony 899 basic_os=newsos 900 ;; 901 next | m*-next) 902 cpu=m68k 903 vendor=next 904 ;; 905 np1) 906 cpu=np1 907 vendor=gould 908 ;; 909 op50n-* | op60c-*) 910 cpu=hppa1.1 911 vendor=oki 912 basic_os=proelf 913 ;; 914 pa-hitachi) 915 cpu=hppa1.1 916 vendor=hitachi 917 basic_os=hiuxwe2 918 ;; 919 pbd) 920 cpu=sparc 921 vendor=tti 922 ;; 923 pbb) 924 cpu=m68k 925 vendor=tti 926 ;; 927 pc532) 928 cpu=ns32k 929 vendor=pc532 930 ;; 931 pn) 932 cpu=pn 933 vendor=gould 934 ;; 935 power) 936 cpu=power 937 vendor=ibm 938 ;; 939 ps2) 940 cpu=i386 941 vendor=ibm 942 ;; 943 rm[46]00) 944 cpu=mips 945 vendor=siemens 946 ;; 947 rtpc | rtpc-*) 948 cpu=romp 949 vendor=ibm 950 ;; 951 sde) 952 cpu=mipsisa32 953 vendor=sde 954 basic_os=${basic_os:-elf} 955 ;; 956 simso-wrs) 957 cpu=sparclite 958 vendor=wrs 959 basic_os=vxworks 960 ;; 961 tower | tower-32) 962 cpu=m68k 963 vendor=ncr 964 ;; 965 vpp*|vx|vx-*) 966 cpu=f301 967 vendor=fujitsu 968 ;; 969 w65) 970 cpu=w65 971 vendor=wdc 972 ;; 973 w89k-*) 974 cpu=hppa1.1 975 vendor=winbond 976 basic_os=proelf 977 ;; 978 none) 979 cpu=none 980 vendor=none 981 ;; 982 leon|leon[3-9]) 983 cpu=sparc 984 vendor=$basic_machine 985 ;; 986 leon-*|leon[3-9]-*) 987 cpu=sparc 988 vendor=`echo "$basic_machine" | sed 's/-.*//'` 989 ;; 990 991 *-*) 992 saved_IFS=$IFS 993 IFS="-" read cpu vendor <<EOF 994$basic_machine 995EOF 996 IFS=$saved_IFS 997 ;; 998 # We use 'pc' rather than 'unknown' 999 # because (1) that's what they normally are, and 1000 # (2) the word "unknown" tends to confuse beginning users. 1001 i*86 | x86_64) 1002 cpu=$basic_machine 1003 vendor=pc 1004 ;; 1005 # These rules are duplicated from below for sake of the special case above; 1006 # i.e. things that normalized to x86 arches should also default to "pc" 1007 pc98) 1008 cpu=i386 1009 vendor=pc 1010 ;; 1011 x64 | amd64) 1012 cpu=x86_64 1013 vendor=pc 1014 ;; 1015 # Recognize the basic CPU types without company name. 1016 *) 1017 cpu=$basic_machine 1018 vendor=unknown 1019 ;; 1020esac 1021 1022unset -v basic_machine 1023 1024# Decode basic machines in the full and proper CPU-Company form. 1025case $cpu-$vendor in 1026 # Here we handle the default manufacturer of certain CPU types in canonical form. 1027 # It is in some cases the only manufacturer, in others, it is the most popular. 1028 c[12]-convex | c[12]-unknown | c3[248]-convex | c3[248]-unknown) 1029 vendor=convex 1030 basic_os=${basic_os:-bsd} 1031 ;; 1032 craynv-unknown) 1033 vendor=cray 1034 basic_os=${basic_os:-unicosmp} 1035 ;; 1036 c90-unknown | c90-cray) 1037 vendor=cray 1038 basic_os=${basic_os:-unicos} 1039 ;; 1040 fx80-unknown) 1041 vendor=alliant 1042 ;; 1043 romp-unknown) 1044 vendor=ibm 1045 ;; 1046 mmix-unknown) 1047 vendor=knuth 1048 ;; 1049 microblaze-unknown | microblazeel-unknown) 1050 vendor=xilinx 1051 ;; 1052 rs6000-unknown) 1053 vendor=ibm 1054 ;; 1055 vax-unknown) 1056 vendor=dec 1057 ;; 1058 pdp11-unknown) 1059 vendor=dec 1060 ;; 1061 we32k-unknown) 1062 vendor=att 1063 ;; 1064 cydra-unknown) 1065 vendor=cydrome 1066 ;; 1067 i370-ibm*) 1068 vendor=ibm 1069 ;; 1070 orion-unknown) 1071 vendor=highlevel 1072 ;; 1073 xps-unknown | xps100-unknown) 1074 cpu=xps100 1075 vendor=honeywell 1076 ;; 1077 1078 # Here we normalize CPU types with a missing or matching vendor 1079 armh-unknown | armh-alt) 1080 cpu=armv7l 1081 vendor=alt 1082 basic_os=${basic_os:-linux-gnueabihf} 1083 ;; 1084 1085 # Normalized CPU+vendor pairs that imply an OS, if not otherwise specified 1086 m68k-isi) 1087 basic_os=${basic_os:-sysv} 1088 ;; 1089 m68k-sony) 1090 basic_os=${basic_os:-newsos} 1091 ;; 1092 m68k-tektronix) 1093 basic_os=${basic_os:-bsd} 1094 ;; 1095 m88k-harris) 1096 basic_os=${basic_os:-sysv3} 1097 ;; 1098 i386-bull | m68k-bull) 1099 basic_os=${basic_os:-sysv3} 1100 ;; 1101 rs6000-bull) 1102 basic_os=${basic_os:-bosx} 1103 ;; 1104 mips-sni) 1105 basic_os=${basic_os:-sysv4} 1106 ;; 1107 1108 # Here we normalize CPU types irrespective of the vendor 1109 amd64-*) 1110 cpu=x86_64 1111 ;; 1112 blackfin-*) 1113 cpu=bfin 1114 basic_os=${basic_os:-linux} 1115 ;; 1116 c54x-*) 1117 cpu=tic54x 1118 ;; 1119 c55x-*) 1120 cpu=tic55x 1121 ;; 1122 c6x-*) 1123 cpu=tic6x 1124 ;; 1125 e500v[12]-*) 1126 cpu=powerpc 1127 basic_os=${basic_os}"spe" 1128 ;; 1129 mips3*-*) 1130 cpu=mips64 1131 ;; 1132 ms1-*) 1133 cpu=mt 1134 ;; 1135 m68knommu-*) 1136 cpu=m68k 1137 basic_os=${basic_os:-linux} 1138 ;; 1139 m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1140 cpu=s12z 1141 ;; 1142 openrisc-*) 1143 cpu=or32 1144 ;; 1145 parisc-*) 1146 cpu=hppa 1147 basic_os=${basic_os:-linux} 1148 ;; 1149 pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1150 cpu=i586 1151 ;; 1152 pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 1153 cpu=i686 1154 ;; 1155 pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1156 cpu=i686 1157 ;; 1158 pentium4-*) 1159 cpu=i786 1160 ;; 1161 ppc-* | ppcbe-*) 1162 cpu=powerpc 1163 ;; 1164 ppcle-* | powerpclittle-*) 1165 cpu=powerpcle 1166 ;; 1167 ppc64-*) 1168 cpu=powerpc64 1169 ;; 1170 ppc64le-* | powerpc64little-*) 1171 cpu=powerpc64le 1172 ;; 1173 sb1-*) 1174 cpu=mipsisa64sb1 1175 ;; 1176 sb1el-*) 1177 cpu=mipsisa64sb1el 1178 ;; 1179 sh5e[lb]-*) 1180 cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1181 ;; 1182 spur-*) 1183 cpu=spur 1184 ;; 1185 strongarm-* | thumb-*) 1186 cpu=arm 1187 ;; 1188 tx39-*) 1189 cpu=mipstx39 1190 ;; 1191 tx39el-*) 1192 cpu=mipstx39el 1193 ;; 1194 xscale-* | xscalee[bl]-*) 1195 cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1196 ;; 1197 arm64-* | aarch64le-*) 1198 cpu=aarch64 1199 ;; 1200 1201 # Recognize the canonical CPU Types that limit and/or modify the 1202 # company names they are paired with. 1203 cr16-*) 1204 basic_os=${basic_os:-elf} 1205 ;; 1206 crisv32-* | etraxfs*-*) 1207 cpu=crisv32 1208 vendor=axis 1209 ;; 1210 cris-* | etrax*-*) 1211 cpu=cris 1212 vendor=axis 1213 ;; 1214 crx-*) 1215 basic_os=${basic_os:-elf} 1216 ;; 1217 neo-tandem) 1218 cpu=neo 1219 vendor=tandem 1220 ;; 1221 nse-tandem) 1222 cpu=nse 1223 vendor=tandem 1224 ;; 1225 nsr-tandem) 1226 cpu=nsr 1227 vendor=tandem 1228 ;; 1229 nsv-tandem) 1230 cpu=nsv 1231 vendor=tandem 1232 ;; 1233 nsx-tandem) 1234 cpu=nsx 1235 vendor=tandem 1236 ;; 1237 mipsallegrexel-sony) 1238 cpu=mipsallegrexel 1239 vendor=sony 1240 ;; 1241 tile*-*) 1242 basic_os=${basic_os:-linux-gnu} 1243 ;; 1244 1245 *) 1246 # Recognize the canonical CPU types that are allowed with any 1247 # company name. 1248 case $cpu in 1249 1750a \ 1250 | 580 \ 1251 | [cjt]90 \ 1252 | a29k \ 1253 | aarch64 \ 1254 | aarch64_be \ 1255 | aarch64c \ 1256 | abacus \ 1257 | alpha \ 1258 | alpha64 \ 1259 | alpha64ev56 \ 1260 | alpha64ev6[78] \ 1261 | alpha64ev[4-8] \ 1262 | alpha64pca5[67] \ 1263 | alphaev56 \ 1264 | alphaev6[78] \ 1265 | alphaev[4-8] \ 1266 | alphapca5[67] \ 1267 | am33_2.0 \ 1268 | amdgcn \ 1269 | arc \ 1270 | arc32 \ 1271 | arc64 \ 1272 | arceb \ 1273 | arm \ 1274 | arm64e \ 1275 | arm64ec \ 1276 | arm[lb]e \ 1277 | arme[lb] \ 1278 | armv* \ 1279 | asmjs \ 1280 | avr \ 1281 | avr32 \ 1282 | ba \ 1283 | be32 \ 1284 | be64 \ 1285 | bfin \ 1286 | bpf \ 1287 | bs2000 \ 1288 | c30 \ 1289 | c4x \ 1290 | c8051 \ 1291 | c[123]* \ 1292 | clipper \ 1293 | craynv \ 1294 | csky \ 1295 | cydra \ 1296 | d10v \ 1297 | d30v \ 1298 | dlx \ 1299 | dsp16xx \ 1300 | e2k \ 1301 | elxsi \ 1302 | epiphany \ 1303 | f30[01] \ 1304 | f700 \ 1305 | fido \ 1306 | fr30 \ 1307 | frv \ 1308 | ft32 \ 1309 | fx80 \ 1310 | h8300 \ 1311 | h8500 \ 1312 | hexagon \ 1313 | hppa \ 1314 | hppa1.[01] \ 1315 | hppa2.0 \ 1316 | hppa2.0[nw] \ 1317 | hppa64 \ 1318 | i*86 \ 1319 | i370 \ 1320 | i860 \ 1321 | i960 \ 1322 | ia16 \ 1323 | ia64 \ 1324 | 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 1477 ;; 1478esac 1479 1480# Here we canonicalize certain aliases for manufacturers. 1481case $vendor in 1482 digital*) 1483 vendor=dec 1484 ;; 1485 commodore*) 1486 vendor=cbm 1487 ;; 1488 *) 1489 ;; 1490esac 1491 1492# Decode manufacturer-specific aliases for certain operating systems. 1493 1494if test x"$basic_os" != x 1495then 1496 1497# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 1498# set os. 1499obj= 1500case $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 1517EOF 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 ;; 1537esac 1538 1539# Now, normalize the OS (knowing we just have one component, it's not a kernel, 1540# etc.) 1541case $os in 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 1580 ;; 1581 # Some version numbers need modification 1582 chorusos*) 1583 os=chorusos 1584 ;; 1585 isc) 1586 os=isc2.2 1587 ;; 1588 sco6) 1589 os=sco5v6 1590 ;; 1591 sco5) 1592 os=sco3.2v5 1593 ;; 1594 sco4) 1595 os=sco3.2v4 1596 ;; 1597 sco3.2.[4-9]*) 1598 os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1599 ;; 1600 sco*v* | scout) 1601 # Don't match below 1602 ;; 1603 sco*) 1604 os=sco3.2v2 1605 ;; 1606 psos*) 1607 os=psos 1608 ;; 1609 qnx*) 1610 os=qnx 1611 ;; 1612 hiux*) 1613 os=hiuxwe2 1614 ;; 1615 lynx*178) 1616 os=lynxos178 1617 ;; 1618 lynx*5) 1619 os=lynxos5 1620 ;; 1621 lynxos*) 1622 # don't get caught up in next wildcard 1623 ;; 1624 lynx*) 1625 os=lynxos 1626 ;; 1627 mac[0-9]*) 1628 os=`echo "$os" | sed -e 's|mac|macos|'` 1629 ;; 1630 opened*) 1631 os=openedition 1632 ;; 1633 os400*) 1634 os=os400 1635 ;; 1636 sunos5*) 1637 os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1638 ;; 1639 sunos6*) 1640 os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1641 ;; 1642 wince*) 1643 os=wince 1644 ;; 1645 utek*) 1646 os=bsd 1647 vendor=`echo "$vendor" | sed -e 's|^unknown$|tektronix|'` 1648 ;; 1649 dynix*) 1650 os=bsd 1651 ;; 1652 acis*) 1653 os=aos 1654 ;; 1655 atheos*) 1656 os=atheos 1657 ;; 1658 syllable*) 1659 os=syllable 1660 ;; 1661 386bsd) 1662 os=bsd 1663 ;; 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 1674 ;; 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|'` 1679 ;; 1680 sinix*) 1681 os=sysv4 1682 vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'` 1683 ;; 1684 tpf*) 1685 os=tpf 1686 ;; 1687 triton*) 1688 os=sysv3 1689 ;; 1690 oss*) 1691 os=sysv3 1692 ;; 1693 svr4*) 1694 os=sysv4 1695 ;; 1696 svr3) 1697 os=sysv3 1698 ;; 1699 sysvr4) 1700 os=sysv4 1701 ;; 1702 ose*) 1703 os=ose 1704 ;; 1705 *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1706 os=mint 1707 ;; 1708 dicos*) 1709 os=dicos 1710 ;; 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 1724 ;; 1725 aout* | coff* | elf* | pe*) 1726 # These are machine code file formats, not OSes 1727 obj=$os 1728 os= 1729 ;; 1730 *) 1731 # No normalization, but not necessarily accepted, that comes below. 1732 ;; 1733esac 1734 1735else 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 1747kernel= 1748obj= 1749case $cpu-$vendor in 1750 score-*) 1751 os= 1752 obj=elf 1753 ;; 1754 spu-*) 1755 os= 1756 obj=elf 1757 ;; 1758 *-acorn) 1759 os=riscix1.2 1760 ;; 1761 arm*-rebel) 1762 kernel=linux 1763 os=gnu 1764 ;; 1765 arm*-semi) 1766 os= 1767 obj=aout 1768 ;; 1769 c4x-* | tic4x-*) 1770 os= 1771 obj=coff 1772 ;; 1773 c8051-*) 1774 os= 1775 obj=elf 1776 ;; 1777 clipper-intergraph) 1778 os=clix 1779 ;; 1780 hexagon-*) 1781 os= 1782 obj=elf 1783 ;; 1784 tic54x-*) 1785 os= 1786 obj=coff 1787 ;; 1788 tic55x-*) 1789 os= 1790 obj=coff 1791 ;; 1792 tic6x-*) 1793 os= 1794 obj=coff 1795 ;; 1796 # This must come before the *-dec entry. 1797 pdp10-*) 1798 os=tops20 1799 ;; 1800 pdp11-*) 1801 os=none 1802 ;; 1803 *-dec | vax-*) 1804 os=ultrix4.2 1805 ;; 1806 m68*-apollo) 1807 os=domain 1808 ;; 1809 i386-sun) 1810 os=sunos4.0.2 1811 ;; 1812 m68000-sun) 1813 os=sunos3 1814 ;; 1815 m68*-cisco) 1816 os= 1817 obj=aout 1818 ;; 1819 mep-*) 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 1830 ;; 1831 mips*-cisco) 1832 os= 1833 obj=elf 1834 ;; 1835 mips*-*|nanomips*-*) 1836 os= 1837 obj=elf 1838 ;; 1839 or32-*) 1840 os= 1841 obj=coff 1842 ;; 1843 # This must be before the sparc-* entry or we get the wrong os. 1844 *-tti) 1845 os=sysv3 1846 ;; 1847 sparc-* | *-sun) 1848 os=sunos4.1.1 1849 ;; 1850 pru-*) 1851 os= 1852 obj=elf 1853 ;; 1854 *-be) 1855 os=beos 1856 ;; 1857 *-ibm) 1858 os=aix 1859 ;; 1860 *-knuth) 1861 os=mmixware 1862 ;; 1863 *-wec) 1864 os=proelf 1865 ;; 1866 *-winbond) 1867 os=proelf 1868 ;; 1869 *-oki) 1870 os=proelf 1871 ;; 1872 *-hp) 1873 os=hpux 1874 ;; 1875 *-hitachi) 1876 os=hiuxwe2 1877 ;; 1878 i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1879 os=sysv 1880 ;; 1881 *-cbm) 1882 os=amigaos 1883 ;; 1884 *-dg) 1885 os=dgux 1886 ;; 1887 *-dolphin) 1888 os=sysv3 1889 ;; 1890 m68k-ccur) 1891 os=rtu 1892 ;; 1893 m88k-omron*) 1894 os=luna 1895 ;; 1896 *-next) 1897 os=nextstep 1898 ;; 1899 *-sequent) 1900 os=ptx 1901 ;; 1902 *-crds) 1903 os=unos 1904 ;; 1905 *-ns) 1906 os=genix 1907 ;; 1908 i370-*) 1909 os=mvs 1910 ;; 1911 *-gould) 1912 os=sysv 1913 ;; 1914 *-highlevel) 1915 os=bsd 1916 ;; 1917 *-encore) 1918 os=bsd 1919 ;; 1920 *-masscomp) 1921 os=rtu 1922 ;; 1923 f30[01]-fujitsu | f700-fujitsu) 1924 os=uxpv 1925 ;; 1926 *-rom68k) 1927 os= 1928 obj=coff 1929 ;; 1930 *-*bug) 1931 os= 1932 obj=coff 1933 ;; 1934 *-apple) 1935 os=macos 1936 ;; 1937 *-atari*) 1938 os=mint 1939 ;; 1940 *-wrs) 1941 os=vxworks 1942 ;; 1943 *) 1944 os=none 1945 ;; 1946esac 1947 1948fi 1949 1950# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ). 1951 1952case $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 ;; 2180esac 2181 2182case $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 ;; 2192esac 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. 2196case $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 ;; 2206esac 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. 2210case $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 ;; 2266esac 2267 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. 2270case $vendor in 2271 unknown) 2272 case $cpu-$os in 2273 *-riscix*) 2274 vendor=acorn 2275 ;; 2276 *-sunos* | *-solaris*) 2277 vendor=sun 2278 ;; 2279 *-cnk* | *-aix*) 2280 vendor=ibm 2281 ;; 2282 *-beos*) 2283 vendor=be 2284 ;; 2285 *-hpux*) 2286 vendor=hp 2287 ;; 2288 *-mpeix*) 2289 vendor=hp 2290 ;; 2291 *-hiux*) 2292 vendor=hitachi 2293 ;; 2294 *-unos*) 2295 vendor=crds 2296 ;; 2297 *-dgux*) 2298 vendor=dg 2299 ;; 2300 *-luna*) 2301 vendor=omron 2302 ;; 2303 *-genix*) 2304 vendor=ns 2305 ;; 2306 *-clix*) 2307 vendor=intergraph 2308 ;; 2309 *-mvs* | *-opened*) 2310 vendor=ibm 2311 ;; 2312 *-os400*) 2313 vendor=ibm 2314 ;; 2315 s390-* | s390x-*) 2316 vendor=ibm 2317 ;; 2318 *-ptx*) 2319 vendor=sequent 2320 ;; 2321 *-tpf*) 2322 vendor=ibm 2323 ;; 2324 *-vxsim* | *-vxworks* | *-windiss*) 2325 vendor=wrs 2326 ;; 2327 *-aux*) 2328 vendor=apple 2329 ;; 2330 *-hms*) 2331 vendor=hitachi 2332 ;; 2333 *-mpw* | *-macos*) 2334 vendor=apple 2335 ;; 2336 *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 2337 vendor=atari 2338 ;; 2339 *-vos*) 2340 vendor=stratus 2341 ;; 2342 esac 2343 ;; 2344esac 2345 2346echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" 2347exit 2348 2349# Local variables: 2350# eval: (add-hook 'before-save-hook 'time-stamp) 2351# time-stamp-start: "timestamp='" 2352# time-stamp-format: "%:y-%02m-%02d" 2353# time-stamp-end: "'" 2354# End: 2355