/ autosetup / autosetup-config.sub
autosetup-config.sub
   1  #! /bin/sh
   2  # Configuration validation subroutine script.
   3  #   Copyright 1992-2024 Free Software Foundation, Inc.
   4  
   5  # shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale
   6  
   7  timestamp='2024-05-27'
   8  
   9  # This file is free software; you can redistribute it and/or modify it
  10  # under the terms of the GNU General Public License as published by
  11  # the Free Software Foundation, either version 3 of the License, or
  12  # (at your option) any later version.
  13  #
  14  # This program is distributed in the hope that it will be useful, but
  15  # WITHOUT ANY WARRANTY; without even the implied warranty of
  16  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  17  # General Public License for more details.
  18  #
  19  # You should have received a copy of the GNU General Public License
  20  # along with this program; if not, see <https://www.gnu.org/licenses/>.
  21  #
  22  # As a special exception to the GNU General Public License, if you
  23  # distribute this file as part of a program that contains a
  24  # configuration script generated by Autoconf, you may include it under
  25  # the same distribution terms that you use for the rest of that
  26  # program.  This Exception is an additional permission under section 7
  27  # of the GNU General Public License, version 3 ("GPLv3").
  28  
  29  
  30  # Please send patches to <config-patches@gnu.org>.
  31  #
  32  # Configuration subroutine to validate and canonicalize a configuration type.
  33  # Supply the specified configuration type as an argument.
  34  # If it is invalid, we print an error message on stderr and exit with code 1.
  35  # Otherwise, we print the canonical config type on stdout and succeed.
  36  
  37  # You can get the latest version of this script from:
  38  # https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
  39  
  40  # This file is supposed to be the same for all GNU packages
  41  # and recognize all the CPU types, system types and aliases
  42  # that are meaningful with *any* GNU software.
  43  # Each package is responsible for reporting which valid configurations
  44  # it does not support.  The user should be able to distinguish
  45  # a failure to support a valid configuration from a meaningless
  46  # configuration.
  47  
  48  # The goal of this file is to map all the various variations of a given
  49  # machine specification into a single specification in the form:
  50  #	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
  51  # or in some cases, the newer four-part form:
  52  #	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
  53  # It is wrong to echo any other type of specification.
  54  
  55  # The "shellcheck disable" line above the timestamp inhibits complaints
  56  # about features and limitations of the classic Bourne shell that were
  57  # superseded or lifted in POSIX.  However, this script identifies a wide
  58  # variety of pre-POSIX systems that do not have POSIX shells at all, and
  59  # even some reasonably current systems (Solaris 10 as case-in-point) still
  60  # have a pre-POSIX /bin/sh.
  61  
  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-2024 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  			| linux-* \
 149  			| managarm-* \
 150  			| netbsd*-eabi* \
 151  			| netbsd*-gnu* \
 152  			| nto-qnx* \
 153  			| os2-emx* \
 154  			| rtmk-nova* \
 155  			| storm-chaos* \
 156  			| uclinux-gnu* \
 157  			| uclinux-uclibc* \
 158  			| windows-* )
 159  				basic_machine=$field1
 160  				basic_os=$maybe_os
 161  				;;
 162  			android-linux)
 163  				basic_machine=$field1-unknown
 164  				basic_os=linux-android
 165  				;;
 166  			*)
 167  				basic_machine=$field1-$field2
 168  				basic_os=$field3
 169  				;;
 170  		esac
 171  		;;
 172  	*-*)
 173  		case $field1-$field2 in
 174  			# Shorthands that happen to contain a single dash
 175  			convex-c[12] | convex-c3[248])
 176  				basic_machine=$field2-convex
 177  				basic_os=
 178  				;;
 179  			decstation-3100)
 180  				basic_machine=mips-dec
 181  				basic_os=
 182  				;;
 183  			*-*)
 184  				# Second component is usually, but not always the OS
 185  				case $field2 in
 186  					# Do not treat sunos as a manufacturer
 187  					sun*os*)
 188  						basic_machine=$field1
 189  						basic_os=$field2
 190  						;;
 191  					# Manufacturers
 192  					  3100* \
 193  					| 32* \
 194  					| 3300* \
 195  					| 3600* \
 196  					| 7300* \
 197  					| acorn \
 198  					| altos* \
 199  					| apollo \
 200  					| apple \
 201  					| atari \
 202  					| att* \
 203  					| axis \
 204  					| be \
 205  					| bull \
 206  					| cbm \
 207  					| ccur \
 208  					| cisco \
 209  					| commodore \
 210  					| convergent* \
 211  					| convex* \
 212  					| cray \
 213  					| crds \
 214  					| dec* \
 215  					| delta* \
 216  					| dg \
 217  					| digital \
 218  					| dolphin \
 219  					| encore* \
 220  					| gould \
 221  					| harris \
 222  					| highlevel \
 223  					| hitachi* \
 224  					| hp \
 225  					| ibm* \
 226  					| intergraph \
 227  					| isi* \
 228  					| knuth \
 229  					| masscomp \
 230  					| microblaze* \
 231  					| mips* \
 232  					| motorola* \
 233  					| ncr* \
 234  					| news \
 235  					| next \
 236  					| ns \
 237  					| oki \
 238  					| omron* \
 239  					| pc533* \
 240  					| rebel \
 241  					| rom68k \
 242  					| rombug \
 243  					| semi \
 244  					| sequent* \
 245  					| siemens \
 246  					| sgi* \
 247  					| siemens \
 248  					| sim \
 249  					| sni \
 250  					| sony* \
 251  					| stratus \
 252  					| sun \
 253  					| sun[234]* \
 254  					| tektronix \
 255  					| tti* \
 256  					| ultra \
 257  					| unicom* \
 258  					| wec \
 259  					| winbond \
 260  					| wrs)
 261  						basic_machine=$field1-$field2
 262  						basic_os=
 263  						;;
 264  					zephyr*)
 265  						basic_machine=$field1-unknown
 266  						basic_os=$field2
 267  						;;
 268  					*)
 269  						basic_machine=$field1
 270  						basic_os=$field2
 271  						;;
 272  				esac
 273  			;;
 274  		esac
 275  		;;
 276  	*)
 277  		# Convert single-component short-hands not valid as part of
 278  		# multi-component configurations.
 279  		case $field1 in
 280  			386bsd)
 281  				basic_machine=i386-pc
 282  				basic_os=bsd
 283  				;;
 284  			a29khif)
 285  				basic_machine=a29k-amd
 286  				basic_os=udi
 287  				;;
 288  			adobe68k)
 289  				basic_machine=m68010-adobe
 290  				basic_os=scout
 291  				;;
 292  			alliant)
 293  				basic_machine=fx80-alliant
 294  				basic_os=
 295  				;;
 296  			altos | altos3068)
 297  				basic_machine=m68k-altos
 298  				basic_os=
 299  				;;
 300  			am29k)
 301  				basic_machine=a29k-none
 302  				basic_os=bsd
 303  				;;
 304  			amdahl)
 305  				basic_machine=580-amdahl
 306  				basic_os=sysv
 307  				;;
 308  			amiga)
 309  				basic_machine=m68k-unknown
 310  				basic_os=
 311  				;;
 312  			amigaos | amigados)
 313  				basic_machine=m68k-unknown
 314  				basic_os=amigaos
 315  				;;
 316  			amigaunix | amix)
 317  				basic_machine=m68k-unknown
 318  				basic_os=sysv4
 319  				;;
 320  			apollo68)
 321  				basic_machine=m68k-apollo
 322  				basic_os=sysv
 323  				;;
 324  			apollo68bsd)
 325  				basic_machine=m68k-apollo
 326  				basic_os=bsd
 327  				;;
 328  			aros)
 329  				basic_machine=i386-pc
 330  				basic_os=aros
 331  				;;
 332  			aux)
 333  				basic_machine=m68k-apple
 334  				basic_os=aux
 335  				;;
 336  			balance)
 337  				basic_machine=ns32k-sequent
 338  				basic_os=dynix
 339  				;;
 340  			blackfin)
 341  				basic_machine=bfin-unknown
 342  				basic_os=linux
 343  				;;
 344  			cegcc)
 345  				basic_machine=arm-unknown
 346  				basic_os=cegcc
 347  				;;
 348  			cray)
 349  				basic_machine=j90-cray
 350  				basic_os=unicos
 351  				;;
 352  			crds | unos)
 353  				basic_machine=m68k-crds
 354  				basic_os=
 355  				;;
 356  			da30)
 357  				basic_machine=m68k-da30
 358  				basic_os=
 359  				;;
 360  			decstation | pmax | pmin | dec3100 | decstatn)
 361  				basic_machine=mips-dec
 362  				basic_os=
 363  				;;
 364  			delta88)
 365  				basic_machine=m88k-motorola
 366  				basic_os=sysv3
 367  				;;
 368  			dicos)
 369  				basic_machine=i686-pc
 370  				basic_os=dicos
 371  				;;
 372  			djgpp)
 373  				basic_machine=i586-pc
 374  				basic_os=msdosdjgpp
 375  				;;
 376  			ebmon29k)
 377  				basic_machine=a29k-amd
 378  				basic_os=ebmon
 379  				;;
 380  			es1800 | OSE68k | ose68k | ose | OSE)
 381  				basic_machine=m68k-ericsson
 382  				basic_os=ose
 383  				;;
 384  			gmicro)
 385  				basic_machine=tron-gmicro
 386  				basic_os=sysv
 387  				;;
 388  			go32)
 389  				basic_machine=i386-pc
 390  				basic_os=go32
 391  				;;
 392  			h8300hms)
 393  				basic_machine=h8300-hitachi
 394  				basic_os=hms
 395  				;;
 396  			h8300xray)
 397  				basic_machine=h8300-hitachi
 398  				basic_os=xray
 399  				;;
 400  			h8500hms)
 401  				basic_machine=h8500-hitachi
 402  				basic_os=hms
 403  				;;
 404  			harris)
 405  				basic_machine=m88k-harris
 406  				basic_os=sysv3
 407  				;;
 408  			hp300 | hp300hpux)
 409  				basic_machine=m68k-hp
 410  				basic_os=hpux
 411  				;;
 412  			hp300bsd)
 413  				basic_machine=m68k-hp
 414  				basic_os=bsd
 415  				;;
 416  			hppaosf)
 417  				basic_machine=hppa1.1-hp
 418  				basic_os=osf
 419  				;;
 420  			hppro)
 421  				basic_machine=hppa1.1-hp
 422  				basic_os=proelf
 423  				;;
 424  			i386mach)
 425  				basic_machine=i386-mach
 426  				basic_os=mach
 427  				;;
 428  			isi68 | isi)
 429  				basic_machine=m68k-isi
 430  				basic_os=sysv
 431  				;;
 432  			m68knommu)
 433  				basic_machine=m68k-unknown
 434  				basic_os=linux
 435  				;;
 436  			magnum | m3230)
 437  				basic_machine=mips-mips
 438  				basic_os=sysv
 439  				;;
 440  			merlin)
 441  				basic_machine=ns32k-utek
 442  				basic_os=sysv
 443  				;;
 444  			mingw64)
 445  				basic_machine=x86_64-pc
 446  				basic_os=mingw64
 447  				;;
 448  			mingw32)
 449  				basic_machine=i686-pc
 450  				basic_os=mingw32
 451  				;;
 452  			mingw32ce)
 453  				basic_machine=arm-unknown
 454  				basic_os=mingw32ce
 455  				;;
 456  			monitor)
 457  				basic_machine=m68k-rom68k
 458  				basic_os=coff
 459  				;;
 460  			morphos)
 461  				basic_machine=powerpc-unknown
 462  				basic_os=morphos
 463  				;;
 464  			moxiebox)
 465  				basic_machine=moxie-unknown
 466  				basic_os=moxiebox
 467  				;;
 468  			msdos)
 469  				basic_machine=i386-pc
 470  				basic_os=msdos
 471  				;;
 472  			msys)
 473  				basic_machine=i686-pc
 474  				basic_os=msys
 475  				;;
 476  			mvs)
 477  				basic_machine=i370-ibm
 478  				basic_os=mvs
 479  				;;
 480  			nacl)
 481  				basic_machine=le32-unknown
 482  				basic_os=nacl
 483  				;;
 484  			ncr3000)
 485  				basic_machine=i486-ncr
 486  				basic_os=sysv4
 487  				;;
 488  			netbsd386)
 489  				basic_machine=i386-pc
 490  				basic_os=netbsd
 491  				;;
 492  			netwinder)
 493  				basic_machine=armv4l-rebel
 494  				basic_os=linux
 495  				;;
 496  			news | news700 | news800 | news900)
 497  				basic_machine=m68k-sony
 498  				basic_os=newsos
 499  				;;
 500  			news1000)
 501  				basic_machine=m68030-sony
 502  				basic_os=newsos
 503  				;;
 504  			necv70)
 505  				basic_machine=v70-nec
 506  				basic_os=sysv
 507  				;;
 508  			nh3000)
 509  				basic_machine=m68k-harris
 510  				basic_os=cxux
 511  				;;
 512  			nh[45]000)
 513  				basic_machine=m88k-harris
 514  				basic_os=cxux
 515  				;;
 516  			nindy960)
 517  				basic_machine=i960-intel
 518  				basic_os=nindy
 519  				;;
 520  			mon960)
 521  				basic_machine=i960-intel
 522  				basic_os=mon960
 523  				;;
 524  			nonstopux)
 525  				basic_machine=mips-compaq
 526  				basic_os=nonstopux
 527  				;;
 528  			os400)
 529  				basic_machine=powerpc-ibm
 530  				basic_os=os400
 531  				;;
 532  			OSE68000 | ose68000)
 533  				basic_machine=m68000-ericsson
 534  				basic_os=ose
 535  				;;
 536  			os68k)
 537  				basic_machine=m68k-none
 538  				basic_os=os68k
 539  				;;
 540  			paragon)
 541  				basic_machine=i860-intel
 542  				basic_os=osf
 543  				;;
 544  			parisc)
 545  				basic_machine=hppa-unknown
 546  				basic_os=linux
 547  				;;
 548  			psp)
 549  				basic_machine=mipsallegrexel-sony
 550  				basic_os=psp
 551  				;;
 552  			pw32)
 553  				basic_machine=i586-unknown
 554  				basic_os=pw32
 555  				;;
 556  			rdos | rdos64)
 557  				basic_machine=x86_64-pc
 558  				basic_os=rdos
 559  				;;
 560  			rdos32)
 561  				basic_machine=i386-pc
 562  				basic_os=rdos
 563  				;;
 564  			rom68k)
 565  				basic_machine=m68k-rom68k
 566  				basic_os=coff
 567  				;;
 568  			sa29200)
 569  				basic_machine=a29k-amd
 570  				basic_os=udi
 571  				;;
 572  			sei)
 573  				basic_machine=mips-sei
 574  				basic_os=seiux
 575  				;;
 576  			sequent)
 577  				basic_machine=i386-sequent
 578  				basic_os=
 579  				;;
 580  			sps7)
 581  				basic_machine=m68k-bull
 582  				basic_os=sysv2
 583  				;;
 584  			st2000)
 585  				basic_machine=m68k-tandem
 586  				basic_os=
 587  				;;
 588  			stratus)
 589  				basic_machine=i860-stratus
 590  				basic_os=sysv4
 591  				;;
 592  			sun2)
 593  				basic_machine=m68000-sun
 594  				basic_os=
 595  				;;
 596  			sun2os3)
 597  				basic_machine=m68000-sun
 598  				basic_os=sunos3
 599  				;;
 600  			sun2os4)
 601  				basic_machine=m68000-sun
 602  				basic_os=sunos4
 603  				;;
 604  			sun3)
 605  				basic_machine=m68k-sun
 606  				basic_os=
 607  				;;
 608  			sun3os3)
 609  				basic_machine=m68k-sun
 610  				basic_os=sunos3
 611  				;;
 612  			sun3os4)
 613  				basic_machine=m68k-sun
 614  				basic_os=sunos4
 615  				;;
 616  			sun4)
 617  				basic_machine=sparc-sun
 618  				basic_os=
 619  				;;
 620  			sun4os3)
 621  				basic_machine=sparc-sun
 622  				basic_os=sunos3
 623  				;;
 624  			sun4os4)
 625  				basic_machine=sparc-sun
 626  				basic_os=sunos4
 627  				;;
 628  			sun4sol2)
 629  				basic_machine=sparc-sun
 630  				basic_os=solaris2
 631  				;;
 632  			sun386 | sun386i | roadrunner)
 633  				basic_machine=i386-sun
 634  				basic_os=
 635  				;;
 636  			sv1)
 637  				basic_machine=sv1-cray
 638  				basic_os=unicos
 639  				;;
 640  			symmetry)
 641  				basic_machine=i386-sequent
 642  				basic_os=dynix
 643  				;;
 644  			t3e)
 645  				basic_machine=alphaev5-cray
 646  				basic_os=unicos
 647  				;;
 648  			t90)
 649  				basic_machine=t90-cray
 650  				basic_os=unicos
 651  				;;
 652  			toad1)
 653  				basic_machine=pdp10-xkl
 654  				basic_os=tops20
 655  				;;
 656  			tpf)
 657  				basic_machine=s390x-ibm
 658  				basic_os=tpf
 659  				;;
 660  			udi29k)
 661  				basic_machine=a29k-amd
 662  				basic_os=udi
 663  				;;
 664  			ultra3)
 665  				basic_machine=a29k-nyu
 666  				basic_os=sym1
 667  				;;
 668  			v810 | necv810)
 669  				basic_machine=v810-nec
 670  				basic_os=none
 671  				;;
 672  			vaxv)
 673  				basic_machine=vax-dec
 674  				basic_os=sysv
 675  				;;
 676  			vms)
 677  				basic_machine=vax-dec
 678  				basic_os=vms
 679  				;;
 680  			vsta)
 681  				basic_machine=i386-pc
 682  				basic_os=vsta
 683  				;;
 684  			vxworks960)
 685  				basic_machine=i960-wrs
 686  				basic_os=vxworks
 687  				;;
 688  			vxworks68)
 689  				basic_machine=m68k-wrs
 690  				basic_os=vxworks
 691  				;;
 692  			vxworks29k)
 693  				basic_machine=a29k-wrs
 694  				basic_os=vxworks
 695  				;;
 696  			xbox)
 697  				basic_machine=i686-pc
 698  				basic_os=mingw32
 699  				;;
 700  			ymp)
 701  				basic_machine=ymp-cray
 702  				basic_os=unicos
 703  				;;
 704  			*)
 705  				basic_machine=$1
 706  				basic_os=
 707  				;;
 708  		esac
 709  		;;
 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-*)
