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