11a30de1fSmrg#! /bin/sh 21a30de1fSmrg# Configuration validation subroutine script. 36eaa481cSmrg# Copyright 1992-2021 Free Software Foundation, Inc. 41a30de1fSmrg 56eaa481cSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 66eaa481cSmrg 76eaa481cSmrgtimestamp='2021-08-14' 81a30de1fSmrg 9a733a5bfSmrg# This file is free software; you can redistribute it and/or modify it 10a733a5bfSmrg# under the terms of the GNU General Public License as published by 11a733a5bfSmrg# the Free Software Foundation; either version 3 of the License, or 121a30de1fSmrg# (at your option) any later version. 131a30de1fSmrg# 14a733a5bfSmrg# This program is distributed in the hope that it will be useful, but 15a733a5bfSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16a733a5bfSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17a733a5bfSmrg# General Public License for more details. 181a30de1fSmrg# 191a30de1fSmrg# You should have received a copy of the GNU General Public License 20423b239cSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 211a30de1fSmrg# 221a30de1fSmrg# As a special exception to the GNU General Public License, if you 231a30de1fSmrg# distribute this file as part of a program that contains a 241a30de1fSmrg# configuration script generated by Autoconf, you may include it under 25a733a5bfSmrg# the same distribution terms that you use for the rest of that 26a733a5bfSmrg# program. This Exception is an additional permission under section 7 27a733a5bfSmrg# of the GNU General Public License, version 3 ("GPLv3"). 281a30de1fSmrg 291a30de1fSmrg 301b983734Smrg# Please send patches to <config-patches@gnu.org>. 311a30de1fSmrg# 321a30de1fSmrg# Configuration subroutine to validate and canonicalize a configuration type. 331a30de1fSmrg# Supply the specified configuration type as an argument. 341a30de1fSmrg# If it is invalid, we print an error message on stderr and exit with code 1. 351a30de1fSmrg# Otherwise, we print the canonical config type on stdout and succeed. 361a30de1fSmrg 37ce62200cSmrg# You can get the latest version of this script from: 386eaa481cSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39ce62200cSmrg 401a30de1fSmrg# This file is supposed to be the same for all GNU packages 411a30de1fSmrg# and recognize all the CPU types, system types and aliases 421a30de1fSmrg# that are meaningful with *any* GNU software. 431a30de1fSmrg# Each package is responsible for reporting which valid configurations 441a30de1fSmrg# it does not support. The user should be able to distinguish 451a30de1fSmrg# a failure to support a valid configuration from a meaningless 461a30de1fSmrg# configuration. 471a30de1fSmrg 481a30de1fSmrg# The goal of this file is to map all the various variations of a given 491a30de1fSmrg# machine specification into a single specification in the form: 501a30de1fSmrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 511a30de1fSmrg# or in some cases, the newer four-part form: 521a30de1fSmrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 531a30de1fSmrg# It is wrong to echo any other type of specification. 541a30de1fSmrg 556eaa481cSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 566eaa481cSmrg# about features and limitations of the classic Bourne shell that were 576eaa481cSmrg# superseded or lifted in POSIX. However, this script identifies a wide 586eaa481cSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 596eaa481cSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 606eaa481cSmrg# have a pre-POSIX /bin/sh. 616eaa481cSmrg 621a30de1fSmrgme=`echo "$0" | sed -e 's,.*/,,'` 631a30de1fSmrg 641a30de1fSmrgusage="\ 65423b239cSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 661a30de1fSmrg 671a30de1fSmrgCanonicalize a configuration name. 681a30de1fSmrg 69423b239cSmrgOptions: 701a30de1fSmrg -h, --help print this help, then exit 711a30de1fSmrg -t, --time-stamp print date of last modification, then exit 721a30de1fSmrg -v, --version print version number, then exit 731a30de1fSmrg 741a30de1fSmrgReport bugs and patches to <config-patches@gnu.org>." 751a30de1fSmrg 761a30de1fSmrgversion="\ 771a30de1fSmrgGNU config.sub ($timestamp) 781a30de1fSmrg 796eaa481cSmrgCopyright 1992-2021 Free Software Foundation, Inc. 801a30de1fSmrg 811a30de1fSmrgThis is free software; see the source for copying conditions. There is NO 821a30de1fSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 831a30de1fSmrg 841a30de1fSmrghelp=" 851a30de1fSmrgTry \`$me --help' for more information." 861a30de1fSmrg 871a30de1fSmrg# Parse command line 881a30de1fSmrgwhile test $# -gt 0 ; do 891a30de1fSmrg case $1 in 901a30de1fSmrg --time-stamp | --time* | -t ) 911a30de1fSmrg echo "$timestamp" ; exit ;; 921a30de1fSmrg --version | -v ) 931a30de1fSmrg echo "$version" ; exit ;; 941a30de1fSmrg --help | --h* | -h ) 951a30de1fSmrg echo "$usage"; exit ;; 961a30de1fSmrg -- ) # Stop option processing 971a30de1fSmrg shift; break ;; 981a30de1fSmrg - ) # Use stdin as input. 991a30de1fSmrg break ;; 1001a30de1fSmrg -* ) 1016eaa481cSmrg echo "$me: invalid option $1$help" >&2 1021a30de1fSmrg exit 1 ;; 1031a30de1fSmrg 1041a30de1fSmrg *local*) 1051a30de1fSmrg # First pass through any local machine types. 106423b239cSmrg echo "$1" 1071a30de1fSmrg exit ;; 1081a30de1fSmrg 1091a30de1fSmrg * ) 1101a30de1fSmrg break ;; 1111a30de1fSmrg esac 1121a30de1fSmrgdone 1131a30de1fSmrg 1141a30de1fSmrgcase $# in 1151a30de1fSmrg 0) echo "$me: missing argument$help" >&2 1161a30de1fSmrg exit 1;; 1171a30de1fSmrg 1) ;; 1181a30de1fSmrg *) echo "$me: too many arguments$help" >&2 1191a30de1fSmrg exit 1;; 1201a30de1fSmrgesac 1211a30de1fSmrg 1226eaa481cSmrg# Split fields of configuration type 1236eaa481cSmrg# shellcheck disable=SC2162 1246eaa481cSmrgsaved_IFS=$IFS 1256eaa481cSmrgIFS="-" read field1 field2 field3 field4 <<EOF 1266eaa481cSmrg$1 1276eaa481cSmrgEOF 1286eaa481cSmrgIFS=$saved_IFS 1291a30de1fSmrg 1306eaa481cSmrg# Separate into logical components for further validation 1316eaa481cSmrgcase $1 in 1326eaa481cSmrg *-*-*-*-*) 1336eaa481cSmrg echo Invalid configuration \`"$1"\': more than four components >&2 1346eaa481cSmrg exit 1 135a733a5bfSmrg ;; 1366eaa481cSmrg *-*-*-*) 1376eaa481cSmrg basic_machine=$field1-$field2 1386eaa481cSmrg basic_os=$field3-$field4 1391a30de1fSmrg ;; 1406eaa481cSmrg *-*-*) 1416eaa481cSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 1426eaa481cSmrg # parts 1436eaa481cSmrg maybe_os=$field2-$field3 1446eaa481cSmrg case $maybe_os in 1456eaa481cSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 1466eaa481cSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 1476eaa481cSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 1486eaa481cSmrg | storm-chaos* | os2-emx* | rtmk-nova*) 1496eaa481cSmrg basic_machine=$field1 1506eaa481cSmrg basic_os=$maybe_os 1516eaa481cSmrg ;; 1526eaa481cSmrg android-linux) 1536eaa481cSmrg basic_machine=$field1-unknown 1546eaa481cSmrg basic_os=linux-android 1556eaa481cSmrg ;; 1566eaa481cSmrg *) 1576eaa481cSmrg basic_machine=$field1-$field2 1586eaa481cSmrg basic_os=$field3 1596eaa481cSmrg ;; 1606eaa481cSmrg esac 1611a30de1fSmrg ;; 1626eaa481cSmrg *-*) 1636eaa481cSmrg # A lone config we happen to match not fitting any pattern 1646eaa481cSmrg case $field1-$field2 in 1656eaa481cSmrg decstation-3100) 1666eaa481cSmrg basic_machine=mips-dec 1676eaa481cSmrg basic_os= 1686eaa481cSmrg ;; 1696eaa481cSmrg *-*) 1706eaa481cSmrg # Second component is usually, but not always the OS 1716eaa481cSmrg case $field2 in 1726eaa481cSmrg # Prevent following clause from handling this valid os 1736eaa481cSmrg sun*os*) 1746eaa481cSmrg basic_machine=$field1 1756eaa481cSmrg basic_os=$field2 1766eaa481cSmrg ;; 1776eaa481cSmrg zephyr*) 1786eaa481cSmrg basic_machine=$field1-unknown 1796eaa481cSmrg basic_os=$field2 1806eaa481cSmrg ;; 1816eaa481cSmrg # Manufacturers 1826eaa481cSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 1836eaa481cSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 1846eaa481cSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 1856eaa481cSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 1866eaa481cSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 1876eaa481cSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 1886eaa481cSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 1896eaa481cSmrg | microblaze* | sim | cisco \ 1906eaa481cSmrg | oki | wec | wrs | winbond) 1916eaa481cSmrg basic_machine=$field1-$field2 1926eaa481cSmrg basic_os= 1936eaa481cSmrg ;; 1946eaa481cSmrg *) 1956eaa481cSmrg basic_machine=$field1 1966eaa481cSmrg basic_os=$field2 1976eaa481cSmrg ;; 1986eaa481cSmrg esac 1996eaa481cSmrg ;; 2006eaa481cSmrg esac 2011a30de1fSmrg ;; 2026eaa481cSmrg *) 2036eaa481cSmrg # Convert single-component short-hands not valid as part of 2046eaa481cSmrg # multi-component configurations. 2056eaa481cSmrg case $field1 in 2066eaa481cSmrg 386bsd) 2076eaa481cSmrg basic_machine=i386-pc 2086eaa481cSmrg basic_os=bsd 2096eaa481cSmrg ;; 2106eaa481cSmrg a29khif) 2116eaa481cSmrg basic_machine=a29k-amd 2126eaa481cSmrg basic_os=udi 2136eaa481cSmrg ;; 2146eaa481cSmrg adobe68k) 2156eaa481cSmrg basic_machine=m68010-adobe 2166eaa481cSmrg basic_os=scout 2176eaa481cSmrg ;; 2186eaa481cSmrg alliant) 2196eaa481cSmrg basic_machine=fx80-alliant 2206eaa481cSmrg basic_os= 2216eaa481cSmrg ;; 2226eaa481cSmrg altos | altos3068) 2236eaa481cSmrg basic_machine=m68k-altos 2246eaa481cSmrg basic_os= 2256eaa481cSmrg ;; 2266eaa481cSmrg am29k) 2276eaa481cSmrg basic_machine=a29k-none 2286eaa481cSmrg basic_os=bsd 2296eaa481cSmrg ;; 2306eaa481cSmrg amdahl) 2316eaa481cSmrg basic_machine=580-amdahl 2326eaa481cSmrg basic_os=sysv 2336eaa481cSmrg ;; 2346eaa481cSmrg amiga) 2356eaa481cSmrg basic_machine=m68k-unknown 2366eaa481cSmrg basic_os= 2376eaa481cSmrg ;; 2386eaa481cSmrg amigaos | amigados) 2396eaa481cSmrg basic_machine=m68k-unknown 2406eaa481cSmrg basic_os=amigaos 2416eaa481cSmrg ;; 2426eaa481cSmrg amigaunix | amix) 2436eaa481cSmrg basic_machine=m68k-unknown 2446eaa481cSmrg basic_os=sysv4 2456eaa481cSmrg ;; 2466eaa481cSmrg apollo68) 2476eaa481cSmrg basic_machine=m68k-apollo 2486eaa481cSmrg basic_os=sysv 2496eaa481cSmrg ;; 2506eaa481cSmrg apollo68bsd) 2516eaa481cSmrg basic_machine=m68k-apollo 2526eaa481cSmrg basic_os=bsd 2536eaa481cSmrg ;; 2546eaa481cSmrg aros) 2556eaa481cSmrg basic_machine=i386-pc 2566eaa481cSmrg basic_os=aros 2576eaa481cSmrg ;; 2586eaa481cSmrg aux) 2596eaa481cSmrg basic_machine=m68k-apple 2606eaa481cSmrg basic_os=aux 2616eaa481cSmrg ;; 2626eaa481cSmrg balance) 2636eaa481cSmrg basic_machine=ns32k-sequent 2646eaa481cSmrg basic_os=dynix 2656eaa481cSmrg ;; 2666eaa481cSmrg blackfin) 2676eaa481cSmrg basic_machine=bfin-unknown 2686eaa481cSmrg basic_os=linux 2696eaa481cSmrg ;; 2706eaa481cSmrg cegcc) 2716eaa481cSmrg basic_machine=arm-unknown 2726eaa481cSmrg basic_os=cegcc 2736eaa481cSmrg ;; 2746eaa481cSmrg convex-c1) 2756eaa481cSmrg basic_machine=c1-convex 2766eaa481cSmrg basic_os=bsd 2776eaa481cSmrg ;; 2786eaa481cSmrg convex-c2) 2796eaa481cSmrg basic_machine=c2-convex 2806eaa481cSmrg basic_os=bsd 2816eaa481cSmrg ;; 2826eaa481cSmrg convex-c32) 2836eaa481cSmrg basic_machine=c32-convex 2846eaa481cSmrg basic_os=bsd 2856eaa481cSmrg ;; 2866eaa481cSmrg convex-c34) 2876eaa481cSmrg basic_machine=c34-convex 2886eaa481cSmrg basic_os=bsd 2896eaa481cSmrg ;; 2906eaa481cSmrg convex-c38) 2916eaa481cSmrg basic_machine=c38-convex 2926eaa481cSmrg basic_os=bsd 2936eaa481cSmrg ;; 2946eaa481cSmrg cray) 2956eaa481cSmrg basic_machine=j90-cray 2966eaa481cSmrg basic_os=unicos 2976eaa481cSmrg ;; 2986eaa481cSmrg crds | unos) 2996eaa481cSmrg basic_machine=m68k-crds 3006eaa481cSmrg basic_os= 3016eaa481cSmrg ;; 3026eaa481cSmrg da30) 3036eaa481cSmrg basic_machine=m68k-da30 3046eaa481cSmrg basic_os= 3056eaa481cSmrg ;; 3066eaa481cSmrg decstation | pmax | pmin | dec3100 | decstatn) 3076eaa481cSmrg basic_machine=mips-dec 3086eaa481cSmrg basic_os= 3096eaa481cSmrg ;; 3106eaa481cSmrg delta88) 3116eaa481cSmrg basic_machine=m88k-motorola 3126eaa481cSmrg basic_os=sysv3 3136eaa481cSmrg ;; 3146eaa481cSmrg dicos) 3156eaa481cSmrg basic_machine=i686-pc 3166eaa481cSmrg basic_os=dicos 3176eaa481cSmrg ;; 3186eaa481cSmrg djgpp) 3196eaa481cSmrg basic_machine=i586-pc 3206eaa481cSmrg basic_os=msdosdjgpp 3216eaa481cSmrg ;; 3226eaa481cSmrg ebmon29k) 3236eaa481cSmrg basic_machine=a29k-amd 3246eaa481cSmrg basic_os=ebmon 3256eaa481cSmrg ;; 3266eaa481cSmrg es1800 | OSE68k | ose68k | ose | OSE) 3276eaa481cSmrg basic_machine=m68k-ericsson 3286eaa481cSmrg basic_os=ose 3296eaa481cSmrg ;; 3306eaa481cSmrg gmicro) 3316eaa481cSmrg basic_machine=tron-gmicro 3326eaa481cSmrg basic_os=sysv 3336eaa481cSmrg ;; 3346eaa481cSmrg go32) 3356eaa481cSmrg basic_machine=i386-pc 3366eaa481cSmrg basic_os=go32 3376eaa481cSmrg ;; 3386eaa481cSmrg h8300hms) 3396eaa481cSmrg basic_machine=h8300-hitachi 3406eaa481cSmrg basic_os=hms 3416eaa481cSmrg ;; 3426eaa481cSmrg h8300xray) 3436eaa481cSmrg basic_machine=h8300-hitachi 3446eaa481cSmrg basic_os=xray 3456eaa481cSmrg ;; 3466eaa481cSmrg h8500hms) 3476eaa481cSmrg basic_machine=h8500-hitachi 3486eaa481cSmrg basic_os=hms 3496eaa481cSmrg ;; 3506eaa481cSmrg harris) 3516eaa481cSmrg basic_machine=m88k-harris 3526eaa481cSmrg basic_os=sysv3 3536eaa481cSmrg ;; 3546eaa481cSmrg hp300 | hp300hpux) 3556eaa481cSmrg basic_machine=m68k-hp 3566eaa481cSmrg basic_os=hpux 3576eaa481cSmrg ;; 3586eaa481cSmrg hp300bsd) 3596eaa481cSmrg basic_machine=m68k-hp 3606eaa481cSmrg basic_os=bsd 3616eaa481cSmrg ;; 3626eaa481cSmrg hppaosf) 3636eaa481cSmrg basic_machine=hppa1.1-hp 3646eaa481cSmrg basic_os=osf 3656eaa481cSmrg ;; 3666eaa481cSmrg hppro) 3676eaa481cSmrg basic_machine=hppa1.1-hp 3686eaa481cSmrg basic_os=proelf 3696eaa481cSmrg ;; 3706eaa481cSmrg i386mach) 3716eaa481cSmrg basic_machine=i386-mach 3726eaa481cSmrg basic_os=mach 3736eaa481cSmrg ;; 3746eaa481cSmrg isi68 | isi) 3756eaa481cSmrg basic_machine=m68k-isi 3766eaa481cSmrg basic_os=sysv 3776eaa481cSmrg ;; 3786eaa481cSmrg m68knommu) 3796eaa481cSmrg basic_machine=m68k-unknown 3806eaa481cSmrg basic_os=linux 3816eaa481cSmrg ;; 3826eaa481cSmrg magnum | m3230) 3836eaa481cSmrg basic_machine=mips-mips 3846eaa481cSmrg basic_os=sysv 3856eaa481cSmrg ;; 3866eaa481cSmrg merlin) 3876eaa481cSmrg basic_machine=ns32k-utek 3886eaa481cSmrg basic_os=sysv 3896eaa481cSmrg ;; 3906eaa481cSmrg mingw64) 3916eaa481cSmrg basic_machine=x86_64-pc 3926eaa481cSmrg basic_os=mingw64 3936eaa481cSmrg ;; 3946eaa481cSmrg mingw32) 3956eaa481cSmrg basic_machine=i686-pc 3966eaa481cSmrg basic_os=mingw32 3976eaa481cSmrg ;; 3986eaa481cSmrg mingw32ce) 3996eaa481cSmrg basic_machine=arm-unknown 4006eaa481cSmrg basic_os=mingw32ce 4016eaa481cSmrg ;; 4026eaa481cSmrg monitor) 4036eaa481cSmrg basic_machine=m68k-rom68k 4046eaa481cSmrg basic_os=coff 4056eaa481cSmrg ;; 4066eaa481cSmrg morphos) 4076eaa481cSmrg basic_machine=powerpc-unknown 4086eaa481cSmrg basic_os=morphos 4096eaa481cSmrg ;; 4106eaa481cSmrg moxiebox) 4116eaa481cSmrg basic_machine=moxie-unknown 4126eaa481cSmrg basic_os=moxiebox 4136eaa481cSmrg ;; 4146eaa481cSmrg msdos) 4156eaa481cSmrg basic_machine=i386-pc 4166eaa481cSmrg basic_os=msdos 4176eaa481cSmrg ;; 4186eaa481cSmrg msys) 4196eaa481cSmrg basic_machine=i686-pc 4206eaa481cSmrg basic_os=msys 4216eaa481cSmrg ;; 4226eaa481cSmrg mvs) 4236eaa481cSmrg basic_machine=i370-ibm 4246eaa481cSmrg basic_os=mvs 4256eaa481cSmrg ;; 4266eaa481cSmrg nacl) 4276eaa481cSmrg basic_machine=le32-unknown 4286eaa481cSmrg basic_os=nacl 4296eaa481cSmrg ;; 4306eaa481cSmrg ncr3000) 4316eaa481cSmrg basic_machine=i486-ncr 4326eaa481cSmrg basic_os=sysv4 4336eaa481cSmrg ;; 4346eaa481cSmrg netbsd386) 4356eaa481cSmrg basic_machine=i386-pc 4366eaa481cSmrg basic_os=netbsd 4376eaa481cSmrg ;; 4386eaa481cSmrg netwinder) 4396eaa481cSmrg basic_machine=armv4l-rebel 4406eaa481cSmrg basic_os=linux 4416eaa481cSmrg ;; 4426eaa481cSmrg news | news700 | news800 | news900) 4436eaa481cSmrg basic_machine=m68k-sony 4446eaa481cSmrg basic_os=newsos 4456eaa481cSmrg ;; 4466eaa481cSmrg news1000) 4476eaa481cSmrg basic_machine=m68030-sony 4486eaa481cSmrg basic_os=newsos 4496eaa481cSmrg ;; 4506eaa481cSmrg necv70) 4516eaa481cSmrg basic_machine=v70-nec 4526eaa481cSmrg basic_os=sysv 4536eaa481cSmrg ;; 4546eaa481cSmrg nh3000) 4556eaa481cSmrg basic_machine=m68k-harris 4566eaa481cSmrg basic_os=cxux 4576eaa481cSmrg ;; 4586eaa481cSmrg nh[45]000) 4596eaa481cSmrg basic_machine=m88k-harris 4606eaa481cSmrg basic_os=cxux 4616eaa481cSmrg ;; 4626eaa481cSmrg nindy960) 4636eaa481cSmrg basic_machine=i960-intel 4646eaa481cSmrg basic_os=nindy 4656eaa481cSmrg ;; 4666eaa481cSmrg mon960) 4676eaa481cSmrg basic_machine=i960-intel 4686eaa481cSmrg basic_os=mon960 4696eaa481cSmrg ;; 4706eaa481cSmrg nonstopux) 4716eaa481cSmrg basic_machine=mips-compaq 4726eaa481cSmrg basic_os=nonstopux 4736eaa481cSmrg ;; 4746eaa481cSmrg os400) 4756eaa481cSmrg basic_machine=powerpc-ibm 4766eaa481cSmrg basic_os=os400 4776eaa481cSmrg ;; 4786eaa481cSmrg OSE68000 | ose68000) 4796eaa481cSmrg basic_machine=m68000-ericsson 4806eaa481cSmrg basic_os=ose 4816eaa481cSmrg ;; 4826eaa481cSmrg os68k) 4836eaa481cSmrg basic_machine=m68k-none 4846eaa481cSmrg basic_os=os68k 4856eaa481cSmrg ;; 4866eaa481cSmrg paragon) 4876eaa481cSmrg basic_machine=i860-intel 4886eaa481cSmrg basic_os=osf 4896eaa481cSmrg ;; 4906eaa481cSmrg parisc) 4916eaa481cSmrg basic_machine=hppa-unknown 4926eaa481cSmrg basic_os=linux 4936eaa481cSmrg ;; 4946eaa481cSmrg psp) 4956eaa481cSmrg basic_machine=mipsallegrexel-sony 4966eaa481cSmrg basic_os=psp 4976eaa481cSmrg ;; 4986eaa481cSmrg pw32) 4996eaa481cSmrg basic_machine=i586-unknown 5006eaa481cSmrg basic_os=pw32 5016eaa481cSmrg ;; 5026eaa481cSmrg rdos | rdos64) 5036eaa481cSmrg basic_machine=x86_64-pc 5046eaa481cSmrg basic_os=rdos 5056eaa481cSmrg ;; 5066eaa481cSmrg rdos32) 5076eaa481cSmrg basic_machine=i386-pc 5086eaa481cSmrg basic_os=rdos 5096eaa481cSmrg ;; 5106eaa481cSmrg rom68k) 5116eaa481cSmrg basic_machine=m68k-rom68k 5126eaa481cSmrg basic_os=coff 5136eaa481cSmrg ;; 5146eaa481cSmrg sa29200) 5156eaa481cSmrg basic_machine=a29k-amd 5166eaa481cSmrg basic_os=udi 5176eaa481cSmrg ;; 5186eaa481cSmrg sei) 5196eaa481cSmrg basic_machine=mips-sei 5206eaa481cSmrg basic_os=seiux 5216eaa481cSmrg ;; 5226eaa481cSmrg sequent) 5236eaa481cSmrg basic_machine=i386-sequent 5246eaa481cSmrg basic_os= 5256eaa481cSmrg ;; 5266eaa481cSmrg sps7) 5276eaa481cSmrg basic_machine=m68k-bull 5286eaa481cSmrg basic_os=sysv2 5296eaa481cSmrg ;; 5306eaa481cSmrg st2000) 5316eaa481cSmrg basic_machine=m68k-tandem 5326eaa481cSmrg basic_os= 5336eaa481cSmrg ;; 5346eaa481cSmrg stratus) 5356eaa481cSmrg basic_machine=i860-stratus 5366eaa481cSmrg basic_os=sysv4 5376eaa481cSmrg ;; 5386eaa481cSmrg sun2) 5396eaa481cSmrg basic_machine=m68000-sun 5406eaa481cSmrg basic_os= 5416eaa481cSmrg ;; 5426eaa481cSmrg sun2os3) 5436eaa481cSmrg basic_machine=m68000-sun 5446eaa481cSmrg basic_os=sunos3 5456eaa481cSmrg ;; 5466eaa481cSmrg sun2os4) 5476eaa481cSmrg basic_machine=m68000-sun 5486eaa481cSmrg basic_os=sunos4 5496eaa481cSmrg ;; 5506eaa481cSmrg sun3) 5516eaa481cSmrg basic_machine=m68k-sun 5526eaa481cSmrg basic_os= 5536eaa481cSmrg ;; 5546eaa481cSmrg sun3os3) 5556eaa481cSmrg basic_machine=m68k-sun 5566eaa481cSmrg basic_os=sunos3 5576eaa481cSmrg ;; 5586eaa481cSmrg sun3os4) 5596eaa481cSmrg basic_machine=m68k-sun 5606eaa481cSmrg basic_os=sunos4 5616eaa481cSmrg ;; 5626eaa481cSmrg sun4) 5636eaa481cSmrg basic_machine=sparc-sun 5646eaa481cSmrg basic_os= 5656eaa481cSmrg ;; 5666eaa481cSmrg sun4os3) 5676eaa481cSmrg basic_machine=sparc-sun 5686eaa481cSmrg basic_os=sunos3 5696eaa481cSmrg ;; 5706eaa481cSmrg sun4os4) 5716eaa481cSmrg basic_machine=sparc-sun 5726eaa481cSmrg basic_os=sunos4 5736eaa481cSmrg ;; 5746eaa481cSmrg sun4sol2) 5756eaa481cSmrg basic_machine=sparc-sun 5766eaa481cSmrg basic_os=solaris2 5776eaa481cSmrg ;; 5786eaa481cSmrg sun386 | sun386i | roadrunner) 5796eaa481cSmrg basic_machine=i386-sun 5806eaa481cSmrg basic_os= 5816eaa481cSmrg ;; 5826eaa481cSmrg sv1) 5836eaa481cSmrg basic_machine=sv1-cray 5846eaa481cSmrg basic_os=unicos 5856eaa481cSmrg ;; 5866eaa481cSmrg symmetry) 5876eaa481cSmrg basic_machine=i386-sequent 5886eaa481cSmrg basic_os=dynix 5896eaa481cSmrg ;; 5906eaa481cSmrg t3e) 5916eaa481cSmrg basic_machine=alphaev5-cray 5926eaa481cSmrg basic_os=unicos 5936eaa481cSmrg ;; 5946eaa481cSmrg t90) 5956eaa481cSmrg basic_machine=t90-cray 5966eaa481cSmrg basic_os=unicos 5976eaa481cSmrg ;; 5986eaa481cSmrg toad1) 5996eaa481cSmrg basic_machine=pdp10-xkl 6006eaa481cSmrg basic_os=tops20 6016eaa481cSmrg ;; 6026eaa481cSmrg tpf) 6036eaa481cSmrg basic_machine=s390x-ibm 6046eaa481cSmrg basic_os=tpf 6056eaa481cSmrg ;; 6066eaa481cSmrg udi29k) 6076eaa481cSmrg basic_machine=a29k-amd 6086eaa481cSmrg basic_os=udi 6096eaa481cSmrg ;; 6106eaa481cSmrg ultra3) 6116eaa481cSmrg basic_machine=a29k-nyu 6126eaa481cSmrg basic_os=sym1 6136eaa481cSmrg ;; 6146eaa481cSmrg v810 | necv810) 6156eaa481cSmrg basic_machine=v810-nec 6166eaa481cSmrg basic_os=none 6176eaa481cSmrg ;; 6186eaa481cSmrg vaxv) 6196eaa481cSmrg basic_machine=vax-dec 6206eaa481cSmrg basic_os=sysv 6216eaa481cSmrg ;; 6226eaa481cSmrg vms) 6236eaa481cSmrg basic_machine=vax-dec 6246eaa481cSmrg basic_os=vms 6256eaa481cSmrg ;; 6266eaa481cSmrg vsta) 6276eaa481cSmrg basic_machine=i386-pc 6286eaa481cSmrg basic_os=vsta 6296eaa481cSmrg ;; 6306eaa481cSmrg vxworks960) 6316eaa481cSmrg basic_machine=i960-wrs 6326eaa481cSmrg basic_os=vxworks 6336eaa481cSmrg ;; 6346eaa481cSmrg vxworks68) 6356eaa481cSmrg basic_machine=m68k-wrs 6366eaa481cSmrg basic_os=vxworks 6376eaa481cSmrg ;; 6386eaa481cSmrg vxworks29k) 6396eaa481cSmrg basic_machine=a29k-wrs 6406eaa481cSmrg basic_os=vxworks 6416eaa481cSmrg ;; 6426eaa481cSmrg xbox) 6436eaa481cSmrg basic_machine=i686-pc 6446eaa481cSmrg basic_os=mingw32 6456eaa481cSmrg ;; 6466eaa481cSmrg ymp) 6476eaa481cSmrg basic_machine=ymp-cray 6486eaa481cSmrg basic_os=unicos 6496eaa481cSmrg ;; 6506eaa481cSmrg *) 6516eaa481cSmrg basic_machine=$1 6526eaa481cSmrg basic_os= 6536eaa481cSmrg ;; 6546eaa481cSmrg esac 6551a30de1fSmrg ;; 6561a30de1fSmrgesac 6571a30de1fSmrg 6586eaa481cSmrg# Decode 1-component or ad-hoc basic machines 6591a30de1fSmrgcase $basic_machine in 6606eaa481cSmrg # Here we handle the default manufacturer of certain CPU types. It is in 6616eaa481cSmrg # some cases the only manufacturer, in others, it is the most popular. 6626eaa481cSmrg w89k) 6636eaa481cSmrg cpu=hppa1.1 6646eaa481cSmrg vendor=winbond 6651b983734Smrg ;; 6666eaa481cSmrg op50n) 6676eaa481cSmrg cpu=hppa1.1 6686eaa481cSmrg vendor=oki 6691a30de1fSmrg ;; 6706eaa481cSmrg op60c) 6716eaa481cSmrg cpu=hppa1.1 6726eaa481cSmrg vendor=oki 6731a30de1fSmrg ;; 6746eaa481cSmrg ibm*) 6756eaa481cSmrg cpu=i370 6766eaa481cSmrg vendor=ibm 6771a30de1fSmrg ;; 6786eaa481cSmrg orion105) 6796eaa481cSmrg cpu=clipper 6806eaa481cSmrg vendor=highlevel 681a733a5bfSmrg ;; 6826eaa481cSmrg mac | mpw | mac-mpw) 6836eaa481cSmrg cpu=m68k 6846eaa481cSmrg vendor=apple 685a733a5bfSmrg ;; 6866eaa481cSmrg pmac | pmac-mpw) 6876eaa481cSmrg cpu=powerpc 6886eaa481cSmrg vendor=apple 689a733a5bfSmrg ;; 690a733a5bfSmrg 6911a30de1fSmrg # Recognize the various machine names and aliases which stand 6921a30de1fSmrg # for a CPU type and a company and sometimes even an OS. 6931a30de1fSmrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 6946eaa481cSmrg cpu=m68000 6956eaa481cSmrg vendor=att 6961a30de1fSmrg ;; 6971a30de1fSmrg 3b*) 6986eaa481cSmrg cpu=we32k 6996eaa481cSmrg vendor=att 700b7fb5eacSmrg ;; 701ce62200cSmrg bluegene*) 7026eaa481cSmrg cpu=powerpc 7036eaa481cSmrg vendor=ibm 7046eaa481cSmrg basic_os=cnk 7051a30de1fSmrg ;; 7061a30de1fSmrg decsystem10* | dec10*) 7076eaa481cSmrg cpu=pdp10 7086eaa481cSmrg vendor=dec 7096eaa481cSmrg basic_os=tops10 7101a30de1fSmrg ;; 7111a30de1fSmrg decsystem20* | dec20*) 7126eaa481cSmrg cpu=pdp10 7136eaa481cSmrg vendor=dec 7146eaa481cSmrg basic_os=tops20 7151a30de1fSmrg ;; 7161a30de1fSmrg delta | 3300 | motorola-3300 | motorola-delta \ 7171a30de1fSmrg | 3300-motorola | delta-motorola) 7186eaa481cSmrg cpu=m68k 7196eaa481cSmrg vendor=motorola 7201a30de1fSmrg ;; 721423b239cSmrg dpx2*) 7226eaa481cSmrg cpu=m68k 7236eaa481cSmrg vendor=bull 7246eaa481cSmrg basic_os=sysv3 7251a30de1fSmrg ;; 7261a30de1fSmrg encore | umax | mmax) 7276eaa481cSmrg cpu=ns32k 7286eaa481cSmrg vendor=encore 7291a30de1fSmrg ;; 7306eaa481cSmrg elxsi) 7316eaa481cSmrg cpu=elxsi 7326eaa481cSmrg vendor=elxsi 7336eaa481cSmrg basic_os=${basic_os:-bsd} 7341a30de1fSmrg ;; 7351a30de1fSmrg fx2800) 7366eaa481cSmrg cpu=i860 7376eaa481cSmrg vendor=alliant 7381a30de1fSmrg ;; 7391a30de1fSmrg genix) 7406eaa481cSmrg cpu=ns32k 7416eaa481cSmrg vendor=ns 7421a30de1fSmrg ;; 7431a30de1fSmrg h3050r* | hiux*) 7446eaa481cSmrg cpu=hppa1.1 7456eaa481cSmrg vendor=hitachi 7466eaa481cSmrg basic_os=hiuxwe2 7471a30de1fSmrg ;; 7481a30de1fSmrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 7496eaa481cSmrg cpu=hppa1.0 7506eaa481cSmrg vendor=hp 7511a30de1fSmrg ;; 7521a30de1fSmrg hp9k2[0-9][0-9] | hp9k31[0-9]) 7536eaa481cSmrg cpu=m68000 7546eaa481cSmrg vendor=hp 7551a30de1fSmrg ;; 7561a30de1fSmrg hp9k3[2-9][0-9]) 7576eaa481cSmrg cpu=m68k 7586eaa481cSmrg vendor=hp 7591a30de1fSmrg ;; 7601a30de1fSmrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 7616eaa481cSmrg cpu=hppa1.0 7626eaa481cSmrg vendor=hp 7631a30de1fSmrg ;; 7641a30de1fSmrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 7656eaa481cSmrg cpu=hppa1.1 7666eaa481cSmrg vendor=hp 7671a30de1fSmrg ;; 7681a30de1fSmrg hp9k78[0-9] | hp78[0-9]) 7691a30de1fSmrg # FIXME: really hppa2.0-hp 7706eaa481cSmrg cpu=hppa1.1 7716eaa481cSmrg vendor=hp 7721a30de1fSmrg ;; 7731a30de1fSmrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 7741a30de1fSmrg # FIXME: really hppa2.0-hp 7756eaa481cSmrg cpu=hppa1.1 7766eaa481cSmrg vendor=hp 7771a30de1fSmrg ;; 7781a30de1fSmrg hp9k8[0-9][13679] | hp8[0-9][13679]) 7796eaa481cSmrg cpu=hppa1.1 7806eaa481cSmrg vendor=hp 7811a30de1fSmrg ;; 7821a30de1fSmrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 7836eaa481cSmrg cpu=hppa1.0 7846eaa481cSmrg vendor=hp 7851a30de1fSmrg ;; 7861a30de1fSmrg i*86v32) 7876eaa481cSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7886eaa481cSmrg vendor=pc 7896eaa481cSmrg basic_os=sysv32 7901a30de1fSmrg ;; 7911a30de1fSmrg i*86v4*) 7926eaa481cSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7936eaa481cSmrg vendor=pc 7946eaa481cSmrg basic_os=sysv4 7951a30de1fSmrg ;; 7961a30de1fSmrg i*86v) 7976eaa481cSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7986eaa481cSmrg vendor=pc 7996eaa481cSmrg basic_os=sysv 8001a30de1fSmrg ;; 8011a30de1fSmrg i*86sol2) 8026eaa481cSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 8036eaa481cSmrg vendor=pc 8046eaa481cSmrg basic_os=solaris2 8051a30de1fSmrg ;; 8066eaa481cSmrg j90 | j90-cray) 8076eaa481cSmrg cpu=j90 8086eaa481cSmrg vendor=cray 8096eaa481cSmrg basic_os=${basic_os:-unicos} 8101a30de1fSmrg ;; 8111a30de1fSmrg iris | iris4d) 8126eaa481cSmrg cpu=mips 8136eaa481cSmrg vendor=sgi 8146eaa481cSmrg case $basic_os in 8156eaa481cSmrg irix*) 8161a30de1fSmrg ;; 8171a30de1fSmrg *) 8186eaa481cSmrg basic_os=irix4 8191a30de1fSmrg ;; 8201a30de1fSmrg esac 8211a30de1fSmrg ;; 8221a30de1fSmrg miniframe) 8236eaa481cSmrg cpu=m68000 8246eaa481cSmrg vendor=convergent 8251a30de1fSmrg ;; 8266eaa481cSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 8276eaa481cSmrg cpu=m68k 8286eaa481cSmrg vendor=atari 8296eaa481cSmrg basic_os=mint 8301a30de1fSmrg ;; 8311a30de1fSmrg news-3600 | risc-news) 8326eaa481cSmrg cpu=mips 8336eaa481cSmrg vendor=sony 8346eaa481cSmrg basic_os=newsos 8351a30de1fSmrg ;; 836423b239cSmrg next | m*-next) 8376eaa481cSmrg cpu=m68k 8386eaa481cSmrg vendor=next 8396eaa481cSmrg case $basic_os in 8406eaa481cSmrg openstep*) 8416eaa481cSmrg ;; 8426eaa481cSmrg nextstep*) 8431a30de1fSmrg ;; 8446eaa481cSmrg ns2*) 8456eaa481cSmrg basic_os=nextstep2 8461a30de1fSmrg ;; 8471a30de1fSmrg *) 8486eaa481cSmrg basic_os=nextstep3 8491a30de1fSmrg ;; 8501a30de1fSmrg esac 8511a30de1fSmrg ;; 8521a30de1fSmrg np1) 8536eaa481cSmrg cpu=np1 8546eaa481cSmrg vendor=gould 855423b239cSmrg ;; 8561a30de1fSmrg op50n-* | op60c-*) 8576eaa481cSmrg cpu=hppa1.1 8586eaa481cSmrg vendor=oki 8596eaa481cSmrg basic_os=proelf 8601a30de1fSmrg ;; 8611a30de1fSmrg pa-hitachi) 8626eaa481cSmrg cpu=hppa1.1 8636eaa481cSmrg vendor=hitachi 8646eaa481cSmrg basic_os=hiuxwe2 865b7fb5eacSmrg ;; 8661a30de1fSmrg pbd) 8676eaa481cSmrg cpu=sparc 8686eaa481cSmrg vendor=tti 8691a30de1fSmrg ;; 8701a30de1fSmrg pbb) 8716eaa481cSmrg cpu=m68k 8726eaa481cSmrg vendor=tti 8731a30de1fSmrg ;; 8746eaa481cSmrg pc532) 8756eaa481cSmrg cpu=ns32k 8766eaa481cSmrg vendor=pc532 8771a30de1fSmrg ;; 8781a30de1fSmrg pn) 8796eaa481cSmrg cpu=pn 8806eaa481cSmrg vendor=gould 8811a30de1fSmrg ;; 8826eaa481cSmrg power) 8836eaa481cSmrg cpu=power 8846eaa481cSmrg vendor=ibm 8851a30de1fSmrg ;; 8866eaa481cSmrg ps2) 8876eaa481cSmrg cpu=i386 8886eaa481cSmrg vendor=ibm 8891a30de1fSmrg ;; 8906eaa481cSmrg rm[46]00) 8916eaa481cSmrg cpu=mips 8926eaa481cSmrg vendor=siemens 8931a30de1fSmrg ;; 8946eaa481cSmrg rtpc | rtpc-*) 8956eaa481cSmrg cpu=romp 8966eaa481cSmrg vendor=ibm 8971a30de1fSmrg ;; 8986eaa481cSmrg sde) 8996eaa481cSmrg cpu=mipsisa32 9006eaa481cSmrg vendor=sde 9016eaa481cSmrg basic_os=${basic_os:-elf} 9021a30de1fSmrg ;; 9036eaa481cSmrg simso-wrs) 9046eaa481cSmrg cpu=sparclite 9056eaa481cSmrg vendor=wrs 9066eaa481cSmrg basic_os=vxworks 9071a30de1fSmrg ;; 9086eaa481cSmrg tower | tower-32) 9096eaa481cSmrg cpu=m68k 9106eaa481cSmrg vendor=ncr 9111a30de1fSmrg ;; 9126eaa481cSmrg vpp*|vx|vx-*) 9136eaa481cSmrg cpu=f301 9146eaa481cSmrg vendor=fujitsu 915a733a5bfSmrg ;; 9166eaa481cSmrg w65) 9176eaa481cSmrg cpu=w65 9186eaa481cSmrg vendor=wdc 9191a30de1fSmrg ;; 9206eaa481cSmrg w89k-*) 9216eaa481cSmrg cpu=hppa1.1 9226eaa481cSmrg vendor=winbond 9236eaa481cSmrg basic_os=proelf 9241a30de1fSmrg ;; 9256eaa481cSmrg none) 9266eaa481cSmrg cpu=none 9276eaa481cSmrg vendor=none 9281a30de1fSmrg ;; 9296eaa481cSmrg leon|leon[3-9]) 9306eaa481cSmrg cpu=sparc 9316eaa481cSmrg vendor=$basic_machine 9321a30de1fSmrg ;; 9336eaa481cSmrg leon-*|leon[3-9]-*) 9346eaa481cSmrg cpu=sparc 9356eaa481cSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 9361a30de1fSmrg ;; 9376eaa481cSmrg 9386eaa481cSmrg *-*) 9396eaa481cSmrg # shellcheck disable=SC2162 9406eaa481cSmrg saved_IFS=$IFS 9416eaa481cSmrg IFS="-" read cpu vendor <<EOF 9426eaa481cSmrg$basic_machine 9436eaa481cSmrgEOF 9446eaa481cSmrg IFS=$saved_IFS 9451a30de1fSmrg ;; 9466eaa481cSmrg # We use `pc' rather than `unknown' 9476eaa481cSmrg # because (1) that's what they normally are, and 9486eaa481cSmrg # (2) the word "unknown" tends to confuse beginning users. 9496eaa481cSmrg i*86 | x86_64) 9506eaa481cSmrg cpu=$basic_machine 9516eaa481cSmrg vendor=pc 9521a30de1fSmrg ;; 9536eaa481cSmrg # These rules are duplicated from below for sake of the special case above; 9546eaa481cSmrg # i.e. things that normalized to x86 arches should also default to "pc" 9556eaa481cSmrg pc98) 9566eaa481cSmrg cpu=i386 9576eaa481cSmrg vendor=pc 9581a30de1fSmrg ;; 9596eaa481cSmrg x64 | amd64) 9606eaa481cSmrg cpu=x86_64 9616eaa481cSmrg vendor=pc 9621a30de1fSmrg ;; 9636eaa481cSmrg # Recognize the basic CPU types without company name. 9646eaa481cSmrg *) 9656eaa481cSmrg cpu=$basic_machine 9666eaa481cSmrg vendor=unknown 9671a30de1fSmrg ;; 9686eaa481cSmrgesac 9696eaa481cSmrg 9706eaa481cSmrgunset -v basic_machine 9716eaa481cSmrg 9726eaa481cSmrg# Decode basic machines in the full and proper CPU-Company form. 9736eaa481cSmrgcase $cpu-$vendor in 9746eaa481cSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 9756eaa481cSmrg # some cases the only manufacturer, in others, it is the most popular. 9766eaa481cSmrg craynv-unknown) 9776eaa481cSmrg vendor=cray 9786eaa481cSmrg basic_os=${basic_os:-unicosmp} 9791a30de1fSmrg ;; 9806eaa481cSmrg c90-unknown | c90-cray) 9816eaa481cSmrg vendor=cray 9826eaa481cSmrg basic_os=${Basic_os:-unicos} 9831a30de1fSmrg ;; 9846eaa481cSmrg fx80-unknown) 9856eaa481cSmrg vendor=alliant 986b7fb5eacSmrg ;; 9876eaa481cSmrg romp-unknown) 9886eaa481cSmrg vendor=ibm 9891a30de1fSmrg ;; 9906eaa481cSmrg mmix-unknown) 9916eaa481cSmrg vendor=knuth 9921a30de1fSmrg ;; 9936eaa481cSmrg microblaze-unknown | microblazeel-unknown) 9946eaa481cSmrg vendor=xilinx 9951a30de1fSmrg ;; 9966eaa481cSmrg rs6000-unknown) 9976eaa481cSmrg vendor=ibm 9981a30de1fSmrg ;; 9996eaa481cSmrg vax-unknown) 10006eaa481cSmrg vendor=dec 10011a30de1fSmrg ;; 10026eaa481cSmrg pdp11-unknown) 10036eaa481cSmrg vendor=dec 1004a733a5bfSmrg ;; 10056eaa481cSmrg we32k-unknown) 10066eaa481cSmrg vendor=att 10071a30de1fSmrg ;; 10086eaa481cSmrg cydra-unknown) 10096eaa481cSmrg vendor=cydrome 10101a30de1fSmrg ;; 10116eaa481cSmrg i370-ibm*) 10126eaa481cSmrg vendor=ibm 10131a30de1fSmrg ;; 10146eaa481cSmrg orion-unknown) 10156eaa481cSmrg vendor=highlevel 10161a30de1fSmrg ;; 10176eaa481cSmrg xps-unknown | xps100-unknown) 10186eaa481cSmrg cpu=xps100 10196eaa481cSmrg vendor=honeywell 10201a30de1fSmrg ;; 10216eaa481cSmrg 10226eaa481cSmrg # Here we normalize CPU types with a missing or matching vendor 10236eaa481cSmrg dpx20-unknown | dpx20-bull) 10246eaa481cSmrg cpu=rs6000 10256eaa481cSmrg vendor=bull 10266eaa481cSmrg basic_os=${basic_os:-bosx} 10271a30de1fSmrg ;; 10286eaa481cSmrg 10296eaa481cSmrg # Here we normalize CPU types irrespective of the vendor 10306eaa481cSmrg amd64-*) 10316eaa481cSmrg cpu=x86_64 10321a30de1fSmrg ;; 10336eaa481cSmrg blackfin-*) 10346eaa481cSmrg cpu=bfin 10356eaa481cSmrg basic_os=linux 10361a30de1fSmrg ;; 10376eaa481cSmrg c54x-*) 10386eaa481cSmrg cpu=tic54x 10391a30de1fSmrg ;; 10406eaa481cSmrg c55x-*) 10416eaa481cSmrg cpu=tic55x 10421a30de1fSmrg ;; 10436eaa481cSmrg c6x-*) 10446eaa481cSmrg cpu=tic6x 10451a30de1fSmrg ;; 10466eaa481cSmrg e500v[12]-*) 10476eaa481cSmrg cpu=powerpc 10486eaa481cSmrg basic_os=${basic_os}"spe" 10491a30de1fSmrg ;; 10506eaa481cSmrg mips3*-*) 10516eaa481cSmrg cpu=mips64 10521a30de1fSmrg ;; 10536eaa481cSmrg ms1-*) 10546eaa481cSmrg cpu=mt 10551a30de1fSmrg ;; 10566eaa481cSmrg m68knommu-*) 10576eaa481cSmrg cpu=m68k 10586eaa481cSmrg basic_os=linux 10591a30de1fSmrg ;; 10606eaa481cSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 10616eaa481cSmrg cpu=s12z 1062b7fb5eacSmrg ;; 10636eaa481cSmrg openrisc-*) 10646eaa481cSmrg cpu=or32 10651a30de1fSmrg ;; 10666eaa481cSmrg parisc-*) 10676eaa481cSmrg cpu=hppa 10686eaa481cSmrg basic_os=linux 10691a30de1fSmrg ;; 10706eaa481cSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 10716eaa481cSmrg cpu=i586 10721a30de1fSmrg ;; 10736eaa481cSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 10746eaa481cSmrg cpu=i686 10751a30de1fSmrg ;; 10766eaa481cSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 10776eaa481cSmrg cpu=i686 10781a30de1fSmrg ;; 10796eaa481cSmrg pentium4-*) 10806eaa481cSmrg cpu=i786 10811a30de1fSmrg ;; 10826eaa481cSmrg pc98-*) 10836eaa481cSmrg cpu=i386 10841a30de1fSmrg ;; 10856eaa481cSmrg ppc-* | ppcbe-*) 10866eaa481cSmrg cpu=powerpc 10871a30de1fSmrg ;; 10886eaa481cSmrg ppcle-* | powerpclittle-*) 10896eaa481cSmrg cpu=powerpcle 10901a30de1fSmrg ;; 10916eaa481cSmrg ppc64-*) 10926eaa481cSmrg cpu=powerpc64 10931a30de1fSmrg ;; 10946eaa481cSmrg ppc64le-* | powerpc64little-*) 10956eaa481cSmrg cpu=powerpc64le 10961a30de1fSmrg ;; 10976eaa481cSmrg sb1-*) 10986eaa481cSmrg cpu=mipsisa64sb1 10991a30de1fSmrg ;; 11006eaa481cSmrg sb1el-*) 11016eaa481cSmrg cpu=mipsisa64sb1el 11021a30de1fSmrg ;; 11036eaa481cSmrg sh5e[lb]-*) 11046eaa481cSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 11051a30de1fSmrg ;; 11066eaa481cSmrg spur-*) 11076eaa481cSmrg cpu=spur 11081a30de1fSmrg ;; 11096eaa481cSmrg strongarm-* | thumb-*) 11106eaa481cSmrg cpu=arm 11111a30de1fSmrg ;; 11126eaa481cSmrg tx39-*) 11136eaa481cSmrg cpu=mipstx39 1114423b239cSmrg ;; 11156eaa481cSmrg tx39el-*) 11166eaa481cSmrg cpu=mipstx39el 11171a30de1fSmrg ;; 11186eaa481cSmrg x64-*) 11196eaa481cSmrg cpu=x86_64 11201a30de1fSmrg ;; 1121a733a5bfSmrg xscale-* | xscalee[bl]-*) 11226eaa481cSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 11231a30de1fSmrg ;; 11246eaa481cSmrg arm64-*) 11256eaa481cSmrg cpu=aarch64 11261a30de1fSmrg ;; 11271a30de1fSmrg 11286eaa481cSmrg # Recognize the canonical CPU Types that limit and/or modify the 11296eaa481cSmrg # company names they are paired with. 11306eaa481cSmrg cr16-*) 11316eaa481cSmrg basic_os=${basic_os:-elf} 11321a30de1fSmrg ;; 11336eaa481cSmrg crisv32-* | etraxfs*-*) 11346eaa481cSmrg cpu=crisv32 11356eaa481cSmrg vendor=axis 11361a30de1fSmrg ;; 11376eaa481cSmrg cris-* | etrax*-*) 11386eaa481cSmrg cpu=cris 11396eaa481cSmrg vendor=axis 11401a30de1fSmrg ;; 11416eaa481cSmrg crx-*) 11426eaa481cSmrg basic_os=${basic_os:-elf} 11431a30de1fSmrg ;; 11446eaa481cSmrg neo-tandem) 11456eaa481cSmrg cpu=neo 11466eaa481cSmrg vendor=tandem 11471a30de1fSmrg ;; 11486eaa481cSmrg nse-tandem) 11496eaa481cSmrg cpu=nse 11506eaa481cSmrg vendor=tandem 11511a30de1fSmrg ;; 11526eaa481cSmrg nsr-tandem) 11536eaa481cSmrg cpu=nsr 11546eaa481cSmrg vendor=tandem 11551a30de1fSmrg ;; 11566eaa481cSmrg nsv-tandem) 11576eaa481cSmrg cpu=nsv 11586eaa481cSmrg vendor=tandem 11591a30de1fSmrg ;; 11606eaa481cSmrg nsx-tandem) 11616eaa481cSmrg cpu=nsx 11626eaa481cSmrg vendor=tandem 11631a30de1fSmrg ;; 11646eaa481cSmrg mipsallegrexel-sony) 11656eaa481cSmrg cpu=mipsallegrexel 11666eaa481cSmrg vendor=sony 11671a30de1fSmrg ;; 11686eaa481cSmrg tile*-*) 11696eaa481cSmrg basic_os=${basic_os:-linux-gnu} 11701a30de1fSmrg ;; 11716eaa481cSmrg 11721a30de1fSmrg *) 11736eaa481cSmrg # Recognize the canonical CPU types that are allowed with any 11746eaa481cSmrg # company name. 11756eaa481cSmrg case $cpu in 11766eaa481cSmrg 1750a | 580 \ 11776eaa481cSmrg | a29k \ 11786eaa481cSmrg | aarch64 | aarch64_be \ 11796eaa481cSmrg | abacus \ 11806eaa481cSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 11816eaa481cSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 11826eaa481cSmrg | alphapca5[67] | alpha64pca5[67] \ 11836eaa481cSmrg | am33_2.0 \ 11846eaa481cSmrg | amdgcn \ 11856eaa481cSmrg | arc | arceb | arc32 | arc64 \ 11866eaa481cSmrg | arm | arm[lb]e | arme[lb] | armv* \ 11876eaa481cSmrg | avr | avr32 \ 11886eaa481cSmrg | asmjs \ 11896eaa481cSmrg | ba \ 11906eaa481cSmrg | be32 | be64 \ 11916eaa481cSmrg | bfin | bpf | bs2000 \ 11926eaa481cSmrg | c[123]* | c30 | [cjt]90 | c4x \ 11936eaa481cSmrg | c8051 | clipper | craynv | csky | cydra \ 11946eaa481cSmrg | d10v | d30v | dlx | dsp16xx \ 11956eaa481cSmrg | e2k | elxsi | epiphany \ 11966eaa481cSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 11976eaa481cSmrg | h8300 | h8500 \ 11986eaa481cSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 11996eaa481cSmrg | hexagon \ 12006eaa481cSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 12016eaa481cSmrg | ip2k | iq2000 \ 12026eaa481cSmrg | k1om \ 12036eaa481cSmrg | le32 | le64 \ 12046eaa481cSmrg | lm32 \ 12056eaa481cSmrg | loongarch32 | loongarch64 | loongarchx32 \ 12066eaa481cSmrg | m32c | m32r | m32rle \ 12076eaa481cSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 12086eaa481cSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 12096eaa481cSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 12106eaa481cSmrg | microblaze | microblazeel \ 12116eaa481cSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 12126eaa481cSmrg | mips16 \ 12136eaa481cSmrg | mips64 | mips64eb | mips64el \ 12146eaa481cSmrg | mips64octeon | mips64octeonel \ 12156eaa481cSmrg | mips64orion | mips64orionel \ 12166eaa481cSmrg | mips64r5900 | mips64r5900el \ 12176eaa481cSmrg | mips64vr | mips64vrel \ 12186eaa481cSmrg | mips64vr4100 | mips64vr4100el \ 12196eaa481cSmrg | mips64vr4300 | mips64vr4300el \ 12206eaa481cSmrg | mips64vr5000 | mips64vr5000el \ 12216eaa481cSmrg | mips64vr5900 | mips64vr5900el \ 12226eaa481cSmrg | mipsisa32 | mipsisa32el \ 12236eaa481cSmrg | mipsisa32r2 | mipsisa32r2el \ 12246eaa481cSmrg | mipsisa32r3 | mipsisa32r3el \ 12256eaa481cSmrg | mipsisa32r5 | mipsisa32r5el \ 12266eaa481cSmrg | mipsisa32r6 | mipsisa32r6el \ 12276eaa481cSmrg | mipsisa64 | mipsisa64el \ 12286eaa481cSmrg | mipsisa64r2 | mipsisa64r2el \ 12296eaa481cSmrg | mipsisa64r3 | mipsisa64r3el \ 12306eaa481cSmrg | mipsisa64r5 | mipsisa64r5el \ 12316eaa481cSmrg | mipsisa64r6 | mipsisa64r6el \ 12326eaa481cSmrg | mipsisa64sb1 | mipsisa64sb1el \ 12336eaa481cSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 12346eaa481cSmrg | mipsr5900 | mipsr5900el \ 12356eaa481cSmrg | mipstx39 | mipstx39el \ 12366eaa481cSmrg | mmix \ 12376eaa481cSmrg | mn10200 | mn10300 \ 12386eaa481cSmrg | moxie \ 12396eaa481cSmrg | mt \ 12406eaa481cSmrg | msp430 \ 12416eaa481cSmrg | nds32 | nds32le | nds32be \ 12426eaa481cSmrg | nfp \ 12436eaa481cSmrg | nios | nios2 | nios2eb | nios2el \ 12446eaa481cSmrg | none | np1 | ns16k | ns32k | nvptx \ 12456eaa481cSmrg | open8 \ 12466eaa481cSmrg | or1k* \ 12476eaa481cSmrg | or32 \ 12486eaa481cSmrg | orion \ 12496eaa481cSmrg | picochip \ 12506eaa481cSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 12516eaa481cSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 12526eaa481cSmrg | pru \ 12536eaa481cSmrg | pyramid \ 12546eaa481cSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 12556eaa481cSmrg | rl78 | romp | rs6000 | rx \ 12566eaa481cSmrg | s390 | s390x \ 12576eaa481cSmrg | score \ 12586eaa481cSmrg | sh | shl \ 12596eaa481cSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 12606eaa481cSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 12616eaa481cSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 12626eaa481cSmrg | sparclite \ 12636eaa481cSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12646eaa481cSmrg | spu \ 12656eaa481cSmrg | tahoe \ 12666eaa481cSmrg | thumbv7* \ 12676eaa481cSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 12686eaa481cSmrg | tron \ 12696eaa481cSmrg | ubicom32 \ 12706eaa481cSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 12716eaa481cSmrg | vax \ 12726eaa481cSmrg | visium \ 12736eaa481cSmrg | w65 \ 12746eaa481cSmrg | wasm32 | wasm64 \ 12756eaa481cSmrg | we32k \ 12766eaa481cSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 12776eaa481cSmrg | xstormy16 | xtensa* \ 12786eaa481cSmrg | ymp \ 12796eaa481cSmrg | z8k | z80) 12806eaa481cSmrg ;; 12816eaa481cSmrg 12826eaa481cSmrg *) 12836eaa481cSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 12846eaa481cSmrg exit 1 12856eaa481cSmrg ;; 12866eaa481cSmrg esac 12871a30de1fSmrg ;; 12881a30de1fSmrgesac 12891a30de1fSmrg 12901a30de1fSmrg# Here we canonicalize certain aliases for manufacturers. 12916eaa481cSmrgcase $vendor in 12926eaa481cSmrg digital*) 12936eaa481cSmrg vendor=dec 12941a30de1fSmrg ;; 12956eaa481cSmrg commodore*) 12966eaa481cSmrg vendor=cbm 12971a30de1fSmrg ;; 12981a30de1fSmrg *) 12991a30de1fSmrg ;; 13001a30de1fSmrgesac 13011a30de1fSmrg 13021a30de1fSmrg# Decode manufacturer-specific aliases for certain operating systems. 13031a30de1fSmrg 13046eaa481cSmrgif test x$basic_os != x 13051a30de1fSmrgthen 13066eaa481cSmrg 13076eaa481cSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 13086eaa481cSmrg# set os. 13096eaa481cSmrgcase $basic_os in 13106eaa481cSmrg gnu/linux*) 13116eaa481cSmrg kernel=linux 13126eaa481cSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 13136eaa481cSmrg ;; 13146eaa481cSmrg os2-emx) 13156eaa481cSmrg kernel=os2 13166eaa481cSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 13176eaa481cSmrg ;; 13186eaa481cSmrg nto-qnx*) 13196eaa481cSmrg kernel=nto 13206eaa481cSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 13216eaa481cSmrg ;; 13226eaa481cSmrg *-*) 13236eaa481cSmrg # shellcheck disable=SC2162 13246eaa481cSmrg saved_IFS=$IFS 13256eaa481cSmrg IFS="-" read kernel os <<EOF 13266eaa481cSmrg$basic_os 13276eaa481cSmrgEOF 13286eaa481cSmrg IFS=$saved_IFS 13296eaa481cSmrg ;; 13306eaa481cSmrg # Default OS when just kernel was specified 13316eaa481cSmrg nto*) 13326eaa481cSmrg kernel=nto 13336eaa481cSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 13346eaa481cSmrg ;; 13356eaa481cSmrg linux*) 13366eaa481cSmrg kernel=linux 13376eaa481cSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13386eaa481cSmrg ;; 13396eaa481cSmrg *) 13406eaa481cSmrg kernel= 13416eaa481cSmrg os=$basic_os 13426eaa481cSmrg ;; 13436eaa481cSmrgesac 13446eaa481cSmrg 13456eaa481cSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 13466eaa481cSmrg# etc.) 13471a30de1fSmrgcase $os in 1348423b239cSmrg # First match some system type aliases that might get confused 1349423b239cSmrg # with valid system types. 13506eaa481cSmrg # solaris* is a basic system type, with this one exception. 13516eaa481cSmrg auroraux) 13526eaa481cSmrg os=auroraux 1353ce62200cSmrg ;; 13546eaa481cSmrg bluegene*) 13556eaa481cSmrg os=cnk 13561a30de1fSmrg ;; 13576eaa481cSmrg solaris1 | solaris1.*) 13586eaa481cSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 13591a30de1fSmrg ;; 13606eaa481cSmrg solaris) 13616eaa481cSmrg os=solaris2 13621a30de1fSmrg ;; 13636eaa481cSmrg unixware*) 13646eaa481cSmrg os=sysv4.2uw 13651a30de1fSmrg ;; 1366423b239cSmrg # es1800 is here to avoid being matched by es* (a different OS) 13676eaa481cSmrg es1800*) 13686eaa481cSmrg os=ose 1369423b239cSmrg ;; 13706eaa481cSmrg # Some version numbers need modification 13716eaa481cSmrg chorusos*) 13726eaa481cSmrg os=chorusos 13731a30de1fSmrg ;; 13746eaa481cSmrg isc) 13756eaa481cSmrg os=isc2.2 13761a30de1fSmrg ;; 13776eaa481cSmrg sco6) 13786eaa481cSmrg os=sco5v6 13791a30de1fSmrg ;; 13806eaa481cSmrg sco5) 13816eaa481cSmrg os=sco3.2v5 13821a30de1fSmrg ;; 13836eaa481cSmrg sco4) 13846eaa481cSmrg os=sco3.2v4 13851a30de1fSmrg ;; 13866eaa481cSmrg sco3.2.[4-9]*) 13876eaa481cSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 13881a30de1fSmrg ;; 13896eaa481cSmrg sco*v* | scout) 13906eaa481cSmrg # Don't match below 13911a30de1fSmrg ;; 13926eaa481cSmrg sco*) 13936eaa481cSmrg os=sco3.2v2 13941a30de1fSmrg ;; 13956eaa481cSmrg psos*) 13966eaa481cSmrg os=psos 13971a30de1fSmrg ;; 13986eaa481cSmrg qnx*) 13996eaa481cSmrg os=qnx 14001a30de1fSmrg ;; 14016eaa481cSmrg hiux*) 14026eaa481cSmrg os=hiuxwe2 14031a30de1fSmrg ;; 14046eaa481cSmrg lynx*178) 14056eaa481cSmrg os=lynxos178 14061a30de1fSmrg ;; 14076eaa481cSmrg lynx*5) 14086eaa481cSmrg os=lynxos5 14091a30de1fSmrg ;; 14106eaa481cSmrg lynxos*) 14116eaa481cSmrg # don't get caught up in next wildcard 14121a30de1fSmrg ;; 14136eaa481cSmrg lynx*) 14146eaa481cSmrg os=lynxos 14151a30de1fSmrg ;; 14166eaa481cSmrg mac[0-9]*) 14176eaa481cSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 14181a30de1fSmrg ;; 14196eaa481cSmrg opened*) 14206eaa481cSmrg os=openedition 14211a30de1fSmrg ;; 14226eaa481cSmrg os400*) 14236eaa481cSmrg os=os400 14241a30de1fSmrg ;; 14256eaa481cSmrg sunos5*) 14266eaa481cSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 14271a30de1fSmrg ;; 14286eaa481cSmrg sunos6*) 14296eaa481cSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 14301a30de1fSmrg ;; 14316eaa481cSmrg wince*) 14326eaa481cSmrg os=wince 14331a30de1fSmrg ;; 14346eaa481cSmrg utek*) 14356eaa481cSmrg os=bsd 14361a30de1fSmrg ;; 14376eaa481cSmrg dynix*) 14386eaa481cSmrg os=bsd 14391a30de1fSmrg ;; 14406eaa481cSmrg acis*) 14416eaa481cSmrg os=aos 14421a30de1fSmrg ;; 14436eaa481cSmrg atheos*) 14446eaa481cSmrg os=atheos 14451a30de1fSmrg ;; 14466eaa481cSmrg syllable*) 14476eaa481cSmrg os=syllable 14486eaa481cSmrg ;; 14496eaa481cSmrg 386bsd) 14506eaa481cSmrg os=bsd 14516eaa481cSmrg ;; 14526eaa481cSmrg ctix* | uts*) 14536eaa481cSmrg os=sysv 14546eaa481cSmrg ;; 14556eaa481cSmrg nova*) 14566eaa481cSmrg os=rtmk-nova 14576eaa481cSmrg ;; 14586eaa481cSmrg ns2) 14596eaa481cSmrg os=nextstep2 14606eaa481cSmrg ;; 14616eaa481cSmrg # Preserve the version number of sinix5. 14626eaa481cSmrg sinix5.*) 14636eaa481cSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 14641a30de1fSmrg ;; 14656eaa481cSmrg sinix*) 14666eaa481cSmrg os=sysv4 14671a30de1fSmrg ;; 14686eaa481cSmrg tpf*) 14696eaa481cSmrg os=tpf 14701a30de1fSmrg ;; 14716eaa481cSmrg triton*) 14726eaa481cSmrg os=sysv3 14731a30de1fSmrg ;; 14746eaa481cSmrg oss*) 14756eaa481cSmrg os=sysv3 14761a30de1fSmrg ;; 14776eaa481cSmrg svr4*) 14786eaa481cSmrg os=sysv4 14791a30de1fSmrg ;; 14806eaa481cSmrg svr3) 14816eaa481cSmrg os=sysv3 14821a30de1fSmrg ;; 14836eaa481cSmrg sysvr4) 14846eaa481cSmrg os=sysv4 14851a30de1fSmrg ;; 14866eaa481cSmrg ose*) 14876eaa481cSmrg os=ose 14881a30de1fSmrg ;; 14896eaa481cSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 14906eaa481cSmrg os=mint 1491b7fb5eacSmrg ;; 14926eaa481cSmrg dicos*) 14936eaa481cSmrg os=dicos 14946eaa481cSmrg ;; 14956eaa481cSmrg pikeos*) 1496423b239cSmrg # Until real need of OS specific support for 1497423b239cSmrg # particular features comes up, bare metal 1498423b239cSmrg # configurations are quite functional. 14996eaa481cSmrg case $cpu in 1500423b239cSmrg arm*) 15016eaa481cSmrg os=eabi 1502423b239cSmrg ;; 1503423b239cSmrg *) 15046eaa481cSmrg os=elf 1505423b239cSmrg ;; 1506423b239cSmrg esac 1507423b239cSmrg ;; 15081a30de1fSmrg *) 15096eaa481cSmrg # No normalization, but not necessarily accepted, that comes below. 15101a30de1fSmrg ;; 15111a30de1fSmrgesac 15126eaa481cSmrg 15131a30de1fSmrgelse 15141a30de1fSmrg 15151a30de1fSmrg# Here we handle the default operating systems that come with various machines. 15161a30de1fSmrg# The value should be what the vendor currently ships out the door with their 15171a30de1fSmrg# machine or put another way, the most popular os provided with the machine. 15181a30de1fSmrg 15191a30de1fSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 15201a30de1fSmrg# "-sun"), then you have to tell the case statement up towards the top 15211a30de1fSmrg# that MANUFACTURER isn't an operating system. Otherwise, code above 15221a30de1fSmrg# will signal an error saying that MANUFACTURER isn't an operating 15231a30de1fSmrg# system, and we'll never get to this point. 15241a30de1fSmrg 15256eaa481cSmrgkernel= 15266eaa481cSmrgcase $cpu-$vendor in 1527a733a5bfSmrg score-*) 15286eaa481cSmrg os=elf 15291a30de1fSmrg ;; 1530a733a5bfSmrg spu-*) 15316eaa481cSmrg os=elf 15321a30de1fSmrg ;; 15331a30de1fSmrg *-acorn) 15346eaa481cSmrg os=riscix1.2 15351a30de1fSmrg ;; 15361a30de1fSmrg arm*-rebel) 15376eaa481cSmrg kernel=linux 15386eaa481cSmrg os=gnu 15391a30de1fSmrg ;; 15401a30de1fSmrg arm*-semi) 15416eaa481cSmrg os=aout 15421a30de1fSmrg ;; 1543a733a5bfSmrg c4x-* | tic4x-*) 15446eaa481cSmrg os=coff 1545a733a5bfSmrg ;; 15461b983734Smrg c8051-*) 15476eaa481cSmrg os=elf 15486eaa481cSmrg ;; 15496eaa481cSmrg clipper-intergraph) 15506eaa481cSmrg os=clix 15511b983734Smrg ;; 1552a733a5bfSmrg hexagon-*) 15536eaa481cSmrg os=elf 15541a30de1fSmrg ;; 1555ce62200cSmrg tic54x-*) 15566eaa481cSmrg os=coff 1557ce62200cSmrg ;; 1558ce62200cSmrg tic55x-*) 15596eaa481cSmrg os=coff 1560ce62200cSmrg ;; 1561ce62200cSmrg tic6x-*) 15626eaa481cSmrg os=coff 1563ce62200cSmrg ;; 15641a30de1fSmrg # This must come before the *-dec entry. 15651a30de1fSmrg pdp10-*) 15666eaa481cSmrg os=tops20 15671a30de1fSmrg ;; 15681a30de1fSmrg pdp11-*) 15696eaa481cSmrg os=none 15701a30de1fSmrg ;; 15711a30de1fSmrg *-dec | vax-*) 15726eaa481cSmrg os=ultrix4.2 15731a30de1fSmrg ;; 15741a30de1fSmrg m68*-apollo) 15756eaa481cSmrg os=domain 15761a30de1fSmrg ;; 15771a30de1fSmrg i386-sun) 15786eaa481cSmrg os=sunos4.0.2 15791a30de1fSmrg ;; 15801a30de1fSmrg m68000-sun) 15816eaa481cSmrg os=sunos3 15821a30de1fSmrg ;; 15831a30de1fSmrg m68*-cisco) 15846eaa481cSmrg os=aout 15851a30de1fSmrg ;; 1586a733a5bfSmrg mep-*) 15876eaa481cSmrg os=elf 1588b7fb5eacSmrg ;; 15891a30de1fSmrg mips*-cisco) 15906eaa481cSmrg os=elf 15911a30de1fSmrg ;; 15921a30de1fSmrg mips*-*) 15936eaa481cSmrg os=elf 15941a30de1fSmrg ;; 15951a30de1fSmrg or32-*) 15966eaa481cSmrg os=coff 15971a30de1fSmrg ;; 15981a30de1fSmrg *-tti) # must be before sparc entry or we get the wrong os. 15996eaa481cSmrg os=sysv3 16001a30de1fSmrg ;; 16011a30de1fSmrg sparc-* | *-sun) 16026eaa481cSmrg os=sunos4.1.1 16031a30de1fSmrg ;; 1604423b239cSmrg pru-*) 16056eaa481cSmrg os=elf 1606423b239cSmrg ;; 16071a30de1fSmrg *-be) 16086eaa481cSmrg os=beos 16091a30de1fSmrg ;; 16101a30de1fSmrg *-ibm) 16116eaa481cSmrg os=aix 16121a30de1fSmrg ;; 1613a733a5bfSmrg *-knuth) 16146eaa481cSmrg os=mmixware 16151a30de1fSmrg ;; 16161a30de1fSmrg *-wec) 16176eaa481cSmrg os=proelf 16181a30de1fSmrg ;; 16191a30de1fSmrg *-winbond) 16206eaa481cSmrg os=proelf 16211a30de1fSmrg ;; 16221a30de1fSmrg *-oki) 16236eaa481cSmrg os=proelf 16241a30de1fSmrg ;; 16251a30de1fSmrg *-hp) 16266eaa481cSmrg os=hpux 16271a30de1fSmrg ;; 16281a30de1fSmrg *-hitachi) 16296eaa481cSmrg os=hiux 16301a30de1fSmrg ;; 16311a30de1fSmrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 16326eaa481cSmrg os=sysv 16331a30de1fSmrg ;; 16341a30de1fSmrg *-cbm) 16356eaa481cSmrg os=amigaos 16361a30de1fSmrg ;; 16371a30de1fSmrg *-dg) 16386eaa481cSmrg os=dgux 16391a30de1fSmrg ;; 16401a30de1fSmrg *-dolphin) 16416eaa481cSmrg os=sysv3 16421a30de1fSmrg ;; 16431a30de1fSmrg m68k-ccur) 16446eaa481cSmrg os=rtu 16451a30de1fSmrg ;; 16461a30de1fSmrg m88k-omron*) 16476eaa481cSmrg os=luna 16481a30de1fSmrg ;; 1649423b239cSmrg *-next) 16506eaa481cSmrg os=nextstep 16511a30de1fSmrg ;; 16521a30de1fSmrg *-sequent) 16536eaa481cSmrg os=ptx 16541a30de1fSmrg ;; 16551a30de1fSmrg *-crds) 16566eaa481cSmrg os=unos 16571a30de1fSmrg ;; 16581a30de1fSmrg *-ns) 16596eaa481cSmrg os=genix 16601a30de1fSmrg ;; 16611a30de1fSmrg i370-*) 16626eaa481cSmrg os=mvs 16631a30de1fSmrg ;; 16641a30de1fSmrg *-gould) 16656eaa481cSmrg os=sysv 16661a30de1fSmrg ;; 16671a30de1fSmrg *-highlevel) 16686eaa481cSmrg os=bsd 16691a30de1fSmrg ;; 16701a30de1fSmrg *-encore) 16716eaa481cSmrg os=bsd 16721a30de1fSmrg ;; 16731a30de1fSmrg *-sgi) 16746eaa481cSmrg os=irix 16751a30de1fSmrg ;; 16761a30de1fSmrg *-siemens) 16776eaa481cSmrg os=sysv4 16781a30de1fSmrg ;; 16791a30de1fSmrg *-masscomp) 16806eaa481cSmrg os=rtu 16811a30de1fSmrg ;; 16821a30de1fSmrg f30[01]-fujitsu | f700-fujitsu) 16836eaa481cSmrg os=uxpv 16841a30de1fSmrg ;; 16851a30de1fSmrg *-rom68k) 16866eaa481cSmrg os=coff 16871a30de1fSmrg ;; 16881a30de1fSmrg *-*bug) 16896eaa481cSmrg os=coff 16901a30de1fSmrg ;; 16911a30de1fSmrg *-apple) 16926eaa481cSmrg os=macos 16931a30de1fSmrg ;; 16941a30de1fSmrg *-atari*) 16956eaa481cSmrg os=mint 16966eaa481cSmrg ;; 16976eaa481cSmrg *-wrs) 16986eaa481cSmrg os=vxworks 16991a30de1fSmrg ;; 17001a30de1fSmrg *) 17016eaa481cSmrg os=none 17021a30de1fSmrg ;; 17031a30de1fSmrgesac 17046eaa481cSmrg 17051a30de1fSmrgfi 17061a30de1fSmrg 17076eaa481cSmrg# Now, validate our (potentially fixed-up) OS. 17086eaa481cSmrgcase $os in 17096eaa481cSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 17106eaa481cSmrg musl* | newlib* | relibc* | uclibc*) 17116eaa481cSmrg ;; 17126eaa481cSmrg # Likewise for "kernel-abi" 17136eaa481cSmrg eabi* | gnueabi*) 17146eaa481cSmrg ;; 17156eaa481cSmrg # VxWorks passes extra cpu info in the 4th filed. 17166eaa481cSmrg simlinux | simwindows | spe) 17176eaa481cSmrg ;; 17186eaa481cSmrg # Now accept the basic system types. 17196eaa481cSmrg # The portable systems comes first. 17206eaa481cSmrg # Each alternative MUST end in a * to match a version number. 17216eaa481cSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 17226eaa481cSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 17236eaa481cSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 17246eaa481cSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 17256eaa481cSmrg | hiux* | abug | nacl* | netware* | windows* \ 17266eaa481cSmrg | os9* | macos* | osx* | ios* \ 17276eaa481cSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 17286eaa481cSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 17296eaa481cSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 17306eaa481cSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 17316eaa481cSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 17326eaa481cSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 17336eaa481cSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 17346eaa481cSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 17356eaa481cSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 17366eaa481cSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 17376eaa481cSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 17386eaa481cSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 17396eaa481cSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 17406eaa481cSmrg | midipix* | mingw32* | mingw64* | mint* \ 17416eaa481cSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 17426eaa481cSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 17436eaa481cSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 17446eaa481cSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 17456eaa481cSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 17466eaa481cSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 17476eaa481cSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 17486eaa481cSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 17496eaa481cSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 17506eaa481cSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 17516eaa481cSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 17526eaa481cSmrg ;; 17536eaa481cSmrg # This one is extra strict with allowed versions 17546eaa481cSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 17556eaa481cSmrg # Don't forget version if it is 3.2v4 or newer. 17566eaa481cSmrg ;; 17576eaa481cSmrg none) 17586eaa481cSmrg ;; 17596eaa481cSmrg *) 17606eaa481cSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 17616eaa481cSmrg exit 1 17626eaa481cSmrg ;; 17636eaa481cSmrgesac 17646eaa481cSmrg 17656eaa481cSmrg# As a final step for OS-related things, validate the OS-kernel combination 17666eaa481cSmrg# (given a valid OS), if there is a kernel. 17676eaa481cSmrgcase $kernel-$os in 17686eaa481cSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 17696eaa481cSmrg | linux-musl* | linux-relibc* | linux-uclibc* ) 17706eaa481cSmrg ;; 17716eaa481cSmrg uclinux-uclibc* ) 17726eaa481cSmrg ;; 17736eaa481cSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 17746eaa481cSmrg # These are just libc implementations, not actual OSes, and thus 17756eaa481cSmrg # require a kernel. 17766eaa481cSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 17776eaa481cSmrg exit 1 17786eaa481cSmrg ;; 17796eaa481cSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 17806eaa481cSmrg ;; 17816eaa481cSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 17826eaa481cSmrg ;; 17836eaa481cSmrg nto-qnx*) 17846eaa481cSmrg ;; 17856eaa481cSmrg os2-emx) 17866eaa481cSmrg ;; 17876eaa481cSmrg *-eabi* | *-gnueabi*) 17886eaa481cSmrg ;; 17896eaa481cSmrg -*) 17906eaa481cSmrg # Blank kernel with real OS is always fine. 17916eaa481cSmrg ;; 17926eaa481cSmrg *-*) 17936eaa481cSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 17946eaa481cSmrg exit 1 17956eaa481cSmrg ;; 17966eaa481cSmrgesac 17976eaa481cSmrg 17981a30de1fSmrg# Here we handle the case where we know the os, and the CPU type, but not the 17991a30de1fSmrg# manufacturer. We pick the logical manufacturer. 18006eaa481cSmrgcase $vendor in 18016eaa481cSmrg unknown) 18026eaa481cSmrg case $cpu-$os in 18036eaa481cSmrg *-riscix*) 18041a30de1fSmrg vendor=acorn 18051a30de1fSmrg ;; 18066eaa481cSmrg *-sunos*) 18071a30de1fSmrg vendor=sun 18081a30de1fSmrg ;; 18096eaa481cSmrg *-cnk* | *-aix*) 18101a30de1fSmrg vendor=ibm 18111a30de1fSmrg ;; 18126eaa481cSmrg *-beos*) 18131a30de1fSmrg vendor=be 18141a30de1fSmrg ;; 18156eaa481cSmrg *-hpux*) 18161a30de1fSmrg vendor=hp 18171a30de1fSmrg ;; 18186eaa481cSmrg *-mpeix*) 18191a30de1fSmrg vendor=hp 18201a30de1fSmrg ;; 18216eaa481cSmrg *-hiux*) 18221a30de1fSmrg vendor=hitachi 18231a30de1fSmrg ;; 18246eaa481cSmrg *-unos*) 18251a30de1fSmrg vendor=crds 18261a30de1fSmrg ;; 18276eaa481cSmrg *-dgux*) 18281a30de1fSmrg vendor=dg 18291a30de1fSmrg ;; 18306eaa481cSmrg *-luna*) 18311a30de1fSmrg vendor=omron 18321a30de1fSmrg ;; 18336eaa481cSmrg *-genix*) 18341a30de1fSmrg vendor=ns 18351a30de1fSmrg ;; 18366eaa481cSmrg *-clix*) 18376eaa481cSmrg vendor=intergraph 18386eaa481cSmrg ;; 18396eaa481cSmrg *-mvs* | *-opened*) 18406eaa481cSmrg vendor=ibm 18416eaa481cSmrg ;; 18426eaa481cSmrg *-os400*) 18431a30de1fSmrg vendor=ibm 18441a30de1fSmrg ;; 18456eaa481cSmrg s390-* | s390x-*) 18461a30de1fSmrg vendor=ibm 18471a30de1fSmrg ;; 18486eaa481cSmrg *-ptx*) 18491a30de1fSmrg vendor=sequent 18501a30de1fSmrg ;; 18516eaa481cSmrg *-tpf*) 18521a30de1fSmrg vendor=ibm 18531a30de1fSmrg ;; 18546eaa481cSmrg *-vxsim* | *-vxworks* | *-windiss*) 18551a30de1fSmrg vendor=wrs 18561a30de1fSmrg ;; 18576eaa481cSmrg *-aux*) 18581a30de1fSmrg vendor=apple 18591a30de1fSmrg ;; 18606eaa481cSmrg *-hms*) 18611a30de1fSmrg vendor=hitachi 18621a30de1fSmrg ;; 18636eaa481cSmrg *-mpw* | *-macos*) 18641a30de1fSmrg vendor=apple 18651a30de1fSmrg ;; 18666eaa481cSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 18671a30de1fSmrg vendor=atari 18681a30de1fSmrg ;; 18696eaa481cSmrg *-vos*) 18701a30de1fSmrg vendor=stratus 18711a30de1fSmrg ;; 18721a30de1fSmrg esac 18731a30de1fSmrg ;; 18741a30de1fSmrgesac 18751a30de1fSmrg 18766eaa481cSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 18771a30de1fSmrgexit 18781a30de1fSmrg 18791a30de1fSmrg# Local variables: 18806eaa481cSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 18811a30de1fSmrg# time-stamp-start: "timestamp='" 18821a30de1fSmrg# time-stamp-format: "%:y-%02m-%02d" 18831a30de1fSmrg# time-stamp-end: "'" 18841a30de1fSmrg# End: 1885