1198  		cpu=aarch64
1199  		;;
1200  
1201  	# Recognize the canonical CPU Types that limit and/or modify the
1202  	# company names they are paired with.
1203  	cr16-*)
1204  		basic_os=${basic_os:-elf}
1205  		;;
1206  	crisv32-* | etraxfs*-*)
1207  		cpu=crisv32
1208  		vendor=axis
1209  		;;
1210  	cris-* | etrax*-*)
1211  		cpu=cris
1212  		vendor=axis
1213  		;;
1214  	crx-*)
1215  		basic_os=${basic_os:-elf}
1216  		;;
1217  	neo-tandem)
1218  		cpu=neo
1219  		vendor=tandem
1220  		;;
1221  	nse-tandem)
1222  		cpu=nse
1223  		vendor=tandem
1224  		;;
1225  	nsr-tandem)
1226  		cpu=nsr
1227  		vendor=tandem
1228  		;;
1229  	nsv-tandem)
1230  		cpu=nsv
1231  		vendor=tandem
1232  		;;
1233  	nsx-tandem)
1234  		cpu=nsx
1235  		vendor=tandem
1236  		;;
1237  	mipsallegrexel-sony)
1238  		cpu=mipsallegrexel
1239  		vendor=sony
1240  		;;
1241  	tile*-*)
1242  		basic_os=${basic_os:-linux-gnu}
1243  		;;
1244  
1245  	*)
1246  		# Recognize the canonical CPU types that are allowed with any
1247  		# company name.
1248  		case $cpu in
1249  			  1750a \
1250  			| 580 \
1251  			| [cjt]90 \
1252  			| a29k \
1253  			| aarch64 \
1254  			| aarch64_be \
1255  			| aarch64c \
1256  			| abacus \
1257  			| alpha \
1258  			| alpha64 \
1259  			| alpha64ev56 \
1260  			| alpha64ev6[78] \
1261  			| alpha64ev[4-8] \
1262  			| alpha64pca5[67] \
1263  			| alphaev56 \
1264  			| alphaev6[78] \
1265  			| alphaev[4-8] \
1266  			| alphapca5[67] \
1267  			| am33_2.0 \
1268  			| amdgcn \
1269  			| arc \
1270  			| arc32 \
1271  			| arc64 \
1272  			| arceb \
1273  			| arm \
1274  			| arm64e \
1275  			| arm64ec \
1276  			| arm[lb]e \
1277  			| arme[lb] \
1278  			| armv* \
1279  			| asmjs \
1280  			| avr \
1281  			| avr32 \
1282  			| ba \
1283  			| be32 \
1284  			| be64 \
1285  			| bfin \
1286  			| bpf \
1287  			| bs2000 \
1288  			| c30 \
1289  			| c4x \
1290  			| c8051 \
1291  			| c[123]* \
1292  			| clipper \
1293  			| craynv \
1294  			| csky \
1295  			| cydra \
1296  			| d10v \
1297  			| d30v \
1298  			| dlx \
1299  			| dsp16xx \
1300  			| e2k \
1301  			| elxsi \
1302  			| epiphany \
1303  			| f30[01] \
1304  			| f700 \
1305  			| fido \
1306  			| fr30 \
1307  			| frv \
1308  			| ft32 \
1309  			| fx80 \
1310  			| h8300 \
1311  			| h8500 \
1312  			| hexagon \
1313  			| hppa \
1314  			| hppa1.[01] \
1315  			| hppa2.0 \
1316  			| hppa2.0[nw] \
1317  			| hppa64 \
1318  			| i*86 \
1319  			| i370 \
1320  			| i860 \
1321  			| i960 \
1322  			| ia16 \
1323  			| ia64 \
1324  			| ip2k \
1325  			| iq2000 \
1326  			| javascript \
1327  			| k1om \
1328  			| kvx \
1329  			| le32 \
1330  			| le64 \
1331  			| lm32 \
1332  			| loongarch32 \
1333  			| loongarch64 \
1334  			| m32c \
1335  			| m32r \
1336  			| m32rle \
1337  			| m5200 \
1338  			| m68000 \
1339  			| m680[012346]0 \
1340  			| m6811 \
1341  			| m6812 \
1342  			| m68360 \
1343  			| m683?2 \
1344  			| m68hc11 \
1345  			| m68hc12 \
1346  			| m68hcs12x \
1347  			| m68k \
1348  			| m88110 \
1349  			| m88k \
1350  			| maxq \
1351  			| mb \
1352  			| mcore \
1353  			| mep \
1354  			| metag \
1355  			| microblaze \
1356  			| microblazeel \
1357  			| mips* \
1358  			| mmix \
1359  			| mn10200 \
1360  			| mn10300 \
1361  			| moxie \
1362  			| msp430 \
1363  			| mt \
1364  			| nanomips* \
1365  			| nds32 \
1366  			| nds32be \
1367  			| nds32le \
1368  			| nfp \
1369  			| nios \
1370  			| nios2 \
1371  			| nios2eb \
1372  			| nios2el \
1373  			| none \
1374  			| np1 \
1375  			| ns16k \
1376  			| ns32k \
1377  			| nvptx \
1378  			| open8 \
1379  			| or1k* \
1380  			| or32 \
1381  			| orion \
1382  			| pdp10 \
1383  			| pdp11 \
1384  			| picochip \
1385  			| pj \
1386  			| pjl \
1387  			| pn \
1388  			| power \
1389  			| powerpc \
1390  			| powerpc64 \
1391  			| powerpc64le \
1392  			| powerpcle \
1393  			| powerpcspe \
1394  			| pru \
1395  			| pyramid \
1396  			| riscv \
1397  			| riscv32 \
1398  			| riscv32be \
1399  			| riscv64 \
1400  			| riscv64be \
1401  			| rl78 \
1402  			| romp \
1403  			| rs6000 \
1404  			| rx \
1405  			| s390 \
1406  			| s390x \
1407  			| score \
1408  			| sh \
1409  			| sh64 \
1410  			| sh64le \
1411  			| sh[12345][lb]e \
1412  			| sh[1234] \
1413  			| sh[1234]e[lb] \
1414  			| sh[23]e \
1415  			| sh[23]ele \
1416  			| sh[24]a \
1417  			| sh[24]ae[lb] \
1418  			| sh[lb]e \
1419  			| she[lb] \
1420  			| shl \
1421  			| sparc \
1422  			| sparc64 \
1423  			| sparc64b \
1424  			| sparc64v \
1425  			| sparc86x \
1426  			| sparclet \
1427  			| sparclite \
1428  			| sparcv8 \
1429  			| sparcv9 \
1430  			| sparcv9b \
1431  			| sparcv9v \
1432  			| spu \
1433  			| sv1 \
1434  			| sx* \
1435  			| tahoe \
1436  			| thumbv7* \
1437  			| tic30 \
1438  			| tic4x \
1439  			| tic54x \
1440  			| tic55x \
1441  			| tic6x \
1442  			| tic80 \
1443  			| tron \
1444  			| ubicom32 \
1445  			| v70 \
1446  			| v810 \
1447  			| v850 \
1448  			| v850e \
1449  			| v850e1 \
1450  			| v850e2 \
1451  			| v850e2v3 \
1452  			| v850es \
1453  			| vax \
1454  			| vc4 \
1455  			| visium \
1456  			| w65 \
1457  			| wasm32 \
1458  			| wasm64 \
1459  			| we32k \
1460  			| x86 \
1461  			| x86_64 \
1462  			| xc16x \
1463  			| xgate \
1464  			| xps100 \
1465  			| xstormy16 \
1466  			| xtensa* \
1467  			| ymp \
1468  			| z80 \
1469  			| z8k)
1470  				;;
1471  
1472  			*)
1473  				echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
1474  				exit 1
1475  				;;
1476  		esac
1477  		;;
1478  esac
1479  
1480  # Here we canonicalize certain aliases for manufacturers.
1481  case $vendor in
1482  	digital*)
1483  		vendor=dec
1484  		;;
1485  	commodore*)
1486  		vendor=cbm
1487  		;;
1488  	*)
1489  		;;
1490  esac
1491  
1492  # Decode manufacturer-specific aliases for certain operating systems.
1493  
1494  if test x"$basic_os" != x
1495  then
1496  
1497  # First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
1498  # set os.
1499  obj=
1500  case $basic_os in
1501  	gnu/linux*)
1502  		kernel=linux
1503  		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
1504  		;;
1505  	os2-emx)
1506  		kernel=os2
1507  		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
1508  		;;
1509  	nto-qnx*)
1510  		kernel=nto
1511  		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
1512  		;;
1513  	*-*)
1514  		saved_IFS=$IFS
1515  		IFS="-" read kernel os <<EOF
1516  $basic_os
1517  EOF
1518  		IFS=$saved_IFS
1519  		;;
1520  	# Default OS when just kernel was specified
1521  	nto*)
1522  		kernel=nto
1523  		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
1524  		;;
1525  	linux*)
1526  		kernel=linux
1527  		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
1528  		;;
1529  	managarm*)
1530  		kernel=managarm
1531  		os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
1532  		;;
1533  	*)
1534  		kernel=
1535  		os=$basic_os
1536  		;;
1537  esac
1538  
1539  # Now, normalize the OS (knowing we just have one component, it's not a kernel,
1540  # etc.)
1541  case $os in
1542  	# First match some system type aliases that might get confused
1543  	# with valid system types.
1544  	# solaris* is a basic system type, with this one exception.
1545  	auroraux)
1546  		os=auroraux
1547  		;;
1548  	bluegene*)
1549  		os=cnk
1550  		;;
1551  	solaris1 | solaris1.*)
1552  		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
1553  		;;
1554  	solaris)
1555  		os=solaris2
1556  		;;
1557  	unixware*)
1558  		os=sysv4.2uw
1559  		;;
1560  	# The marketing names for NeXT's operating systems were
1561  	# NeXTSTEP, NeXTSTEP 2, OpenSTEP 3, OpenSTEP 4.  'openstep' is
1562  	# mapped to 'openstep3', but 'openstep1' and 'openstep2' are
1563  	# mapped to 'nextstep' and 'nextstep2', consistent with the
1564  	# treatment of SunOS/Solaris.
1565  	ns | ns1 | nextstep | nextstep1 | openstep1)
1566  		os=nextstep
1567  		;;
1568  	ns2 | nextstep2 | openstep2)
1569  		os=nextstep2
1570  		;;
1571  	ns3 | nextstep3 | openstep | openstep3)
1572  		os=openstep3
1573  		;;
1574  	ns4 | nextstep4 | openstep4)
1575  		os=openstep4
1576  		;;
1577  	# es1800 is here to avoid being matched by es* (a different OS)
1578  	es1800*)
1579  		os=ose
1580  		;;
1581  	# Some version numbers need modification
1582  	chorusos*)
1583  		os=chorusos
1584  		;;
1585  	isc)
1586  		os=isc2.2
1587  		;;
1588  	sco6)
1589  		os=sco5v6
1590  		;;
1591  	sco5)
1592  		os=sco3.2v5
1593  		;;
1594  	sco4)
1595  		os=sco3.2v4
1596  		;;
1597  	sco3.2.[4-9]*)
1598  		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
1599  		;;
1600  	sco*v* | scout)
1601  		# Don't match below
1602  		;;
1603  	sco*)
1604  		os=sco3.2v2
1605  		;;
1606  	psos*)
1607  		os=psos
1608  		;;
1609  	qnx*)
1610  		os=qnx
1611  		;;
1612  	hiux*)
1613  		os=hiuxwe2
1614  		;;
1615  	lynx*178)
1616  		os=lynxos178
1617  		;;
1618  	lynx*5)
1619  		os=lynxos5
1620  		;;
1621  	lynxos*)
1622  		# don't get caught up in next wildcard
1623  		;;
1624  	lynx*)
1625  		os=lynxos
1626  		;;
1627  	mac[0-9]*)
1628  		os=`echo "$os" | sed -e 's|mac|macos|'`
1629  		;;
1630  	opened*)
1631  		os=openedition
1632  		;;
1633  	os400*)
1634  		os=os400
1635  		;;
1636  	sunos5*)
1637  		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
1638  		;;
1639  	sunos6*)
1640  		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
1641  		;;
1642  	wince*)
1643  		os=wince
1644  		;;
1645  	utek*)
1646  		os=bsd
1647  		vendor=`echo "$vendor" | sed -e 's|^unknown$|tektronix|'`
1648  		;;
1649  	dynix*)
1650  		os=bsd
1651  		;;
1652  	acis*)
1653  		os=aos
1654  		;;
1655  	atheos*)
1656  		os=atheos
1657  		;;
1658  	syllable*)
1659  		os=syllable
1660  		;;
1661  	386bsd)
1662  		os=bsd
1663  		;;
1664  	ctix*)
1665  		os=sysv
1666  		vendor=`echo "$vendor" | sed -e 's|^unknown$|convergent|'`
1667  		;;
1668  	uts*)
1669  		os=sysv
1670  		;;
1671  	nova*)
1672  		kernel=rtmk
1673  		os=nova
1674  		;;
1675  	# Preserve the version number of sinix5.
1676  	sinix5.*)
1677  		os=`echo "$os" | sed -e 's|sinix|sysv|'`
1678  		vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'`
1679  		;;
1680  	sinix*)
1681  		os=sysv4
1682  		vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'`
1683  		;;
1684  	tpf*)
1685  		os=tpf
1686  		;;
1687  	triton*)
1688  		os=sysv3
1689  		;;
1690  	oss*)
1691  		os=sysv3
1692  		;;
1693  	svr4*)
1694  		os=sysv4
1695  		;;
1696  	svr3)
1697  		os=sysv3
1698  		;;
1699  	sysvr4)
1700  		os=sysv4
1701  		;;
1702  	ose*)
1703  		os=ose
1704  		;;
1705  	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
1706  		os=mint
1707  		;;
1708  	dicos*)
1709  		os=dicos
1710  		;;
1711  	pikeos*)
1712  		# Until real need of OS specific support for
1713  		# particular features comes up, bare metal
1714  		# configurations are quite functional.
1715  		case $cpu in
1716  		    arm*)
1717  			os=eabi
1718  			;;
1719  		    *)
1720  			os=
1721  			obj=elf
1722  			;;
1723  		esac
1724  		;;
1725  	aout* | coff* | elf* | pe*)
1726  		# These are machine code file formats, not OSes
1727  		obj=$os
1728  		os=
1729  		;;
1730  	*)
1731  		# No normalization, but not necessarily accepted, that comes below.
1732  		;;
1733  esac
1734  
1735  else
1736  
1737  # Here we handle the default operating systems that come with various machines.
1738  # The value should be what the vendor currently ships out the door with their
1739  # machine or put another way, the most popular os provided with the machine.
1740  
1741  # Note that if you're going to try to match "-MANUFACTURER" here (say,
1742  # "-sun"), then you have to tell the case statement up towards the top
1743  # that MANUFACTURER isn't an operating system.  Otherwise, code above
1744  # will signal an error saying that MANUFACTURER isn't an operating
1745  # system, and we'll never get to this point.
1746  
1747  kernel=
1748  obj=
1749  case $cpu-$vendor in
1750  	score-*)
1751  		os=
1752  		obj=elf
1753  		;;
1754  	spu-*)
1755  		os=
1756  		obj=elf
1757  		;;
1758  	*-acorn)
1759  		os=riscix1.2
1760  		;;
1761  	arm*-rebel)
1762  		kernel=linux
1763  		os=gnu
1764  		;;
1765  	arm*-semi)
1766  		os=
1767  		obj=aout
1768  		;;
1769  	c4x-* | tic4x-*)
1770  		os=
1771  		obj=coff
1772  		;;
1773  	c8051-*)
1774  		os=
1775  		obj=elf
1776  		;;
1777  	clipper-intergraph)
1778  		os=clix
1779  		;;
1780  	hexagon-*)
1781  		os=
1782  		obj=elf
1783  		;;
1784  	tic54x-*)
1785  		os=
1786  		obj=coff
1787  		;;
1788  	tic55x-*)
1789  		os=
1790  		obj=coff
1791  		;;
1792  	tic6x-*)
1793  		os=
1794  		obj=coff
1795  		;;
1796  	# This must come before the *-dec entry.
1797  	pdp10-*)
1798  		os=tops20
1799  		;;
1800  	pdp11-*)
1801  		os=none
1802  		;;
1803  	*-dec | vax-*)
1804  		os=ultrix4.2
1805  		;;
1806  	m68*-apollo)
1807  		os=domain
1808  		;;
1809  	i386-sun)
1810  		os=sunos4.0.2
1811  		;;
1812  	m68000-sun)
1813  		os=sunos3
1814  		;;
1815  	m68*-cisco)
1816  		os=
1817  		obj=aout
1818  		;;
1819  	mep-*)
1820  		os=
1821  		obj=elf
1822  		;;
1823  	# The -sgi and -siemens entries must be before the mips- entry
1824  	# or we get the wrong os.
1825  	*-sgi)
1826  		os=irix
1827  		;;
1828  	*-siemens)
1829  		os=sysv4
1830  		;;
1831  	mips*-cisco)
1832  		os=
1833  		obj=elf
1834  		;;
1835  	mips*-*|nanomips*-*)
1836  		os=
1837  		obj=elf
1838  		;;
1839  	or32-*)
1840  		os=
1841  		obj=coff
1842  		;;
1843  	# This must be before the sparc-* entry or we get the wrong os.
1844  	*-tti)
1845  		os=sysv3
1846  		;;
1847  	sparc-* | *-sun)
1848  		os=sunos4.1.1
1849  		;;
1850  	pru-*)
1851  		os=
1852  		obj=elf
1853  		;;
1854  	*-be)
1855  		os=beos
1856  		;;
1857  	*-ibm)
1858  		os=aix
1859  		;;
1860  	*-knuth)
1861  		os=mmixware
1862  		;;
1863  	*-wec)
1864  		os=proelf
1865  		;;
1866  	*-winbond)
1867  		os=proelf
1868  		;;
1869  	*-oki)
1870  		os=proelf
1871  		;;
1872  	*-hp)
1873  		os=hpux
1874  		;;
1875  	*-hitachi)
1876  		os=hiuxwe2
1877  		;;
1878  	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
1879  		os=sysv
1880  		;;
1881  	*-cbm)
1882  		os=amigaos
1883  		;;
1884  	*-dg)
1885  		os=dgux
1886  		;;
1887  	*-dolphin)
1888  		os=sysv3
1889  		;;
1890  	m68k-ccur)
1891  		os=rtu
1892  		;;
1893  	m88k-omron*)
1894  		os=luna
1895  		;;
1896  	*-next)
1897  		os=nextstep
1898  		;;
1899  	*-sequent)
1900  		os=ptx
1901  		;;
1902  	*-crds)
1903  		os=unos
1904  		;;
1905  	*-ns)
1906  		os=genix
1907  		;;
1908  	i370-*)
1909  		os=mvs
1910  		;;
1911  	*-gould)
1912  		os=sysv
1913  		;;
1914  	*-highlevel)
1915  		os=bsd
1916  		;;
1917  	*-encore)
1918  		os=bsd
1919  		;;
1920  	*-masscomp)
1921  		os=rtu
1922  		;;
1923  	f30[01]-fujitsu | f700-fujitsu)
1924  		os=uxpv
1925  		;;
1926  	*-rom68k)
1927  		os=
1928  		obj=coff
1929  		;;
1930  	*-*bug)
1931  		os=
1932  		obj=coff
1933  		;;
1934  	*-apple)
1935  		os=macos
1936  		;;
1937  	*-atari*)
1938  		os=mint
1939  		;;
1940  	*-wrs)
1941  		os=vxworks
1942  		;;
1943  	*)
1944  		os=none
1945  		;;
1946  esac
1947  
1948  fi
1949  
1950  # Now, validate our (potentially fixed-up) individual pieces (OS, OBJ).
1951  
1952  case $os in
1953  	# Sometimes we do "kernel-libc", so those need to count as OSes.
1954  	llvm* | musl* | newlib* | relibc* | uclibc*)
1955  		;;
1956  	# Likewise for "kernel-abi"
1957  	eabi* | gnueabi*)
1958  		;;
1959  	# VxWorks passes extra cpu info in the 4th filed.
1960  	simlinux | simwindows | spe)
1961  		;;
1962  	# See `case $cpu-$os` validation below
1963  	ghcjs)
1964  		;;
1965  	# Now accept the basic system types.
1966  	# Each alternative MUST end in a * to match a version number.
1967  	  abug \
1968  	| aix* \
1969  	| amdhsa* \
1970  	| amigados* \
1971  	| amigaos* \
1972  	| android* \
1973  	| aof* \
1974  	| aos* \
1975  	| aros* \
1976  	| atheos* \
1977  	| auroraux* \
1978  	| aux* \
1979  	| beos* \
1980  	| bitrig* \
1981  	| bme* \
1982  	| bosx* \
1983  	| bsd* \
1984  	| cegcc* \
1985  	| chorusos* \
1986  	| chorusrdb* \
1987  	| clix* \
1988  	| cloudabi* \
1989  	| cnk* \
1990  	| conix* \
1991  	| cos* \
1992  	| cxux* \
1993  	| cygwin* \
1994  	| darwin* \
1995  	| dgux* \
1996  	| dicos* \
1997  	| dnix* \
1998  	| domain* \
1999  	| dragonfly* \
2000  	| drops* \
2001  	| ebmon* \
2002  	| ecoff* \
2003  	| ekkobsd* \
2004  	| emscripten* \
2005  	| emx* \
2006  	| es* \
2007  	| fiwix* \
2008  	| freebsd* \
2009  	| fuchsia* \
2010  	| genix* \
2011  	| genode* \
2012  	| glidix* \
2013  	| gnu* \
2014  	| go32* \
2015  	| haiku* \
2016  	| hcos* \
2017  	| hiux* \
2018  	| hms* \
2019  	| hpux* \
2020  	| ieee* \
2021  	| interix* \
2022  	| ios* \
2023  	| iris* \
2024  	| irix* \
2025  	| ironclad* \
2026  	| isc* \
2027  	| its* \
2028  	| l4re* \
2029  	| libertybsd* \
2030  	| lites* \
2031  	| lnews* \
2032  	| luna* \
2033  	| lynxos* \
2034  	| mach* \
2035  	| macos* \
2036  	| magic* \
2037  	| mbr* \
2038  	| midipix* \
2039  	| midnightbsd* \
2040  	| mingw32* \
2041  	| mingw64* \
2042  	| minix* \
2043  	| mint* \
2044  	| mirbsd* \
2045  	| mks* \
2046  	| mlibc* \
2047  	| mmixware* \
2048  	| mon960* \
2049  	| morphos* \
2050  	| moss* \
2051  	| moxiebox* \
2052  	| mpeix* \
2053  	| mpw* \
2054  	| msdos* \
2055  	| msys* \
2056  	| mvs* \
2057  	| nacl* \
2058  	| netbsd* \
2059  	| netware* \
2060  	| newsos* \
2061  	| nextstep* \
2062  	| nindy* \
2063  	| nonstopux* \
2064  	| nova* \
2065  	| nsk* \
2066  	| nucleus* \
2067  	| nx6 \
2068  	| nx7 \
2069  	| oabi* \
2070  	| ohos* \
2071  	| onefs* \
2072  	| openbsd* \
2073  	| openedition* \
2074  	| openstep* \
2075  	| os108* \
2076  	| os2* \
2077  	| os400* \
2078  	| os68k* \
2079  	| os9* \
2080  	| ose* \
2081  	| osf* \
2082  	| oskit* \
2083  	| osx* \
2084  	| palmos* \
2085  	| phoenix* \
2086  	| plan9* \
2087  	| powermax* \
2088  	| powerunix* \
2089  	| proelf* \
2090  	| psos* \
2091  	| psp* \
2092  	| ptx* \
2093  	| pw32* \
2094  	| qnx* \
2095  	| rdos* \
2096  	| redox* \
2097  	| rhapsody* \
2098  	| riscix* \
2099  	| riscos* \
2100  	| rtems* \
2101  	| rtmk* \
2102  	| rtu* \
2103  	| scout* \
2104  	| secbsd* \
2105  	| sei* \
2106  	| serenity* \
2107  	| sim* \
2108  	| skyos* \
2109  	| solaris* \
2110  	| solidbsd* \
2111  	| sortix* \
2112  	| storm-chaos* \
2113  	| sunos \
2114  	| sunos[34]* \
2115  	| superux* \
2116  	| syllable* \
2117  	| sym* \
2118  	| sysv* \
2119  	| tenex* \
2120  	| tirtos* \
2121  	| toppers* \
2122  	| tops10* \
2123  	| tops20* \
2124  	| tpf* \
2125  	| tvos* \
2126  	| twizzler* \
2127  	| uclinux* \
2128  	| udi* \
2129  	| udk* \
2130  	| ultrix* \
2131  	| unicos* \
2132  	| uniplus* \
2133  	| unleashed* \
2134  	| unos* \
2135  	| uwin* \
2136  	| uxpv* \
2137  	| v88r* \
2138  	|*vms* \
2139  	| vos* \
2140  	| vsta* \
2141  	| vxsim* \
2142  	| vxworks* \
2143  	| wasi* \
2144  	| watchos* \
2145  	| wince* \
2146  	| windiss* \
2147  	| windows* \
2148  	| winnt* \
2149  	| xenix* \
2150  	| xray* \
2151  	| zephyr* \
2152  	| zvmoe* )
2153  		;;
2154  	# This one is extra strict with allowed versions
2155  	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
2156  		# Don't forget version if it is 3.2v4 or newer.
2157  		;;
2158  	# This refers to builds using the UEFI calling convention
2159  	# (which depends on the architecture) and PE file format.
2160  	# Note that this is both a different calling convention and
2161  	# different file format than that of GNU-EFI
2162  	# (x86_64-w64-mingw32).
2163  	uefi)
2164  		;;
2165  	none)
2166  		;;
2167  	kernel* | msvc* )
2168  		# Restricted further below
2169  		;;
2170  	'')
2171  		if test x"$obj" = x
2172  		then
2173  			echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
2174  		fi
2175  		;;
2176  	*)
2177  		echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
2178  		exit 1
2179  		;;
2180  esac
2181  
2182  case $obj in
2183  	aout* | coff* | elf* | pe*)
2184  		;;
2185  	'')
2186  		# empty is fine
2187  		;;
2188  	*)
2189  		echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
2190  		exit 1
2191  		;;
2192  esac
2193  
2194  # Here we handle the constraint that a (synthetic) cpu and os are
2195  # valid only in combination with each other and nowhere else.
2196  case $cpu-$os in
2197  	# The "javascript-unknown-ghcjs" triple is used by GHC; we
2198  	# accept it here in order to tolerate that, but reject any
2199  	# variations.
2200  	javascript-ghcjs)
2201  		;;
2202  	javascript-* | *-ghcjs)
2203  		echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
2204  		exit 1
2205  		;;
2206  esac
2207  
2208  # As a final step for OS-related things, validate the OS-kernel combination
2209  # (given a valid OS), if there is a kernel.
2210  case $kernel-$os-$obj in
2211  	linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
2212  		    | linux-mlibc*- | linux-musl*- | linux-newlib*- \
2213  		    | linux-relibc*- | linux-uclibc*- | linux-ohos*- )
2214  		;;
2215  	uclinux-uclibc*- | uclinux-gnu*- )
2216  		;;
2217  	managarm-mlibc*- | managarm-kernel*- )
2218  		;;
2219  	windows*-msvc*-)
2220  		;;
2221  	-dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
2222  		    | -uclibc*- )
2223  		# These are just libc implementations, not actual OSes, and thus
2224  		# require a kernel.
2225  		echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
2226  		exit 1
2227  		;;
2228  	-kernel*- )
2229  		echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
2230  		exit 1
2231  		;;
2232  	*-kernel*- )
2233  		echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
2234  		exit 1
2235  		;;
2236  	*-msvc*- )
2237  		echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
2238  		exit 1
2239  		;;
2240  	kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-)
2241  		;;
2242  	vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
2243  		;;
2244  	nto-qnx*-)
2245  		;;
2246  	os2-emx-)
2247  		;;
2248  	rtmk-nova-)
2249  		;;
2250  	*-eabi*- | *-gnueabi*-)
2251  		;;
2252  	none--*)
2253  		# None (no kernel, i.e. freestanding / bare metal),
2254  		# can be paired with an machine code file format
2255  		;;
2256  	-*-)
2257  		# Blank kernel with real OS is always fine.
2258  		;;
2259  	--*)
2260  		# Blank kernel and OS with real machine code file format is always fine.
2261  		;;
2262  	*-*-*)
2263  		echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
2264  		exit 1
2265  		;;
2266  esac
2267  
2268  # Here we handle the case where we know the os, and the CPU type, but not the
2269  # manufacturer.  We pick the logical manufacturer.
2270  case $vendor in
2271  	unknown)
2272  		case $cpu-$os in
2273  			*-riscix*)
2274  				vendor=acorn
2275  				;;
2276  			*-sunos* | *-solaris*)
2277  				vendor=sun
2278  				;;
2279  			*-cnk* | *-aix*)
2280  				vendor=ibm
2281  				;;
2282  			*-beos*)
2283  				vendor=be
2284  				;;
2285  			*-hpux*)
2286  				vendor=hp
2287  				;;
2288  			*-mpeix*)
2289  				vendor=hp
2290  				;;
2291  			*-hiux*)
2292  				vendor=hitachi
2293  				;;
2294  			*-unos*)
2295  				vendor=crds
2296  				;;
2297  			*-dgux*)
2298  				vendor=dg
2299  				;;
2300  			*-luna*)
2301  				vendor=omron
2302  				;;
2303  			*-genix*)
2304  				vendor=ns
2305  				;;
2306  			*-clix*)
2307  				vendor=intergraph
2308  				;;
2309  			*-mvs* | *-opened*)
2310  				vendor=ibm
2311  				;;
2312  			*-os400*)
2313  				vendor=ibm
2314  				;;
2315  			s390-* | s390x-*)
2316  				vendor=ibm
2317  				;;
2318  			*-ptx*)
2319  				vendor=sequent
2320  				;;
2321  			*-tpf*)
2322  				vendor=ibm
2323  				;;
2324  			*-vxsim* | *-vxworks* | *-windiss*)
2325  				vendor=wrs
2326  				;;
2327  			*-aux*)
2328  				vendor=apple
2329  				;;
2330  			*-hms*)
2331  				vendor=hitachi
2332  				;;
2333  			*-mpw* | *-macos*)
2334  				vendor=apple
2335  				;;
2336  			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
2337  				vendor=atari
2338  				;;
2339  			*-vos*)
2340  				vendor=stratus
2341  				;;
2342  		esac
2343  		;;
2344  esac
2345  
2346  echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
2347  exit
2348  
2349  # Local variables:
2350  # eval: (add-hook 'before-save-hook 'time-stamp)
2351  # time-stamp-start: "timestamp='"
2352  # time-stamp-format: "%:y-%02m-%02d"
2353  # time-stamp-end: "'"
2354  # End: