16c321187Smrg#! /bin/sh 26c321187Smrg# Configuration validation subroutine script. 39dedec0cSmrg# Copyright 1992-2021 Free Software Foundation, Inc. 46c321187Smrg 59dedec0cSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 69dedec0cSmrg 79dedec0cSmrgtimestamp='2021-08-14' 86c321187Smrg 99d0b5e55Smrg# This file is free software; you can redistribute it and/or modify it 109d0b5e55Smrg# under the terms of the GNU General Public License as published by 119d0b5e55Smrg# the Free Software Foundation; either version 3 of the License, or 126c321187Smrg# (at your option) any later version. 136c321187Smrg# 149d0b5e55Smrg# This program is distributed in the hope that it will be useful, but 159d0b5e55Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 169d0b5e55Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 179d0b5e55Smrg# General Public License for more details. 186c321187Smrg# 196c321187Smrg# You should have received a copy of the GNU General Public License 20198e4c3cSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 216c321187Smrg# 226c321187Smrg# As a special exception to the GNU General Public License, if you 236c321187Smrg# distribute this file as part of a program that contains a 246c321187Smrg# configuration script generated by Autoconf, you may include it under 259d0b5e55Smrg# the same distribution terms that you use for the rest of that 269d0b5e55Smrg# program. This Exception is an additional permission under section 7 279d0b5e55Smrg# of the GNU General Public License, version 3 ("GPLv3"). 286c321187Smrg 296c321187Smrg 30198e4c3cSmrg# Please send patches to <config-patches@gnu.org>. 316c321187Smrg# 326c321187Smrg# Configuration subroutine to validate and canonicalize a configuration type. 336c321187Smrg# Supply the specified configuration type as an argument. 346c321187Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 356c321187Smrg# Otherwise, we print the canonical config type on stdout and succeed. 366c321187Smrg 37e120bd27Smrg# You can get the latest version of this script from: 389dedec0cSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39e120bd27Smrg 406c321187Smrg# This file is supposed to be the same for all GNU packages 416c321187Smrg# and recognize all the CPU types, system types and aliases 426c321187Smrg# that are meaningful with *any* GNU software. 436c321187Smrg# Each package is responsible for reporting which valid configurations 446c321187Smrg# it does not support. The user should be able to distinguish 456c321187Smrg# a failure to support a valid configuration from a meaningless 466c321187Smrg# configuration. 476c321187Smrg 486c321187Smrg# The goal of this file is to map all the various variations of a given 496c321187Smrg# machine specification into a single specification in the form: 506c321187Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 516c321187Smrg# or in some cases, the newer four-part form: 526c321187Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 536c321187Smrg# It is wrong to echo any other type of specification. 546c321187Smrg 559dedec0cSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 569dedec0cSmrg# about features and limitations of the classic Bourne shell that were 579dedec0cSmrg# superseded or lifted in POSIX. However, this script identifies a wide 589dedec0cSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 599dedec0cSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 609dedec0cSmrg# have a pre-POSIX /bin/sh. 619dedec0cSmrg 626c321187Smrgme=`echo "$0" | sed -e 's,.*/,,'` 636c321187Smrg 646c321187Smrgusage="\ 65198e4c3cSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 666c321187Smrg 676c321187SmrgCanonicalize a configuration name. 686c321187Smrg 69198e4c3cSmrgOptions: 706c321187Smrg -h, --help print this help, then exit 716c321187Smrg -t, --time-stamp print date of last modification, then exit 726c321187Smrg -v, --version print version number, then exit 736c321187Smrg 746c321187SmrgReport bugs and patches to <config-patches@gnu.org>." 756c321187Smrg 766c321187Smrgversion="\ 776c321187SmrgGNU config.sub ($timestamp) 786c321187Smrg 799dedec0cSmrgCopyright 1992-2021 Free Software Foundation, Inc. 806c321187Smrg 816c321187SmrgThis is free software; see the source for copying conditions. There is NO 826c321187Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 836c321187Smrg 846c321187Smrghelp=" 856c321187SmrgTry \`$me --help' for more information." 866c321187Smrg 876c321187Smrg# Parse command line 886c321187Smrgwhile test $# -gt 0 ; do 896c321187Smrg case $1 in 906c321187Smrg --time-stamp | --time* | -t ) 916c321187Smrg echo "$timestamp" ; exit ;; 926c321187Smrg --version | -v ) 936c321187Smrg echo "$version" ; exit ;; 946c321187Smrg --help | --h* | -h ) 956c321187Smrg echo "$usage"; exit ;; 966c321187Smrg -- ) # Stop option processing 976c321187Smrg shift; break ;; 986c321187Smrg - ) # Use stdin as input. 996c321187Smrg break ;; 1006c321187Smrg -* ) 1019dedec0cSmrg echo "$me: invalid option $1$help" >&2 1026c321187Smrg exit 1 ;; 1036c321187Smrg 1046c321187Smrg *local*) 1056c321187Smrg # First pass through any local machine types. 106198e4c3cSmrg echo "$1" 1076c321187Smrg exit ;; 1086c321187Smrg 1096c321187Smrg * ) 1106c321187Smrg break ;; 1116c321187Smrg esac 1126c321187Smrgdone 1136c321187Smrg 1146c321187Smrgcase $# in 1156c321187Smrg 0) echo "$me: missing argument$help" >&2 1166c321187Smrg exit 1;; 1176c321187Smrg 1) ;; 1186c321187Smrg *) echo "$me: too many arguments$help" >&2 1196c321187Smrg exit 1;; 1206c321187Smrgesac 1216c321187Smrg 1229dedec0cSmrg# Split fields of configuration type 1239dedec0cSmrg# shellcheck disable=SC2162 1249dedec0cSmrgsaved_IFS=$IFS 1259dedec0cSmrgIFS="-" read field1 field2 field3 field4 <<EOF 1269dedec0cSmrg$1 1279dedec0cSmrgEOF 1289dedec0cSmrgIFS=$saved_IFS 1296c321187Smrg 1309dedec0cSmrg# Separate into logical components for further validation 1319dedec0cSmrgcase $1 in 1329dedec0cSmrg *-*-*-*-*) 1339dedec0cSmrg echo Invalid configuration \`"$1"\': more than four components >&2 1349dedec0cSmrg exit 1 1359d0b5e55Smrg ;; 1369dedec0cSmrg *-*-*-*) 1379dedec0cSmrg basic_machine=$field1-$field2 1389dedec0cSmrg basic_os=$field3-$field4 1396c321187Smrg ;; 1409dedec0cSmrg *-*-*) 1419dedec0cSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 1429dedec0cSmrg # parts 1439dedec0cSmrg maybe_os=$field2-$field3 1449dedec0cSmrg case $maybe_os in 1459dedec0cSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 1469dedec0cSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 1479dedec0cSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 1489dedec0cSmrg | storm-chaos* | os2-emx* | rtmk-nova*) 1499dedec0cSmrg basic_machine=$field1 1509dedec0cSmrg basic_os=$maybe_os 1519dedec0cSmrg ;; 1529dedec0cSmrg android-linux) 1539dedec0cSmrg basic_machine=$field1-unknown 1549dedec0cSmrg basic_os=linux-android 1559dedec0cSmrg ;; 1569dedec0cSmrg *) 1579dedec0cSmrg basic_machine=$field1-$field2 1589dedec0cSmrg basic_os=$field3 1599dedec0cSmrg ;; 1609dedec0cSmrg esac 1616c321187Smrg ;; 1629dedec0cSmrg *-*) 1639dedec0cSmrg # A lone config we happen to match not fitting any pattern 1649dedec0cSmrg case $field1-$field2 in 1659dedec0cSmrg decstation-3100) 1669dedec0cSmrg basic_machine=mips-dec 1679dedec0cSmrg basic_os= 1689dedec0cSmrg ;; 1699dedec0cSmrg *-*) 1709dedec0cSmrg # Second component is usually, but not always the OS 1719dedec0cSmrg case $field2 in 1729dedec0cSmrg # Prevent following clause from handling this valid os 1739dedec0cSmrg sun*os*) 1749dedec0cSmrg basic_machine=$field1 1759dedec0cSmrg basic_os=$field2 1769dedec0cSmrg ;; 1779dedec0cSmrg zephyr*) 1789dedec0cSmrg basic_machine=$field1-unknown 1799dedec0cSmrg basic_os=$field2 1809dedec0cSmrg ;; 1819dedec0cSmrg # Manufacturers 1829dedec0cSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 1839dedec0cSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 1849dedec0cSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 1859dedec0cSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 1869dedec0cSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 1879dedec0cSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 1889dedec0cSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 1899dedec0cSmrg | microblaze* | sim | cisco \ 1909dedec0cSmrg | oki | wec | wrs | winbond) 1919dedec0cSmrg basic_machine=$field1-$field2 1929dedec0cSmrg basic_os= 1939dedec0cSmrg ;; 1949dedec0cSmrg *) 1959dedec0cSmrg basic_machine=$field1 1969dedec0cSmrg basic_os=$field2 1979dedec0cSmrg ;; 1989dedec0cSmrg esac 1999dedec0cSmrg ;; 2009dedec0cSmrg esac 2016c321187Smrg ;; 2029dedec0cSmrg *) 2039dedec0cSmrg # Convert single-component short-hands not valid as part of 2049dedec0cSmrg # multi-component configurations. 2059dedec0cSmrg case $field1 in 2069dedec0cSmrg 386bsd) 2079dedec0cSmrg basic_machine=i386-pc 2089dedec0cSmrg basic_os=bsd 2099dedec0cSmrg ;; 2109dedec0cSmrg a29khif) 2119dedec0cSmrg basic_machine=a29k-amd 2129dedec0cSmrg basic_os=udi 2139dedec0cSmrg ;; 2149dedec0cSmrg adobe68k) 2159dedec0cSmrg basic_machine=m68010-adobe 2169dedec0cSmrg basic_os=scout 2179dedec0cSmrg ;; 2189dedec0cSmrg alliant) 2199dedec0cSmrg basic_machine=fx80-alliant 2209dedec0cSmrg basic_os= 2219dedec0cSmrg ;; 2229dedec0cSmrg altos | altos3068) 2239dedec0cSmrg basic_machine=m68k-altos 2249dedec0cSmrg basic_os= 2259dedec0cSmrg ;; 2269dedec0cSmrg am29k) 2279dedec0cSmrg basic_machine=a29k-none 2289dedec0cSmrg basic_os=bsd 2299dedec0cSmrg ;; 2309dedec0cSmrg amdahl) 2319dedec0cSmrg basic_machine=580-amdahl 2329dedec0cSmrg basic_os=sysv 2339dedec0cSmrg ;; 2349dedec0cSmrg amiga) 2359dedec0cSmrg basic_machine=m68k-unknown 2369dedec0cSmrg basic_os= 2379dedec0cSmrg ;; 2389dedec0cSmrg amigaos | amigados) 2399dedec0cSmrg basic_machine=m68k-unknown 2409dedec0cSmrg basic_os=amigaos 2419dedec0cSmrg ;; 2429dedec0cSmrg amigaunix | amix) 2439dedec0cSmrg basic_machine=m68k-unknown 2449dedec0cSmrg basic_os=sysv4 2459dedec0cSmrg ;; 2469dedec0cSmrg apollo68) 2479dedec0cSmrg basic_machine=m68k-apollo 2489dedec0cSmrg basic_os=sysv 2499dedec0cSmrg ;; 2509dedec0cSmrg apollo68bsd) 2519dedec0cSmrg basic_machine=m68k-apollo 2529dedec0cSmrg basic_os=bsd 2539dedec0cSmrg ;; 2549dedec0cSmrg aros) 2559dedec0cSmrg basic_machine=i386-pc 2569dedec0cSmrg basic_os=aros 2579dedec0cSmrg ;; 2589dedec0cSmrg aux) 2599dedec0cSmrg basic_machine=m68k-apple 2609dedec0cSmrg basic_os=aux 2619dedec0cSmrg ;; 2629dedec0cSmrg balance) 2639dedec0cSmrg basic_machine=ns32k-sequent 2649dedec0cSmrg basic_os=dynix 2659dedec0cSmrg ;; 2669dedec0cSmrg blackfin) 2679dedec0cSmrg basic_machine=bfin-unknown 2689dedec0cSmrg basic_os=linux 2699dedec0cSmrg ;; 2709dedec0cSmrg cegcc) 2719dedec0cSmrg basic_machine=arm-unknown 2729dedec0cSmrg basic_os=cegcc 2739dedec0cSmrg ;; 2749dedec0cSmrg convex-c1) 2759dedec0cSmrg basic_machine=c1-convex 2769dedec0cSmrg basic_os=bsd 2779dedec0cSmrg ;; 2789dedec0cSmrg convex-c2) 2799dedec0cSmrg basic_machine=c2-convex 2809dedec0cSmrg basic_os=bsd 2819dedec0cSmrg ;; 2829dedec0cSmrg convex-c32) 2839dedec0cSmrg basic_machine=c32-convex 2849dedec0cSmrg basic_os=bsd 2859dedec0cSmrg ;; 2869dedec0cSmrg convex-c34) 2879dedec0cSmrg basic_machine=c34-convex 2889dedec0cSmrg basic_os=bsd 2899dedec0cSmrg ;; 2909dedec0cSmrg convex-c38) 2919dedec0cSmrg basic_machine=c38-convex 2929dedec0cSmrg basic_os=bsd 2939dedec0cSmrg ;; 2949dedec0cSmrg cray) 2959dedec0cSmrg basic_machine=j90-cray 2969dedec0cSmrg basic_os=unicos 2979dedec0cSmrg ;; 2989dedec0cSmrg crds | unos) 2999dedec0cSmrg basic_machine=m68k-crds 3009dedec0cSmrg basic_os= 3019dedec0cSmrg ;; 3029dedec0cSmrg da30) 3039dedec0cSmrg basic_machine=m68k-da30 3049dedec0cSmrg basic_os= 3059dedec0cSmrg ;; 3069dedec0cSmrg decstation | pmax | pmin | dec3100 | decstatn) 3079dedec0cSmrg basic_machine=mips-dec 3089dedec0cSmrg basic_os= 3099dedec0cSmrg ;; 3109dedec0cSmrg delta88) 3119dedec0cSmrg basic_machine=m88k-motorola 3129dedec0cSmrg basic_os=sysv3 3139dedec0cSmrg ;; 3149dedec0cSmrg dicos) 3159dedec0cSmrg basic_machine=i686-pc 3169dedec0cSmrg basic_os=dicos 3179dedec0cSmrg ;; 3189dedec0cSmrg djgpp) 3199dedec0cSmrg basic_machine=i586-pc 3209dedec0cSmrg basic_os=msdosdjgpp 3219dedec0cSmrg ;; 3229dedec0cSmrg ebmon29k) 3239dedec0cSmrg basic_machine=a29k-amd 3249dedec0cSmrg basic_os=ebmon 3259dedec0cSmrg ;; 3269dedec0cSmrg es1800 | OSE68k | ose68k | ose | OSE) 3279dedec0cSmrg basic_machine=m68k-ericsson 3289dedec0cSmrg basic_os=ose 3299dedec0cSmrg ;; 3309dedec0cSmrg gmicro) 3319dedec0cSmrg basic_machine=tron-gmicro 3329dedec0cSmrg basic_os=sysv 3339dedec0cSmrg ;; 3349dedec0cSmrg go32) 3359dedec0cSmrg basic_machine=i386-pc 3369dedec0cSmrg basic_os=go32 3379dedec0cSmrg ;; 3389dedec0cSmrg h8300hms) 3399dedec0cSmrg basic_machine=h8300-hitachi 3409dedec0cSmrg basic_os=hms 3419dedec0cSmrg ;; 3429dedec0cSmrg h8300xray) 3439dedec0cSmrg basic_machine=h8300-hitachi 3449dedec0cSmrg basic_os=xray 3459dedec0cSmrg ;; 3469dedec0cSmrg h8500hms) 3479dedec0cSmrg basic_machine=h8500-hitachi 3489dedec0cSmrg basic_os=hms 3499dedec0cSmrg ;; 3509dedec0cSmrg harris) 3519dedec0cSmrg basic_machine=m88k-harris 3529dedec0cSmrg basic_os=sysv3 3539dedec0cSmrg ;; 3549dedec0cSmrg hp300 | hp300hpux) 3559dedec0cSmrg basic_machine=m68k-hp 3569dedec0cSmrg basic_os=hpux 3579dedec0cSmrg ;; 3589dedec0cSmrg hp300bsd) 3599dedec0cSmrg basic_machine=m68k-hp 3609dedec0cSmrg basic_os=bsd 3619dedec0cSmrg ;; 3629dedec0cSmrg hppaosf) 3639dedec0cSmrg basic_machine=hppa1.1-hp 3649dedec0cSmrg basic_os=osf 3659dedec0cSmrg ;; 3669dedec0cSmrg hppro) 3679dedec0cSmrg basic_machine=hppa1.1-hp 3689dedec0cSmrg basic_os=proelf 3699dedec0cSmrg ;; 3709dedec0cSmrg i386mach) 3719dedec0cSmrg basic_machine=i386-mach 3729dedec0cSmrg basic_os=mach 3739dedec0cSmrg ;; 3749dedec0cSmrg isi68 | isi) 3759dedec0cSmrg basic_machine=m68k-isi 3769dedec0cSmrg basic_os=sysv 3779dedec0cSmrg ;; 3789dedec0cSmrg m68knommu) 3799dedec0cSmrg basic_machine=m68k-unknown 3809dedec0cSmrg basic_os=linux 3819dedec0cSmrg ;; 3829dedec0cSmrg magnum | m3230) 3839dedec0cSmrg basic_machine=mips-mips 3849dedec0cSmrg basic_os=sysv 3859dedec0cSmrg ;; 3869dedec0cSmrg merlin) 3879dedec0cSmrg basic_machine=ns32k-utek 3889dedec0cSmrg basic_os=sysv 3899dedec0cSmrg ;; 3909dedec0cSmrg mingw64) 3919dedec0cSmrg basic_machine=x86_64-pc 3929dedec0cSmrg basic_os=mingw64 3939dedec0cSmrg ;; 3949dedec0cSmrg mingw32) 3959dedec0cSmrg basic_machine=i686-pc 3969dedec0cSmrg basic_os=mingw32 3979dedec0cSmrg ;; 3989dedec0cSmrg mingw32ce) 3999dedec0cSmrg basic_machine=arm-unknown 4009dedec0cSmrg basic_os=mingw32ce 4019dedec0cSmrg ;; 4029dedec0cSmrg monitor) 4039dedec0cSmrg basic_machine=m68k-rom68k 4049dedec0cSmrg basic_os=coff 4059dedec0cSmrg ;; 4069dedec0cSmrg morphos) 4079dedec0cSmrg basic_machine=powerpc-unknown 4089dedec0cSmrg basic_os=morphos 4099dedec0cSmrg ;; 4109dedec0cSmrg moxiebox) 4119dedec0cSmrg basic_machine=moxie-unknown 4129dedec0cSmrg basic_os=moxiebox 4139dedec0cSmrg ;; 4149dedec0cSmrg msdos) 4159dedec0cSmrg basic_machine=i386-pc 4169dedec0cSmrg basic_os=msdos 4179dedec0cSmrg ;; 4189dedec0cSmrg msys) 4199dedec0cSmrg basic_machine=i686-pc 4209dedec0cSmrg basic_os=msys 4219dedec0cSmrg ;; 4229dedec0cSmrg mvs) 4239dedec0cSmrg basic_machine=i370-ibm 4249dedec0cSmrg basic_os=mvs 4259dedec0cSmrg ;; 4269dedec0cSmrg nacl) 4279dedec0cSmrg basic_machine=le32-unknown 4289dedec0cSmrg basic_os=nacl 4299dedec0cSmrg ;; 4309dedec0cSmrg ncr3000) 4319dedec0cSmrg basic_machine=i486-ncr 4329dedec0cSmrg basic_os=sysv4 4339dedec0cSmrg ;; 4349dedec0cSmrg netbsd386) 4359dedec0cSmrg basic_machine=i386-pc 4369dedec0cSmrg basic_os=netbsd 4379dedec0cSmrg ;; 4389dedec0cSmrg netwinder) 4399dedec0cSmrg basic_machine=armv4l-rebel 4409dedec0cSmrg basic_os=linux 4419dedec0cSmrg ;; 4429dedec0cSmrg news | news700 | news800 | news900) 4439dedec0cSmrg basic_machine=m68k-sony 4449dedec0cSmrg basic_os=newsos 4459dedec0cSmrg ;; 4469dedec0cSmrg news1000) 4479dedec0cSmrg basic_machine=m68030-sony 4489dedec0cSmrg basic_os=newsos 4499dedec0cSmrg ;; 4509dedec0cSmrg necv70) 4519dedec0cSmrg basic_machine=v70-nec 4529dedec0cSmrg basic_os=sysv 4539dedec0cSmrg ;; 4549dedec0cSmrg nh3000) 4559dedec0cSmrg basic_machine=m68k-harris 4569dedec0cSmrg basic_os=cxux 4579dedec0cSmrg ;; 4589dedec0cSmrg nh[45]000) 4599dedec0cSmrg basic_machine=m88k-harris 4609dedec0cSmrg basic_os=cxux 4619dedec0cSmrg ;; 4629dedec0cSmrg nindy960) 4639dedec0cSmrg basic_machine=i960-intel 4649dedec0cSmrg basic_os=nindy 4659dedec0cSmrg ;; 4669dedec0cSmrg mon960) 4679dedec0cSmrg basic_machine=i960-intel 4689dedec0cSmrg basic_os=mon960 4699dedec0cSmrg ;; 4709dedec0cSmrg nonstopux) 4719dedec0cSmrg basic_machine=mips-compaq 4729dedec0cSmrg basic_os=nonstopux 4739dedec0cSmrg ;; 4749dedec0cSmrg os400) 4759dedec0cSmrg basic_machine=powerpc-ibm 4769dedec0cSmrg basic_os=os400 4779dedec0cSmrg ;; 4789dedec0cSmrg OSE68000 | ose68000) 4799dedec0cSmrg basic_machine=m68000-ericsson 4809dedec0cSmrg basic_os=ose 4819dedec0cSmrg ;; 4829dedec0cSmrg os68k) 4839dedec0cSmrg basic_machine=m68k-none 4849dedec0cSmrg basic_os=os68k 4859dedec0cSmrg ;; 4869dedec0cSmrg paragon) 4879dedec0cSmrg basic_machine=i860-intel 4889dedec0cSmrg basic_os=osf 4899dedec0cSmrg ;; 4909dedec0cSmrg parisc) 4919dedec0cSmrg basic_machine=hppa-unknown 4929dedec0cSmrg basic_os=linux 4939dedec0cSmrg ;; 4949dedec0cSmrg psp) 4959dedec0cSmrg basic_machine=mipsallegrexel-sony 4969dedec0cSmrg basic_os=psp 4979dedec0cSmrg ;; 4989dedec0cSmrg pw32) 4999dedec0cSmrg basic_machine=i586-unknown 5009dedec0cSmrg basic_os=pw32 5019dedec0cSmrg ;; 5029dedec0cSmrg rdos | rdos64) 5039dedec0cSmrg basic_machine=x86_64-pc 5049dedec0cSmrg basic_os=rdos 5059dedec0cSmrg ;; 5069dedec0cSmrg rdos32) 5079dedec0cSmrg basic_machine=i386-pc 5089dedec0cSmrg basic_os=rdos 5099dedec0cSmrg ;; 5109dedec0cSmrg rom68k) 5119dedec0cSmrg basic_machine=m68k-rom68k 5129dedec0cSmrg basic_os=coff 5139dedec0cSmrg ;; 5149dedec0cSmrg sa29200) 5159dedec0cSmrg basic_machine=a29k-amd 5169dedec0cSmrg basic_os=udi 5179dedec0cSmrg ;; 5189dedec0cSmrg sei) 5199dedec0cSmrg basic_machine=mips-sei 5209dedec0cSmrg basic_os=seiux 5219dedec0cSmrg ;; 5229dedec0cSmrg sequent) 5239dedec0cSmrg basic_machine=i386-sequent 5249dedec0cSmrg basic_os= 5259dedec0cSmrg ;; 5269dedec0cSmrg sps7) 5279dedec0cSmrg basic_machine=m68k-bull 5289dedec0cSmrg basic_os=sysv2 5299dedec0cSmrg ;; 5309dedec0cSmrg st2000) 5319dedec0cSmrg basic_machine=m68k-tandem 5329dedec0cSmrg basic_os= 5339dedec0cSmrg ;; 5349dedec0cSmrg stratus) 5359dedec0cSmrg basic_machine=i860-stratus 5369dedec0cSmrg basic_os=sysv4 5379dedec0cSmrg ;; 5389dedec0cSmrg sun2) 5399dedec0cSmrg basic_machine=m68000-sun 5409dedec0cSmrg basic_os= 5419dedec0cSmrg ;; 5429dedec0cSmrg sun2os3) 5439dedec0cSmrg basic_machine=m68000-sun 5449dedec0cSmrg basic_os=sunos3 5459dedec0cSmrg ;; 5469dedec0cSmrg sun2os4) 5479dedec0cSmrg basic_machine=m68000-sun 5489dedec0cSmrg basic_os=sunos4 5499dedec0cSmrg ;; 5509dedec0cSmrg sun3) 5519dedec0cSmrg basic_machine=m68k-sun 5529dedec0cSmrg basic_os= 5539dedec0cSmrg ;; 5549dedec0cSmrg sun3os3) 5559dedec0cSmrg basic_machine=m68k-sun 5569dedec0cSmrg basic_os=sunos3 5579dedec0cSmrg ;; 5589dedec0cSmrg sun3os4) 5599dedec0cSmrg basic_machine=m68k-sun 5609dedec0cSmrg basic_os=sunos4 5619dedec0cSmrg ;; 5629dedec0cSmrg sun4) 5639dedec0cSmrg basic_machine=sparc-sun 5649dedec0cSmrg basic_os= 5659dedec0cSmrg ;; 5669dedec0cSmrg sun4os3) 5679dedec0cSmrg basic_machine=sparc-sun 5689dedec0cSmrg basic_os=sunos3 5699dedec0cSmrg ;; 5709dedec0cSmrg sun4os4) 5719dedec0cSmrg basic_machine=sparc-sun 5729dedec0cSmrg basic_os=sunos4 5739dedec0cSmrg ;; 5749dedec0cSmrg sun4sol2) 5759dedec0cSmrg basic_machine=sparc-sun 5769dedec0cSmrg basic_os=solaris2 5779dedec0cSmrg ;; 5789dedec0cSmrg sun386 | sun386i | roadrunner) 5799dedec0cSmrg basic_machine=i386-sun 5809dedec0cSmrg basic_os= 5819dedec0cSmrg ;; 5829dedec0cSmrg sv1) 5839dedec0cSmrg basic_machine=sv1-cray 5849dedec0cSmrg basic_os=unicos 5859dedec0cSmrg ;; 5869dedec0cSmrg symmetry) 5879dedec0cSmrg basic_machine=i386-sequent 5889dedec0cSmrg basic_os=dynix 5899dedec0cSmrg ;; 5909dedec0cSmrg t3e) 5919dedec0cSmrg basic_machine=alphaev5-cray 5929dedec0cSmrg basic_os=unicos 5939dedec0cSmrg ;; 5949dedec0cSmrg t90) 5959dedec0cSmrg basic_machine=t90-cray 5969dedec0cSmrg basic_os=unicos 5979dedec0cSmrg ;; 5989dedec0cSmrg toad1) 5999dedec0cSmrg basic_machine=pdp10-xkl 6009dedec0cSmrg basic_os=tops20 6019dedec0cSmrg ;; 6029dedec0cSmrg tpf) 6039dedec0cSmrg basic_machine=s390x-ibm 6049dedec0cSmrg basic_os=tpf 6059dedec0cSmrg ;; 6069dedec0cSmrg udi29k) 6079dedec0cSmrg basic_machine=a29k-amd 6089dedec0cSmrg basic_os=udi 6099dedec0cSmrg ;; 6109dedec0cSmrg ultra3) 6119dedec0cSmrg basic_machine=a29k-nyu 6129dedec0cSmrg basic_os=sym1 6139dedec0cSmrg ;; 6149dedec0cSmrg v810 | necv810) 6159dedec0cSmrg basic_machine=v810-nec 6169dedec0cSmrg basic_os=none 6179dedec0cSmrg ;; 6189dedec0cSmrg vaxv) 6199dedec0cSmrg basic_machine=vax-dec 6209dedec0cSmrg basic_os=sysv 6219dedec0cSmrg ;; 6229dedec0cSmrg vms) 6239dedec0cSmrg basic_machine=vax-dec 6249dedec0cSmrg basic_os=vms 6259dedec0cSmrg ;; 6269dedec0cSmrg vsta) 6279dedec0cSmrg basic_machine=i386-pc 6289dedec0cSmrg basic_os=vsta 6299dedec0cSmrg ;; 6309dedec0cSmrg vxworks960) 6319dedec0cSmrg basic_machine=i960-wrs 6329dedec0cSmrg basic_os=vxworks 6339dedec0cSmrg ;; 6349dedec0cSmrg vxworks68) 6359dedec0cSmrg basic_machine=m68k-wrs 6369dedec0cSmrg basic_os=vxworks 6379dedec0cSmrg ;; 6389dedec0cSmrg vxworks29k) 6399dedec0cSmrg basic_machine=a29k-wrs 6409dedec0cSmrg basic_os=vxworks 6419dedec0cSmrg ;; 6429dedec0cSmrg xbox) 6439dedec0cSmrg basic_machine=i686-pc 6449dedec0cSmrg basic_os=mingw32 6459dedec0cSmrg ;; 6469dedec0cSmrg ymp) 6479dedec0cSmrg basic_machine=ymp-cray 6489dedec0cSmrg basic_os=unicos 6499dedec0cSmrg ;; 6509dedec0cSmrg *) 6519dedec0cSmrg basic_machine=$1 6529dedec0cSmrg basic_os= 6539dedec0cSmrg ;; 6549dedec0cSmrg esac 6556c321187Smrg ;; 6566c321187Smrgesac 6576c321187Smrg 6589dedec0cSmrg# Decode 1-component or ad-hoc basic machines 6596c321187Smrgcase $basic_machine in 6609dedec0cSmrg # Here we handle the default manufacturer of certain CPU types. It is in 6619dedec0cSmrg # some cases the only manufacturer, in others, it is the most popular. 6629dedec0cSmrg w89k) 6639dedec0cSmrg cpu=hppa1.1 6649dedec0cSmrg vendor=winbond 665198e4c3cSmrg ;; 6669dedec0cSmrg op50n) 6679dedec0cSmrg cpu=hppa1.1 6689dedec0cSmrg vendor=oki 6696c321187Smrg ;; 6709dedec0cSmrg op60c) 6719dedec0cSmrg cpu=hppa1.1 6729dedec0cSmrg vendor=oki 6736c321187Smrg ;; 6749dedec0cSmrg ibm*) 6759dedec0cSmrg cpu=i370 6769dedec0cSmrg vendor=ibm 6776c321187Smrg ;; 6789dedec0cSmrg orion105) 6799dedec0cSmrg cpu=clipper 6809dedec0cSmrg vendor=highlevel 6819d0b5e55Smrg ;; 6829dedec0cSmrg mac | mpw | mac-mpw) 6839dedec0cSmrg cpu=m68k 6849dedec0cSmrg vendor=apple 6859d0b5e55Smrg ;; 6869dedec0cSmrg pmac | pmac-mpw) 6879dedec0cSmrg cpu=powerpc 6889dedec0cSmrg vendor=apple 6899d0b5e55Smrg ;; 6909d0b5e55Smrg 6916c321187Smrg # Recognize the various machine names and aliases which stand 6926c321187Smrg # for a CPU type and a company and sometimes even an OS. 6936c321187Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 6949dedec0cSmrg cpu=m68000 6959dedec0cSmrg vendor=att 6966c321187Smrg ;; 6976c321187Smrg 3b*) 6989dedec0cSmrg cpu=we32k 6999dedec0cSmrg vendor=att 70093493779Smrg ;; 701e120bd27Smrg bluegene*) 7029dedec0cSmrg cpu=powerpc 7039dedec0cSmrg vendor=ibm 7049dedec0cSmrg basic_os=cnk 7056c321187Smrg ;; 7066c321187Smrg decsystem10* | dec10*) 7079dedec0cSmrg cpu=pdp10 7089dedec0cSmrg vendor=dec 7099dedec0cSmrg basic_os=tops10 7106c321187Smrg ;; 7116c321187Smrg decsystem20* | dec20*) 7129dedec0cSmrg cpu=pdp10 7139dedec0cSmrg vendor=dec 7149dedec0cSmrg basic_os=tops20 7156c321187Smrg ;; 7166c321187Smrg delta | 3300 | motorola-3300 | motorola-delta \ 7176c321187Smrg | 3300-motorola | delta-motorola) 7189dedec0cSmrg cpu=m68k 7199dedec0cSmrg vendor=motorola 7206c321187Smrg ;; 721198e4c3cSmrg dpx2*) 7229dedec0cSmrg cpu=m68k 7239dedec0cSmrg vendor=bull 7249dedec0cSmrg basic_os=sysv3 7256c321187Smrg ;; 7266c321187Smrg encore | umax | mmax) 7279dedec0cSmrg cpu=ns32k 7289dedec0cSmrg vendor=encore 7296c321187Smrg ;; 7309dedec0cSmrg elxsi) 7319dedec0cSmrg cpu=elxsi 7329dedec0cSmrg vendor=elxsi 7339dedec0cSmrg basic_os=${basic_os:-bsd} 7346c321187Smrg ;; 7356c321187Smrg fx2800) 7369dedec0cSmrg cpu=i860 7379dedec0cSmrg vendor=alliant 7386c321187Smrg ;; 7396c321187Smrg genix) 7409dedec0cSmrg cpu=ns32k 7419dedec0cSmrg vendor=ns 7426c321187Smrg ;; 7436c321187Smrg h3050r* | hiux*) 7449dedec0cSmrg cpu=hppa1.1 7459dedec0cSmrg vendor=hitachi 7469dedec0cSmrg basic_os=hiuxwe2 7476c321187Smrg ;; 7486c321187Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 7499dedec0cSmrg cpu=hppa1.0 7509dedec0cSmrg vendor=hp 7516c321187Smrg ;; 7526c321187Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 7539dedec0cSmrg cpu=m68000 7549dedec0cSmrg vendor=hp 7556c321187Smrg ;; 7566c321187Smrg hp9k3[2-9][0-9]) 7579dedec0cSmrg cpu=m68k 7589dedec0cSmrg vendor=hp 7596c321187Smrg ;; 7606c321187Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 7619dedec0cSmrg cpu=hppa1.0 7629dedec0cSmrg vendor=hp 7636c321187Smrg ;; 7646c321187Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 7659dedec0cSmrg cpu=hppa1.1 7669dedec0cSmrg vendor=hp 7676c321187Smrg ;; 7686c321187Smrg hp9k78[0-9] | hp78[0-9]) 7696c321187Smrg # FIXME: really hppa2.0-hp 7709dedec0cSmrg cpu=hppa1.1 7719dedec0cSmrg vendor=hp 7726c321187Smrg ;; 7736c321187Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 7746c321187Smrg # FIXME: really hppa2.0-hp 7759dedec0cSmrg cpu=hppa1.1 7769dedec0cSmrg vendor=hp 7776c321187Smrg ;; 7786c321187Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 7799dedec0cSmrg cpu=hppa1.1 7809dedec0cSmrg vendor=hp 7816c321187Smrg ;; 7826c321187Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 7839dedec0cSmrg cpu=hppa1.0 7849dedec0cSmrg vendor=hp 7856c321187Smrg ;; 7866c321187Smrg i*86v32) 7879dedec0cSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7889dedec0cSmrg vendor=pc 7899dedec0cSmrg basic_os=sysv32 7906c321187Smrg ;; 7916c321187Smrg i*86v4*) 7929dedec0cSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7939dedec0cSmrg vendor=pc 7949dedec0cSmrg basic_os=sysv4 7956c321187Smrg ;; 7966c321187Smrg i*86v) 7979dedec0cSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 7989dedec0cSmrg vendor=pc 7999dedec0cSmrg basic_os=sysv 8006c321187Smrg ;; 8016c321187Smrg i*86sol2) 8029dedec0cSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 8039dedec0cSmrg vendor=pc 8049dedec0cSmrg basic_os=solaris2 8056c321187Smrg ;; 8069dedec0cSmrg j90 | j90-cray) 8079dedec0cSmrg cpu=j90 8089dedec0cSmrg vendor=cray 8099dedec0cSmrg basic_os=${basic_os:-unicos} 8106c321187Smrg ;; 8116c321187Smrg iris | iris4d) 8129dedec0cSmrg cpu=mips 8139dedec0cSmrg vendor=sgi 8149dedec0cSmrg case $basic_os in 8159dedec0cSmrg irix*) 8166c321187Smrg ;; 8176c321187Smrg *) 8189dedec0cSmrg basic_os=irix4 8196c321187Smrg ;; 8206c321187Smrg esac 8216c321187Smrg ;; 8226c321187Smrg miniframe) 8239dedec0cSmrg cpu=m68000 8249dedec0cSmrg vendor=convergent 8256c321187Smrg ;; 8269dedec0cSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 8279dedec0cSmrg cpu=m68k 8289dedec0cSmrg vendor=atari 8299dedec0cSmrg basic_os=mint 8306c321187Smrg ;; 8316c321187Smrg news-3600 | risc-news) 8329dedec0cSmrg cpu=mips 8339dedec0cSmrg vendor=sony 8349dedec0cSmrg basic_os=newsos 8356c321187Smrg ;; 836198e4c3cSmrg next | m*-next) 8379dedec0cSmrg cpu=m68k 8389dedec0cSmrg vendor=next 8399dedec0cSmrg case $basic_os in 8409dedec0cSmrg openstep*) 8419dedec0cSmrg ;; 8429dedec0cSmrg nextstep*) 8436c321187Smrg ;; 8449dedec0cSmrg ns2*) 8459dedec0cSmrg basic_os=nextstep2 8466c321187Smrg ;; 8476c321187Smrg *) 8489dedec0cSmrg basic_os=nextstep3 8496c321187Smrg ;; 8506c321187Smrg esac 8516c321187Smrg ;; 8526c321187Smrg np1) 8539dedec0cSmrg cpu=np1 8549dedec0cSmrg vendor=gould 855198e4c3cSmrg ;; 8566c321187Smrg op50n-* | op60c-*) 8579dedec0cSmrg cpu=hppa1.1 8589dedec0cSmrg vendor=oki 8599dedec0cSmrg basic_os=proelf 8606c321187Smrg ;; 8616c321187Smrg pa-hitachi) 8629dedec0cSmrg cpu=hppa1.1 8639dedec0cSmrg vendor=hitachi 8649dedec0cSmrg basic_os=hiuxwe2 86593493779Smrg ;; 8666c321187Smrg pbd) 8679dedec0cSmrg cpu=sparc 8689dedec0cSmrg vendor=tti 8696c321187Smrg ;; 8706c321187Smrg pbb) 8719dedec0cSmrg cpu=m68k 8729dedec0cSmrg vendor=tti 8736c321187Smrg ;; 8749dedec0cSmrg pc532) 8759dedec0cSmrg cpu=ns32k 8769dedec0cSmrg vendor=pc532 8776c321187Smrg ;; 8786c321187Smrg pn) 8799dedec0cSmrg cpu=pn 8809dedec0cSmrg vendor=gould 8816c321187Smrg ;; 8829dedec0cSmrg power) 8839dedec0cSmrg cpu=power 8849dedec0cSmrg vendor=ibm 8856c321187Smrg ;; 8869dedec0cSmrg ps2) 8879dedec0cSmrg cpu=i386 8889dedec0cSmrg vendor=ibm 8896c321187Smrg ;; 8909dedec0cSmrg rm[46]00) 8919dedec0cSmrg cpu=mips 8929dedec0cSmrg vendor=siemens 8936c321187Smrg ;; 8949dedec0cSmrg rtpc | rtpc-*) 8959dedec0cSmrg cpu=romp 8969dedec0cSmrg vendor=ibm 8976c321187Smrg ;; 8989dedec0cSmrg sde) 8999dedec0cSmrg cpu=mipsisa32 9009dedec0cSmrg vendor=sde 9019dedec0cSmrg basic_os=${basic_os:-elf} 9026c321187Smrg ;; 9039dedec0cSmrg simso-wrs) 9049dedec0cSmrg cpu=sparclite 9059dedec0cSmrg vendor=wrs 9069dedec0cSmrg basic_os=vxworks 9076c321187Smrg ;; 9089dedec0cSmrg tower | tower-32) 9099dedec0cSmrg cpu=m68k 9109dedec0cSmrg vendor=ncr 9116c321187Smrg ;; 9129dedec0cSmrg vpp*|vx|vx-*) 9139dedec0cSmrg cpu=f301 9149dedec0cSmrg vendor=fujitsu 9159d0b5e55Smrg ;; 9169dedec0cSmrg w65) 9179dedec0cSmrg cpu=w65 9189dedec0cSmrg vendor=wdc 9196c321187Smrg ;; 9209dedec0cSmrg w89k-*) 9219dedec0cSmrg cpu=hppa1.1 9229dedec0cSmrg vendor=winbond 9239dedec0cSmrg basic_os=proelf 9246c321187Smrg ;; 9259dedec0cSmrg none) 9269dedec0cSmrg cpu=none 9279dedec0cSmrg vendor=none 9286c321187Smrg ;; 9299dedec0cSmrg leon|leon[3-9]) 9309dedec0cSmrg cpu=sparc 9319dedec0cSmrg vendor=$basic_machine 9326c321187Smrg ;; 9339dedec0cSmrg leon-*|leon[3-9]-*) 9349dedec0cSmrg cpu=sparc 9359dedec0cSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 9366c321187Smrg ;; 9379dedec0cSmrg 9389dedec0cSmrg *-*) 9399dedec0cSmrg # shellcheck disable=SC2162 9409dedec0cSmrg saved_IFS=$IFS 9419dedec0cSmrg IFS="-" read cpu vendor <<EOF 9429dedec0cSmrg$basic_machine 9439dedec0cSmrgEOF 9449dedec0cSmrg IFS=$saved_IFS 9456c321187Smrg ;; 9469dedec0cSmrg # We use `pc' rather than `unknown' 9479dedec0cSmrg # because (1) that's what they normally are, and 9489dedec0cSmrg # (2) the word "unknown" tends to confuse beginning users. 9499dedec0cSmrg i*86 | x86_64) 9509dedec0cSmrg cpu=$basic_machine 9519dedec0cSmrg vendor=pc 9526c321187Smrg ;; 9539dedec0cSmrg # These rules are duplicated from below for sake of the special case above; 9549dedec0cSmrg # i.e. things that normalized to x86 arches should also default to "pc" 9559dedec0cSmrg pc98) 9569dedec0cSmrg cpu=i386 9579dedec0cSmrg vendor=pc 9586c321187Smrg ;; 9599dedec0cSmrg x64 | amd64) 9609dedec0cSmrg cpu=x86_64 9619dedec0cSmrg vendor=pc 9626c321187Smrg ;; 9639dedec0cSmrg # Recognize the basic CPU types without company name. 9649dedec0cSmrg *) 9659dedec0cSmrg cpu=$basic_machine 9669dedec0cSmrg vendor=unknown 96793493779Smrg ;; 9689dedec0cSmrgesac 9699dedec0cSmrg 9709dedec0cSmrgunset -v basic_machine 9719dedec0cSmrg 9729dedec0cSmrg# Decode basic machines in the full and proper CPU-Company form. 9739dedec0cSmrgcase $cpu-$vendor in 9749dedec0cSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 9759dedec0cSmrg # some cases the only manufacturer, in others, it is the most popular. 9769dedec0cSmrg craynv-unknown) 9779dedec0cSmrg vendor=cray 9789dedec0cSmrg basic_os=${basic_os:-unicosmp} 9796c321187Smrg ;; 9809dedec0cSmrg c90-unknown | c90-cray) 9819dedec0cSmrg vendor=cray 9829dedec0cSmrg basic_os=${Basic_os:-unicos} 9836c321187Smrg ;; 9849dedec0cSmrg fx80-unknown) 9859dedec0cSmrg vendor=alliant 98693493779Smrg ;; 9879dedec0cSmrg romp-unknown) 9889dedec0cSmrg vendor=ibm 9896c321187Smrg ;; 9909dedec0cSmrg mmix-unknown) 9919dedec0cSmrg vendor=knuth 9926c321187Smrg ;; 9939dedec0cSmrg microblaze-unknown | microblazeel-unknown) 9949dedec0cSmrg vendor=xilinx 9956c321187Smrg ;; 9969dedec0cSmrg rs6000-unknown) 9979dedec0cSmrg vendor=ibm 9986c321187Smrg ;; 9999dedec0cSmrg vax-unknown) 10009dedec0cSmrg vendor=dec 10016c321187Smrg ;; 10029dedec0cSmrg pdp11-unknown) 10039dedec0cSmrg vendor=dec 10049d0b5e55Smrg ;; 10059dedec0cSmrg we32k-unknown) 10069dedec0cSmrg vendor=att 10076c321187Smrg ;; 10089dedec0cSmrg cydra-unknown) 10099dedec0cSmrg vendor=cydrome 10106c321187Smrg ;; 10119dedec0cSmrg i370-ibm*) 10129dedec0cSmrg vendor=ibm 10136c321187Smrg ;; 10149dedec0cSmrg orion-unknown) 10159dedec0cSmrg vendor=highlevel 10166c321187Smrg ;; 10179dedec0cSmrg xps-unknown | xps100-unknown) 10189dedec0cSmrg cpu=xps100 10199dedec0cSmrg vendor=honeywell 10206c321187Smrg ;; 10219dedec0cSmrg 10229dedec0cSmrg # Here we normalize CPU types with a missing or matching vendor 10239dedec0cSmrg dpx20-unknown | dpx20-bull) 10249dedec0cSmrg cpu=rs6000 10259dedec0cSmrg vendor=bull 10269dedec0cSmrg basic_os=${basic_os:-bosx} 10276c321187Smrg ;; 10289dedec0cSmrg 10299dedec0cSmrg # Here we normalize CPU types irrespective of the vendor 10309dedec0cSmrg amd64-*) 10319dedec0cSmrg cpu=x86_64 10326c321187Smrg ;; 10339dedec0cSmrg blackfin-*) 10349dedec0cSmrg cpu=bfin 10359dedec0cSmrg basic_os=linux 10366c321187Smrg ;; 10379dedec0cSmrg c54x-*) 10389dedec0cSmrg cpu=tic54x 10396c321187Smrg ;; 10409dedec0cSmrg c55x-*) 10419dedec0cSmrg cpu=tic55x 10426c321187Smrg ;; 10439dedec0cSmrg c6x-*) 10449dedec0cSmrg cpu=tic6x 10456c321187Smrg ;; 10469dedec0cSmrg e500v[12]-*) 10479dedec0cSmrg cpu=powerpc 10489dedec0cSmrg basic_os=${basic_os}"spe" 10496c321187Smrg ;; 10509dedec0cSmrg mips3*-*) 10519dedec0cSmrg cpu=mips64 10526c321187Smrg ;; 10539dedec0cSmrg ms1-*) 10549dedec0cSmrg cpu=mt 10556c321187Smrg ;; 10569dedec0cSmrg m68knommu-*) 10579dedec0cSmrg cpu=m68k 10589dedec0cSmrg basic_os=linux 10596c321187Smrg ;; 10609dedec0cSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 10619dedec0cSmrg cpu=s12z 106293493779Smrg ;; 10639dedec0cSmrg openrisc-*) 10649dedec0cSmrg cpu=or32 10656c321187Smrg ;; 10669dedec0cSmrg parisc-*) 10679dedec0cSmrg cpu=hppa 10689dedec0cSmrg basic_os=linux 10696c321187Smrg ;; 10709dedec0cSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 10719dedec0cSmrg cpu=i586 10726c321187Smrg ;; 10739dedec0cSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 10749dedec0cSmrg cpu=i686 10756c321187Smrg ;; 10769dedec0cSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 10779dedec0cSmrg cpu=i686 10786c321187Smrg ;; 10799dedec0cSmrg pentium4-*) 10809dedec0cSmrg cpu=i786 10816c321187Smrg ;; 10829dedec0cSmrg pc98-*) 10839dedec0cSmrg cpu=i386 10846c321187Smrg ;; 10859dedec0cSmrg ppc-* | ppcbe-*) 10869dedec0cSmrg cpu=powerpc 10876c321187Smrg ;; 10889dedec0cSmrg ppcle-* | powerpclittle-*) 10899dedec0cSmrg cpu=powerpcle 10906c321187Smrg ;; 10919dedec0cSmrg ppc64-*) 10929dedec0cSmrg cpu=powerpc64 10936c321187Smrg ;; 10949dedec0cSmrg ppc64le-* | powerpc64little-*) 10959dedec0cSmrg cpu=powerpc64le 10966c321187Smrg ;; 10979dedec0cSmrg sb1-*) 10989dedec0cSmrg cpu=mipsisa64sb1 10996c321187Smrg ;; 11009dedec0cSmrg sb1el-*) 11019dedec0cSmrg cpu=mipsisa64sb1el 11026c321187Smrg ;; 11039dedec0cSmrg sh5e[lb]-*) 11049dedec0cSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 11056c321187Smrg ;; 11069dedec0cSmrg spur-*) 11079dedec0cSmrg cpu=spur 11086c321187Smrg ;; 11099dedec0cSmrg strongarm-* | thumb-*) 11109dedec0cSmrg cpu=arm 11116c321187Smrg ;; 11129dedec0cSmrg tx39-*) 11139dedec0cSmrg cpu=mipstx39 1114198e4c3cSmrg ;; 11159dedec0cSmrg tx39el-*) 11169dedec0cSmrg cpu=mipstx39el 11176c321187Smrg ;; 11189dedec0cSmrg x64-*) 11199dedec0cSmrg cpu=x86_64 11206c321187Smrg ;; 11219d0b5e55Smrg xscale-* | xscalee[bl]-*) 11229dedec0cSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 11236c321187Smrg ;; 11249dedec0cSmrg arm64-*) 11259dedec0cSmrg cpu=aarch64 11266c321187Smrg ;; 11276c321187Smrg 11289dedec0cSmrg # Recognize the canonical CPU Types that limit and/or modify the 11299dedec0cSmrg # company names they are paired with. 11309dedec0cSmrg cr16-*) 11319dedec0cSmrg basic_os=${basic_os:-elf} 11326c321187Smrg ;; 11339dedec0cSmrg crisv32-* | etraxfs*-*) 11349dedec0cSmrg cpu=crisv32 11359dedec0cSmrg vendor=axis 11366c321187Smrg ;; 11379dedec0cSmrg cris-* | etrax*-*) 11389dedec0cSmrg cpu=cris 11399dedec0cSmrg vendor=axis 11406c321187Smrg ;; 11419dedec0cSmrg crx-*) 11429dedec0cSmrg basic_os=${basic_os:-elf} 11436c321187Smrg ;; 11449dedec0cSmrg neo-tandem) 11459dedec0cSmrg cpu=neo 11469dedec0cSmrg vendor=tandem 11476c321187Smrg ;; 11489dedec0cSmrg nse-tandem) 11499dedec0cSmrg cpu=nse 11509dedec0cSmrg vendor=tandem 11516c321187Smrg ;; 11529dedec0cSmrg nsr-tandem) 11539dedec0cSmrg cpu=nsr 11549dedec0cSmrg vendor=tandem 11556c321187Smrg ;; 11569dedec0cSmrg nsv-tandem) 11579dedec0cSmrg cpu=nsv 11589dedec0cSmrg vendor=tandem 11596c321187Smrg ;; 11609dedec0cSmrg nsx-tandem) 11619dedec0cSmrg cpu=nsx 11629dedec0cSmrg vendor=tandem 11636c321187Smrg ;; 11649dedec0cSmrg mipsallegrexel-sony) 11659dedec0cSmrg cpu=mipsallegrexel 11669dedec0cSmrg vendor=sony 11676c321187Smrg ;; 11689dedec0cSmrg tile*-*) 11699dedec0cSmrg basic_os=${basic_os:-linux-gnu} 11706c321187Smrg ;; 11719dedec0cSmrg 11726c321187Smrg *) 11739dedec0cSmrg # Recognize the canonical CPU types that are allowed with any 11749dedec0cSmrg # company name. 11759dedec0cSmrg case $cpu in 11769dedec0cSmrg 1750a | 580 \ 11779dedec0cSmrg | a29k \ 11789dedec0cSmrg | aarch64 | aarch64_be \ 11799dedec0cSmrg | abacus \ 11809dedec0cSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 11819dedec0cSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 11829dedec0cSmrg | alphapca5[67] | alpha64pca5[67] \ 11839dedec0cSmrg | am33_2.0 \ 11849dedec0cSmrg | amdgcn \ 11859dedec0cSmrg | arc | arceb | arc32 | arc64 \ 11869dedec0cSmrg | arm | arm[lb]e | arme[lb] | armv* \ 11879dedec0cSmrg | avr | avr32 \ 11889dedec0cSmrg | asmjs \ 11899dedec0cSmrg | ba \ 11909dedec0cSmrg | be32 | be64 \ 11919dedec0cSmrg | bfin | bpf | bs2000 \ 11929dedec0cSmrg | c[123]* | c30 | [cjt]90 | c4x \ 11939dedec0cSmrg | c8051 | clipper | craynv | csky | cydra \ 11949dedec0cSmrg | d10v | d30v | dlx | dsp16xx \ 11959dedec0cSmrg | e2k | elxsi | epiphany \ 11969dedec0cSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 11979dedec0cSmrg | h8300 | h8500 \ 11989dedec0cSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 11999dedec0cSmrg | hexagon \ 12009dedec0cSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 12019dedec0cSmrg | ip2k | iq2000 \ 12029dedec0cSmrg | k1om \ 12039dedec0cSmrg | le32 | le64 \ 12049dedec0cSmrg | lm32 \ 12059dedec0cSmrg | loongarch32 | loongarch64 | loongarchx32 \ 12069dedec0cSmrg | m32c | m32r | m32rle \ 12079dedec0cSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 12089dedec0cSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 12099dedec0cSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 12109dedec0cSmrg | microblaze | microblazeel \ 12119dedec0cSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 12129dedec0cSmrg | mips16 \ 12139dedec0cSmrg | mips64 | mips64eb | mips64el \ 12149dedec0cSmrg | mips64octeon | mips64octeonel \ 12159dedec0cSmrg | mips64orion | mips64orionel \ 12169dedec0cSmrg | mips64r5900 | mips64r5900el \ 12179dedec0cSmrg | mips64vr | mips64vrel \ 12189dedec0cSmrg | mips64vr4100 | mips64vr4100el \ 12199dedec0cSmrg | mips64vr4300 | mips64vr4300el \ 12209dedec0cSmrg | mips64vr5000 | mips64vr5000el \ 12219dedec0cSmrg | mips64vr5900 | mips64vr5900el \ 12229dedec0cSmrg | mipsisa32 | mipsisa32el \ 12239dedec0cSmrg | mipsisa32r2 | mipsisa32r2el \ 12249dedec0cSmrg | mipsisa32r3 | mipsisa32r3el \ 12259dedec0cSmrg | mipsisa32r5 | mipsisa32r5el \ 12269dedec0cSmrg | mipsisa32r6 | mipsisa32r6el \ 12279dedec0cSmrg | mipsisa64 | mipsisa64el \ 12289dedec0cSmrg | mipsisa64r2 | mipsisa64r2el \ 12299dedec0cSmrg | mipsisa64r3 | mipsisa64r3el \ 12309dedec0cSmrg | mipsisa64r5 | mipsisa64r5el \ 12319dedec0cSmrg | mipsisa64r6 | mipsisa64r6el \ 12329dedec0cSmrg | mipsisa64sb1 | mipsisa64sb1el \ 12339dedec0cSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 12349dedec0cSmrg | mipsr5900 | mipsr5900el \ 12359dedec0cSmrg | mipstx39 | mipstx39el \ 12369dedec0cSmrg | mmix \ 12379dedec0cSmrg | mn10200 | mn10300 \ 12389dedec0cSmrg | moxie \ 12399dedec0cSmrg | mt \ 12409dedec0cSmrg | msp430 \ 12419dedec0cSmrg | nds32 | nds32le | nds32be \ 12429dedec0cSmrg | nfp \ 12439dedec0cSmrg | nios | nios2 | nios2eb | nios2el \ 12449dedec0cSmrg | none | np1 | ns16k | ns32k | nvptx \ 12459dedec0cSmrg | open8 \ 12469dedec0cSmrg | or1k* \ 12479dedec0cSmrg | or32 \ 12489dedec0cSmrg | orion \ 12499dedec0cSmrg | picochip \ 12509dedec0cSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 12519dedec0cSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 12529dedec0cSmrg | pru \ 12539dedec0cSmrg | pyramid \ 12549dedec0cSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 12559dedec0cSmrg | rl78 | romp | rs6000 | rx \ 12569dedec0cSmrg | s390 | s390x \ 12579dedec0cSmrg | score \ 12589dedec0cSmrg | sh | shl \ 12599dedec0cSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 12609dedec0cSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 12619dedec0cSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 12629dedec0cSmrg | sparclite \ 12639dedec0cSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 12649dedec0cSmrg | spu \ 12659dedec0cSmrg | tahoe \ 12669dedec0cSmrg | thumbv7* \ 12679dedec0cSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 12689dedec0cSmrg | tron \ 12699dedec0cSmrg | ubicom32 \ 12709dedec0cSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 12719dedec0cSmrg | vax \ 12729dedec0cSmrg | visium \ 12739dedec0cSmrg | w65 \ 12749dedec0cSmrg | wasm32 | wasm64 \ 12759dedec0cSmrg | we32k \ 12769dedec0cSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 12779dedec0cSmrg | xstormy16 | xtensa* \ 12789dedec0cSmrg | ymp \ 12799dedec0cSmrg | z8k | z80) 12809dedec0cSmrg ;; 12819dedec0cSmrg 12829dedec0cSmrg *) 12839dedec0cSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 12849dedec0cSmrg exit 1 12859dedec0cSmrg ;; 12869dedec0cSmrg esac 12876c321187Smrg ;; 12886c321187Smrgesac 12896c321187Smrg 12906c321187Smrg# Here we canonicalize certain aliases for manufacturers. 12919dedec0cSmrgcase $vendor in 12929dedec0cSmrg digital*) 12939dedec0cSmrg vendor=dec 12946c321187Smrg ;; 12959dedec0cSmrg commodore*) 12969dedec0cSmrg vendor=cbm 12976c321187Smrg ;; 12986c321187Smrg *) 12996c321187Smrg ;; 13006c321187Smrgesac 13016c321187Smrg 13026c321187Smrg# Decode manufacturer-specific aliases for certain operating systems. 13036c321187Smrg 13049dedec0cSmrgif test x$basic_os != x 13056c321187Smrgthen 13069dedec0cSmrg 13079dedec0cSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 13089dedec0cSmrg# set os. 13099dedec0cSmrgcase $basic_os in 13109dedec0cSmrg gnu/linux*) 13119dedec0cSmrg kernel=linux 13129dedec0cSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 13139dedec0cSmrg ;; 13149dedec0cSmrg os2-emx) 13159dedec0cSmrg kernel=os2 13169dedec0cSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 13179dedec0cSmrg ;; 13189dedec0cSmrg nto-qnx*) 13199dedec0cSmrg kernel=nto 13209dedec0cSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 13219dedec0cSmrg ;; 13229dedec0cSmrg *-*) 13239dedec0cSmrg # shellcheck disable=SC2162 13249dedec0cSmrg saved_IFS=$IFS 13259dedec0cSmrg IFS="-" read kernel os <<EOF 13269dedec0cSmrg$basic_os 13279dedec0cSmrgEOF 13289dedec0cSmrg IFS=$saved_IFS 13299dedec0cSmrg ;; 13309dedec0cSmrg # Default OS when just kernel was specified 13319dedec0cSmrg nto*) 13329dedec0cSmrg kernel=nto 13339dedec0cSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 13349dedec0cSmrg ;; 13359dedec0cSmrg linux*) 13369dedec0cSmrg kernel=linux 13379dedec0cSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13389dedec0cSmrg ;; 13399dedec0cSmrg *) 13409dedec0cSmrg kernel= 13419dedec0cSmrg os=$basic_os 13429dedec0cSmrg ;; 13439dedec0cSmrgesac 13449dedec0cSmrg 13459dedec0cSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 13469dedec0cSmrg# etc.) 13476c321187Smrgcase $os in 1348198e4c3cSmrg # First match some system type aliases that might get confused 1349198e4c3cSmrg # with valid system types. 13509dedec0cSmrg # solaris* is a basic system type, with this one exception. 13519dedec0cSmrg auroraux) 13529dedec0cSmrg os=auroraux 1353e120bd27Smrg ;; 13549dedec0cSmrg bluegene*) 13559dedec0cSmrg os=cnk 13566c321187Smrg ;; 13579dedec0cSmrg solaris1 | solaris1.*) 13589dedec0cSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 13596c321187Smrg ;; 13609dedec0cSmrg solaris) 13619dedec0cSmrg os=solaris2 13626c321187Smrg ;; 13639dedec0cSmrg unixware*) 13649dedec0cSmrg os=sysv4.2uw 13656c321187Smrg ;; 1366198e4c3cSmrg # es1800 is here to avoid being matched by es* (a different OS) 13679dedec0cSmrg es1800*) 13689dedec0cSmrg os=ose 1369198e4c3cSmrg ;; 13709dedec0cSmrg # Some version numbers need modification 13719dedec0cSmrg chorusos*) 13729dedec0cSmrg os=chorusos 13736c321187Smrg ;; 13749dedec0cSmrg isc) 13759dedec0cSmrg os=isc2.2 13766c321187Smrg ;; 13779dedec0cSmrg sco6) 13789dedec0cSmrg os=sco5v6 13796c321187Smrg ;; 13809dedec0cSmrg sco5) 13819dedec0cSmrg os=sco3.2v5 13826c321187Smrg ;; 13839dedec0cSmrg sco4) 13849dedec0cSmrg os=sco3.2v4 13856c321187Smrg ;; 13869dedec0cSmrg sco3.2.[4-9]*) 13879dedec0cSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 13886c321187Smrg ;; 13899dedec0cSmrg sco*v* | scout) 13909dedec0cSmrg # Don't match below 13916c321187Smrg ;; 13929dedec0cSmrg sco*) 13939dedec0cSmrg os=sco3.2v2 13946c321187Smrg ;; 13959dedec0cSmrg psos*) 13969dedec0cSmrg os=psos 13976c321187Smrg ;; 13989dedec0cSmrg qnx*) 13999dedec0cSmrg os=qnx 14006c321187Smrg ;; 14019dedec0cSmrg hiux*) 14029dedec0cSmrg os=hiuxwe2 14036c321187Smrg ;; 14049dedec0cSmrg lynx*178) 14059dedec0cSmrg os=lynxos178 14066c321187Smrg ;; 14079dedec0cSmrg lynx*5) 14089dedec0cSmrg os=lynxos5 14096c321187Smrg ;; 14109dedec0cSmrg lynxos*) 14119dedec0cSmrg # don't get caught up in next wildcard 14126c321187Smrg ;; 14139dedec0cSmrg lynx*) 14149dedec0cSmrg os=lynxos 14156c321187Smrg ;; 14169dedec0cSmrg mac[0-9]*) 14179dedec0cSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 14186c321187Smrg ;; 14199dedec0cSmrg opened*) 14209dedec0cSmrg os=openedition 14216c321187Smrg ;; 14229dedec0cSmrg os400*) 14239dedec0cSmrg os=os400 14246c321187Smrg ;; 14259dedec0cSmrg sunos5*) 14269dedec0cSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 14276c321187Smrg ;; 14289dedec0cSmrg sunos6*) 14299dedec0cSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 14306c321187Smrg ;; 14319dedec0cSmrg wince*) 14329dedec0cSmrg os=wince 14336c321187Smrg ;; 14349dedec0cSmrg utek*) 14359dedec0cSmrg os=bsd 14366c321187Smrg ;; 14379dedec0cSmrg dynix*) 14389dedec0cSmrg os=bsd 14396c321187Smrg ;; 14409dedec0cSmrg acis*) 14419dedec0cSmrg os=aos 14426c321187Smrg ;; 14439dedec0cSmrg atheos*) 14449dedec0cSmrg os=atheos 14456c321187Smrg ;; 14469dedec0cSmrg syllable*) 14479dedec0cSmrg os=syllable 14489dedec0cSmrg ;; 14499dedec0cSmrg 386bsd) 14509dedec0cSmrg os=bsd 14519dedec0cSmrg ;; 14529dedec0cSmrg ctix* | uts*) 14539dedec0cSmrg os=sysv 14549dedec0cSmrg ;; 14559dedec0cSmrg nova*) 14569dedec0cSmrg os=rtmk-nova 14579dedec0cSmrg ;; 14589dedec0cSmrg ns2) 14599dedec0cSmrg os=nextstep2 14609dedec0cSmrg ;; 14619dedec0cSmrg # Preserve the version number of sinix5. 14629dedec0cSmrg sinix5.*) 14639dedec0cSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 14646c321187Smrg ;; 14659dedec0cSmrg sinix*) 14669dedec0cSmrg os=sysv4 14676c321187Smrg ;; 14689dedec0cSmrg tpf*) 14699dedec0cSmrg os=tpf 14706c321187Smrg ;; 14719dedec0cSmrg triton*) 14729dedec0cSmrg os=sysv3 14736c321187Smrg ;; 14749dedec0cSmrg oss*) 14759dedec0cSmrg os=sysv3 14766c321187Smrg ;; 14779dedec0cSmrg svr4*) 14789dedec0cSmrg os=sysv4 14796c321187Smrg ;; 14809dedec0cSmrg svr3) 14819dedec0cSmrg os=sysv3 14826c321187Smrg ;; 14839dedec0cSmrg sysvr4) 14849dedec0cSmrg os=sysv4 14856c321187Smrg ;; 14869dedec0cSmrg ose*) 14879dedec0cSmrg os=ose 14886c321187Smrg ;; 14899dedec0cSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 14909dedec0cSmrg os=mint 1491e120bd27Smrg ;; 14929dedec0cSmrg dicos*) 14939dedec0cSmrg os=dicos 14949dedec0cSmrg ;; 14959dedec0cSmrg pikeos*) 1496198e4c3cSmrg # Until real need of OS specific support for 1497198e4c3cSmrg # particular features comes up, bare metal 1498198e4c3cSmrg # configurations are quite functional. 14999dedec0cSmrg case $cpu in 1500198e4c3cSmrg arm*) 15019dedec0cSmrg os=eabi 1502198e4c3cSmrg ;; 1503198e4c3cSmrg *) 15049dedec0cSmrg os=elf 1505198e4c3cSmrg ;; 1506198e4c3cSmrg esac 1507198e4c3cSmrg ;; 15086c321187Smrg *) 15099dedec0cSmrg # No normalization, but not necessarily accepted, that comes below. 15106c321187Smrg ;; 15116c321187Smrgesac 15129dedec0cSmrg 15136c321187Smrgelse 15146c321187Smrg 15156c321187Smrg# Here we handle the default operating systems that come with various machines. 15166c321187Smrg# The value should be what the vendor currently ships out the door with their 15176c321187Smrg# machine or put another way, the most popular os provided with the machine. 15186c321187Smrg 15196c321187Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 15206c321187Smrg# "-sun"), then you have to tell the case statement up towards the top 15216c321187Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 15226c321187Smrg# will signal an error saying that MANUFACTURER isn't an operating 15236c321187Smrg# system, and we'll never get to this point. 15246c321187Smrg 15259dedec0cSmrgkernel= 15269dedec0cSmrgcase $cpu-$vendor in 15279d0b5e55Smrg score-*) 15289dedec0cSmrg os=elf 152993493779Smrg ;; 15309d0b5e55Smrg spu-*) 15319dedec0cSmrg os=elf 153293493779Smrg ;; 15336c321187Smrg *-acorn) 15349dedec0cSmrg os=riscix1.2 15356c321187Smrg ;; 15366c321187Smrg arm*-rebel) 15379dedec0cSmrg kernel=linux 15389dedec0cSmrg os=gnu 15396c321187Smrg ;; 15406c321187Smrg arm*-semi) 15419dedec0cSmrg os=aout 15426c321187Smrg ;; 15439d0b5e55Smrg c4x-* | tic4x-*) 15449dedec0cSmrg os=coff 15459d0b5e55Smrg ;; 1546198e4c3cSmrg c8051-*) 15479dedec0cSmrg os=elf 15489dedec0cSmrg ;; 15499dedec0cSmrg clipper-intergraph) 15509dedec0cSmrg os=clix 1551198e4c3cSmrg ;; 15529d0b5e55Smrg hexagon-*) 15539dedec0cSmrg os=elf 155493493779Smrg ;; 1555e120bd27Smrg tic54x-*) 15569dedec0cSmrg os=coff 1557e120bd27Smrg ;; 1558e120bd27Smrg tic55x-*) 15599dedec0cSmrg os=coff 1560e120bd27Smrg ;; 1561e120bd27Smrg tic6x-*) 15629dedec0cSmrg os=coff 1563e120bd27Smrg ;; 15646c321187Smrg # This must come before the *-dec entry. 15656c321187Smrg pdp10-*) 15669dedec0cSmrg os=tops20 15676c321187Smrg ;; 15686c321187Smrg pdp11-*) 15699dedec0cSmrg os=none 15706c321187Smrg ;; 15716c321187Smrg *-dec | vax-*) 15729dedec0cSmrg os=ultrix4.2 15736c321187Smrg ;; 15746c321187Smrg m68*-apollo) 15759dedec0cSmrg os=domain 15766c321187Smrg ;; 15776c321187Smrg i386-sun) 15789dedec0cSmrg os=sunos4.0.2 15796c321187Smrg ;; 15806c321187Smrg m68000-sun) 15819dedec0cSmrg os=sunos3 15826c321187Smrg ;; 15836c321187Smrg m68*-cisco) 15849dedec0cSmrg os=aout 15856c321187Smrg ;; 15869d0b5e55Smrg mep-*) 15879dedec0cSmrg os=elf 158893493779Smrg ;; 15896c321187Smrg mips*-cisco) 15909dedec0cSmrg os=elf 15916c321187Smrg ;; 15926c321187Smrg mips*-*) 15939dedec0cSmrg os=elf 15946c321187Smrg ;; 15956c321187Smrg or32-*) 15969dedec0cSmrg os=coff 15976c321187Smrg ;; 15986c321187Smrg *-tti) # must be before sparc entry or we get the wrong os. 15999dedec0cSmrg os=sysv3 16006c321187Smrg ;; 16016c321187Smrg sparc-* | *-sun) 16029dedec0cSmrg os=sunos4.1.1 16036c321187Smrg ;; 1604198e4c3cSmrg pru-*) 16059dedec0cSmrg os=elf 1606198e4c3cSmrg ;; 16076c321187Smrg *-be) 16089dedec0cSmrg os=beos 16096c321187Smrg ;; 16106c321187Smrg *-ibm) 16119dedec0cSmrg os=aix 16126c321187Smrg ;; 16139d0b5e55Smrg *-knuth) 16149dedec0cSmrg os=mmixware 16156c321187Smrg ;; 16166c321187Smrg *-wec) 16179dedec0cSmrg os=proelf 16186c321187Smrg ;; 16196c321187Smrg *-winbond) 16209dedec0cSmrg os=proelf 16216c321187Smrg ;; 16226c321187Smrg *-oki) 16239dedec0cSmrg os=proelf 16246c321187Smrg ;; 16256c321187Smrg *-hp) 16269dedec0cSmrg os=hpux 16276c321187Smrg ;; 16286c321187Smrg *-hitachi) 16299dedec0cSmrg os=hiux 16306c321187Smrg ;; 16316c321187Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 16329dedec0cSmrg os=sysv 16336c321187Smrg ;; 16346c321187Smrg *-cbm) 16359dedec0cSmrg os=amigaos 16366c321187Smrg ;; 16376c321187Smrg *-dg) 16389dedec0cSmrg os=dgux 16396c321187Smrg ;; 16406c321187Smrg *-dolphin) 16419dedec0cSmrg os=sysv3 16426c321187Smrg ;; 16436c321187Smrg m68k-ccur) 16449dedec0cSmrg os=rtu 16456c321187Smrg ;; 16466c321187Smrg m88k-omron*) 16479dedec0cSmrg os=luna 16486c321187Smrg ;; 1649198e4c3cSmrg *-next) 16509dedec0cSmrg os=nextstep 16516c321187Smrg ;; 16526c321187Smrg *-sequent) 16539dedec0cSmrg os=ptx 16546c321187Smrg ;; 16556c321187Smrg *-crds) 16569dedec0cSmrg os=unos 16576c321187Smrg ;; 16586c321187Smrg *-ns) 16599dedec0cSmrg os=genix 16606c321187Smrg ;; 16616c321187Smrg i370-*) 16629dedec0cSmrg os=mvs 16636c321187Smrg ;; 16646c321187Smrg *-gould) 16659dedec0cSmrg os=sysv 16666c321187Smrg ;; 16676c321187Smrg *-highlevel) 16689dedec0cSmrg os=bsd 16696c321187Smrg ;; 16706c321187Smrg *-encore) 16719dedec0cSmrg os=bsd 16726c321187Smrg ;; 16736c321187Smrg *-sgi) 16749dedec0cSmrg os=irix 16756c321187Smrg ;; 16766c321187Smrg *-siemens) 16779dedec0cSmrg os=sysv4 16786c321187Smrg ;; 16796c321187Smrg *-masscomp) 16809dedec0cSmrg os=rtu 16816c321187Smrg ;; 16826c321187Smrg f30[01]-fujitsu | f700-fujitsu) 16839dedec0cSmrg os=uxpv 16846c321187Smrg ;; 16856c321187Smrg *-rom68k) 16869dedec0cSmrg os=coff 16876c321187Smrg ;; 16886c321187Smrg *-*bug) 16899dedec0cSmrg os=coff 16906c321187Smrg ;; 16916c321187Smrg *-apple) 16929dedec0cSmrg os=macos 16936c321187Smrg ;; 16946c321187Smrg *-atari*) 16959dedec0cSmrg os=mint 16969dedec0cSmrg ;; 16979dedec0cSmrg *-wrs) 16989dedec0cSmrg os=vxworks 16996c321187Smrg ;; 17006c321187Smrg *) 17019dedec0cSmrg os=none 17026c321187Smrg ;; 17036c321187Smrgesac 17049dedec0cSmrg 17056c321187Smrgfi 17066c321187Smrg 17079dedec0cSmrg# Now, validate our (potentially fixed-up) OS. 17089dedec0cSmrgcase $os in 17099dedec0cSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 17109dedec0cSmrg musl* | newlib* | relibc* | uclibc*) 17119dedec0cSmrg ;; 17129dedec0cSmrg # Likewise for "kernel-abi" 17139dedec0cSmrg eabi* | gnueabi*) 17149dedec0cSmrg ;; 17159dedec0cSmrg # VxWorks passes extra cpu info in the 4th filed. 17169dedec0cSmrg simlinux | simwindows | spe) 17179dedec0cSmrg ;; 17189dedec0cSmrg # Now accept the basic system types. 17199dedec0cSmrg # The portable systems comes first. 17209dedec0cSmrg # Each alternative MUST end in a * to match a version number. 17219dedec0cSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 17229dedec0cSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 17239dedec0cSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 17249dedec0cSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 17259dedec0cSmrg | hiux* | abug | nacl* | netware* | windows* \ 17269dedec0cSmrg | os9* | macos* | osx* | ios* \ 17279dedec0cSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 17289dedec0cSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 17299dedec0cSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 17309dedec0cSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 17319dedec0cSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 17329dedec0cSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 17339dedec0cSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 17349dedec0cSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 17359dedec0cSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 17369dedec0cSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 17379dedec0cSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 17389dedec0cSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 17399dedec0cSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 17409dedec0cSmrg | midipix* | mingw32* | mingw64* | mint* \ 17419dedec0cSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 17429dedec0cSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 17439dedec0cSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 17449dedec0cSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 17459dedec0cSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 17469dedec0cSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 17479dedec0cSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 17489dedec0cSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 17499dedec0cSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 17509dedec0cSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 17519dedec0cSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 17529dedec0cSmrg ;; 17539dedec0cSmrg # This one is extra strict with allowed versions 17549dedec0cSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 17559dedec0cSmrg # Don't forget version if it is 3.2v4 or newer. 17569dedec0cSmrg ;; 17579dedec0cSmrg none) 17589dedec0cSmrg ;; 17599dedec0cSmrg *) 17609dedec0cSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 17619dedec0cSmrg exit 1 17629dedec0cSmrg ;; 17639dedec0cSmrgesac 17649dedec0cSmrg 17659dedec0cSmrg# As a final step for OS-related things, validate the OS-kernel combination 17669dedec0cSmrg# (given a valid OS), if there is a kernel. 17679dedec0cSmrgcase $kernel-$os in 17689dedec0cSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 17699dedec0cSmrg | linux-musl* | linux-relibc* | linux-uclibc* ) 17709dedec0cSmrg ;; 17719dedec0cSmrg uclinux-uclibc* ) 17729dedec0cSmrg ;; 17739dedec0cSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 17749dedec0cSmrg # These are just libc implementations, not actual OSes, and thus 17759dedec0cSmrg # require a kernel. 17769dedec0cSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 17779dedec0cSmrg exit 1 17789dedec0cSmrg ;; 17799dedec0cSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 17809dedec0cSmrg ;; 17819dedec0cSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 17829dedec0cSmrg ;; 17839dedec0cSmrg nto-qnx*) 17849dedec0cSmrg ;; 17859dedec0cSmrg os2-emx) 17869dedec0cSmrg ;; 17879dedec0cSmrg *-eabi* | *-gnueabi*) 17889dedec0cSmrg ;; 17899dedec0cSmrg -*) 17909dedec0cSmrg # Blank kernel with real OS is always fine. 17919dedec0cSmrg ;; 17929dedec0cSmrg *-*) 17939dedec0cSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 17949dedec0cSmrg exit 1 17959dedec0cSmrg ;; 17969dedec0cSmrgesac 17979dedec0cSmrg 17986c321187Smrg# Here we handle the case where we know the os, and the CPU type, but not the 17996c321187Smrg# manufacturer. We pick the logical manufacturer. 18009dedec0cSmrgcase $vendor in 18019dedec0cSmrg unknown) 18029dedec0cSmrg case $cpu-$os in 18039dedec0cSmrg *-riscix*) 18046c321187Smrg vendor=acorn 18056c321187Smrg ;; 18069dedec0cSmrg *-sunos*) 18076c321187Smrg vendor=sun 18086c321187Smrg ;; 18099dedec0cSmrg *-cnk* | *-aix*) 18106c321187Smrg vendor=ibm 18116c321187Smrg ;; 18129dedec0cSmrg *-beos*) 18136c321187Smrg vendor=be 18146c321187Smrg ;; 18159dedec0cSmrg *-hpux*) 18166c321187Smrg vendor=hp 18176c321187Smrg ;; 18189dedec0cSmrg *-mpeix*) 18196c321187Smrg vendor=hp 18206c321187Smrg ;; 18219dedec0cSmrg *-hiux*) 18226c321187Smrg vendor=hitachi 18236c321187Smrg ;; 18249dedec0cSmrg *-unos*) 18256c321187Smrg vendor=crds 18266c321187Smrg ;; 18279dedec0cSmrg *-dgux*) 18286c321187Smrg vendor=dg 18296c321187Smrg ;; 18309dedec0cSmrg *-luna*) 18316c321187Smrg vendor=omron 18326c321187Smrg ;; 18339dedec0cSmrg *-genix*) 18346c321187Smrg vendor=ns 18356c321187Smrg ;; 18369dedec0cSmrg *-clix*) 18379dedec0cSmrg vendor=intergraph 18389dedec0cSmrg ;; 18399dedec0cSmrg *-mvs* | *-opened*) 18409dedec0cSmrg vendor=ibm 18419dedec0cSmrg ;; 18429dedec0cSmrg *-os400*) 18436c321187Smrg vendor=ibm 18446c321187Smrg ;; 18459dedec0cSmrg s390-* | s390x-*) 18466c321187Smrg vendor=ibm 18476c321187Smrg ;; 18489dedec0cSmrg *-ptx*) 18496c321187Smrg vendor=sequent 18506c321187Smrg ;; 18519dedec0cSmrg *-tpf*) 18526c321187Smrg vendor=ibm 18536c321187Smrg ;; 18549dedec0cSmrg *-vxsim* | *-vxworks* | *-windiss*) 18556c321187Smrg vendor=wrs 18566c321187Smrg ;; 18579dedec0cSmrg *-aux*) 18586c321187Smrg vendor=apple 18596c321187Smrg ;; 18609dedec0cSmrg *-hms*) 18616c321187Smrg vendor=hitachi 18626c321187Smrg ;; 18639dedec0cSmrg *-mpw* | *-macos*) 18646c321187Smrg vendor=apple 18656c321187Smrg ;; 18669dedec0cSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 18676c321187Smrg vendor=atari 18686c321187Smrg ;; 18699dedec0cSmrg *-vos*) 18706c321187Smrg vendor=stratus 18716c321187Smrg ;; 18726c321187Smrg esac 18736c321187Smrg ;; 18746c321187Smrgesac 18756c321187Smrg 18769dedec0cSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 18776c321187Smrgexit 18786c321187Smrg 18796c321187Smrg# Local variables: 18809dedec0cSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 18816c321187Smrg# time-stamp-start: "timestamp='" 18826c321187Smrg# time-stamp-format: "%:y-%02m-%02d" 18836c321187Smrg# time-stamp-end: "'" 18846c321187Smrg# End: 1885