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