config.sub revision 84febdac
1c76ae52dSmrg#! /bin/sh 2c76ae52dSmrg# Configuration validation subroutine script. 384febdacSmrg# Copyright 1992-2021 Free Software Foundation, Inc. 4c76ae52dSmrg 584febdacSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 684febdacSmrg 784febdacSmrgtimestamp='2021-07-03' 8c76ae52dSmrg 9dff01e5aSmrg# This file is free software; you can redistribute it and/or modify it 10dff01e5aSmrg# under the terms of the GNU General Public License as published by 11dff01e5aSmrg# the Free Software Foundation; either version 3 of the License, or 12c76ae52dSmrg# (at your option) any later version. 13c76ae52dSmrg# 14dff01e5aSmrg# This program is distributed in the hope that it will be useful, but 15dff01e5aSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16dff01e5aSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17dff01e5aSmrg# General Public License for more details. 18c76ae52dSmrg# 19c76ae52dSmrg# You should have received a copy of the GNU General Public License 208292847cSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 21c76ae52dSmrg# 22c76ae52dSmrg# As a special exception to the GNU General Public License, if you 23c76ae52dSmrg# distribute this file as part of a program that contains a 24c76ae52dSmrg# configuration script generated by Autoconf, you may include it under 25dff01e5aSmrg# the same distribution terms that you use for the rest of that 26dff01e5aSmrg# program. This Exception is an additional permission under section 7 27dff01e5aSmrg# of the GNU General Public License, version 3 ("GPLv3"). 28c76ae52dSmrg 29c76ae52dSmrg 308292847cSmrg# Please send patches to <config-patches@gnu.org>. 31c76ae52dSmrg# 32c76ae52dSmrg# Configuration subroutine to validate and canonicalize a configuration type. 33c76ae52dSmrg# Supply the specified configuration type as an argument. 34c76ae52dSmrg# If it is invalid, we print an error message on stderr and exit with code 1. 35c76ae52dSmrg# Otherwise, we print the canonical config type on stdout and succeed. 36c76ae52dSmrg 37c2939121Smrg# You can get the latest version of this script from: 3884febdacSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39c2939121Smrg 40c76ae52dSmrg# This file is supposed to be the same for all GNU packages 41c76ae52dSmrg# and recognize all the CPU types, system types and aliases 42c76ae52dSmrg# that are meaningful with *any* GNU software. 43c76ae52dSmrg# Each package is responsible for reporting which valid configurations 44c76ae52dSmrg# it does not support. The user should be able to distinguish 45c76ae52dSmrg# a failure to support a valid configuration from a meaningless 46c76ae52dSmrg# configuration. 47c76ae52dSmrg 48c76ae52dSmrg# The goal of this file is to map all the various variations of a given 49c76ae52dSmrg# machine specification into a single specification in the form: 50c76ae52dSmrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51c76ae52dSmrg# or in some cases, the newer four-part form: 52c76ae52dSmrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53c76ae52dSmrg# It is wrong to echo any other type of specification. 54c76ae52dSmrg 5584febdacSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 5684febdacSmrg# about features and limitations of the classic Bourne shell that were 5784febdacSmrg# superseded or lifted in POSIX. However, this script identifies a wide 5884febdacSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 5984febdacSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 6084febdacSmrg# have a pre-POSIX /bin/sh. 6184febdacSmrg 62c76ae52dSmrgme=`echo "$0" | sed -e 's,.*/,,'` 63c76ae52dSmrg 64c76ae52dSmrgusage="\ 658292847cSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66c76ae52dSmrg 67c76ae52dSmrgCanonicalize a configuration name. 68c76ae52dSmrg 698292847cSmrgOptions: 70c76ae52dSmrg -h, --help print this help, then exit 71c76ae52dSmrg -t, --time-stamp print date of last modification, then exit 72c76ae52dSmrg -v, --version print version number, then exit 73c76ae52dSmrg 74c76ae52dSmrgReport bugs and patches to <config-patches@gnu.org>." 75c76ae52dSmrg 76c76ae52dSmrgversion="\ 77c76ae52dSmrgGNU config.sub ($timestamp) 78c76ae52dSmrg 7984febdacSmrgCopyright 1992-2021 Free Software Foundation, Inc. 80c76ae52dSmrg 81c76ae52dSmrgThis is free software; see the source for copying conditions. There is NO 82c76ae52dSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83c76ae52dSmrg 84c76ae52dSmrghelp=" 85c76ae52dSmrgTry \`$me --help' for more information." 86c76ae52dSmrg 87c76ae52dSmrg# Parse command line 88c76ae52dSmrgwhile test $# -gt 0 ; do 89c76ae52dSmrg case $1 in 90c76ae52dSmrg --time-stamp | --time* | -t ) 91c76ae52dSmrg echo "$timestamp" ; exit ;; 92c76ae52dSmrg --version | -v ) 93c76ae52dSmrg echo "$version" ; exit ;; 94c76ae52dSmrg --help | --h* | -h ) 95c76ae52dSmrg echo "$usage"; exit ;; 96c76ae52dSmrg -- ) # Stop option processing 97c76ae52dSmrg shift; break ;; 98c76ae52dSmrg - ) # Use stdin as input. 99c76ae52dSmrg break ;; 100c76ae52dSmrg -* ) 10184febdacSmrg echo "$me: invalid option $1$help" >&2 102c76ae52dSmrg exit 1 ;; 103c76ae52dSmrg 104c76ae52dSmrg *local*) 105c76ae52dSmrg # First pass through any local machine types. 1068292847cSmrg echo "$1" 107c76ae52dSmrg exit ;; 108c76ae52dSmrg 109c76ae52dSmrg * ) 110c76ae52dSmrg break ;; 111c76ae52dSmrg esac 112c76ae52dSmrgdone 113c76ae52dSmrg 114c76ae52dSmrgcase $# in 115c76ae52dSmrg 0) echo "$me: missing argument$help" >&2 116c76ae52dSmrg exit 1;; 117c76ae52dSmrg 1) ;; 118c76ae52dSmrg *) echo "$me: too many arguments$help" >&2 119c76ae52dSmrg exit 1;; 120c76ae52dSmrgesac 121c76ae52dSmrg 12284febdacSmrg# Split fields of configuration type 12384febdacSmrg# shellcheck disable=SC2162 12484febdacSmrgIFS="-" read field1 field2 field3 field4 <<EOF 12584febdacSmrg$1 12684febdacSmrgEOF 127c76ae52dSmrg 12884febdacSmrg# Separate into logical components for further validation 12984febdacSmrgcase $1 in 13084febdacSmrg *-*-*-*-*) 13184febdacSmrg echo Invalid configuration \`"$1"\': more than four components >&2 13284febdacSmrg exit 1 133dff01e5aSmrg ;; 13484febdacSmrg *-*-*-*) 13584febdacSmrg basic_machine=$field1-$field2 13684febdacSmrg basic_os=$field3-$field4 137c76ae52dSmrg ;; 13884febdacSmrg *-*-*) 13984febdacSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 14084febdacSmrg # parts 14184febdacSmrg maybe_os=$field2-$field3 14284febdacSmrg case $maybe_os in 14384febdacSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 14484febdacSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 14584febdacSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 14684febdacSmrg | storm-chaos* | os2-emx* | rtmk-nova*) 14784febdacSmrg basic_machine=$field1 14884febdacSmrg basic_os=$maybe_os 14984febdacSmrg ;; 15084febdacSmrg android-linux) 15184febdacSmrg basic_machine=$field1-unknown 15284febdacSmrg basic_os=linux-android 15384febdacSmrg ;; 15484febdacSmrg *) 15584febdacSmrg basic_machine=$field1-$field2 15684febdacSmrg basic_os=$field3 15784febdacSmrg ;; 15884febdacSmrg esac 159c76ae52dSmrg ;; 16084febdacSmrg *-*) 16184febdacSmrg # A lone config we happen to match not fitting any pattern 16284febdacSmrg case $field1-$field2 in 16384febdacSmrg decstation-3100) 16484febdacSmrg basic_machine=mips-dec 16584febdacSmrg basic_os= 16684febdacSmrg ;; 16784febdacSmrg *-*) 16884febdacSmrg # Second component is usually, but not always the OS 16984febdacSmrg case $field2 in 17084febdacSmrg # Prevent following clause from handling this valid os 17184febdacSmrg sun*os*) 17284febdacSmrg basic_machine=$field1 17384febdacSmrg basic_os=$field2 17484febdacSmrg ;; 17584febdacSmrg # Manufacturers 17684febdacSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 17784febdacSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 17884febdacSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 17984febdacSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 18084febdacSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 18184febdacSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 18284febdacSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 18384febdacSmrg | microblaze* | sim | cisco \ 18484febdacSmrg | oki | wec | wrs | winbond) 18584febdacSmrg basic_machine=$field1-$field2 18684febdacSmrg basic_os= 18784febdacSmrg ;; 18884febdacSmrg *) 18984febdacSmrg basic_machine=$field1 19084febdacSmrg basic_os=$field2 19184febdacSmrg ;; 19284febdacSmrg esac 19384febdacSmrg ;; 19484febdacSmrg esac 195c76ae52dSmrg ;; 19684febdacSmrg *) 19784febdacSmrg # Convert single-component short-hands not valid as part of 19884febdacSmrg # multi-component configurations. 19984febdacSmrg case $field1 in 20084febdacSmrg 386bsd) 20184febdacSmrg basic_machine=i386-pc 20284febdacSmrg basic_os=bsd 20384febdacSmrg ;; 20484febdacSmrg a29khif) 20584febdacSmrg basic_machine=a29k-amd 20684febdacSmrg basic_os=udi 20784febdacSmrg ;; 20884febdacSmrg adobe68k) 20984febdacSmrg basic_machine=m68010-adobe 21084febdacSmrg basic_os=scout 21184febdacSmrg ;; 21284febdacSmrg alliant) 21384febdacSmrg basic_machine=fx80-alliant 21484febdacSmrg basic_os= 21584febdacSmrg ;; 21684febdacSmrg altos | altos3068) 21784febdacSmrg basic_machine=m68k-altos 21884febdacSmrg basic_os= 21984febdacSmrg ;; 22084febdacSmrg am29k) 22184febdacSmrg basic_machine=a29k-none 22284febdacSmrg basic_os=bsd 22384febdacSmrg ;; 22484febdacSmrg amdahl) 22584febdacSmrg basic_machine=580-amdahl 22684febdacSmrg basic_os=sysv 22784febdacSmrg ;; 22884febdacSmrg amiga) 22984febdacSmrg basic_machine=m68k-unknown 23084febdacSmrg basic_os= 23184febdacSmrg ;; 23284febdacSmrg amigaos | amigados) 23384febdacSmrg basic_machine=m68k-unknown 23484febdacSmrg basic_os=amigaos 23584febdacSmrg ;; 23684febdacSmrg amigaunix | amix) 23784febdacSmrg basic_machine=m68k-unknown 23884febdacSmrg basic_os=sysv4 23984febdacSmrg ;; 24084febdacSmrg apollo68) 24184febdacSmrg basic_machine=m68k-apollo 24284febdacSmrg basic_os=sysv 24384febdacSmrg ;; 24484febdacSmrg apollo68bsd) 24584febdacSmrg basic_machine=m68k-apollo 24684febdacSmrg basic_os=bsd 24784febdacSmrg ;; 24884febdacSmrg aros) 24984febdacSmrg basic_machine=i386-pc 25084febdacSmrg basic_os=aros 25184febdacSmrg ;; 25284febdacSmrg aux) 25384febdacSmrg basic_machine=m68k-apple 25484febdacSmrg basic_os=aux 25584febdacSmrg ;; 25684febdacSmrg balance) 25784febdacSmrg basic_machine=ns32k-sequent 25884febdacSmrg basic_os=dynix 25984febdacSmrg ;; 26084febdacSmrg blackfin) 26184febdacSmrg basic_machine=bfin-unknown 26284febdacSmrg basic_os=linux 26384febdacSmrg ;; 26484febdacSmrg cegcc) 26584febdacSmrg basic_machine=arm-unknown 26684febdacSmrg basic_os=cegcc 26784febdacSmrg ;; 26884febdacSmrg convex-c1) 26984febdacSmrg basic_machine=c1-convex 27084febdacSmrg basic_os=bsd 27184febdacSmrg ;; 27284febdacSmrg convex-c2) 27384febdacSmrg basic_machine=c2-convex 27484febdacSmrg basic_os=bsd 27584febdacSmrg ;; 27684febdacSmrg convex-c32) 27784febdacSmrg basic_machine=c32-convex 27884febdacSmrg basic_os=bsd 27984febdacSmrg ;; 28084febdacSmrg convex-c34) 28184febdacSmrg basic_machine=c34-convex 28284febdacSmrg basic_os=bsd 28384febdacSmrg ;; 28484febdacSmrg convex-c38) 28584febdacSmrg basic_machine=c38-convex 28684febdacSmrg basic_os=bsd 28784febdacSmrg ;; 28884febdacSmrg cray) 28984febdacSmrg basic_machine=j90-cray 29084febdacSmrg basic_os=unicos 29184febdacSmrg ;; 29284febdacSmrg crds | unos) 29384febdacSmrg basic_machine=m68k-crds 29484febdacSmrg basic_os= 29584febdacSmrg ;; 29684febdacSmrg da30) 29784febdacSmrg basic_machine=m68k-da30 29884febdacSmrg basic_os= 29984febdacSmrg ;; 30084febdacSmrg decstation | pmax | pmin | dec3100 | decstatn) 30184febdacSmrg basic_machine=mips-dec 30284febdacSmrg basic_os= 30384febdacSmrg ;; 30484febdacSmrg delta88) 30584febdacSmrg basic_machine=m88k-motorola 30684febdacSmrg basic_os=sysv3 30784febdacSmrg ;; 30884febdacSmrg dicos) 30984febdacSmrg basic_machine=i686-pc 31084febdacSmrg basic_os=dicos 31184febdacSmrg ;; 31284febdacSmrg djgpp) 31384febdacSmrg basic_machine=i586-pc 31484febdacSmrg basic_os=msdosdjgpp 31584febdacSmrg ;; 31684febdacSmrg ebmon29k) 31784febdacSmrg basic_machine=a29k-amd 31884febdacSmrg basic_os=ebmon 31984febdacSmrg ;; 32084febdacSmrg es1800 | OSE68k | ose68k | ose | OSE) 32184febdacSmrg basic_machine=m68k-ericsson 32284febdacSmrg basic_os=ose 32384febdacSmrg ;; 32484febdacSmrg gmicro) 32584febdacSmrg basic_machine=tron-gmicro 32684febdacSmrg basic_os=sysv 32784febdacSmrg ;; 32884febdacSmrg go32) 32984febdacSmrg basic_machine=i386-pc 33084febdacSmrg basic_os=go32 33184febdacSmrg ;; 33284febdacSmrg h8300hms) 33384febdacSmrg basic_machine=h8300-hitachi 33484febdacSmrg basic_os=hms 33584febdacSmrg ;; 33684febdacSmrg h8300xray) 33784febdacSmrg basic_machine=h8300-hitachi 33884febdacSmrg basic_os=xray 33984febdacSmrg ;; 34084febdacSmrg h8500hms) 34184febdacSmrg basic_machine=h8500-hitachi 34284febdacSmrg basic_os=hms 34384febdacSmrg ;; 34484febdacSmrg harris) 34584febdacSmrg basic_machine=m88k-harris 34684febdacSmrg basic_os=sysv3 34784febdacSmrg ;; 34884febdacSmrg hp300 | hp300hpux) 34984febdacSmrg basic_machine=m68k-hp 35084febdacSmrg basic_os=hpux 35184febdacSmrg ;; 35284febdacSmrg hp300bsd) 35384febdacSmrg basic_machine=m68k-hp 35484febdacSmrg basic_os=bsd 35584febdacSmrg ;; 35684febdacSmrg hppaosf) 35784febdacSmrg basic_machine=hppa1.1-hp 35884febdacSmrg basic_os=osf 35984febdacSmrg ;; 36084febdacSmrg hppro) 36184febdacSmrg basic_machine=hppa1.1-hp 36284febdacSmrg basic_os=proelf 36384febdacSmrg ;; 36484febdacSmrg i386mach) 36584febdacSmrg basic_machine=i386-mach 36684febdacSmrg basic_os=mach 36784febdacSmrg ;; 36884febdacSmrg isi68 | isi) 36984febdacSmrg basic_machine=m68k-isi 37084febdacSmrg basic_os=sysv 37184febdacSmrg ;; 37284febdacSmrg m68knommu) 37384febdacSmrg basic_machine=m68k-unknown 37484febdacSmrg basic_os=linux 37584febdacSmrg ;; 37684febdacSmrg magnum | m3230) 37784febdacSmrg basic_machine=mips-mips 37884febdacSmrg basic_os=sysv 37984febdacSmrg ;; 38084febdacSmrg merlin) 38184febdacSmrg basic_machine=ns32k-utek 38284febdacSmrg basic_os=sysv 38384febdacSmrg ;; 38484febdacSmrg mingw64) 38584febdacSmrg basic_machine=x86_64-pc 38684febdacSmrg basic_os=mingw64 38784febdacSmrg ;; 38884febdacSmrg mingw32) 38984febdacSmrg basic_machine=i686-pc 39084febdacSmrg basic_os=mingw32 39184febdacSmrg ;; 39284febdacSmrg mingw32ce) 39384febdacSmrg basic_machine=arm-unknown 39484febdacSmrg basic_os=mingw32ce 39584febdacSmrg ;; 39684febdacSmrg monitor) 39784febdacSmrg basic_machine=m68k-rom68k 39884febdacSmrg basic_os=coff 39984febdacSmrg ;; 40084febdacSmrg morphos) 40184febdacSmrg basic_machine=powerpc-unknown 40284febdacSmrg basic_os=morphos 40384febdacSmrg ;; 40484febdacSmrg moxiebox) 40584febdacSmrg basic_machine=moxie-unknown 40684febdacSmrg basic_os=moxiebox 40784febdacSmrg ;; 40884febdacSmrg msdos) 40984febdacSmrg basic_machine=i386-pc 41084febdacSmrg basic_os=msdos 41184febdacSmrg ;; 41284febdacSmrg msys) 41384febdacSmrg basic_machine=i686-pc 41484febdacSmrg basic_os=msys 41584febdacSmrg ;; 41684febdacSmrg mvs) 41784febdacSmrg basic_machine=i370-ibm 41884febdacSmrg basic_os=mvs 41984febdacSmrg ;; 42084febdacSmrg nacl) 42184febdacSmrg basic_machine=le32-unknown 42284febdacSmrg basic_os=nacl 42384febdacSmrg ;; 42484febdacSmrg ncr3000) 42584febdacSmrg basic_machine=i486-ncr 42684febdacSmrg basic_os=sysv4 42784febdacSmrg ;; 42884febdacSmrg netbsd386) 42984febdacSmrg basic_machine=i386-pc 43084febdacSmrg basic_os=netbsd 43184febdacSmrg ;; 43284febdacSmrg netwinder) 43384febdacSmrg basic_machine=armv4l-rebel 43484febdacSmrg basic_os=linux 43584febdacSmrg ;; 43684febdacSmrg news | news700 | news800 | news900) 43784febdacSmrg basic_machine=m68k-sony 43884febdacSmrg basic_os=newsos 43984febdacSmrg ;; 44084febdacSmrg news1000) 44184febdacSmrg basic_machine=m68030-sony 44284febdacSmrg basic_os=newsos 44384febdacSmrg ;; 44484febdacSmrg necv70) 44584febdacSmrg basic_machine=v70-nec 44684febdacSmrg basic_os=sysv 44784febdacSmrg ;; 44884febdacSmrg nh3000) 44984febdacSmrg basic_machine=m68k-harris 45084febdacSmrg basic_os=cxux 45184febdacSmrg ;; 45284febdacSmrg nh[45]000) 45384febdacSmrg basic_machine=m88k-harris 45484febdacSmrg basic_os=cxux 45584febdacSmrg ;; 45684febdacSmrg nindy960) 45784febdacSmrg basic_machine=i960-intel 45884febdacSmrg basic_os=nindy 45984febdacSmrg ;; 46084febdacSmrg mon960) 46184febdacSmrg basic_machine=i960-intel 46284febdacSmrg basic_os=mon960 46384febdacSmrg ;; 46484febdacSmrg nonstopux) 46584febdacSmrg basic_machine=mips-compaq 46684febdacSmrg basic_os=nonstopux 46784febdacSmrg ;; 46884febdacSmrg os400) 46984febdacSmrg basic_machine=powerpc-ibm 47084febdacSmrg basic_os=os400 47184febdacSmrg ;; 47284febdacSmrg OSE68000 | ose68000) 47384febdacSmrg basic_machine=m68000-ericsson 47484febdacSmrg basic_os=ose 47584febdacSmrg ;; 47684febdacSmrg os68k) 47784febdacSmrg basic_machine=m68k-none 47884febdacSmrg basic_os=os68k 47984febdacSmrg ;; 48084febdacSmrg paragon) 48184febdacSmrg basic_machine=i860-intel 48284febdacSmrg basic_os=osf 48384febdacSmrg ;; 48484febdacSmrg parisc) 48584febdacSmrg basic_machine=hppa-unknown 48684febdacSmrg basic_os=linux 48784febdacSmrg ;; 48884febdacSmrg psp) 48984febdacSmrg basic_machine=mipsallegrexel-sony 49084febdacSmrg basic_os=psp 49184febdacSmrg ;; 49284febdacSmrg pw32) 49384febdacSmrg basic_machine=i586-unknown 49484febdacSmrg basic_os=pw32 49584febdacSmrg ;; 49684febdacSmrg rdos | rdos64) 49784febdacSmrg basic_machine=x86_64-pc 49884febdacSmrg basic_os=rdos 49984febdacSmrg ;; 50084febdacSmrg rdos32) 50184febdacSmrg basic_machine=i386-pc 50284febdacSmrg basic_os=rdos 50384febdacSmrg ;; 50484febdacSmrg rom68k) 50584febdacSmrg basic_machine=m68k-rom68k 50684febdacSmrg basic_os=coff 50784febdacSmrg ;; 50884febdacSmrg sa29200) 50984febdacSmrg basic_machine=a29k-amd 51084febdacSmrg basic_os=udi 51184febdacSmrg ;; 51284febdacSmrg sei) 51384febdacSmrg basic_machine=mips-sei 51484febdacSmrg basic_os=seiux 51584febdacSmrg ;; 51684febdacSmrg sequent) 51784febdacSmrg basic_machine=i386-sequent 51884febdacSmrg basic_os= 51984febdacSmrg ;; 52084febdacSmrg sps7) 52184febdacSmrg basic_machine=m68k-bull 52284febdacSmrg basic_os=sysv2 52384febdacSmrg ;; 52484febdacSmrg st2000) 52584febdacSmrg basic_machine=m68k-tandem 52684febdacSmrg basic_os= 52784febdacSmrg ;; 52884febdacSmrg stratus) 52984febdacSmrg basic_machine=i860-stratus 53084febdacSmrg basic_os=sysv4 53184febdacSmrg ;; 53284febdacSmrg sun2) 53384febdacSmrg basic_machine=m68000-sun 53484febdacSmrg basic_os= 53584febdacSmrg ;; 53684febdacSmrg sun2os3) 53784febdacSmrg basic_machine=m68000-sun 53884febdacSmrg basic_os=sunos3 53984febdacSmrg ;; 54084febdacSmrg sun2os4) 54184febdacSmrg basic_machine=m68000-sun 54284febdacSmrg basic_os=sunos4 54384febdacSmrg ;; 54484febdacSmrg sun3) 54584febdacSmrg basic_machine=m68k-sun 54684febdacSmrg basic_os= 54784febdacSmrg ;; 54884febdacSmrg sun3os3) 54984febdacSmrg basic_machine=m68k-sun 55084febdacSmrg basic_os=sunos3 55184febdacSmrg ;; 55284febdacSmrg sun3os4) 55384febdacSmrg basic_machine=m68k-sun 55484febdacSmrg basic_os=sunos4 55584febdacSmrg ;; 55684febdacSmrg sun4) 55784febdacSmrg basic_machine=sparc-sun 55884febdacSmrg basic_os= 55984febdacSmrg ;; 56084febdacSmrg sun4os3) 56184febdacSmrg basic_machine=sparc-sun 56284febdacSmrg basic_os=sunos3 56384febdacSmrg ;; 56484febdacSmrg sun4os4) 56584febdacSmrg basic_machine=sparc-sun 56684febdacSmrg basic_os=sunos4 56784febdacSmrg ;; 56884febdacSmrg sun4sol2) 56984febdacSmrg basic_machine=sparc-sun 57084febdacSmrg basic_os=solaris2 57184febdacSmrg ;; 57284febdacSmrg sun386 | sun386i | roadrunner) 57384febdacSmrg basic_machine=i386-sun 57484febdacSmrg basic_os= 57584febdacSmrg ;; 57684febdacSmrg sv1) 57784febdacSmrg basic_machine=sv1-cray 57884febdacSmrg basic_os=unicos 57984febdacSmrg ;; 58084febdacSmrg symmetry) 58184febdacSmrg basic_machine=i386-sequent 58284febdacSmrg basic_os=dynix 58384febdacSmrg ;; 58484febdacSmrg t3e) 58584febdacSmrg basic_machine=alphaev5-cray 58684febdacSmrg basic_os=unicos 58784febdacSmrg ;; 58884febdacSmrg t90) 58984febdacSmrg basic_machine=t90-cray 59084febdacSmrg basic_os=unicos 59184febdacSmrg ;; 59284febdacSmrg toad1) 59384febdacSmrg basic_machine=pdp10-xkl 59484febdacSmrg basic_os=tops20 59584febdacSmrg ;; 59684febdacSmrg tpf) 59784febdacSmrg basic_machine=s390x-ibm 59884febdacSmrg basic_os=tpf 59984febdacSmrg ;; 60084febdacSmrg udi29k) 60184febdacSmrg basic_machine=a29k-amd 60284febdacSmrg basic_os=udi 60384febdacSmrg ;; 60484febdacSmrg ultra3) 60584febdacSmrg basic_machine=a29k-nyu 60684febdacSmrg basic_os=sym1 60784febdacSmrg ;; 60884febdacSmrg v810 | necv810) 60984febdacSmrg basic_machine=v810-nec 61084febdacSmrg basic_os=none 61184febdacSmrg ;; 61284febdacSmrg vaxv) 61384febdacSmrg basic_machine=vax-dec 61484febdacSmrg basic_os=sysv 61584febdacSmrg ;; 61684febdacSmrg vms) 61784febdacSmrg basic_machine=vax-dec 61884febdacSmrg basic_os=vms 61984febdacSmrg ;; 62084febdacSmrg vsta) 62184febdacSmrg basic_machine=i386-pc 62284febdacSmrg basic_os=vsta 62384febdacSmrg ;; 62484febdacSmrg vxworks960) 62584febdacSmrg basic_machine=i960-wrs 62684febdacSmrg basic_os=vxworks 62784febdacSmrg ;; 62884febdacSmrg vxworks68) 62984febdacSmrg basic_machine=m68k-wrs 63084febdacSmrg basic_os=vxworks 63184febdacSmrg ;; 63284febdacSmrg vxworks29k) 63384febdacSmrg basic_machine=a29k-wrs 63484febdacSmrg basic_os=vxworks 63584febdacSmrg ;; 63684febdacSmrg xbox) 63784febdacSmrg basic_machine=i686-pc 63884febdacSmrg basic_os=mingw32 63984febdacSmrg ;; 64084febdacSmrg ymp) 64184febdacSmrg basic_machine=ymp-cray 64284febdacSmrg basic_os=unicos 64384febdacSmrg ;; 64484febdacSmrg *) 64584febdacSmrg basic_machine=$1 64684febdacSmrg basic_os= 64784febdacSmrg ;; 64884febdacSmrg esac 649c76ae52dSmrg ;; 650c76ae52dSmrgesac 651c76ae52dSmrg 65284febdacSmrg# Decode 1-component or ad-hoc basic machines 653c76ae52dSmrgcase $basic_machine in 65484febdacSmrg # Here we handle the default manufacturer of certain CPU types. It is in 65584febdacSmrg # some cases the only manufacturer, in others, it is the most popular. 65684febdacSmrg w89k) 65784febdacSmrg cpu=hppa1.1 65884febdacSmrg vendor=winbond 6598292847cSmrg ;; 66084febdacSmrg op50n) 66184febdacSmrg cpu=hppa1.1 66284febdacSmrg vendor=oki 663c76ae52dSmrg ;; 66484febdacSmrg op60c) 66584febdacSmrg cpu=hppa1.1 66684febdacSmrg vendor=oki 667c76ae52dSmrg ;; 66884febdacSmrg ibm*) 66984febdacSmrg cpu=i370 67084febdacSmrg vendor=ibm 671c76ae52dSmrg ;; 67284febdacSmrg orion105) 67384febdacSmrg cpu=clipper 67484febdacSmrg vendor=highlevel 675dff01e5aSmrg ;; 67684febdacSmrg mac | mpw | mac-mpw) 67784febdacSmrg cpu=m68k 67884febdacSmrg vendor=apple 6792836776bSmrg ;; 68084febdacSmrg pmac | pmac-mpw) 68184febdacSmrg cpu=powerpc 68284febdacSmrg vendor=apple 6832836776bSmrg ;; 6842836776bSmrg 685c76ae52dSmrg # Recognize the various machine names and aliases which stand 686c76ae52dSmrg # for a CPU type and a company and sometimes even an OS. 687c76ae52dSmrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 68884febdacSmrg cpu=m68000 68984febdacSmrg vendor=att 690c76ae52dSmrg ;; 691c76ae52dSmrg 3b*) 69284febdacSmrg cpu=we32k 69384febdacSmrg vendor=att 6940d590c07Smrg ;; 695c2939121Smrg bluegene*) 69684febdacSmrg cpu=powerpc 69784febdacSmrg vendor=ibm 69884febdacSmrg basic_os=cnk 699c76ae52dSmrg ;; 700c76ae52dSmrg decsystem10* | dec10*) 70184febdacSmrg cpu=pdp10 70284febdacSmrg vendor=dec 70384febdacSmrg basic_os=tops10 704c76ae52dSmrg ;; 705c76ae52dSmrg decsystem20* | dec20*) 70684febdacSmrg cpu=pdp10 70784febdacSmrg vendor=dec 70884febdacSmrg basic_os=tops20 709c76ae52dSmrg ;; 710c76ae52dSmrg delta | 3300 | motorola-3300 | motorola-delta \ 711c76ae52dSmrg | 3300-motorola | delta-motorola) 71284febdacSmrg cpu=m68k 71384febdacSmrg vendor=motorola 714c76ae52dSmrg ;; 7158292847cSmrg dpx2*) 71684febdacSmrg cpu=m68k 71784febdacSmrg vendor=bull 71884febdacSmrg basic_os=sysv3 719c76ae52dSmrg ;; 720c76ae52dSmrg encore | umax | mmax) 72184febdacSmrg cpu=ns32k 72284febdacSmrg vendor=encore 723c76ae52dSmrg ;; 72484febdacSmrg elxsi) 72584febdacSmrg cpu=elxsi 72684febdacSmrg vendor=elxsi 72784febdacSmrg basic_os=${basic_os:-bsd} 728c76ae52dSmrg ;; 729c76ae52dSmrg fx2800) 73084febdacSmrg cpu=i860 73184febdacSmrg vendor=alliant 732c76ae52dSmrg ;; 733c76ae52dSmrg genix) 73484febdacSmrg cpu=ns32k 73584febdacSmrg vendor=ns 736c76ae52dSmrg ;; 737c76ae52dSmrg h3050r* | hiux*) 73884febdacSmrg cpu=hppa1.1 73984febdacSmrg vendor=hitachi 74084febdacSmrg basic_os=hiuxwe2 741c76ae52dSmrg ;; 742c76ae52dSmrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 74384febdacSmrg cpu=hppa1.0 74484febdacSmrg vendor=hp 745c76ae52dSmrg ;; 746c76ae52dSmrg hp9k2[0-9][0-9] | hp9k31[0-9]) 74784febdacSmrg cpu=m68000 74884febdacSmrg vendor=hp 749c76ae52dSmrg ;; 750c76ae52dSmrg hp9k3[2-9][0-9]) 75184febdacSmrg cpu=m68k 75284febdacSmrg vendor=hp 753c76ae52dSmrg ;; 754c76ae52dSmrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 75584febdacSmrg cpu=hppa1.0 75684febdacSmrg vendor=hp 757c76ae52dSmrg ;; 758c76ae52dSmrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 75984febdacSmrg cpu=hppa1.1 76084febdacSmrg vendor=hp 761c76ae52dSmrg ;; 762c76ae52dSmrg hp9k78[0-9] | hp78[0-9]) 763c76ae52dSmrg # FIXME: really hppa2.0-hp 76484febdacSmrg cpu=hppa1.1 76584febdacSmrg vendor=hp 766c76ae52dSmrg ;; 767c76ae52dSmrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 768c76ae52dSmrg # FIXME: really hppa2.0-hp 76984febdacSmrg cpu=hppa1.1 77084febdacSmrg vendor=hp 771c76ae52dSmrg ;; 772c76ae52dSmrg hp9k8[0-9][13679] | hp8[0-9][13679]) 77384febdacSmrg cpu=hppa1.1 77484febdacSmrg vendor=hp 775c76ae52dSmrg ;; 776c76ae52dSmrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 77784febdacSmrg cpu=hppa1.0 77884febdacSmrg vendor=hp 779c76ae52dSmrg ;; 780c76ae52dSmrg i*86v32) 78184febdacSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 78284febdacSmrg vendor=pc 78384febdacSmrg basic_os=sysv32 784c76ae52dSmrg ;; 785c76ae52dSmrg i*86v4*) 78684febdacSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 78784febdacSmrg vendor=pc 78884febdacSmrg basic_os=sysv4 789c76ae52dSmrg ;; 790c76ae52dSmrg i*86v) 79184febdacSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79284febdacSmrg vendor=pc 79384febdacSmrg basic_os=sysv 794c76ae52dSmrg ;; 795c76ae52dSmrg i*86sol2) 79684febdacSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79784febdacSmrg vendor=pc 79884febdacSmrg basic_os=solaris2 799c76ae52dSmrg ;; 80084febdacSmrg j90 | j90-cray) 80184febdacSmrg cpu=j90 80284febdacSmrg vendor=cray 80384febdacSmrg basic_os=${basic_os:-unicos} 804c76ae52dSmrg ;; 805c76ae52dSmrg iris | iris4d) 80684febdacSmrg cpu=mips 80784febdacSmrg vendor=sgi 80884febdacSmrg case $basic_os in 80984febdacSmrg irix*) 810c76ae52dSmrg ;; 811c76ae52dSmrg *) 81284febdacSmrg basic_os=irix4 813c76ae52dSmrg ;; 814c76ae52dSmrg esac 815c76ae52dSmrg ;; 816c76ae52dSmrg miniframe) 81784febdacSmrg cpu=m68000 81884febdacSmrg vendor=convergent 819c76ae52dSmrg ;; 82084febdacSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 82184febdacSmrg cpu=m68k 82284febdacSmrg vendor=atari 82384febdacSmrg basic_os=mint 824c76ae52dSmrg ;; 825c76ae52dSmrg news-3600 | risc-news) 82684febdacSmrg cpu=mips 82784febdacSmrg vendor=sony 82884febdacSmrg basic_os=newsos 829c76ae52dSmrg ;; 8308292847cSmrg next | m*-next) 83184febdacSmrg cpu=m68k 83284febdacSmrg vendor=next 83384febdacSmrg case $basic_os in 83484febdacSmrg openstep*) 83584febdacSmrg ;; 83684febdacSmrg nextstep*) 837c76ae52dSmrg ;; 83884febdacSmrg ns2*) 83984febdacSmrg basic_os=nextstep2 840c76ae52dSmrg ;; 841c76ae52dSmrg *) 84284febdacSmrg basic_os=nextstep3 843c76ae52dSmrg ;; 844c76ae52dSmrg esac 845c76ae52dSmrg ;; 846c76ae52dSmrg np1) 84784febdacSmrg cpu=np1 84884febdacSmrg vendor=gould 8498292847cSmrg ;; 850c76ae52dSmrg op50n-* | op60c-*) 85184febdacSmrg cpu=hppa1.1 85284febdacSmrg vendor=oki 85384febdacSmrg basic_os=proelf 854c76ae52dSmrg ;; 855c76ae52dSmrg pa-hitachi) 85684febdacSmrg cpu=hppa1.1 85784febdacSmrg vendor=hitachi 85884febdacSmrg basic_os=hiuxwe2 8590d590c07Smrg ;; 860c76ae52dSmrg pbd) 86184febdacSmrg cpu=sparc 86284febdacSmrg vendor=tti 863c76ae52dSmrg ;; 864c76ae52dSmrg pbb) 86584febdacSmrg cpu=m68k 86684febdacSmrg vendor=tti 867c76ae52dSmrg ;; 86884febdacSmrg pc532) 86984febdacSmrg cpu=ns32k 87084febdacSmrg vendor=pc532 871c76ae52dSmrg ;; 872c76ae52dSmrg pn) 87384febdacSmrg cpu=pn 87484febdacSmrg vendor=gould 875c76ae52dSmrg ;; 87684febdacSmrg power) 87784febdacSmrg cpu=power 87884febdacSmrg vendor=ibm 879c76ae52dSmrg ;; 88084febdacSmrg ps2) 88184febdacSmrg cpu=i386 88284febdacSmrg vendor=ibm 883c76ae52dSmrg ;; 88484febdacSmrg rm[46]00) 88584febdacSmrg cpu=mips 88684febdacSmrg vendor=siemens 887c76ae52dSmrg ;; 88884febdacSmrg rtpc | rtpc-*) 88984febdacSmrg cpu=romp 89084febdacSmrg vendor=ibm 891c76ae52dSmrg ;; 89284febdacSmrg sde) 89384febdacSmrg cpu=mipsisa32 89484febdacSmrg vendor=sde 89584febdacSmrg basic_os=${basic_os:-elf} 896c76ae52dSmrg ;; 89784febdacSmrg simso-wrs) 89884febdacSmrg cpu=sparclite 89984febdacSmrg vendor=wrs 90084febdacSmrg basic_os=vxworks 901c76ae52dSmrg ;; 90284febdacSmrg tower | tower-32) 90384febdacSmrg cpu=m68k 90484febdacSmrg vendor=ncr 905c76ae52dSmrg ;; 90684febdacSmrg vpp*|vx|vx-*) 90784febdacSmrg cpu=f301 90884febdacSmrg vendor=fujitsu 909dff01e5aSmrg ;; 91084febdacSmrg w65) 91184febdacSmrg cpu=w65 91284febdacSmrg vendor=wdc 913c76ae52dSmrg ;; 91484febdacSmrg w89k-*) 91584febdacSmrg cpu=hppa1.1 91684febdacSmrg vendor=winbond 91784febdacSmrg basic_os=proelf 918c76ae52dSmrg ;; 91984febdacSmrg none) 92084febdacSmrg cpu=none 92184febdacSmrg vendor=none 922c76ae52dSmrg ;; 92384febdacSmrg leon|leon[3-9]) 92484febdacSmrg cpu=sparc 92584febdacSmrg vendor=$basic_machine 926c76ae52dSmrg ;; 92784febdacSmrg leon-*|leon[3-9]-*) 92884febdacSmrg cpu=sparc 92984febdacSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 930c76ae52dSmrg ;; 93184febdacSmrg 93284febdacSmrg *-*) 93384febdacSmrg # shellcheck disable=SC2162 93484febdacSmrg IFS="-" read cpu vendor <<EOF 93584febdacSmrg$basic_machine 93684febdacSmrgEOF 937c76ae52dSmrg ;; 93884febdacSmrg # We use `pc' rather than `unknown' 93984febdacSmrg # because (1) that's what they normally are, and 94084febdacSmrg # (2) the word "unknown" tends to confuse beginning users. 94184febdacSmrg i*86 | x86_64) 94284febdacSmrg cpu=$basic_machine 94384febdacSmrg vendor=pc 944c76ae52dSmrg ;; 94584febdacSmrg # These rules are duplicated from below for sake of the special case above; 94684febdacSmrg # i.e. things that normalized to x86 arches should also default to "pc" 94784febdacSmrg pc98) 94884febdacSmrg cpu=i386 94984febdacSmrg vendor=pc 950c76ae52dSmrg ;; 95184febdacSmrg x64 | amd64) 95284febdacSmrg cpu=x86_64 95384febdacSmrg vendor=pc 954c76ae52dSmrg ;; 95584febdacSmrg # Recognize the basic CPU types without company name. 95684febdacSmrg *) 95784febdacSmrg cpu=$basic_machine 95884febdacSmrg vendor=unknown 9590d590c07Smrg ;; 96084febdacSmrgesac 96184febdacSmrg 96284febdacSmrgunset -v basic_machine 96384febdacSmrg 96484febdacSmrg# Decode basic machines in the full and proper CPU-Company form. 96584febdacSmrgcase $cpu-$vendor in 96684febdacSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 96784febdacSmrg # some cases the only manufacturer, in others, it is the most popular. 96884febdacSmrg craynv-unknown) 96984febdacSmrg vendor=cray 97084febdacSmrg basic_os=${basic_os:-unicosmp} 971c76ae52dSmrg ;; 97284febdacSmrg c90-unknown | c90-cray) 97384febdacSmrg vendor=cray 97484febdacSmrg basic_os=${Basic_os:-unicos} 975c76ae52dSmrg ;; 97684febdacSmrg fx80-unknown) 97784febdacSmrg vendor=alliant 9780d590c07Smrg ;; 97984febdacSmrg romp-unknown) 98084febdacSmrg vendor=ibm 981c76ae52dSmrg ;; 98284febdacSmrg mmix-unknown) 98384febdacSmrg vendor=knuth 984c76ae52dSmrg ;; 98584febdacSmrg microblaze-unknown | microblazeel-unknown) 98684febdacSmrg vendor=xilinx 987c76ae52dSmrg ;; 98884febdacSmrg rs6000-unknown) 98984febdacSmrg vendor=ibm 990c76ae52dSmrg ;; 99184febdacSmrg vax-unknown) 99284febdacSmrg vendor=dec 993c76ae52dSmrg ;; 99484febdacSmrg pdp11-unknown) 99584febdacSmrg vendor=dec 9962836776bSmrg ;; 99784febdacSmrg we32k-unknown) 99884febdacSmrg vendor=att 999c76ae52dSmrg ;; 100084febdacSmrg cydra-unknown) 100184febdacSmrg vendor=cydrome 1002c76ae52dSmrg ;; 100384febdacSmrg i370-ibm*) 100484febdacSmrg vendor=ibm 1005c76ae52dSmrg ;; 100684febdacSmrg orion-unknown) 100784febdacSmrg vendor=highlevel 1008c76ae52dSmrg ;; 100984febdacSmrg xps-unknown | xps100-unknown) 101084febdacSmrg cpu=xps100 101184febdacSmrg vendor=honeywell 1012c76ae52dSmrg ;; 101384febdacSmrg 101484febdacSmrg # Here we normalize CPU types with a missing or matching vendor 101584febdacSmrg dpx20-unknown | dpx20-bull) 101684febdacSmrg cpu=rs6000 101784febdacSmrg vendor=bull 101884febdacSmrg basic_os=${basic_os:-bosx} 1019c76ae52dSmrg ;; 102084febdacSmrg 102184febdacSmrg # Here we normalize CPU types irrespective of the vendor 102284febdacSmrg amd64-*) 102384febdacSmrg cpu=x86_64 1024c76ae52dSmrg ;; 102584febdacSmrg blackfin-*) 102684febdacSmrg cpu=bfin 102784febdacSmrg basic_os=linux 1028c76ae52dSmrg ;; 102984febdacSmrg c54x-*) 103084febdacSmrg cpu=tic54x 1031c76ae52dSmrg ;; 103284febdacSmrg c55x-*) 103384febdacSmrg cpu=tic55x 1034c76ae52dSmrg ;; 103584febdacSmrg c6x-*) 103684febdacSmrg cpu=tic6x 1037c76ae52dSmrg ;; 103884febdacSmrg e500v[12]-*) 103984febdacSmrg cpu=powerpc 104084febdacSmrg basic_os=${basic_os}"spe" 1041c76ae52dSmrg ;; 104284febdacSmrg mips3*-*) 104384febdacSmrg cpu=mips64 1044c76ae52dSmrg ;; 104584febdacSmrg ms1-*) 104684febdacSmrg cpu=mt 1047c76ae52dSmrg ;; 104884febdacSmrg m68knommu-*) 104984febdacSmrg cpu=m68k 105084febdacSmrg basic_os=linux 1051c76ae52dSmrg ;; 105284febdacSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 105384febdacSmrg cpu=s12z 10540d590c07Smrg ;; 105584febdacSmrg openrisc-*) 105684febdacSmrg cpu=or32 1057c76ae52dSmrg ;; 105884febdacSmrg parisc-*) 105984febdacSmrg cpu=hppa 106084febdacSmrg basic_os=linux 1061c76ae52dSmrg ;; 106284febdacSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 106384febdacSmrg cpu=i586 1064c76ae52dSmrg ;; 106584febdacSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 106684febdacSmrg cpu=i686 1067c76ae52dSmrg ;; 106884febdacSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 106984febdacSmrg cpu=i686 1070c76ae52dSmrg ;; 107184febdacSmrg pentium4-*) 107284febdacSmrg cpu=i786 1073c76ae52dSmrg ;; 107484febdacSmrg pc98-*) 107584febdacSmrg cpu=i386 1076c76ae52dSmrg ;; 107784febdacSmrg ppc-* | ppcbe-*) 107884febdacSmrg cpu=powerpc 1079c76ae52dSmrg ;; 108084febdacSmrg ppcle-* | powerpclittle-*) 108184febdacSmrg cpu=powerpcle 1082c76ae52dSmrg ;; 108384febdacSmrg ppc64-*) 108484febdacSmrg cpu=powerpc64 1085c76ae52dSmrg ;; 108684febdacSmrg ppc64le-* | powerpc64little-*) 108784febdacSmrg cpu=powerpc64le 1088c76ae52dSmrg ;; 108984febdacSmrg sb1-*) 109084febdacSmrg cpu=mipsisa64sb1 1091c76ae52dSmrg ;; 109284febdacSmrg sb1el-*) 109384febdacSmrg cpu=mipsisa64sb1el 1094c76ae52dSmrg ;; 109584febdacSmrg sh5e[lb]-*) 109684febdacSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1097c76ae52dSmrg ;; 109884febdacSmrg spur-*) 109984febdacSmrg cpu=spur 1100c76ae52dSmrg ;; 110184febdacSmrg strongarm-* | thumb-*) 110284febdacSmrg cpu=arm 1103c76ae52dSmrg ;; 110484febdacSmrg tx39-*) 110584febdacSmrg cpu=mipstx39 11068292847cSmrg ;; 110784febdacSmrg tx39el-*) 110884febdacSmrg cpu=mipstx39el 1109c76ae52dSmrg ;; 111084febdacSmrg x64-*) 111184febdacSmrg cpu=x86_64 1112c76ae52dSmrg ;; 11132836776bSmrg xscale-* | xscalee[bl]-*) 111484febdacSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 11152836776bSmrg ;; 111684febdacSmrg arm64-*) 111784febdacSmrg cpu=aarch64 1118c76ae52dSmrg ;; 1119c76ae52dSmrg 112084febdacSmrg # Recognize the canonical CPU Types that limit and/or modify the 112184febdacSmrg # company names they are paired with. 112284febdacSmrg cr16-*) 112384febdacSmrg basic_os=${basic_os:-elf} 1124c76ae52dSmrg ;; 112584febdacSmrg crisv32-* | etraxfs*-*) 112684febdacSmrg cpu=crisv32 112784febdacSmrg vendor=axis 1128c76ae52dSmrg ;; 112984febdacSmrg cris-* | etrax*-*) 113084febdacSmrg cpu=cris 113184febdacSmrg vendor=axis 1132c76ae52dSmrg ;; 113384febdacSmrg crx-*) 113484febdacSmrg basic_os=${basic_os:-elf} 1135c76ae52dSmrg ;; 113684febdacSmrg neo-tandem) 113784febdacSmrg cpu=neo 113884febdacSmrg vendor=tandem 1139c76ae52dSmrg ;; 114084febdacSmrg nse-tandem) 114184febdacSmrg cpu=nse 114284febdacSmrg vendor=tandem 1143c76ae52dSmrg ;; 114484febdacSmrg nsr-tandem) 114584febdacSmrg cpu=nsr 114684febdacSmrg vendor=tandem 1147c76ae52dSmrg ;; 114884febdacSmrg nsv-tandem) 114984febdacSmrg cpu=nsv 115084febdacSmrg vendor=tandem 1151c76ae52dSmrg ;; 115284febdacSmrg nsx-tandem) 115384febdacSmrg cpu=nsx 115484febdacSmrg vendor=tandem 1155c76ae52dSmrg ;; 115684febdacSmrg mipsallegrexel-sony) 115784febdacSmrg cpu=mipsallegrexel 115884febdacSmrg vendor=sony 1159c76ae52dSmrg ;; 116084febdacSmrg tile*-*) 116184febdacSmrg basic_os=${basic_os:-linux-gnu} 1162c76ae52dSmrg ;; 116384febdacSmrg 1164c76ae52dSmrg *) 116584febdacSmrg # Recognize the canonical CPU types that are allowed with any 116684febdacSmrg # company name. 116784febdacSmrg case $cpu in 116884febdacSmrg 1750a | 580 \ 116984febdacSmrg | a29k \ 117084febdacSmrg | aarch64 | aarch64_be \ 117184febdacSmrg | abacus \ 117284febdacSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 117384febdacSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 117484febdacSmrg | alphapca5[67] | alpha64pca5[67] \ 117584febdacSmrg | am33_2.0 \ 117684febdacSmrg | amdgcn \ 117784febdacSmrg | arc | arceb | arc32 | arc64 \ 117884febdacSmrg | arm | arm[lb]e | arme[lb] | armv* \ 117984febdacSmrg | avr | avr32 \ 118084febdacSmrg | asmjs \ 118184febdacSmrg | ba \ 118284febdacSmrg | be32 | be64 \ 118384febdacSmrg | bfin | bpf | bs2000 \ 118484febdacSmrg | c[123]* | c30 | [cjt]90 | c4x \ 118584febdacSmrg | c8051 | clipper | craynv | csky | cydra \ 118684febdacSmrg | d10v | d30v | dlx | dsp16xx \ 118784febdacSmrg | e2k | elxsi | epiphany \ 118884febdacSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 118984febdacSmrg | h8300 | h8500 \ 119084febdacSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 119184febdacSmrg | hexagon \ 119284febdacSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 119384febdacSmrg | ip2k | iq2000 \ 119484febdacSmrg | k1om \ 119584febdacSmrg | le32 | le64 \ 119684febdacSmrg | lm32 \ 119784febdacSmrg | loongarch32 | loongarch64 | loongarchx32 \ 119884febdacSmrg | m32c | m32r | m32rle \ 119984febdacSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 120084febdacSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 120184febdacSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 120284febdacSmrg | microblaze | microblazeel \ 120384febdacSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 120484febdacSmrg | mips16 \ 120584febdacSmrg | mips64 | mips64eb | mips64el \ 120684febdacSmrg | mips64octeon | mips64octeonel \ 120784febdacSmrg | mips64orion | mips64orionel \ 120884febdacSmrg | mips64r5900 | mips64r5900el \ 120984febdacSmrg | mips64vr | mips64vrel \ 121084febdacSmrg | mips64vr4100 | mips64vr4100el \ 121184febdacSmrg | mips64vr4300 | mips64vr4300el \ 121284febdacSmrg | mips64vr5000 | mips64vr5000el \ 121384febdacSmrg | mips64vr5900 | mips64vr5900el \ 121484febdacSmrg | mipsisa32 | mipsisa32el \ 121584febdacSmrg | mipsisa32r2 | mipsisa32r2el \ 121684febdacSmrg | mipsisa32r3 | mipsisa32r3el \ 121784febdacSmrg | mipsisa32r5 | mipsisa32r5el \ 121884febdacSmrg | mipsisa32r6 | mipsisa32r6el \ 121984febdacSmrg | mipsisa64 | mipsisa64el \ 122084febdacSmrg | mipsisa64r2 | mipsisa64r2el \ 122184febdacSmrg | mipsisa64r3 | mipsisa64r3el \ 122284febdacSmrg | mipsisa64r5 | mipsisa64r5el \ 122384febdacSmrg | mipsisa64r6 | mipsisa64r6el \ 122484febdacSmrg | mipsisa64sb1 | mipsisa64sb1el \ 122584febdacSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 122684febdacSmrg | mipsr5900 | mipsr5900el \ 122784febdacSmrg | mipstx39 | mipstx39el \ 122884febdacSmrg | mmix \ 122984febdacSmrg | mn10200 | mn10300 \ 123084febdacSmrg | moxie \ 123184febdacSmrg | mt \ 123284febdacSmrg | msp430 \ 123384febdacSmrg | nds32 | nds32le | nds32be \ 123484febdacSmrg | nfp \ 123584febdacSmrg | nios | nios2 | nios2eb | nios2el \ 123684febdacSmrg | none | np1 | ns16k | ns32k | nvptx \ 123784febdacSmrg | open8 \ 123884febdacSmrg | or1k* \ 123984febdacSmrg | or32 \ 124084febdacSmrg | orion \ 124184febdacSmrg | picochip \ 124284febdacSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 124384febdacSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 124484febdacSmrg | pru \ 124584febdacSmrg | pyramid \ 124684febdacSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 124784febdacSmrg | rl78 | romp | rs6000 | rx \ 124884febdacSmrg | s390 | s390x \ 124984febdacSmrg | score \ 125084febdacSmrg | sh | shl \ 125184febdacSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 125284febdacSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 125384febdacSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 125484febdacSmrg | sparclite \ 125584febdacSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 125684febdacSmrg | spu \ 125784febdacSmrg | tahoe \ 125884febdacSmrg | thumbv7* \ 125984febdacSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 126084febdacSmrg | tron \ 126184febdacSmrg | ubicom32 \ 126284febdacSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 126384febdacSmrg | vax \ 126484febdacSmrg | visium \ 126584febdacSmrg | w65 \ 126684febdacSmrg | wasm32 | wasm64 \ 126784febdacSmrg | we32k \ 126884febdacSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 126984febdacSmrg | xstormy16 | xtensa* \ 127084febdacSmrg | ymp \ 127184febdacSmrg | z8k | z80) 127284febdacSmrg ;; 127384febdacSmrg 127484febdacSmrg *) 127584febdacSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 127684febdacSmrg exit 1 127784febdacSmrg ;; 127884febdacSmrg esac 1279c76ae52dSmrg ;; 1280c76ae52dSmrgesac 1281c76ae52dSmrg 1282c76ae52dSmrg# Here we canonicalize certain aliases for manufacturers. 128384febdacSmrgcase $vendor in 128484febdacSmrg digital*) 128584febdacSmrg vendor=dec 1286c76ae52dSmrg ;; 128784febdacSmrg commodore*) 128884febdacSmrg vendor=cbm 1289c76ae52dSmrg ;; 1290c76ae52dSmrg *) 1291c76ae52dSmrg ;; 1292c76ae52dSmrgesac 1293c76ae52dSmrg 1294c76ae52dSmrg# Decode manufacturer-specific aliases for certain operating systems. 1295c76ae52dSmrg 129684febdacSmrgif test x$basic_os != x 1297c76ae52dSmrgthen 129884febdacSmrg 129984febdacSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 130084febdacSmrg# set os. 130184febdacSmrgcase $basic_os in 130284febdacSmrg gnu/linux*) 130384febdacSmrg kernel=linux 130484febdacSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 130584febdacSmrg ;; 130684febdacSmrg os2-emx) 130784febdacSmrg kernel=os2 130884febdacSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 130984febdacSmrg ;; 131084febdacSmrg nto-qnx*) 131184febdacSmrg kernel=nto 131284febdacSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 131384febdacSmrg ;; 131484febdacSmrg *-*) 131584febdacSmrg # shellcheck disable=SC2162 131684febdacSmrg IFS="-" read kernel os <<EOF 131784febdacSmrg$basic_os 131884febdacSmrgEOF 131984febdacSmrg ;; 132084febdacSmrg # Default OS when just kernel was specified 132184febdacSmrg nto*) 132284febdacSmrg kernel=nto 132384febdacSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 132484febdacSmrg ;; 132584febdacSmrg linux*) 132684febdacSmrg kernel=linux 132784febdacSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 132884febdacSmrg ;; 132984febdacSmrg *) 133084febdacSmrg kernel= 133184febdacSmrg os=$basic_os 133284febdacSmrg ;; 133384febdacSmrgesac 133484febdacSmrg 133584febdacSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 133684febdacSmrg# etc.) 1337c76ae52dSmrgcase $os in 13388292847cSmrg # First match some system type aliases that might get confused 13398292847cSmrg # with valid system types. 134084febdacSmrg # solaris* is a basic system type, with this one exception. 134184febdacSmrg auroraux) 134284febdacSmrg os=auroraux 1343c2939121Smrg ;; 134484febdacSmrg bluegene*) 134584febdacSmrg os=cnk 1346c76ae52dSmrg ;; 134784febdacSmrg solaris1 | solaris1.*) 134884febdacSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1349c76ae52dSmrg ;; 135084febdacSmrg solaris) 135184febdacSmrg os=solaris2 1352c76ae52dSmrg ;; 135384febdacSmrg unixware*) 135484febdacSmrg os=sysv4.2uw 1355c76ae52dSmrg ;; 13568292847cSmrg # es1800 is here to avoid being matched by es* (a different OS) 135784febdacSmrg es1800*) 135884febdacSmrg os=ose 13598292847cSmrg ;; 136084febdacSmrg # Some version numbers need modification 136184febdacSmrg chorusos*) 136284febdacSmrg os=chorusos 1363c76ae52dSmrg ;; 136484febdacSmrg isc) 136584febdacSmrg os=isc2.2 1366c76ae52dSmrg ;; 136784febdacSmrg sco6) 136884febdacSmrg os=sco5v6 1369c76ae52dSmrg ;; 137084febdacSmrg sco5) 137184febdacSmrg os=sco3.2v5 1372c76ae52dSmrg ;; 137384febdacSmrg sco4) 137484febdacSmrg os=sco3.2v4 1375c76ae52dSmrg ;; 137684febdacSmrg sco3.2.[4-9]*) 137784febdacSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1378c76ae52dSmrg ;; 137984febdacSmrg sco*v* | scout) 138084febdacSmrg # Don't match below 1381c76ae52dSmrg ;; 138284febdacSmrg sco*) 138384febdacSmrg os=sco3.2v2 1384c76ae52dSmrg ;; 138584febdacSmrg psos*) 138684febdacSmrg os=psos 1387c76ae52dSmrg ;; 138884febdacSmrg qnx*) 138984febdacSmrg os=qnx 1390c76ae52dSmrg ;; 139184febdacSmrg hiux*) 139284febdacSmrg os=hiuxwe2 1393c76ae52dSmrg ;; 139484febdacSmrg lynx*178) 139584febdacSmrg os=lynxos178 1396c76ae52dSmrg ;; 139784febdacSmrg lynx*5) 139884febdacSmrg os=lynxos5 1399c76ae52dSmrg ;; 140084febdacSmrg lynxos*) 140184febdacSmrg # don't get caught up in next wildcard 1402c76ae52dSmrg ;; 140384febdacSmrg lynx*) 140484febdacSmrg os=lynxos 1405c76ae52dSmrg ;; 140684febdacSmrg mac[0-9]*) 140784febdacSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 1408c76ae52dSmrg ;; 140984febdacSmrg opened*) 141084febdacSmrg os=openedition 1411c76ae52dSmrg ;; 141284febdacSmrg os400*) 141384febdacSmrg os=os400 1414c76ae52dSmrg ;; 141584febdacSmrg sunos5*) 141684febdacSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1417c76ae52dSmrg ;; 141884febdacSmrg sunos6*) 141984febdacSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1420c76ae52dSmrg ;; 142184febdacSmrg wince*) 142284febdacSmrg os=wince 1423c76ae52dSmrg ;; 142484febdacSmrg utek*) 142584febdacSmrg os=bsd 1426c76ae52dSmrg ;; 142784febdacSmrg dynix*) 142884febdacSmrg os=bsd 1429c76ae52dSmrg ;; 143084febdacSmrg acis*) 143184febdacSmrg os=aos 1432c76ae52dSmrg ;; 143384febdacSmrg atheos*) 143484febdacSmrg os=atheos 1435c76ae52dSmrg ;; 143684febdacSmrg syllable*) 143784febdacSmrg os=syllable 1438c76ae52dSmrg ;; 143984febdacSmrg 386bsd) 144084febdacSmrg os=bsd 1441c76ae52dSmrg ;; 144284febdacSmrg ctix* | uts*) 144384febdacSmrg os=sysv 1444c76ae52dSmrg ;; 144584febdacSmrg nova*) 144684febdacSmrg os=rtmk-nova 1447c76ae52dSmrg ;; 144884febdacSmrg ns2) 144984febdacSmrg os=nextstep2 1450c76ae52dSmrg ;; 145184febdacSmrg # Preserve the version number of sinix5. 145284febdacSmrg sinix5.*) 145384febdacSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1454c76ae52dSmrg ;; 145584febdacSmrg sinix*) 145684febdacSmrg os=sysv4 1457c76ae52dSmrg ;; 145884febdacSmrg tpf*) 145984febdacSmrg os=tpf 1460c76ae52dSmrg ;; 146184febdacSmrg triton*) 146284febdacSmrg os=sysv3 1463c76ae52dSmrg ;; 146484febdacSmrg oss*) 146584febdacSmrg os=sysv3 1466c2939121Smrg ;; 146784febdacSmrg svr4*) 146884febdacSmrg os=sysv4 146984febdacSmrg ;; 147084febdacSmrg svr3) 147184febdacSmrg os=sysv3 147284febdacSmrg ;; 147384febdacSmrg sysvr4) 147484febdacSmrg os=sysv4 147584febdacSmrg ;; 147684febdacSmrg ose*) 147784febdacSmrg os=ose 147884febdacSmrg ;; 147984febdacSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 148084febdacSmrg os=mint 148184febdacSmrg ;; 148284febdacSmrg dicos*) 148384febdacSmrg os=dicos 148484febdacSmrg ;; 148584febdacSmrg pikeos*) 14868292847cSmrg # Until real need of OS specific support for 14878292847cSmrg # particular features comes up, bare metal 14888292847cSmrg # configurations are quite functional. 148984febdacSmrg case $cpu in 14908292847cSmrg arm*) 149184febdacSmrg os=eabi 14928292847cSmrg ;; 14938292847cSmrg *) 149484febdacSmrg os=elf 14958292847cSmrg ;; 14968292847cSmrg esac 14978292847cSmrg ;; 1498c76ae52dSmrg *) 149984febdacSmrg # No normalization, but not necessarily accepted, that comes below. 1500c76ae52dSmrg ;; 1501c76ae52dSmrgesac 150284febdacSmrg 1503c76ae52dSmrgelse 1504c76ae52dSmrg 1505c76ae52dSmrg# Here we handle the default operating systems that come with various machines. 1506c76ae52dSmrg# The value should be what the vendor currently ships out the door with their 1507c76ae52dSmrg# machine or put another way, the most popular os provided with the machine. 1508c76ae52dSmrg 1509c76ae52dSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1510c76ae52dSmrg# "-sun"), then you have to tell the case statement up towards the top 1511c76ae52dSmrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1512c76ae52dSmrg# will signal an error saying that MANUFACTURER isn't an operating 1513c76ae52dSmrg# system, and we'll never get to this point. 1514c76ae52dSmrg 151584febdacSmrgkernel= 151684febdacSmrgcase $cpu-$vendor in 15172836776bSmrg score-*) 151884febdacSmrg os=elf 15190d590c07Smrg ;; 15202836776bSmrg spu-*) 152184febdacSmrg os=elf 15220d590c07Smrg ;; 1523c76ae52dSmrg *-acorn) 152484febdacSmrg os=riscix1.2 1525c76ae52dSmrg ;; 1526c76ae52dSmrg arm*-rebel) 152784febdacSmrg kernel=linux 152884febdacSmrg os=gnu 1529c76ae52dSmrg ;; 1530c76ae52dSmrg arm*-semi) 153184febdacSmrg os=aout 1532c76ae52dSmrg ;; 15332836776bSmrg c4x-* | tic4x-*) 153484febdacSmrg os=coff 15350d590c07Smrg ;; 15368292847cSmrg c8051-*) 153784febdacSmrg os=elf 153884febdacSmrg ;; 153984febdacSmrg clipper-intergraph) 154084febdacSmrg os=clix 15418292847cSmrg ;; 1542dff01e5aSmrg hexagon-*) 154384febdacSmrg os=elf 1544dff01e5aSmrg ;; 1545c2939121Smrg tic54x-*) 154684febdacSmrg os=coff 1547c2939121Smrg ;; 1548c2939121Smrg tic55x-*) 154984febdacSmrg os=coff 1550c2939121Smrg ;; 1551c2939121Smrg tic6x-*) 155284febdacSmrg os=coff 1553c2939121Smrg ;; 1554c76ae52dSmrg # This must come before the *-dec entry. 1555c76ae52dSmrg pdp10-*) 155684febdacSmrg os=tops20 1557c76ae52dSmrg ;; 1558c76ae52dSmrg pdp11-*) 155984febdacSmrg os=none 1560c76ae52dSmrg ;; 1561c76ae52dSmrg *-dec | vax-*) 156284febdacSmrg os=ultrix4.2 1563c76ae52dSmrg ;; 1564c76ae52dSmrg m68*-apollo) 156584febdacSmrg os=domain 1566c76ae52dSmrg ;; 1567c76ae52dSmrg i386-sun) 156884febdacSmrg os=sunos4.0.2 1569c76ae52dSmrg ;; 1570c76ae52dSmrg m68000-sun) 157184febdacSmrg os=sunos3 1572c76ae52dSmrg ;; 1573c76ae52dSmrg m68*-cisco) 157484febdacSmrg os=aout 1575c76ae52dSmrg ;; 15762836776bSmrg mep-*) 157784febdacSmrg os=elf 15780d590c07Smrg ;; 1579c76ae52dSmrg mips*-cisco) 158084febdacSmrg os=elf 1581c76ae52dSmrg ;; 1582c76ae52dSmrg mips*-*) 158384febdacSmrg os=elf 1584c76ae52dSmrg ;; 1585c76ae52dSmrg or32-*) 158684febdacSmrg os=coff 1587c76ae52dSmrg ;; 1588c76ae52dSmrg *-tti) # must be before sparc entry or we get the wrong os. 158984febdacSmrg os=sysv3 1590c76ae52dSmrg ;; 1591c76ae52dSmrg sparc-* | *-sun) 159284febdacSmrg os=sunos4.1.1 1593c76ae52dSmrg ;; 15948292847cSmrg pru-*) 159584febdacSmrg os=elf 15968292847cSmrg ;; 1597c76ae52dSmrg *-be) 159884febdacSmrg os=beos 1599c76ae52dSmrg ;; 1600c76ae52dSmrg *-ibm) 160184febdacSmrg os=aix 1602c76ae52dSmrg ;; 16032836776bSmrg *-knuth) 160484febdacSmrg os=mmixware 1605c76ae52dSmrg ;; 1606c76ae52dSmrg *-wec) 160784febdacSmrg os=proelf 1608c76ae52dSmrg ;; 1609c76ae52dSmrg *-winbond) 161084febdacSmrg os=proelf 1611c76ae52dSmrg ;; 1612c76ae52dSmrg *-oki) 161384febdacSmrg os=proelf 1614c76ae52dSmrg ;; 1615c76ae52dSmrg *-hp) 161684febdacSmrg os=hpux 1617c76ae52dSmrg ;; 1618c76ae52dSmrg *-hitachi) 161984febdacSmrg os=hiux 1620c76ae52dSmrg ;; 1621c76ae52dSmrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 162284febdacSmrg os=sysv 1623c76ae52dSmrg ;; 1624c76ae52dSmrg *-cbm) 162584febdacSmrg os=amigaos 1626c76ae52dSmrg ;; 1627c76ae52dSmrg *-dg) 162884febdacSmrg os=dgux 1629c76ae52dSmrg ;; 1630c76ae52dSmrg *-dolphin) 163184febdacSmrg os=sysv3 1632c76ae52dSmrg ;; 1633c76ae52dSmrg m68k-ccur) 163484febdacSmrg os=rtu 1635c76ae52dSmrg ;; 1636c76ae52dSmrg m88k-omron*) 163784febdacSmrg os=luna 1638c76ae52dSmrg ;; 16398292847cSmrg *-next) 164084febdacSmrg os=nextstep 1641c76ae52dSmrg ;; 1642c76ae52dSmrg *-sequent) 164384febdacSmrg os=ptx 1644c76ae52dSmrg ;; 1645c76ae52dSmrg *-crds) 164684febdacSmrg os=unos 1647c76ae52dSmrg ;; 1648c76ae52dSmrg *-ns) 164984febdacSmrg os=genix 1650c76ae52dSmrg ;; 1651c76ae52dSmrg i370-*) 165284febdacSmrg os=mvs 1653c76ae52dSmrg ;; 1654c76ae52dSmrg *-gould) 165584febdacSmrg os=sysv 1656c76ae52dSmrg ;; 1657c76ae52dSmrg *-highlevel) 165884febdacSmrg os=bsd 1659c76ae52dSmrg ;; 1660c76ae52dSmrg *-encore) 166184febdacSmrg os=bsd 1662c76ae52dSmrg ;; 1663c76ae52dSmrg *-sgi) 166484febdacSmrg os=irix 1665c76ae52dSmrg ;; 1666c76ae52dSmrg *-siemens) 166784febdacSmrg os=sysv4 1668c76ae52dSmrg ;; 1669c76ae52dSmrg *-masscomp) 167084febdacSmrg os=rtu 1671c76ae52dSmrg ;; 1672c76ae52dSmrg f30[01]-fujitsu | f700-fujitsu) 167384febdacSmrg os=uxpv 1674c76ae52dSmrg ;; 1675c76ae52dSmrg *-rom68k) 167684febdacSmrg os=coff 1677c76ae52dSmrg ;; 1678c76ae52dSmrg *-*bug) 167984febdacSmrg os=coff 1680c76ae52dSmrg ;; 1681c76ae52dSmrg *-apple) 168284febdacSmrg os=macos 1683c76ae52dSmrg ;; 1684c76ae52dSmrg *-atari*) 168584febdacSmrg os=mint 168684febdacSmrg ;; 168784febdacSmrg *-wrs) 168884febdacSmrg os=vxworks 1689c76ae52dSmrg ;; 1690c76ae52dSmrg *) 169184febdacSmrg os=none 1692c76ae52dSmrg ;; 1693c76ae52dSmrgesac 169484febdacSmrg 1695c76ae52dSmrgfi 1696c76ae52dSmrg 169784febdacSmrg# Now, validate our (potentially fixed-up) OS. 169884febdacSmrgcase $os in 169984febdacSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 170084febdacSmrg musl* | newlib* | uclibc*) 170184febdacSmrg ;; 170284febdacSmrg # Likewise for "kernel-abi" 170384febdacSmrg eabi* | gnueabi*) 170484febdacSmrg ;; 170584febdacSmrg # VxWorks passes extra cpu info in the 4th filed. 170684febdacSmrg simlinux | simwindows | spe) 170784febdacSmrg ;; 170884febdacSmrg # Now accept the basic system types. 170984febdacSmrg # The portable systems comes first. 171084febdacSmrg # Each alternative MUST end in a * to match a version number. 171184febdacSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 171284febdacSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 171384febdacSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 171484febdacSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 171584febdacSmrg | hiux* | abug | nacl* | netware* | windows* \ 171684febdacSmrg | os9* | macos* | osx* | ios* \ 171784febdacSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 171884febdacSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 171984febdacSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 172084febdacSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 172184febdacSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 172284febdacSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 172384febdacSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 172484febdacSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 172584febdacSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 172684febdacSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 172784febdacSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 172884febdacSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 172984febdacSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 173084febdacSmrg | midipix* | mingw32* | mingw64* | mint* \ 173184febdacSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 173284febdacSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 173384febdacSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 173484febdacSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 173584febdacSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 173684febdacSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 173784febdacSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 173884febdacSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 173984febdacSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 174084febdacSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 174184febdacSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx*) 174284febdacSmrg ;; 174384febdacSmrg # This one is extra strict with allowed versions 174484febdacSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 174584febdacSmrg # Don't forget version if it is 3.2v4 or newer. 174684febdacSmrg ;; 174784febdacSmrg none) 174884febdacSmrg ;; 174984febdacSmrg *) 175084febdacSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 175184febdacSmrg exit 1 175284febdacSmrg ;; 175384febdacSmrgesac 175484febdacSmrg 175584febdacSmrg# As a final step for OS-related things, validate the OS-kernel combination 175684febdacSmrg# (given a valid OS), if there is a kernel. 175784febdacSmrgcase $kernel-$os in 175884febdacSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* ) 175984febdacSmrg ;; 176084febdacSmrg uclinux-uclibc* ) 176184febdacSmrg ;; 176284febdacSmrg -dietlibc* | -newlib* | -musl* | -uclibc* ) 176384febdacSmrg # These are just libc implementations, not actual OSes, and thus 176484febdacSmrg # require a kernel. 176584febdacSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 176684febdacSmrg exit 1 176784febdacSmrg ;; 176884febdacSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 176984febdacSmrg ;; 177084febdacSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 177184febdacSmrg ;; 177284febdacSmrg nto-qnx*) 177384febdacSmrg ;; 177484febdacSmrg os2-emx) 177584febdacSmrg ;; 177684febdacSmrg *-eabi* | *-gnueabi*) 177784febdacSmrg ;; 177884febdacSmrg -*) 177984febdacSmrg # Blank kernel with real OS is always fine. 178084febdacSmrg ;; 178184febdacSmrg *-*) 178284febdacSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 178384febdacSmrg exit 1 178484febdacSmrg ;; 178584febdacSmrgesac 178684febdacSmrg 1787c76ae52dSmrg# Here we handle the case where we know the os, and the CPU type, but not the 1788c76ae52dSmrg# manufacturer. We pick the logical manufacturer. 178984febdacSmrgcase $vendor in 179084febdacSmrg unknown) 179184febdacSmrg case $cpu-$os in 179284febdacSmrg *-riscix*) 1793c76ae52dSmrg vendor=acorn 1794c76ae52dSmrg ;; 179584febdacSmrg *-sunos*) 1796c76ae52dSmrg vendor=sun 1797c76ae52dSmrg ;; 179884febdacSmrg *-cnk* | *-aix*) 1799c76ae52dSmrg vendor=ibm 1800c76ae52dSmrg ;; 180184febdacSmrg *-beos*) 1802c76ae52dSmrg vendor=be 1803c76ae52dSmrg ;; 180484febdacSmrg *-hpux*) 1805c76ae52dSmrg vendor=hp 1806c76ae52dSmrg ;; 180784febdacSmrg *-mpeix*) 1808c76ae52dSmrg vendor=hp 1809c76ae52dSmrg ;; 181084febdacSmrg *-hiux*) 1811c76ae52dSmrg vendor=hitachi 1812c76ae52dSmrg ;; 181384febdacSmrg *-unos*) 1814c76ae52dSmrg vendor=crds 1815c76ae52dSmrg ;; 181684febdacSmrg *-dgux*) 1817c76ae52dSmrg vendor=dg 1818c76ae52dSmrg ;; 181984febdacSmrg *-luna*) 1820c76ae52dSmrg vendor=omron 1821c76ae52dSmrg ;; 182284febdacSmrg *-genix*) 1823c76ae52dSmrg vendor=ns 1824c76ae52dSmrg ;; 182584febdacSmrg *-clix*) 182684febdacSmrg vendor=intergraph 182784febdacSmrg ;; 182884febdacSmrg *-mvs* | *-opened*) 182984febdacSmrg vendor=ibm 183084febdacSmrg ;; 183184febdacSmrg *-os400*) 1832c76ae52dSmrg vendor=ibm 1833c76ae52dSmrg ;; 183484febdacSmrg s390-* | s390x-*) 1835c76ae52dSmrg vendor=ibm 1836c76ae52dSmrg ;; 183784febdacSmrg *-ptx*) 1838c76ae52dSmrg vendor=sequent 1839c76ae52dSmrg ;; 184084febdacSmrg *-tpf*) 1841c76ae52dSmrg vendor=ibm 1842c76ae52dSmrg ;; 184384febdacSmrg *-vxsim* | *-vxworks* | *-windiss*) 1844c76ae52dSmrg vendor=wrs 1845c76ae52dSmrg ;; 184684febdacSmrg *-aux*) 1847c76ae52dSmrg vendor=apple 1848c76ae52dSmrg ;; 184984febdacSmrg *-hms*) 1850c76ae52dSmrg vendor=hitachi 1851c76ae52dSmrg ;; 185284febdacSmrg *-mpw* | *-macos*) 1853c76ae52dSmrg vendor=apple 1854c76ae52dSmrg ;; 185584febdacSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1856c76ae52dSmrg vendor=atari 1857c76ae52dSmrg ;; 185884febdacSmrg *-vos*) 1859c76ae52dSmrg vendor=stratus 1860c76ae52dSmrg ;; 1861c76ae52dSmrg esac 1862c76ae52dSmrg ;; 1863c76ae52dSmrgesac 1864c76ae52dSmrg 186584febdacSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1866c76ae52dSmrgexit 1867c76ae52dSmrg 1868c76ae52dSmrg# Local variables: 186984febdacSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 1870c76ae52dSmrg# time-stamp-start: "timestamp='" 1871c76ae52dSmrg# time-stamp-format: "%:y-%02m-%02d" 1872c76ae52dSmrg# time-stamp-end: "'" 1873c76ae52dSmrg# End: 1874