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