config.sub revision 25dbecb6
125dbecb6Smrg#!/usr/bin/sh 26df26cacSmrg# Configuration validation subroutine script. 325dbecb6Smrg# Copyright 1992-2022 Free Software Foundation, Inc. 46df26cacSmrg 525dbecb6Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 66df26cacSmrg 725dbecb6Smrgtimestamp='2022-01-03' 825dbecb6Smrg 925dbecb6Smrg# This file is free software; you can redistribute it and/or modify it 1025dbecb6Smrg# under the terms of the GNU General Public License as published by 1125dbecb6Smrg# the Free Software Foundation, either version 3 of the License, or 126df26cacSmrg# (at your option) any later version. 136df26cacSmrg# 1425dbecb6Smrg# This program is distributed in the hope that it will be useful, but 1525dbecb6Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 1625dbecb6Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1725dbecb6Smrg# General Public License for more details. 186df26cacSmrg# 196df26cacSmrg# You should have received a copy of the GNU General Public License 2025dbecb6Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 216df26cacSmrg# 226df26cacSmrg# As a special exception to the GNU General Public License, if you 236df26cacSmrg# distribute this file as part of a program that contains a 246df26cacSmrg# configuration script generated by Autoconf, you may include it under 2525dbecb6Smrg# the same distribution terms that you use for the rest of that 2625dbecb6Smrg# program. This Exception is an additional permission under section 7 2725dbecb6Smrg# of the GNU General Public License, version 3 ("GPLv3"). 286df26cacSmrg 296df26cacSmrg 3025dbecb6Smrg# Please send patches to <config-patches@gnu.org>. 316df26cacSmrg# 326df26cacSmrg# Configuration subroutine to validate and canonicalize a configuration type. 336df26cacSmrg# Supply the specified configuration type as an argument. 346df26cacSmrg# If it is invalid, we print an error message on stderr and exit with code 1. 356df26cacSmrg# Otherwise, we print the canonical config type on stdout and succeed. 366df26cacSmrg 3725dbecb6Smrg# You can get the latest version of this script from: 3825dbecb6Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 3925dbecb6Smrg 406df26cacSmrg# This file is supposed to be the same for all GNU packages 416df26cacSmrg# and recognize all the CPU types, system types and aliases 426df26cacSmrg# that are meaningful with *any* GNU software. 436df26cacSmrg# Each package is responsible for reporting which valid configurations 446df26cacSmrg# it does not support. The user should be able to distinguish 456df26cacSmrg# a failure to support a valid configuration from a meaningless 466df26cacSmrg# configuration. 476df26cacSmrg 486df26cacSmrg# The goal of this file is to map all the various variations of a given 496df26cacSmrg# machine specification into a single specification in the form: 506df26cacSmrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 516df26cacSmrg# or in some cases, the newer four-part form: 526df26cacSmrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 536df26cacSmrg# It is wrong to echo any other type of specification. 546df26cacSmrg 5525dbecb6Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 5625dbecb6Smrg# about features and limitations of the classic Bourne shell that were 5725dbecb6Smrg# superseded or lifted in POSIX. However, this script identifies a wide 5825dbecb6Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 5925dbecb6Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 6025dbecb6Smrg# have a pre-POSIX /bin/sh. 6125dbecb6Smrg 626df26cacSmrgme=`echo "$0" | sed -e 's,.*/,,'` 636df26cacSmrg 646df26cacSmrgusage="\ 6525dbecb6SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 666df26cacSmrg 676df26cacSmrgCanonicalize a configuration name. 686df26cacSmrg 6925dbecb6SmrgOptions: 706df26cacSmrg -h, --help print this help, then exit 716df26cacSmrg -t, --time-stamp print date of last modification, then exit 726df26cacSmrg -v, --version print version number, then exit 736df26cacSmrg 746df26cacSmrgReport bugs and patches to <config-patches@gnu.org>." 756df26cacSmrg 766df26cacSmrgversion="\ 776df26cacSmrgGNU config.sub ($timestamp) 786df26cacSmrg 7925dbecb6SmrgCopyright 1992-2022 Free Software Foundation, Inc. 806df26cacSmrg 816df26cacSmrgThis is free software; see the source for copying conditions. There is NO 826df26cacSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 836df26cacSmrg 846df26cacSmrghelp=" 856df26cacSmrgTry \`$me --help' for more information." 866df26cacSmrg 876df26cacSmrg# Parse command line 886df26cacSmrgwhile test $# -gt 0 ; do 896df26cacSmrg case $1 in 906df26cacSmrg --time-stamp | --time* | -t ) 916df26cacSmrg echo "$timestamp" ; exit ;; 926df26cacSmrg --version | -v ) 936df26cacSmrg echo "$version" ; exit ;; 946df26cacSmrg --help | --h* | -h ) 956df26cacSmrg echo "$usage"; exit ;; 966df26cacSmrg -- ) # Stop option processing 976df26cacSmrg shift; break ;; 986df26cacSmrg - ) # Use stdin as input. 996df26cacSmrg break ;; 1006df26cacSmrg -* ) 10125dbecb6Smrg echo "$me: invalid option $1$help" >&2 1026df26cacSmrg exit 1 ;; 1036df26cacSmrg 1046df26cacSmrg *local*) 1056df26cacSmrg # First pass through any local machine types. 10625dbecb6Smrg echo "$1" 1076df26cacSmrg exit ;; 1086df26cacSmrg 1096df26cacSmrg * ) 1106df26cacSmrg break ;; 1116df26cacSmrg esac 1126df26cacSmrgdone 1136df26cacSmrg 1146df26cacSmrgcase $# in 1156df26cacSmrg 0) echo "$me: missing argument$help" >&2 1166df26cacSmrg exit 1;; 1176df26cacSmrg 1) ;; 1186df26cacSmrg *) echo "$me: too many arguments$help" >&2 1196df26cacSmrg exit 1;; 1206df26cacSmrgesac 1216df26cacSmrg 12225dbecb6Smrg# Split fields of configuration type 12325dbecb6Smrg# shellcheck disable=SC2162 12425dbecb6Smrgsaved_IFS=$IFS 12525dbecb6SmrgIFS="-" read field1 field2 field3 field4 <<EOF 12625dbecb6Smrg$1 12725dbecb6SmrgEOF 12825dbecb6SmrgIFS=$saved_IFS 1296df26cacSmrg 13025dbecb6Smrg# Separate into logical components for further validation 13125dbecb6Smrgcase $1 in 13225dbecb6Smrg *-*-*-*-*) 13325dbecb6Smrg echo Invalid configuration \`"$1"\': more than four components >&2 13425dbecb6Smrg exit 1 1356df26cacSmrg ;; 13625dbecb6Smrg *-*-*-*) 13725dbecb6Smrg basic_machine=$field1-$field2 13825dbecb6Smrg basic_os=$field3-$field4 1396df26cacSmrg ;; 14025dbecb6Smrg *-*-*) 14125dbecb6Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 14225dbecb6Smrg # parts 14325dbecb6Smrg maybe_os=$field2-$field3 14425dbecb6Smrg case $maybe_os in 14525dbecb6Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 14625dbecb6Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 14725dbecb6Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 14825dbecb6Smrg | storm-chaos* | os2-emx* | rtmk-nova*) 14925dbecb6Smrg basic_machine=$field1 15025dbecb6Smrg basic_os=$maybe_os 15125dbecb6Smrg ;; 15225dbecb6Smrg android-linux) 15325dbecb6Smrg basic_machine=$field1-unknown 15425dbecb6Smrg basic_os=linux-android 15525dbecb6Smrg ;; 15625dbecb6Smrg *) 15725dbecb6Smrg basic_machine=$field1-$field2 15825dbecb6Smrg basic_os=$field3 15925dbecb6Smrg ;; 16025dbecb6Smrg esac 1616df26cacSmrg ;; 16225dbecb6Smrg *-*) 16325dbecb6Smrg # A lone config we happen to match not fitting any pattern 16425dbecb6Smrg case $field1-$field2 in 16525dbecb6Smrg decstation-3100) 16625dbecb6Smrg basic_machine=mips-dec 16725dbecb6Smrg basic_os= 16825dbecb6Smrg ;; 16925dbecb6Smrg *-*) 17025dbecb6Smrg # Second component is usually, but not always the OS 17125dbecb6Smrg case $field2 in 17225dbecb6Smrg # Prevent following clause from handling this valid os 17325dbecb6Smrg sun*os*) 17425dbecb6Smrg basic_machine=$field1 17525dbecb6Smrg basic_os=$field2 17625dbecb6Smrg ;; 17725dbecb6Smrg zephyr*) 17825dbecb6Smrg basic_machine=$field1-unknown 17925dbecb6Smrg basic_os=$field2 18025dbecb6Smrg ;; 18125dbecb6Smrg # Manufacturers 18225dbecb6Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 18325dbecb6Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 18425dbecb6Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 18525dbecb6Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 18625dbecb6Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 18725dbecb6Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 18825dbecb6Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 18925dbecb6Smrg | microblaze* | sim | cisco \ 19025dbecb6Smrg | oki | wec | wrs | winbond) 19125dbecb6Smrg basic_machine=$field1-$field2 19225dbecb6Smrg basic_os= 19325dbecb6Smrg ;; 19425dbecb6Smrg *) 19525dbecb6Smrg basic_machine=$field1 19625dbecb6Smrg basic_os=$field2 19725dbecb6Smrg ;; 19825dbecb6Smrg esac 19925dbecb6Smrg ;; 20025dbecb6Smrg esac 2016df26cacSmrg ;; 20225dbecb6Smrg *) 20325dbecb6Smrg # Convert single-component short-hands not valid as part of 20425dbecb6Smrg # multi-component configurations. 20525dbecb6Smrg case $field1 in 20625dbecb6Smrg 386bsd) 20725dbecb6Smrg basic_machine=i386-pc 20825dbecb6Smrg basic_os=bsd 20925dbecb6Smrg ;; 21025dbecb6Smrg a29khif) 21125dbecb6Smrg basic_machine=a29k-amd 21225dbecb6Smrg basic_os=udi 21325dbecb6Smrg ;; 21425dbecb6Smrg adobe68k) 21525dbecb6Smrg basic_machine=m68010-adobe 21625dbecb6Smrg basic_os=scout 21725dbecb6Smrg ;; 21825dbecb6Smrg alliant) 21925dbecb6Smrg basic_machine=fx80-alliant 22025dbecb6Smrg basic_os= 22125dbecb6Smrg ;; 22225dbecb6Smrg altos | altos3068) 22325dbecb6Smrg basic_machine=m68k-altos 22425dbecb6Smrg basic_os= 22525dbecb6Smrg ;; 22625dbecb6Smrg am29k) 22725dbecb6Smrg basic_machine=a29k-none 22825dbecb6Smrg basic_os=bsd 22925dbecb6Smrg ;; 23025dbecb6Smrg amdahl) 23125dbecb6Smrg basic_machine=580-amdahl 23225dbecb6Smrg basic_os=sysv 23325dbecb6Smrg ;; 23425dbecb6Smrg amiga) 23525dbecb6Smrg basic_machine=m68k-unknown 23625dbecb6Smrg basic_os= 23725dbecb6Smrg ;; 23825dbecb6Smrg amigaos | amigados) 23925dbecb6Smrg basic_machine=m68k-unknown 24025dbecb6Smrg basic_os=amigaos 24125dbecb6Smrg ;; 24225dbecb6Smrg amigaunix | amix) 24325dbecb6Smrg basic_machine=m68k-unknown 24425dbecb6Smrg basic_os=sysv4 24525dbecb6Smrg ;; 24625dbecb6Smrg apollo68) 24725dbecb6Smrg basic_machine=m68k-apollo 24825dbecb6Smrg basic_os=sysv 24925dbecb6Smrg ;; 25025dbecb6Smrg apollo68bsd) 25125dbecb6Smrg basic_machine=m68k-apollo 25225dbecb6Smrg basic_os=bsd 25325dbecb6Smrg ;; 25425dbecb6Smrg aros) 25525dbecb6Smrg basic_machine=i386-pc 25625dbecb6Smrg basic_os=aros 25725dbecb6Smrg ;; 25825dbecb6Smrg aux) 25925dbecb6Smrg basic_machine=m68k-apple 26025dbecb6Smrg basic_os=aux 26125dbecb6Smrg ;; 26225dbecb6Smrg balance) 26325dbecb6Smrg basic_machine=ns32k-sequent 26425dbecb6Smrg basic_os=dynix 26525dbecb6Smrg ;; 26625dbecb6Smrg blackfin) 26725dbecb6Smrg basic_machine=bfin-unknown 26825dbecb6Smrg basic_os=linux 26925dbecb6Smrg ;; 27025dbecb6Smrg cegcc) 27125dbecb6Smrg basic_machine=arm-unknown 27225dbecb6Smrg basic_os=cegcc 27325dbecb6Smrg ;; 27425dbecb6Smrg convex-c1) 27525dbecb6Smrg basic_machine=c1-convex 27625dbecb6Smrg basic_os=bsd 27725dbecb6Smrg ;; 27825dbecb6Smrg convex-c2) 27925dbecb6Smrg basic_machine=c2-convex 28025dbecb6Smrg basic_os=bsd 28125dbecb6Smrg ;; 28225dbecb6Smrg convex-c32) 28325dbecb6Smrg basic_machine=c32-convex 28425dbecb6Smrg basic_os=bsd 28525dbecb6Smrg ;; 28625dbecb6Smrg convex-c34) 28725dbecb6Smrg basic_machine=c34-convex 28825dbecb6Smrg basic_os=bsd 28925dbecb6Smrg ;; 29025dbecb6Smrg convex-c38) 29125dbecb6Smrg basic_machine=c38-convex 29225dbecb6Smrg basic_os=bsd 29325dbecb6Smrg ;; 29425dbecb6Smrg cray) 29525dbecb6Smrg basic_machine=j90-cray 29625dbecb6Smrg basic_os=unicos 29725dbecb6Smrg ;; 29825dbecb6Smrg crds | unos) 29925dbecb6Smrg basic_machine=m68k-crds 30025dbecb6Smrg basic_os= 30125dbecb6Smrg ;; 30225dbecb6Smrg da30) 30325dbecb6Smrg basic_machine=m68k-da30 30425dbecb6Smrg basic_os= 30525dbecb6Smrg ;; 30625dbecb6Smrg decstation | pmax | pmin | dec3100 | decstatn) 30725dbecb6Smrg basic_machine=mips-dec 30825dbecb6Smrg basic_os= 30925dbecb6Smrg ;; 31025dbecb6Smrg delta88) 31125dbecb6Smrg basic_machine=m88k-motorola 31225dbecb6Smrg basic_os=sysv3 31325dbecb6Smrg ;; 31425dbecb6Smrg dicos) 31525dbecb6Smrg basic_machine=i686-pc 31625dbecb6Smrg basic_os=dicos 31725dbecb6Smrg ;; 31825dbecb6Smrg djgpp) 31925dbecb6Smrg basic_machine=i586-pc 32025dbecb6Smrg basic_os=msdosdjgpp 32125dbecb6Smrg ;; 32225dbecb6Smrg ebmon29k) 32325dbecb6Smrg basic_machine=a29k-amd 32425dbecb6Smrg basic_os=ebmon 32525dbecb6Smrg ;; 32625dbecb6Smrg es1800 | OSE68k | ose68k | ose | OSE) 32725dbecb6Smrg basic_machine=m68k-ericsson 32825dbecb6Smrg basic_os=ose 32925dbecb6Smrg ;; 33025dbecb6Smrg gmicro) 33125dbecb6Smrg basic_machine=tron-gmicro 33225dbecb6Smrg basic_os=sysv 33325dbecb6Smrg ;; 33425dbecb6Smrg go32) 33525dbecb6Smrg basic_machine=i386-pc 33625dbecb6Smrg basic_os=go32 33725dbecb6Smrg ;; 33825dbecb6Smrg h8300hms) 33925dbecb6Smrg basic_machine=h8300-hitachi 34025dbecb6Smrg basic_os=hms 34125dbecb6Smrg ;; 34225dbecb6Smrg h8300xray) 34325dbecb6Smrg basic_machine=h8300-hitachi 34425dbecb6Smrg basic_os=xray 34525dbecb6Smrg ;; 34625dbecb6Smrg h8500hms) 34725dbecb6Smrg basic_machine=h8500-hitachi 34825dbecb6Smrg basic_os=hms 34925dbecb6Smrg ;; 35025dbecb6Smrg harris) 35125dbecb6Smrg basic_machine=m88k-harris 35225dbecb6Smrg basic_os=sysv3 35325dbecb6Smrg ;; 35425dbecb6Smrg hp300 | hp300hpux) 35525dbecb6Smrg basic_machine=m68k-hp 35625dbecb6Smrg basic_os=hpux 35725dbecb6Smrg ;; 35825dbecb6Smrg hp300bsd) 35925dbecb6Smrg basic_machine=m68k-hp 36025dbecb6Smrg basic_os=bsd 36125dbecb6Smrg ;; 36225dbecb6Smrg hppaosf) 36325dbecb6Smrg basic_machine=hppa1.1-hp 36425dbecb6Smrg basic_os=osf 36525dbecb6Smrg ;; 36625dbecb6Smrg hppro) 36725dbecb6Smrg basic_machine=hppa1.1-hp 36825dbecb6Smrg basic_os=proelf 36925dbecb6Smrg ;; 37025dbecb6Smrg i386mach) 37125dbecb6Smrg basic_machine=i386-mach 37225dbecb6Smrg basic_os=mach 37325dbecb6Smrg ;; 37425dbecb6Smrg isi68 | isi) 37525dbecb6Smrg basic_machine=m68k-isi 37625dbecb6Smrg basic_os=sysv 37725dbecb6Smrg ;; 37825dbecb6Smrg m68knommu) 37925dbecb6Smrg basic_machine=m68k-unknown 38025dbecb6Smrg basic_os=linux 38125dbecb6Smrg ;; 38225dbecb6Smrg magnum | m3230) 38325dbecb6Smrg basic_machine=mips-mips 38425dbecb6Smrg basic_os=sysv 38525dbecb6Smrg ;; 38625dbecb6Smrg merlin) 38725dbecb6Smrg basic_machine=ns32k-utek 38825dbecb6Smrg basic_os=sysv 38925dbecb6Smrg ;; 39025dbecb6Smrg mingw64) 39125dbecb6Smrg basic_machine=x86_64-pc 39225dbecb6Smrg basic_os=mingw64 39325dbecb6Smrg ;; 39425dbecb6Smrg mingw32) 39525dbecb6Smrg basic_machine=i686-pc 39625dbecb6Smrg basic_os=mingw32 39725dbecb6Smrg ;; 39825dbecb6Smrg mingw32ce) 39925dbecb6Smrg basic_machine=arm-unknown 40025dbecb6Smrg basic_os=mingw32ce 40125dbecb6Smrg ;; 40225dbecb6Smrg monitor) 40325dbecb6Smrg basic_machine=m68k-rom68k 40425dbecb6Smrg basic_os=coff 40525dbecb6Smrg ;; 40625dbecb6Smrg morphos) 40725dbecb6Smrg basic_machine=powerpc-unknown 40825dbecb6Smrg basic_os=morphos 40925dbecb6Smrg ;; 41025dbecb6Smrg moxiebox) 41125dbecb6Smrg basic_machine=moxie-unknown 41225dbecb6Smrg basic_os=moxiebox 41325dbecb6Smrg ;; 41425dbecb6Smrg msdos) 41525dbecb6Smrg basic_machine=i386-pc 41625dbecb6Smrg basic_os=msdos 41725dbecb6Smrg ;; 41825dbecb6Smrg msys) 41925dbecb6Smrg basic_machine=i686-pc 42025dbecb6Smrg basic_os=msys 42125dbecb6Smrg ;; 42225dbecb6Smrg mvs) 42325dbecb6Smrg basic_machine=i370-ibm 42425dbecb6Smrg basic_os=mvs 42525dbecb6Smrg ;; 42625dbecb6Smrg nacl) 42725dbecb6Smrg basic_machine=le32-unknown 42825dbecb6Smrg basic_os=nacl 42925dbecb6Smrg ;; 43025dbecb6Smrg ncr3000) 43125dbecb6Smrg basic_machine=i486-ncr 43225dbecb6Smrg basic_os=sysv4 43325dbecb6Smrg ;; 43425dbecb6Smrg netbsd386) 43525dbecb6Smrg basic_machine=i386-pc 43625dbecb6Smrg basic_os=netbsd 43725dbecb6Smrg ;; 43825dbecb6Smrg netwinder) 43925dbecb6Smrg basic_machine=armv4l-rebel 44025dbecb6Smrg basic_os=linux 44125dbecb6Smrg ;; 44225dbecb6Smrg news | news700 | news800 | news900) 44325dbecb6Smrg basic_machine=m68k-sony 44425dbecb6Smrg basic_os=newsos 44525dbecb6Smrg ;; 44625dbecb6Smrg news1000) 44725dbecb6Smrg basic_machine=m68030-sony 44825dbecb6Smrg basic_os=newsos 44925dbecb6Smrg ;; 45025dbecb6Smrg necv70) 45125dbecb6Smrg basic_machine=v70-nec 45225dbecb6Smrg basic_os=sysv 45325dbecb6Smrg ;; 45425dbecb6Smrg nh3000) 45525dbecb6Smrg basic_machine=m68k-harris 45625dbecb6Smrg basic_os=cxux 45725dbecb6Smrg ;; 45825dbecb6Smrg nh[45]000) 45925dbecb6Smrg basic_machine=m88k-harris 46025dbecb6Smrg basic_os=cxux 46125dbecb6Smrg ;; 46225dbecb6Smrg nindy960) 46325dbecb6Smrg basic_machine=i960-intel 46425dbecb6Smrg basic_os=nindy 46525dbecb6Smrg ;; 46625dbecb6Smrg mon960) 46725dbecb6Smrg basic_machine=i960-intel 46825dbecb6Smrg basic_os=mon960 46925dbecb6Smrg ;; 47025dbecb6Smrg nonstopux) 47125dbecb6Smrg basic_machine=mips-compaq 47225dbecb6Smrg basic_os=nonstopux 47325dbecb6Smrg ;; 47425dbecb6Smrg os400) 47525dbecb6Smrg basic_machine=powerpc-ibm 47625dbecb6Smrg basic_os=os400 47725dbecb6Smrg ;; 47825dbecb6Smrg OSE68000 | ose68000) 47925dbecb6Smrg basic_machine=m68000-ericsson 48025dbecb6Smrg basic_os=ose 48125dbecb6Smrg ;; 48225dbecb6Smrg os68k) 48325dbecb6Smrg basic_machine=m68k-none 48425dbecb6Smrg basic_os=os68k 48525dbecb6Smrg ;; 48625dbecb6Smrg paragon) 48725dbecb6Smrg basic_machine=i860-intel 48825dbecb6Smrg basic_os=osf 48925dbecb6Smrg ;; 49025dbecb6Smrg parisc) 49125dbecb6Smrg basic_machine=hppa-unknown 49225dbecb6Smrg basic_os=linux 49325dbecb6Smrg ;; 49425dbecb6Smrg psp) 49525dbecb6Smrg basic_machine=mipsallegrexel-sony 49625dbecb6Smrg basic_os=psp 49725dbecb6Smrg ;; 49825dbecb6Smrg pw32) 49925dbecb6Smrg basic_machine=i586-unknown 50025dbecb6Smrg basic_os=pw32 50125dbecb6Smrg ;; 50225dbecb6Smrg rdos | rdos64) 50325dbecb6Smrg basic_machine=x86_64-pc 50425dbecb6Smrg basic_os=rdos 50525dbecb6Smrg ;; 50625dbecb6Smrg rdos32) 50725dbecb6Smrg basic_machine=i386-pc 50825dbecb6Smrg basic_os=rdos 50925dbecb6Smrg ;; 51025dbecb6Smrg rom68k) 51125dbecb6Smrg basic_machine=m68k-rom68k 51225dbecb6Smrg basic_os=coff 51325dbecb6Smrg ;; 51425dbecb6Smrg sa29200) 51525dbecb6Smrg basic_machine=a29k-amd 51625dbecb6Smrg basic_os=udi 51725dbecb6Smrg ;; 51825dbecb6Smrg sei) 51925dbecb6Smrg basic_machine=mips-sei 52025dbecb6Smrg basic_os=seiux 52125dbecb6Smrg ;; 52225dbecb6Smrg sequent) 52325dbecb6Smrg basic_machine=i386-sequent 52425dbecb6Smrg basic_os= 52525dbecb6Smrg ;; 52625dbecb6Smrg sps7) 52725dbecb6Smrg basic_machine=m68k-bull 52825dbecb6Smrg basic_os=sysv2 52925dbecb6Smrg ;; 53025dbecb6Smrg st2000) 53125dbecb6Smrg basic_machine=m68k-tandem 53225dbecb6Smrg basic_os= 53325dbecb6Smrg ;; 53425dbecb6Smrg stratus) 53525dbecb6Smrg basic_machine=i860-stratus 53625dbecb6Smrg basic_os=sysv4 53725dbecb6Smrg ;; 53825dbecb6Smrg sun2) 53925dbecb6Smrg basic_machine=m68000-sun 54025dbecb6Smrg basic_os= 54125dbecb6Smrg ;; 54225dbecb6Smrg sun2os3) 54325dbecb6Smrg basic_machine=m68000-sun 54425dbecb6Smrg basic_os=sunos3 54525dbecb6Smrg ;; 54625dbecb6Smrg sun2os4) 54725dbecb6Smrg basic_machine=m68000-sun 54825dbecb6Smrg basic_os=sunos4 54925dbecb6Smrg ;; 55025dbecb6Smrg sun3) 55125dbecb6Smrg basic_machine=m68k-sun 55225dbecb6Smrg basic_os= 55325dbecb6Smrg ;; 55425dbecb6Smrg sun3os3) 55525dbecb6Smrg basic_machine=m68k-sun 55625dbecb6Smrg basic_os=sunos3 55725dbecb6Smrg ;; 55825dbecb6Smrg sun3os4) 55925dbecb6Smrg basic_machine=m68k-sun 56025dbecb6Smrg basic_os=sunos4 56125dbecb6Smrg ;; 56225dbecb6Smrg sun4) 56325dbecb6Smrg basic_machine=sparc-sun 56425dbecb6Smrg basic_os= 56525dbecb6Smrg ;; 56625dbecb6Smrg sun4os3) 56725dbecb6Smrg basic_machine=sparc-sun 56825dbecb6Smrg basic_os=sunos3 56925dbecb6Smrg ;; 57025dbecb6Smrg sun4os4) 57125dbecb6Smrg basic_machine=sparc-sun 57225dbecb6Smrg basic_os=sunos4 57325dbecb6Smrg ;; 57425dbecb6Smrg sun4sol2) 57525dbecb6Smrg basic_machine=sparc-sun 57625dbecb6Smrg basic_os=solaris2 57725dbecb6Smrg ;; 57825dbecb6Smrg sun386 | sun386i | roadrunner) 57925dbecb6Smrg basic_machine=i386-sun 58025dbecb6Smrg basic_os= 58125dbecb6Smrg ;; 58225dbecb6Smrg sv1) 58325dbecb6Smrg basic_machine=sv1-cray 58425dbecb6Smrg basic_os=unicos 58525dbecb6Smrg ;; 58625dbecb6Smrg symmetry) 58725dbecb6Smrg basic_machine=i386-sequent 58825dbecb6Smrg basic_os=dynix 58925dbecb6Smrg ;; 59025dbecb6Smrg t3e) 59125dbecb6Smrg basic_machine=alphaev5-cray 59225dbecb6Smrg basic_os=unicos 59325dbecb6Smrg ;; 59425dbecb6Smrg t90) 59525dbecb6Smrg basic_machine=t90-cray 59625dbecb6Smrg basic_os=unicos 59725dbecb6Smrg ;; 59825dbecb6Smrg toad1) 59925dbecb6Smrg basic_machine=pdp10-xkl 60025dbecb6Smrg basic_os=tops20 60125dbecb6Smrg ;; 60225dbecb6Smrg tpf) 60325dbecb6Smrg basic_machine=s390x-ibm 60425dbecb6Smrg basic_os=tpf 60525dbecb6Smrg ;; 60625dbecb6Smrg udi29k) 60725dbecb6Smrg basic_machine=a29k-amd 60825dbecb6Smrg basic_os=udi 60925dbecb6Smrg ;; 61025dbecb6Smrg ultra3) 61125dbecb6Smrg basic_machine=a29k-nyu 61225dbecb6Smrg basic_os=sym1 61325dbecb6Smrg ;; 61425dbecb6Smrg v810 | necv810) 61525dbecb6Smrg basic_machine=v810-nec 61625dbecb6Smrg basic_os=none 61725dbecb6Smrg ;; 61825dbecb6Smrg vaxv) 61925dbecb6Smrg basic_machine=vax-dec 62025dbecb6Smrg basic_os=sysv 62125dbecb6Smrg ;; 62225dbecb6Smrg vms) 62325dbecb6Smrg basic_machine=vax-dec 62425dbecb6Smrg basic_os=vms 62525dbecb6Smrg ;; 62625dbecb6Smrg vsta) 62725dbecb6Smrg basic_machine=i386-pc 62825dbecb6Smrg basic_os=vsta 62925dbecb6Smrg ;; 63025dbecb6Smrg vxworks960) 63125dbecb6Smrg basic_machine=i960-wrs 63225dbecb6Smrg basic_os=vxworks 63325dbecb6Smrg ;; 63425dbecb6Smrg vxworks68) 63525dbecb6Smrg basic_machine=m68k-wrs 63625dbecb6Smrg basic_os=vxworks 63725dbecb6Smrg ;; 63825dbecb6Smrg vxworks29k) 63925dbecb6Smrg basic_machine=a29k-wrs 64025dbecb6Smrg basic_os=vxworks 64125dbecb6Smrg ;; 64225dbecb6Smrg xbox) 64325dbecb6Smrg basic_machine=i686-pc 64425dbecb6Smrg basic_os=mingw32 64525dbecb6Smrg ;; 64625dbecb6Smrg ymp) 64725dbecb6Smrg basic_machine=ymp-cray 64825dbecb6Smrg basic_os=unicos 64925dbecb6Smrg ;; 65025dbecb6Smrg *) 65125dbecb6Smrg basic_machine=$1 65225dbecb6Smrg basic_os= 65325dbecb6Smrg ;; 65425dbecb6Smrg esac 6556df26cacSmrg ;; 65625dbecb6Smrgesac 65725dbecb6Smrg 65825dbecb6Smrg# Decode 1-component or ad-hoc basic machines 65925dbecb6Smrgcase $basic_machine in 66025dbecb6Smrg # Here we handle the default manufacturer of certain CPU types. It is in 66125dbecb6Smrg # some cases the only manufacturer, in others, it is the most popular. 66225dbecb6Smrg w89k) 66325dbecb6Smrg cpu=hppa1.1 66425dbecb6Smrg vendor=winbond 6656df26cacSmrg ;; 66625dbecb6Smrg op50n) 66725dbecb6Smrg cpu=hppa1.1 66825dbecb6Smrg vendor=oki 6696df26cacSmrg ;; 67025dbecb6Smrg op60c) 67125dbecb6Smrg cpu=hppa1.1 67225dbecb6Smrg vendor=oki 6736df26cacSmrg ;; 67425dbecb6Smrg ibm*) 67525dbecb6Smrg cpu=i370 67625dbecb6Smrg vendor=ibm 6776df26cacSmrg ;; 67825dbecb6Smrg orion105) 67925dbecb6Smrg cpu=clipper 68025dbecb6Smrg vendor=highlevel 6816df26cacSmrg ;; 68225dbecb6Smrg mac | mpw | mac-mpw) 68325dbecb6Smrg cpu=m68k 68425dbecb6Smrg vendor=apple 6856df26cacSmrg ;; 68625dbecb6Smrg pmac | pmac-mpw) 68725dbecb6Smrg cpu=powerpc 68825dbecb6Smrg vendor=apple 6896df26cacSmrg ;; 6906df26cacSmrg 6916df26cacSmrg # Recognize the various machine names and aliases which stand 6926df26cacSmrg # for a CPU type and a company and sometimes even an OS. 6936df26cacSmrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 69425dbecb6Smrg cpu=m68000 69525dbecb6Smrg vendor=att 6966df26cacSmrg ;; 6976df26cacSmrg 3b*) 69825dbecb6Smrg cpu=we32k 69925dbecb6Smrg vendor=att 700b68e1f86Smrg ;; 70125dbecb6Smrg bluegene*) 70225dbecb6Smrg cpu=powerpc 70325dbecb6Smrg vendor=ibm 70425dbecb6Smrg basic_os=cnk 7056df26cacSmrg ;; 7066df26cacSmrg decsystem10* | dec10*) 70725dbecb6Smrg cpu=pdp10 70825dbecb6Smrg vendor=dec 70925dbecb6Smrg basic_os=tops10 7106df26cacSmrg ;; 7116df26cacSmrg decsystem20* | dec20*) 71225dbecb6Smrg cpu=pdp10 71325dbecb6Smrg vendor=dec 71425dbecb6Smrg basic_os=tops20 7156df26cacSmrg ;; 7166df26cacSmrg delta | 3300 | motorola-3300 | motorola-delta \ 7176df26cacSmrg | 3300-motorola | delta-motorola) 71825dbecb6Smrg cpu=m68k 71925dbecb6Smrg vendor=motorola 7206df26cacSmrg ;; 72125dbecb6Smrg dpx2*) 72225dbecb6Smrg cpu=m68k 72325dbecb6Smrg vendor=bull 72425dbecb6Smrg basic_os=sysv3 7256df26cacSmrg ;; 7266df26cacSmrg encore | umax | mmax) 72725dbecb6Smrg cpu=ns32k 72825dbecb6Smrg vendor=encore 7296df26cacSmrg ;; 73025dbecb6Smrg elxsi) 73125dbecb6Smrg cpu=elxsi 73225dbecb6Smrg vendor=elxsi 73325dbecb6Smrg basic_os=${basic_os:-bsd} 7346df26cacSmrg ;; 7356df26cacSmrg fx2800) 73625dbecb6Smrg cpu=i860 73725dbecb6Smrg vendor=alliant 7386df26cacSmrg ;; 7396df26cacSmrg genix) 74025dbecb6Smrg cpu=ns32k 74125dbecb6Smrg vendor=ns 7426df26cacSmrg ;; 7436df26cacSmrg h3050r* | hiux*) 74425dbecb6Smrg cpu=hppa1.1 74525dbecb6Smrg vendor=hitachi 74625dbecb6Smrg basic_os=hiuxwe2 7476df26cacSmrg ;; 7486df26cacSmrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 74925dbecb6Smrg cpu=hppa1.0 75025dbecb6Smrg vendor=hp 7516df26cacSmrg ;; 7526df26cacSmrg hp9k2[0-9][0-9] | hp9k31[0-9]) 75325dbecb6Smrg cpu=m68000 75425dbecb6Smrg vendor=hp 7556df26cacSmrg ;; 7566df26cacSmrg hp9k3[2-9][0-9]) 75725dbecb6Smrg cpu=m68k 75825dbecb6Smrg vendor=hp 7596df26cacSmrg ;; 7606df26cacSmrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 76125dbecb6Smrg cpu=hppa1.0 76225dbecb6Smrg vendor=hp 7636df26cacSmrg ;; 7646df26cacSmrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 76525dbecb6Smrg cpu=hppa1.1 76625dbecb6Smrg vendor=hp 7676df26cacSmrg ;; 7686df26cacSmrg hp9k78[0-9] | hp78[0-9]) 7696df26cacSmrg # FIXME: really hppa2.0-hp 77025dbecb6Smrg cpu=hppa1.1 77125dbecb6Smrg vendor=hp 7726df26cacSmrg ;; 7736df26cacSmrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 7746df26cacSmrg # FIXME: really hppa2.0-hp 77525dbecb6Smrg cpu=hppa1.1 77625dbecb6Smrg vendor=hp 7776df26cacSmrg ;; 7786df26cacSmrg hp9k8[0-9][13679] | hp8[0-9][13679]) 77925dbecb6Smrg cpu=hppa1.1 78025dbecb6Smrg vendor=hp 7816df26cacSmrg ;; 7826df26cacSmrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 78325dbecb6Smrg cpu=hppa1.0 78425dbecb6Smrg vendor=hp 7856df26cacSmrg ;; 7866df26cacSmrg i*86v32) 78725dbecb6Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 78825dbecb6Smrg vendor=pc 78925dbecb6Smrg basic_os=sysv32 7906df26cacSmrg ;; 7916df26cacSmrg i*86v4*) 79225dbecb6Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79325dbecb6Smrg vendor=pc 79425dbecb6Smrg basic_os=sysv4 7956df26cacSmrg ;; 7966df26cacSmrg i*86v) 79725dbecb6Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79825dbecb6Smrg vendor=pc 79925dbecb6Smrg basic_os=sysv 8006df26cacSmrg ;; 8016df26cacSmrg i*86sol2) 80225dbecb6Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 80325dbecb6Smrg vendor=pc 80425dbecb6Smrg basic_os=solaris2 8056df26cacSmrg ;; 80625dbecb6Smrg j90 | j90-cray) 80725dbecb6Smrg cpu=j90 80825dbecb6Smrg vendor=cray 80925dbecb6Smrg basic_os=${basic_os:-unicos} 8106df26cacSmrg ;; 8116df26cacSmrg iris | iris4d) 81225dbecb6Smrg cpu=mips 81325dbecb6Smrg vendor=sgi 81425dbecb6Smrg case $basic_os in 81525dbecb6Smrg irix*) 8166df26cacSmrg ;; 8176df26cacSmrg *) 81825dbecb6Smrg basic_os=irix4 8196df26cacSmrg ;; 8206df26cacSmrg esac 8216df26cacSmrg ;; 8226df26cacSmrg miniframe) 82325dbecb6Smrg cpu=m68000 82425dbecb6Smrg vendor=convergent 8256df26cacSmrg ;; 82625dbecb6Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 82725dbecb6Smrg cpu=m68k 82825dbecb6Smrg vendor=atari 82925dbecb6Smrg basic_os=mint 8306df26cacSmrg ;; 8316df26cacSmrg news-3600 | risc-news) 83225dbecb6Smrg cpu=mips 83325dbecb6Smrg vendor=sony 83425dbecb6Smrg basic_os=newsos 83525dbecb6Smrg ;; 83625dbecb6Smrg next | m*-next) 83725dbecb6Smrg cpu=m68k 83825dbecb6Smrg vendor=next 83925dbecb6Smrg case $basic_os in 84025dbecb6Smrg openstep*) 84125dbecb6Smrg ;; 84225dbecb6Smrg nextstep*) 8436df26cacSmrg ;; 84425dbecb6Smrg ns2*) 84525dbecb6Smrg basic_os=nextstep2 8466df26cacSmrg ;; 8476df26cacSmrg *) 84825dbecb6Smrg basic_os=nextstep3 8496df26cacSmrg ;; 8506df26cacSmrg esac 8516df26cacSmrg ;; 8526df26cacSmrg np1) 85325dbecb6Smrg cpu=np1 85425dbecb6Smrg vendor=gould 8556df26cacSmrg ;; 8566df26cacSmrg op50n-* | op60c-*) 85725dbecb6Smrg cpu=hppa1.1 85825dbecb6Smrg vendor=oki 85925dbecb6Smrg basic_os=proelf 8606df26cacSmrg ;; 8616df26cacSmrg pa-hitachi) 86225dbecb6Smrg cpu=hppa1.1 86325dbecb6Smrg vendor=hitachi 86425dbecb6Smrg basic_os=hiuxwe2 865b68e1f86Smrg ;; 8666df26cacSmrg pbd) 86725dbecb6Smrg cpu=sparc 86825dbecb6Smrg vendor=tti 8696df26cacSmrg ;; 8706df26cacSmrg pbb) 87125dbecb6Smrg cpu=m68k 87225dbecb6Smrg vendor=tti 8736df26cacSmrg ;; 87425dbecb6Smrg pc532) 87525dbecb6Smrg cpu=ns32k 87625dbecb6Smrg vendor=pc532 8776df26cacSmrg ;; 8786df26cacSmrg pn) 87925dbecb6Smrg cpu=pn 88025dbecb6Smrg vendor=gould 8816df26cacSmrg ;; 88225dbecb6Smrg power) 88325dbecb6Smrg cpu=power 88425dbecb6Smrg vendor=ibm 8856df26cacSmrg ;; 8866df26cacSmrg ps2) 88725dbecb6Smrg cpu=i386 88825dbecb6Smrg vendor=ibm 8896df26cacSmrg ;; 8906df26cacSmrg rm[46]00) 89125dbecb6Smrg cpu=mips 89225dbecb6Smrg vendor=siemens 8936df26cacSmrg ;; 8946df26cacSmrg rtpc | rtpc-*) 89525dbecb6Smrg cpu=romp 89625dbecb6Smrg vendor=ibm 8976df26cacSmrg ;; 89825dbecb6Smrg sde) 89925dbecb6Smrg cpu=mipsisa32 90025dbecb6Smrg vendor=sde 90125dbecb6Smrg basic_os=${basic_os:-elf} 9026df26cacSmrg ;; 90325dbecb6Smrg simso-wrs) 90425dbecb6Smrg cpu=sparclite 90525dbecb6Smrg vendor=wrs 90625dbecb6Smrg basic_os=vxworks 9076df26cacSmrg ;; 90825dbecb6Smrg tower | tower-32) 90925dbecb6Smrg cpu=m68k 91025dbecb6Smrg vendor=ncr 9116df26cacSmrg ;; 91225dbecb6Smrg vpp*|vx|vx-*) 91325dbecb6Smrg cpu=f301 91425dbecb6Smrg vendor=fujitsu 9156df26cacSmrg ;; 91625dbecb6Smrg w65) 91725dbecb6Smrg cpu=w65 91825dbecb6Smrg vendor=wdc 9196df26cacSmrg ;; 92025dbecb6Smrg w89k-*) 92125dbecb6Smrg cpu=hppa1.1 92225dbecb6Smrg vendor=winbond 92325dbecb6Smrg basic_os=proelf 9246df26cacSmrg ;; 92525dbecb6Smrg none) 92625dbecb6Smrg cpu=none 92725dbecb6Smrg vendor=none 9286df26cacSmrg ;; 92925dbecb6Smrg leon|leon[3-9]) 93025dbecb6Smrg cpu=sparc 93125dbecb6Smrg vendor=$basic_machine 93216fd1166Smrg ;; 93325dbecb6Smrg leon-*|leon[3-9]-*) 93425dbecb6Smrg cpu=sparc 93525dbecb6Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 9366df26cacSmrg ;; 93725dbecb6Smrg 93825dbecb6Smrg *-*) 93925dbecb6Smrg # shellcheck disable=SC2162 94025dbecb6Smrg saved_IFS=$IFS 94125dbecb6Smrg IFS="-" read cpu vendor <<EOF 94225dbecb6Smrg$basic_machine 94325dbecb6SmrgEOF 94425dbecb6Smrg IFS=$saved_IFS 9456df26cacSmrg ;; 94625dbecb6Smrg # We use `pc' rather than `unknown' 94725dbecb6Smrg # because (1) that's what they normally are, and 94825dbecb6Smrg # (2) the word "unknown" tends to confuse beginning users. 94925dbecb6Smrg i*86 | x86_64) 95025dbecb6Smrg cpu=$basic_machine 95125dbecb6Smrg vendor=pc 9526df26cacSmrg ;; 95325dbecb6Smrg # These rules are duplicated from below for sake of the special case above; 95425dbecb6Smrg # i.e. things that normalized to x86 arches should also default to "pc" 95525dbecb6Smrg pc98) 95625dbecb6Smrg cpu=i386 95725dbecb6Smrg vendor=pc 9586df26cacSmrg ;; 95925dbecb6Smrg x64 | amd64) 96025dbecb6Smrg cpu=x86_64 96125dbecb6Smrg vendor=pc 9626df26cacSmrg ;; 96325dbecb6Smrg # Recognize the basic CPU types without company name. 96425dbecb6Smrg *) 96525dbecb6Smrg cpu=$basic_machine 96625dbecb6Smrg vendor=unknown 9676df26cacSmrg ;; 96825dbecb6Smrgesac 96925dbecb6Smrg 97025dbecb6Smrgunset -v basic_machine 97125dbecb6Smrg 97225dbecb6Smrg# Decode basic machines in the full and proper CPU-Company form. 97325dbecb6Smrgcase $cpu-$vendor in 97425dbecb6Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 97525dbecb6Smrg # some cases the only manufacturer, in others, it is the most popular. 97625dbecb6Smrg craynv-unknown) 97725dbecb6Smrg vendor=cray 97825dbecb6Smrg basic_os=${basic_os:-unicosmp} 9796df26cacSmrg ;; 98025dbecb6Smrg c90-unknown | c90-cray) 98125dbecb6Smrg vendor=cray 98225dbecb6Smrg basic_os=${Basic_os:-unicos} 9836df26cacSmrg ;; 98425dbecb6Smrg fx80-unknown) 98525dbecb6Smrg vendor=alliant 9866df26cacSmrg ;; 98725dbecb6Smrg romp-unknown) 98825dbecb6Smrg vendor=ibm 9896df26cacSmrg ;; 99025dbecb6Smrg mmix-unknown) 99125dbecb6Smrg vendor=knuth 9926df26cacSmrg ;; 99325dbecb6Smrg microblaze-unknown | microblazeel-unknown) 99425dbecb6Smrg vendor=xilinx 9956df26cacSmrg ;; 99625dbecb6Smrg rs6000-unknown) 99725dbecb6Smrg vendor=ibm 9986df26cacSmrg ;; 99925dbecb6Smrg vax-unknown) 100025dbecb6Smrg vendor=dec 10016df26cacSmrg ;; 100225dbecb6Smrg pdp11-unknown) 100325dbecb6Smrg vendor=dec 10046df26cacSmrg ;; 100525dbecb6Smrg we32k-unknown) 100625dbecb6Smrg vendor=att 10076df26cacSmrg ;; 100825dbecb6Smrg cydra-unknown) 100925dbecb6Smrg vendor=cydrome 10106df26cacSmrg ;; 101125dbecb6Smrg i370-ibm*) 101225dbecb6Smrg vendor=ibm 10136df26cacSmrg ;; 101425dbecb6Smrg orion-unknown) 101525dbecb6Smrg vendor=highlevel 10166df26cacSmrg ;; 101725dbecb6Smrg xps-unknown | xps100-unknown) 101825dbecb6Smrg cpu=xps100 101925dbecb6Smrg vendor=honeywell 10206df26cacSmrg ;; 102125dbecb6Smrg 102225dbecb6Smrg # Here we normalize CPU types with a missing or matching vendor 102325dbecb6Smrg armh-unknown | armh-alt) 102425dbecb6Smrg cpu=armv7l 102525dbecb6Smrg vendor=alt 102625dbecb6Smrg basic_os=${basic_os:-linux-gnueabihf} 10276df26cacSmrg ;; 102825dbecb6Smrg dpx20-unknown | dpx20-bull) 102925dbecb6Smrg cpu=rs6000 103025dbecb6Smrg vendor=bull 103125dbecb6Smrg basic_os=${basic_os:-bosx} 103234a0776dSmrg ;; 103325dbecb6Smrg 103425dbecb6Smrg # Here we normalize CPU types irrespective of the vendor 103525dbecb6Smrg amd64-*) 103625dbecb6Smrg cpu=x86_64 103734a0776dSmrg ;; 103825dbecb6Smrg blackfin-*) 103925dbecb6Smrg cpu=bfin 104025dbecb6Smrg basic_os=linux 104134a0776dSmrg ;; 104225dbecb6Smrg c54x-*) 104325dbecb6Smrg cpu=tic54x 1044b68e1f86Smrg ;; 104525dbecb6Smrg c55x-*) 104625dbecb6Smrg cpu=tic55x 10476df26cacSmrg ;; 104825dbecb6Smrg c6x-*) 104925dbecb6Smrg cpu=tic6x 10506df26cacSmrg ;; 105125dbecb6Smrg e500v[12]-*) 105225dbecb6Smrg cpu=powerpc 105325dbecb6Smrg basic_os=${basic_os}"spe" 10546df26cacSmrg ;; 105525dbecb6Smrg mips3*-*) 105625dbecb6Smrg cpu=mips64 10576df26cacSmrg ;; 105825dbecb6Smrg ms1-*) 105925dbecb6Smrg cpu=mt 10606df26cacSmrg ;; 106125dbecb6Smrg m68knommu-*) 106225dbecb6Smrg cpu=m68k 106325dbecb6Smrg basic_os=linux 10646df26cacSmrg ;; 106525dbecb6Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 106625dbecb6Smrg cpu=s12z 10676df26cacSmrg ;; 106825dbecb6Smrg openrisc-*) 106925dbecb6Smrg cpu=or32 10706df26cacSmrg ;; 107125dbecb6Smrg parisc-*) 107225dbecb6Smrg cpu=hppa 107325dbecb6Smrg basic_os=linux 10746df26cacSmrg ;; 107525dbecb6Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 107625dbecb6Smrg cpu=i586 10776df26cacSmrg ;; 107825dbecb6Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 107925dbecb6Smrg cpu=i686 10806df26cacSmrg ;; 108125dbecb6Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 108225dbecb6Smrg cpu=i686 10836df26cacSmrg ;; 108425dbecb6Smrg pentium4-*) 108525dbecb6Smrg cpu=i786 10866df26cacSmrg ;; 108725dbecb6Smrg pc98-*) 108825dbecb6Smrg cpu=i386 10896df26cacSmrg ;; 109025dbecb6Smrg ppc-* | ppcbe-*) 109125dbecb6Smrg cpu=powerpc 10926df26cacSmrg ;; 109325dbecb6Smrg ppcle-* | powerpclittle-*) 109425dbecb6Smrg cpu=powerpcle 10956df26cacSmrg ;; 109625dbecb6Smrg ppc64-*) 109725dbecb6Smrg cpu=powerpc64 10986df26cacSmrg ;; 109925dbecb6Smrg ppc64le-* | powerpc64little-*) 110025dbecb6Smrg cpu=powerpc64le 11016df26cacSmrg ;; 110225dbecb6Smrg sb1-*) 110325dbecb6Smrg cpu=mipsisa64sb1 11046df26cacSmrg ;; 110525dbecb6Smrg sb1el-*) 110625dbecb6Smrg cpu=mipsisa64sb1el 11076df26cacSmrg ;; 110825dbecb6Smrg sh5e[lb]-*) 110925dbecb6Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 11106df26cacSmrg ;; 111125dbecb6Smrg spur-*) 111225dbecb6Smrg cpu=spur 11136df26cacSmrg ;; 111425dbecb6Smrg strongarm-* | thumb-*) 111525dbecb6Smrg cpu=arm 11166df26cacSmrg ;; 111725dbecb6Smrg tx39-*) 111825dbecb6Smrg cpu=mipstx39 11196df26cacSmrg ;; 112025dbecb6Smrg tx39el-*) 112125dbecb6Smrg cpu=mipstx39el 11226df26cacSmrg ;; 112325dbecb6Smrg x64-*) 112425dbecb6Smrg cpu=x86_64 11256df26cacSmrg ;; 112625dbecb6Smrg xscale-* | xscalee[bl]-*) 112725dbecb6Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 11286df26cacSmrg ;; 112925dbecb6Smrg arm64-* | aarch64le-*) 113025dbecb6Smrg cpu=aarch64 11316df26cacSmrg ;; 113225dbecb6Smrg 113325dbecb6Smrg # Recognize the canonical CPU Types that limit and/or modify the 113425dbecb6Smrg # company names they are paired with. 113525dbecb6Smrg cr16-*) 113625dbecb6Smrg basic_os=${basic_os:-elf} 11376df26cacSmrg ;; 113825dbecb6Smrg crisv32-* | etraxfs*-*) 113925dbecb6Smrg cpu=crisv32 114025dbecb6Smrg vendor=axis 11416df26cacSmrg ;; 114225dbecb6Smrg cris-* | etrax*-*) 114325dbecb6Smrg cpu=cris 114425dbecb6Smrg vendor=axis 11456df26cacSmrg ;; 114625dbecb6Smrg crx-*) 114725dbecb6Smrg basic_os=${basic_os:-elf} 11486df26cacSmrg ;; 114925dbecb6Smrg neo-tandem) 115025dbecb6Smrg cpu=neo 115125dbecb6Smrg vendor=tandem 11526df26cacSmrg ;; 115325dbecb6Smrg nse-tandem) 115425dbecb6Smrg cpu=nse 115525dbecb6Smrg vendor=tandem 11566df26cacSmrg ;; 115725dbecb6Smrg nsr-tandem) 115825dbecb6Smrg cpu=nsr 115925dbecb6Smrg vendor=tandem 11606df26cacSmrg ;; 116125dbecb6Smrg nsv-tandem) 116225dbecb6Smrg cpu=nsv 116325dbecb6Smrg vendor=tandem 11646df26cacSmrg ;; 116525dbecb6Smrg nsx-tandem) 116625dbecb6Smrg cpu=nsx 116725dbecb6Smrg vendor=tandem 11686df26cacSmrg ;; 116925dbecb6Smrg mipsallegrexel-sony) 117025dbecb6Smrg cpu=mipsallegrexel 117125dbecb6Smrg vendor=sony 11726df26cacSmrg ;; 117325dbecb6Smrg tile*-*) 117425dbecb6Smrg basic_os=${basic_os:-linux-gnu} 11756df26cacSmrg ;; 117625dbecb6Smrg 11776df26cacSmrg *) 117825dbecb6Smrg # Recognize the canonical CPU types that are allowed with any 117925dbecb6Smrg # company name. 118025dbecb6Smrg case $cpu in 118125dbecb6Smrg 1750a | 580 \ 118225dbecb6Smrg | a29k \ 118325dbecb6Smrg | aarch64 | aarch64_be \ 118425dbecb6Smrg | abacus \ 118525dbecb6Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 118625dbecb6Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 118725dbecb6Smrg | alphapca5[67] | alpha64pca5[67] \ 118825dbecb6Smrg | am33_2.0 \ 118925dbecb6Smrg | amdgcn \ 119025dbecb6Smrg | arc | arceb | arc32 | arc64 \ 119125dbecb6Smrg | arm | arm[lb]e | arme[lb] | armv* \ 119225dbecb6Smrg | avr | avr32 \ 119325dbecb6Smrg | asmjs \ 119425dbecb6Smrg | ba \ 119525dbecb6Smrg | be32 | be64 \ 119625dbecb6Smrg | bfin | bpf | bs2000 \ 119725dbecb6Smrg | c[123]* | c30 | [cjt]90 | c4x \ 119825dbecb6Smrg | c8051 | clipper | craynv | csky | cydra \ 119925dbecb6Smrg | d10v | d30v | dlx | dsp16xx \ 120025dbecb6Smrg | e2k | elxsi | epiphany \ 120125dbecb6Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 120225dbecb6Smrg | h8300 | h8500 \ 120325dbecb6Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 120425dbecb6Smrg | hexagon \ 120525dbecb6Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 120625dbecb6Smrg | ip2k | iq2000 \ 120725dbecb6Smrg | k1om \ 120825dbecb6Smrg | le32 | le64 \ 120925dbecb6Smrg | lm32 \ 121025dbecb6Smrg | loongarch32 | loongarch64 | loongarchx32 \ 121125dbecb6Smrg | m32c | m32r | m32rle \ 121225dbecb6Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 121325dbecb6Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 121425dbecb6Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 121525dbecb6Smrg | microblaze | microblazeel \ 121625dbecb6Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 121725dbecb6Smrg | mips16 \ 121825dbecb6Smrg | mips64 | mips64eb | mips64el \ 121925dbecb6Smrg | mips64octeon | mips64octeonel \ 122025dbecb6Smrg | mips64orion | mips64orionel \ 122125dbecb6Smrg | mips64r5900 | mips64r5900el \ 122225dbecb6Smrg | mips64vr | mips64vrel \ 122325dbecb6Smrg | mips64vr4100 | mips64vr4100el \ 122425dbecb6Smrg | mips64vr4300 | mips64vr4300el \ 122525dbecb6Smrg | mips64vr5000 | mips64vr5000el \ 122625dbecb6Smrg | mips64vr5900 | mips64vr5900el \ 122725dbecb6Smrg | mipsisa32 | mipsisa32el \ 122825dbecb6Smrg | mipsisa32r2 | mipsisa32r2el \ 122925dbecb6Smrg | mipsisa32r3 | mipsisa32r3el \ 123025dbecb6Smrg | mipsisa32r5 | mipsisa32r5el \ 123125dbecb6Smrg | mipsisa32r6 | mipsisa32r6el \ 123225dbecb6Smrg | mipsisa64 | mipsisa64el \ 123325dbecb6Smrg | mipsisa64r2 | mipsisa64r2el \ 123425dbecb6Smrg | mipsisa64r3 | mipsisa64r3el \ 123525dbecb6Smrg | mipsisa64r5 | mipsisa64r5el \ 123625dbecb6Smrg | mipsisa64r6 | mipsisa64r6el \ 123725dbecb6Smrg | mipsisa64sb1 | mipsisa64sb1el \ 123825dbecb6Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 123925dbecb6Smrg | mipsr5900 | mipsr5900el \ 124025dbecb6Smrg | mipstx39 | mipstx39el \ 124125dbecb6Smrg | mmix \ 124225dbecb6Smrg | mn10200 | mn10300 \ 124325dbecb6Smrg | moxie \ 124425dbecb6Smrg | mt \ 124525dbecb6Smrg | msp430 \ 124625dbecb6Smrg | nds32 | nds32le | nds32be \ 124725dbecb6Smrg | nfp \ 124825dbecb6Smrg | nios | nios2 | nios2eb | nios2el \ 124925dbecb6Smrg | none | np1 | ns16k | ns32k | nvptx \ 125025dbecb6Smrg | open8 \ 125125dbecb6Smrg | or1k* \ 125225dbecb6Smrg | or32 \ 125325dbecb6Smrg | orion \ 125425dbecb6Smrg | picochip \ 125525dbecb6Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 125625dbecb6Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 125725dbecb6Smrg | pru \ 125825dbecb6Smrg | pyramid \ 125925dbecb6Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 126025dbecb6Smrg | rl78 | romp | rs6000 | rx \ 126125dbecb6Smrg | s390 | s390x \ 126225dbecb6Smrg | score \ 126325dbecb6Smrg | sh | shl \ 126425dbecb6Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 126525dbecb6Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 126625dbecb6Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 126725dbecb6Smrg | sparclite \ 126825dbecb6Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 126925dbecb6Smrg | spu \ 127025dbecb6Smrg | tahoe \ 127125dbecb6Smrg | thumbv7* \ 127225dbecb6Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 127325dbecb6Smrg | tron \ 127425dbecb6Smrg | ubicom32 \ 127525dbecb6Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 127625dbecb6Smrg | vax \ 127725dbecb6Smrg | visium \ 127825dbecb6Smrg | w65 \ 127925dbecb6Smrg | wasm32 | wasm64 \ 128025dbecb6Smrg | we32k \ 128125dbecb6Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 128225dbecb6Smrg | xstormy16 | xtensa* \ 128325dbecb6Smrg | ymp \ 128425dbecb6Smrg | z8k | z80) 128525dbecb6Smrg ;; 128625dbecb6Smrg 128725dbecb6Smrg *) 128825dbecb6Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 128925dbecb6Smrg exit 1 129025dbecb6Smrg ;; 129125dbecb6Smrg esac 12926df26cacSmrg ;; 12936df26cacSmrgesac 12946df26cacSmrg 12956df26cacSmrg# Here we canonicalize certain aliases for manufacturers. 129625dbecb6Smrgcase $vendor in 129725dbecb6Smrg digital*) 129825dbecb6Smrg vendor=dec 12996df26cacSmrg ;; 130025dbecb6Smrg commodore*) 130125dbecb6Smrg vendor=cbm 13026df26cacSmrg ;; 13036df26cacSmrg *) 13046df26cacSmrg ;; 13056df26cacSmrgesac 13066df26cacSmrg 13076df26cacSmrg# Decode manufacturer-specific aliases for certain operating systems. 13086df26cacSmrg 130925dbecb6Smrgif test x$basic_os != x 13106df26cacSmrgthen 131125dbecb6Smrg 131225dbecb6Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 131325dbecb6Smrg# set os. 131425dbecb6Smrgcase $basic_os in 131525dbecb6Smrg gnu/linux*) 131625dbecb6Smrg kernel=linux 131725dbecb6Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 131825dbecb6Smrg ;; 131925dbecb6Smrg os2-emx) 132025dbecb6Smrg kernel=os2 132125dbecb6Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 132225dbecb6Smrg ;; 132325dbecb6Smrg nto-qnx*) 132425dbecb6Smrg kernel=nto 132525dbecb6Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 132625dbecb6Smrg ;; 132725dbecb6Smrg *-*) 132825dbecb6Smrg # shellcheck disable=SC2162 132925dbecb6Smrg saved_IFS=$IFS 133025dbecb6Smrg IFS="-" read kernel os <<EOF 133125dbecb6Smrg$basic_os 133225dbecb6SmrgEOF 133325dbecb6Smrg IFS=$saved_IFS 133425dbecb6Smrg ;; 133525dbecb6Smrg # Default OS when just kernel was specified 133625dbecb6Smrg nto*) 133725dbecb6Smrg kernel=nto 133825dbecb6Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 133925dbecb6Smrg ;; 134025dbecb6Smrg linux*) 134125dbecb6Smrg kernel=linux 134225dbecb6Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 134325dbecb6Smrg ;; 134425dbecb6Smrg *) 134525dbecb6Smrg kernel= 134625dbecb6Smrg os=$basic_os 134725dbecb6Smrg ;; 134825dbecb6Smrgesac 134925dbecb6Smrg 135025dbecb6Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 135125dbecb6Smrg# etc.) 13526df26cacSmrgcase $os in 135325dbecb6Smrg # First match some system type aliases that might get confused 135425dbecb6Smrg # with valid system types. 135525dbecb6Smrg # solaris* is a basic system type, with this one exception. 135625dbecb6Smrg auroraux) 135725dbecb6Smrg os=auroraux 13586df26cacSmrg ;; 135925dbecb6Smrg bluegene*) 136025dbecb6Smrg os=cnk 13616df26cacSmrg ;; 136225dbecb6Smrg solaris1 | solaris1.*) 136325dbecb6Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 13646df26cacSmrg ;; 136525dbecb6Smrg solaris) 136625dbecb6Smrg os=solaris2 13676df26cacSmrg ;; 136825dbecb6Smrg unixware*) 136925dbecb6Smrg os=sysv4.2uw 13706df26cacSmrg ;; 137125dbecb6Smrg # es1800 is here to avoid being matched by es* (a different OS) 137225dbecb6Smrg es1800*) 137325dbecb6Smrg os=ose 13746df26cacSmrg ;; 137525dbecb6Smrg # Some version numbers need modification 137625dbecb6Smrg chorusos*) 137725dbecb6Smrg os=chorusos 13786df26cacSmrg ;; 137925dbecb6Smrg isc) 138025dbecb6Smrg os=isc2.2 13816df26cacSmrg ;; 138225dbecb6Smrg sco6) 138325dbecb6Smrg os=sco5v6 13846df26cacSmrg ;; 138525dbecb6Smrg sco5) 138625dbecb6Smrg os=sco3.2v5 13876df26cacSmrg ;; 138825dbecb6Smrg sco4) 138925dbecb6Smrg os=sco3.2v4 13906df26cacSmrg ;; 139125dbecb6Smrg sco3.2.[4-9]*) 139225dbecb6Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 13936df26cacSmrg ;; 139425dbecb6Smrg sco*v* | scout) 139525dbecb6Smrg # Don't match below 13966df26cacSmrg ;; 139725dbecb6Smrg sco*) 139825dbecb6Smrg os=sco3.2v2 13996df26cacSmrg ;; 140025dbecb6Smrg psos*) 140125dbecb6Smrg os=psos 14026df26cacSmrg ;; 140325dbecb6Smrg qnx*) 140425dbecb6Smrg os=qnx 14056df26cacSmrg ;; 140625dbecb6Smrg hiux*) 140725dbecb6Smrg os=hiuxwe2 14086df26cacSmrg ;; 140925dbecb6Smrg lynx*178) 141025dbecb6Smrg os=lynxos178 14116df26cacSmrg ;; 141225dbecb6Smrg lynx*5) 141325dbecb6Smrg os=lynxos5 14146df26cacSmrg ;; 141525dbecb6Smrg lynxos*) 141625dbecb6Smrg # don't get caught up in next wildcard 14176df26cacSmrg ;; 141825dbecb6Smrg lynx*) 141925dbecb6Smrg os=lynxos 14206df26cacSmrg ;; 142125dbecb6Smrg mac[0-9]*) 142225dbecb6Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 14236df26cacSmrg ;; 142425dbecb6Smrg opened*) 142525dbecb6Smrg os=openedition 14266df26cacSmrg ;; 142725dbecb6Smrg os400*) 142825dbecb6Smrg os=os400 14296df26cacSmrg ;; 143025dbecb6Smrg sunos5*) 143125dbecb6Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 14326df26cacSmrg ;; 143325dbecb6Smrg sunos6*) 143425dbecb6Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 14356df26cacSmrg ;; 143625dbecb6Smrg wince*) 143725dbecb6Smrg os=wince 14386df26cacSmrg ;; 143925dbecb6Smrg utek*) 144025dbecb6Smrg os=bsd 14416df26cacSmrg ;; 144225dbecb6Smrg dynix*) 144325dbecb6Smrg os=bsd 14446df26cacSmrg ;; 144525dbecb6Smrg acis*) 144625dbecb6Smrg os=aos 144725dbecb6Smrg ;; 144825dbecb6Smrg atheos*) 144925dbecb6Smrg os=atheos 14506df26cacSmrg ;; 145125dbecb6Smrg syllable*) 145225dbecb6Smrg os=syllable 14536df26cacSmrg ;; 145425dbecb6Smrg 386bsd) 145525dbecb6Smrg os=bsd 14566df26cacSmrg ;; 145725dbecb6Smrg ctix* | uts*) 145825dbecb6Smrg os=sysv 14596df26cacSmrg ;; 146025dbecb6Smrg nova*) 146125dbecb6Smrg os=rtmk-nova 14626df26cacSmrg ;; 146325dbecb6Smrg ns2) 146425dbecb6Smrg os=nextstep2 14656df26cacSmrg ;; 146625dbecb6Smrg # Preserve the version number of sinix5. 146725dbecb6Smrg sinix5.*) 146825dbecb6Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 14696df26cacSmrg ;; 147025dbecb6Smrg sinix*) 147125dbecb6Smrg os=sysv4 14726df26cacSmrg ;; 147325dbecb6Smrg tpf*) 147425dbecb6Smrg os=tpf 14756df26cacSmrg ;; 147625dbecb6Smrg triton*) 147725dbecb6Smrg os=sysv3 14786df26cacSmrg ;; 147925dbecb6Smrg oss*) 148025dbecb6Smrg os=sysv3 14816df26cacSmrg ;; 148225dbecb6Smrg svr4*) 148325dbecb6Smrg os=sysv4 14846df26cacSmrg ;; 148525dbecb6Smrg svr3) 148625dbecb6Smrg os=sysv3 14876df26cacSmrg ;; 148825dbecb6Smrg sysvr4) 148925dbecb6Smrg os=sysv4 14906df26cacSmrg ;; 149125dbecb6Smrg ose*) 149225dbecb6Smrg os=ose 14936df26cacSmrg ;; 149425dbecb6Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 149525dbecb6Smrg os=mint 14966df26cacSmrg ;; 149725dbecb6Smrg dicos*) 149825dbecb6Smrg os=dicos 149925dbecb6Smrg ;; 150025dbecb6Smrg pikeos*) 150125dbecb6Smrg # Until real need of OS specific support for 150225dbecb6Smrg # particular features comes up, bare metal 150325dbecb6Smrg # configurations are quite functional. 150425dbecb6Smrg case $cpu in 150525dbecb6Smrg arm*) 150625dbecb6Smrg os=eabi 150725dbecb6Smrg ;; 150825dbecb6Smrg *) 150925dbecb6Smrg os=elf 151025dbecb6Smrg ;; 151125dbecb6Smrg esac 15126df26cacSmrg ;; 15136df26cacSmrg *) 151425dbecb6Smrg # No normalization, but not necessarily accepted, that comes below. 15156df26cacSmrg ;; 15166df26cacSmrgesac 151725dbecb6Smrg 15186df26cacSmrgelse 15196df26cacSmrg 15206df26cacSmrg# Here we handle the default operating systems that come with various machines. 15216df26cacSmrg# The value should be what the vendor currently ships out the door with their 15226df26cacSmrg# machine or put another way, the most popular os provided with the machine. 15236df26cacSmrg 15246df26cacSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 15256df26cacSmrg# "-sun"), then you have to tell the case statement up towards the top 15266df26cacSmrg# that MANUFACTURER isn't an operating system. Otherwise, code above 15276df26cacSmrg# will signal an error saying that MANUFACTURER isn't an operating 15286df26cacSmrg# system, and we'll never get to this point. 15296df26cacSmrg 153025dbecb6Smrgkernel= 153125dbecb6Smrgcase $cpu-$vendor in 153225dbecb6Smrg score-*) 153325dbecb6Smrg os=elf 15346df26cacSmrg ;; 153525dbecb6Smrg spu-*) 153625dbecb6Smrg os=elf 15376df26cacSmrg ;; 15386df26cacSmrg *-acorn) 153925dbecb6Smrg os=riscix1.2 15406df26cacSmrg ;; 15416df26cacSmrg arm*-rebel) 154225dbecb6Smrg kernel=linux 154325dbecb6Smrg os=gnu 15446df26cacSmrg ;; 15456df26cacSmrg arm*-semi) 154625dbecb6Smrg os=aout 154725dbecb6Smrg ;; 154825dbecb6Smrg c4x-* | tic4x-*) 154925dbecb6Smrg os=coff 15506df26cacSmrg ;; 155125dbecb6Smrg c8051-*) 155225dbecb6Smrg os=elf 155325dbecb6Smrg ;; 155425dbecb6Smrg clipper-intergraph) 155525dbecb6Smrg os=clix 155625dbecb6Smrg ;; 155725dbecb6Smrg hexagon-*) 155825dbecb6Smrg os=elf 155925dbecb6Smrg ;; 156025dbecb6Smrg tic54x-*) 156125dbecb6Smrg os=coff 156225dbecb6Smrg ;; 156325dbecb6Smrg tic55x-*) 156425dbecb6Smrg os=coff 156525dbecb6Smrg ;; 156625dbecb6Smrg tic6x-*) 156725dbecb6Smrg os=coff 15686df26cacSmrg ;; 15696df26cacSmrg # This must come before the *-dec entry. 15706df26cacSmrg pdp10-*) 157125dbecb6Smrg os=tops20 15726df26cacSmrg ;; 15736df26cacSmrg pdp11-*) 157425dbecb6Smrg os=none 15756df26cacSmrg ;; 15766df26cacSmrg *-dec | vax-*) 157725dbecb6Smrg os=ultrix4.2 15786df26cacSmrg ;; 15796df26cacSmrg m68*-apollo) 158025dbecb6Smrg os=domain 15816df26cacSmrg ;; 15826df26cacSmrg i386-sun) 158325dbecb6Smrg os=sunos4.0.2 15846df26cacSmrg ;; 15856df26cacSmrg m68000-sun) 158625dbecb6Smrg os=sunos3 15876df26cacSmrg ;; 15886df26cacSmrg m68*-cisco) 158925dbecb6Smrg os=aout 15906df26cacSmrg ;; 159125dbecb6Smrg mep-*) 159225dbecb6Smrg os=elf 159316fd1166Smrg ;; 15946df26cacSmrg mips*-cisco) 159525dbecb6Smrg os=elf 15966df26cacSmrg ;; 15976df26cacSmrg mips*-*) 159825dbecb6Smrg os=elf 15996df26cacSmrg ;; 16006df26cacSmrg or32-*) 160125dbecb6Smrg os=coff 16026df26cacSmrg ;; 16036df26cacSmrg *-tti) # must be before sparc entry or we get the wrong os. 160425dbecb6Smrg os=sysv3 16056df26cacSmrg ;; 16066df26cacSmrg sparc-* | *-sun) 160725dbecb6Smrg os=sunos4.1.1 16086df26cacSmrg ;; 160925dbecb6Smrg pru-*) 161025dbecb6Smrg os=elf 16116df26cacSmrg ;; 161225dbecb6Smrg *-be) 161325dbecb6Smrg os=beos 16146df26cacSmrg ;; 16156df26cacSmrg *-ibm) 161625dbecb6Smrg os=aix 16176df26cacSmrg ;; 161825dbecb6Smrg *-knuth) 161925dbecb6Smrg os=mmixware 16206df26cacSmrg ;; 16216df26cacSmrg *-wec) 162225dbecb6Smrg os=proelf 16236df26cacSmrg ;; 16246df26cacSmrg *-winbond) 162525dbecb6Smrg os=proelf 16266df26cacSmrg ;; 16276df26cacSmrg *-oki) 162825dbecb6Smrg os=proelf 16296df26cacSmrg ;; 16306df26cacSmrg *-hp) 163125dbecb6Smrg os=hpux 16326df26cacSmrg ;; 16336df26cacSmrg *-hitachi) 163425dbecb6Smrg os=hiux 16356df26cacSmrg ;; 16366df26cacSmrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 163725dbecb6Smrg os=sysv 16386df26cacSmrg ;; 16396df26cacSmrg *-cbm) 164025dbecb6Smrg os=amigaos 16416df26cacSmrg ;; 16426df26cacSmrg *-dg) 164325dbecb6Smrg os=dgux 16446df26cacSmrg ;; 16456df26cacSmrg *-dolphin) 164625dbecb6Smrg os=sysv3 16476df26cacSmrg ;; 16486df26cacSmrg m68k-ccur) 164925dbecb6Smrg os=rtu 16506df26cacSmrg ;; 16516df26cacSmrg m88k-omron*) 165225dbecb6Smrg os=luna 16536df26cacSmrg ;; 165425dbecb6Smrg *-next) 165525dbecb6Smrg os=nextstep 16566df26cacSmrg ;; 16576df26cacSmrg *-sequent) 165825dbecb6Smrg os=ptx 16596df26cacSmrg ;; 16606df26cacSmrg *-crds) 166125dbecb6Smrg os=unos 16626df26cacSmrg ;; 16636df26cacSmrg *-ns) 166425dbecb6Smrg os=genix 16656df26cacSmrg ;; 16666df26cacSmrg i370-*) 166725dbecb6Smrg os=mvs 16686df26cacSmrg ;; 16696df26cacSmrg *-gould) 167025dbecb6Smrg os=sysv 16716df26cacSmrg ;; 16726df26cacSmrg *-highlevel) 167325dbecb6Smrg os=bsd 16746df26cacSmrg ;; 16756df26cacSmrg *-encore) 167625dbecb6Smrg os=bsd 16776df26cacSmrg ;; 16786df26cacSmrg *-sgi) 167925dbecb6Smrg os=irix 16806df26cacSmrg ;; 16816df26cacSmrg *-siemens) 168225dbecb6Smrg os=sysv4 16836df26cacSmrg ;; 16846df26cacSmrg *-masscomp) 168525dbecb6Smrg os=rtu 16866df26cacSmrg ;; 16876df26cacSmrg f30[01]-fujitsu | f700-fujitsu) 168825dbecb6Smrg os=uxpv 16896df26cacSmrg ;; 16906df26cacSmrg *-rom68k) 169125dbecb6Smrg os=coff 16926df26cacSmrg ;; 16936df26cacSmrg *-*bug) 169425dbecb6Smrg os=coff 16956df26cacSmrg ;; 16966df26cacSmrg *-apple) 169725dbecb6Smrg os=macos 16986df26cacSmrg ;; 16996df26cacSmrg *-atari*) 170025dbecb6Smrg os=mint 170125dbecb6Smrg ;; 170225dbecb6Smrg *-wrs) 170325dbecb6Smrg os=vxworks 17046df26cacSmrg ;; 17056df26cacSmrg *) 170625dbecb6Smrg os=none 17076df26cacSmrg ;; 17086df26cacSmrgesac 170925dbecb6Smrg 17106df26cacSmrgfi 17116df26cacSmrg 171225dbecb6Smrg# Now, validate our (potentially fixed-up) OS. 171325dbecb6Smrgcase $os in 171425dbecb6Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 171525dbecb6Smrg musl* | newlib* | relibc* | uclibc*) 171625dbecb6Smrg ;; 171725dbecb6Smrg # Likewise for "kernel-abi" 171825dbecb6Smrg eabi* | gnueabi*) 171925dbecb6Smrg ;; 172025dbecb6Smrg # VxWorks passes extra cpu info in the 4th filed. 172125dbecb6Smrg simlinux | simwindows | spe) 172225dbecb6Smrg ;; 172325dbecb6Smrg # Now accept the basic system types. 172425dbecb6Smrg # The portable systems comes first. 172525dbecb6Smrg # Each alternative MUST end in a * to match a version number. 172625dbecb6Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 172725dbecb6Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 172825dbecb6Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 172925dbecb6Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 173025dbecb6Smrg | hiux* | abug | nacl* | netware* | windows* \ 173125dbecb6Smrg | os9* | macos* | osx* | ios* \ 173225dbecb6Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 173325dbecb6Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 173425dbecb6Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 173525dbecb6Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 173625dbecb6Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 173725dbecb6Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 173825dbecb6Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 173925dbecb6Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 174025dbecb6Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 174125dbecb6Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 174225dbecb6Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 174325dbecb6Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 174425dbecb6Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 174525dbecb6Smrg | midipix* | mingw32* | mingw64* | mint* \ 174625dbecb6Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 174725dbecb6Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 174825dbecb6Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 174925dbecb6Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 175025dbecb6Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 175125dbecb6Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 175225dbecb6Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 175325dbecb6Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 175425dbecb6Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 175525dbecb6Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 175625dbecb6Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 175725dbecb6Smrg | fiwix* ) 175825dbecb6Smrg ;; 175925dbecb6Smrg # This one is extra strict with allowed versions 176025dbecb6Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 176125dbecb6Smrg # Don't forget version if it is 3.2v4 or newer. 176225dbecb6Smrg ;; 176325dbecb6Smrg none) 176425dbecb6Smrg ;; 176525dbecb6Smrg *) 176625dbecb6Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 176725dbecb6Smrg exit 1 176825dbecb6Smrg ;; 176925dbecb6Smrgesac 177025dbecb6Smrg 177125dbecb6Smrg# As a final step for OS-related things, validate the OS-kernel combination 177225dbecb6Smrg# (given a valid OS), if there is a kernel. 177325dbecb6Smrgcase $kernel-$os in 177425dbecb6Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 177525dbecb6Smrg | linux-musl* | linux-relibc* | linux-uclibc* ) 177625dbecb6Smrg ;; 177725dbecb6Smrg uclinux-uclibc* ) 177825dbecb6Smrg ;; 177925dbecb6Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 178025dbecb6Smrg # These are just libc implementations, not actual OSes, and thus 178125dbecb6Smrg # require a kernel. 178225dbecb6Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 178325dbecb6Smrg exit 1 178425dbecb6Smrg ;; 178525dbecb6Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 178625dbecb6Smrg ;; 178725dbecb6Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 178825dbecb6Smrg ;; 178925dbecb6Smrg nto-qnx*) 179025dbecb6Smrg ;; 179125dbecb6Smrg os2-emx) 179225dbecb6Smrg ;; 179325dbecb6Smrg *-eabi* | *-gnueabi*) 179425dbecb6Smrg ;; 179525dbecb6Smrg -*) 179625dbecb6Smrg # Blank kernel with real OS is always fine. 179725dbecb6Smrg ;; 179825dbecb6Smrg *-*) 179925dbecb6Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 180025dbecb6Smrg exit 1 180125dbecb6Smrg ;; 180225dbecb6Smrgesac 180325dbecb6Smrg 18046df26cacSmrg# Here we handle the case where we know the os, and the CPU type, but not the 18056df26cacSmrg# manufacturer. We pick the logical manufacturer. 180625dbecb6Smrgcase $vendor in 180725dbecb6Smrg unknown) 180825dbecb6Smrg case $cpu-$os in 180925dbecb6Smrg *-riscix*) 18106df26cacSmrg vendor=acorn 18116df26cacSmrg ;; 181225dbecb6Smrg *-sunos*) 18136df26cacSmrg vendor=sun 18146df26cacSmrg ;; 181525dbecb6Smrg *-cnk* | *-aix*) 18166df26cacSmrg vendor=ibm 18176df26cacSmrg ;; 181825dbecb6Smrg *-beos*) 18196df26cacSmrg vendor=be 18206df26cacSmrg ;; 182125dbecb6Smrg *-hpux*) 18226df26cacSmrg vendor=hp 18236df26cacSmrg ;; 182425dbecb6Smrg *-mpeix*) 18256df26cacSmrg vendor=hp 18266df26cacSmrg ;; 182725dbecb6Smrg *-hiux*) 18286df26cacSmrg vendor=hitachi 18296df26cacSmrg ;; 183025dbecb6Smrg *-unos*) 18316df26cacSmrg vendor=crds 18326df26cacSmrg ;; 183325dbecb6Smrg *-dgux*) 18346df26cacSmrg vendor=dg 18356df26cacSmrg ;; 183625dbecb6Smrg *-luna*) 18376df26cacSmrg vendor=omron 18386df26cacSmrg ;; 183925dbecb6Smrg *-genix*) 18406df26cacSmrg vendor=ns 18416df26cacSmrg ;; 184225dbecb6Smrg *-clix*) 184325dbecb6Smrg vendor=intergraph 184425dbecb6Smrg ;; 184525dbecb6Smrg *-mvs* | *-opened*) 184625dbecb6Smrg vendor=ibm 184725dbecb6Smrg ;; 184825dbecb6Smrg *-os400*) 18496df26cacSmrg vendor=ibm 18506df26cacSmrg ;; 185125dbecb6Smrg s390-* | s390x-*) 18526df26cacSmrg vendor=ibm 18536df26cacSmrg ;; 185425dbecb6Smrg *-ptx*) 18556df26cacSmrg vendor=sequent 18566df26cacSmrg ;; 185725dbecb6Smrg *-tpf*) 18586df26cacSmrg vendor=ibm 18596df26cacSmrg ;; 186025dbecb6Smrg *-vxsim* | *-vxworks* | *-windiss*) 18616df26cacSmrg vendor=wrs 18626df26cacSmrg ;; 186325dbecb6Smrg *-aux*) 18646df26cacSmrg vendor=apple 18656df26cacSmrg ;; 186625dbecb6Smrg *-hms*) 18676df26cacSmrg vendor=hitachi 18686df26cacSmrg ;; 186925dbecb6Smrg *-mpw* | *-macos*) 18706df26cacSmrg vendor=apple 18716df26cacSmrg ;; 187225dbecb6Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 18736df26cacSmrg vendor=atari 18746df26cacSmrg ;; 187525dbecb6Smrg *-vos*) 18766df26cacSmrg vendor=stratus 18776df26cacSmrg ;; 18786df26cacSmrg esac 18796df26cacSmrg ;; 18806df26cacSmrgesac 18816df26cacSmrg 188225dbecb6Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 18836df26cacSmrgexit 18846df26cacSmrg 18856df26cacSmrg# Local variables: 188625dbecb6Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 18876df26cacSmrg# time-stamp-start: "timestamp='" 18886df26cacSmrg# time-stamp-format: "%:y-%02m-%02d" 18896df26cacSmrg# time-stamp-end: "'" 18906df26cacSmrg# End: 1891