1e4da13eeSmacallan#! /bin/sh 2e4da13eeSmacallan# Configuration validation subroutine script. 325ad54caSmrg# Copyright 1992-2021 Free Software Foundation, Inc. 4e4da13eeSmacallan 525ad54caSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 6e4da13eeSmacallan 725ad54caSmrgtimestamp='2021-08-14' 825ad54caSmrg 925ad54caSmrg# This file is free software; you can redistribute it and/or modify it 1025ad54caSmrg# under the terms of the GNU General Public License as published by 1125ad54caSmrg# the Free Software Foundation; either version 3 of the License, or 12e4da13eeSmacallan# (at your option) any later version. 13e4da13eeSmacallan# 1425ad54caSmrg# This program is distributed in the hope that it will be useful, but 1525ad54caSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of 1625ad54caSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1725ad54caSmrg# General Public License for more details. 18e4da13eeSmacallan# 19e4da13eeSmacallan# You should have received a copy of the GNU General Public License 2025ad54caSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 21e4da13eeSmacallan# 22e4da13eeSmacallan# As a special exception to the GNU General Public License, if you 23e4da13eeSmacallan# distribute this file as part of a program that contains a 24e4da13eeSmacallan# configuration script generated by Autoconf, you may include it under 2525ad54caSmrg# the same distribution terms that you use for the rest of that 2625ad54caSmrg# program. This Exception is an additional permission under section 7 2725ad54caSmrg# of the GNU General Public License, version 3 ("GPLv3"). 28e4da13eeSmacallan 29e4da13eeSmacallan 3025ad54caSmrg# Please send patches to <config-patches@gnu.org>. 31e4da13eeSmacallan# 32e4da13eeSmacallan# Configuration subroutine to validate and canonicalize a configuration type. 33e4da13eeSmacallan# Supply the specified configuration type as an argument. 34e4da13eeSmacallan# If it is invalid, we print an error message on stderr and exit with code 1. 35e4da13eeSmacallan# Otherwise, we print the canonical config type on stdout and succeed. 36e4da13eeSmacallan 3765d490d0Smrg# You can get the latest version of this script from: 3825ad54caSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 3965d490d0Smrg 40e4da13eeSmacallan# This file is supposed to be the same for all GNU packages 41e4da13eeSmacallan# and recognize all the CPU types, system types and aliases 42e4da13eeSmacallan# that are meaningful with *any* GNU software. 43e4da13eeSmacallan# Each package is responsible for reporting which valid configurations 44e4da13eeSmacallan# it does not support. The user should be able to distinguish 45e4da13eeSmacallan# a failure to support a valid configuration from a meaningless 46e4da13eeSmacallan# configuration. 47e4da13eeSmacallan 48e4da13eeSmacallan# The goal of this file is to map all the various variations of a given 49e4da13eeSmacallan# machine specification into a single specification in the form: 50e4da13eeSmacallan# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51e4da13eeSmacallan# or in some cases, the newer four-part form: 52e4da13eeSmacallan# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53e4da13eeSmacallan# It is wrong to echo any other type of specification. 54e4da13eeSmacallan 5525ad54caSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 5625ad54caSmrg# about features and limitations of the classic Bourne shell that were 5725ad54caSmrg# superseded or lifted in POSIX. However, this script identifies a wide 5825ad54caSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 5925ad54caSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 6025ad54caSmrg# have a pre-POSIX /bin/sh. 6125ad54caSmrg 62e4da13eeSmacallanme=`echo "$0" | sed -e 's,.*/,,'` 63e4da13eeSmacallan 64e4da13eeSmacallanusage="\ 6525ad54caSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66e4da13eeSmacallan 67e4da13eeSmacallanCanonicalize a configuration name. 68e4da13eeSmacallan 6925ad54caSmrgOptions: 70e4da13eeSmacallan -h, --help print this help, then exit 71e4da13eeSmacallan -t, --time-stamp print date of last modification, then exit 72e4da13eeSmacallan -v, --version print version number, then exit 73e4da13eeSmacallan 74e4da13eeSmacallanReport bugs and patches to <config-patches@gnu.org>." 75e4da13eeSmacallan 76e4da13eeSmacallanversion="\ 77e4da13eeSmacallanGNU config.sub ($timestamp) 78e4da13eeSmacallan 7925ad54caSmrgCopyright 1992-2021 Free Software Foundation, Inc. 80e4da13eeSmacallan 81e4da13eeSmacallanThis is free software; see the source for copying conditions. There is NO 82e4da13eeSmacallanwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83e4da13eeSmacallan 84e4da13eeSmacallanhelp=" 85e4da13eeSmacallanTry \`$me --help' for more information." 86e4da13eeSmacallan 87e4da13eeSmacallan# Parse command line 88e4da13eeSmacallanwhile test $# -gt 0 ; do 89e4da13eeSmacallan case $1 in 90e4da13eeSmacallan --time-stamp | --time* | -t ) 91e4da13eeSmacallan echo "$timestamp" ; exit ;; 92e4da13eeSmacallan --version | -v ) 93e4da13eeSmacallan echo "$version" ; exit ;; 94e4da13eeSmacallan --help | --h* | -h ) 95e4da13eeSmacallan echo "$usage"; exit ;; 96e4da13eeSmacallan -- ) # Stop option processing 97e4da13eeSmacallan shift; break ;; 98e4da13eeSmacallan - ) # Use stdin as input. 99e4da13eeSmacallan break ;; 100e4da13eeSmacallan -* ) 10125ad54caSmrg echo "$me: invalid option $1$help" >&2 102e4da13eeSmacallan exit 1 ;; 103e4da13eeSmacallan 104e4da13eeSmacallan *local*) 105e4da13eeSmacallan # First pass through any local machine types. 10625ad54caSmrg echo "$1" 107e4da13eeSmacallan exit ;; 108e4da13eeSmacallan 109e4da13eeSmacallan * ) 110e4da13eeSmacallan break ;; 111e4da13eeSmacallan esac 112e4da13eeSmacallandone 113e4da13eeSmacallan 114e4da13eeSmacallancase $# in 115e4da13eeSmacallan 0) echo "$me: missing argument$help" >&2 116e4da13eeSmacallan exit 1;; 117e4da13eeSmacallan 1) ;; 118e4da13eeSmacallan *) echo "$me: too many arguments$help" >&2 119e4da13eeSmacallan exit 1;; 120e4da13eeSmacallanesac 121e4da13eeSmacallan 12225ad54caSmrg# Split fields of configuration type 12325ad54caSmrg# shellcheck disable=SC2162 12425ad54caSmrgsaved_IFS=$IFS 12525ad54caSmrgIFS="-" read field1 field2 field3 field4 <<EOF 12625ad54caSmrg$1 12725ad54caSmrgEOF 12825ad54caSmrgIFS=$saved_IFS 129e4da13eeSmacallan 13025ad54caSmrg# Separate into logical components for further validation 13125ad54caSmrgcase $1 in 13225ad54caSmrg *-*-*-*-*) 13325ad54caSmrg echo Invalid configuration \`"$1"\': more than four components >&2 13425ad54caSmrg exit 1 135e4da13eeSmacallan ;; 13625ad54caSmrg *-*-*-*) 13725ad54caSmrg basic_machine=$field1-$field2 13825ad54caSmrg basic_os=$field3-$field4 139e4da13eeSmacallan ;; 14025ad54caSmrg *-*-*) 14125ad54caSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 14225ad54caSmrg # parts 14325ad54caSmrg maybe_os=$field2-$field3 14425ad54caSmrg case $maybe_os in 14525ad54caSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 14625ad54caSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 14725ad54caSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 14825ad54caSmrg | storm-chaos* | os2-emx* | rtmk-nova*) 14925ad54caSmrg basic_machine=$field1 15025ad54caSmrg basic_os=$maybe_os 15125ad54caSmrg ;; 15225ad54caSmrg android-linux) 15325ad54caSmrg basic_machine=$field1-unknown 15425ad54caSmrg basic_os=linux-android 15525ad54caSmrg ;; 15625ad54caSmrg *) 15725ad54caSmrg basic_machine=$field1-$field2 15825ad54caSmrg basic_os=$field3 15925ad54caSmrg ;; 16025ad54caSmrg esac 161e4da13eeSmacallan ;; 16225ad54caSmrg *-*) 16325ad54caSmrg # A lone config we happen to match not fitting any pattern 16425ad54caSmrg case $field1-$field2 in 16525ad54caSmrg decstation-3100) 16625ad54caSmrg basic_machine=mips-dec 16725ad54caSmrg basic_os= 16825ad54caSmrg ;; 16925ad54caSmrg *-*) 17025ad54caSmrg # Second component is usually, but not always the OS 17125ad54caSmrg case $field2 in 17225ad54caSmrg # Prevent following clause from handling this valid os 17325ad54caSmrg sun*os*) 17425ad54caSmrg basic_machine=$field1 17525ad54caSmrg basic_os=$field2 17625ad54caSmrg ;; 17725ad54caSmrg zephyr*) 17825ad54caSmrg basic_machine=$field1-unknown 17925ad54caSmrg basic_os=$field2 18025ad54caSmrg ;; 18125ad54caSmrg # Manufacturers 18225ad54caSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 18325ad54caSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 18425ad54caSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 18525ad54caSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 18625ad54caSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 18725ad54caSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 18825ad54caSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 18925ad54caSmrg | microblaze* | sim | cisco \ 19025ad54caSmrg | oki | wec | wrs | winbond) 19125ad54caSmrg basic_machine=$field1-$field2 19225ad54caSmrg basic_os= 19325ad54caSmrg ;; 19425ad54caSmrg *) 19525ad54caSmrg basic_machine=$field1 19625ad54caSmrg basic_os=$field2 19725ad54caSmrg ;; 19825ad54caSmrg esac 19925ad54caSmrg ;; 20025ad54caSmrg esac 201e4da13eeSmacallan ;; 20225ad54caSmrg *) 20325ad54caSmrg # Convert single-component short-hands not valid as part of 20425ad54caSmrg # multi-component configurations. 20525ad54caSmrg case $field1 in 20625ad54caSmrg 386bsd) 20725ad54caSmrg basic_machine=i386-pc 20825ad54caSmrg basic_os=bsd 20925ad54caSmrg ;; 21025ad54caSmrg a29khif) 21125ad54caSmrg basic_machine=a29k-amd 21225ad54caSmrg basic_os=udi 21325ad54caSmrg ;; 21425ad54caSmrg adobe68k) 21525ad54caSmrg basic_machine=m68010-adobe 21625ad54caSmrg basic_os=scout 21725ad54caSmrg ;; 21825ad54caSmrg alliant) 21925ad54caSmrg basic_machine=fx80-alliant 22025ad54caSmrg basic_os= 22125ad54caSmrg ;; 22225ad54caSmrg altos | altos3068) 22325ad54caSmrg basic_machine=m68k-altos 22425ad54caSmrg basic_os= 22525ad54caSmrg ;; 22625ad54caSmrg am29k) 22725ad54caSmrg basic_machine=a29k-none 22825ad54caSmrg basic_os=bsd 22925ad54caSmrg ;; 23025ad54caSmrg amdahl) 23125ad54caSmrg basic_machine=580-amdahl 23225ad54caSmrg basic_os=sysv 23325ad54caSmrg ;; 23425ad54caSmrg amiga) 23525ad54caSmrg basic_machine=m68k-unknown 23625ad54caSmrg basic_os= 23725ad54caSmrg ;; 23825ad54caSmrg amigaos | amigados) 23925ad54caSmrg basic_machine=m68k-unknown 24025ad54caSmrg basic_os=amigaos 24125ad54caSmrg ;; 24225ad54caSmrg amigaunix | amix) 24325ad54caSmrg basic_machine=m68k-unknown 24425ad54caSmrg basic_os=sysv4 24525ad54caSmrg ;; 24625ad54caSmrg apollo68) 24725ad54caSmrg basic_machine=m68k-apollo 24825ad54caSmrg basic_os=sysv 24925ad54caSmrg ;; 25025ad54caSmrg apollo68bsd) 25125ad54caSmrg basic_machine=m68k-apollo 25225ad54caSmrg basic_os=bsd 25325ad54caSmrg ;; 25425ad54caSmrg aros) 25525ad54caSmrg basic_machine=i386-pc 25625ad54caSmrg basic_os=aros 25725ad54caSmrg ;; 25825ad54caSmrg aux) 25925ad54caSmrg basic_machine=m68k-apple 26025ad54caSmrg basic_os=aux 26125ad54caSmrg ;; 26225ad54caSmrg balance) 26325ad54caSmrg basic_machine=ns32k-sequent 26425ad54caSmrg basic_os=dynix 26525ad54caSmrg ;; 26625ad54caSmrg blackfin) 26725ad54caSmrg basic_machine=bfin-unknown 26825ad54caSmrg basic_os=linux 26925ad54caSmrg ;; 27025ad54caSmrg cegcc) 27125ad54caSmrg basic_machine=arm-unknown 27225ad54caSmrg basic_os=cegcc 27325ad54caSmrg ;; 27425ad54caSmrg convex-c1) 27525ad54caSmrg basic_machine=c1-convex 27625ad54caSmrg basic_os=bsd 27725ad54caSmrg ;; 27825ad54caSmrg convex-c2) 27925ad54caSmrg basic_machine=c2-convex 28025ad54caSmrg basic_os=bsd 28125ad54caSmrg ;; 28225ad54caSmrg convex-c32) 28325ad54caSmrg basic_machine=c32-convex 28425ad54caSmrg basic_os=bsd 28525ad54caSmrg ;; 28625ad54caSmrg convex-c34) 28725ad54caSmrg basic_machine=c34-convex 28825ad54caSmrg basic_os=bsd 28925ad54caSmrg ;; 29025ad54caSmrg convex-c38) 29125ad54caSmrg basic_machine=c38-convex 29225ad54caSmrg basic_os=bsd 29325ad54caSmrg ;; 29425ad54caSmrg cray) 29525ad54caSmrg basic_machine=j90-cray 29625ad54caSmrg basic_os=unicos 29725ad54caSmrg ;; 29825ad54caSmrg crds | unos) 29925ad54caSmrg basic_machine=m68k-crds 30025ad54caSmrg basic_os= 30125ad54caSmrg ;; 30225ad54caSmrg da30) 30325ad54caSmrg basic_machine=m68k-da30 30425ad54caSmrg basic_os= 30525ad54caSmrg ;; 30625ad54caSmrg decstation | pmax | pmin | dec3100 | decstatn) 30725ad54caSmrg basic_machine=mips-dec 30825ad54caSmrg basic_os= 30925ad54caSmrg ;; 31025ad54caSmrg delta88) 31125ad54caSmrg basic_machine=m88k-motorola 31225ad54caSmrg basic_os=sysv3 31325ad54caSmrg ;; 31425ad54caSmrg dicos) 31525ad54caSmrg basic_machine=i686-pc 31625ad54caSmrg basic_os=dicos 31725ad54caSmrg ;; 31825ad54caSmrg djgpp) 31925ad54caSmrg basic_machine=i586-pc 32025ad54caSmrg basic_os=msdosdjgpp 32125ad54caSmrg ;; 32225ad54caSmrg ebmon29k) 32325ad54caSmrg basic_machine=a29k-amd 32425ad54caSmrg basic_os=ebmon 32525ad54caSmrg ;; 32625ad54caSmrg es1800 | OSE68k | ose68k | ose | OSE) 32725ad54caSmrg basic_machine=m68k-ericsson 32825ad54caSmrg basic_os=ose 32925ad54caSmrg ;; 33025ad54caSmrg gmicro) 33125ad54caSmrg basic_machine=tron-gmicro 33225ad54caSmrg basic_os=sysv 33325ad54caSmrg ;; 33425ad54caSmrg go32) 33525ad54caSmrg basic_machine=i386-pc 33625ad54caSmrg basic_os=go32 33725ad54caSmrg ;; 33825ad54caSmrg h8300hms) 33925ad54caSmrg basic_machine=h8300-hitachi 34025ad54caSmrg basic_os=hms 34125ad54caSmrg ;; 34225ad54caSmrg h8300xray) 34325ad54caSmrg basic_machine=h8300-hitachi 34425ad54caSmrg basic_os=xray 34525ad54caSmrg ;; 34625ad54caSmrg h8500hms) 34725ad54caSmrg basic_machine=h8500-hitachi 34825ad54caSmrg basic_os=hms 34925ad54caSmrg ;; 35025ad54caSmrg harris) 35125ad54caSmrg basic_machine=m88k-harris 35225ad54caSmrg basic_os=sysv3 35325ad54caSmrg ;; 35425ad54caSmrg hp300 | hp300hpux) 35525ad54caSmrg basic_machine=m68k-hp 35625ad54caSmrg basic_os=hpux 35725ad54caSmrg ;; 35825ad54caSmrg hp300bsd) 35925ad54caSmrg basic_machine=m68k-hp 36025ad54caSmrg basic_os=bsd 36125ad54caSmrg ;; 36225ad54caSmrg hppaosf) 36325ad54caSmrg basic_machine=hppa1.1-hp 36425ad54caSmrg basic_os=osf 36525ad54caSmrg ;; 36625ad54caSmrg hppro) 36725ad54caSmrg basic_machine=hppa1.1-hp 36825ad54caSmrg basic_os=proelf 36925ad54caSmrg ;; 37025ad54caSmrg i386mach) 37125ad54caSmrg basic_machine=i386-mach 37225ad54caSmrg basic_os=mach 37325ad54caSmrg ;; 37425ad54caSmrg isi68 | isi) 37525ad54caSmrg basic_machine=m68k-isi 37625ad54caSmrg basic_os=sysv 37725ad54caSmrg ;; 37825ad54caSmrg m68knommu) 37925ad54caSmrg basic_machine=m68k-unknown 38025ad54caSmrg basic_os=linux 38125ad54caSmrg ;; 38225ad54caSmrg magnum | m3230) 38325ad54caSmrg basic_machine=mips-mips 38425ad54caSmrg basic_os=sysv 38525ad54caSmrg ;; 38625ad54caSmrg merlin) 38725ad54caSmrg basic_machine=ns32k-utek 38825ad54caSmrg basic_os=sysv 38925ad54caSmrg ;; 39025ad54caSmrg mingw64) 39125ad54caSmrg basic_machine=x86_64-pc 39225ad54caSmrg basic_os=mingw64 39325ad54caSmrg ;; 39425ad54caSmrg mingw32) 39525ad54caSmrg basic_machine=i686-pc 39625ad54caSmrg basic_os=mingw32 39725ad54caSmrg ;; 39825ad54caSmrg mingw32ce) 39925ad54caSmrg basic_machine=arm-unknown 40025ad54caSmrg basic_os=mingw32ce 40125ad54caSmrg ;; 40225ad54caSmrg monitor) 40325ad54caSmrg basic_machine=m68k-rom68k 40425ad54caSmrg basic_os=coff 40525ad54caSmrg ;; 40625ad54caSmrg morphos) 40725ad54caSmrg basic_machine=powerpc-unknown 40825ad54caSmrg basic_os=morphos 40925ad54caSmrg ;; 41025ad54caSmrg moxiebox) 41125ad54caSmrg basic_machine=moxie-unknown 41225ad54caSmrg basic_os=moxiebox 41325ad54caSmrg ;; 41425ad54caSmrg msdos) 41525ad54caSmrg basic_machine=i386-pc 41625ad54caSmrg basic_os=msdos 41725ad54caSmrg ;; 41825ad54caSmrg msys) 41925ad54caSmrg basic_machine=i686-pc 42025ad54caSmrg basic_os=msys 42125ad54caSmrg ;; 42225ad54caSmrg mvs) 42325ad54caSmrg basic_machine=i370-ibm 42425ad54caSmrg basic_os=mvs 42525ad54caSmrg ;; 42625ad54caSmrg nacl) 42725ad54caSmrg basic_machine=le32-unknown 42825ad54caSmrg basic_os=nacl 42925ad54caSmrg ;; 43025ad54caSmrg ncr3000) 43125ad54caSmrg basic_machine=i486-ncr 43225ad54caSmrg basic_os=sysv4 43325ad54caSmrg ;; 43425ad54caSmrg netbsd386) 43525ad54caSmrg basic_machine=i386-pc 43625ad54caSmrg basic_os=netbsd 43725ad54caSmrg ;; 43825ad54caSmrg netwinder) 43925ad54caSmrg basic_machine=armv4l-rebel 44025ad54caSmrg basic_os=linux 44125ad54caSmrg ;; 44225ad54caSmrg news | news700 | news800 | news900) 44325ad54caSmrg basic_machine=m68k-sony 44425ad54caSmrg basic_os=newsos 44525ad54caSmrg ;; 44625ad54caSmrg news1000) 44725ad54caSmrg basic_machine=m68030-sony 44825ad54caSmrg basic_os=newsos 44925ad54caSmrg ;; 45025ad54caSmrg necv70) 45125ad54caSmrg basic_machine=v70-nec 45225ad54caSmrg basic_os=sysv 45325ad54caSmrg ;; 45425ad54caSmrg nh3000) 45525ad54caSmrg basic_machine=m68k-harris 45625ad54caSmrg basic_os=cxux 45725ad54caSmrg ;; 45825ad54caSmrg nh[45]000) 45925ad54caSmrg basic_machine=m88k-harris 46025ad54caSmrg basic_os=cxux 46125ad54caSmrg ;; 46225ad54caSmrg nindy960) 46325ad54caSmrg basic_machine=i960-intel 46425ad54caSmrg basic_os=nindy 46525ad54caSmrg ;; 46625ad54caSmrg mon960) 46725ad54caSmrg basic_machine=i960-intel 46825ad54caSmrg basic_os=mon960 46925ad54caSmrg ;; 47025ad54caSmrg nonstopux) 47125ad54caSmrg basic_machine=mips-compaq 47225ad54caSmrg basic_os=nonstopux 47325ad54caSmrg ;; 47425ad54caSmrg os400) 47525ad54caSmrg basic_machine=powerpc-ibm 47625ad54caSmrg basic_os=os400 47725ad54caSmrg ;; 47825ad54caSmrg OSE68000 | ose68000) 47925ad54caSmrg basic_machine=m68000-ericsson 48025ad54caSmrg basic_os=ose 48125ad54caSmrg ;; 48225ad54caSmrg os68k) 48325ad54caSmrg basic_machine=m68k-none 48425ad54caSmrg basic_os=os68k 48525ad54caSmrg ;; 48625ad54caSmrg paragon) 48725ad54caSmrg basic_machine=i860-intel 48825ad54caSmrg basic_os=osf 48925ad54caSmrg ;; 49025ad54caSmrg parisc) 49125ad54caSmrg basic_machine=hppa-unknown 49225ad54caSmrg basic_os=linux 49325ad54caSmrg ;; 49425ad54caSmrg psp) 49525ad54caSmrg basic_machine=mipsallegrexel-sony 49625ad54caSmrg basic_os=psp 49725ad54caSmrg ;; 49825ad54caSmrg pw32) 49925ad54caSmrg basic_machine=i586-unknown 50025ad54caSmrg basic_os=pw32 50125ad54caSmrg ;; 50225ad54caSmrg rdos | rdos64) 50325ad54caSmrg basic_machine=x86_64-pc 50425ad54caSmrg basic_os=rdos 50525ad54caSmrg ;; 50625ad54caSmrg rdos32) 50725ad54caSmrg basic_machine=i386-pc 50825ad54caSmrg basic_os=rdos 50925ad54caSmrg ;; 51025ad54caSmrg rom68k) 51125ad54caSmrg basic_machine=m68k-rom68k 51225ad54caSmrg basic_os=coff 51325ad54caSmrg ;; 51425ad54caSmrg sa29200) 51525ad54caSmrg basic_machine=a29k-amd 51625ad54caSmrg basic_os=udi 51725ad54caSmrg ;; 51825ad54caSmrg sei) 51925ad54caSmrg basic_machine=mips-sei 52025ad54caSmrg basic_os=seiux 52125ad54caSmrg ;; 52225ad54caSmrg sequent) 52325ad54caSmrg basic_machine=i386-sequent 52425ad54caSmrg basic_os= 52525ad54caSmrg ;; 52625ad54caSmrg sps7) 52725ad54caSmrg basic_machine=m68k-bull 52825ad54caSmrg basic_os=sysv2 52925ad54caSmrg ;; 53025ad54caSmrg st2000) 53125ad54caSmrg basic_machine=m68k-tandem 53225ad54caSmrg basic_os= 53325ad54caSmrg ;; 53425ad54caSmrg stratus) 53525ad54caSmrg basic_machine=i860-stratus 53625ad54caSmrg basic_os=sysv4 53725ad54caSmrg ;; 53825ad54caSmrg sun2) 53925ad54caSmrg basic_machine=m68000-sun 54025ad54caSmrg basic_os= 54125ad54caSmrg ;; 54225ad54caSmrg sun2os3) 54325ad54caSmrg basic_machine=m68000-sun 54425ad54caSmrg basic_os=sunos3 54525ad54caSmrg ;; 54625ad54caSmrg sun2os4) 54725ad54caSmrg basic_machine=m68000-sun 54825ad54caSmrg basic_os=sunos4 54925ad54caSmrg ;; 55025ad54caSmrg sun3) 55125ad54caSmrg basic_machine=m68k-sun 55225ad54caSmrg basic_os= 55325ad54caSmrg ;; 55425ad54caSmrg sun3os3) 55525ad54caSmrg basic_machine=m68k-sun 55625ad54caSmrg basic_os=sunos3 55725ad54caSmrg ;; 55825ad54caSmrg sun3os4) 55925ad54caSmrg basic_machine=m68k-sun 56025ad54caSmrg basic_os=sunos4 56125ad54caSmrg ;; 56225ad54caSmrg sun4) 56325ad54caSmrg basic_machine=sparc-sun 56425ad54caSmrg basic_os= 56525ad54caSmrg ;; 56625ad54caSmrg sun4os3) 56725ad54caSmrg basic_machine=sparc-sun 56825ad54caSmrg basic_os=sunos3 56925ad54caSmrg ;; 57025ad54caSmrg sun4os4) 57125ad54caSmrg basic_machine=sparc-sun 57225ad54caSmrg basic_os=sunos4 57325ad54caSmrg ;; 57425ad54caSmrg sun4sol2) 57525ad54caSmrg basic_machine=sparc-sun 57625ad54caSmrg basic_os=solaris2 57725ad54caSmrg ;; 57825ad54caSmrg sun386 | sun386i | roadrunner) 57925ad54caSmrg basic_machine=i386-sun 58025ad54caSmrg basic_os= 58125ad54caSmrg ;; 58225ad54caSmrg sv1) 58325ad54caSmrg basic_machine=sv1-cray 58425ad54caSmrg basic_os=unicos 58525ad54caSmrg ;; 58625ad54caSmrg symmetry) 58725ad54caSmrg basic_machine=i386-sequent 58825ad54caSmrg basic_os=dynix 58925ad54caSmrg ;; 59025ad54caSmrg t3e) 59125ad54caSmrg basic_machine=alphaev5-cray 59225ad54caSmrg basic_os=unicos 59325ad54caSmrg ;; 59425ad54caSmrg t90) 59525ad54caSmrg basic_machine=t90-cray 59625ad54caSmrg basic_os=unicos 59725ad54caSmrg ;; 59825ad54caSmrg toad1) 59925ad54caSmrg basic_machine=pdp10-xkl 60025ad54caSmrg basic_os=tops20 60125ad54caSmrg ;; 60225ad54caSmrg tpf) 60325ad54caSmrg basic_machine=s390x-ibm 60425ad54caSmrg basic_os=tpf 60525ad54caSmrg ;; 60625ad54caSmrg udi29k) 60725ad54caSmrg basic_machine=a29k-amd 60825ad54caSmrg basic_os=udi 60925ad54caSmrg ;; 61025ad54caSmrg ultra3) 61125ad54caSmrg basic_machine=a29k-nyu 61225ad54caSmrg basic_os=sym1 61325ad54caSmrg ;; 61425ad54caSmrg v810 | necv810) 61525ad54caSmrg basic_machine=v810-nec 61625ad54caSmrg basic_os=none 61725ad54caSmrg ;; 61825ad54caSmrg vaxv) 61925ad54caSmrg basic_machine=vax-dec 62025ad54caSmrg basic_os=sysv 62125ad54caSmrg ;; 62225ad54caSmrg vms) 62325ad54caSmrg basic_machine=vax-dec 62425ad54caSmrg basic_os=vms 62525ad54caSmrg ;; 62625ad54caSmrg vsta) 62725ad54caSmrg basic_machine=i386-pc 62825ad54caSmrg basic_os=vsta 62925ad54caSmrg ;; 63025ad54caSmrg vxworks960) 63125ad54caSmrg basic_machine=i960-wrs 63225ad54caSmrg basic_os=vxworks 63325ad54caSmrg ;; 63425ad54caSmrg vxworks68) 63525ad54caSmrg basic_machine=m68k-wrs 63625ad54caSmrg basic_os=vxworks 63725ad54caSmrg ;; 63825ad54caSmrg vxworks29k) 63925ad54caSmrg basic_machine=a29k-wrs 64025ad54caSmrg basic_os=vxworks 64125ad54caSmrg ;; 64225ad54caSmrg xbox) 64325ad54caSmrg basic_machine=i686-pc 64425ad54caSmrg basic_os=mingw32 64525ad54caSmrg ;; 64625ad54caSmrg ymp) 64725ad54caSmrg basic_machine=ymp-cray 64825ad54caSmrg basic_os=unicos 64925ad54caSmrg ;; 65025ad54caSmrg *) 65125ad54caSmrg basic_machine=$1 65225ad54caSmrg basic_os= 65325ad54caSmrg ;; 65425ad54caSmrg esac 655e4da13eeSmacallan ;; 656e4da13eeSmacallanesac 657e4da13eeSmacallan 65825ad54caSmrg# Decode 1-component or ad-hoc basic machines 659e4da13eeSmacallancase $basic_machine in 66025ad54caSmrg # Here we handle the default manufacturer of certain CPU types. It is in 66125ad54caSmrg # some cases the only manufacturer, in others, it is the most popular. 66225ad54caSmrg w89k) 66325ad54caSmrg cpu=hppa1.1 66425ad54caSmrg vendor=winbond 665e4da13eeSmacallan ;; 66625ad54caSmrg op50n) 66725ad54caSmrg cpu=hppa1.1 66825ad54caSmrg vendor=oki 66965d490d0Smrg ;; 67025ad54caSmrg op60c) 67125ad54caSmrg cpu=hppa1.1 67225ad54caSmrg vendor=oki 67365d490d0Smrg ;; 67425ad54caSmrg ibm*) 67525ad54caSmrg cpu=i370 67625ad54caSmrg vendor=ibm 67765d490d0Smrg ;; 67825ad54caSmrg orion105) 67925ad54caSmrg cpu=clipper 68025ad54caSmrg vendor=highlevel 68165d490d0Smrg ;; 68225ad54caSmrg mac | mpw | mac-mpw) 68325ad54caSmrg cpu=m68k 68425ad54caSmrg vendor=apple 685e4da13eeSmacallan ;; 68625ad54caSmrg pmac | pmac-mpw) 68725ad54caSmrg cpu=powerpc 68825ad54caSmrg vendor=apple 689e4da13eeSmacallan ;; 69025ad54caSmrg 691e4da13eeSmacallan # Recognize the various machine names and aliases which stand 692e4da13eeSmacallan # for a CPU type and a company and sometimes even an OS. 693e4da13eeSmacallan 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 69425ad54caSmrg cpu=m68000 69525ad54caSmrg vendor=att 696e4da13eeSmacallan ;; 697e4da13eeSmacallan 3b*) 69825ad54caSmrg cpu=we32k 69925ad54caSmrg vendor=att 700e4da13eeSmacallan ;; 70165d490d0Smrg bluegene*) 70225ad54caSmrg cpu=powerpc 70325ad54caSmrg vendor=ibm 70425ad54caSmrg basic_os=cnk 705e4da13eeSmacallan ;; 706e4da13eeSmacallan decsystem10* | dec10*) 70725ad54caSmrg cpu=pdp10 70825ad54caSmrg vendor=dec 70925ad54caSmrg basic_os=tops10 710e4da13eeSmacallan ;; 711e4da13eeSmacallan decsystem20* | dec20*) 71225ad54caSmrg cpu=pdp10 71325ad54caSmrg vendor=dec 71425ad54caSmrg basic_os=tops20 715e4da13eeSmacallan ;; 716e4da13eeSmacallan delta | 3300 | motorola-3300 | motorola-delta \ 717e4da13eeSmacallan | 3300-motorola | delta-motorola) 71825ad54caSmrg cpu=m68k 71925ad54caSmrg vendor=motorola 720e4da13eeSmacallan ;; 72125ad54caSmrg dpx2*) 72225ad54caSmrg cpu=m68k 72325ad54caSmrg vendor=bull 72425ad54caSmrg basic_os=sysv3 725e4da13eeSmacallan ;; 726e4da13eeSmacallan encore | umax | mmax) 72725ad54caSmrg cpu=ns32k 72825ad54caSmrg vendor=encore 729e4da13eeSmacallan ;; 73025ad54caSmrg elxsi) 73125ad54caSmrg cpu=elxsi 73225ad54caSmrg vendor=elxsi 73325ad54caSmrg basic_os=${basic_os:-bsd} 734e4da13eeSmacallan ;; 735e4da13eeSmacallan fx2800) 73625ad54caSmrg cpu=i860 73725ad54caSmrg vendor=alliant 738e4da13eeSmacallan ;; 739e4da13eeSmacallan genix) 74025ad54caSmrg cpu=ns32k 74125ad54caSmrg vendor=ns 742e4da13eeSmacallan ;; 743e4da13eeSmacallan h3050r* | hiux*) 74425ad54caSmrg cpu=hppa1.1 74525ad54caSmrg vendor=hitachi 74625ad54caSmrg basic_os=hiuxwe2 747e4da13eeSmacallan ;; 748e4da13eeSmacallan hp3k9[0-9][0-9] | hp9[0-9][0-9]) 74925ad54caSmrg cpu=hppa1.0 75025ad54caSmrg vendor=hp 751e4da13eeSmacallan ;; 752e4da13eeSmacallan hp9k2[0-9][0-9] | hp9k31[0-9]) 75325ad54caSmrg cpu=m68000 75425ad54caSmrg vendor=hp 755e4da13eeSmacallan ;; 756e4da13eeSmacallan hp9k3[2-9][0-9]) 75725ad54caSmrg cpu=m68k 75825ad54caSmrg vendor=hp 759e4da13eeSmacallan ;; 760e4da13eeSmacallan hp9k6[0-9][0-9] | hp6[0-9][0-9]) 76125ad54caSmrg cpu=hppa1.0 76225ad54caSmrg vendor=hp 763e4da13eeSmacallan ;; 764e4da13eeSmacallan hp9k7[0-79][0-9] | hp7[0-79][0-9]) 76525ad54caSmrg cpu=hppa1.1 76625ad54caSmrg vendor=hp 767e4da13eeSmacallan ;; 768e4da13eeSmacallan hp9k78[0-9] | hp78[0-9]) 769e4da13eeSmacallan # FIXME: really hppa2.0-hp 77025ad54caSmrg cpu=hppa1.1 77125ad54caSmrg vendor=hp 772e4da13eeSmacallan ;; 773e4da13eeSmacallan hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 774e4da13eeSmacallan # FIXME: really hppa2.0-hp 77525ad54caSmrg cpu=hppa1.1 77625ad54caSmrg vendor=hp 777e4da13eeSmacallan ;; 778e4da13eeSmacallan hp9k8[0-9][13679] | hp8[0-9][13679]) 77925ad54caSmrg cpu=hppa1.1 78025ad54caSmrg vendor=hp 781e4da13eeSmacallan ;; 782e4da13eeSmacallan hp9k8[0-9][0-9] | hp8[0-9][0-9]) 78325ad54caSmrg cpu=hppa1.0 78425ad54caSmrg vendor=hp 785e4da13eeSmacallan ;; 786e4da13eeSmacallan i*86v32) 78725ad54caSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 78825ad54caSmrg vendor=pc 78925ad54caSmrg basic_os=sysv32 790e4da13eeSmacallan ;; 791e4da13eeSmacallan i*86v4*) 79225ad54caSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79325ad54caSmrg vendor=pc 79425ad54caSmrg basic_os=sysv4 795e4da13eeSmacallan ;; 796e4da13eeSmacallan i*86v) 79725ad54caSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79825ad54caSmrg vendor=pc 79925ad54caSmrg basic_os=sysv 800e4da13eeSmacallan ;; 801e4da13eeSmacallan i*86sol2) 80225ad54caSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 80325ad54caSmrg vendor=pc 80425ad54caSmrg basic_os=solaris2 805e4da13eeSmacallan ;; 80625ad54caSmrg j90 | j90-cray) 80725ad54caSmrg cpu=j90 80825ad54caSmrg vendor=cray 80925ad54caSmrg basic_os=${basic_os:-unicos} 810e4da13eeSmacallan ;; 811e4da13eeSmacallan iris | iris4d) 81225ad54caSmrg cpu=mips 81325ad54caSmrg vendor=sgi 81425ad54caSmrg case $basic_os in 81525ad54caSmrg irix*) 816e4da13eeSmacallan ;; 817e4da13eeSmacallan *) 81825ad54caSmrg basic_os=irix4 819e4da13eeSmacallan ;; 820e4da13eeSmacallan esac 821e4da13eeSmacallan ;; 822e4da13eeSmacallan miniframe) 82325ad54caSmrg cpu=m68000 82425ad54caSmrg vendor=convergent 825e4da13eeSmacallan ;; 82625ad54caSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 82725ad54caSmrg cpu=m68k 82825ad54caSmrg vendor=atari 82925ad54caSmrg basic_os=mint 830e4da13eeSmacallan ;; 831e4da13eeSmacallan news-3600 | risc-news) 83225ad54caSmrg cpu=mips 83325ad54caSmrg vendor=sony 83425ad54caSmrg basic_os=newsos 83525ad54caSmrg ;; 83625ad54caSmrg next | m*-next) 83725ad54caSmrg cpu=m68k 83825ad54caSmrg vendor=next 83925ad54caSmrg case $basic_os in 84025ad54caSmrg openstep*) 84125ad54caSmrg ;; 84225ad54caSmrg nextstep*) 843e4da13eeSmacallan ;; 84425ad54caSmrg ns2*) 84525ad54caSmrg basic_os=nextstep2 846e4da13eeSmacallan ;; 847e4da13eeSmacallan *) 84825ad54caSmrg basic_os=nextstep3 849e4da13eeSmacallan ;; 850e4da13eeSmacallan esac 851e4da13eeSmacallan ;; 852e4da13eeSmacallan np1) 85325ad54caSmrg cpu=np1 85425ad54caSmrg vendor=gould 855e4da13eeSmacallan ;; 856e4da13eeSmacallan op50n-* | op60c-*) 85725ad54caSmrg cpu=hppa1.1 85825ad54caSmrg vendor=oki 85925ad54caSmrg basic_os=proelf 860e4da13eeSmacallan ;; 861e4da13eeSmacallan pa-hitachi) 86225ad54caSmrg cpu=hppa1.1 86325ad54caSmrg vendor=hitachi 86425ad54caSmrg basic_os=hiuxwe2 865e4da13eeSmacallan ;; 866e4da13eeSmacallan pbd) 86725ad54caSmrg cpu=sparc 86825ad54caSmrg vendor=tti 869e4da13eeSmacallan ;; 870e4da13eeSmacallan pbb) 87125ad54caSmrg cpu=m68k 87225ad54caSmrg vendor=tti 873e4da13eeSmacallan ;; 87425ad54caSmrg pc532) 87525ad54caSmrg cpu=ns32k 87625ad54caSmrg vendor=pc532 877e4da13eeSmacallan ;; 878e4da13eeSmacallan pn) 87925ad54caSmrg cpu=pn 88025ad54caSmrg vendor=gould 881e4da13eeSmacallan ;; 88225ad54caSmrg power) 88325ad54caSmrg cpu=power 88425ad54caSmrg vendor=ibm 885e4da13eeSmacallan ;; 886e4da13eeSmacallan ps2) 88725ad54caSmrg cpu=i386 88825ad54caSmrg vendor=ibm 889e4da13eeSmacallan ;; 890e4da13eeSmacallan rm[46]00) 89125ad54caSmrg cpu=mips 89225ad54caSmrg vendor=siemens 893e4da13eeSmacallan ;; 894e4da13eeSmacallan rtpc | rtpc-*) 89525ad54caSmrg cpu=romp 89625ad54caSmrg vendor=ibm 897e4da13eeSmacallan ;; 89825ad54caSmrg sde) 89925ad54caSmrg cpu=mipsisa32 90025ad54caSmrg vendor=sde 90125ad54caSmrg basic_os=${basic_os:-elf} 902e4da13eeSmacallan ;; 90325ad54caSmrg simso-wrs) 90425ad54caSmrg cpu=sparclite 90525ad54caSmrg vendor=wrs 90625ad54caSmrg basic_os=vxworks 907e4da13eeSmacallan ;; 90825ad54caSmrg tower | tower-32) 90925ad54caSmrg cpu=m68k 91025ad54caSmrg vendor=ncr 911e4da13eeSmacallan ;; 91225ad54caSmrg vpp*|vx|vx-*) 91325ad54caSmrg cpu=f301 91425ad54caSmrg vendor=fujitsu 915e4da13eeSmacallan ;; 91625ad54caSmrg w65) 91725ad54caSmrg cpu=w65 91825ad54caSmrg vendor=wdc 919e4da13eeSmacallan ;; 92025ad54caSmrg w89k-*) 92125ad54caSmrg cpu=hppa1.1 92225ad54caSmrg vendor=winbond 92325ad54caSmrg basic_os=proelf 924e4da13eeSmacallan ;; 92525ad54caSmrg none) 92625ad54caSmrg cpu=none 92725ad54caSmrg vendor=none 928e4da13eeSmacallan ;; 92925ad54caSmrg leon|leon[3-9]) 93025ad54caSmrg cpu=sparc 93125ad54caSmrg vendor=$basic_machine 932e4da13eeSmacallan ;; 93325ad54caSmrg leon-*|leon[3-9]-*) 93425ad54caSmrg cpu=sparc 93525ad54caSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 936e4da13eeSmacallan ;; 93725ad54caSmrg 93825ad54caSmrg *-*) 93925ad54caSmrg # shellcheck disable=SC2162 94025ad54caSmrg saved_IFS=$IFS 94125ad54caSmrg IFS="-" read cpu vendor <<EOF 94225ad54caSmrg$basic_machine 94325ad54caSmrgEOF 94425ad54caSmrg IFS=$saved_IFS 945e4da13eeSmacallan ;; 94625ad54caSmrg # We use `pc' rather than `unknown' 94725ad54caSmrg # because (1) that's what they normally are, and 94825ad54caSmrg # (2) the word "unknown" tends to confuse beginning users. 94925ad54caSmrg i*86 | x86_64) 95025ad54caSmrg cpu=$basic_machine 95125ad54caSmrg vendor=pc 952e4da13eeSmacallan ;; 95325ad54caSmrg # These rules are duplicated from below for sake of the special case above; 95425ad54caSmrg # i.e. things that normalized to x86 arches should also default to "pc" 95525ad54caSmrg pc98) 95625ad54caSmrg cpu=i386 95725ad54caSmrg vendor=pc 958e4da13eeSmacallan ;; 95925ad54caSmrg x64 | amd64) 96025ad54caSmrg cpu=x86_64 96125ad54caSmrg vendor=pc 962e4da13eeSmacallan ;; 96325ad54caSmrg # Recognize the basic CPU types without company name. 96425ad54caSmrg *) 96525ad54caSmrg cpu=$basic_machine 96625ad54caSmrg vendor=unknown 96765d490d0Smrg ;; 96825ad54caSmrgesac 96925ad54caSmrg 97025ad54caSmrgunset -v basic_machine 97125ad54caSmrg 97225ad54caSmrg# Decode basic machines in the full and proper CPU-Company form. 97325ad54caSmrgcase $cpu-$vendor in 97425ad54caSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 97525ad54caSmrg # some cases the only manufacturer, in others, it is the most popular. 97625ad54caSmrg craynv-unknown) 97725ad54caSmrg vendor=cray 97825ad54caSmrg basic_os=${basic_os:-unicosmp} 979e4da13eeSmacallan ;; 98025ad54caSmrg c90-unknown | c90-cray) 98125ad54caSmrg vendor=cray 98225ad54caSmrg basic_os=${Basic_os:-unicos} 983e4da13eeSmacallan ;; 98425ad54caSmrg fx80-unknown) 98525ad54caSmrg vendor=alliant 986e4da13eeSmacallan ;; 98725ad54caSmrg romp-unknown) 98825ad54caSmrg vendor=ibm 989e4da13eeSmacallan ;; 99025ad54caSmrg mmix-unknown) 99125ad54caSmrg vendor=knuth 992e4da13eeSmacallan ;; 99325ad54caSmrg microblaze-unknown | microblazeel-unknown) 99425ad54caSmrg vendor=xilinx 995e4da13eeSmacallan ;; 99625ad54caSmrg rs6000-unknown) 99725ad54caSmrg vendor=ibm 998e4da13eeSmacallan ;; 99925ad54caSmrg vax-unknown) 100025ad54caSmrg vendor=dec 1001e4da13eeSmacallan ;; 100225ad54caSmrg pdp11-unknown) 100325ad54caSmrg vendor=dec 1004e4da13eeSmacallan ;; 100525ad54caSmrg we32k-unknown) 100625ad54caSmrg vendor=att 1007e4da13eeSmacallan ;; 100825ad54caSmrg cydra-unknown) 100925ad54caSmrg vendor=cydrome 1010e4da13eeSmacallan ;; 101125ad54caSmrg i370-ibm*) 101225ad54caSmrg vendor=ibm 1013e4da13eeSmacallan ;; 101425ad54caSmrg orion-unknown) 101525ad54caSmrg vendor=highlevel 1016e4da13eeSmacallan ;; 101725ad54caSmrg xps-unknown | xps100-unknown) 101825ad54caSmrg cpu=xps100 101925ad54caSmrg vendor=honeywell 1020e4da13eeSmacallan ;; 102125ad54caSmrg 102225ad54caSmrg # Here we normalize CPU types with a missing or matching vendor 102325ad54caSmrg dpx20-unknown | dpx20-bull) 102425ad54caSmrg cpu=rs6000 102525ad54caSmrg vendor=bull 102625ad54caSmrg basic_os=${basic_os:-bosx} 1027e4da13eeSmacallan ;; 102825ad54caSmrg 102925ad54caSmrg # Here we normalize CPU types irrespective of the vendor 103025ad54caSmrg amd64-*) 103125ad54caSmrg cpu=x86_64 1032e4da13eeSmacallan ;; 103325ad54caSmrg blackfin-*) 103425ad54caSmrg cpu=bfin 103525ad54caSmrg basic_os=linux 1036e4da13eeSmacallan ;; 103725ad54caSmrg c54x-*) 103825ad54caSmrg cpu=tic54x 1039e4da13eeSmacallan ;; 104025ad54caSmrg c55x-*) 104125ad54caSmrg cpu=tic55x 1042e4da13eeSmacallan ;; 104325ad54caSmrg c6x-*) 104425ad54caSmrg cpu=tic6x 1045e4da13eeSmacallan ;; 104625ad54caSmrg e500v[12]-*) 104725ad54caSmrg cpu=powerpc 104825ad54caSmrg basic_os=${basic_os}"spe" 1049e4da13eeSmacallan ;; 105025ad54caSmrg mips3*-*) 105125ad54caSmrg cpu=mips64 1052e4da13eeSmacallan ;; 105325ad54caSmrg ms1-*) 105425ad54caSmrg cpu=mt 1055e4da13eeSmacallan ;; 105625ad54caSmrg m68knommu-*) 105725ad54caSmrg cpu=m68k 105825ad54caSmrg basic_os=linux 1059e4da13eeSmacallan ;; 106025ad54caSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 106125ad54caSmrg cpu=s12z 1062e4da13eeSmacallan ;; 106325ad54caSmrg openrisc-*) 106425ad54caSmrg cpu=or32 1065e4da13eeSmacallan ;; 106625ad54caSmrg parisc-*) 106725ad54caSmrg cpu=hppa 106825ad54caSmrg basic_os=linux 1069e4da13eeSmacallan ;; 107025ad54caSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 107125ad54caSmrg cpu=i586 1072e4da13eeSmacallan ;; 107325ad54caSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 107425ad54caSmrg cpu=i686 1075e4da13eeSmacallan ;; 107625ad54caSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 107725ad54caSmrg cpu=i686 1078e4da13eeSmacallan ;; 107925ad54caSmrg pentium4-*) 108025ad54caSmrg cpu=i786 1081e4da13eeSmacallan ;; 108225ad54caSmrg pc98-*) 108325ad54caSmrg cpu=i386 1084e4da13eeSmacallan ;; 108525ad54caSmrg ppc-* | ppcbe-*) 108625ad54caSmrg cpu=powerpc 1087e4da13eeSmacallan ;; 108825ad54caSmrg ppcle-* | powerpclittle-*) 108925ad54caSmrg cpu=powerpcle 1090e4da13eeSmacallan ;; 109125ad54caSmrg ppc64-*) 109225ad54caSmrg cpu=powerpc64 109365d490d0Smrg ;; 109425ad54caSmrg ppc64le-* | powerpc64little-*) 109525ad54caSmrg cpu=powerpc64le 1096e4da13eeSmacallan ;; 109725ad54caSmrg sb1-*) 109825ad54caSmrg cpu=mipsisa64sb1 1099e4da13eeSmacallan ;; 110025ad54caSmrg sb1el-*) 110125ad54caSmrg cpu=mipsisa64sb1el 110265d490d0Smrg ;; 110325ad54caSmrg sh5e[lb]-*) 110425ad54caSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1105e4da13eeSmacallan ;; 110625ad54caSmrg spur-*) 110725ad54caSmrg cpu=spur 1108e4da13eeSmacallan ;; 110925ad54caSmrg strongarm-* | thumb-*) 111025ad54caSmrg cpu=arm 1111e4da13eeSmacallan ;; 111225ad54caSmrg tx39-*) 111325ad54caSmrg cpu=mipstx39 1114e4da13eeSmacallan ;; 111525ad54caSmrg tx39el-*) 111625ad54caSmrg cpu=mipstx39el 1117e4da13eeSmacallan ;; 111825ad54caSmrg x64-*) 111925ad54caSmrg cpu=x86_64 1120e4da13eeSmacallan ;; 112125ad54caSmrg xscale-* | xscalee[bl]-*) 112225ad54caSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1123e4da13eeSmacallan ;; 112425ad54caSmrg arm64-*) 112525ad54caSmrg cpu=aarch64 1126e4da13eeSmacallan ;; 112725ad54caSmrg 112825ad54caSmrg # Recognize the canonical CPU Types that limit and/or modify the 112925ad54caSmrg # company names they are paired with. 113025ad54caSmrg cr16-*) 113125ad54caSmrg basic_os=${basic_os:-elf} 1132e4da13eeSmacallan ;; 113325ad54caSmrg crisv32-* | etraxfs*-*) 113425ad54caSmrg cpu=crisv32 113525ad54caSmrg vendor=axis 1136e4da13eeSmacallan ;; 113725ad54caSmrg cris-* | etrax*-*) 113825ad54caSmrg cpu=cris 113925ad54caSmrg vendor=axis 1140e4da13eeSmacallan ;; 114125ad54caSmrg crx-*) 114225ad54caSmrg basic_os=${basic_os:-elf} 1143e4da13eeSmacallan ;; 114425ad54caSmrg neo-tandem) 114525ad54caSmrg cpu=neo 114625ad54caSmrg vendor=tandem 1147e4da13eeSmacallan ;; 114825ad54caSmrg nse-tandem) 114925ad54caSmrg cpu=nse 115025ad54caSmrg vendor=tandem 1151e4da13eeSmacallan ;; 115225ad54caSmrg nsr-tandem) 115325ad54caSmrg cpu=nsr 115425ad54caSmrg vendor=tandem 1155e4da13eeSmacallan ;; 115625ad54caSmrg nsv-tandem) 115725ad54caSmrg cpu=nsv 115825ad54caSmrg vendor=tandem 1159e4da13eeSmacallan ;; 116025ad54caSmrg nsx-tandem) 116125ad54caSmrg cpu=nsx 116225ad54caSmrg vendor=tandem 1163e4da13eeSmacallan ;; 116425ad54caSmrg mipsallegrexel-sony) 116525ad54caSmrg cpu=mipsallegrexel 116625ad54caSmrg vendor=sony 1167e4da13eeSmacallan ;; 116825ad54caSmrg tile*-*) 116925ad54caSmrg basic_os=${basic_os:-linux-gnu} 1170e4da13eeSmacallan ;; 117125ad54caSmrg 1172e4da13eeSmacallan *) 117325ad54caSmrg # Recognize the canonical CPU types that are allowed with any 117425ad54caSmrg # company name. 117525ad54caSmrg case $cpu in 117625ad54caSmrg 1750a | 580 \ 117725ad54caSmrg | a29k \ 117825ad54caSmrg | aarch64 | aarch64_be \ 117925ad54caSmrg | abacus \ 118025ad54caSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 118125ad54caSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 118225ad54caSmrg | alphapca5[67] | alpha64pca5[67] \ 118325ad54caSmrg | am33_2.0 \ 118425ad54caSmrg | amdgcn \ 118525ad54caSmrg | arc | arceb | arc32 | arc64 \ 118625ad54caSmrg | arm | arm[lb]e | arme[lb] | armv* \ 118725ad54caSmrg | avr | avr32 \ 118825ad54caSmrg | asmjs \ 118925ad54caSmrg | ba \ 119025ad54caSmrg | be32 | be64 \ 119125ad54caSmrg | bfin | bpf | bs2000 \ 119225ad54caSmrg | c[123]* | c30 | [cjt]90 | c4x \ 119325ad54caSmrg | c8051 | clipper | craynv | csky | cydra \ 119425ad54caSmrg | d10v | d30v | dlx | dsp16xx \ 119525ad54caSmrg | e2k | elxsi | epiphany \ 119625ad54caSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 119725ad54caSmrg | h8300 | h8500 \ 119825ad54caSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 119925ad54caSmrg | hexagon \ 120025ad54caSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 120125ad54caSmrg | ip2k | iq2000 \ 120225ad54caSmrg | k1om \ 120325ad54caSmrg | le32 | le64 \ 120425ad54caSmrg | lm32 \ 120525ad54caSmrg | loongarch32 | loongarch64 | loongarchx32 \ 120625ad54caSmrg | m32c | m32r | m32rle \ 120725ad54caSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 120825ad54caSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 120925ad54caSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 121025ad54caSmrg | microblaze | microblazeel \ 121125ad54caSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 121225ad54caSmrg | mips16 \ 121325ad54caSmrg | mips64 | mips64eb | mips64el \ 121425ad54caSmrg | mips64octeon | mips64octeonel \ 121525ad54caSmrg | mips64orion | mips64orionel \ 121625ad54caSmrg | mips64r5900 | mips64r5900el \ 121725ad54caSmrg | mips64vr | mips64vrel \ 121825ad54caSmrg | mips64vr4100 | mips64vr4100el \ 121925ad54caSmrg | mips64vr4300 | mips64vr4300el \ 122025ad54caSmrg | mips64vr5000 | mips64vr5000el \ 122125ad54caSmrg | mips64vr5900 | mips64vr5900el \ 122225ad54caSmrg | mipsisa32 | mipsisa32el \ 122325ad54caSmrg | mipsisa32r2 | mipsisa32r2el \ 122425ad54caSmrg | mipsisa32r3 | mipsisa32r3el \ 122525ad54caSmrg | mipsisa32r5 | mipsisa32r5el \ 122625ad54caSmrg | mipsisa32r6 | mipsisa32r6el \ 122725ad54caSmrg | mipsisa64 | mipsisa64el \ 122825ad54caSmrg | mipsisa64r2 | mipsisa64r2el \ 122925ad54caSmrg | mipsisa64r3 | mipsisa64r3el \ 123025ad54caSmrg | mipsisa64r5 | mipsisa64r5el \ 123125ad54caSmrg | mipsisa64r6 | mipsisa64r6el \ 123225ad54caSmrg | mipsisa64sb1 | mipsisa64sb1el \ 123325ad54caSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 123425ad54caSmrg | mipsr5900 | mipsr5900el \ 123525ad54caSmrg | mipstx39 | mipstx39el \ 123625ad54caSmrg | mmix \ 123725ad54caSmrg | mn10200 | mn10300 \ 123825ad54caSmrg | moxie \ 123925ad54caSmrg | mt \ 124025ad54caSmrg | msp430 \ 124125ad54caSmrg | nds32 | nds32le | nds32be \ 124225ad54caSmrg | nfp \ 124325ad54caSmrg | nios | nios2 | nios2eb | nios2el \ 124425ad54caSmrg | none | np1 | ns16k | ns32k | nvptx \ 124525ad54caSmrg | open8 \ 124625ad54caSmrg | or1k* \ 124725ad54caSmrg | or32 \ 124825ad54caSmrg | orion \ 124925ad54caSmrg | picochip \ 125025ad54caSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 125125ad54caSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 125225ad54caSmrg | pru \ 125325ad54caSmrg | pyramid \ 125425ad54caSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 125525ad54caSmrg | rl78 | romp | rs6000 | rx \ 125625ad54caSmrg | s390 | s390x \ 125725ad54caSmrg | score \ 125825ad54caSmrg | sh | shl \ 125925ad54caSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 126025ad54caSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 126125ad54caSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 126225ad54caSmrg | sparclite \ 126325ad54caSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 126425ad54caSmrg | spu \ 126525ad54caSmrg | tahoe \ 126625ad54caSmrg | thumbv7* \ 126725ad54caSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 126825ad54caSmrg | tron \ 126925ad54caSmrg | ubicom32 \ 127025ad54caSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 127125ad54caSmrg | vax \ 127225ad54caSmrg | visium \ 127325ad54caSmrg | w65 \ 127425ad54caSmrg | wasm32 | wasm64 \ 127525ad54caSmrg | we32k \ 127625ad54caSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 127725ad54caSmrg | xstormy16 | xtensa* \ 127825ad54caSmrg | ymp \ 127925ad54caSmrg | z8k | z80) 128025ad54caSmrg ;; 128125ad54caSmrg 128225ad54caSmrg *) 128325ad54caSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 128425ad54caSmrg exit 1 128525ad54caSmrg ;; 128625ad54caSmrg esac 1287e4da13eeSmacallan ;; 1288e4da13eeSmacallanesac 1289e4da13eeSmacallan 1290e4da13eeSmacallan# Here we canonicalize certain aliases for manufacturers. 129125ad54caSmrgcase $vendor in 129225ad54caSmrg digital*) 129325ad54caSmrg vendor=dec 1294e4da13eeSmacallan ;; 129525ad54caSmrg commodore*) 129625ad54caSmrg vendor=cbm 1297e4da13eeSmacallan ;; 1298e4da13eeSmacallan *) 1299e4da13eeSmacallan ;; 1300e4da13eeSmacallanesac 1301e4da13eeSmacallan 1302e4da13eeSmacallan# Decode manufacturer-specific aliases for certain operating systems. 1303e4da13eeSmacallan 130425ad54caSmrgif test x$basic_os != x 1305e4da13eeSmacallanthen 130625ad54caSmrg 130725ad54caSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 130825ad54caSmrg# set os. 130925ad54caSmrgcase $basic_os in 131025ad54caSmrg gnu/linux*) 131125ad54caSmrg kernel=linux 131225ad54caSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 131325ad54caSmrg ;; 131425ad54caSmrg os2-emx) 131525ad54caSmrg kernel=os2 131625ad54caSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 131725ad54caSmrg ;; 131825ad54caSmrg nto-qnx*) 131925ad54caSmrg kernel=nto 132025ad54caSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 132125ad54caSmrg ;; 132225ad54caSmrg *-*) 132325ad54caSmrg # shellcheck disable=SC2162 132425ad54caSmrg saved_IFS=$IFS 132525ad54caSmrg IFS="-" read kernel os <<EOF 132625ad54caSmrg$basic_os 132725ad54caSmrgEOF 132825ad54caSmrg IFS=$saved_IFS 132925ad54caSmrg ;; 133025ad54caSmrg # Default OS when just kernel was specified 133125ad54caSmrg nto*) 133225ad54caSmrg kernel=nto 133325ad54caSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 133425ad54caSmrg ;; 133525ad54caSmrg linux*) 133625ad54caSmrg kernel=linux 133725ad54caSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 133865d490d0Smrg ;; 133925ad54caSmrg *) 134025ad54caSmrg kernel= 134125ad54caSmrg os=$basic_os 1342e4da13eeSmacallan ;; 134325ad54caSmrgesac 134425ad54caSmrg 134525ad54caSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 134625ad54caSmrg# etc.) 134725ad54caSmrgcase $os in 134825ad54caSmrg # First match some system type aliases that might get confused 134925ad54caSmrg # with valid system types. 135025ad54caSmrg # solaris* is a basic system type, with this one exception. 135125ad54caSmrg auroraux) 135225ad54caSmrg os=auroraux 1353e4da13eeSmacallan ;; 135425ad54caSmrg bluegene*) 135525ad54caSmrg os=cnk 1356e4da13eeSmacallan ;; 135725ad54caSmrg solaris1 | solaris1.*) 135825ad54caSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1359e4da13eeSmacallan ;; 136025ad54caSmrg solaris) 136125ad54caSmrg os=solaris2 1362e4da13eeSmacallan ;; 136325ad54caSmrg unixware*) 136425ad54caSmrg os=sysv4.2uw 1365e4da13eeSmacallan ;; 136625ad54caSmrg # es1800 is here to avoid being matched by es* (a different OS) 136725ad54caSmrg es1800*) 136825ad54caSmrg os=ose 1369e4da13eeSmacallan ;; 137025ad54caSmrg # Some version numbers need modification 137125ad54caSmrg chorusos*) 137225ad54caSmrg os=chorusos 1373e4da13eeSmacallan ;; 137425ad54caSmrg isc) 137525ad54caSmrg os=isc2.2 1376e4da13eeSmacallan ;; 137725ad54caSmrg sco6) 137825ad54caSmrg os=sco5v6 1379e4da13eeSmacallan ;; 138025ad54caSmrg sco5) 138125ad54caSmrg os=sco3.2v5 1382e4da13eeSmacallan ;; 138325ad54caSmrg sco4) 138425ad54caSmrg os=sco3.2v4 1385e4da13eeSmacallan ;; 138625ad54caSmrg sco3.2.[4-9]*) 138725ad54caSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1388e4da13eeSmacallan ;; 138925ad54caSmrg sco*v* | scout) 139025ad54caSmrg # Don't match below 1391e4da13eeSmacallan ;; 139225ad54caSmrg sco*) 139325ad54caSmrg os=sco3.2v2 1394e4da13eeSmacallan ;; 139525ad54caSmrg psos*) 139625ad54caSmrg os=psos 1397e4da13eeSmacallan ;; 139825ad54caSmrg qnx*) 139925ad54caSmrg os=qnx 1400e4da13eeSmacallan ;; 140125ad54caSmrg hiux*) 140225ad54caSmrg os=hiuxwe2 1403e4da13eeSmacallan ;; 140425ad54caSmrg lynx*178) 140525ad54caSmrg os=lynxos178 1406e4da13eeSmacallan ;; 140725ad54caSmrg lynx*5) 140825ad54caSmrg os=lynxos5 1409e4da13eeSmacallan ;; 141025ad54caSmrg lynxos*) 141125ad54caSmrg # don't get caught up in next wildcard 1412e4da13eeSmacallan ;; 141325ad54caSmrg lynx*) 141425ad54caSmrg os=lynxos 1415e4da13eeSmacallan ;; 141625ad54caSmrg mac[0-9]*) 141725ad54caSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 1418e4da13eeSmacallan ;; 141925ad54caSmrg opened*) 142025ad54caSmrg os=openedition 1421e4da13eeSmacallan ;; 142225ad54caSmrg os400*) 142325ad54caSmrg os=os400 1424e4da13eeSmacallan ;; 142525ad54caSmrg sunos5*) 142625ad54caSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1427e4da13eeSmacallan ;; 142825ad54caSmrg sunos6*) 142925ad54caSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1430e4da13eeSmacallan ;; 143125ad54caSmrg wince*) 143225ad54caSmrg os=wince 1433e4da13eeSmacallan ;; 143425ad54caSmrg utek*) 143525ad54caSmrg os=bsd 1436e4da13eeSmacallan ;; 143725ad54caSmrg dynix*) 143825ad54caSmrg os=bsd 143925ad54caSmrg ;; 144025ad54caSmrg acis*) 144125ad54caSmrg os=aos 1442e4da13eeSmacallan ;; 144325ad54caSmrg atheos*) 144425ad54caSmrg os=atheos 1445e4da13eeSmacallan ;; 144625ad54caSmrg syllable*) 144725ad54caSmrg os=syllable 1448e4da13eeSmacallan ;; 144925ad54caSmrg 386bsd) 145025ad54caSmrg os=bsd 1451e4da13eeSmacallan ;; 145225ad54caSmrg ctix* | uts*) 145325ad54caSmrg os=sysv 1454e4da13eeSmacallan ;; 145525ad54caSmrg nova*) 145625ad54caSmrg os=rtmk-nova 1457e4da13eeSmacallan ;; 145825ad54caSmrg ns2) 145925ad54caSmrg os=nextstep2 1460e4da13eeSmacallan ;; 146125ad54caSmrg # Preserve the version number of sinix5. 146225ad54caSmrg sinix5.*) 146325ad54caSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1464e4da13eeSmacallan ;; 146525ad54caSmrg sinix*) 146625ad54caSmrg os=sysv4 1467e4da13eeSmacallan ;; 146825ad54caSmrg tpf*) 146925ad54caSmrg os=tpf 1470e4da13eeSmacallan ;; 147125ad54caSmrg triton*) 147225ad54caSmrg os=sysv3 1473e4da13eeSmacallan ;; 147425ad54caSmrg oss*) 147525ad54caSmrg os=sysv3 1476e4da13eeSmacallan ;; 147725ad54caSmrg svr4*) 147825ad54caSmrg os=sysv4 1479e4da13eeSmacallan ;; 148025ad54caSmrg svr3) 148125ad54caSmrg os=sysv3 1482e4da13eeSmacallan ;; 148325ad54caSmrg sysvr4) 148425ad54caSmrg os=sysv4 1485e4da13eeSmacallan ;; 148625ad54caSmrg ose*) 148725ad54caSmrg os=ose 1488e4da13eeSmacallan ;; 148925ad54caSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 149025ad54caSmrg os=mint 149165d490d0Smrg ;; 149225ad54caSmrg dicos*) 149325ad54caSmrg os=dicos 149465d490d0Smrg ;; 149525ad54caSmrg pikeos*) 149625ad54caSmrg # Until real need of OS specific support for 149725ad54caSmrg # particular features comes up, bare metal 149825ad54caSmrg # configurations are quite functional. 149925ad54caSmrg case $cpu in 150025ad54caSmrg arm*) 150125ad54caSmrg os=eabi 150225ad54caSmrg ;; 150325ad54caSmrg *) 150425ad54caSmrg os=elf 150525ad54caSmrg ;; 150625ad54caSmrg esac 1507e4da13eeSmacallan ;; 1508e4da13eeSmacallan *) 150925ad54caSmrg # No normalization, but not necessarily accepted, that comes below. 1510e4da13eeSmacallan ;; 1511e4da13eeSmacallanesac 151225ad54caSmrg 1513e4da13eeSmacallanelse 1514e4da13eeSmacallan 1515e4da13eeSmacallan# Here we handle the default operating systems that come with various machines. 1516e4da13eeSmacallan# The value should be what the vendor currently ships out the door with their 1517e4da13eeSmacallan# machine or put another way, the most popular os provided with the machine. 1518e4da13eeSmacallan 1519e4da13eeSmacallan# Note that if you're going to try to match "-MANUFACTURER" here (say, 1520e4da13eeSmacallan# "-sun"), then you have to tell the case statement up towards the top 1521e4da13eeSmacallan# that MANUFACTURER isn't an operating system. Otherwise, code above 1522e4da13eeSmacallan# will signal an error saying that MANUFACTURER isn't an operating 1523e4da13eeSmacallan# system, and we'll never get to this point. 1524e4da13eeSmacallan 152525ad54caSmrgkernel= 152625ad54caSmrgcase $cpu-$vendor in 152765d490d0Smrg score-*) 152825ad54caSmrg os=elf 1529e4da13eeSmacallan ;; 153065d490d0Smrg spu-*) 153125ad54caSmrg os=elf 1532e4da13eeSmacallan ;; 1533e4da13eeSmacallan *-acorn) 153425ad54caSmrg os=riscix1.2 1535e4da13eeSmacallan ;; 1536e4da13eeSmacallan arm*-rebel) 153725ad54caSmrg kernel=linux 153825ad54caSmrg os=gnu 1539e4da13eeSmacallan ;; 1540e4da13eeSmacallan arm*-semi) 154125ad54caSmrg os=aout 1542e4da13eeSmacallan ;; 154365d490d0Smrg c4x-* | tic4x-*) 154425ad54caSmrg os=coff 154525ad54caSmrg ;; 154625ad54caSmrg c8051-*) 154725ad54caSmrg os=elf 154825ad54caSmrg ;; 154925ad54caSmrg clipper-intergraph) 155025ad54caSmrg os=clix 155165d490d0Smrg ;; 155265d490d0Smrg hexagon-*) 155325ad54caSmrg os=elf 155465d490d0Smrg ;; 155565d490d0Smrg tic54x-*) 155625ad54caSmrg os=coff 155765d490d0Smrg ;; 155865d490d0Smrg tic55x-*) 155925ad54caSmrg os=coff 156065d490d0Smrg ;; 156165d490d0Smrg tic6x-*) 156225ad54caSmrg os=coff 1563e4da13eeSmacallan ;; 1564e4da13eeSmacallan # This must come before the *-dec entry. 1565e4da13eeSmacallan pdp10-*) 156625ad54caSmrg os=tops20 1567e4da13eeSmacallan ;; 1568e4da13eeSmacallan pdp11-*) 156925ad54caSmrg os=none 1570e4da13eeSmacallan ;; 1571e4da13eeSmacallan *-dec | vax-*) 157225ad54caSmrg os=ultrix4.2 1573e4da13eeSmacallan ;; 1574e4da13eeSmacallan m68*-apollo) 157525ad54caSmrg os=domain 1576e4da13eeSmacallan ;; 1577e4da13eeSmacallan i386-sun) 157825ad54caSmrg os=sunos4.0.2 1579e4da13eeSmacallan ;; 1580e4da13eeSmacallan m68000-sun) 158125ad54caSmrg os=sunos3 1582e4da13eeSmacallan ;; 1583e4da13eeSmacallan m68*-cisco) 158425ad54caSmrg os=aout 1585e4da13eeSmacallan ;; 158665d490d0Smrg mep-*) 158725ad54caSmrg os=elf 1588e4da13eeSmacallan ;; 1589e4da13eeSmacallan mips*-cisco) 159025ad54caSmrg os=elf 1591e4da13eeSmacallan ;; 1592e4da13eeSmacallan mips*-*) 159325ad54caSmrg os=elf 1594e4da13eeSmacallan ;; 1595e4da13eeSmacallan or32-*) 159625ad54caSmrg os=coff 1597e4da13eeSmacallan ;; 1598e4da13eeSmacallan *-tti) # must be before sparc entry or we get the wrong os. 159925ad54caSmrg os=sysv3 1600e4da13eeSmacallan ;; 1601e4da13eeSmacallan sparc-* | *-sun) 160225ad54caSmrg os=sunos4.1.1 1603e4da13eeSmacallan ;; 160425ad54caSmrg pru-*) 160525ad54caSmrg os=elf 1606e4da13eeSmacallan ;; 160725ad54caSmrg *-be) 160825ad54caSmrg os=beos 1609e4da13eeSmacallan ;; 1610e4da13eeSmacallan *-ibm) 161125ad54caSmrg os=aix 1612e4da13eeSmacallan ;; 161365d490d0Smrg *-knuth) 161425ad54caSmrg os=mmixware 1615e4da13eeSmacallan ;; 1616e4da13eeSmacallan *-wec) 161725ad54caSmrg os=proelf 1618e4da13eeSmacallan ;; 1619e4da13eeSmacallan *-winbond) 162025ad54caSmrg os=proelf 1621e4da13eeSmacallan ;; 1622e4da13eeSmacallan *-oki) 162325ad54caSmrg os=proelf 1624e4da13eeSmacallan ;; 1625e4da13eeSmacallan *-hp) 162625ad54caSmrg os=hpux 1627e4da13eeSmacallan ;; 1628e4da13eeSmacallan *-hitachi) 162925ad54caSmrg os=hiux 1630e4da13eeSmacallan ;; 1631e4da13eeSmacallan i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 163225ad54caSmrg os=sysv 1633e4da13eeSmacallan ;; 1634e4da13eeSmacallan *-cbm) 163525ad54caSmrg os=amigaos 1636e4da13eeSmacallan ;; 1637e4da13eeSmacallan *-dg) 163825ad54caSmrg os=dgux 1639e4da13eeSmacallan ;; 1640e4da13eeSmacallan *-dolphin) 164125ad54caSmrg os=sysv3 1642e4da13eeSmacallan ;; 1643e4da13eeSmacallan m68k-ccur) 164425ad54caSmrg os=rtu 1645e4da13eeSmacallan ;; 1646e4da13eeSmacallan m88k-omron*) 164725ad54caSmrg os=luna 1648e4da13eeSmacallan ;; 164925ad54caSmrg *-next) 165025ad54caSmrg os=nextstep 1651e4da13eeSmacallan ;; 1652e4da13eeSmacallan *-sequent) 165325ad54caSmrg os=ptx 1654e4da13eeSmacallan ;; 1655e4da13eeSmacallan *-crds) 165625ad54caSmrg os=unos 1657e4da13eeSmacallan ;; 1658e4da13eeSmacallan *-ns) 165925ad54caSmrg os=genix 1660e4da13eeSmacallan ;; 1661e4da13eeSmacallan i370-*) 166225ad54caSmrg os=mvs 1663e4da13eeSmacallan ;; 1664e4da13eeSmacallan *-gould) 166525ad54caSmrg os=sysv 1666e4da13eeSmacallan ;; 1667e4da13eeSmacallan *-highlevel) 166825ad54caSmrg os=bsd 1669e4da13eeSmacallan ;; 1670e4da13eeSmacallan *-encore) 167125ad54caSmrg os=bsd 1672e4da13eeSmacallan ;; 1673e4da13eeSmacallan *-sgi) 167425ad54caSmrg os=irix 1675e4da13eeSmacallan ;; 1676e4da13eeSmacallan *-siemens) 167725ad54caSmrg os=sysv4 1678e4da13eeSmacallan ;; 1679e4da13eeSmacallan *-masscomp) 168025ad54caSmrg os=rtu 1681e4da13eeSmacallan ;; 1682e4da13eeSmacallan f30[01]-fujitsu | f700-fujitsu) 168325ad54caSmrg os=uxpv 1684e4da13eeSmacallan ;; 1685e4da13eeSmacallan *-rom68k) 168625ad54caSmrg os=coff 1687e4da13eeSmacallan ;; 1688e4da13eeSmacallan *-*bug) 168925ad54caSmrg os=coff 1690e4da13eeSmacallan ;; 1691e4da13eeSmacallan *-apple) 169225ad54caSmrg os=macos 1693e4da13eeSmacallan ;; 1694e4da13eeSmacallan *-atari*) 169525ad54caSmrg os=mint 169625ad54caSmrg ;; 169725ad54caSmrg *-wrs) 169825ad54caSmrg os=vxworks 1699e4da13eeSmacallan ;; 1700e4da13eeSmacallan *) 170125ad54caSmrg os=none 1702e4da13eeSmacallan ;; 1703e4da13eeSmacallanesac 170425ad54caSmrg 1705e4da13eeSmacallanfi 1706e4da13eeSmacallan 170725ad54caSmrg# Now, validate our (potentially fixed-up) OS. 170825ad54caSmrgcase $os in 170925ad54caSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 171025ad54caSmrg musl* | newlib* | relibc* | uclibc*) 171125ad54caSmrg ;; 171225ad54caSmrg # Likewise for "kernel-abi" 171325ad54caSmrg eabi* | gnueabi*) 171425ad54caSmrg ;; 171525ad54caSmrg # VxWorks passes extra cpu info in the 4th filed. 171625ad54caSmrg simlinux | simwindows | spe) 171725ad54caSmrg ;; 171825ad54caSmrg # Now accept the basic system types. 171925ad54caSmrg # The portable systems comes first. 172025ad54caSmrg # Each alternative MUST end in a * to match a version number. 172125ad54caSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 172225ad54caSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 172325ad54caSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 172425ad54caSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 172525ad54caSmrg | hiux* | abug | nacl* | netware* | windows* \ 172625ad54caSmrg | os9* | macos* | osx* | ios* \ 172725ad54caSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 172825ad54caSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 172925ad54caSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 173025ad54caSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 173125ad54caSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 173225ad54caSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 173325ad54caSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 173425ad54caSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 173525ad54caSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 173625ad54caSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 173725ad54caSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 173825ad54caSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 173925ad54caSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 174025ad54caSmrg | midipix* | mingw32* | mingw64* | mint* \ 174125ad54caSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 174225ad54caSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 174325ad54caSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 174425ad54caSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 174525ad54caSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 174625ad54caSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 174725ad54caSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 174825ad54caSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 174925ad54caSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 175025ad54caSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 175125ad54caSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 175225ad54caSmrg ;; 175325ad54caSmrg # This one is extra strict with allowed versions 175425ad54caSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 175525ad54caSmrg # Don't forget version if it is 3.2v4 or newer. 175625ad54caSmrg ;; 175725ad54caSmrg none) 175825ad54caSmrg ;; 175925ad54caSmrg *) 176025ad54caSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 176125ad54caSmrg exit 1 176225ad54caSmrg ;; 176325ad54caSmrgesac 176425ad54caSmrg 176525ad54caSmrg# As a final step for OS-related things, validate the OS-kernel combination 176625ad54caSmrg# (given a valid OS), if there is a kernel. 176725ad54caSmrgcase $kernel-$os in 176825ad54caSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 176925ad54caSmrg | linux-musl* | linux-relibc* | linux-uclibc* ) 177025ad54caSmrg ;; 177125ad54caSmrg uclinux-uclibc* ) 177225ad54caSmrg ;; 177325ad54caSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 177425ad54caSmrg # These are just libc implementations, not actual OSes, and thus 177525ad54caSmrg # require a kernel. 177625ad54caSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 177725ad54caSmrg exit 1 177825ad54caSmrg ;; 177925ad54caSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 178025ad54caSmrg ;; 178125ad54caSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 178225ad54caSmrg ;; 178325ad54caSmrg nto-qnx*) 178425ad54caSmrg ;; 178525ad54caSmrg os2-emx) 178625ad54caSmrg ;; 178725ad54caSmrg *-eabi* | *-gnueabi*) 178825ad54caSmrg ;; 178925ad54caSmrg -*) 179025ad54caSmrg # Blank kernel with real OS is always fine. 179125ad54caSmrg ;; 179225ad54caSmrg *-*) 179325ad54caSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 179425ad54caSmrg exit 1 179525ad54caSmrg ;; 179625ad54caSmrgesac 179725ad54caSmrg 1798e4da13eeSmacallan# Here we handle the case where we know the os, and the CPU type, but not the 1799e4da13eeSmacallan# manufacturer. We pick the logical manufacturer. 180025ad54caSmrgcase $vendor in 180125ad54caSmrg unknown) 180225ad54caSmrg case $cpu-$os in 180325ad54caSmrg *-riscix*) 1804e4da13eeSmacallan vendor=acorn 1805e4da13eeSmacallan ;; 180625ad54caSmrg *-sunos*) 1807e4da13eeSmacallan vendor=sun 1808e4da13eeSmacallan ;; 180925ad54caSmrg *-cnk* | *-aix*) 1810e4da13eeSmacallan vendor=ibm 1811e4da13eeSmacallan ;; 181225ad54caSmrg *-beos*) 1813e4da13eeSmacallan vendor=be 1814e4da13eeSmacallan ;; 181525ad54caSmrg *-hpux*) 1816e4da13eeSmacallan vendor=hp 1817e4da13eeSmacallan ;; 181825ad54caSmrg *-mpeix*) 1819e4da13eeSmacallan vendor=hp 1820e4da13eeSmacallan ;; 182125ad54caSmrg *-hiux*) 1822e4da13eeSmacallan vendor=hitachi 1823e4da13eeSmacallan ;; 182425ad54caSmrg *-unos*) 1825e4da13eeSmacallan vendor=crds 1826e4da13eeSmacallan ;; 182725ad54caSmrg *-dgux*) 1828e4da13eeSmacallan vendor=dg 1829e4da13eeSmacallan ;; 183025ad54caSmrg *-luna*) 1831e4da13eeSmacallan vendor=omron 1832e4da13eeSmacallan ;; 183325ad54caSmrg *-genix*) 1834e4da13eeSmacallan vendor=ns 1835e4da13eeSmacallan ;; 183625ad54caSmrg *-clix*) 183725ad54caSmrg vendor=intergraph 183825ad54caSmrg ;; 183925ad54caSmrg *-mvs* | *-opened*) 184025ad54caSmrg vendor=ibm 184125ad54caSmrg ;; 184225ad54caSmrg *-os400*) 1843e4da13eeSmacallan vendor=ibm 1844e4da13eeSmacallan ;; 184525ad54caSmrg s390-* | s390x-*) 1846e4da13eeSmacallan vendor=ibm 1847e4da13eeSmacallan ;; 184825ad54caSmrg *-ptx*) 1849e4da13eeSmacallan vendor=sequent 1850e4da13eeSmacallan ;; 185125ad54caSmrg *-tpf*) 1852e4da13eeSmacallan vendor=ibm 1853e4da13eeSmacallan ;; 185425ad54caSmrg *-vxsim* | *-vxworks* | *-windiss*) 1855e4da13eeSmacallan vendor=wrs 1856e4da13eeSmacallan ;; 185725ad54caSmrg *-aux*) 1858e4da13eeSmacallan vendor=apple 1859e4da13eeSmacallan ;; 186025ad54caSmrg *-hms*) 1861e4da13eeSmacallan vendor=hitachi 1862e4da13eeSmacallan ;; 186325ad54caSmrg *-mpw* | *-macos*) 1864e4da13eeSmacallan vendor=apple 1865e4da13eeSmacallan ;; 186625ad54caSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1867e4da13eeSmacallan vendor=atari 1868e4da13eeSmacallan ;; 186925ad54caSmrg *-vos*) 1870e4da13eeSmacallan vendor=stratus 1871e4da13eeSmacallan ;; 1872e4da13eeSmacallan esac 1873e4da13eeSmacallan ;; 1874e4da13eeSmacallanesac 1875e4da13eeSmacallan 187625ad54caSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1877e4da13eeSmacallanexit 1878e4da13eeSmacallan 1879e4da13eeSmacallan# Local variables: 188025ad54caSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 1881e4da13eeSmacallan# time-stamp-start: "timestamp='" 1882e4da13eeSmacallan# time-stamp-format: "%:y-%02m-%02d" 1883e4da13eeSmacallan# time-stamp-end: "'" 1884e4da13eeSmacallan# End: 1885