1fe5e51b7Smrg#! /bin/sh 2fe5e51b7Smrg# Configuration validation subroutine script. 31e423a8fSmrg# Copyright 1992-2021 Free Software Foundation, Inc. 4fe5e51b7Smrg 51e423a8fSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 61e423a8fSmrg 71e423a8fSmrgtimestamp='2021-08-14' 8fe5e51b7Smrg 9493f84f4Smrg# This file is free software; you can redistribute it and/or modify it 10493f84f4Smrg# under the terms of the GNU General Public License as published by 11493f84f4Smrg# the Free Software Foundation; either version 3 of the License, or 12fe5e51b7Smrg# (at your option) any later version. 13fe5e51b7Smrg# 14493f84f4Smrg# This program is distributed in the hope that it will be useful, but 15493f84f4Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16493f84f4Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17493f84f4Smrg# General Public License for more details. 18fe5e51b7Smrg# 19fe5e51b7Smrg# You should have received a copy of the GNU General Public License 201e423a8fSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 21fe5e51b7Smrg# 22fe5e51b7Smrg# As a special exception to the GNU General Public License, if you 23fe5e51b7Smrg# distribute this file as part of a program that contains a 24fe5e51b7Smrg# configuration script generated by Autoconf, you may include it under 25493f84f4Smrg# the same distribution terms that you use for the rest of that 26493f84f4Smrg# program. This Exception is an additional permission under section 7 27493f84f4Smrg# of the GNU General Public License, version 3 ("GPLv3"). 28fe5e51b7Smrg 29fe5e51b7Smrg 30ee82cb62Smrg# Please send patches to <config-patches@gnu.org>. 31fe5e51b7Smrg# 32fe5e51b7Smrg# Configuration subroutine to validate and canonicalize a configuration type. 33fe5e51b7Smrg# Supply the specified configuration type as an argument. 34fe5e51b7Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 35fe5e51b7Smrg# Otherwise, we print the canonical config type on stdout and succeed. 36fe5e51b7Smrg 370bb88ba4Smrg# You can get the latest version of this script from: 381e423a8fSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 390bb88ba4Smrg 40fe5e51b7Smrg# This file is supposed to be the same for all GNU packages 41fe5e51b7Smrg# and recognize all the CPU types, system types and aliases 42fe5e51b7Smrg# that are meaningful with *any* GNU software. 43fe5e51b7Smrg# Each package is responsible for reporting which valid configurations 44fe5e51b7Smrg# it does not support. The user should be able to distinguish 45fe5e51b7Smrg# a failure to support a valid configuration from a meaningless 46fe5e51b7Smrg# configuration. 47fe5e51b7Smrg 48fe5e51b7Smrg# The goal of this file is to map all the various variations of a given 49fe5e51b7Smrg# machine specification into a single specification in the form: 50fe5e51b7Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51fe5e51b7Smrg# or in some cases, the newer four-part form: 52fe5e51b7Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53fe5e51b7Smrg# It is wrong to echo any other type of specification. 54fe5e51b7Smrg 551e423a8fSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 561e423a8fSmrg# about features and limitations of the classic Bourne shell that were 571e423a8fSmrg# superseded or lifted in POSIX. However, this script identifies a wide 581e423a8fSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 591e423a8fSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 601e423a8fSmrg# have a pre-POSIX /bin/sh. 611e423a8fSmrg 62fe5e51b7Smrgme=`echo "$0" | sed -e 's,.*/,,'` 63fe5e51b7Smrg 64fe5e51b7Smrgusage="\ 651e423a8fSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66fe5e51b7Smrg 67fe5e51b7SmrgCanonicalize a configuration name. 68fe5e51b7Smrg 691e423a8fSmrgOptions: 70fe5e51b7Smrg -h, --help print this help, then exit 71fe5e51b7Smrg -t, --time-stamp print date of last modification, then exit 72fe5e51b7Smrg -v, --version print version number, then exit 73fe5e51b7Smrg 74fe5e51b7SmrgReport bugs and patches to <config-patches@gnu.org>." 75fe5e51b7Smrg 76fe5e51b7Smrgversion="\ 77fe5e51b7SmrgGNU config.sub ($timestamp) 78fe5e51b7Smrg 791e423a8fSmrgCopyright 1992-2021 Free Software Foundation, Inc. 80fe5e51b7Smrg 81fe5e51b7SmrgThis is free software; see the source for copying conditions. There is NO 82fe5e51b7Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83fe5e51b7Smrg 84fe5e51b7Smrghelp=" 85fe5e51b7SmrgTry \`$me --help' for more information." 86fe5e51b7Smrg 87fe5e51b7Smrg# Parse command line 88fe5e51b7Smrgwhile test $# -gt 0 ; do 89fe5e51b7Smrg case $1 in 90fe5e51b7Smrg --time-stamp | --time* | -t ) 91fe5e51b7Smrg echo "$timestamp" ; exit ;; 92fe5e51b7Smrg --version | -v ) 93fe5e51b7Smrg echo "$version" ; exit ;; 94fe5e51b7Smrg --help | --h* | -h ) 95fe5e51b7Smrg echo "$usage"; exit ;; 96fe5e51b7Smrg -- ) # Stop option processing 97fe5e51b7Smrg shift; break ;; 98fe5e51b7Smrg - ) # Use stdin as input. 99fe5e51b7Smrg break ;; 100fe5e51b7Smrg -* ) 1011e423a8fSmrg echo "$me: invalid option $1$help" >&2 102fe5e51b7Smrg exit 1 ;; 103fe5e51b7Smrg 104fe5e51b7Smrg *local*) 105fe5e51b7Smrg # First pass through any local machine types. 1061e423a8fSmrg echo "$1" 107fe5e51b7Smrg exit ;; 108fe5e51b7Smrg 109fe5e51b7Smrg * ) 110fe5e51b7Smrg break ;; 111fe5e51b7Smrg esac 112fe5e51b7Smrgdone 113fe5e51b7Smrg 114fe5e51b7Smrgcase $# in 115fe5e51b7Smrg 0) echo "$me: missing argument$help" >&2 116fe5e51b7Smrg exit 1;; 117fe5e51b7Smrg 1) ;; 118fe5e51b7Smrg *) echo "$me: too many arguments$help" >&2 119fe5e51b7Smrg exit 1;; 120fe5e51b7Smrgesac 121fe5e51b7Smrg 1221e423a8fSmrg# Split fields of configuration type 1231e423a8fSmrg# shellcheck disable=SC2162 1241e423a8fSmrgsaved_IFS=$IFS 1251e423a8fSmrgIFS="-" read field1 field2 field3 field4 <<EOF 1261e423a8fSmrg$1 1271e423a8fSmrgEOF 1281e423a8fSmrgIFS=$saved_IFS 129fe5e51b7Smrg 1301e423a8fSmrg# Separate into logical components for further validation 1311e423a8fSmrgcase $1 in 1321e423a8fSmrg *-*-*-*-*) 1331e423a8fSmrg echo Invalid configuration \`"$1"\': more than four components >&2 1341e423a8fSmrg exit 1 135fe5e51b7Smrg ;; 1361e423a8fSmrg *-*-*-*) 1371e423a8fSmrg basic_machine=$field1-$field2 1381e423a8fSmrg basic_os=$field3-$field4 139fe5e51b7Smrg ;; 1401e423a8fSmrg *-*-*) 1411e423a8fSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 1421e423a8fSmrg # parts 1431e423a8fSmrg maybe_os=$field2-$field3 1441e423a8fSmrg case $maybe_os in 1451e423a8fSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 1461e423a8fSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 1471e423a8fSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 1481e423a8fSmrg | storm-chaos* | os2-emx* | rtmk-nova*) 1491e423a8fSmrg basic_machine=$field1 1501e423a8fSmrg basic_os=$maybe_os 1511e423a8fSmrg ;; 1521e423a8fSmrg android-linux) 1531e423a8fSmrg basic_machine=$field1-unknown 1541e423a8fSmrg basic_os=linux-android 1551e423a8fSmrg ;; 1561e423a8fSmrg *) 1571e423a8fSmrg basic_machine=$field1-$field2 1581e423a8fSmrg basic_os=$field3 1591e423a8fSmrg ;; 1601e423a8fSmrg esac 161fe5e51b7Smrg ;; 1621e423a8fSmrg *-*) 1631e423a8fSmrg # A lone config we happen to match not fitting any pattern 1641e423a8fSmrg case $field1-$field2 in 1651e423a8fSmrg decstation-3100) 1661e423a8fSmrg basic_machine=mips-dec 1671e423a8fSmrg basic_os= 1681e423a8fSmrg ;; 1691e423a8fSmrg *-*) 1701e423a8fSmrg # Second component is usually, but not always the OS 1711e423a8fSmrg case $field2 in 1721e423a8fSmrg # Prevent following clause from handling this valid os 1731e423a8fSmrg sun*os*) 1741e423a8fSmrg basic_machine=$field1 1751e423a8fSmrg basic_os=$field2 1761e423a8fSmrg ;; 1771e423a8fSmrg zephyr*) 1781e423a8fSmrg basic_machine=$field1-unknown 1791e423a8fSmrg basic_os=$field2 1801e423a8fSmrg ;; 1811e423a8fSmrg # Manufacturers 1821e423a8fSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 1831e423a8fSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 1841e423a8fSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 1851e423a8fSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 1861e423a8fSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 1871e423a8fSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 1881e423a8fSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 1891e423a8fSmrg | microblaze* | sim | cisco \ 1901e423a8fSmrg | oki | wec | wrs | winbond) 1911e423a8fSmrg basic_machine=$field1-$field2 1921e423a8fSmrg basic_os= 1931e423a8fSmrg ;; 1941e423a8fSmrg *) 1951e423a8fSmrg basic_machine=$field1 1961e423a8fSmrg basic_os=$field2 1971e423a8fSmrg ;; 1981e423a8fSmrg esac 1991e423a8fSmrg ;; 2001e423a8fSmrg esac 201fe5e51b7Smrg ;; 2021e423a8fSmrg *) 2031e423a8fSmrg # Convert single-component short-hands not valid as part of 2041e423a8fSmrg # multi-component configurations. 2051e423a8fSmrg case $field1 in 2061e423a8fSmrg 386bsd) 2071e423a8fSmrg basic_machine=i386-pc 2081e423a8fSmrg basic_os=bsd 2091e423a8fSmrg ;; 2101e423a8fSmrg a29khif) 2111e423a8fSmrg basic_machine=a29k-amd 2121e423a8fSmrg basic_os=udi 2131e423a8fSmrg ;; 2141e423a8fSmrg adobe68k) 2151e423a8fSmrg basic_machine=m68010-adobe 2161e423a8fSmrg basic_os=scout 2171e423a8fSmrg ;; 2181e423a8fSmrg alliant) 2191e423a8fSmrg basic_machine=fx80-alliant 2201e423a8fSmrg basic_os= 2211e423a8fSmrg ;; 2221e423a8fSmrg altos | altos3068) 2231e423a8fSmrg basic_machine=m68k-altos 2241e423a8fSmrg basic_os= 2251e423a8fSmrg ;; 2261e423a8fSmrg am29k) 2271e423a8fSmrg basic_machine=a29k-none 2281e423a8fSmrg basic_os=bsd 2291e423a8fSmrg ;; 2301e423a8fSmrg amdahl) 2311e423a8fSmrg basic_machine=580-amdahl 2321e423a8fSmrg basic_os=sysv 2331e423a8fSmrg ;; 2341e423a8fSmrg amiga) 2351e423a8fSmrg basic_machine=m68k-unknown 2361e423a8fSmrg basic_os= 2371e423a8fSmrg ;; 2381e423a8fSmrg amigaos | amigados) 2391e423a8fSmrg basic_machine=m68k-unknown 2401e423a8fSmrg basic_os=amigaos 2411e423a8fSmrg ;; 2421e423a8fSmrg amigaunix | amix) 2431e423a8fSmrg basic_machine=m68k-unknown 2441e423a8fSmrg basic_os=sysv4 2451e423a8fSmrg ;; 2461e423a8fSmrg apollo68) 2471e423a8fSmrg basic_machine=m68k-apollo 2481e423a8fSmrg basic_os=sysv 2491e423a8fSmrg ;; 2501e423a8fSmrg apollo68bsd) 2511e423a8fSmrg basic_machine=m68k-apollo 2521e423a8fSmrg basic_os=bsd 2531e423a8fSmrg ;; 2541e423a8fSmrg aros) 2551e423a8fSmrg basic_machine=i386-pc 2561e423a8fSmrg basic_os=aros 2571e423a8fSmrg ;; 2581e423a8fSmrg aux) 2591e423a8fSmrg basic_machine=m68k-apple 2601e423a8fSmrg basic_os=aux 2611e423a8fSmrg ;; 2621e423a8fSmrg balance) 2631e423a8fSmrg basic_machine=ns32k-sequent 2641e423a8fSmrg basic_os=dynix 2651e423a8fSmrg ;; 2661e423a8fSmrg blackfin) 2671e423a8fSmrg basic_machine=bfin-unknown 2681e423a8fSmrg basic_os=linux 2691e423a8fSmrg ;; 2701e423a8fSmrg cegcc) 2711e423a8fSmrg basic_machine=arm-unknown 2721e423a8fSmrg basic_os=cegcc 2731e423a8fSmrg ;; 2741e423a8fSmrg convex-c1) 2751e423a8fSmrg basic_machine=c1-convex 2761e423a8fSmrg basic_os=bsd 2771e423a8fSmrg ;; 2781e423a8fSmrg convex-c2) 2791e423a8fSmrg basic_machine=c2-convex 2801e423a8fSmrg basic_os=bsd 2811e423a8fSmrg ;; 2821e423a8fSmrg convex-c32) 2831e423a8fSmrg basic_machine=c32-convex 2841e423a8fSmrg basic_os=bsd 2851e423a8fSmrg ;; 2861e423a8fSmrg convex-c34) 2871e423a8fSmrg basic_machine=c34-convex 2881e423a8fSmrg basic_os=bsd 2891e423a8fSmrg ;; 2901e423a8fSmrg convex-c38) 2911e423a8fSmrg basic_machine=c38-convex 2921e423a8fSmrg basic_os=bsd 2931e423a8fSmrg ;; 2941e423a8fSmrg cray) 2951e423a8fSmrg basic_machine=j90-cray 2961e423a8fSmrg basic_os=unicos 2971e423a8fSmrg ;; 2981e423a8fSmrg crds | unos) 2991e423a8fSmrg basic_machine=m68k-crds 3001e423a8fSmrg basic_os= 3011e423a8fSmrg ;; 3021e423a8fSmrg da30) 3031e423a8fSmrg basic_machine=m68k-da30 3041e423a8fSmrg basic_os= 3051e423a8fSmrg ;; 3061e423a8fSmrg decstation | pmax | pmin | dec3100 | decstatn) 3071e423a8fSmrg basic_machine=mips-dec 3081e423a8fSmrg basic_os= 3091e423a8fSmrg ;; 3101e423a8fSmrg delta88) 3111e423a8fSmrg basic_machine=m88k-motorola 3121e423a8fSmrg basic_os=sysv3 3131e423a8fSmrg ;; 3141e423a8fSmrg dicos) 3151e423a8fSmrg basic_machine=i686-pc 3161e423a8fSmrg basic_os=dicos 3171e423a8fSmrg ;; 3181e423a8fSmrg djgpp) 3191e423a8fSmrg basic_machine=i586-pc 3201e423a8fSmrg basic_os=msdosdjgpp 3211e423a8fSmrg ;; 3221e423a8fSmrg ebmon29k) 3231e423a8fSmrg basic_machine=a29k-amd 3241e423a8fSmrg basic_os=ebmon 3251e423a8fSmrg ;; 3261e423a8fSmrg es1800 | OSE68k | ose68k | ose | OSE) 3271e423a8fSmrg basic_machine=m68k-ericsson 3281e423a8fSmrg basic_os=ose 3291e423a8fSmrg ;; 3301e423a8fSmrg gmicro) 3311e423a8fSmrg basic_machine=tron-gmicro 3321e423a8fSmrg basic_os=sysv 3331e423a8fSmrg ;; 3341e423a8fSmrg go32) 3351e423a8fSmrg basic_machine=i386-pc 3361e423a8fSmrg basic_os=go32 3371e423a8fSmrg ;; 3381e423a8fSmrg h8300hms) 3391e423a8fSmrg basic_machine=h8300-hitachi 3401e423a8fSmrg basic_os=hms 3411e423a8fSmrg ;; 3421e423a8fSmrg h8300xray) 3431e423a8fSmrg basic_machine=h8300-hitachi 3441e423a8fSmrg basic_os=xray 3451e423a8fSmrg ;; 3461e423a8fSmrg h8500hms) 3471e423a8fSmrg basic_machine=h8500-hitachi 3481e423a8fSmrg basic_os=hms 3491e423a8fSmrg ;; 3501e423a8fSmrg harris) 3511e423a8fSmrg basic_machine=m88k-harris 3521e423a8fSmrg basic_os=sysv3 3531e423a8fSmrg ;; 3541e423a8fSmrg hp300 | hp300hpux) 3551e423a8fSmrg basic_machine=m68k-hp 3561e423a8fSmrg basic_os=hpux 3571e423a8fSmrg ;; 3581e423a8fSmrg hp300bsd) 3591e423a8fSmrg basic_machine=m68k-hp 3601e423a8fSmrg basic_os=bsd 3611e423a8fSmrg ;; 3621e423a8fSmrg hppaosf) 3631e423a8fSmrg basic_machine=hppa1.1-hp 3641e423a8fSmrg basic_os=osf 3651e423a8fSmrg ;; 3661e423a8fSmrg hppro) 3671e423a8fSmrg basic_machine=hppa1.1-hp 3681e423a8fSmrg basic_os=proelf 3691e423a8fSmrg ;; 3701e423a8fSmrg i386mach) 3711e423a8fSmrg basic_machine=i386-mach 3721e423a8fSmrg basic_os=mach 3731e423a8fSmrg ;; 3741e423a8fSmrg isi68 | isi) 3751e423a8fSmrg basic_machine=m68k-isi 3761e423a8fSmrg basic_os=sysv 3771e423a8fSmrg ;; 3781e423a8fSmrg m68knommu) 3791e423a8fSmrg basic_machine=m68k-unknown 3801e423a8fSmrg basic_os=linux 3811e423a8fSmrg ;; 3821e423a8fSmrg magnum | m3230) 3831e423a8fSmrg basic_machine=mips-mips 3841e423a8fSmrg basic_os=sysv 3851e423a8fSmrg ;; 3861e423a8fSmrg merlin) 3871e423a8fSmrg basic_machine=ns32k-utek 3881e423a8fSmrg basic_os=sysv 3891e423a8fSmrg ;; 3901e423a8fSmrg mingw64) 3911e423a8fSmrg basic_machine=x86_64-pc 3921e423a8fSmrg basic_os=mingw64 3931e423a8fSmrg ;; 3941e423a8fSmrg mingw32) 3951e423a8fSmrg basic_machine=i686-pc 3961e423a8fSmrg basic_os=mingw32 3971e423a8fSmrg ;; 3981e423a8fSmrg mingw32ce) 3991e423a8fSmrg basic_machine=arm-unknown 4001e423a8fSmrg basic_os=mingw32ce 4011e423a8fSmrg ;; 4021e423a8fSmrg monitor) 4031e423a8fSmrg basic_machine=m68k-rom68k 4041e423a8fSmrg basic_os=coff 4051e423a8fSmrg ;; 4061e423a8fSmrg morphos) 4071e423a8fSmrg basic_machine=powerpc-unknown 4081e423a8fSmrg basic_os=morphos 4091e423a8fSmrg ;; 4101e423a8fSmrg moxiebox) 4111e423a8fSmrg basic_machine=moxie-unknown 4121e423a8fSmrg basic_os=moxiebox 4131e423a8fSmrg ;; 4141e423a8fSmrg msdos) 4151e423a8fSmrg basic_machine=i386-pc 4161e423a8fSmrg basic_os=msdos 4171e423a8fSmrg ;; 4181e423a8fSmrg msys) 4191e423a8fSmrg basic_machine=i686-pc 4201e423a8fSmrg basic_os=msys 4211e423a8fSmrg ;; 4221e423a8fSmrg mvs) 4231e423a8fSmrg basic_machine=i370-ibm 4241e423a8fSmrg basic_os=mvs 4251e423a8fSmrg ;; 4261e423a8fSmrg nacl) 4271e423a8fSmrg basic_machine=le32-unknown 4281e423a8fSmrg basic_os=nacl 4291e423a8fSmrg ;; 4301e423a8fSmrg ncr3000) 4311e423a8fSmrg basic_machine=i486-ncr 4321e423a8fSmrg basic_os=sysv4 4331e423a8fSmrg ;; 4341e423a8fSmrg netbsd386) 4351e423a8fSmrg basic_machine=i386-pc 4361e423a8fSmrg basic_os=netbsd 4371e423a8fSmrg ;; 4381e423a8fSmrg netwinder) 4391e423a8fSmrg basic_machine=armv4l-rebel 4401e423a8fSmrg basic_os=linux 4411e423a8fSmrg ;; 4421e423a8fSmrg news | news700 | news800 | news900) 4431e423a8fSmrg basic_machine=m68k-sony 4441e423a8fSmrg basic_os=newsos 4451e423a8fSmrg ;; 4461e423a8fSmrg news1000) 4471e423a8fSmrg basic_machine=m68030-sony 4481e423a8fSmrg basic_os=newsos 4491e423a8fSmrg ;; 4501e423a8fSmrg necv70) 4511e423a8fSmrg basic_machine=v70-nec 4521e423a8fSmrg basic_os=sysv 4531e423a8fSmrg ;; 4541e423a8fSmrg nh3000) 4551e423a8fSmrg basic_machine=m68k-harris 4561e423a8fSmrg basic_os=cxux 4571e423a8fSmrg ;; 4581e423a8fSmrg nh[45]000) 4591e423a8fSmrg basic_machine=m88k-harris 4601e423a8fSmrg basic_os=cxux 4611e423a8fSmrg ;; 4621e423a8fSmrg nindy960) 4631e423a8fSmrg basic_machine=i960-intel 4641e423a8fSmrg basic_os=nindy 4651e423a8fSmrg ;; 4661e423a8fSmrg mon960) 4671e423a8fSmrg basic_machine=i960-intel 4681e423a8fSmrg basic_os=mon960 4691e423a8fSmrg ;; 4701e423a8fSmrg nonstopux) 4711e423a8fSmrg basic_machine=mips-compaq 4721e423a8fSmrg basic_os=nonstopux 4731e423a8fSmrg ;; 4741e423a8fSmrg os400) 4751e423a8fSmrg basic_machine=powerpc-ibm 4761e423a8fSmrg basic_os=os400 4771e423a8fSmrg ;; 4781e423a8fSmrg OSE68000 | ose68000) 4791e423a8fSmrg basic_machine=m68000-ericsson 4801e423a8fSmrg basic_os=ose 4811e423a8fSmrg ;; 4821e423a8fSmrg os68k) 4831e423a8fSmrg basic_machine=m68k-none 4841e423a8fSmrg basic_os=os68k 4851e423a8fSmrg ;; 4861e423a8fSmrg paragon) 4871e423a8fSmrg basic_machine=i860-intel 4881e423a8fSmrg basic_os=osf 4891e423a8fSmrg ;; 4901e423a8fSmrg parisc) 4911e423a8fSmrg basic_machine=hppa-unknown 4921e423a8fSmrg basic_os=linux 4931e423a8fSmrg ;; 4941e423a8fSmrg psp) 4951e423a8fSmrg basic_machine=mipsallegrexel-sony 4961e423a8fSmrg basic_os=psp 4971e423a8fSmrg ;; 4981e423a8fSmrg pw32) 4991e423a8fSmrg basic_machine=i586-unknown 5001e423a8fSmrg basic_os=pw32 5011e423a8fSmrg ;; 5021e423a8fSmrg rdos | rdos64) 5031e423a8fSmrg basic_machine=x86_64-pc 5041e423a8fSmrg basic_os=rdos 5051e423a8fSmrg ;; 5061e423a8fSmrg rdos32) 5071e423a8fSmrg basic_machine=i386-pc 5081e423a8fSmrg basic_os=rdos 5091e423a8fSmrg ;; 5101e423a8fSmrg rom68k) 5111e423a8fSmrg basic_machine=m68k-rom68k 5121e423a8fSmrg basic_os=coff 5131e423a8fSmrg ;; 5141e423a8fSmrg sa29200) 5151e423a8fSmrg basic_machine=a29k-amd 5161e423a8fSmrg basic_os=udi 5171e423a8fSmrg ;; 5181e423a8fSmrg sei) 5191e423a8fSmrg basic_machine=mips-sei 5201e423a8fSmrg basic_os=seiux 5211e423a8fSmrg ;; 5221e423a8fSmrg sequent) 5231e423a8fSmrg basic_machine=i386-sequent 5241e423a8fSmrg basic_os= 5251e423a8fSmrg ;; 5261e423a8fSmrg sps7) 5271e423a8fSmrg basic_machine=m68k-bull 5281e423a8fSmrg basic_os=sysv2 5291e423a8fSmrg ;; 5301e423a8fSmrg st2000) 5311e423a8fSmrg basic_machine=m68k-tandem 5321e423a8fSmrg basic_os= 5331e423a8fSmrg ;; 5341e423a8fSmrg stratus) 5351e423a8fSmrg basic_machine=i860-stratus 5361e423a8fSmrg basic_os=sysv4 5371e423a8fSmrg ;; 5381e423a8fSmrg sun2) 5391e423a8fSmrg basic_machine=m68000-sun 5401e423a8fSmrg basic_os= 5411e423a8fSmrg ;; 5421e423a8fSmrg sun2os3) 5431e423a8fSmrg basic_machine=m68000-sun 5441e423a8fSmrg basic_os=sunos3 5451e423a8fSmrg ;; 5461e423a8fSmrg sun2os4) 5471e423a8fSmrg basic_machine=m68000-sun 5481e423a8fSmrg basic_os=sunos4 5491e423a8fSmrg ;; 5501e423a8fSmrg sun3) 5511e423a8fSmrg basic_machine=m68k-sun 5521e423a8fSmrg basic_os= 5531e423a8fSmrg ;; 5541e423a8fSmrg sun3os3) 5551e423a8fSmrg basic_machine=m68k-sun 5561e423a8fSmrg basic_os=sunos3 5571e423a8fSmrg ;; 5581e423a8fSmrg sun3os4) 5591e423a8fSmrg basic_machine=m68k-sun 5601e423a8fSmrg basic_os=sunos4 5611e423a8fSmrg ;; 5621e423a8fSmrg sun4) 5631e423a8fSmrg basic_machine=sparc-sun 5641e423a8fSmrg basic_os= 5651e423a8fSmrg ;; 5661e423a8fSmrg sun4os3) 5671e423a8fSmrg basic_machine=sparc-sun 5681e423a8fSmrg basic_os=sunos3 5691e423a8fSmrg ;; 5701e423a8fSmrg sun4os4) 5711e423a8fSmrg basic_machine=sparc-sun 5721e423a8fSmrg basic_os=sunos4 5731e423a8fSmrg ;; 5741e423a8fSmrg sun4sol2) 5751e423a8fSmrg basic_machine=sparc-sun 5761e423a8fSmrg basic_os=solaris2 5771e423a8fSmrg ;; 5781e423a8fSmrg sun386 | sun386i | roadrunner) 5791e423a8fSmrg basic_machine=i386-sun 5801e423a8fSmrg basic_os= 5811e423a8fSmrg ;; 5821e423a8fSmrg sv1) 5831e423a8fSmrg basic_machine=sv1-cray 5841e423a8fSmrg basic_os=unicos 5851e423a8fSmrg ;; 5861e423a8fSmrg symmetry) 5871e423a8fSmrg basic_machine=i386-sequent 5881e423a8fSmrg basic_os=dynix 5891e423a8fSmrg ;; 5901e423a8fSmrg t3e) 5911e423a8fSmrg basic_machine=alphaev5-cray 5921e423a8fSmrg basic_os=unicos 5931e423a8fSmrg ;; 5941e423a8fSmrg t90) 5951e423a8fSmrg basic_machine=t90-cray 5961e423a8fSmrg basic_os=unicos 5971e423a8fSmrg ;; 5981e423a8fSmrg toad1) 5991e423a8fSmrg basic_machine=pdp10-xkl 6001e423a8fSmrg basic_os=tops20 6011e423a8fSmrg ;; 6021e423a8fSmrg tpf) 6031e423a8fSmrg basic_machine=s390x-ibm 6041e423a8fSmrg basic_os=tpf 6051e423a8fSmrg ;; 6061e423a8fSmrg udi29k) 6071e423a8fSmrg basic_machine=a29k-amd 6081e423a8fSmrg basic_os=udi 6091e423a8fSmrg ;; 6101e423a8fSmrg ultra3) 6111e423a8fSmrg basic_machine=a29k-nyu 6121e423a8fSmrg basic_os=sym1 6131e423a8fSmrg ;; 6141e423a8fSmrg v810 | necv810) 6151e423a8fSmrg basic_machine=v810-nec 6161e423a8fSmrg basic_os=none 6171e423a8fSmrg ;; 6181e423a8fSmrg vaxv) 6191e423a8fSmrg basic_machine=vax-dec 6201e423a8fSmrg basic_os=sysv 6211e423a8fSmrg ;; 6221e423a8fSmrg vms) 6231e423a8fSmrg basic_machine=vax-dec 6241e423a8fSmrg basic_os=vms 6251e423a8fSmrg ;; 6261e423a8fSmrg vsta) 6271e423a8fSmrg basic_machine=i386-pc 6281e423a8fSmrg basic_os=vsta 6291e423a8fSmrg ;; 6301e423a8fSmrg vxworks960) 6311e423a8fSmrg basic_machine=i960-wrs 6321e423a8fSmrg basic_os=vxworks 6331e423a8fSmrg ;; 6341e423a8fSmrg vxworks68) 6351e423a8fSmrg basic_machine=m68k-wrs 6361e423a8fSmrg basic_os=vxworks 6371e423a8fSmrg ;; 6381e423a8fSmrg vxworks29k) 6391e423a8fSmrg basic_machine=a29k-wrs 6401e423a8fSmrg basic_os=vxworks 6411e423a8fSmrg ;; 6421e423a8fSmrg xbox) 6431e423a8fSmrg basic_machine=i686-pc 6441e423a8fSmrg basic_os=mingw32 6451e423a8fSmrg ;; 6461e423a8fSmrg ymp) 6471e423a8fSmrg basic_machine=ymp-cray 6481e423a8fSmrg basic_os=unicos 6491e423a8fSmrg ;; 6501e423a8fSmrg *) 6511e423a8fSmrg basic_machine=$1 6521e423a8fSmrg basic_os= 6531e423a8fSmrg ;; 6541e423a8fSmrg esac 655fe5e51b7Smrg ;; 656fe5e51b7Smrgesac 657fe5e51b7Smrg 6581e423a8fSmrg# Decode 1-component or ad-hoc basic machines 659fe5e51b7Smrgcase $basic_machine in 6601e423a8fSmrg # Here we handle the default manufacturer of certain CPU types. It is in 6611e423a8fSmrg # some cases the only manufacturer, in others, it is the most popular. 6621e423a8fSmrg w89k) 6631e423a8fSmrg cpu=hppa1.1 6641e423a8fSmrg vendor=winbond 665ee82cb62Smrg ;; 6661e423a8fSmrg op50n) 6671e423a8fSmrg cpu=hppa1.1 6681e423a8fSmrg vendor=oki 669fe5e51b7Smrg ;; 6701e423a8fSmrg op60c) 6711e423a8fSmrg cpu=hppa1.1 6721e423a8fSmrg vendor=oki 673fe5e51b7Smrg ;; 6741e423a8fSmrg ibm*) 6751e423a8fSmrg cpu=i370 6761e423a8fSmrg vendor=ibm 677fe5e51b7Smrg ;; 6781e423a8fSmrg orion105) 6791e423a8fSmrg cpu=clipper 6801e423a8fSmrg vendor=highlevel 681acd6767fSmrg ;; 6821e423a8fSmrg mac | mpw | mac-mpw) 6831e423a8fSmrg cpu=m68k 6841e423a8fSmrg vendor=apple 6850bb88ba4Smrg ;; 6861e423a8fSmrg pmac | pmac-mpw) 6871e423a8fSmrg cpu=powerpc 6881e423a8fSmrg vendor=apple 6890bb88ba4Smrg ;; 6900bb88ba4Smrg 691fe5e51b7Smrg # Recognize the various machine names and aliases which stand 692fe5e51b7Smrg # for a CPU type and a company and sometimes even an OS. 693fe5e51b7Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 6941e423a8fSmrg cpu=m68000 6951e423a8fSmrg vendor=att 696fe5e51b7Smrg ;; 697fe5e51b7Smrg 3b*) 6981e423a8fSmrg cpu=we32k 6991e423a8fSmrg vendor=att 700eda3803bSmrg ;; 7010bb88ba4Smrg bluegene*) 7021e423a8fSmrg cpu=powerpc 7031e423a8fSmrg vendor=ibm 7041e423a8fSmrg basic_os=cnk 705fe5e51b7Smrg ;; 706fe5e51b7Smrg decsystem10* | dec10*) 7071e423a8fSmrg cpu=pdp10 7081e423a8fSmrg vendor=dec 7091e423a8fSmrg basic_os=tops10 710fe5e51b7Smrg ;; 711fe5e51b7Smrg decsystem20* | dec20*) 7121e423a8fSmrg cpu=pdp10 7131e423a8fSmrg vendor=dec 7141e423a8fSmrg basic_os=tops20 715fe5e51b7Smrg ;; 716fe5e51b7Smrg delta | 3300 | motorola-3300 | motorola-delta \ 717fe5e51b7Smrg | 3300-motorola | delta-motorola) 7181e423a8fSmrg cpu=m68k 7191e423a8fSmrg vendor=motorola 720fe5e51b7Smrg ;; 7211e423a8fSmrg dpx2*) 7221e423a8fSmrg cpu=m68k 7231e423a8fSmrg vendor=bull 7241e423a8fSmrg basic_os=sysv3 725fe5e51b7Smrg ;; 726fe5e51b7Smrg encore | umax | mmax) 7271e423a8fSmrg cpu=ns32k 7281e423a8fSmrg vendor=encore 729fe5e51b7Smrg ;; 7301e423a8fSmrg elxsi) 7311e423a8fSmrg cpu=elxsi 7321e423a8fSmrg vendor=elxsi 7331e423a8fSmrg basic_os=${basic_os:-bsd} 734fe5e51b7Smrg ;; 735fe5e51b7Smrg fx2800) 7361e423a8fSmrg cpu=i860 7371e423a8fSmrg vendor=alliant 738fe5e51b7Smrg ;; 739fe5e51b7Smrg genix) 7401e423a8fSmrg cpu=ns32k 7411e423a8fSmrg vendor=ns 742fe5e51b7Smrg ;; 743fe5e51b7Smrg h3050r* | hiux*) 7441e423a8fSmrg cpu=hppa1.1 7451e423a8fSmrg vendor=hitachi 7461e423a8fSmrg basic_os=hiuxwe2 747fe5e51b7Smrg ;; 748fe5e51b7Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 7491e423a8fSmrg cpu=hppa1.0 7501e423a8fSmrg vendor=hp 751fe5e51b7Smrg ;; 752fe5e51b7Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 7531e423a8fSmrg cpu=m68000 7541e423a8fSmrg vendor=hp 755fe5e51b7Smrg ;; 756fe5e51b7Smrg hp9k3[2-9][0-9]) 7571e423a8fSmrg cpu=m68k 7581e423a8fSmrg vendor=hp 759fe5e51b7Smrg ;; 760fe5e51b7Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 7611e423a8fSmrg cpu=hppa1.0 7621e423a8fSmrg vendor=hp 763fe5e51b7Smrg ;; 764fe5e51b7Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 7651e423a8fSmrg cpu=hppa1.1 7661e423a8fSmrg vendor=hp 767fe5e51b7Smrg ;; 768fe5e51b7Smrg hp9k78[0-9] | hp78[0-9]) 769fe5e51b7Smrg # FIXME: really hppa2.0-hp 7701e423a8fSmrg cpu=hppa1.1 7711e423a8fSmrg vendor=hp 772fe5e51b7Smrg ;; 773fe5e51b7Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 774fe5e51b7Smrg # FIXME: really hppa2.0-hp 7751e423a8fSmrg cpu=hppa1.1 7761e423a8fSmrg vendor=hp 777fe5e51b7Smrg ;; 778fe5e51b7Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 7791e423a8fSmrg cpu=hppa1.1 7801e423a8fSmrg vendor=hp 781fe5e51b7Smrg ;; 782fe5e51b7Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 7831e423a8fSmrg cpu=hppa1.0 7841e423a8fSmrg vendor=hp 785fe5e51b7Smrg ;; 786fe5e51b7Smrg i*86v32) 7871e423a8fSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7881e423a8fSmrg vendor=pc 7891e423a8fSmrg basic_os=sysv32 790fe5e51b7Smrg ;; 791fe5e51b7Smrg i*86v4*) 7921e423a8fSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7931e423a8fSmrg vendor=pc 7941e423a8fSmrg basic_os=sysv4 795fe5e51b7Smrg ;; 796fe5e51b7Smrg i*86v) 7971e423a8fSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7981e423a8fSmrg vendor=pc 7991e423a8fSmrg basic_os=sysv 800fe5e51b7Smrg ;; 801fe5e51b7Smrg i*86sol2) 8021e423a8fSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 8031e423a8fSmrg vendor=pc 8041e423a8fSmrg basic_os=solaris2 805fe5e51b7Smrg ;; 8061e423a8fSmrg j90 | j90-cray) 8071e423a8fSmrg cpu=j90 8081e423a8fSmrg vendor=cray 8091e423a8fSmrg basic_os=${basic_os:-unicos} 810fe5e51b7Smrg ;; 811fe5e51b7Smrg iris | iris4d) 8121e423a8fSmrg cpu=mips 8131e423a8fSmrg vendor=sgi 8141e423a8fSmrg case $basic_os in 8151e423a8fSmrg irix*) 816fe5e51b7Smrg ;; 817fe5e51b7Smrg *) 8181e423a8fSmrg basic_os=irix4 819fe5e51b7Smrg ;; 820fe5e51b7Smrg esac 821fe5e51b7Smrg ;; 822fe5e51b7Smrg miniframe) 8231e423a8fSmrg cpu=m68000 8241e423a8fSmrg vendor=convergent 8250bb88ba4Smrg ;; 8261e423a8fSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 8271e423a8fSmrg cpu=m68k 8281e423a8fSmrg vendor=atari 8291e423a8fSmrg basic_os=mint 830fe5e51b7Smrg ;; 831fe5e51b7Smrg news-3600 | risc-news) 8321e423a8fSmrg cpu=mips 8331e423a8fSmrg vendor=sony 8341e423a8fSmrg basic_os=newsos 8351e423a8fSmrg ;; 8361e423a8fSmrg next | m*-next) 8371e423a8fSmrg cpu=m68k 8381e423a8fSmrg vendor=next 8391e423a8fSmrg case $basic_os in 8401e423a8fSmrg openstep*) 8411e423a8fSmrg ;; 8421e423a8fSmrg nextstep*) 843fe5e51b7Smrg ;; 8441e423a8fSmrg ns2*) 8451e423a8fSmrg basic_os=nextstep2 846fe5e51b7Smrg ;; 847fe5e51b7Smrg *) 8481e423a8fSmrg basic_os=nextstep3 849fe5e51b7Smrg ;; 850fe5e51b7Smrg esac 851fe5e51b7Smrg ;; 852fe5e51b7Smrg np1) 8531e423a8fSmrg cpu=np1 8541e423a8fSmrg vendor=gould 855fe5e51b7Smrg ;; 856fe5e51b7Smrg op50n-* | op60c-*) 8571e423a8fSmrg cpu=hppa1.1 8581e423a8fSmrg vendor=oki 8591e423a8fSmrg basic_os=proelf 860fe5e51b7Smrg ;; 861fe5e51b7Smrg pa-hitachi) 8621e423a8fSmrg cpu=hppa1.1 8631e423a8fSmrg vendor=hitachi 8641e423a8fSmrg basic_os=hiuxwe2 865eda3803bSmrg ;; 866fe5e51b7Smrg pbd) 8671e423a8fSmrg cpu=sparc 8681e423a8fSmrg vendor=tti 869fe5e51b7Smrg ;; 870fe5e51b7Smrg pbb) 8711e423a8fSmrg cpu=m68k 8721e423a8fSmrg vendor=tti 873fe5e51b7Smrg ;; 8741e423a8fSmrg pc532) 8751e423a8fSmrg cpu=ns32k 8761e423a8fSmrg vendor=pc532 877fe5e51b7Smrg ;; 878fe5e51b7Smrg pn) 8791e423a8fSmrg cpu=pn 8801e423a8fSmrg vendor=gould 881fe5e51b7Smrg ;; 8821e423a8fSmrg power) 8831e423a8fSmrg cpu=power 8841e423a8fSmrg vendor=ibm 885fe5e51b7Smrg ;; 886fe5e51b7Smrg ps2) 8871e423a8fSmrg cpu=i386 8881e423a8fSmrg vendor=ibm 889fe5e51b7Smrg ;; 890fe5e51b7Smrg rm[46]00) 8911e423a8fSmrg cpu=mips 8921e423a8fSmrg vendor=siemens 893fe5e51b7Smrg ;; 894fe5e51b7Smrg rtpc | rtpc-*) 8951e423a8fSmrg cpu=romp 8961e423a8fSmrg vendor=ibm 897fe5e51b7Smrg ;; 8981e423a8fSmrg sde) 8991e423a8fSmrg cpu=mipsisa32 9001e423a8fSmrg vendor=sde 9011e423a8fSmrg basic_os=${basic_os:-elf} 902fe5e51b7Smrg ;; 9031e423a8fSmrg simso-wrs) 9041e423a8fSmrg cpu=sparclite 9051e423a8fSmrg vendor=wrs 9061e423a8fSmrg basic_os=vxworks 907fe5e51b7Smrg ;; 9081e423a8fSmrg tower | tower-32) 9091e423a8fSmrg cpu=m68k 9101e423a8fSmrg vendor=ncr 911fe5e51b7Smrg ;; 9121e423a8fSmrg vpp*|vx|vx-*) 9131e423a8fSmrg cpu=f301 9141e423a8fSmrg vendor=fujitsu 915fe5e51b7Smrg ;; 9161e423a8fSmrg w65) 9171e423a8fSmrg cpu=w65 9181e423a8fSmrg vendor=wdc 919fe5e51b7Smrg ;; 9201e423a8fSmrg w89k-*) 9211e423a8fSmrg cpu=hppa1.1 9221e423a8fSmrg vendor=winbond 9231e423a8fSmrg basic_os=proelf 924fe5e51b7Smrg ;; 9251e423a8fSmrg none) 9261e423a8fSmrg cpu=none 9271e423a8fSmrg vendor=none 928fe5e51b7Smrg ;; 9291e423a8fSmrg leon|leon[3-9]) 9301e423a8fSmrg cpu=sparc 9311e423a8fSmrg vendor=$basic_machine 932fe5e51b7Smrg ;; 9331e423a8fSmrg leon-*|leon[3-9]-*) 9341e423a8fSmrg cpu=sparc 9351e423a8fSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 936fe5e51b7Smrg ;; 9371e423a8fSmrg 9381e423a8fSmrg *-*) 9391e423a8fSmrg # shellcheck disable=SC2162 9401e423a8fSmrg saved_IFS=$IFS 9411e423a8fSmrg IFS="-" read cpu vendor <<EOF 9421e423a8fSmrg$basic_machine 9431e423a8fSmrgEOF 9441e423a8fSmrg IFS=$saved_IFS 945fe5e51b7Smrg ;; 9461e423a8fSmrg # We use `pc' rather than `unknown' 9471e423a8fSmrg # because (1) that's what they normally are, and 9481e423a8fSmrg # (2) the word "unknown" tends to confuse beginning users. 9491e423a8fSmrg i*86 | x86_64) 9501e423a8fSmrg cpu=$basic_machine 9511e423a8fSmrg vendor=pc 952fe5e51b7Smrg ;; 9531e423a8fSmrg # These rules are duplicated from below for sake of the special case above; 9541e423a8fSmrg # i.e. things that normalized to x86 arches should also default to "pc" 9551e423a8fSmrg pc98) 9561e423a8fSmrg cpu=i386 9571e423a8fSmrg vendor=pc 958fe5e51b7Smrg ;; 9591e423a8fSmrg x64 | amd64) 9601e423a8fSmrg cpu=x86_64 9611e423a8fSmrg vendor=pc 962fe5e51b7Smrg ;; 9631e423a8fSmrg # Recognize the basic CPU types without company name. 9641e423a8fSmrg *) 9651e423a8fSmrg cpu=$basic_machine 9661e423a8fSmrg vendor=unknown 9670bb88ba4Smrg ;; 9681e423a8fSmrgesac 9691e423a8fSmrg 9701e423a8fSmrgunset -v basic_machine 9711e423a8fSmrg 9721e423a8fSmrg# Decode basic machines in the full and proper CPU-Company form. 9731e423a8fSmrgcase $cpu-$vendor in 9741e423a8fSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 9751e423a8fSmrg # some cases the only manufacturer, in others, it is the most popular. 9761e423a8fSmrg craynv-unknown) 9771e423a8fSmrg vendor=cray 9781e423a8fSmrg basic_os=${basic_os:-unicosmp} 979fe5e51b7Smrg ;; 9801e423a8fSmrg c90-unknown | c90-cray) 9811e423a8fSmrg vendor=cray 9821e423a8fSmrg basic_os=${Basic_os:-unicos} 983fe5e51b7Smrg ;; 9841e423a8fSmrg fx80-unknown) 9851e423a8fSmrg vendor=alliant 986fe5e51b7Smrg ;; 9871e423a8fSmrg romp-unknown) 9881e423a8fSmrg vendor=ibm 989fe5e51b7Smrg ;; 9901e423a8fSmrg mmix-unknown) 9911e423a8fSmrg vendor=knuth 992fe5e51b7Smrg ;; 9931e423a8fSmrg microblaze-unknown | microblazeel-unknown) 9941e423a8fSmrg vendor=xilinx 995fe5e51b7Smrg ;; 9961e423a8fSmrg rs6000-unknown) 9971e423a8fSmrg vendor=ibm 998fe5e51b7Smrg ;; 9991e423a8fSmrg vax-unknown) 10001e423a8fSmrg vendor=dec 1001fe5e51b7Smrg ;; 10021e423a8fSmrg pdp11-unknown) 10031e423a8fSmrg vendor=dec 1004fe5e51b7Smrg ;; 10051e423a8fSmrg we32k-unknown) 10061e423a8fSmrg vendor=att 1007fe5e51b7Smrg ;; 10081e423a8fSmrg cydra-unknown) 10091e423a8fSmrg vendor=cydrome 1010fe5e51b7Smrg ;; 10111e423a8fSmrg i370-ibm*) 10121e423a8fSmrg vendor=ibm 1013fe5e51b7Smrg ;; 10141e423a8fSmrg orion-unknown) 10151e423a8fSmrg vendor=highlevel 1016fe5e51b7Smrg ;; 10171e423a8fSmrg xps-unknown | xps100-unknown) 10181e423a8fSmrg cpu=xps100 10191e423a8fSmrg vendor=honeywell 1020fe5e51b7Smrg ;; 10211e423a8fSmrg 10221e423a8fSmrg # Here we normalize CPU types with a missing or matching vendor 10231e423a8fSmrg dpx20-unknown | dpx20-bull) 10241e423a8fSmrg cpu=rs6000 10251e423a8fSmrg vendor=bull 10261e423a8fSmrg basic_os=${basic_os:-bosx} 1027fe5e51b7Smrg ;; 10281e423a8fSmrg 10291e423a8fSmrg # Here we normalize CPU types irrespective of the vendor 10301e423a8fSmrg amd64-*) 10311e423a8fSmrg cpu=x86_64 1032eda3803bSmrg ;; 10331e423a8fSmrg blackfin-*) 10341e423a8fSmrg cpu=bfin 10351e423a8fSmrg basic_os=linux 1036fe5e51b7Smrg ;; 10371e423a8fSmrg c54x-*) 10381e423a8fSmrg cpu=tic54x 1039fe5e51b7Smrg ;; 10401e423a8fSmrg c55x-*) 10411e423a8fSmrg cpu=tic55x 1042fe5e51b7Smrg ;; 10431e423a8fSmrg c6x-*) 10441e423a8fSmrg cpu=tic6x 1045fe5e51b7Smrg ;; 10461e423a8fSmrg e500v[12]-*) 10471e423a8fSmrg cpu=powerpc 10481e423a8fSmrg basic_os=${basic_os}"spe" 1049fe5e51b7Smrg ;; 10501e423a8fSmrg mips3*-*) 10511e423a8fSmrg cpu=mips64 1052fe5e51b7Smrg ;; 10531e423a8fSmrg ms1-*) 10541e423a8fSmrg cpu=mt 1055fe5e51b7Smrg ;; 10561e423a8fSmrg m68knommu-*) 10571e423a8fSmrg cpu=m68k 10581e423a8fSmrg basic_os=linux 1059fe5e51b7Smrg ;; 10601e423a8fSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 10611e423a8fSmrg cpu=s12z 1062fe5e51b7Smrg ;; 10631e423a8fSmrg openrisc-*) 10641e423a8fSmrg cpu=or32 1065fe5e51b7Smrg ;; 10661e423a8fSmrg parisc-*) 10671e423a8fSmrg cpu=hppa 10681e423a8fSmrg basic_os=linux 1069fe5e51b7Smrg ;; 10701e423a8fSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 10711e423a8fSmrg cpu=i586 1072fe5e51b7Smrg ;; 10731e423a8fSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 10741e423a8fSmrg cpu=i686 1075fe5e51b7Smrg ;; 10761e423a8fSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 10771e423a8fSmrg cpu=i686 1078fe5e51b7Smrg ;; 10791e423a8fSmrg pentium4-*) 10801e423a8fSmrg cpu=i786 1081fe5e51b7Smrg ;; 10821e423a8fSmrg pc98-*) 10831e423a8fSmrg cpu=i386 1084fe5e51b7Smrg ;; 10851e423a8fSmrg ppc-* | ppcbe-*) 10861e423a8fSmrg cpu=powerpc 1087fe5e51b7Smrg ;; 10881e423a8fSmrg ppcle-* | powerpclittle-*) 10891e423a8fSmrg cpu=powerpcle 1090fe5e51b7Smrg ;; 10911e423a8fSmrg ppc64-*) 10921e423a8fSmrg cpu=powerpc64 10930bb88ba4Smrg ;; 10941e423a8fSmrg ppc64le-* | powerpc64little-*) 10951e423a8fSmrg cpu=powerpc64le 1096fe5e51b7Smrg ;; 10971e423a8fSmrg sb1-*) 10981e423a8fSmrg cpu=mipsisa64sb1 1099fe5e51b7Smrg ;; 11001e423a8fSmrg sb1el-*) 11011e423a8fSmrg cpu=mipsisa64sb1el 1102a31a186aSmrg ;; 11031e423a8fSmrg sh5e[lb]-*) 11041e423a8fSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1105fe5e51b7Smrg ;; 11061e423a8fSmrg spur-*) 11071e423a8fSmrg cpu=spur 1108fe5e51b7Smrg ;; 11091e423a8fSmrg strongarm-* | thumb-*) 11101e423a8fSmrg cpu=arm 1111fe5e51b7Smrg ;; 11121e423a8fSmrg tx39-*) 11131e423a8fSmrg cpu=mipstx39 1114fe5e51b7Smrg ;; 11151e423a8fSmrg tx39el-*) 11161e423a8fSmrg cpu=mipstx39el 1117fe5e51b7Smrg ;; 11181e423a8fSmrg x64-*) 11191e423a8fSmrg cpu=x86_64 1120fe5e51b7Smrg ;; 11211e423a8fSmrg xscale-* | xscalee[bl]-*) 11221e423a8fSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1123fe5e51b7Smrg ;; 11241e423a8fSmrg arm64-*) 11251e423a8fSmrg cpu=aarch64 1126fe5e51b7Smrg ;; 11271e423a8fSmrg 11281e423a8fSmrg # Recognize the canonical CPU Types that limit and/or modify the 11291e423a8fSmrg # company names they are paired with. 11301e423a8fSmrg cr16-*) 11311e423a8fSmrg basic_os=${basic_os:-elf} 1132fe5e51b7Smrg ;; 11331e423a8fSmrg crisv32-* | etraxfs*-*) 11341e423a8fSmrg cpu=crisv32 11351e423a8fSmrg vendor=axis 1136fe5e51b7Smrg ;; 11371e423a8fSmrg cris-* | etrax*-*) 11381e423a8fSmrg cpu=cris 11391e423a8fSmrg vendor=axis 1140fe5e51b7Smrg ;; 11411e423a8fSmrg crx-*) 11421e423a8fSmrg basic_os=${basic_os:-elf} 1143fe5e51b7Smrg ;; 11441e423a8fSmrg neo-tandem) 11451e423a8fSmrg cpu=neo 11461e423a8fSmrg vendor=tandem 1147fe5e51b7Smrg ;; 11481e423a8fSmrg nse-tandem) 11491e423a8fSmrg cpu=nse 11501e423a8fSmrg vendor=tandem 1151fe5e51b7Smrg ;; 11521e423a8fSmrg nsr-tandem) 11531e423a8fSmrg cpu=nsr 11541e423a8fSmrg vendor=tandem 1155fe5e51b7Smrg ;; 11561e423a8fSmrg nsv-tandem) 11571e423a8fSmrg cpu=nsv 11581e423a8fSmrg vendor=tandem 1159fe5e51b7Smrg ;; 11601e423a8fSmrg nsx-tandem) 11611e423a8fSmrg cpu=nsx 11621e423a8fSmrg vendor=tandem 1163fe5e51b7Smrg ;; 11641e423a8fSmrg mipsallegrexel-sony) 11651e423a8fSmrg cpu=mipsallegrexel 11661e423a8fSmrg vendor=sony 1167fe5e51b7Smrg ;; 11681e423a8fSmrg tile*-*) 11691e423a8fSmrg basic_os=${basic_os:-linux-gnu} 1170fe5e51b7Smrg ;; 11711e423a8fSmrg 1172fe5e51b7Smrg *) 11731e423a8fSmrg # Recognize the canonical CPU types that are allowed with any 11741e423a8fSmrg # company name. 11751e423a8fSmrg case $cpu in 11761e423a8fSmrg 1750a | 580 \ 11771e423a8fSmrg | a29k \ 11781e423a8fSmrg | aarch64 | aarch64_be \ 11791e423a8fSmrg | abacus \ 11801e423a8fSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 11811e423a8fSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 11821e423a8fSmrg | alphapca5[67] | alpha64pca5[67] \ 11831e423a8fSmrg | am33_2.0 \ 11841e423a8fSmrg | amdgcn \ 11851e423a8fSmrg | arc | arceb | arc32 | arc64 \ 11861e423a8fSmrg | arm | arm[lb]e | arme[lb] | armv* \ 11871e423a8fSmrg | avr | avr32 \ 11881e423a8fSmrg | asmjs \ 11891e423a8fSmrg | ba \ 11901e423a8fSmrg | be32 | be64 \ 11911e423a8fSmrg | bfin | bpf | bs2000 \ 11921e423a8fSmrg | c[123]* | c30 | [cjt]90 | c4x \ 11931e423a8fSmrg | c8051 | clipper | craynv | csky | cydra \ 11941e423a8fSmrg | d10v | d30v | dlx | dsp16xx \ 11951e423a8fSmrg | e2k | elxsi | epiphany \ 11961e423a8fSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 11971e423a8fSmrg | h8300 | h8500 \ 11981e423a8fSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 11991e423a8fSmrg | hexagon \ 12001e423a8fSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 12011e423a8fSmrg | ip2k | iq2000 \ 12021e423a8fSmrg | k1om \ 12031e423a8fSmrg | le32 | le64 \ 12041e423a8fSmrg | lm32 \ 12051e423a8fSmrg | loongarch32 | loongarch64 | loongarchx32 \ 12061e423a8fSmrg | m32c | m32r | m32rle \ 12071e423a8fSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 12081e423a8fSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 12091e423a8fSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 12101e423a8fSmrg | microblaze | microblazeel \ 12111e423a8fSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 12121e423a8fSmrg | mips16 \ 12131e423a8fSmrg | mips64 | mips64eb | mips64el \ 12141e423a8fSmrg | mips64octeon | mips64octeonel \ 12151e423a8fSmrg | mips64orion | mips64orionel \ 12161e423a8fSmrg | mips64r5900 | mips64r5900el \ 12171e423a8fSmrg | mips64vr | mips64vrel \ 12181e423a8fSmrg | mips64vr4100 | mips64vr4100el \ 12191e423a8fSmrg | mips64vr4300 | mips64vr4300el \ 12201e423a8fSmrg | mips64vr5000 | mips64vr5000el \ 12211e423a8fSmrg | mips64vr5900 | mips64vr5900el \ 12221e423a8fSmrg | mipsisa32 | mipsisa32el \ 12231e423a8fSmrg | mipsisa32r2 | mipsisa32r2el \ 12241e423a8fSmrg | mipsisa32r3 | mipsisa32r3el \ 12251e423a8fSmrg | mipsisa32r5 | mipsisa32r5el \ 12261e423a8fSmrg | mipsisa32r6 | mipsisa32r6el \ 12271e423a8fSmrg | mipsisa64 | mipsisa64el \ 12281e423a8fSmrg | mipsisa64r2 | mipsisa64r2el \ 12291e423a8fSmrg | mipsisa64r3 | mipsisa64r3el \ 12301e423a8fSmrg | mipsisa64r5 | mipsisa64r5el \ 12311e423a8fSmrg | mipsisa64r6 | mipsisa64r6el \ 12321e423a8fSmrg | mipsisa64sb1 | mipsisa64sb1el \ 12331e423a8fSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 12341e423a8fSmrg | mipsr5900 | mipsr5900el \ 12351e423a8fSmrg | mipstx39 | mipstx39el \ 12361e423a8fSmrg | mmix \ 12371e423a8fSmrg | mn10200 | mn10300 \ 12381e423a8fSmrg | moxie \ 12391e423a8fSmrg | mt \ 12401e423a8fSmrg | msp430 \ 12411e423a8fSmrg | nds32 | nds32le | nds32be \ 12421e423a8fSmrg | nfp \ 12431e423a8fSmrg | nios | nios2 | nios2eb | nios2el \ 12441e423a8fSmrg | none | np1 | ns16k | ns32k | nvptx \ 12451e423a8fSmrg | open8 \ 12461e423a8fSmrg | or1k* \ 12471e423a8fSmrg | or32 \ 12481e423a8fSmrg | orion \ 12491e423a8fSmrg | picochip \ 12501e423a8fSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 12511e423a8fSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 12521e423a8fSmrg | pru \ 12531e423a8fSmrg | pyramid \ 12541e423a8fSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 12551e423a8fSmrg | rl78 | romp | rs6000 | rx \ 12561e423a8fSmrg | s390 | s390x \ 12571e423a8fSmrg | score \ 12581e423a8fSmrg | sh | shl \ 12591e423a8fSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 12601e423a8fSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 12611e423a8fSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 12621e423a8fSmrg | sparclite \ 12631e423a8fSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12641e423a8fSmrg | spu \ 12651e423a8fSmrg | tahoe \ 12661e423a8fSmrg | thumbv7* \ 12671e423a8fSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 12681e423a8fSmrg | tron \ 12691e423a8fSmrg | ubicom32 \ 12701e423a8fSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 12711e423a8fSmrg | vax \ 12721e423a8fSmrg | visium \ 12731e423a8fSmrg | w65 \ 12741e423a8fSmrg | wasm32 | wasm64 \ 12751e423a8fSmrg | we32k \ 12761e423a8fSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 12771e423a8fSmrg | xstormy16 | xtensa* \ 12781e423a8fSmrg | ymp \ 12791e423a8fSmrg | z8k | z80) 12801e423a8fSmrg ;; 12811e423a8fSmrg 12821e423a8fSmrg *) 12831e423a8fSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 12841e423a8fSmrg exit 1 12851e423a8fSmrg ;; 12861e423a8fSmrg esac 1287fe5e51b7Smrg ;; 1288fe5e51b7Smrgesac 1289fe5e51b7Smrg 1290fe5e51b7Smrg# Here we canonicalize certain aliases for manufacturers. 12911e423a8fSmrgcase $vendor in 12921e423a8fSmrg digital*) 12931e423a8fSmrg vendor=dec 1294fe5e51b7Smrg ;; 12951e423a8fSmrg commodore*) 12961e423a8fSmrg vendor=cbm 1297fe5e51b7Smrg ;; 1298fe5e51b7Smrg *) 1299fe5e51b7Smrg ;; 1300fe5e51b7Smrgesac 1301fe5e51b7Smrg 1302fe5e51b7Smrg# Decode manufacturer-specific aliases for certain operating systems. 1303fe5e51b7Smrg 13041e423a8fSmrgif test x$basic_os != x 1305fe5e51b7Smrgthen 13061e423a8fSmrg 13071e423a8fSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 13081e423a8fSmrg# set os. 13091e423a8fSmrgcase $basic_os in 13101e423a8fSmrg gnu/linux*) 13111e423a8fSmrg kernel=linux 13121e423a8fSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 13131e423a8fSmrg ;; 13141e423a8fSmrg os2-emx) 13151e423a8fSmrg kernel=os2 13161e423a8fSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 13171e423a8fSmrg ;; 13181e423a8fSmrg nto-qnx*) 13191e423a8fSmrg kernel=nto 13201e423a8fSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 13211e423a8fSmrg ;; 13221e423a8fSmrg *-*) 13231e423a8fSmrg # shellcheck disable=SC2162 13241e423a8fSmrg saved_IFS=$IFS 13251e423a8fSmrg IFS="-" read kernel os <<EOF 13261e423a8fSmrg$basic_os 13271e423a8fSmrgEOF 13281e423a8fSmrg IFS=$saved_IFS 13291e423a8fSmrg ;; 13301e423a8fSmrg # Default OS when just kernel was specified 13311e423a8fSmrg nto*) 13321e423a8fSmrg kernel=nto 13331e423a8fSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 13341e423a8fSmrg ;; 13351e423a8fSmrg linux*) 13361e423a8fSmrg kernel=linux 13371e423a8fSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13381e423a8fSmrg ;; 13391e423a8fSmrg *) 13401e423a8fSmrg kernel= 13411e423a8fSmrg os=$basic_os 13421e423a8fSmrg ;; 13431e423a8fSmrgesac 13441e423a8fSmrg 13451e423a8fSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 13461e423a8fSmrg# etc.) 1347fe5e51b7Smrgcase $os in 13481e423a8fSmrg # First match some system type aliases that might get confused 13491e423a8fSmrg # with valid system types. 13501e423a8fSmrg # solaris* is a basic system type, with this one exception. 13511e423a8fSmrg auroraux) 13521e423a8fSmrg os=auroraux 13530bb88ba4Smrg ;; 13541e423a8fSmrg bluegene*) 13551e423a8fSmrg os=cnk 1356fe5e51b7Smrg ;; 13571e423a8fSmrg solaris1 | solaris1.*) 13581e423a8fSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1359fe5e51b7Smrg ;; 13601e423a8fSmrg solaris) 13611e423a8fSmrg os=solaris2 1362fe5e51b7Smrg ;; 13631e423a8fSmrg unixware*) 13641e423a8fSmrg os=sysv4.2uw 1365fe5e51b7Smrg ;; 13661e423a8fSmrg # es1800 is here to avoid being matched by es* (a different OS) 13671e423a8fSmrg es1800*) 13681e423a8fSmrg os=ose 1369fe5e51b7Smrg ;; 13701e423a8fSmrg # Some version numbers need modification 13711e423a8fSmrg chorusos*) 13721e423a8fSmrg os=chorusos 1373fe5e51b7Smrg ;; 13741e423a8fSmrg isc) 13751e423a8fSmrg os=isc2.2 1376fe5e51b7Smrg ;; 13771e423a8fSmrg sco6) 13781e423a8fSmrg os=sco5v6 1379fe5e51b7Smrg ;; 13801e423a8fSmrg sco5) 13811e423a8fSmrg os=sco3.2v5 1382fe5e51b7Smrg ;; 13831e423a8fSmrg sco4) 13841e423a8fSmrg os=sco3.2v4 1385fe5e51b7Smrg ;; 13861e423a8fSmrg sco3.2.[4-9]*) 13871e423a8fSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1388fe5e51b7Smrg ;; 13891e423a8fSmrg sco*v* | scout) 13901e423a8fSmrg # Don't match below 1391fe5e51b7Smrg ;; 13921e423a8fSmrg sco*) 13931e423a8fSmrg os=sco3.2v2 1394fe5e51b7Smrg ;; 13951e423a8fSmrg psos*) 13961e423a8fSmrg os=psos 1397fe5e51b7Smrg ;; 13981e423a8fSmrg qnx*) 13991e423a8fSmrg os=qnx 1400fe5e51b7Smrg ;; 14011e423a8fSmrg hiux*) 14021e423a8fSmrg os=hiuxwe2 1403fe5e51b7Smrg ;; 14041e423a8fSmrg lynx*178) 14051e423a8fSmrg os=lynxos178 1406fe5e51b7Smrg ;; 14071e423a8fSmrg lynx*5) 14081e423a8fSmrg os=lynxos5 1409fe5e51b7Smrg ;; 14101e423a8fSmrg lynxos*) 14111e423a8fSmrg # don't get caught up in next wildcard 1412fe5e51b7Smrg ;; 14131e423a8fSmrg lynx*) 14141e423a8fSmrg os=lynxos 1415fe5e51b7Smrg ;; 14161e423a8fSmrg mac[0-9]*) 14171e423a8fSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 1418fe5e51b7Smrg ;; 14191e423a8fSmrg opened*) 14201e423a8fSmrg os=openedition 1421fe5e51b7Smrg ;; 14221e423a8fSmrg os400*) 14231e423a8fSmrg os=os400 1424fe5e51b7Smrg ;; 14251e423a8fSmrg sunos5*) 14261e423a8fSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1427fe5e51b7Smrg ;; 14281e423a8fSmrg sunos6*) 14291e423a8fSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1430fe5e51b7Smrg ;; 14311e423a8fSmrg wince*) 14321e423a8fSmrg os=wince 1433fe5e51b7Smrg ;; 14341e423a8fSmrg utek*) 14351e423a8fSmrg os=bsd 1436fe5e51b7Smrg ;; 14371e423a8fSmrg dynix*) 14381e423a8fSmrg os=bsd 1439fe5e51b7Smrg ;; 14401e423a8fSmrg acis*) 14411e423a8fSmrg os=aos 1442fe5e51b7Smrg ;; 14431e423a8fSmrg atheos*) 14441e423a8fSmrg os=atheos 1445fe5e51b7Smrg ;; 14461e423a8fSmrg syllable*) 14471e423a8fSmrg os=syllable 1448fe5e51b7Smrg ;; 14491e423a8fSmrg 386bsd) 14501e423a8fSmrg os=bsd 1451fe5e51b7Smrg ;; 14521e423a8fSmrg ctix* | uts*) 14531e423a8fSmrg os=sysv 1454fe5e51b7Smrg ;; 14551e423a8fSmrg nova*) 14561e423a8fSmrg os=rtmk-nova 1457fe5e51b7Smrg ;; 14581e423a8fSmrg ns2) 14591e423a8fSmrg os=nextstep2 1460fe5e51b7Smrg ;; 14611e423a8fSmrg # Preserve the version number of sinix5. 14621e423a8fSmrg sinix5.*) 14631e423a8fSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1464fe5e51b7Smrg ;; 14651e423a8fSmrg sinix*) 14661e423a8fSmrg os=sysv4 1467fe5e51b7Smrg ;; 14681e423a8fSmrg tpf*) 14691e423a8fSmrg os=tpf 1470fe5e51b7Smrg ;; 14711e423a8fSmrg triton*) 14721e423a8fSmrg os=sysv3 1473fe5e51b7Smrg ;; 14741e423a8fSmrg oss*) 14751e423a8fSmrg os=sysv3 1476fe5e51b7Smrg ;; 14771e423a8fSmrg svr4*) 14781e423a8fSmrg os=sysv4 1479fe5e51b7Smrg ;; 14801e423a8fSmrg svr3) 14811e423a8fSmrg os=sysv3 1482fe5e51b7Smrg ;; 14831e423a8fSmrg sysvr4) 14841e423a8fSmrg os=sysv4 1485fe5e51b7Smrg ;; 14861e423a8fSmrg ose*) 14871e423a8fSmrg os=ose 1488fe5e51b7Smrg ;; 14891e423a8fSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 14901e423a8fSmrg os=mint 1491a31a186aSmrg ;; 14921e423a8fSmrg dicos*) 14931e423a8fSmrg os=dicos 14940bb88ba4Smrg ;; 14951e423a8fSmrg pikeos*) 14961e423a8fSmrg # Until real need of OS specific support for 14971e423a8fSmrg # particular features comes up, bare metal 14981e423a8fSmrg # configurations are quite functional. 14991e423a8fSmrg case $cpu in 15001e423a8fSmrg arm*) 15011e423a8fSmrg os=eabi 15021e423a8fSmrg ;; 15031e423a8fSmrg *) 15041e423a8fSmrg os=elf 15051e423a8fSmrg ;; 15061e423a8fSmrg esac 1507fe5e51b7Smrg ;; 1508fe5e51b7Smrg *) 15091e423a8fSmrg # No normalization, but not necessarily accepted, that comes below. 1510fe5e51b7Smrg ;; 1511fe5e51b7Smrgesac 15121e423a8fSmrg 1513fe5e51b7Smrgelse 1514fe5e51b7Smrg 1515fe5e51b7Smrg# Here we handle the default operating systems that come with various machines. 1516fe5e51b7Smrg# The value should be what the vendor currently ships out the door with their 1517fe5e51b7Smrg# machine or put another way, the most popular os provided with the machine. 1518fe5e51b7Smrg 1519fe5e51b7Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1520fe5e51b7Smrg# "-sun"), then you have to tell the case statement up towards the top 1521fe5e51b7Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1522fe5e51b7Smrg# will signal an error saying that MANUFACTURER isn't an operating 1523fe5e51b7Smrg# system, and we'll never get to this point. 1524fe5e51b7Smrg 15251e423a8fSmrgkernel= 15261e423a8fSmrgcase $cpu-$vendor in 15270bb88ba4Smrg score-*) 15281e423a8fSmrg os=elf 1529fe5e51b7Smrg ;; 15300bb88ba4Smrg spu-*) 15311e423a8fSmrg os=elf 1532fe5e51b7Smrg ;; 1533fe5e51b7Smrg *-acorn) 15341e423a8fSmrg os=riscix1.2 1535fe5e51b7Smrg ;; 1536fe5e51b7Smrg arm*-rebel) 15371e423a8fSmrg kernel=linux 15381e423a8fSmrg os=gnu 1539fe5e51b7Smrg ;; 1540fe5e51b7Smrg arm*-semi) 15411e423a8fSmrg os=aout 1542fe5e51b7Smrg ;; 15430bb88ba4Smrg c4x-* | tic4x-*) 15441e423a8fSmrg os=coff 15450bb88ba4Smrg ;; 1546493f84f4Smrg c8051-*) 15471e423a8fSmrg os=elf 15481e423a8fSmrg ;; 15491e423a8fSmrg clipper-intergraph) 15501e423a8fSmrg os=clix 1551493f84f4Smrg ;; 1552acd6767fSmrg hexagon-*) 15531e423a8fSmrg os=elf 1554acd6767fSmrg ;; 15550bb88ba4Smrg tic54x-*) 15561e423a8fSmrg os=coff 15570bb88ba4Smrg ;; 15580bb88ba4Smrg tic55x-*) 15591e423a8fSmrg os=coff 15600bb88ba4Smrg ;; 15610bb88ba4Smrg tic6x-*) 15621e423a8fSmrg os=coff 1563fe5e51b7Smrg ;; 1564fe5e51b7Smrg # This must come before the *-dec entry. 1565fe5e51b7Smrg pdp10-*) 15661e423a8fSmrg os=tops20 1567fe5e51b7Smrg ;; 1568fe5e51b7Smrg pdp11-*) 15691e423a8fSmrg os=none 1570fe5e51b7Smrg ;; 1571fe5e51b7Smrg *-dec | vax-*) 15721e423a8fSmrg os=ultrix4.2 1573fe5e51b7Smrg ;; 1574fe5e51b7Smrg m68*-apollo) 15751e423a8fSmrg os=domain 1576fe5e51b7Smrg ;; 1577fe5e51b7Smrg i386-sun) 15781e423a8fSmrg os=sunos4.0.2 1579fe5e51b7Smrg ;; 1580fe5e51b7Smrg m68000-sun) 15811e423a8fSmrg os=sunos3 1582fe5e51b7Smrg ;; 1583fe5e51b7Smrg m68*-cisco) 15841e423a8fSmrg os=aout 1585fe5e51b7Smrg ;; 15860bb88ba4Smrg mep-*) 15871e423a8fSmrg os=elf 1588fe5e51b7Smrg ;; 1589fe5e51b7Smrg mips*-cisco) 15901e423a8fSmrg os=elf 1591fe5e51b7Smrg ;; 1592fe5e51b7Smrg mips*-*) 15931e423a8fSmrg os=elf 1594fe5e51b7Smrg ;; 1595fe5e51b7Smrg or32-*) 15961e423a8fSmrg os=coff 1597fe5e51b7Smrg ;; 1598fe5e51b7Smrg *-tti) # must be before sparc entry or we get the wrong os. 15991e423a8fSmrg os=sysv3 1600fe5e51b7Smrg ;; 1601fe5e51b7Smrg sparc-* | *-sun) 16021e423a8fSmrg os=sunos4.1.1 1603fe5e51b7Smrg ;; 16041e423a8fSmrg pru-*) 16051e423a8fSmrg os=elf 1606fe5e51b7Smrg ;; 16071e423a8fSmrg *-be) 16081e423a8fSmrg os=beos 1609fe5e51b7Smrg ;; 1610fe5e51b7Smrg *-ibm) 16111e423a8fSmrg os=aix 1612fe5e51b7Smrg ;; 16130bb88ba4Smrg *-knuth) 16141e423a8fSmrg os=mmixware 1615fe5e51b7Smrg ;; 1616fe5e51b7Smrg *-wec) 16171e423a8fSmrg os=proelf 1618fe5e51b7Smrg ;; 1619fe5e51b7Smrg *-winbond) 16201e423a8fSmrg os=proelf 1621fe5e51b7Smrg ;; 1622fe5e51b7Smrg *-oki) 16231e423a8fSmrg os=proelf 1624fe5e51b7Smrg ;; 1625fe5e51b7Smrg *-hp) 16261e423a8fSmrg os=hpux 1627fe5e51b7Smrg ;; 1628fe5e51b7Smrg *-hitachi) 16291e423a8fSmrg os=hiux 1630fe5e51b7Smrg ;; 1631fe5e51b7Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 16321e423a8fSmrg os=sysv 1633fe5e51b7Smrg ;; 1634fe5e51b7Smrg *-cbm) 16351e423a8fSmrg os=amigaos 1636fe5e51b7Smrg ;; 1637fe5e51b7Smrg *-dg) 16381e423a8fSmrg os=dgux 1639fe5e51b7Smrg ;; 1640fe5e51b7Smrg *-dolphin) 16411e423a8fSmrg os=sysv3 1642fe5e51b7Smrg ;; 1643fe5e51b7Smrg m68k-ccur) 16441e423a8fSmrg os=rtu 1645fe5e51b7Smrg ;; 1646fe5e51b7Smrg m88k-omron*) 16471e423a8fSmrg os=luna 1648fe5e51b7Smrg ;; 16491e423a8fSmrg *-next) 16501e423a8fSmrg os=nextstep 1651fe5e51b7Smrg ;; 1652fe5e51b7Smrg *-sequent) 16531e423a8fSmrg os=ptx 1654fe5e51b7Smrg ;; 1655fe5e51b7Smrg *-crds) 16561e423a8fSmrg os=unos 1657fe5e51b7Smrg ;; 1658fe5e51b7Smrg *-ns) 16591e423a8fSmrg os=genix 1660fe5e51b7Smrg ;; 1661fe5e51b7Smrg i370-*) 16621e423a8fSmrg os=mvs 1663fe5e51b7Smrg ;; 1664fe5e51b7Smrg *-gould) 16651e423a8fSmrg os=sysv 1666fe5e51b7Smrg ;; 1667fe5e51b7Smrg *-highlevel) 16681e423a8fSmrg os=bsd 1669fe5e51b7Smrg ;; 1670fe5e51b7Smrg *-encore) 16711e423a8fSmrg os=bsd 1672fe5e51b7Smrg ;; 1673fe5e51b7Smrg *-sgi) 16741e423a8fSmrg os=irix 1675fe5e51b7Smrg ;; 1676fe5e51b7Smrg *-siemens) 16771e423a8fSmrg os=sysv4 1678fe5e51b7Smrg ;; 1679fe5e51b7Smrg *-masscomp) 16801e423a8fSmrg os=rtu 1681fe5e51b7Smrg ;; 1682fe5e51b7Smrg f30[01]-fujitsu | f700-fujitsu) 16831e423a8fSmrg os=uxpv 1684fe5e51b7Smrg ;; 1685fe5e51b7Smrg *-rom68k) 16861e423a8fSmrg os=coff 1687fe5e51b7Smrg ;; 1688fe5e51b7Smrg *-*bug) 16891e423a8fSmrg os=coff 1690fe5e51b7Smrg ;; 1691fe5e51b7Smrg *-apple) 16921e423a8fSmrg os=macos 1693fe5e51b7Smrg ;; 1694fe5e51b7Smrg *-atari*) 16951e423a8fSmrg os=mint 16961e423a8fSmrg ;; 16971e423a8fSmrg *-wrs) 16981e423a8fSmrg os=vxworks 1699fe5e51b7Smrg ;; 1700fe5e51b7Smrg *) 17011e423a8fSmrg os=none 1702fe5e51b7Smrg ;; 1703fe5e51b7Smrgesac 17041e423a8fSmrg 1705fe5e51b7Smrgfi 1706fe5e51b7Smrg 17071e423a8fSmrg# Now, validate our (potentially fixed-up) OS. 17081e423a8fSmrgcase $os in 17091e423a8fSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 17101e423a8fSmrg musl* | newlib* | relibc* | uclibc*) 17111e423a8fSmrg ;; 17121e423a8fSmrg # Likewise for "kernel-abi" 17131e423a8fSmrg eabi* | gnueabi*) 17141e423a8fSmrg ;; 17151e423a8fSmrg # VxWorks passes extra cpu info in the 4th filed. 17161e423a8fSmrg simlinux | simwindows | spe) 17171e423a8fSmrg ;; 17181e423a8fSmrg # Now accept the basic system types. 17191e423a8fSmrg # The portable systems comes first. 17201e423a8fSmrg # Each alternative MUST end in a * to match a version number. 17211e423a8fSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 17221e423a8fSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 17231e423a8fSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 17241e423a8fSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 17251e423a8fSmrg | hiux* | abug | nacl* | netware* | windows* \ 17261e423a8fSmrg | os9* | macos* | osx* | ios* \ 17271e423a8fSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 17281e423a8fSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 17291e423a8fSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 17301e423a8fSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 17311e423a8fSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 17321e423a8fSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 17331e423a8fSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 17341e423a8fSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 17351e423a8fSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 17361e423a8fSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 17371e423a8fSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 17381e423a8fSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 17391e423a8fSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 17401e423a8fSmrg | midipix* | mingw32* | mingw64* | mint* \ 17411e423a8fSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 17421e423a8fSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 17431e423a8fSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 17441e423a8fSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 17451e423a8fSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 17461e423a8fSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 17471e423a8fSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 17481e423a8fSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 17491e423a8fSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 17501e423a8fSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 17511e423a8fSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 17521e423a8fSmrg ;; 17531e423a8fSmrg # This one is extra strict with allowed versions 17541e423a8fSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 17551e423a8fSmrg # Don't forget version if it is 3.2v4 or newer. 17561e423a8fSmrg ;; 17571e423a8fSmrg none) 17581e423a8fSmrg ;; 17591e423a8fSmrg *) 17601e423a8fSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 17611e423a8fSmrg exit 1 17621e423a8fSmrg ;; 17631e423a8fSmrgesac 17641e423a8fSmrg 17651e423a8fSmrg# As a final step for OS-related things, validate the OS-kernel combination 17661e423a8fSmrg# (given a valid OS), if there is a kernel. 17671e423a8fSmrgcase $kernel-$os in 17681e423a8fSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 17691e423a8fSmrg | linux-musl* | linux-relibc* | linux-uclibc* ) 17701e423a8fSmrg ;; 17711e423a8fSmrg uclinux-uclibc* ) 17721e423a8fSmrg ;; 17731e423a8fSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 17741e423a8fSmrg # These are just libc implementations, not actual OSes, and thus 17751e423a8fSmrg # require a kernel. 17761e423a8fSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 17771e423a8fSmrg exit 1 17781e423a8fSmrg ;; 17791e423a8fSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 17801e423a8fSmrg ;; 17811e423a8fSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 17821e423a8fSmrg ;; 17831e423a8fSmrg nto-qnx*) 17841e423a8fSmrg ;; 17851e423a8fSmrg os2-emx) 17861e423a8fSmrg ;; 17871e423a8fSmrg *-eabi* | *-gnueabi*) 17881e423a8fSmrg ;; 17891e423a8fSmrg -*) 17901e423a8fSmrg # Blank kernel with real OS is always fine. 17911e423a8fSmrg ;; 17921e423a8fSmrg *-*) 17931e423a8fSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 17941e423a8fSmrg exit 1 17951e423a8fSmrg ;; 17961e423a8fSmrgesac 17971e423a8fSmrg 1798fe5e51b7Smrg# Here we handle the case where we know the os, and the CPU type, but not the 1799fe5e51b7Smrg# manufacturer. We pick the logical manufacturer. 18001e423a8fSmrgcase $vendor in 18011e423a8fSmrg unknown) 18021e423a8fSmrg case $cpu-$os in 18031e423a8fSmrg *-riscix*) 1804fe5e51b7Smrg vendor=acorn 1805fe5e51b7Smrg ;; 18061e423a8fSmrg *-sunos*) 1807fe5e51b7Smrg vendor=sun 1808fe5e51b7Smrg ;; 18091e423a8fSmrg *-cnk* | *-aix*) 1810fe5e51b7Smrg vendor=ibm 1811fe5e51b7Smrg ;; 18121e423a8fSmrg *-beos*) 1813fe5e51b7Smrg vendor=be 1814fe5e51b7Smrg ;; 18151e423a8fSmrg *-hpux*) 1816fe5e51b7Smrg vendor=hp 1817fe5e51b7Smrg ;; 18181e423a8fSmrg *-mpeix*) 1819fe5e51b7Smrg vendor=hp 1820fe5e51b7Smrg ;; 18211e423a8fSmrg *-hiux*) 1822fe5e51b7Smrg vendor=hitachi 1823fe5e51b7Smrg ;; 18241e423a8fSmrg *-unos*) 1825fe5e51b7Smrg vendor=crds 1826fe5e51b7Smrg ;; 18271e423a8fSmrg *-dgux*) 1828fe5e51b7Smrg vendor=dg 1829fe5e51b7Smrg ;; 18301e423a8fSmrg *-luna*) 1831fe5e51b7Smrg vendor=omron 1832fe5e51b7Smrg ;; 18331e423a8fSmrg *-genix*) 1834fe5e51b7Smrg vendor=ns 1835fe5e51b7Smrg ;; 18361e423a8fSmrg *-clix*) 18371e423a8fSmrg vendor=intergraph 18381e423a8fSmrg ;; 18391e423a8fSmrg *-mvs* | *-opened*) 18401e423a8fSmrg vendor=ibm 18411e423a8fSmrg ;; 18421e423a8fSmrg *-os400*) 1843fe5e51b7Smrg vendor=ibm 1844fe5e51b7Smrg ;; 18451e423a8fSmrg s390-* | s390x-*) 1846fe5e51b7Smrg vendor=ibm 1847fe5e51b7Smrg ;; 18481e423a8fSmrg *-ptx*) 1849fe5e51b7Smrg vendor=sequent 1850fe5e51b7Smrg ;; 18511e423a8fSmrg *-tpf*) 1852fe5e51b7Smrg vendor=ibm 1853fe5e51b7Smrg ;; 18541e423a8fSmrg *-vxsim* | *-vxworks* | *-windiss*) 1855fe5e51b7Smrg vendor=wrs 1856fe5e51b7Smrg ;; 18571e423a8fSmrg *-aux*) 1858fe5e51b7Smrg vendor=apple 1859fe5e51b7Smrg ;; 18601e423a8fSmrg *-hms*) 1861fe5e51b7Smrg vendor=hitachi 1862fe5e51b7Smrg ;; 18631e423a8fSmrg *-mpw* | *-macos*) 1864fe5e51b7Smrg vendor=apple 1865fe5e51b7Smrg ;; 18661e423a8fSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1867fe5e51b7Smrg vendor=atari 1868fe5e51b7Smrg ;; 18691e423a8fSmrg *-vos*) 1870fe5e51b7Smrg vendor=stratus 1871fe5e51b7Smrg ;; 1872fe5e51b7Smrg esac 1873fe5e51b7Smrg ;; 1874fe5e51b7Smrgesac 1875fe5e51b7Smrg 18761e423a8fSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1877fe5e51b7Smrgexit 1878fe5e51b7Smrg 1879fe5e51b7Smrg# Local variables: 18801e423a8fSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 1881fe5e51b7Smrg# time-stamp-start: "timestamp='" 1882fe5e51b7Smrg# time-stamp-format: "%:y-%02m-%02d" 1883fe5e51b7Smrg# time-stamp-end: "'" 1884fe5e51b7Smrg# End: 1885