config.sub raw

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