18440cca4Smrg#! /bin/sh 28440cca4Smrg# Configuration validation subroutine script. 394c9ab7bSmrg# Copyright 1992-2021 Free Software Foundation, Inc. 48440cca4Smrg 594c9ab7bSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 694c9ab7bSmrg 794c9ab7bSmrgtimestamp='2021-08-14' 88440cca4Smrg 904449c54Smrg# This file is free software; you can redistribute it and/or modify it 1004449c54Smrg# under the terms of the GNU General Public License as published by 1104449c54Smrg# the Free Software Foundation; either version 3 of the License, or 128440cca4Smrg# (at your option) any later version. 138440cca4Smrg# 1404449c54Smrg# This program is distributed in the hope that it will be useful, but 1504449c54Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 1604449c54Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1704449c54Smrg# General Public License for more details. 188440cca4Smrg# 198440cca4Smrg# You should have received a copy of the GNU General Public License 2004449c54Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 21d1c293acSmrg# 228440cca4Smrg# As a special exception to the GNU General Public License, if you 238440cca4Smrg# distribute this file as part of a program that contains a 248440cca4Smrg# configuration script generated by Autoconf, you may include it under 2504449c54Smrg# the same distribution terms that you use for the rest of that 2604449c54Smrg# program. This Exception is an additional permission under section 7 2704449c54Smrg# of the GNU General Public License, version 3 ("GPLv3"). 288440cca4Smrg 29d1c293acSmrg 3004449c54Smrg# Please send patches to <config-patches@gnu.org>. 318440cca4Smrg# 328440cca4Smrg# Configuration subroutine to validate and canonicalize a configuration type. 338440cca4Smrg# Supply the specified configuration type as an argument. 348440cca4Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 358440cca4Smrg# Otherwise, we print the canonical config type on stdout and succeed. 368440cca4Smrg 37d1c293acSmrg# You can get the latest version of this script from: 3894c9ab7bSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39d1c293acSmrg 408440cca4Smrg# This file is supposed to be the same for all GNU packages 418440cca4Smrg# and recognize all the CPU types, system types and aliases 428440cca4Smrg# that are meaningful with *any* GNU software. 438440cca4Smrg# Each package is responsible for reporting which valid configurations 448440cca4Smrg# it does not support. The user should be able to distinguish 458440cca4Smrg# a failure to support a valid configuration from a meaningless 468440cca4Smrg# configuration. 478440cca4Smrg 488440cca4Smrg# The goal of this file is to map all the various variations of a given 498440cca4Smrg# machine specification into a single specification in the form: 508440cca4Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 518440cca4Smrg# or in some cases, the newer four-part form: 528440cca4Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 538440cca4Smrg# It is wrong to echo any other type of specification. 548440cca4Smrg 5594c9ab7bSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 5694c9ab7bSmrg# about features and limitations of the classic Bourne shell that were 5794c9ab7bSmrg# superseded or lifted in POSIX. However, this script identifies a wide 5894c9ab7bSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 5994c9ab7bSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 6094c9ab7bSmrg# have a pre-POSIX /bin/sh. 6194c9ab7bSmrg 628440cca4Smrgme=`echo "$0" | sed -e 's,.*/,,'` 638440cca4Smrg 648440cca4Smrgusage="\ 6504449c54SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 668440cca4Smrg 678440cca4SmrgCanonicalize a configuration name. 688440cca4Smrg 6904449c54SmrgOptions: 708440cca4Smrg -h, --help print this help, then exit 718440cca4Smrg -t, --time-stamp print date of last modification, then exit 728440cca4Smrg -v, --version print version number, then exit 738440cca4Smrg 748440cca4SmrgReport bugs and patches to <config-patches@gnu.org>." 758440cca4Smrg 768440cca4Smrgversion="\ 778440cca4SmrgGNU config.sub ($timestamp) 788440cca4Smrg 7994c9ab7bSmrgCopyright 1992-2021 Free Software Foundation, Inc. 808440cca4Smrg 818440cca4SmrgThis is free software; see the source for copying conditions. There is NO 828440cca4Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 838440cca4Smrg 848440cca4Smrghelp=" 858440cca4SmrgTry \`$me --help' for more information." 868440cca4Smrg 878440cca4Smrg# Parse command line 888440cca4Smrgwhile test $# -gt 0 ; do 898440cca4Smrg case $1 in 908440cca4Smrg --time-stamp | --time* | -t ) 91d1c293acSmrg echo "$timestamp" ; exit ;; 928440cca4Smrg --version | -v ) 93d1c293acSmrg echo "$version" ; exit ;; 948440cca4Smrg --help | --h* | -h ) 95d1c293acSmrg echo "$usage"; exit ;; 968440cca4Smrg -- ) # Stop option processing 978440cca4Smrg shift; break ;; 988440cca4Smrg - ) # Use stdin as input. 998440cca4Smrg break ;; 1008440cca4Smrg -* ) 10194c9ab7bSmrg echo "$me: invalid option $1$help" >&2 1028440cca4Smrg exit 1 ;; 1038440cca4Smrg 1048440cca4Smrg *local*) 1058440cca4Smrg # First pass through any local machine types. 10604449c54Smrg echo "$1" 107d1c293acSmrg exit ;; 1088440cca4Smrg 1098440cca4Smrg * ) 1108440cca4Smrg break ;; 1118440cca4Smrg esac 1128440cca4Smrgdone 1138440cca4Smrg 1148440cca4Smrgcase $# in 1158440cca4Smrg 0) echo "$me: missing argument$help" >&2 1168440cca4Smrg exit 1;; 1178440cca4Smrg 1) ;; 1188440cca4Smrg *) echo "$me: too many arguments$help" >&2 1198440cca4Smrg exit 1;; 1208440cca4Smrgesac 1218440cca4Smrg 12294c9ab7bSmrg# Split fields of configuration type 12394c9ab7bSmrg# shellcheck disable=SC2162 12494c9ab7bSmrgsaved_IFS=$IFS 12594c9ab7bSmrgIFS="-" read field1 field2 field3 field4 <<EOF 12694c9ab7bSmrg$1 12794c9ab7bSmrgEOF 12894c9ab7bSmrgIFS=$saved_IFS 1298440cca4Smrg 13094c9ab7bSmrg# Separate into logical components for further validation 13194c9ab7bSmrgcase $1 in 13294c9ab7bSmrg *-*-*-*-*) 13394c9ab7bSmrg echo Invalid configuration \`"$1"\': more than four components >&2 13494c9ab7bSmrg exit 1 1358440cca4Smrg ;; 13694c9ab7bSmrg *-*-*-*) 13794c9ab7bSmrg basic_machine=$field1-$field2 13894c9ab7bSmrg basic_os=$field3-$field4 1398440cca4Smrg ;; 14094c9ab7bSmrg *-*-*) 14194c9ab7bSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 14294c9ab7bSmrg # parts 14394c9ab7bSmrg maybe_os=$field2-$field3 14494c9ab7bSmrg case $maybe_os in 14594c9ab7bSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 14694c9ab7bSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 14794c9ab7bSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 14894c9ab7bSmrg | storm-chaos* | os2-emx* | rtmk-nova*) 14994c9ab7bSmrg basic_machine=$field1 15094c9ab7bSmrg basic_os=$maybe_os 15194c9ab7bSmrg ;; 15294c9ab7bSmrg android-linux) 15394c9ab7bSmrg basic_machine=$field1-unknown 15494c9ab7bSmrg basic_os=linux-android 15594c9ab7bSmrg ;; 15694c9ab7bSmrg *) 15794c9ab7bSmrg basic_machine=$field1-$field2 15894c9ab7bSmrg basic_os=$field3 15994c9ab7bSmrg ;; 16094c9ab7bSmrg esac 1618440cca4Smrg ;; 16294c9ab7bSmrg *-*) 16394c9ab7bSmrg # A lone config we happen to match not fitting any pattern 16494c9ab7bSmrg case $field1-$field2 in 16594c9ab7bSmrg decstation-3100) 16694c9ab7bSmrg basic_machine=mips-dec 16794c9ab7bSmrg basic_os= 16894c9ab7bSmrg ;; 16994c9ab7bSmrg *-*) 17094c9ab7bSmrg # Second component is usually, but not always the OS 17194c9ab7bSmrg case $field2 in 17294c9ab7bSmrg # Prevent following clause from handling this valid os 17394c9ab7bSmrg sun*os*) 17494c9ab7bSmrg basic_machine=$field1 17594c9ab7bSmrg basic_os=$field2 17694c9ab7bSmrg ;; 17794c9ab7bSmrg zephyr*) 17894c9ab7bSmrg basic_machine=$field1-unknown 17994c9ab7bSmrg basic_os=$field2 18094c9ab7bSmrg ;; 18194c9ab7bSmrg # Manufacturers 18294c9ab7bSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 18394c9ab7bSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 18494c9ab7bSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 18594c9ab7bSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 18694c9ab7bSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 18794c9ab7bSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 18894c9ab7bSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 18994c9ab7bSmrg | microblaze* | sim | cisco \ 19094c9ab7bSmrg | oki | wec | wrs | winbond) 19194c9ab7bSmrg basic_machine=$field1-$field2 19294c9ab7bSmrg basic_os= 19394c9ab7bSmrg ;; 19494c9ab7bSmrg *) 19594c9ab7bSmrg basic_machine=$field1 19694c9ab7bSmrg basic_os=$field2 19794c9ab7bSmrg ;; 19894c9ab7bSmrg esac 19994c9ab7bSmrg ;; 20094c9ab7bSmrg esac 2018440cca4Smrg ;; 20294c9ab7bSmrg *) 20394c9ab7bSmrg # Convert single-component short-hands not valid as part of 20494c9ab7bSmrg # multi-component configurations. 20594c9ab7bSmrg case $field1 in 20694c9ab7bSmrg 386bsd) 20794c9ab7bSmrg basic_machine=i386-pc 20894c9ab7bSmrg basic_os=bsd 20994c9ab7bSmrg ;; 21094c9ab7bSmrg a29khif) 21194c9ab7bSmrg basic_machine=a29k-amd 21294c9ab7bSmrg basic_os=udi 21394c9ab7bSmrg ;; 21494c9ab7bSmrg adobe68k) 21594c9ab7bSmrg basic_machine=m68010-adobe 21694c9ab7bSmrg basic_os=scout 21794c9ab7bSmrg ;; 21894c9ab7bSmrg alliant) 21994c9ab7bSmrg basic_machine=fx80-alliant 22094c9ab7bSmrg basic_os= 22194c9ab7bSmrg ;; 22294c9ab7bSmrg altos | altos3068) 22394c9ab7bSmrg basic_machine=m68k-altos 22494c9ab7bSmrg basic_os= 22594c9ab7bSmrg ;; 22694c9ab7bSmrg am29k) 22794c9ab7bSmrg basic_machine=a29k-none 22894c9ab7bSmrg basic_os=bsd 22994c9ab7bSmrg ;; 23094c9ab7bSmrg amdahl) 23194c9ab7bSmrg basic_machine=580-amdahl 23294c9ab7bSmrg basic_os=sysv 23394c9ab7bSmrg ;; 23494c9ab7bSmrg amiga) 23594c9ab7bSmrg basic_machine=m68k-unknown 23694c9ab7bSmrg basic_os= 23794c9ab7bSmrg ;; 23894c9ab7bSmrg amigaos | amigados) 23994c9ab7bSmrg basic_machine=m68k-unknown 24094c9ab7bSmrg basic_os=amigaos 24194c9ab7bSmrg ;; 24294c9ab7bSmrg amigaunix | amix) 24394c9ab7bSmrg basic_machine=m68k-unknown 24494c9ab7bSmrg basic_os=sysv4 24594c9ab7bSmrg ;; 24694c9ab7bSmrg apollo68) 24794c9ab7bSmrg basic_machine=m68k-apollo 24894c9ab7bSmrg basic_os=sysv 24994c9ab7bSmrg ;; 25094c9ab7bSmrg apollo68bsd) 25194c9ab7bSmrg basic_machine=m68k-apollo 25294c9ab7bSmrg basic_os=bsd 25394c9ab7bSmrg ;; 25494c9ab7bSmrg aros) 25594c9ab7bSmrg basic_machine=i386-pc 25694c9ab7bSmrg basic_os=aros 25794c9ab7bSmrg ;; 25894c9ab7bSmrg aux) 25994c9ab7bSmrg basic_machine=m68k-apple 26094c9ab7bSmrg basic_os=aux 26194c9ab7bSmrg ;; 26294c9ab7bSmrg balance) 26394c9ab7bSmrg basic_machine=ns32k-sequent 26494c9ab7bSmrg basic_os=dynix 26594c9ab7bSmrg ;; 26694c9ab7bSmrg blackfin) 26794c9ab7bSmrg basic_machine=bfin-unknown 26894c9ab7bSmrg basic_os=linux 26994c9ab7bSmrg ;; 27094c9ab7bSmrg cegcc) 27194c9ab7bSmrg basic_machine=arm-unknown 27294c9ab7bSmrg basic_os=cegcc 27394c9ab7bSmrg ;; 27494c9ab7bSmrg convex-c1) 27594c9ab7bSmrg basic_machine=c1-convex 27694c9ab7bSmrg basic_os=bsd 27794c9ab7bSmrg ;; 27894c9ab7bSmrg convex-c2) 27994c9ab7bSmrg basic_machine=c2-convex 28094c9ab7bSmrg basic_os=bsd 28194c9ab7bSmrg ;; 28294c9ab7bSmrg convex-c32) 28394c9ab7bSmrg basic_machine=c32-convex 28494c9ab7bSmrg basic_os=bsd 28594c9ab7bSmrg ;; 28694c9ab7bSmrg convex-c34) 28794c9ab7bSmrg basic_machine=c34-convex 28894c9ab7bSmrg basic_os=bsd 28994c9ab7bSmrg ;; 29094c9ab7bSmrg convex-c38) 29194c9ab7bSmrg basic_machine=c38-convex 29294c9ab7bSmrg basic_os=bsd 29394c9ab7bSmrg ;; 29494c9ab7bSmrg cray) 29594c9ab7bSmrg basic_machine=j90-cray 29694c9ab7bSmrg basic_os=unicos 29794c9ab7bSmrg ;; 29894c9ab7bSmrg crds | unos) 29994c9ab7bSmrg basic_machine=m68k-crds 30094c9ab7bSmrg basic_os= 30194c9ab7bSmrg ;; 30294c9ab7bSmrg da30) 30394c9ab7bSmrg basic_machine=m68k-da30 30494c9ab7bSmrg basic_os= 30594c9ab7bSmrg ;; 30694c9ab7bSmrg decstation | pmax | pmin | dec3100 | decstatn) 30794c9ab7bSmrg basic_machine=mips-dec 30894c9ab7bSmrg basic_os= 30994c9ab7bSmrg ;; 31094c9ab7bSmrg delta88) 31194c9ab7bSmrg basic_machine=m88k-motorola 31294c9ab7bSmrg basic_os=sysv3 31394c9ab7bSmrg ;; 31494c9ab7bSmrg dicos) 31594c9ab7bSmrg basic_machine=i686-pc 31694c9ab7bSmrg basic_os=dicos 31794c9ab7bSmrg ;; 31894c9ab7bSmrg djgpp) 31994c9ab7bSmrg basic_machine=i586-pc 32094c9ab7bSmrg basic_os=msdosdjgpp 32194c9ab7bSmrg ;; 32294c9ab7bSmrg ebmon29k) 32394c9ab7bSmrg basic_machine=a29k-amd 32494c9ab7bSmrg basic_os=ebmon 32594c9ab7bSmrg ;; 32694c9ab7bSmrg es1800 | OSE68k | ose68k | ose | OSE) 32794c9ab7bSmrg basic_machine=m68k-ericsson 32894c9ab7bSmrg basic_os=ose 32994c9ab7bSmrg ;; 33094c9ab7bSmrg gmicro) 33194c9ab7bSmrg basic_machine=tron-gmicro 33294c9ab7bSmrg basic_os=sysv 33394c9ab7bSmrg ;; 33494c9ab7bSmrg go32) 33594c9ab7bSmrg basic_machine=i386-pc 33694c9ab7bSmrg basic_os=go32 33794c9ab7bSmrg ;; 33894c9ab7bSmrg h8300hms) 33994c9ab7bSmrg basic_machine=h8300-hitachi 34094c9ab7bSmrg basic_os=hms 34194c9ab7bSmrg ;; 34294c9ab7bSmrg h8300xray) 34394c9ab7bSmrg basic_machine=h8300-hitachi 34494c9ab7bSmrg basic_os=xray 34594c9ab7bSmrg ;; 34694c9ab7bSmrg h8500hms) 34794c9ab7bSmrg basic_machine=h8500-hitachi 34894c9ab7bSmrg basic_os=hms 34994c9ab7bSmrg ;; 35094c9ab7bSmrg harris) 35194c9ab7bSmrg basic_machine=m88k-harris 35294c9ab7bSmrg basic_os=sysv3 35394c9ab7bSmrg ;; 35494c9ab7bSmrg hp300 | hp300hpux) 35594c9ab7bSmrg basic_machine=m68k-hp 35694c9ab7bSmrg basic_os=hpux 35794c9ab7bSmrg ;; 35894c9ab7bSmrg hp300bsd) 35994c9ab7bSmrg basic_machine=m68k-hp 36094c9ab7bSmrg basic_os=bsd 36194c9ab7bSmrg ;; 36294c9ab7bSmrg hppaosf) 36394c9ab7bSmrg basic_machine=hppa1.1-hp 36494c9ab7bSmrg basic_os=osf 36594c9ab7bSmrg ;; 36694c9ab7bSmrg hppro) 36794c9ab7bSmrg basic_machine=hppa1.1-hp 36894c9ab7bSmrg basic_os=proelf 36994c9ab7bSmrg ;; 37094c9ab7bSmrg i386mach) 37194c9ab7bSmrg basic_machine=i386-mach 37294c9ab7bSmrg basic_os=mach 37394c9ab7bSmrg ;; 37494c9ab7bSmrg isi68 | isi) 37594c9ab7bSmrg basic_machine=m68k-isi 37694c9ab7bSmrg basic_os=sysv 37794c9ab7bSmrg ;; 37894c9ab7bSmrg m68knommu) 37994c9ab7bSmrg basic_machine=m68k-unknown 38094c9ab7bSmrg basic_os=linux 38194c9ab7bSmrg ;; 38294c9ab7bSmrg magnum | m3230) 38394c9ab7bSmrg basic_machine=mips-mips 38494c9ab7bSmrg basic_os=sysv 38594c9ab7bSmrg ;; 38694c9ab7bSmrg merlin) 38794c9ab7bSmrg basic_machine=ns32k-utek 38894c9ab7bSmrg basic_os=sysv 38994c9ab7bSmrg ;; 39094c9ab7bSmrg mingw64) 39194c9ab7bSmrg basic_machine=x86_64-pc 39294c9ab7bSmrg basic_os=mingw64 39394c9ab7bSmrg ;; 39494c9ab7bSmrg mingw32) 39594c9ab7bSmrg basic_machine=i686-pc 39694c9ab7bSmrg basic_os=mingw32 39794c9ab7bSmrg ;; 39894c9ab7bSmrg mingw32ce) 39994c9ab7bSmrg basic_machine=arm-unknown 40094c9ab7bSmrg basic_os=mingw32ce 40194c9ab7bSmrg ;; 40294c9ab7bSmrg monitor) 40394c9ab7bSmrg basic_machine=m68k-rom68k 40494c9ab7bSmrg basic_os=coff 40594c9ab7bSmrg ;; 40694c9ab7bSmrg morphos) 40794c9ab7bSmrg basic_machine=powerpc-unknown 40894c9ab7bSmrg basic_os=morphos 40994c9ab7bSmrg ;; 41094c9ab7bSmrg moxiebox) 41194c9ab7bSmrg basic_machine=moxie-unknown 41294c9ab7bSmrg basic_os=moxiebox 41394c9ab7bSmrg ;; 41494c9ab7bSmrg msdos) 41594c9ab7bSmrg basic_machine=i386-pc 41694c9ab7bSmrg basic_os=msdos 41794c9ab7bSmrg ;; 41894c9ab7bSmrg msys) 41994c9ab7bSmrg basic_machine=i686-pc 42094c9ab7bSmrg basic_os=msys 42194c9ab7bSmrg ;; 42294c9ab7bSmrg mvs) 42394c9ab7bSmrg basic_machine=i370-ibm 42494c9ab7bSmrg basic_os=mvs 42594c9ab7bSmrg ;; 42694c9ab7bSmrg nacl) 42794c9ab7bSmrg basic_machine=le32-unknown 42894c9ab7bSmrg basic_os=nacl 42994c9ab7bSmrg ;; 43094c9ab7bSmrg ncr3000) 43194c9ab7bSmrg basic_machine=i486-ncr 43294c9ab7bSmrg basic_os=sysv4 43394c9ab7bSmrg ;; 43494c9ab7bSmrg netbsd386) 43594c9ab7bSmrg basic_machine=i386-pc 43694c9ab7bSmrg basic_os=netbsd 43794c9ab7bSmrg ;; 43894c9ab7bSmrg netwinder) 43994c9ab7bSmrg basic_machine=armv4l-rebel 44094c9ab7bSmrg basic_os=linux 44194c9ab7bSmrg ;; 44294c9ab7bSmrg news | news700 | news800 | news900) 44394c9ab7bSmrg basic_machine=m68k-sony 44494c9ab7bSmrg basic_os=newsos 44594c9ab7bSmrg ;; 44694c9ab7bSmrg news1000) 44794c9ab7bSmrg basic_machine=m68030-sony 44894c9ab7bSmrg basic_os=newsos 44994c9ab7bSmrg ;; 45094c9ab7bSmrg necv70) 45194c9ab7bSmrg basic_machine=v70-nec 45294c9ab7bSmrg basic_os=sysv 45394c9ab7bSmrg ;; 45494c9ab7bSmrg nh3000) 45594c9ab7bSmrg basic_machine=m68k-harris 45694c9ab7bSmrg basic_os=cxux 45794c9ab7bSmrg ;; 45894c9ab7bSmrg nh[45]000) 45994c9ab7bSmrg basic_machine=m88k-harris 46094c9ab7bSmrg basic_os=cxux 46194c9ab7bSmrg ;; 46294c9ab7bSmrg nindy960) 46394c9ab7bSmrg basic_machine=i960-intel 46494c9ab7bSmrg basic_os=nindy 46594c9ab7bSmrg ;; 46694c9ab7bSmrg mon960) 46794c9ab7bSmrg basic_machine=i960-intel 46894c9ab7bSmrg basic_os=mon960 46994c9ab7bSmrg ;; 47094c9ab7bSmrg nonstopux) 47194c9ab7bSmrg basic_machine=mips-compaq 47294c9ab7bSmrg basic_os=nonstopux 47394c9ab7bSmrg ;; 47494c9ab7bSmrg os400) 47594c9ab7bSmrg basic_machine=powerpc-ibm 47694c9ab7bSmrg basic_os=os400 47794c9ab7bSmrg ;; 47894c9ab7bSmrg OSE68000 | ose68000) 47994c9ab7bSmrg basic_machine=m68000-ericsson 48094c9ab7bSmrg basic_os=ose 48194c9ab7bSmrg ;; 48294c9ab7bSmrg os68k) 48394c9ab7bSmrg basic_machine=m68k-none 48494c9ab7bSmrg basic_os=os68k 48594c9ab7bSmrg ;; 48694c9ab7bSmrg paragon) 48794c9ab7bSmrg basic_machine=i860-intel 48894c9ab7bSmrg basic_os=osf 48994c9ab7bSmrg ;; 49094c9ab7bSmrg parisc) 49194c9ab7bSmrg basic_machine=hppa-unknown 49294c9ab7bSmrg basic_os=linux 49394c9ab7bSmrg ;; 49494c9ab7bSmrg psp) 49594c9ab7bSmrg basic_machine=mipsallegrexel-sony 49694c9ab7bSmrg basic_os=psp 49794c9ab7bSmrg ;; 49894c9ab7bSmrg pw32) 49994c9ab7bSmrg basic_machine=i586-unknown 50094c9ab7bSmrg basic_os=pw32 50194c9ab7bSmrg ;; 50294c9ab7bSmrg rdos | rdos64) 50394c9ab7bSmrg basic_machine=x86_64-pc 50494c9ab7bSmrg basic_os=rdos 50594c9ab7bSmrg ;; 50694c9ab7bSmrg rdos32) 50794c9ab7bSmrg basic_machine=i386-pc 50894c9ab7bSmrg basic_os=rdos 50994c9ab7bSmrg ;; 51094c9ab7bSmrg rom68k) 51194c9ab7bSmrg basic_machine=m68k-rom68k 51294c9ab7bSmrg basic_os=coff 51394c9ab7bSmrg ;; 51494c9ab7bSmrg sa29200) 51594c9ab7bSmrg basic_machine=a29k-amd 51694c9ab7bSmrg basic_os=udi 51794c9ab7bSmrg ;; 51894c9ab7bSmrg sei) 51994c9ab7bSmrg basic_machine=mips-sei 52094c9ab7bSmrg basic_os=seiux 52194c9ab7bSmrg ;; 52294c9ab7bSmrg sequent) 52394c9ab7bSmrg basic_machine=i386-sequent 52494c9ab7bSmrg basic_os= 52594c9ab7bSmrg ;; 52694c9ab7bSmrg sps7) 52794c9ab7bSmrg basic_machine=m68k-bull 52894c9ab7bSmrg basic_os=sysv2 52994c9ab7bSmrg ;; 53094c9ab7bSmrg st2000) 53194c9ab7bSmrg basic_machine=m68k-tandem 53294c9ab7bSmrg basic_os= 53394c9ab7bSmrg ;; 53494c9ab7bSmrg stratus) 53594c9ab7bSmrg basic_machine=i860-stratus 53694c9ab7bSmrg basic_os=sysv4 53794c9ab7bSmrg ;; 53894c9ab7bSmrg sun2) 53994c9ab7bSmrg basic_machine=m68000-sun 54094c9ab7bSmrg basic_os= 54194c9ab7bSmrg ;; 54294c9ab7bSmrg sun2os3) 54394c9ab7bSmrg basic_machine=m68000-sun 54494c9ab7bSmrg basic_os=sunos3 54594c9ab7bSmrg ;; 54694c9ab7bSmrg sun2os4) 54794c9ab7bSmrg basic_machine=m68000-sun 54894c9ab7bSmrg basic_os=sunos4 54994c9ab7bSmrg ;; 55094c9ab7bSmrg sun3) 55194c9ab7bSmrg basic_machine=m68k-sun 55294c9ab7bSmrg basic_os= 55394c9ab7bSmrg ;; 55494c9ab7bSmrg sun3os3) 55594c9ab7bSmrg basic_machine=m68k-sun 55694c9ab7bSmrg basic_os=sunos3 55794c9ab7bSmrg ;; 55894c9ab7bSmrg sun3os4) 55994c9ab7bSmrg basic_machine=m68k-sun 56094c9ab7bSmrg basic_os=sunos4 56194c9ab7bSmrg ;; 56294c9ab7bSmrg sun4) 56394c9ab7bSmrg basic_machine=sparc-sun 56494c9ab7bSmrg basic_os= 56594c9ab7bSmrg ;; 56694c9ab7bSmrg sun4os3) 56794c9ab7bSmrg basic_machine=sparc-sun 56894c9ab7bSmrg basic_os=sunos3 56994c9ab7bSmrg ;; 57094c9ab7bSmrg sun4os4) 57194c9ab7bSmrg basic_machine=sparc-sun 57294c9ab7bSmrg basic_os=sunos4 57394c9ab7bSmrg ;; 57494c9ab7bSmrg sun4sol2) 57594c9ab7bSmrg basic_machine=sparc-sun 57694c9ab7bSmrg basic_os=solaris2 57794c9ab7bSmrg ;; 57894c9ab7bSmrg sun386 | sun386i | roadrunner) 57994c9ab7bSmrg basic_machine=i386-sun 58094c9ab7bSmrg basic_os= 58194c9ab7bSmrg ;; 58294c9ab7bSmrg sv1) 58394c9ab7bSmrg basic_machine=sv1-cray 58494c9ab7bSmrg basic_os=unicos 58594c9ab7bSmrg ;; 58694c9ab7bSmrg symmetry) 58794c9ab7bSmrg basic_machine=i386-sequent 58894c9ab7bSmrg basic_os=dynix 58994c9ab7bSmrg ;; 59094c9ab7bSmrg t3e) 59194c9ab7bSmrg basic_machine=alphaev5-cray 59294c9ab7bSmrg basic_os=unicos 59394c9ab7bSmrg ;; 59494c9ab7bSmrg t90) 59594c9ab7bSmrg basic_machine=t90-cray 59694c9ab7bSmrg basic_os=unicos 59794c9ab7bSmrg ;; 59894c9ab7bSmrg toad1) 59994c9ab7bSmrg basic_machine=pdp10-xkl 60094c9ab7bSmrg basic_os=tops20 60194c9ab7bSmrg ;; 60294c9ab7bSmrg tpf) 60394c9ab7bSmrg basic_machine=s390x-ibm 60494c9ab7bSmrg basic_os=tpf 60594c9ab7bSmrg ;; 60694c9ab7bSmrg udi29k) 60794c9ab7bSmrg basic_machine=a29k-amd 60894c9ab7bSmrg basic_os=udi 60994c9ab7bSmrg ;; 61094c9ab7bSmrg ultra3) 61194c9ab7bSmrg basic_machine=a29k-nyu 61294c9ab7bSmrg basic_os=sym1 61394c9ab7bSmrg ;; 61494c9ab7bSmrg v810 | necv810) 61594c9ab7bSmrg basic_machine=v810-nec 61694c9ab7bSmrg basic_os=none 61794c9ab7bSmrg ;; 61894c9ab7bSmrg vaxv) 61994c9ab7bSmrg basic_machine=vax-dec 62094c9ab7bSmrg basic_os=sysv 62194c9ab7bSmrg ;; 62294c9ab7bSmrg vms) 62394c9ab7bSmrg basic_machine=vax-dec 62494c9ab7bSmrg basic_os=vms 62594c9ab7bSmrg ;; 62694c9ab7bSmrg vsta) 62794c9ab7bSmrg basic_machine=i386-pc 62894c9ab7bSmrg basic_os=vsta 62994c9ab7bSmrg ;; 63094c9ab7bSmrg vxworks960) 63194c9ab7bSmrg basic_machine=i960-wrs 63294c9ab7bSmrg basic_os=vxworks 63394c9ab7bSmrg ;; 63494c9ab7bSmrg vxworks68) 63594c9ab7bSmrg basic_machine=m68k-wrs 63694c9ab7bSmrg basic_os=vxworks 63794c9ab7bSmrg ;; 63894c9ab7bSmrg vxworks29k) 63994c9ab7bSmrg basic_machine=a29k-wrs 64094c9ab7bSmrg basic_os=vxworks 64194c9ab7bSmrg ;; 64294c9ab7bSmrg xbox) 64394c9ab7bSmrg basic_machine=i686-pc 64494c9ab7bSmrg basic_os=mingw32 64594c9ab7bSmrg ;; 64694c9ab7bSmrg ymp) 64794c9ab7bSmrg basic_machine=ymp-cray 64894c9ab7bSmrg basic_os=unicos 64994c9ab7bSmrg ;; 65094c9ab7bSmrg *) 65194c9ab7bSmrg basic_machine=$1 65294c9ab7bSmrg basic_os= 65394c9ab7bSmrg ;; 65494c9ab7bSmrg esac 6558440cca4Smrg ;; 6568440cca4Smrgesac 6578440cca4Smrg 65894c9ab7bSmrg# Decode 1-component or ad-hoc basic machines 6598440cca4Smrgcase $basic_machine in 66094c9ab7bSmrg # Here we handle the default manufacturer of certain CPU types. It is in 66194c9ab7bSmrg # some cases the only manufacturer, in others, it is the most popular. 66294c9ab7bSmrg w89k) 66394c9ab7bSmrg cpu=hppa1.1 66494c9ab7bSmrg vendor=winbond 66504449c54Smrg ;; 66694c9ab7bSmrg op50n) 66794c9ab7bSmrg cpu=hppa1.1 66894c9ab7bSmrg vendor=oki 6698440cca4Smrg ;; 67094c9ab7bSmrg op60c) 67194c9ab7bSmrg cpu=hppa1.1 67294c9ab7bSmrg vendor=oki 6738440cca4Smrg ;; 67494c9ab7bSmrg ibm*) 67594c9ab7bSmrg cpu=i370 67694c9ab7bSmrg vendor=ibm 677d1c293acSmrg ;; 67894c9ab7bSmrg orion105) 67994c9ab7bSmrg cpu=clipper 68094c9ab7bSmrg vendor=highlevel 68104449c54Smrg ;; 68294c9ab7bSmrg mac | mpw | mac-mpw) 68394c9ab7bSmrg cpu=m68k 68494c9ab7bSmrg vendor=apple 68520915927Smrg ;; 68694c9ab7bSmrg pmac | pmac-mpw) 68794c9ab7bSmrg cpu=powerpc 68894c9ab7bSmrg vendor=apple 68920915927Smrg ;; 69020915927Smrg 6918440cca4Smrg # Recognize the various machine names and aliases which stand 6928440cca4Smrg # for a CPU type and a company and sometimes even an OS. 6938440cca4Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 69494c9ab7bSmrg cpu=m68000 69594c9ab7bSmrg vendor=att 6968440cca4Smrg ;; 6978440cca4Smrg 3b*) 69894c9ab7bSmrg cpu=we32k 69994c9ab7bSmrg vendor=att 700d1c293acSmrg ;; 701d1c293acSmrg bluegene*) 70294c9ab7bSmrg cpu=powerpc 70394c9ab7bSmrg vendor=ibm 70494c9ab7bSmrg basic_os=cnk 7058440cca4Smrg ;; 7068440cca4Smrg decsystem10* | dec10*) 70794c9ab7bSmrg cpu=pdp10 70894c9ab7bSmrg vendor=dec 70994c9ab7bSmrg basic_os=tops10 7108440cca4Smrg ;; 7118440cca4Smrg decsystem20* | dec20*) 71294c9ab7bSmrg cpu=pdp10 71394c9ab7bSmrg vendor=dec 71494c9ab7bSmrg basic_os=tops20 7158440cca4Smrg ;; 7168440cca4Smrg delta | 3300 | motorola-3300 | motorola-delta \ 7178440cca4Smrg | 3300-motorola | delta-motorola) 71894c9ab7bSmrg cpu=m68k 71994c9ab7bSmrg vendor=motorola 7208440cca4Smrg ;; 72104449c54Smrg dpx2*) 72294c9ab7bSmrg cpu=m68k 72394c9ab7bSmrg vendor=bull 72494c9ab7bSmrg basic_os=sysv3 7258440cca4Smrg ;; 7268440cca4Smrg encore | umax | mmax) 72794c9ab7bSmrg cpu=ns32k 72894c9ab7bSmrg vendor=encore 7298440cca4Smrg ;; 73094c9ab7bSmrg elxsi) 73194c9ab7bSmrg cpu=elxsi 73294c9ab7bSmrg vendor=elxsi 73394c9ab7bSmrg basic_os=${basic_os:-bsd} 7348440cca4Smrg ;; 7358440cca4Smrg fx2800) 73694c9ab7bSmrg cpu=i860 73794c9ab7bSmrg vendor=alliant 7388440cca4Smrg ;; 7398440cca4Smrg genix) 74094c9ab7bSmrg cpu=ns32k 74194c9ab7bSmrg vendor=ns 7428440cca4Smrg ;; 7438440cca4Smrg h3050r* | hiux*) 74494c9ab7bSmrg cpu=hppa1.1 74594c9ab7bSmrg vendor=hitachi 74694c9ab7bSmrg basic_os=hiuxwe2 7478440cca4Smrg ;; 7488440cca4Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 74994c9ab7bSmrg cpu=hppa1.0 75094c9ab7bSmrg vendor=hp 7518440cca4Smrg ;; 7528440cca4Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 75394c9ab7bSmrg cpu=m68000 75494c9ab7bSmrg vendor=hp 7558440cca4Smrg ;; 7568440cca4Smrg hp9k3[2-9][0-9]) 75794c9ab7bSmrg cpu=m68k 75894c9ab7bSmrg vendor=hp 7598440cca4Smrg ;; 7608440cca4Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 76194c9ab7bSmrg cpu=hppa1.0 76294c9ab7bSmrg vendor=hp 7638440cca4Smrg ;; 7648440cca4Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 76594c9ab7bSmrg cpu=hppa1.1 76694c9ab7bSmrg vendor=hp 7678440cca4Smrg ;; 7688440cca4Smrg hp9k78[0-9] | hp78[0-9]) 7698440cca4Smrg # FIXME: really hppa2.0-hp 77094c9ab7bSmrg cpu=hppa1.1 77194c9ab7bSmrg vendor=hp 7728440cca4Smrg ;; 7738440cca4Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 7748440cca4Smrg # FIXME: really hppa2.0-hp 77594c9ab7bSmrg cpu=hppa1.1 77694c9ab7bSmrg vendor=hp 7778440cca4Smrg ;; 7788440cca4Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 77994c9ab7bSmrg cpu=hppa1.1 78094c9ab7bSmrg vendor=hp 7818440cca4Smrg ;; 7828440cca4Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 78394c9ab7bSmrg cpu=hppa1.0 78494c9ab7bSmrg vendor=hp 7858440cca4Smrg ;; 7868440cca4Smrg i*86v32) 78794c9ab7bSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 78894c9ab7bSmrg vendor=pc 78994c9ab7bSmrg basic_os=sysv32 7908440cca4Smrg ;; 7918440cca4Smrg i*86v4*) 79294c9ab7bSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79394c9ab7bSmrg vendor=pc 79494c9ab7bSmrg basic_os=sysv4 7958440cca4Smrg ;; 7968440cca4Smrg i*86v) 79794c9ab7bSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79894c9ab7bSmrg vendor=pc 79994c9ab7bSmrg basic_os=sysv 8008440cca4Smrg ;; 8018440cca4Smrg i*86sol2) 80294c9ab7bSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 80394c9ab7bSmrg vendor=pc 80494c9ab7bSmrg basic_os=solaris2 8058440cca4Smrg ;; 80694c9ab7bSmrg j90 | j90-cray) 80794c9ab7bSmrg cpu=j90 80894c9ab7bSmrg vendor=cray 80994c9ab7bSmrg basic_os=${basic_os:-unicos} 8108440cca4Smrg ;; 8118440cca4Smrg iris | iris4d) 81294c9ab7bSmrg cpu=mips 81394c9ab7bSmrg vendor=sgi 81494c9ab7bSmrg case $basic_os in 81594c9ab7bSmrg irix*) 8168440cca4Smrg ;; 8178440cca4Smrg *) 81894c9ab7bSmrg basic_os=irix4 8198440cca4Smrg ;; 8208440cca4Smrg esac 8218440cca4Smrg ;; 8228440cca4Smrg miniframe) 82394c9ab7bSmrg cpu=m68000 82494c9ab7bSmrg vendor=convergent 8258440cca4Smrg ;; 82694c9ab7bSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 82794c9ab7bSmrg cpu=m68k 82894c9ab7bSmrg vendor=atari 82994c9ab7bSmrg basic_os=mint 8308440cca4Smrg ;; 8318440cca4Smrg news-3600 | risc-news) 83294c9ab7bSmrg cpu=mips 83394c9ab7bSmrg vendor=sony 83494c9ab7bSmrg basic_os=newsos 8358440cca4Smrg ;; 83604449c54Smrg next | m*-next) 83794c9ab7bSmrg cpu=m68k 83894c9ab7bSmrg vendor=next 83994c9ab7bSmrg case $basic_os in 84094c9ab7bSmrg openstep*) 84194c9ab7bSmrg ;; 84294c9ab7bSmrg nextstep*) 8438440cca4Smrg ;; 84494c9ab7bSmrg ns2*) 84594c9ab7bSmrg basic_os=nextstep2 8468440cca4Smrg ;; 8478440cca4Smrg *) 84894c9ab7bSmrg basic_os=nextstep3 8498440cca4Smrg ;; 8508440cca4Smrg esac 8518440cca4Smrg ;; 8528440cca4Smrg np1) 85394c9ab7bSmrg cpu=np1 85494c9ab7bSmrg vendor=gould 85504449c54Smrg ;; 8568440cca4Smrg op50n-* | op60c-*) 85794c9ab7bSmrg cpu=hppa1.1 85894c9ab7bSmrg vendor=oki 85994c9ab7bSmrg basic_os=proelf 8608440cca4Smrg ;; 8618440cca4Smrg pa-hitachi) 86294c9ab7bSmrg cpu=hppa1.1 86394c9ab7bSmrg vendor=hitachi 86494c9ab7bSmrg basic_os=hiuxwe2 865d1c293acSmrg ;; 8668440cca4Smrg pbd) 86794c9ab7bSmrg cpu=sparc 86894c9ab7bSmrg vendor=tti 8698440cca4Smrg ;; 8708440cca4Smrg pbb) 87194c9ab7bSmrg cpu=m68k 87294c9ab7bSmrg vendor=tti 8738440cca4Smrg ;; 87494c9ab7bSmrg pc532) 87594c9ab7bSmrg cpu=ns32k 87694c9ab7bSmrg vendor=pc532 8778440cca4Smrg ;; 8788440cca4Smrg pn) 87994c9ab7bSmrg cpu=pn 88094c9ab7bSmrg vendor=gould 8818440cca4Smrg ;; 88294c9ab7bSmrg power) 88394c9ab7bSmrg cpu=power 88494c9ab7bSmrg vendor=ibm 8858440cca4Smrg ;; 88694c9ab7bSmrg ps2) 88794c9ab7bSmrg cpu=i386 88894c9ab7bSmrg vendor=ibm 8898440cca4Smrg ;; 89094c9ab7bSmrg rm[46]00) 89194c9ab7bSmrg cpu=mips 89294c9ab7bSmrg vendor=siemens 8938440cca4Smrg ;; 89494c9ab7bSmrg rtpc | rtpc-*) 89594c9ab7bSmrg cpu=romp 89694c9ab7bSmrg vendor=ibm 8978440cca4Smrg ;; 89894c9ab7bSmrg sde) 89994c9ab7bSmrg cpu=mipsisa32 90094c9ab7bSmrg vendor=sde 90194c9ab7bSmrg basic_os=${basic_os:-elf} 9028440cca4Smrg ;; 90394c9ab7bSmrg simso-wrs) 90494c9ab7bSmrg cpu=sparclite 90594c9ab7bSmrg vendor=wrs 90694c9ab7bSmrg basic_os=vxworks 9078440cca4Smrg ;; 90894c9ab7bSmrg tower | tower-32) 90994c9ab7bSmrg cpu=m68k 91094c9ab7bSmrg vendor=ncr 9118440cca4Smrg ;; 91294c9ab7bSmrg vpp*|vx|vx-*) 91394c9ab7bSmrg cpu=f301 91494c9ab7bSmrg vendor=fujitsu 91504449c54Smrg ;; 91694c9ab7bSmrg w65) 91794c9ab7bSmrg cpu=w65 91894c9ab7bSmrg vendor=wdc 919d1c293acSmrg ;; 92094c9ab7bSmrg w89k-*) 92194c9ab7bSmrg cpu=hppa1.1 92294c9ab7bSmrg vendor=winbond 92394c9ab7bSmrg basic_os=proelf 9248440cca4Smrg ;; 92594c9ab7bSmrg none) 92694c9ab7bSmrg cpu=none 92794c9ab7bSmrg vendor=none 9288440cca4Smrg ;; 92994c9ab7bSmrg leon|leon[3-9]) 93094c9ab7bSmrg cpu=sparc 93194c9ab7bSmrg vendor=$basic_machine 9328440cca4Smrg ;; 93394c9ab7bSmrg leon-*|leon[3-9]-*) 93494c9ab7bSmrg cpu=sparc 93594c9ab7bSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 936d1c293acSmrg ;; 93794c9ab7bSmrg 93894c9ab7bSmrg *-*) 93994c9ab7bSmrg # shellcheck disable=SC2162 94094c9ab7bSmrg saved_IFS=$IFS 94194c9ab7bSmrg IFS="-" read cpu vendor <<EOF 94294c9ab7bSmrg$basic_machine 94394c9ab7bSmrgEOF 94494c9ab7bSmrg IFS=$saved_IFS 945d1c293acSmrg ;; 94694c9ab7bSmrg # We use `pc' rather than `unknown' 94794c9ab7bSmrg # because (1) that's what they normally are, and 94894c9ab7bSmrg # (2) the word "unknown" tends to confuse beginning users. 94994c9ab7bSmrg i*86 | x86_64) 95094c9ab7bSmrg cpu=$basic_machine 95194c9ab7bSmrg vendor=pc 9528440cca4Smrg ;; 95394c9ab7bSmrg # These rules are duplicated from below for sake of the special case above; 95494c9ab7bSmrg # i.e. things that normalized to x86 arches should also default to "pc" 95594c9ab7bSmrg pc98) 95694c9ab7bSmrg cpu=i386 95794c9ab7bSmrg vendor=pc 9588440cca4Smrg ;; 95994c9ab7bSmrg x64 | amd64) 96094c9ab7bSmrg cpu=x86_64 96194c9ab7bSmrg vendor=pc 9628440cca4Smrg ;; 96394c9ab7bSmrg # Recognize the basic CPU types without company name. 96494c9ab7bSmrg *) 96594c9ab7bSmrg cpu=$basic_machine 96694c9ab7bSmrg vendor=unknown 967d1c293acSmrg ;; 96894c9ab7bSmrgesac 96994c9ab7bSmrg 97094c9ab7bSmrgunset -v basic_machine 97194c9ab7bSmrg 97294c9ab7bSmrg# Decode basic machines in the full and proper CPU-Company form. 97394c9ab7bSmrgcase $cpu-$vendor in 97494c9ab7bSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 97594c9ab7bSmrg # some cases the only manufacturer, in others, it is the most popular. 97694c9ab7bSmrg craynv-unknown) 97794c9ab7bSmrg vendor=cray 97894c9ab7bSmrg basic_os=${basic_os:-unicosmp} 9798440cca4Smrg ;; 98094c9ab7bSmrg c90-unknown | c90-cray) 98194c9ab7bSmrg vendor=cray 98294c9ab7bSmrg basic_os=${Basic_os:-unicos} 9838440cca4Smrg ;; 98494c9ab7bSmrg fx80-unknown) 98594c9ab7bSmrg vendor=alliant 986d1c293acSmrg ;; 98794c9ab7bSmrg romp-unknown) 98894c9ab7bSmrg vendor=ibm 9898440cca4Smrg ;; 99094c9ab7bSmrg mmix-unknown) 99194c9ab7bSmrg vendor=knuth 9928440cca4Smrg ;; 99394c9ab7bSmrg microblaze-unknown | microblazeel-unknown) 99494c9ab7bSmrg vendor=xilinx 9958440cca4Smrg ;; 99694c9ab7bSmrg rs6000-unknown) 99794c9ab7bSmrg vendor=ibm 9988440cca4Smrg ;; 99994c9ab7bSmrg vax-unknown) 100094c9ab7bSmrg vendor=dec 10018440cca4Smrg ;; 100294c9ab7bSmrg pdp11-unknown) 100394c9ab7bSmrg vendor=dec 100420915927Smrg ;; 100594c9ab7bSmrg we32k-unknown) 100694c9ab7bSmrg vendor=att 10078440cca4Smrg ;; 100894c9ab7bSmrg cydra-unknown) 100994c9ab7bSmrg vendor=cydrome 10108440cca4Smrg ;; 101194c9ab7bSmrg i370-ibm*) 101294c9ab7bSmrg vendor=ibm 10138440cca4Smrg ;; 101494c9ab7bSmrg orion-unknown) 101594c9ab7bSmrg vendor=highlevel 10168440cca4Smrg ;; 101794c9ab7bSmrg xps-unknown | xps100-unknown) 101894c9ab7bSmrg cpu=xps100 101994c9ab7bSmrg vendor=honeywell 10208440cca4Smrg ;; 102194c9ab7bSmrg 102294c9ab7bSmrg # Here we normalize CPU types with a missing or matching vendor 102394c9ab7bSmrg dpx20-unknown | dpx20-bull) 102494c9ab7bSmrg cpu=rs6000 102594c9ab7bSmrg vendor=bull 102694c9ab7bSmrg basic_os=${basic_os:-bosx} 10278440cca4Smrg ;; 102894c9ab7bSmrg 102994c9ab7bSmrg # Here we normalize CPU types irrespective of the vendor 103094c9ab7bSmrg amd64-*) 103194c9ab7bSmrg cpu=x86_64 10328440cca4Smrg ;; 103394c9ab7bSmrg blackfin-*) 103494c9ab7bSmrg cpu=bfin 103594c9ab7bSmrg basic_os=linux 10368440cca4Smrg ;; 103794c9ab7bSmrg c54x-*) 103894c9ab7bSmrg cpu=tic54x 10398440cca4Smrg ;; 104094c9ab7bSmrg c55x-*) 104194c9ab7bSmrg cpu=tic55x 10428440cca4Smrg ;; 104394c9ab7bSmrg c6x-*) 104494c9ab7bSmrg cpu=tic6x 10458440cca4Smrg ;; 104694c9ab7bSmrg e500v[12]-*) 104794c9ab7bSmrg cpu=powerpc 104894c9ab7bSmrg basic_os=${basic_os}"spe" 10498440cca4Smrg ;; 105094c9ab7bSmrg mips3*-*) 105194c9ab7bSmrg cpu=mips64 10528440cca4Smrg ;; 105394c9ab7bSmrg ms1-*) 105494c9ab7bSmrg cpu=mt 10558440cca4Smrg ;; 105694c9ab7bSmrg m68knommu-*) 105794c9ab7bSmrg cpu=m68k 105894c9ab7bSmrg basic_os=linux 10598440cca4Smrg ;; 106094c9ab7bSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 106194c9ab7bSmrg cpu=s12z 10628440cca4Smrg ;; 106394c9ab7bSmrg openrisc-*) 106494c9ab7bSmrg cpu=or32 10658440cca4Smrg ;; 106694c9ab7bSmrg parisc-*) 106794c9ab7bSmrg cpu=hppa 106894c9ab7bSmrg basic_os=linux 10698440cca4Smrg ;; 107094c9ab7bSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 107194c9ab7bSmrg cpu=i586 10728440cca4Smrg ;; 107394c9ab7bSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 107494c9ab7bSmrg cpu=i686 10758440cca4Smrg ;; 107694c9ab7bSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 107794c9ab7bSmrg cpu=i686 1078d1c293acSmrg ;; 107994c9ab7bSmrg pentium4-*) 108094c9ab7bSmrg cpu=i786 10818440cca4Smrg ;; 108294c9ab7bSmrg pc98-*) 108394c9ab7bSmrg cpu=i386 10848440cca4Smrg ;; 108594c9ab7bSmrg ppc-* | ppcbe-*) 108694c9ab7bSmrg cpu=powerpc 10878440cca4Smrg ;; 108894c9ab7bSmrg ppcle-* | powerpclittle-*) 108994c9ab7bSmrg cpu=powerpcle 10908440cca4Smrg ;; 109194c9ab7bSmrg ppc64-*) 109294c9ab7bSmrg cpu=powerpc64 10938440cca4Smrg ;; 109494c9ab7bSmrg ppc64le-* | powerpc64little-*) 109594c9ab7bSmrg cpu=powerpc64le 10968440cca4Smrg ;; 109794c9ab7bSmrg sb1-*) 109894c9ab7bSmrg cpu=mipsisa64sb1 10998440cca4Smrg ;; 110094c9ab7bSmrg sb1el-*) 110194c9ab7bSmrg cpu=mipsisa64sb1el 11028440cca4Smrg ;; 110394c9ab7bSmrg sh5e[lb]-*) 110494c9ab7bSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 11058440cca4Smrg ;; 110694c9ab7bSmrg spur-*) 110794c9ab7bSmrg cpu=spur 11088440cca4Smrg ;; 110994c9ab7bSmrg strongarm-* | thumb-*) 111094c9ab7bSmrg cpu=arm 11118440cca4Smrg ;; 111294c9ab7bSmrg tx39-*) 111394c9ab7bSmrg cpu=mipstx39 111404449c54Smrg ;; 111594c9ab7bSmrg tx39el-*) 111694c9ab7bSmrg cpu=mipstx39el 1117d1c293acSmrg ;; 111894c9ab7bSmrg x64-*) 111994c9ab7bSmrg cpu=x86_64 11208440cca4Smrg ;; 112120915927Smrg xscale-* | xscalee[bl]-*) 112294c9ab7bSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 11238440cca4Smrg ;; 112494c9ab7bSmrg arm64-*) 112594c9ab7bSmrg cpu=aarch64 11268440cca4Smrg ;; 11278440cca4Smrg 112894c9ab7bSmrg # Recognize the canonical CPU Types that limit and/or modify the 112994c9ab7bSmrg # company names they are paired with. 113094c9ab7bSmrg cr16-*) 113194c9ab7bSmrg basic_os=${basic_os:-elf} 1132d1c293acSmrg ;; 113394c9ab7bSmrg crisv32-* | etraxfs*-*) 113494c9ab7bSmrg cpu=crisv32 113594c9ab7bSmrg vendor=axis 11368440cca4Smrg ;; 113794c9ab7bSmrg cris-* | etrax*-*) 113894c9ab7bSmrg cpu=cris 113994c9ab7bSmrg vendor=axis 11408440cca4Smrg ;; 114194c9ab7bSmrg crx-*) 114294c9ab7bSmrg basic_os=${basic_os:-elf} 11438440cca4Smrg ;; 114494c9ab7bSmrg neo-tandem) 114594c9ab7bSmrg cpu=neo 114694c9ab7bSmrg vendor=tandem 11478440cca4Smrg ;; 114894c9ab7bSmrg nse-tandem) 114994c9ab7bSmrg cpu=nse 115094c9ab7bSmrg vendor=tandem 11518440cca4Smrg ;; 115294c9ab7bSmrg nsr-tandem) 115394c9ab7bSmrg cpu=nsr 115494c9ab7bSmrg vendor=tandem 11558440cca4Smrg ;; 115694c9ab7bSmrg nsv-tandem) 115794c9ab7bSmrg cpu=nsv 115894c9ab7bSmrg vendor=tandem 11598440cca4Smrg ;; 116094c9ab7bSmrg nsx-tandem) 116194c9ab7bSmrg cpu=nsx 116294c9ab7bSmrg vendor=tandem 11638440cca4Smrg ;; 116494c9ab7bSmrg mipsallegrexel-sony) 116594c9ab7bSmrg cpu=mipsallegrexel 116694c9ab7bSmrg vendor=sony 11678440cca4Smrg ;; 116894c9ab7bSmrg tile*-*) 116994c9ab7bSmrg basic_os=${basic_os:-linux-gnu} 11708440cca4Smrg ;; 117194c9ab7bSmrg 11728440cca4Smrg *) 117394c9ab7bSmrg # Recognize the canonical CPU types that are allowed with any 117494c9ab7bSmrg # company name. 117594c9ab7bSmrg case $cpu in 117694c9ab7bSmrg 1750a | 580 \ 117794c9ab7bSmrg | a29k \ 117894c9ab7bSmrg | aarch64 | aarch64_be \ 117994c9ab7bSmrg | abacus \ 118094c9ab7bSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 118194c9ab7bSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 118294c9ab7bSmrg | alphapca5[67] | alpha64pca5[67] \ 118394c9ab7bSmrg | am33_2.0 \ 118494c9ab7bSmrg | amdgcn \ 118594c9ab7bSmrg | arc | arceb | arc32 | arc64 \ 118694c9ab7bSmrg | arm | arm[lb]e | arme[lb] | armv* \ 118794c9ab7bSmrg | avr | avr32 \ 118894c9ab7bSmrg | asmjs \ 118994c9ab7bSmrg | ba \ 119094c9ab7bSmrg | be32 | be64 \ 119194c9ab7bSmrg | bfin | bpf | bs2000 \ 119294c9ab7bSmrg | c[123]* | c30 | [cjt]90 | c4x \ 119394c9ab7bSmrg | c8051 | clipper | craynv | csky | cydra \ 119494c9ab7bSmrg | d10v | d30v | dlx | dsp16xx \ 119594c9ab7bSmrg | e2k | elxsi | epiphany \ 119694c9ab7bSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 119794c9ab7bSmrg | h8300 | h8500 \ 119894c9ab7bSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 119994c9ab7bSmrg | hexagon \ 120094c9ab7bSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 120194c9ab7bSmrg | ip2k | iq2000 \ 120294c9ab7bSmrg | k1om \ 120394c9ab7bSmrg | le32 | le64 \ 120494c9ab7bSmrg | lm32 \ 120594c9ab7bSmrg | loongarch32 | loongarch64 | loongarchx32 \ 120694c9ab7bSmrg | m32c | m32r | m32rle \ 120794c9ab7bSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 120894c9ab7bSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 120994c9ab7bSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 121094c9ab7bSmrg | microblaze | microblazeel \ 121194c9ab7bSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 121294c9ab7bSmrg | mips16 \ 121394c9ab7bSmrg | mips64 | mips64eb | mips64el \ 121494c9ab7bSmrg | mips64octeon | mips64octeonel \ 121594c9ab7bSmrg | mips64orion | mips64orionel \ 121694c9ab7bSmrg | mips64r5900 | mips64r5900el \ 121794c9ab7bSmrg | mips64vr | mips64vrel \ 121894c9ab7bSmrg | mips64vr4100 | mips64vr4100el \ 121994c9ab7bSmrg | mips64vr4300 | mips64vr4300el \ 122094c9ab7bSmrg | mips64vr5000 | mips64vr5000el \ 122194c9ab7bSmrg | mips64vr5900 | mips64vr5900el \ 122294c9ab7bSmrg | mipsisa32 | mipsisa32el \ 122394c9ab7bSmrg | mipsisa32r2 | mipsisa32r2el \ 122494c9ab7bSmrg | mipsisa32r3 | mipsisa32r3el \ 122594c9ab7bSmrg | mipsisa32r5 | mipsisa32r5el \ 122694c9ab7bSmrg | mipsisa32r6 | mipsisa32r6el \ 122794c9ab7bSmrg | mipsisa64 | mipsisa64el \ 122894c9ab7bSmrg | mipsisa64r2 | mipsisa64r2el \ 122994c9ab7bSmrg | mipsisa64r3 | mipsisa64r3el \ 123094c9ab7bSmrg | mipsisa64r5 | mipsisa64r5el \ 123194c9ab7bSmrg | mipsisa64r6 | mipsisa64r6el \ 123294c9ab7bSmrg | mipsisa64sb1 | mipsisa64sb1el \ 123394c9ab7bSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 123494c9ab7bSmrg | mipsr5900 | mipsr5900el \ 123594c9ab7bSmrg | mipstx39 | mipstx39el \ 123694c9ab7bSmrg | mmix \ 123794c9ab7bSmrg | mn10200 | mn10300 \ 123894c9ab7bSmrg | moxie \ 123994c9ab7bSmrg | mt \ 124094c9ab7bSmrg | msp430 \ 124194c9ab7bSmrg | nds32 | nds32le | nds32be \ 124294c9ab7bSmrg | nfp \ 124394c9ab7bSmrg | nios | nios2 | nios2eb | nios2el \ 124494c9ab7bSmrg | none | np1 | ns16k | ns32k | nvptx \ 124594c9ab7bSmrg | open8 \ 124694c9ab7bSmrg | or1k* \ 124794c9ab7bSmrg | or32 \ 124894c9ab7bSmrg | orion \ 124994c9ab7bSmrg | picochip \ 125094c9ab7bSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 125194c9ab7bSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 125294c9ab7bSmrg | pru \ 125394c9ab7bSmrg | pyramid \ 125494c9ab7bSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 125594c9ab7bSmrg | rl78 | romp | rs6000 | rx \ 125694c9ab7bSmrg | s390 | s390x \ 125794c9ab7bSmrg | score \ 125894c9ab7bSmrg | sh | shl \ 125994c9ab7bSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 126094c9ab7bSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 126194c9ab7bSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 126294c9ab7bSmrg | sparclite \ 126394c9ab7bSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 126494c9ab7bSmrg | spu \ 126594c9ab7bSmrg | tahoe \ 126694c9ab7bSmrg | thumbv7* \ 126794c9ab7bSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 126894c9ab7bSmrg | tron \ 126994c9ab7bSmrg | ubicom32 \ 127094c9ab7bSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 127194c9ab7bSmrg | vax \ 127294c9ab7bSmrg | visium \ 127394c9ab7bSmrg | w65 \ 127494c9ab7bSmrg | wasm32 | wasm64 \ 127594c9ab7bSmrg | we32k \ 127694c9ab7bSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 127794c9ab7bSmrg | xstormy16 | xtensa* \ 127894c9ab7bSmrg | ymp \ 127994c9ab7bSmrg | z8k | z80) 128094c9ab7bSmrg ;; 128194c9ab7bSmrg 128294c9ab7bSmrg *) 128394c9ab7bSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 128494c9ab7bSmrg exit 1 128594c9ab7bSmrg ;; 128694c9ab7bSmrg esac 12878440cca4Smrg ;; 12888440cca4Smrgesac 12898440cca4Smrg 12908440cca4Smrg# Here we canonicalize certain aliases for manufacturers. 129194c9ab7bSmrgcase $vendor in 129294c9ab7bSmrg digital*) 129394c9ab7bSmrg vendor=dec 12948440cca4Smrg ;; 129594c9ab7bSmrg commodore*) 129694c9ab7bSmrg vendor=cbm 12978440cca4Smrg ;; 12988440cca4Smrg *) 12998440cca4Smrg ;; 13008440cca4Smrgesac 13018440cca4Smrg 13028440cca4Smrg# Decode manufacturer-specific aliases for certain operating systems. 13038440cca4Smrg 130494c9ab7bSmrgif test x$basic_os != x 13058440cca4Smrgthen 130694c9ab7bSmrg 130794c9ab7bSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 130894c9ab7bSmrg# set os. 130994c9ab7bSmrgcase $basic_os in 131094c9ab7bSmrg gnu/linux*) 131194c9ab7bSmrg kernel=linux 131294c9ab7bSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 131394c9ab7bSmrg ;; 131494c9ab7bSmrg os2-emx) 131594c9ab7bSmrg kernel=os2 131694c9ab7bSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 131794c9ab7bSmrg ;; 131894c9ab7bSmrg nto-qnx*) 131994c9ab7bSmrg kernel=nto 132094c9ab7bSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 132194c9ab7bSmrg ;; 132294c9ab7bSmrg *-*) 132394c9ab7bSmrg # shellcheck disable=SC2162 132494c9ab7bSmrg saved_IFS=$IFS 132594c9ab7bSmrg IFS="-" read kernel os <<EOF 132694c9ab7bSmrg$basic_os 132794c9ab7bSmrgEOF 132894c9ab7bSmrg IFS=$saved_IFS 132994c9ab7bSmrg ;; 133094c9ab7bSmrg # Default OS when just kernel was specified 133194c9ab7bSmrg nto*) 133294c9ab7bSmrg kernel=nto 133394c9ab7bSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 133494c9ab7bSmrg ;; 133594c9ab7bSmrg linux*) 133694c9ab7bSmrg kernel=linux 133794c9ab7bSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 133894c9ab7bSmrg ;; 133994c9ab7bSmrg *) 134094c9ab7bSmrg kernel= 134194c9ab7bSmrg os=$basic_os 134294c9ab7bSmrg ;; 134394c9ab7bSmrgesac 134494c9ab7bSmrg 134594c9ab7bSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 134694c9ab7bSmrg# etc.) 13478440cca4Smrgcase $os in 134804449c54Smrg # First match some system type aliases that might get confused 134904449c54Smrg # with valid system types. 135094c9ab7bSmrg # solaris* is a basic system type, with this one exception. 135194c9ab7bSmrg auroraux) 135294c9ab7bSmrg os=auroraux 1353d1c293acSmrg ;; 135494c9ab7bSmrg bluegene*) 135594c9ab7bSmrg os=cnk 13568440cca4Smrg ;; 135794c9ab7bSmrg solaris1 | solaris1.*) 135894c9ab7bSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 13598440cca4Smrg ;; 136094c9ab7bSmrg solaris) 136194c9ab7bSmrg os=solaris2 13628440cca4Smrg ;; 136394c9ab7bSmrg unixware*) 136494c9ab7bSmrg os=sysv4.2uw 13658440cca4Smrg ;; 136604449c54Smrg # es1800 is here to avoid being matched by es* (a different OS) 136794c9ab7bSmrg es1800*) 136894c9ab7bSmrg os=ose 136904449c54Smrg ;; 137094c9ab7bSmrg # Some version numbers need modification 137194c9ab7bSmrg chorusos*) 137294c9ab7bSmrg os=chorusos 13738440cca4Smrg ;; 137494c9ab7bSmrg isc) 137594c9ab7bSmrg os=isc2.2 13768440cca4Smrg ;; 137794c9ab7bSmrg sco6) 137894c9ab7bSmrg os=sco5v6 13798440cca4Smrg ;; 138094c9ab7bSmrg sco5) 138194c9ab7bSmrg os=sco3.2v5 13828440cca4Smrg ;; 138394c9ab7bSmrg sco4) 138494c9ab7bSmrg os=sco3.2v4 13858440cca4Smrg ;; 138694c9ab7bSmrg sco3.2.[4-9]*) 138794c9ab7bSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1388d1c293acSmrg ;; 138994c9ab7bSmrg sco*v* | scout) 139094c9ab7bSmrg # Don't match below 13918440cca4Smrg ;; 139294c9ab7bSmrg sco*) 139394c9ab7bSmrg os=sco3.2v2 13948440cca4Smrg ;; 139594c9ab7bSmrg psos*) 139694c9ab7bSmrg os=psos 13978440cca4Smrg ;; 139894c9ab7bSmrg qnx*) 139994c9ab7bSmrg os=qnx 14008440cca4Smrg ;; 140194c9ab7bSmrg hiux*) 140294c9ab7bSmrg os=hiuxwe2 1403d1c293acSmrg ;; 140494c9ab7bSmrg lynx*178) 140594c9ab7bSmrg os=lynxos178 14068440cca4Smrg ;; 140794c9ab7bSmrg lynx*5) 140894c9ab7bSmrg os=lynxos5 14098440cca4Smrg ;; 141094c9ab7bSmrg lynxos*) 141194c9ab7bSmrg # don't get caught up in next wildcard 14128440cca4Smrg ;; 141394c9ab7bSmrg lynx*) 141494c9ab7bSmrg os=lynxos 14158440cca4Smrg ;; 141694c9ab7bSmrg mac[0-9]*) 141794c9ab7bSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 14188440cca4Smrg ;; 141994c9ab7bSmrg opened*) 142094c9ab7bSmrg os=openedition 1421d1c293acSmrg ;; 142294c9ab7bSmrg os400*) 142394c9ab7bSmrg os=os400 14248440cca4Smrg ;; 142594c9ab7bSmrg sunos5*) 142694c9ab7bSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 14278440cca4Smrg ;; 142894c9ab7bSmrg sunos6*) 142994c9ab7bSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 14308440cca4Smrg ;; 143194c9ab7bSmrg wince*) 143294c9ab7bSmrg os=wince 14338440cca4Smrg ;; 143494c9ab7bSmrg utek*) 143594c9ab7bSmrg os=bsd 14368440cca4Smrg ;; 143794c9ab7bSmrg dynix*) 143894c9ab7bSmrg os=bsd 14398440cca4Smrg ;; 144094c9ab7bSmrg acis*) 144194c9ab7bSmrg os=aos 14428440cca4Smrg ;; 144394c9ab7bSmrg atheos*) 144494c9ab7bSmrg os=atheos 1445d1c293acSmrg ;; 144694c9ab7bSmrg syllable*) 144794c9ab7bSmrg os=syllable 144894c9ab7bSmrg ;; 144994c9ab7bSmrg 386bsd) 145094c9ab7bSmrg os=bsd 145194c9ab7bSmrg ;; 145294c9ab7bSmrg ctix* | uts*) 145394c9ab7bSmrg os=sysv 145494c9ab7bSmrg ;; 145594c9ab7bSmrg nova*) 145694c9ab7bSmrg os=rtmk-nova 145794c9ab7bSmrg ;; 145894c9ab7bSmrg ns2) 145994c9ab7bSmrg os=nextstep2 146094c9ab7bSmrg ;; 146194c9ab7bSmrg # Preserve the version number of sinix5. 146294c9ab7bSmrg sinix5.*) 146394c9ab7bSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 14648440cca4Smrg ;; 146594c9ab7bSmrg sinix*) 146694c9ab7bSmrg os=sysv4 14678440cca4Smrg ;; 146894c9ab7bSmrg tpf*) 146994c9ab7bSmrg os=tpf 14708440cca4Smrg ;; 147194c9ab7bSmrg triton*) 147294c9ab7bSmrg os=sysv3 14738440cca4Smrg ;; 147494c9ab7bSmrg oss*) 147594c9ab7bSmrg os=sysv3 14768440cca4Smrg ;; 147794c9ab7bSmrg svr4*) 147894c9ab7bSmrg os=sysv4 14798440cca4Smrg ;; 148094c9ab7bSmrg svr3) 148194c9ab7bSmrg os=sysv3 14828440cca4Smrg ;; 148394c9ab7bSmrg sysvr4) 148494c9ab7bSmrg os=sysv4 14858440cca4Smrg ;; 148694c9ab7bSmrg ose*) 148794c9ab7bSmrg os=ose 1488d1c293acSmrg ;; 148994c9ab7bSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 149094c9ab7bSmrg os=mint 1491d1c293acSmrg ;; 149294c9ab7bSmrg dicos*) 149394c9ab7bSmrg os=dicos 149494c9ab7bSmrg ;; 149594c9ab7bSmrg pikeos*) 149604449c54Smrg # Until real need of OS specific support for 149704449c54Smrg # particular features comes up, bare metal 149804449c54Smrg # configurations are quite functional. 149994c9ab7bSmrg case $cpu in 150004449c54Smrg arm*) 150194c9ab7bSmrg os=eabi 150204449c54Smrg ;; 150304449c54Smrg *) 150494c9ab7bSmrg os=elf 150504449c54Smrg ;; 150604449c54Smrg esac 150704449c54Smrg ;; 15088440cca4Smrg *) 150994c9ab7bSmrg # No normalization, but not necessarily accepted, that comes below. 15108440cca4Smrg ;; 15118440cca4Smrgesac 151294c9ab7bSmrg 15138440cca4Smrgelse 15148440cca4Smrg 15158440cca4Smrg# Here we handle the default operating systems that come with various machines. 15168440cca4Smrg# The value should be what the vendor currently ships out the door with their 15178440cca4Smrg# machine or put another way, the most popular os provided with the machine. 15188440cca4Smrg 15198440cca4Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 15208440cca4Smrg# "-sun"), then you have to tell the case statement up towards the top 15218440cca4Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 15228440cca4Smrg# will signal an error saying that MANUFACTURER isn't an operating 15238440cca4Smrg# system, and we'll never get to this point. 15248440cca4Smrg 152594c9ab7bSmrgkernel= 152694c9ab7bSmrgcase $cpu-$vendor in 152720915927Smrg score-*) 152894c9ab7bSmrg os=elf 1529d1c293acSmrg ;; 153020915927Smrg spu-*) 153194c9ab7bSmrg os=elf 1532d1c293acSmrg ;; 15338440cca4Smrg *-acorn) 153494c9ab7bSmrg os=riscix1.2 15358440cca4Smrg ;; 15368440cca4Smrg arm*-rebel) 153794c9ab7bSmrg kernel=linux 153894c9ab7bSmrg os=gnu 15398440cca4Smrg ;; 15408440cca4Smrg arm*-semi) 154194c9ab7bSmrg os=aout 15428440cca4Smrg ;; 154320915927Smrg c4x-* | tic4x-*) 154494c9ab7bSmrg os=coff 1545d1c293acSmrg ;; 154604449c54Smrg c8051-*) 154794c9ab7bSmrg os=elf 154894c9ab7bSmrg ;; 154994c9ab7bSmrg clipper-intergraph) 155094c9ab7bSmrg os=clix 155104449c54Smrg ;; 155204449c54Smrg hexagon-*) 155394c9ab7bSmrg os=elf 155404449c54Smrg ;; 1555d1c293acSmrg tic54x-*) 155694c9ab7bSmrg os=coff 1557d1c293acSmrg ;; 1558d1c293acSmrg tic55x-*) 155994c9ab7bSmrg os=coff 1560d1c293acSmrg ;; 1561d1c293acSmrg tic6x-*) 156294c9ab7bSmrg os=coff 15638440cca4Smrg ;; 15648440cca4Smrg # This must come before the *-dec entry. 15658440cca4Smrg pdp10-*) 156694c9ab7bSmrg os=tops20 15678440cca4Smrg ;; 15688440cca4Smrg pdp11-*) 156994c9ab7bSmrg os=none 15708440cca4Smrg ;; 15718440cca4Smrg *-dec | vax-*) 157294c9ab7bSmrg os=ultrix4.2 15738440cca4Smrg ;; 15748440cca4Smrg m68*-apollo) 157594c9ab7bSmrg os=domain 15768440cca4Smrg ;; 15778440cca4Smrg i386-sun) 157894c9ab7bSmrg os=sunos4.0.2 15798440cca4Smrg ;; 15808440cca4Smrg m68000-sun) 158194c9ab7bSmrg os=sunos3 15828440cca4Smrg ;; 15838440cca4Smrg m68*-cisco) 158494c9ab7bSmrg os=aout 15858440cca4Smrg ;; 158620915927Smrg mep-*) 158794c9ab7bSmrg os=elf 1588d1c293acSmrg ;; 15898440cca4Smrg mips*-cisco) 159094c9ab7bSmrg os=elf 15918440cca4Smrg ;; 15928440cca4Smrg mips*-*) 159394c9ab7bSmrg os=elf 15948440cca4Smrg ;; 15958440cca4Smrg or32-*) 159694c9ab7bSmrg os=coff 15978440cca4Smrg ;; 15988440cca4Smrg *-tti) # must be before sparc entry or we get the wrong os. 159994c9ab7bSmrg os=sysv3 16008440cca4Smrg ;; 16018440cca4Smrg sparc-* | *-sun) 160294c9ab7bSmrg os=sunos4.1.1 16038440cca4Smrg ;; 160404449c54Smrg pru-*) 160594c9ab7bSmrg os=elf 160604449c54Smrg ;; 16078440cca4Smrg *-be) 160894c9ab7bSmrg os=beos 16098440cca4Smrg ;; 16108440cca4Smrg *-ibm) 161194c9ab7bSmrg os=aix 16128440cca4Smrg ;; 161320915927Smrg *-knuth) 161494c9ab7bSmrg os=mmixware 1615d1c293acSmrg ;; 16168440cca4Smrg *-wec) 161794c9ab7bSmrg os=proelf 16188440cca4Smrg ;; 16198440cca4Smrg *-winbond) 162094c9ab7bSmrg os=proelf 16218440cca4Smrg ;; 16228440cca4Smrg *-oki) 162394c9ab7bSmrg os=proelf 16248440cca4Smrg ;; 16258440cca4Smrg *-hp) 162694c9ab7bSmrg os=hpux 16278440cca4Smrg ;; 16288440cca4Smrg *-hitachi) 162994c9ab7bSmrg os=hiux 16308440cca4Smrg ;; 16318440cca4Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 163294c9ab7bSmrg os=sysv 16338440cca4Smrg ;; 16348440cca4Smrg *-cbm) 163594c9ab7bSmrg os=amigaos 16368440cca4Smrg ;; 16378440cca4Smrg *-dg) 163894c9ab7bSmrg os=dgux 16398440cca4Smrg ;; 16408440cca4Smrg *-dolphin) 164194c9ab7bSmrg os=sysv3 16428440cca4Smrg ;; 16438440cca4Smrg m68k-ccur) 164494c9ab7bSmrg os=rtu 16458440cca4Smrg ;; 16468440cca4Smrg m88k-omron*) 164794c9ab7bSmrg os=luna 16488440cca4Smrg ;; 164904449c54Smrg *-next) 165094c9ab7bSmrg os=nextstep 16518440cca4Smrg ;; 16528440cca4Smrg *-sequent) 165394c9ab7bSmrg os=ptx 16548440cca4Smrg ;; 16558440cca4Smrg *-crds) 165694c9ab7bSmrg os=unos 16578440cca4Smrg ;; 16588440cca4Smrg *-ns) 165994c9ab7bSmrg os=genix 16608440cca4Smrg ;; 16618440cca4Smrg i370-*) 166294c9ab7bSmrg os=mvs 16638440cca4Smrg ;; 16648440cca4Smrg *-gould) 166594c9ab7bSmrg os=sysv 16668440cca4Smrg ;; 16678440cca4Smrg *-highlevel) 166894c9ab7bSmrg os=bsd 16698440cca4Smrg ;; 16708440cca4Smrg *-encore) 167194c9ab7bSmrg os=bsd 16728440cca4Smrg ;; 16738440cca4Smrg *-sgi) 167494c9ab7bSmrg os=irix 16758440cca4Smrg ;; 16768440cca4Smrg *-siemens) 167794c9ab7bSmrg os=sysv4 16788440cca4Smrg ;; 16798440cca4Smrg *-masscomp) 168094c9ab7bSmrg os=rtu 16818440cca4Smrg ;; 16828440cca4Smrg f30[01]-fujitsu | f700-fujitsu) 168394c9ab7bSmrg os=uxpv 16848440cca4Smrg ;; 16858440cca4Smrg *-rom68k) 168694c9ab7bSmrg os=coff 16878440cca4Smrg ;; 16888440cca4Smrg *-*bug) 168994c9ab7bSmrg os=coff 16908440cca4Smrg ;; 16918440cca4Smrg *-apple) 169294c9ab7bSmrg os=macos 16938440cca4Smrg ;; 16948440cca4Smrg *-atari*) 169594c9ab7bSmrg os=mint 169694c9ab7bSmrg ;; 169794c9ab7bSmrg *-wrs) 169894c9ab7bSmrg os=vxworks 16998440cca4Smrg ;; 17008440cca4Smrg *) 170194c9ab7bSmrg os=none 17028440cca4Smrg ;; 17038440cca4Smrgesac 170494c9ab7bSmrg 17058440cca4Smrgfi 17068440cca4Smrg 170794c9ab7bSmrg# Now, validate our (potentially fixed-up) OS. 170894c9ab7bSmrgcase $os in 170994c9ab7bSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 171094c9ab7bSmrg musl* | newlib* | relibc* | uclibc*) 171194c9ab7bSmrg ;; 171294c9ab7bSmrg # Likewise for "kernel-abi" 171394c9ab7bSmrg eabi* | gnueabi*) 171494c9ab7bSmrg ;; 171594c9ab7bSmrg # VxWorks passes extra cpu info in the 4th filed. 171694c9ab7bSmrg simlinux | simwindows | spe) 171794c9ab7bSmrg ;; 171894c9ab7bSmrg # Now accept the basic system types. 171994c9ab7bSmrg # The portable systems comes first. 172094c9ab7bSmrg # Each alternative MUST end in a * to match a version number. 172194c9ab7bSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 172294c9ab7bSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 172394c9ab7bSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 172494c9ab7bSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 172594c9ab7bSmrg | hiux* | abug | nacl* | netware* | windows* \ 172694c9ab7bSmrg | os9* | macos* | osx* | ios* \ 172794c9ab7bSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 172894c9ab7bSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 172994c9ab7bSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 173094c9ab7bSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 173194c9ab7bSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 173294c9ab7bSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 173394c9ab7bSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 173494c9ab7bSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 173594c9ab7bSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 173694c9ab7bSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 173794c9ab7bSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 173894c9ab7bSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 173994c9ab7bSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 174094c9ab7bSmrg | midipix* | mingw32* | mingw64* | mint* \ 174194c9ab7bSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 174294c9ab7bSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 174394c9ab7bSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 174494c9ab7bSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 174594c9ab7bSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 174694c9ab7bSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 174794c9ab7bSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 174894c9ab7bSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 174994c9ab7bSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 175094c9ab7bSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 175194c9ab7bSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 175294c9ab7bSmrg ;; 175394c9ab7bSmrg # This one is extra strict with allowed versions 175494c9ab7bSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 175594c9ab7bSmrg # Don't forget version if it is 3.2v4 or newer. 175694c9ab7bSmrg ;; 175794c9ab7bSmrg none) 175894c9ab7bSmrg ;; 175994c9ab7bSmrg *) 176094c9ab7bSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 176194c9ab7bSmrg exit 1 176294c9ab7bSmrg ;; 176394c9ab7bSmrgesac 176494c9ab7bSmrg 176594c9ab7bSmrg# As a final step for OS-related things, validate the OS-kernel combination 176694c9ab7bSmrg# (given a valid OS), if there is a kernel. 176794c9ab7bSmrgcase $kernel-$os in 176894c9ab7bSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 176994c9ab7bSmrg | linux-musl* | linux-relibc* | linux-uclibc* ) 177094c9ab7bSmrg ;; 177194c9ab7bSmrg uclinux-uclibc* ) 177294c9ab7bSmrg ;; 177394c9ab7bSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 177494c9ab7bSmrg # These are just libc implementations, not actual OSes, and thus 177594c9ab7bSmrg # require a kernel. 177694c9ab7bSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 177794c9ab7bSmrg exit 1 177894c9ab7bSmrg ;; 177994c9ab7bSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 178094c9ab7bSmrg ;; 178194c9ab7bSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 178294c9ab7bSmrg ;; 178394c9ab7bSmrg nto-qnx*) 178494c9ab7bSmrg ;; 178594c9ab7bSmrg os2-emx) 178694c9ab7bSmrg ;; 178794c9ab7bSmrg *-eabi* | *-gnueabi*) 178894c9ab7bSmrg ;; 178994c9ab7bSmrg -*) 179094c9ab7bSmrg # Blank kernel with real OS is always fine. 179194c9ab7bSmrg ;; 179294c9ab7bSmrg *-*) 179394c9ab7bSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 179494c9ab7bSmrg exit 1 179594c9ab7bSmrg ;; 179694c9ab7bSmrgesac 179794c9ab7bSmrg 17988440cca4Smrg# Here we handle the case where we know the os, and the CPU type, but not the 17998440cca4Smrg# manufacturer. We pick the logical manufacturer. 180094c9ab7bSmrgcase $vendor in 180194c9ab7bSmrg unknown) 180294c9ab7bSmrg case $cpu-$os in 180394c9ab7bSmrg *-riscix*) 18048440cca4Smrg vendor=acorn 18058440cca4Smrg ;; 180694c9ab7bSmrg *-sunos*) 18078440cca4Smrg vendor=sun 18088440cca4Smrg ;; 180994c9ab7bSmrg *-cnk* | *-aix*) 18108440cca4Smrg vendor=ibm 18118440cca4Smrg ;; 181294c9ab7bSmrg *-beos*) 18138440cca4Smrg vendor=be 18148440cca4Smrg ;; 181594c9ab7bSmrg *-hpux*) 18168440cca4Smrg vendor=hp 18178440cca4Smrg ;; 181894c9ab7bSmrg *-mpeix*) 18198440cca4Smrg vendor=hp 18208440cca4Smrg ;; 182194c9ab7bSmrg *-hiux*) 18228440cca4Smrg vendor=hitachi 18238440cca4Smrg ;; 182494c9ab7bSmrg *-unos*) 18258440cca4Smrg vendor=crds 18268440cca4Smrg ;; 182794c9ab7bSmrg *-dgux*) 18288440cca4Smrg vendor=dg 18298440cca4Smrg ;; 183094c9ab7bSmrg *-luna*) 18318440cca4Smrg vendor=omron 18328440cca4Smrg ;; 183394c9ab7bSmrg *-genix*) 18348440cca4Smrg vendor=ns 18358440cca4Smrg ;; 183694c9ab7bSmrg *-clix*) 183794c9ab7bSmrg vendor=intergraph 183894c9ab7bSmrg ;; 183994c9ab7bSmrg *-mvs* | *-opened*) 184094c9ab7bSmrg vendor=ibm 184194c9ab7bSmrg ;; 184294c9ab7bSmrg *-os400*) 18438440cca4Smrg vendor=ibm 18448440cca4Smrg ;; 184594c9ab7bSmrg s390-* | s390x-*) 1846d1c293acSmrg vendor=ibm 1847d1c293acSmrg ;; 184894c9ab7bSmrg *-ptx*) 18498440cca4Smrg vendor=sequent 18508440cca4Smrg ;; 185194c9ab7bSmrg *-tpf*) 1852d1c293acSmrg vendor=ibm 1853d1c293acSmrg ;; 185494c9ab7bSmrg *-vxsim* | *-vxworks* | *-windiss*) 18558440cca4Smrg vendor=wrs 18568440cca4Smrg ;; 185794c9ab7bSmrg *-aux*) 18588440cca4Smrg vendor=apple 18598440cca4Smrg ;; 186094c9ab7bSmrg *-hms*) 18618440cca4Smrg vendor=hitachi 18628440cca4Smrg ;; 186394c9ab7bSmrg *-mpw* | *-macos*) 18648440cca4Smrg vendor=apple 18658440cca4Smrg ;; 186694c9ab7bSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 18678440cca4Smrg vendor=atari 18688440cca4Smrg ;; 186994c9ab7bSmrg *-vos*) 18708440cca4Smrg vendor=stratus 18718440cca4Smrg ;; 18728440cca4Smrg esac 18738440cca4Smrg ;; 18748440cca4Smrgesac 18758440cca4Smrg 187694c9ab7bSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1877d1c293acSmrgexit 18788440cca4Smrg 18798440cca4Smrg# Local variables: 188094c9ab7bSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 18818440cca4Smrg# time-stamp-start: "timestamp='" 18828440cca4Smrg# time-stamp-format: "%:y-%02m-%02d" 18838440cca4Smrg# time-stamp-end: "'" 18848440cca4Smrg# End: 1885