config.sub revision 9ab56c27
18c9fbc29Smrg#! /bin/sh 28c9fbc29Smrg# Configuration validation subroutine script. 39ab56c27Smrg# Copyright 1992-2022 Free Software Foundation, Inc. 48c9fbc29Smrg 554cef2ddSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 654cef2ddSmrg 79ab56c27Smrgtimestamp='2022-09-17' 88c9fbc29Smrg 970728a38Smrg# This file is free software; you can redistribute it and/or modify it 1070728a38Smrg# under the terms of the GNU General Public License as published by 119ab56c27Smrg# the Free Software Foundation, either version 3 of the License, or 128c9fbc29Smrg# (at your option) any later version. 138c9fbc29Smrg# 1470728a38Smrg# This program is distributed in the hope that it will be useful, but 1570728a38Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 1670728a38Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1770728a38Smrg# General Public License for more details. 188c9fbc29Smrg# 198c9fbc29Smrg# You should have received a copy of the GNU General Public License 2054044362Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 218c9fbc29Smrg# 228c9fbc29Smrg# As a special exception to the GNU General Public License, if you 238c9fbc29Smrg# distribute this file as part of a program that contains a 248c9fbc29Smrg# configuration script generated by Autoconf, you may include it under 2570728a38Smrg# the same distribution terms that you use for the rest of that 2670728a38Smrg# program. This Exception is an additional permission under section 7 2770728a38Smrg# of the GNU General Public License, version 3 ("GPLv3"). 288c9fbc29Smrg 298c9fbc29Smrg 3070728a38Smrg# Please send patches to <config-patches@gnu.org>. 318c9fbc29Smrg# 328c9fbc29Smrg# Configuration subroutine to validate and canonicalize a configuration type. 338c9fbc29Smrg# Supply the specified configuration type as an argument. 348c9fbc29Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 358c9fbc29Smrg# Otherwise, we print the canonical config type on stdout and succeed. 368c9fbc29Smrg 374cd6a3aeSmrg# You can get the latest version of this script from: 3854cef2ddSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 394cd6a3aeSmrg 408c9fbc29Smrg# This file is supposed to be the same for all GNU packages 418c9fbc29Smrg# and recognize all the CPU types, system types and aliases 428c9fbc29Smrg# that are meaningful with *any* GNU software. 438c9fbc29Smrg# Each package is responsible for reporting which valid configurations 448c9fbc29Smrg# it does not support. The user should be able to distinguish 458c9fbc29Smrg# a failure to support a valid configuration from a meaningless 468c9fbc29Smrg# configuration. 478c9fbc29Smrg 488c9fbc29Smrg# The goal of this file is to map all the various variations of a given 498c9fbc29Smrg# machine specification into a single specification in the form: 508c9fbc29Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 518c9fbc29Smrg# or in some cases, the newer four-part form: 528c9fbc29Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 538c9fbc29Smrg# It is wrong to echo any other type of specification. 548c9fbc29Smrg 5554cef2ddSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 5654cef2ddSmrg# about features and limitations of the classic Bourne shell that were 5754cef2ddSmrg# superseded or lifted in POSIX. However, this script identifies a wide 5854cef2ddSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 5954cef2ddSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 6054cef2ddSmrg# have a pre-POSIX /bin/sh. 6154cef2ddSmrg 628c9fbc29Smrgme=`echo "$0" | sed -e 's,.*/,,'` 638c9fbc29Smrg 648c9fbc29Smrgusage="\ 6554044362SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 668c9fbc29Smrg 678c9fbc29SmrgCanonicalize a configuration name. 688c9fbc29Smrg 6954044362SmrgOptions: 708c9fbc29Smrg -h, --help print this help, then exit 718c9fbc29Smrg -t, --time-stamp print date of last modification, then exit 728c9fbc29Smrg -v, --version print version number, then exit 738c9fbc29Smrg 748c9fbc29SmrgReport bugs and patches to <config-patches@gnu.org>." 758c9fbc29Smrg 768c9fbc29Smrgversion="\ 778c9fbc29SmrgGNU config.sub ($timestamp) 788c9fbc29Smrg 799ab56c27SmrgCopyright 1992-2022 Free Software Foundation, Inc. 808c9fbc29Smrg 818c9fbc29SmrgThis is free software; see the source for copying conditions. There is NO 828c9fbc29Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 838c9fbc29Smrg 848c9fbc29Smrghelp=" 858c9fbc29SmrgTry \`$me --help' for more information." 868c9fbc29Smrg 878c9fbc29Smrg# Parse command line 888c9fbc29Smrgwhile test $# -gt 0 ; do 898c9fbc29Smrg case $1 in 908c9fbc29Smrg --time-stamp | --time* | -t ) 918c9fbc29Smrg echo "$timestamp" ; exit ;; 928c9fbc29Smrg --version | -v ) 938c9fbc29Smrg echo "$version" ; exit ;; 948c9fbc29Smrg --help | --h* | -h ) 958c9fbc29Smrg echo "$usage"; exit ;; 968c9fbc29Smrg -- ) # Stop option processing 978c9fbc29Smrg shift; break ;; 988c9fbc29Smrg - ) # Use stdin as input. 998c9fbc29Smrg break ;; 1008c9fbc29Smrg -* ) 10154cef2ddSmrg echo "$me: invalid option $1$help" >&2 1028c9fbc29Smrg exit 1 ;; 1038c9fbc29Smrg 1048c9fbc29Smrg *local*) 1058c9fbc29Smrg # First pass through any local machine types. 10654044362Smrg echo "$1" 1078c9fbc29Smrg exit ;; 1088c9fbc29Smrg 1098c9fbc29Smrg * ) 1108c9fbc29Smrg break ;; 1118c9fbc29Smrg esac 1128c9fbc29Smrgdone 1138c9fbc29Smrg 1148c9fbc29Smrgcase $# in 1158c9fbc29Smrg 0) echo "$me: missing argument$help" >&2 1168c9fbc29Smrg exit 1;; 1178c9fbc29Smrg 1) ;; 1188c9fbc29Smrg *) echo "$me: too many arguments$help" >&2 1198c9fbc29Smrg exit 1;; 1208c9fbc29Smrgesac 1218c9fbc29Smrg 12254cef2ddSmrg# Split fields of configuration type 12354cef2ddSmrg# shellcheck disable=SC2162 12454cef2ddSmrgsaved_IFS=$IFS 12554cef2ddSmrgIFS="-" read field1 field2 field3 field4 <<EOF 12654cef2ddSmrg$1 12754cef2ddSmrgEOF 12854cef2ddSmrgIFS=$saved_IFS 1298c9fbc29Smrg 13054cef2ddSmrg# Separate into logical components for further validation 13154cef2ddSmrgcase $1 in 13254cef2ddSmrg *-*-*-*-*) 13354cef2ddSmrg echo Invalid configuration \`"$1"\': more than four components >&2 13454cef2ddSmrg exit 1 13570728a38Smrg ;; 13654cef2ddSmrg *-*-*-*) 13754cef2ddSmrg basic_machine=$field1-$field2 13854cef2ddSmrg basic_os=$field3-$field4 1398c9fbc29Smrg ;; 14054cef2ddSmrg *-*-*) 14154cef2ddSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 14254cef2ddSmrg # parts 14354cef2ddSmrg maybe_os=$field2-$field3 14454cef2ddSmrg case $maybe_os in 14554cef2ddSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 14654cef2ddSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 14754cef2ddSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 1489ab56c27Smrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 14954cef2ddSmrg basic_machine=$field1 15054cef2ddSmrg basic_os=$maybe_os 15154cef2ddSmrg ;; 15254cef2ddSmrg android-linux) 15354cef2ddSmrg basic_machine=$field1-unknown 15454cef2ddSmrg basic_os=linux-android 15554cef2ddSmrg ;; 15654cef2ddSmrg *) 15754cef2ddSmrg basic_machine=$field1-$field2 15854cef2ddSmrg basic_os=$field3 15954cef2ddSmrg ;; 16054cef2ddSmrg esac 1618c9fbc29Smrg ;; 16254cef2ddSmrg *-*) 16354cef2ddSmrg # A lone config we happen to match not fitting any pattern 16454cef2ddSmrg case $field1-$field2 in 16554cef2ddSmrg decstation-3100) 16654cef2ddSmrg basic_machine=mips-dec 16754cef2ddSmrg basic_os= 16854cef2ddSmrg ;; 16954cef2ddSmrg *-*) 17054cef2ddSmrg # Second component is usually, but not always the OS 17154cef2ddSmrg case $field2 in 17254cef2ddSmrg # Prevent following clause from handling this valid os 17354cef2ddSmrg sun*os*) 17454cef2ddSmrg basic_machine=$field1 17554cef2ddSmrg basic_os=$field2 17654cef2ddSmrg ;; 17754cef2ddSmrg zephyr*) 17854cef2ddSmrg basic_machine=$field1-unknown 17954cef2ddSmrg basic_os=$field2 18054cef2ddSmrg ;; 18154cef2ddSmrg # Manufacturers 18254cef2ddSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 18354cef2ddSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 18454cef2ddSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 18554cef2ddSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 18654cef2ddSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 18754cef2ddSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 18854cef2ddSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 18954cef2ddSmrg | microblaze* | sim | cisco \ 19054cef2ddSmrg | oki | wec | wrs | winbond) 19154cef2ddSmrg basic_machine=$field1-$field2 19254cef2ddSmrg basic_os= 19354cef2ddSmrg ;; 19454cef2ddSmrg *) 19554cef2ddSmrg basic_machine=$field1 19654cef2ddSmrg basic_os=$field2 19754cef2ddSmrg ;; 19854cef2ddSmrg esac 19954cef2ddSmrg ;; 20054cef2ddSmrg esac 2018c9fbc29Smrg ;; 20254cef2ddSmrg *) 20354cef2ddSmrg # Convert single-component short-hands not valid as part of 20454cef2ddSmrg # multi-component configurations. 20554cef2ddSmrg case $field1 in 20654cef2ddSmrg 386bsd) 20754cef2ddSmrg basic_machine=i386-pc 20854cef2ddSmrg basic_os=bsd 20954cef2ddSmrg ;; 21054cef2ddSmrg a29khif) 21154cef2ddSmrg basic_machine=a29k-amd 21254cef2ddSmrg basic_os=udi 21354cef2ddSmrg ;; 21454cef2ddSmrg adobe68k) 21554cef2ddSmrg basic_machine=m68010-adobe 21654cef2ddSmrg basic_os=scout 21754cef2ddSmrg ;; 21854cef2ddSmrg alliant) 21954cef2ddSmrg basic_machine=fx80-alliant 22054cef2ddSmrg basic_os= 22154cef2ddSmrg ;; 22254cef2ddSmrg altos | altos3068) 22354cef2ddSmrg basic_machine=m68k-altos 22454cef2ddSmrg basic_os= 22554cef2ddSmrg ;; 22654cef2ddSmrg am29k) 22754cef2ddSmrg basic_machine=a29k-none 22854cef2ddSmrg basic_os=bsd 22954cef2ddSmrg ;; 23054cef2ddSmrg amdahl) 23154cef2ddSmrg basic_machine=580-amdahl 23254cef2ddSmrg basic_os=sysv 23354cef2ddSmrg ;; 23454cef2ddSmrg amiga) 23554cef2ddSmrg basic_machine=m68k-unknown 23654cef2ddSmrg basic_os= 23754cef2ddSmrg ;; 23854cef2ddSmrg amigaos | amigados) 23954cef2ddSmrg basic_machine=m68k-unknown 24054cef2ddSmrg basic_os=amigaos 24154cef2ddSmrg ;; 24254cef2ddSmrg amigaunix | amix) 24354cef2ddSmrg basic_machine=m68k-unknown 24454cef2ddSmrg basic_os=sysv4 24554cef2ddSmrg ;; 24654cef2ddSmrg apollo68) 24754cef2ddSmrg basic_machine=m68k-apollo 24854cef2ddSmrg basic_os=sysv 24954cef2ddSmrg ;; 25054cef2ddSmrg apollo68bsd) 25154cef2ddSmrg basic_machine=m68k-apollo 25254cef2ddSmrg basic_os=bsd 25354cef2ddSmrg ;; 25454cef2ddSmrg aros) 25554cef2ddSmrg basic_machine=i386-pc 25654cef2ddSmrg basic_os=aros 25754cef2ddSmrg ;; 25854cef2ddSmrg aux) 25954cef2ddSmrg basic_machine=m68k-apple 26054cef2ddSmrg basic_os=aux 26154cef2ddSmrg ;; 26254cef2ddSmrg balance) 26354cef2ddSmrg basic_machine=ns32k-sequent 26454cef2ddSmrg basic_os=dynix 26554cef2ddSmrg ;; 26654cef2ddSmrg blackfin) 26754cef2ddSmrg basic_machine=bfin-unknown 26854cef2ddSmrg basic_os=linux 26954cef2ddSmrg ;; 27054cef2ddSmrg cegcc) 27154cef2ddSmrg basic_machine=arm-unknown 27254cef2ddSmrg basic_os=cegcc 27354cef2ddSmrg ;; 27454cef2ddSmrg convex-c1) 27554cef2ddSmrg basic_machine=c1-convex 27654cef2ddSmrg basic_os=bsd 27754cef2ddSmrg ;; 27854cef2ddSmrg convex-c2) 27954cef2ddSmrg basic_machine=c2-convex 28054cef2ddSmrg basic_os=bsd 28154cef2ddSmrg ;; 28254cef2ddSmrg convex-c32) 28354cef2ddSmrg basic_machine=c32-convex 28454cef2ddSmrg basic_os=bsd 28554cef2ddSmrg ;; 28654cef2ddSmrg convex-c34) 28754cef2ddSmrg basic_machine=c34-convex 28854cef2ddSmrg basic_os=bsd 28954cef2ddSmrg ;; 29054cef2ddSmrg convex-c38) 29154cef2ddSmrg basic_machine=c38-convex 29254cef2ddSmrg basic_os=bsd 29354cef2ddSmrg ;; 29454cef2ddSmrg cray) 29554cef2ddSmrg basic_machine=j90-cray 29654cef2ddSmrg basic_os=unicos 29754cef2ddSmrg ;; 29854cef2ddSmrg crds | unos) 29954cef2ddSmrg basic_machine=m68k-crds 30054cef2ddSmrg basic_os= 30154cef2ddSmrg ;; 30254cef2ddSmrg da30) 30354cef2ddSmrg basic_machine=m68k-da30 30454cef2ddSmrg basic_os= 30554cef2ddSmrg ;; 30654cef2ddSmrg decstation | pmax | pmin | dec3100 | decstatn) 30754cef2ddSmrg basic_machine=mips-dec 30854cef2ddSmrg basic_os= 30954cef2ddSmrg ;; 31054cef2ddSmrg delta88) 31154cef2ddSmrg basic_machine=m88k-motorola 31254cef2ddSmrg basic_os=sysv3 31354cef2ddSmrg ;; 31454cef2ddSmrg dicos) 31554cef2ddSmrg basic_machine=i686-pc 31654cef2ddSmrg basic_os=dicos 31754cef2ddSmrg ;; 31854cef2ddSmrg djgpp) 31954cef2ddSmrg basic_machine=i586-pc 32054cef2ddSmrg basic_os=msdosdjgpp 32154cef2ddSmrg ;; 32254cef2ddSmrg ebmon29k) 32354cef2ddSmrg basic_machine=a29k-amd 32454cef2ddSmrg basic_os=ebmon 32554cef2ddSmrg ;; 32654cef2ddSmrg es1800 | OSE68k | ose68k | ose | OSE) 32754cef2ddSmrg basic_machine=m68k-ericsson 32854cef2ddSmrg basic_os=ose 32954cef2ddSmrg ;; 33054cef2ddSmrg gmicro) 33154cef2ddSmrg basic_machine=tron-gmicro 33254cef2ddSmrg basic_os=sysv 33354cef2ddSmrg ;; 33454cef2ddSmrg go32) 33554cef2ddSmrg basic_machine=i386-pc 33654cef2ddSmrg basic_os=go32 33754cef2ddSmrg ;; 33854cef2ddSmrg h8300hms) 33954cef2ddSmrg basic_machine=h8300-hitachi 34054cef2ddSmrg basic_os=hms 34154cef2ddSmrg ;; 34254cef2ddSmrg h8300xray) 34354cef2ddSmrg basic_machine=h8300-hitachi 34454cef2ddSmrg basic_os=xray 34554cef2ddSmrg ;; 34654cef2ddSmrg h8500hms) 34754cef2ddSmrg basic_machine=h8500-hitachi 34854cef2ddSmrg basic_os=hms 34954cef2ddSmrg ;; 35054cef2ddSmrg harris) 35154cef2ddSmrg basic_machine=m88k-harris 35254cef2ddSmrg basic_os=sysv3 35354cef2ddSmrg ;; 35454cef2ddSmrg hp300 | hp300hpux) 35554cef2ddSmrg basic_machine=m68k-hp 35654cef2ddSmrg basic_os=hpux 35754cef2ddSmrg ;; 35854cef2ddSmrg hp300bsd) 35954cef2ddSmrg basic_machine=m68k-hp 36054cef2ddSmrg basic_os=bsd 36154cef2ddSmrg ;; 36254cef2ddSmrg hppaosf) 36354cef2ddSmrg basic_machine=hppa1.1-hp 36454cef2ddSmrg basic_os=osf 36554cef2ddSmrg ;; 36654cef2ddSmrg hppro) 36754cef2ddSmrg basic_machine=hppa1.1-hp 36854cef2ddSmrg basic_os=proelf 36954cef2ddSmrg ;; 37054cef2ddSmrg i386mach) 37154cef2ddSmrg basic_machine=i386-mach 37254cef2ddSmrg basic_os=mach 37354cef2ddSmrg ;; 37454cef2ddSmrg isi68 | isi) 37554cef2ddSmrg basic_machine=m68k-isi 37654cef2ddSmrg basic_os=sysv 37754cef2ddSmrg ;; 37854cef2ddSmrg m68knommu) 37954cef2ddSmrg basic_machine=m68k-unknown 38054cef2ddSmrg basic_os=linux 38154cef2ddSmrg ;; 38254cef2ddSmrg magnum | m3230) 38354cef2ddSmrg basic_machine=mips-mips 38454cef2ddSmrg basic_os=sysv 38554cef2ddSmrg ;; 38654cef2ddSmrg merlin) 38754cef2ddSmrg basic_machine=ns32k-utek 38854cef2ddSmrg basic_os=sysv 38954cef2ddSmrg ;; 39054cef2ddSmrg mingw64) 39154cef2ddSmrg basic_machine=x86_64-pc 39254cef2ddSmrg basic_os=mingw64 39354cef2ddSmrg ;; 39454cef2ddSmrg mingw32) 39554cef2ddSmrg basic_machine=i686-pc 39654cef2ddSmrg basic_os=mingw32 39754cef2ddSmrg ;; 39854cef2ddSmrg mingw32ce) 39954cef2ddSmrg basic_machine=arm-unknown 40054cef2ddSmrg basic_os=mingw32ce 40154cef2ddSmrg ;; 40254cef2ddSmrg monitor) 40354cef2ddSmrg basic_machine=m68k-rom68k 40454cef2ddSmrg basic_os=coff 40554cef2ddSmrg ;; 40654cef2ddSmrg morphos) 40754cef2ddSmrg basic_machine=powerpc-unknown 40854cef2ddSmrg basic_os=morphos 40954cef2ddSmrg ;; 41054cef2ddSmrg moxiebox) 41154cef2ddSmrg basic_machine=moxie-unknown 41254cef2ddSmrg basic_os=moxiebox 41354cef2ddSmrg ;; 41454cef2ddSmrg msdos) 41554cef2ddSmrg basic_machine=i386-pc 41654cef2ddSmrg basic_os=msdos 41754cef2ddSmrg ;; 41854cef2ddSmrg msys) 41954cef2ddSmrg basic_machine=i686-pc 42054cef2ddSmrg basic_os=msys 42154cef2ddSmrg ;; 42254cef2ddSmrg mvs) 42354cef2ddSmrg basic_machine=i370-ibm 42454cef2ddSmrg basic_os=mvs 42554cef2ddSmrg ;; 42654cef2ddSmrg nacl) 42754cef2ddSmrg basic_machine=le32-unknown 42854cef2ddSmrg basic_os=nacl 42954cef2ddSmrg ;; 43054cef2ddSmrg ncr3000) 43154cef2ddSmrg basic_machine=i486-ncr 43254cef2ddSmrg basic_os=sysv4 43354cef2ddSmrg ;; 43454cef2ddSmrg netbsd386) 43554cef2ddSmrg basic_machine=i386-pc 43654cef2ddSmrg basic_os=netbsd 43754cef2ddSmrg ;; 43854cef2ddSmrg netwinder) 43954cef2ddSmrg basic_machine=armv4l-rebel 44054cef2ddSmrg basic_os=linux 44154cef2ddSmrg ;; 44254cef2ddSmrg news | news700 | news800 | news900) 44354cef2ddSmrg basic_machine=m68k-sony 44454cef2ddSmrg basic_os=newsos 44554cef2ddSmrg ;; 44654cef2ddSmrg news1000) 44754cef2ddSmrg basic_machine=m68030-sony 44854cef2ddSmrg basic_os=newsos 44954cef2ddSmrg ;; 45054cef2ddSmrg necv70) 45154cef2ddSmrg basic_machine=v70-nec 45254cef2ddSmrg basic_os=sysv 45354cef2ddSmrg ;; 45454cef2ddSmrg nh3000) 45554cef2ddSmrg basic_machine=m68k-harris 45654cef2ddSmrg basic_os=cxux 45754cef2ddSmrg ;; 45854cef2ddSmrg nh[45]000) 45954cef2ddSmrg basic_machine=m88k-harris 46054cef2ddSmrg basic_os=cxux 46154cef2ddSmrg ;; 46254cef2ddSmrg nindy960) 46354cef2ddSmrg basic_machine=i960-intel 46454cef2ddSmrg basic_os=nindy 46554cef2ddSmrg ;; 46654cef2ddSmrg mon960) 46754cef2ddSmrg basic_machine=i960-intel 46854cef2ddSmrg basic_os=mon960 46954cef2ddSmrg ;; 47054cef2ddSmrg nonstopux) 47154cef2ddSmrg basic_machine=mips-compaq 47254cef2ddSmrg basic_os=nonstopux 47354cef2ddSmrg ;; 47454cef2ddSmrg os400) 47554cef2ddSmrg basic_machine=powerpc-ibm 47654cef2ddSmrg basic_os=os400 47754cef2ddSmrg ;; 47854cef2ddSmrg OSE68000 | ose68000) 47954cef2ddSmrg basic_machine=m68000-ericsson 48054cef2ddSmrg basic_os=ose 48154cef2ddSmrg ;; 48254cef2ddSmrg os68k) 48354cef2ddSmrg basic_machine=m68k-none 48454cef2ddSmrg basic_os=os68k 48554cef2ddSmrg ;; 48654cef2ddSmrg paragon) 48754cef2ddSmrg basic_machine=i860-intel 48854cef2ddSmrg basic_os=osf 48954cef2ddSmrg ;; 49054cef2ddSmrg parisc) 49154cef2ddSmrg basic_machine=hppa-unknown 49254cef2ddSmrg basic_os=linux 49354cef2ddSmrg ;; 49454cef2ddSmrg psp) 49554cef2ddSmrg basic_machine=mipsallegrexel-sony 49654cef2ddSmrg basic_os=psp 49754cef2ddSmrg ;; 49854cef2ddSmrg pw32) 49954cef2ddSmrg basic_machine=i586-unknown 50054cef2ddSmrg basic_os=pw32 50154cef2ddSmrg ;; 50254cef2ddSmrg rdos | rdos64) 50354cef2ddSmrg basic_machine=x86_64-pc 50454cef2ddSmrg basic_os=rdos 50554cef2ddSmrg ;; 50654cef2ddSmrg rdos32) 50754cef2ddSmrg basic_machine=i386-pc 50854cef2ddSmrg basic_os=rdos 50954cef2ddSmrg ;; 51054cef2ddSmrg rom68k) 51154cef2ddSmrg basic_machine=m68k-rom68k 51254cef2ddSmrg basic_os=coff 51354cef2ddSmrg ;; 51454cef2ddSmrg sa29200) 51554cef2ddSmrg basic_machine=a29k-amd 51654cef2ddSmrg basic_os=udi 51754cef2ddSmrg ;; 51854cef2ddSmrg sei) 51954cef2ddSmrg basic_machine=mips-sei 52054cef2ddSmrg basic_os=seiux 52154cef2ddSmrg ;; 52254cef2ddSmrg sequent) 52354cef2ddSmrg basic_machine=i386-sequent 52454cef2ddSmrg basic_os= 52554cef2ddSmrg ;; 52654cef2ddSmrg sps7) 52754cef2ddSmrg basic_machine=m68k-bull 52854cef2ddSmrg basic_os=sysv2 52954cef2ddSmrg ;; 53054cef2ddSmrg st2000) 53154cef2ddSmrg basic_machine=m68k-tandem 53254cef2ddSmrg basic_os= 53354cef2ddSmrg ;; 53454cef2ddSmrg stratus) 53554cef2ddSmrg basic_machine=i860-stratus 53654cef2ddSmrg basic_os=sysv4 53754cef2ddSmrg ;; 53854cef2ddSmrg sun2) 53954cef2ddSmrg basic_machine=m68000-sun 54054cef2ddSmrg basic_os= 54154cef2ddSmrg ;; 54254cef2ddSmrg sun2os3) 54354cef2ddSmrg basic_machine=m68000-sun 54454cef2ddSmrg basic_os=sunos3 54554cef2ddSmrg ;; 54654cef2ddSmrg sun2os4) 54754cef2ddSmrg basic_machine=m68000-sun 54854cef2ddSmrg basic_os=sunos4 54954cef2ddSmrg ;; 55054cef2ddSmrg sun3) 55154cef2ddSmrg basic_machine=m68k-sun 55254cef2ddSmrg basic_os= 55354cef2ddSmrg ;; 55454cef2ddSmrg sun3os3) 55554cef2ddSmrg basic_machine=m68k-sun 55654cef2ddSmrg basic_os=sunos3 55754cef2ddSmrg ;; 55854cef2ddSmrg sun3os4) 55954cef2ddSmrg basic_machine=m68k-sun 56054cef2ddSmrg basic_os=sunos4 56154cef2ddSmrg ;; 56254cef2ddSmrg sun4) 56354cef2ddSmrg basic_machine=sparc-sun 56454cef2ddSmrg basic_os= 56554cef2ddSmrg ;; 56654cef2ddSmrg sun4os3) 56754cef2ddSmrg basic_machine=sparc-sun 56854cef2ddSmrg basic_os=sunos3 56954cef2ddSmrg ;; 57054cef2ddSmrg sun4os4) 57154cef2ddSmrg basic_machine=sparc-sun 57254cef2ddSmrg basic_os=sunos4 57354cef2ddSmrg ;; 57454cef2ddSmrg sun4sol2) 57554cef2ddSmrg basic_machine=sparc-sun 57654cef2ddSmrg basic_os=solaris2 57754cef2ddSmrg ;; 57854cef2ddSmrg sun386 | sun386i | roadrunner) 57954cef2ddSmrg basic_machine=i386-sun 58054cef2ddSmrg basic_os= 58154cef2ddSmrg ;; 58254cef2ddSmrg sv1) 58354cef2ddSmrg basic_machine=sv1-cray 58454cef2ddSmrg basic_os=unicos 58554cef2ddSmrg ;; 58654cef2ddSmrg symmetry) 58754cef2ddSmrg basic_machine=i386-sequent 58854cef2ddSmrg basic_os=dynix 58954cef2ddSmrg ;; 59054cef2ddSmrg t3e) 59154cef2ddSmrg basic_machine=alphaev5-cray 59254cef2ddSmrg basic_os=unicos 59354cef2ddSmrg ;; 59454cef2ddSmrg t90) 59554cef2ddSmrg basic_machine=t90-cray 59654cef2ddSmrg basic_os=unicos 59754cef2ddSmrg ;; 59854cef2ddSmrg toad1) 59954cef2ddSmrg basic_machine=pdp10-xkl 60054cef2ddSmrg basic_os=tops20 60154cef2ddSmrg ;; 60254cef2ddSmrg tpf) 60354cef2ddSmrg basic_machine=s390x-ibm 60454cef2ddSmrg basic_os=tpf 60554cef2ddSmrg ;; 60654cef2ddSmrg udi29k) 60754cef2ddSmrg basic_machine=a29k-amd 60854cef2ddSmrg basic_os=udi 60954cef2ddSmrg ;; 61054cef2ddSmrg ultra3) 61154cef2ddSmrg basic_machine=a29k-nyu 61254cef2ddSmrg basic_os=sym1 61354cef2ddSmrg ;; 61454cef2ddSmrg v810 | necv810) 61554cef2ddSmrg basic_machine=v810-nec 61654cef2ddSmrg basic_os=none 61754cef2ddSmrg ;; 61854cef2ddSmrg vaxv) 61954cef2ddSmrg basic_machine=vax-dec 62054cef2ddSmrg basic_os=sysv 62154cef2ddSmrg ;; 62254cef2ddSmrg vms) 62354cef2ddSmrg basic_machine=vax-dec 62454cef2ddSmrg basic_os=vms 62554cef2ddSmrg ;; 62654cef2ddSmrg vsta) 62754cef2ddSmrg basic_machine=i386-pc 62854cef2ddSmrg basic_os=vsta 62954cef2ddSmrg ;; 63054cef2ddSmrg vxworks960) 63154cef2ddSmrg basic_machine=i960-wrs 63254cef2ddSmrg basic_os=vxworks 63354cef2ddSmrg ;; 63454cef2ddSmrg vxworks68) 63554cef2ddSmrg basic_machine=m68k-wrs 63654cef2ddSmrg basic_os=vxworks 63754cef2ddSmrg ;; 63854cef2ddSmrg vxworks29k) 63954cef2ddSmrg basic_machine=a29k-wrs 64054cef2ddSmrg basic_os=vxworks 64154cef2ddSmrg ;; 64254cef2ddSmrg xbox) 64354cef2ddSmrg basic_machine=i686-pc 64454cef2ddSmrg basic_os=mingw32 64554cef2ddSmrg ;; 64654cef2ddSmrg ymp) 64754cef2ddSmrg basic_machine=ymp-cray 64854cef2ddSmrg basic_os=unicos 64954cef2ddSmrg ;; 65054cef2ddSmrg *) 65154cef2ddSmrg basic_machine=$1 65254cef2ddSmrg basic_os= 65354cef2ddSmrg ;; 65454cef2ddSmrg esac 6558c9fbc29Smrg ;; 6568c9fbc29Smrgesac 6578c9fbc29Smrg 65854cef2ddSmrg# Decode 1-component or ad-hoc basic machines 6598c9fbc29Smrgcase $basic_machine in 66054cef2ddSmrg # Here we handle the default manufacturer of certain CPU types. It is in 66154cef2ddSmrg # some cases the only manufacturer, in others, it is the most popular. 66254cef2ddSmrg w89k) 66354cef2ddSmrg cpu=hppa1.1 66454cef2ddSmrg vendor=winbond 66570728a38Smrg ;; 66654cef2ddSmrg op50n) 66754cef2ddSmrg cpu=hppa1.1 66854cef2ddSmrg vendor=oki 6698c9fbc29Smrg ;; 67054cef2ddSmrg op60c) 67154cef2ddSmrg cpu=hppa1.1 67254cef2ddSmrg vendor=oki 6738c9fbc29Smrg ;; 67454cef2ddSmrg ibm*) 67554cef2ddSmrg cpu=i370 67654cef2ddSmrg vendor=ibm 6778c9fbc29Smrg ;; 67854cef2ddSmrg orion105) 67954cef2ddSmrg cpu=clipper 68054cef2ddSmrg vendor=highlevel 68170728a38Smrg ;; 68254cef2ddSmrg mac | mpw | mac-mpw) 68354cef2ddSmrg cpu=m68k 68454cef2ddSmrg vendor=apple 68570728a38Smrg ;; 68654cef2ddSmrg pmac | pmac-mpw) 68754cef2ddSmrg cpu=powerpc 68854cef2ddSmrg vendor=apple 68970728a38Smrg ;; 69070728a38Smrg 6918c9fbc29Smrg # Recognize the various machine names and aliases which stand 6928c9fbc29Smrg # for a CPU type and a company and sometimes even an OS. 6938c9fbc29Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 69454cef2ddSmrg cpu=m68000 69554cef2ddSmrg vendor=att 6968c9fbc29Smrg ;; 6978c9fbc29Smrg 3b*) 69854cef2ddSmrg cpu=we32k 69954cef2ddSmrg vendor=att 7004e411241Smrg ;; 7014cd6a3aeSmrg bluegene*) 70254cef2ddSmrg cpu=powerpc 70354cef2ddSmrg vendor=ibm 70454cef2ddSmrg basic_os=cnk 7058c9fbc29Smrg ;; 7068c9fbc29Smrg decsystem10* | dec10*) 70754cef2ddSmrg cpu=pdp10 70854cef2ddSmrg vendor=dec 70954cef2ddSmrg basic_os=tops10 7108c9fbc29Smrg ;; 7118c9fbc29Smrg decsystem20* | dec20*) 71254cef2ddSmrg cpu=pdp10 71354cef2ddSmrg vendor=dec 71454cef2ddSmrg basic_os=tops20 7158c9fbc29Smrg ;; 7168c9fbc29Smrg delta | 3300 | motorola-3300 | motorola-delta \ 7178c9fbc29Smrg | 3300-motorola | delta-motorola) 71854cef2ddSmrg cpu=m68k 71954cef2ddSmrg vendor=motorola 7208c9fbc29Smrg ;; 72154044362Smrg dpx2*) 72254cef2ddSmrg cpu=m68k 72354cef2ddSmrg vendor=bull 72454cef2ddSmrg basic_os=sysv3 7258c9fbc29Smrg ;; 7268c9fbc29Smrg encore | umax | mmax) 72754cef2ddSmrg cpu=ns32k 72854cef2ddSmrg vendor=encore 7298c9fbc29Smrg ;; 73054cef2ddSmrg elxsi) 73154cef2ddSmrg cpu=elxsi 73254cef2ddSmrg vendor=elxsi 73354cef2ddSmrg basic_os=${basic_os:-bsd} 7348c9fbc29Smrg ;; 7358c9fbc29Smrg fx2800) 73654cef2ddSmrg cpu=i860 73754cef2ddSmrg vendor=alliant 7388c9fbc29Smrg ;; 7398c9fbc29Smrg genix) 74054cef2ddSmrg cpu=ns32k 74154cef2ddSmrg vendor=ns 7428c9fbc29Smrg ;; 7438c9fbc29Smrg h3050r* | hiux*) 74454cef2ddSmrg cpu=hppa1.1 74554cef2ddSmrg vendor=hitachi 74654cef2ddSmrg basic_os=hiuxwe2 7478c9fbc29Smrg ;; 7488c9fbc29Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 74954cef2ddSmrg cpu=hppa1.0 75054cef2ddSmrg vendor=hp 7518c9fbc29Smrg ;; 7528c9fbc29Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 75354cef2ddSmrg cpu=m68000 75454cef2ddSmrg vendor=hp 7558c9fbc29Smrg ;; 7568c9fbc29Smrg hp9k3[2-9][0-9]) 75754cef2ddSmrg cpu=m68k 75854cef2ddSmrg vendor=hp 7598c9fbc29Smrg ;; 7608c9fbc29Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 76154cef2ddSmrg cpu=hppa1.0 76254cef2ddSmrg vendor=hp 7638c9fbc29Smrg ;; 7648c9fbc29Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 76554cef2ddSmrg cpu=hppa1.1 76654cef2ddSmrg vendor=hp 7678c9fbc29Smrg ;; 7688c9fbc29Smrg hp9k78[0-9] | hp78[0-9]) 7698c9fbc29Smrg # FIXME: really hppa2.0-hp 77054cef2ddSmrg cpu=hppa1.1 77154cef2ddSmrg vendor=hp 7728c9fbc29Smrg ;; 7738c9fbc29Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 7748c9fbc29Smrg # FIXME: really hppa2.0-hp 77554cef2ddSmrg cpu=hppa1.1 77654cef2ddSmrg vendor=hp 7778c9fbc29Smrg ;; 7788c9fbc29Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 77954cef2ddSmrg cpu=hppa1.1 78054cef2ddSmrg vendor=hp 7818c9fbc29Smrg ;; 7828c9fbc29Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 78354cef2ddSmrg cpu=hppa1.0 78454cef2ddSmrg vendor=hp 7858c9fbc29Smrg ;; 7868c9fbc29Smrg i*86v32) 78754cef2ddSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 78854cef2ddSmrg vendor=pc 78954cef2ddSmrg basic_os=sysv32 7908c9fbc29Smrg ;; 7918c9fbc29Smrg i*86v4*) 79254cef2ddSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79354cef2ddSmrg vendor=pc 79454cef2ddSmrg basic_os=sysv4 7958c9fbc29Smrg ;; 7968c9fbc29Smrg i*86v) 79754cef2ddSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79854cef2ddSmrg vendor=pc 79954cef2ddSmrg basic_os=sysv 8008c9fbc29Smrg ;; 8018c9fbc29Smrg i*86sol2) 80254cef2ddSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 80354cef2ddSmrg vendor=pc 80454cef2ddSmrg basic_os=solaris2 8058c9fbc29Smrg ;; 80654cef2ddSmrg j90 | j90-cray) 80754cef2ddSmrg cpu=j90 80854cef2ddSmrg vendor=cray 80954cef2ddSmrg basic_os=${basic_os:-unicos} 8108c9fbc29Smrg ;; 8118c9fbc29Smrg iris | iris4d) 81254cef2ddSmrg cpu=mips 81354cef2ddSmrg vendor=sgi 81454cef2ddSmrg case $basic_os in 81554cef2ddSmrg irix*) 8168c9fbc29Smrg ;; 8178c9fbc29Smrg *) 81854cef2ddSmrg basic_os=irix4 8198c9fbc29Smrg ;; 8208c9fbc29Smrg esac 8218c9fbc29Smrg ;; 8228c9fbc29Smrg miniframe) 82354cef2ddSmrg cpu=m68000 82454cef2ddSmrg vendor=convergent 8258c9fbc29Smrg ;; 82654cef2ddSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 82754cef2ddSmrg cpu=m68k 82854cef2ddSmrg vendor=atari 82954cef2ddSmrg basic_os=mint 8308c9fbc29Smrg ;; 8318c9fbc29Smrg news-3600 | risc-news) 83254cef2ddSmrg cpu=mips 83354cef2ddSmrg vendor=sony 83454cef2ddSmrg basic_os=newsos 8358c9fbc29Smrg ;; 83654044362Smrg next | m*-next) 83754cef2ddSmrg cpu=m68k 83854cef2ddSmrg vendor=next 83954cef2ddSmrg case $basic_os in 84054cef2ddSmrg openstep*) 84154cef2ddSmrg ;; 84254cef2ddSmrg nextstep*) 8438c9fbc29Smrg ;; 84454cef2ddSmrg ns2*) 84554cef2ddSmrg basic_os=nextstep2 8468c9fbc29Smrg ;; 8478c9fbc29Smrg *) 84854cef2ddSmrg basic_os=nextstep3 8498c9fbc29Smrg ;; 8508c9fbc29Smrg esac 8518c9fbc29Smrg ;; 8528c9fbc29Smrg np1) 85354cef2ddSmrg cpu=np1 85454cef2ddSmrg vendor=gould 85554044362Smrg ;; 8568c9fbc29Smrg op50n-* | op60c-*) 85754cef2ddSmrg cpu=hppa1.1 85854cef2ddSmrg vendor=oki 85954cef2ddSmrg basic_os=proelf 8608c9fbc29Smrg ;; 8618c9fbc29Smrg pa-hitachi) 86254cef2ddSmrg cpu=hppa1.1 86354cef2ddSmrg vendor=hitachi 86454cef2ddSmrg basic_os=hiuxwe2 8654e411241Smrg ;; 8668c9fbc29Smrg pbd) 86754cef2ddSmrg cpu=sparc 86854cef2ddSmrg vendor=tti 8698c9fbc29Smrg ;; 8708c9fbc29Smrg pbb) 87154cef2ddSmrg cpu=m68k 87254cef2ddSmrg vendor=tti 8738c9fbc29Smrg ;; 87454cef2ddSmrg pc532) 87554cef2ddSmrg cpu=ns32k 87654cef2ddSmrg vendor=pc532 8778c9fbc29Smrg ;; 8788c9fbc29Smrg pn) 87954cef2ddSmrg cpu=pn 88054cef2ddSmrg vendor=gould 8818c9fbc29Smrg ;; 88254cef2ddSmrg power) 88354cef2ddSmrg cpu=power 88454cef2ddSmrg vendor=ibm 8858c9fbc29Smrg ;; 88654cef2ddSmrg ps2) 88754cef2ddSmrg cpu=i386 88854cef2ddSmrg vendor=ibm 8898c9fbc29Smrg ;; 89054cef2ddSmrg rm[46]00) 89154cef2ddSmrg cpu=mips 89254cef2ddSmrg vendor=siemens 8938c9fbc29Smrg ;; 89454cef2ddSmrg rtpc | rtpc-*) 89554cef2ddSmrg cpu=romp 89654cef2ddSmrg vendor=ibm 8978c9fbc29Smrg ;; 89854cef2ddSmrg sde) 89954cef2ddSmrg cpu=mipsisa32 90054cef2ddSmrg vendor=sde 90154cef2ddSmrg basic_os=${basic_os:-elf} 9028c9fbc29Smrg ;; 90354cef2ddSmrg simso-wrs) 90454cef2ddSmrg cpu=sparclite 90554cef2ddSmrg vendor=wrs 90654cef2ddSmrg basic_os=vxworks 9078c9fbc29Smrg ;; 90854cef2ddSmrg tower | tower-32) 90954cef2ddSmrg cpu=m68k 91054cef2ddSmrg vendor=ncr 9118c9fbc29Smrg ;; 91254cef2ddSmrg vpp*|vx|vx-*) 91354cef2ddSmrg cpu=f301 91454cef2ddSmrg vendor=fujitsu 91570728a38Smrg ;; 91654cef2ddSmrg w65) 91754cef2ddSmrg cpu=w65 91854cef2ddSmrg vendor=wdc 9198c9fbc29Smrg ;; 92054cef2ddSmrg w89k-*) 92154cef2ddSmrg cpu=hppa1.1 92254cef2ddSmrg vendor=winbond 92354cef2ddSmrg basic_os=proelf 9248c9fbc29Smrg ;; 92554cef2ddSmrg none) 92654cef2ddSmrg cpu=none 92754cef2ddSmrg vendor=none 9288c9fbc29Smrg ;; 92954cef2ddSmrg leon|leon[3-9]) 93054cef2ddSmrg cpu=sparc 93154cef2ddSmrg vendor=$basic_machine 9328c9fbc29Smrg ;; 93354cef2ddSmrg leon-*|leon[3-9]-*) 93454cef2ddSmrg cpu=sparc 93554cef2ddSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 9368c9fbc29Smrg ;; 93754cef2ddSmrg 93854cef2ddSmrg *-*) 93954cef2ddSmrg # shellcheck disable=SC2162 94054cef2ddSmrg saved_IFS=$IFS 94154cef2ddSmrg IFS="-" read cpu vendor <<EOF 94254cef2ddSmrg$basic_machine 94354cef2ddSmrgEOF 94454cef2ddSmrg IFS=$saved_IFS 9458c9fbc29Smrg ;; 94654cef2ddSmrg # We use `pc' rather than `unknown' 94754cef2ddSmrg # because (1) that's what they normally are, and 94854cef2ddSmrg # (2) the word "unknown" tends to confuse beginning users. 94954cef2ddSmrg i*86 | x86_64) 95054cef2ddSmrg cpu=$basic_machine 95154cef2ddSmrg vendor=pc 9528c9fbc29Smrg ;; 95354cef2ddSmrg # These rules are duplicated from below for sake of the special case above; 95454cef2ddSmrg # i.e. things that normalized to x86 arches should also default to "pc" 95554cef2ddSmrg pc98) 95654cef2ddSmrg cpu=i386 95754cef2ddSmrg vendor=pc 9588c9fbc29Smrg ;; 95954cef2ddSmrg x64 | amd64) 96054cef2ddSmrg cpu=x86_64 96154cef2ddSmrg vendor=pc 9628c9fbc29Smrg ;; 96354cef2ddSmrg # Recognize the basic CPU types without company name. 96454cef2ddSmrg *) 96554cef2ddSmrg cpu=$basic_machine 96654cef2ddSmrg vendor=unknown 9674e411241Smrg ;; 96854cef2ddSmrgesac 96954cef2ddSmrg 97054cef2ddSmrgunset -v basic_machine 97154cef2ddSmrg 97254cef2ddSmrg# Decode basic machines in the full and proper CPU-Company form. 97354cef2ddSmrgcase $cpu-$vendor in 97454cef2ddSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 97554cef2ddSmrg # some cases the only manufacturer, in others, it is the most popular. 97654cef2ddSmrg craynv-unknown) 97754cef2ddSmrg vendor=cray 97854cef2ddSmrg basic_os=${basic_os:-unicosmp} 9798c9fbc29Smrg ;; 98054cef2ddSmrg c90-unknown | c90-cray) 98154cef2ddSmrg vendor=cray 98254cef2ddSmrg basic_os=${Basic_os:-unicos} 9838c9fbc29Smrg ;; 98454cef2ddSmrg fx80-unknown) 98554cef2ddSmrg vendor=alliant 9864e411241Smrg ;; 98754cef2ddSmrg romp-unknown) 98854cef2ddSmrg vendor=ibm 9898c9fbc29Smrg ;; 99054cef2ddSmrg mmix-unknown) 99154cef2ddSmrg vendor=knuth 9928c9fbc29Smrg ;; 99354cef2ddSmrg microblaze-unknown | microblazeel-unknown) 99454cef2ddSmrg vendor=xilinx 9958c9fbc29Smrg ;; 99654cef2ddSmrg rs6000-unknown) 99754cef2ddSmrg vendor=ibm 9988c9fbc29Smrg ;; 99954cef2ddSmrg vax-unknown) 100054cef2ddSmrg vendor=dec 10018c9fbc29Smrg ;; 100254cef2ddSmrg pdp11-unknown) 100354cef2ddSmrg vendor=dec 100470728a38Smrg ;; 100554cef2ddSmrg we32k-unknown) 100654cef2ddSmrg vendor=att 10078c9fbc29Smrg ;; 100854cef2ddSmrg cydra-unknown) 100954cef2ddSmrg vendor=cydrome 10108c9fbc29Smrg ;; 101154cef2ddSmrg i370-ibm*) 101254cef2ddSmrg vendor=ibm 10138c9fbc29Smrg ;; 101454cef2ddSmrg orion-unknown) 101554cef2ddSmrg vendor=highlevel 10168c9fbc29Smrg ;; 101754cef2ddSmrg xps-unknown | xps100-unknown) 101854cef2ddSmrg cpu=xps100 101954cef2ddSmrg vendor=honeywell 10208c9fbc29Smrg ;; 102154cef2ddSmrg 102254cef2ddSmrg # Here we normalize CPU types with a missing or matching vendor 10239ab56c27Smrg armh-unknown | armh-alt) 10249ab56c27Smrg cpu=armv7l 10259ab56c27Smrg vendor=alt 10269ab56c27Smrg basic_os=${basic_os:-linux-gnueabihf} 10279ab56c27Smrg ;; 102854cef2ddSmrg dpx20-unknown | dpx20-bull) 102954cef2ddSmrg cpu=rs6000 103054cef2ddSmrg vendor=bull 103154cef2ddSmrg basic_os=${basic_os:-bosx} 10328c9fbc29Smrg ;; 103354cef2ddSmrg 103454cef2ddSmrg # Here we normalize CPU types irrespective of the vendor 103554cef2ddSmrg amd64-*) 103654cef2ddSmrg cpu=x86_64 10378c9fbc29Smrg ;; 103854cef2ddSmrg blackfin-*) 103954cef2ddSmrg cpu=bfin 104054cef2ddSmrg basic_os=linux 10418c9fbc29Smrg ;; 104254cef2ddSmrg c54x-*) 104354cef2ddSmrg cpu=tic54x 10448c9fbc29Smrg ;; 104554cef2ddSmrg c55x-*) 104654cef2ddSmrg cpu=tic55x 10478c9fbc29Smrg ;; 104854cef2ddSmrg c6x-*) 104954cef2ddSmrg cpu=tic6x 10508c9fbc29Smrg ;; 105154cef2ddSmrg e500v[12]-*) 105254cef2ddSmrg cpu=powerpc 105354cef2ddSmrg basic_os=${basic_os}"spe" 10548c9fbc29Smrg ;; 105554cef2ddSmrg mips3*-*) 105654cef2ddSmrg cpu=mips64 10578c9fbc29Smrg ;; 105854cef2ddSmrg ms1-*) 105954cef2ddSmrg cpu=mt 10608c9fbc29Smrg ;; 106154cef2ddSmrg m68knommu-*) 106254cef2ddSmrg cpu=m68k 106354cef2ddSmrg basic_os=linux 10648c9fbc29Smrg ;; 106554cef2ddSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 106654cef2ddSmrg cpu=s12z 10674e411241Smrg ;; 106854cef2ddSmrg openrisc-*) 106954cef2ddSmrg cpu=or32 10708c9fbc29Smrg ;; 107154cef2ddSmrg parisc-*) 107254cef2ddSmrg cpu=hppa 107354cef2ddSmrg basic_os=linux 10748c9fbc29Smrg ;; 107554cef2ddSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 107654cef2ddSmrg cpu=i586 10778c9fbc29Smrg ;; 107854cef2ddSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 107954cef2ddSmrg cpu=i686 10808c9fbc29Smrg ;; 108154cef2ddSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 108254cef2ddSmrg cpu=i686 10838c9fbc29Smrg ;; 108454cef2ddSmrg pentium4-*) 108554cef2ddSmrg cpu=i786 10868c9fbc29Smrg ;; 108754cef2ddSmrg pc98-*) 108854cef2ddSmrg cpu=i386 10898c9fbc29Smrg ;; 109054cef2ddSmrg ppc-* | ppcbe-*) 109154cef2ddSmrg cpu=powerpc 10928c9fbc29Smrg ;; 109354cef2ddSmrg ppcle-* | powerpclittle-*) 109454cef2ddSmrg cpu=powerpcle 10958c9fbc29Smrg ;; 109654cef2ddSmrg ppc64-*) 109754cef2ddSmrg cpu=powerpc64 10988c9fbc29Smrg ;; 109954cef2ddSmrg ppc64le-* | powerpc64little-*) 110054cef2ddSmrg cpu=powerpc64le 11018c9fbc29Smrg ;; 110254cef2ddSmrg sb1-*) 110354cef2ddSmrg cpu=mipsisa64sb1 11048c9fbc29Smrg ;; 110554cef2ddSmrg sb1el-*) 110654cef2ddSmrg cpu=mipsisa64sb1el 11078c9fbc29Smrg ;; 110854cef2ddSmrg sh5e[lb]-*) 110954cef2ddSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 11108c9fbc29Smrg ;; 111154cef2ddSmrg spur-*) 111254cef2ddSmrg cpu=spur 11138c9fbc29Smrg ;; 111454cef2ddSmrg strongarm-* | thumb-*) 111554cef2ddSmrg cpu=arm 11168c9fbc29Smrg ;; 111754cef2ddSmrg tx39-*) 111854cef2ddSmrg cpu=mipstx39 111954044362Smrg ;; 112054cef2ddSmrg tx39el-*) 112154cef2ddSmrg cpu=mipstx39el 11228c9fbc29Smrg ;; 112354cef2ddSmrg x64-*) 112454cef2ddSmrg cpu=x86_64 11258c9fbc29Smrg ;; 112670728a38Smrg xscale-* | xscalee[bl]-*) 112754cef2ddSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 11288c9fbc29Smrg ;; 11299ab56c27Smrg arm64-* | aarch64le-*) 113054cef2ddSmrg cpu=aarch64 11318c9fbc29Smrg ;; 11328c9fbc29Smrg 113354cef2ddSmrg # Recognize the canonical CPU Types that limit and/or modify the 113454cef2ddSmrg # company names they are paired with. 113554cef2ddSmrg cr16-*) 113654cef2ddSmrg basic_os=${basic_os:-elf} 11378c9fbc29Smrg ;; 113854cef2ddSmrg crisv32-* | etraxfs*-*) 113954cef2ddSmrg cpu=crisv32 114054cef2ddSmrg vendor=axis 11418c9fbc29Smrg ;; 114254cef2ddSmrg cris-* | etrax*-*) 114354cef2ddSmrg cpu=cris 114454cef2ddSmrg vendor=axis 11458c9fbc29Smrg ;; 114654cef2ddSmrg crx-*) 114754cef2ddSmrg basic_os=${basic_os:-elf} 11488c9fbc29Smrg ;; 114954cef2ddSmrg neo-tandem) 115054cef2ddSmrg cpu=neo 115154cef2ddSmrg vendor=tandem 11528c9fbc29Smrg ;; 115354cef2ddSmrg nse-tandem) 115454cef2ddSmrg cpu=nse 115554cef2ddSmrg vendor=tandem 11568c9fbc29Smrg ;; 115754cef2ddSmrg nsr-tandem) 115854cef2ddSmrg cpu=nsr 115954cef2ddSmrg vendor=tandem 11608c9fbc29Smrg ;; 116154cef2ddSmrg nsv-tandem) 116254cef2ddSmrg cpu=nsv 116354cef2ddSmrg vendor=tandem 11648c9fbc29Smrg ;; 116554cef2ddSmrg nsx-tandem) 116654cef2ddSmrg cpu=nsx 116754cef2ddSmrg vendor=tandem 11688c9fbc29Smrg ;; 116954cef2ddSmrg mipsallegrexel-sony) 117054cef2ddSmrg cpu=mipsallegrexel 117154cef2ddSmrg vendor=sony 11728c9fbc29Smrg ;; 117354cef2ddSmrg tile*-*) 117454cef2ddSmrg basic_os=${basic_os:-linux-gnu} 11758c9fbc29Smrg ;; 117654cef2ddSmrg 11778c9fbc29Smrg *) 117854cef2ddSmrg # Recognize the canonical CPU types that are allowed with any 117954cef2ddSmrg # company name. 118054cef2ddSmrg case $cpu in 118154cef2ddSmrg 1750a | 580 \ 118254cef2ddSmrg | a29k \ 118354cef2ddSmrg | aarch64 | aarch64_be \ 118454cef2ddSmrg | abacus \ 118554cef2ddSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 118654cef2ddSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 118754cef2ddSmrg | alphapca5[67] | alpha64pca5[67] \ 118854cef2ddSmrg | am33_2.0 \ 118954cef2ddSmrg | amdgcn \ 119054cef2ddSmrg | arc | arceb | arc32 | arc64 \ 119154cef2ddSmrg | arm | arm[lb]e | arme[lb] | armv* \ 119254cef2ddSmrg | avr | avr32 \ 119354cef2ddSmrg | asmjs \ 119454cef2ddSmrg | ba \ 119554cef2ddSmrg | be32 | be64 \ 119654cef2ddSmrg | bfin | bpf | bs2000 \ 119754cef2ddSmrg | c[123]* | c30 | [cjt]90 | c4x \ 119854cef2ddSmrg | c8051 | clipper | craynv | csky | cydra \ 119954cef2ddSmrg | d10v | d30v | dlx | dsp16xx \ 120054cef2ddSmrg | e2k | elxsi | epiphany \ 120154cef2ddSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 120254cef2ddSmrg | h8300 | h8500 \ 120354cef2ddSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 120454cef2ddSmrg | hexagon \ 120554cef2ddSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 120654cef2ddSmrg | ip2k | iq2000 \ 120754cef2ddSmrg | k1om \ 120854cef2ddSmrg | le32 | le64 \ 120954cef2ddSmrg | lm32 \ 12109ab56c27Smrg | loongarch32 | loongarch64 \ 121154cef2ddSmrg | m32c | m32r | m32rle \ 121254cef2ddSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 121354cef2ddSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 121454cef2ddSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 121554cef2ddSmrg | microblaze | microblazeel \ 121654cef2ddSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 121754cef2ddSmrg | mips16 \ 121854cef2ddSmrg | mips64 | mips64eb | mips64el \ 121954cef2ddSmrg | mips64octeon | mips64octeonel \ 122054cef2ddSmrg | mips64orion | mips64orionel \ 122154cef2ddSmrg | mips64r5900 | mips64r5900el \ 122254cef2ddSmrg | mips64vr | mips64vrel \ 122354cef2ddSmrg | mips64vr4100 | mips64vr4100el \ 122454cef2ddSmrg | mips64vr4300 | mips64vr4300el \ 122554cef2ddSmrg | mips64vr5000 | mips64vr5000el \ 122654cef2ddSmrg | mips64vr5900 | mips64vr5900el \ 122754cef2ddSmrg | mipsisa32 | mipsisa32el \ 122854cef2ddSmrg | mipsisa32r2 | mipsisa32r2el \ 122954cef2ddSmrg | mipsisa32r3 | mipsisa32r3el \ 123054cef2ddSmrg | mipsisa32r5 | mipsisa32r5el \ 123154cef2ddSmrg | mipsisa32r6 | mipsisa32r6el \ 123254cef2ddSmrg | mipsisa64 | mipsisa64el \ 123354cef2ddSmrg | mipsisa64r2 | mipsisa64r2el \ 123454cef2ddSmrg | mipsisa64r3 | mipsisa64r3el \ 123554cef2ddSmrg | mipsisa64r5 | mipsisa64r5el \ 123654cef2ddSmrg | mipsisa64r6 | mipsisa64r6el \ 123754cef2ddSmrg | mipsisa64sb1 | mipsisa64sb1el \ 123854cef2ddSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 123954cef2ddSmrg | mipsr5900 | mipsr5900el \ 124054cef2ddSmrg | mipstx39 | mipstx39el \ 124154cef2ddSmrg | mmix \ 124254cef2ddSmrg | mn10200 | mn10300 \ 124354cef2ddSmrg | moxie \ 124454cef2ddSmrg | mt \ 124554cef2ddSmrg | msp430 \ 124654cef2ddSmrg | nds32 | nds32le | nds32be \ 124754cef2ddSmrg | nfp \ 124854cef2ddSmrg | nios | nios2 | nios2eb | nios2el \ 124954cef2ddSmrg | none | np1 | ns16k | ns32k | nvptx \ 125054cef2ddSmrg | open8 \ 125154cef2ddSmrg | or1k* \ 125254cef2ddSmrg | or32 \ 125354cef2ddSmrg | orion \ 125454cef2ddSmrg | picochip \ 125554cef2ddSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 125654cef2ddSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 125754cef2ddSmrg | pru \ 125854cef2ddSmrg | pyramid \ 125954cef2ddSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 126054cef2ddSmrg | rl78 | romp | rs6000 | rx \ 126154cef2ddSmrg | s390 | s390x \ 126254cef2ddSmrg | score \ 126354cef2ddSmrg | sh | shl \ 126454cef2ddSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 126554cef2ddSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 126654cef2ddSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 126754cef2ddSmrg | sparclite \ 126854cef2ddSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 126954cef2ddSmrg | spu \ 127054cef2ddSmrg | tahoe \ 127154cef2ddSmrg | thumbv7* \ 127254cef2ddSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 127354cef2ddSmrg | tron \ 127454cef2ddSmrg | ubicom32 \ 127554cef2ddSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 127654cef2ddSmrg | vax \ 127754cef2ddSmrg | visium \ 127854cef2ddSmrg | w65 \ 127954cef2ddSmrg | wasm32 | wasm64 \ 128054cef2ddSmrg | we32k \ 128154cef2ddSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 128254cef2ddSmrg | xstormy16 | xtensa* \ 128354cef2ddSmrg | ymp \ 128454cef2ddSmrg | z8k | z80) 128554cef2ddSmrg ;; 128654cef2ddSmrg 128754cef2ddSmrg *) 128854cef2ddSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 128954cef2ddSmrg exit 1 129054cef2ddSmrg ;; 129154cef2ddSmrg esac 12928c9fbc29Smrg ;; 12938c9fbc29Smrgesac 12948c9fbc29Smrg 12958c9fbc29Smrg# Here we canonicalize certain aliases for manufacturers. 129654cef2ddSmrgcase $vendor in 129754cef2ddSmrg digital*) 129854cef2ddSmrg vendor=dec 12998c9fbc29Smrg ;; 130054cef2ddSmrg commodore*) 130154cef2ddSmrg vendor=cbm 13028c9fbc29Smrg ;; 13038c9fbc29Smrg *) 13048c9fbc29Smrg ;; 13058c9fbc29Smrgesac 13068c9fbc29Smrg 13078c9fbc29Smrg# Decode manufacturer-specific aliases for certain operating systems. 13088c9fbc29Smrg 130954cef2ddSmrgif test x$basic_os != x 13108c9fbc29Smrgthen 131154cef2ddSmrg 13129ab56c27Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 131354cef2ddSmrg# set os. 131454cef2ddSmrgcase $basic_os in 131554cef2ddSmrg gnu/linux*) 131654cef2ddSmrg kernel=linux 131754cef2ddSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 131854cef2ddSmrg ;; 131954cef2ddSmrg os2-emx) 132054cef2ddSmrg kernel=os2 132154cef2ddSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 132254cef2ddSmrg ;; 132354cef2ddSmrg nto-qnx*) 132454cef2ddSmrg kernel=nto 132554cef2ddSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 132654cef2ddSmrg ;; 132754cef2ddSmrg *-*) 132854cef2ddSmrg # shellcheck disable=SC2162 132954cef2ddSmrg saved_IFS=$IFS 133054cef2ddSmrg IFS="-" read kernel os <<EOF 133154cef2ddSmrg$basic_os 133254cef2ddSmrgEOF 133354cef2ddSmrg IFS=$saved_IFS 133454cef2ddSmrg ;; 133554cef2ddSmrg # Default OS when just kernel was specified 133654cef2ddSmrg nto*) 133754cef2ddSmrg kernel=nto 133854cef2ddSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 133954cef2ddSmrg ;; 134054cef2ddSmrg linux*) 134154cef2ddSmrg kernel=linux 134254cef2ddSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 134354cef2ddSmrg ;; 13449ab56c27Smrg managarm*) 13459ab56c27Smrg kernel=managarm 13469ab56c27Smrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 13479ab56c27Smrg ;; 134854cef2ddSmrg *) 134954cef2ddSmrg kernel= 135054cef2ddSmrg os=$basic_os 135154cef2ddSmrg ;; 135254cef2ddSmrgesac 135354cef2ddSmrg 135454cef2ddSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 135554cef2ddSmrg# etc.) 13568c9fbc29Smrgcase $os in 135754044362Smrg # First match some system type aliases that might get confused 135854044362Smrg # with valid system types. 135954cef2ddSmrg # solaris* is a basic system type, with this one exception. 136054cef2ddSmrg auroraux) 136154cef2ddSmrg os=auroraux 13624cd6a3aeSmrg ;; 136354cef2ddSmrg bluegene*) 136454cef2ddSmrg os=cnk 13658c9fbc29Smrg ;; 136654cef2ddSmrg solaris1 | solaris1.*) 136754cef2ddSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 13688c9fbc29Smrg ;; 136954cef2ddSmrg solaris) 137054cef2ddSmrg os=solaris2 13718c9fbc29Smrg ;; 137254cef2ddSmrg unixware*) 137354cef2ddSmrg os=sysv4.2uw 13748c9fbc29Smrg ;; 137554044362Smrg # es1800 is here to avoid being matched by es* (a different OS) 137654cef2ddSmrg es1800*) 137754cef2ddSmrg os=ose 137854044362Smrg ;; 137954cef2ddSmrg # Some version numbers need modification 138054cef2ddSmrg chorusos*) 138154cef2ddSmrg os=chorusos 13828c9fbc29Smrg ;; 138354cef2ddSmrg isc) 138454cef2ddSmrg os=isc2.2 13858c9fbc29Smrg ;; 138654cef2ddSmrg sco6) 138754cef2ddSmrg os=sco5v6 13888c9fbc29Smrg ;; 138954cef2ddSmrg sco5) 139054cef2ddSmrg os=sco3.2v5 13918c9fbc29Smrg ;; 139254cef2ddSmrg sco4) 139354cef2ddSmrg os=sco3.2v4 13948c9fbc29Smrg ;; 139554cef2ddSmrg sco3.2.[4-9]*) 139654cef2ddSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 13978c9fbc29Smrg ;; 139854cef2ddSmrg sco*v* | scout) 139954cef2ddSmrg # Don't match below 14008c9fbc29Smrg ;; 140154cef2ddSmrg sco*) 140254cef2ddSmrg os=sco3.2v2 14038c9fbc29Smrg ;; 140454cef2ddSmrg psos*) 140554cef2ddSmrg os=psos 14068c9fbc29Smrg ;; 140754cef2ddSmrg qnx*) 140854cef2ddSmrg os=qnx 14098c9fbc29Smrg ;; 141054cef2ddSmrg hiux*) 141154cef2ddSmrg os=hiuxwe2 14128c9fbc29Smrg ;; 141354cef2ddSmrg lynx*178) 141454cef2ddSmrg os=lynxos178 14158c9fbc29Smrg ;; 141654cef2ddSmrg lynx*5) 141754cef2ddSmrg os=lynxos5 14188c9fbc29Smrg ;; 141954cef2ddSmrg lynxos*) 142054cef2ddSmrg # don't get caught up in next wildcard 14218c9fbc29Smrg ;; 142254cef2ddSmrg lynx*) 142354cef2ddSmrg os=lynxos 14248c9fbc29Smrg ;; 142554cef2ddSmrg mac[0-9]*) 142654cef2ddSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 14278c9fbc29Smrg ;; 142854cef2ddSmrg opened*) 142954cef2ddSmrg os=openedition 14308c9fbc29Smrg ;; 143154cef2ddSmrg os400*) 143254cef2ddSmrg os=os400 14338c9fbc29Smrg ;; 143454cef2ddSmrg sunos5*) 143554cef2ddSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 14368c9fbc29Smrg ;; 143754cef2ddSmrg sunos6*) 143854cef2ddSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 14398c9fbc29Smrg ;; 144054cef2ddSmrg wince*) 144154cef2ddSmrg os=wince 14428c9fbc29Smrg ;; 144354cef2ddSmrg utek*) 144454cef2ddSmrg os=bsd 14458c9fbc29Smrg ;; 144654cef2ddSmrg dynix*) 144754cef2ddSmrg os=bsd 14488c9fbc29Smrg ;; 144954cef2ddSmrg acis*) 145054cef2ddSmrg os=aos 14518c9fbc29Smrg ;; 145254cef2ddSmrg atheos*) 145354cef2ddSmrg os=atheos 14548c9fbc29Smrg ;; 145554cef2ddSmrg syllable*) 145654cef2ddSmrg os=syllable 145754cef2ddSmrg ;; 145854cef2ddSmrg 386bsd) 145954cef2ddSmrg os=bsd 146054cef2ddSmrg ;; 146154cef2ddSmrg ctix* | uts*) 146254cef2ddSmrg os=sysv 146354cef2ddSmrg ;; 146454cef2ddSmrg nova*) 146554cef2ddSmrg os=rtmk-nova 146654cef2ddSmrg ;; 146754cef2ddSmrg ns2) 146854cef2ddSmrg os=nextstep2 146954cef2ddSmrg ;; 147054cef2ddSmrg # Preserve the version number of sinix5. 147154cef2ddSmrg sinix5.*) 147254cef2ddSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 14738c9fbc29Smrg ;; 147454cef2ddSmrg sinix*) 147554cef2ddSmrg os=sysv4 14768c9fbc29Smrg ;; 147754cef2ddSmrg tpf*) 147854cef2ddSmrg os=tpf 14798c9fbc29Smrg ;; 148054cef2ddSmrg triton*) 148154cef2ddSmrg os=sysv3 14828c9fbc29Smrg ;; 148354cef2ddSmrg oss*) 148454cef2ddSmrg os=sysv3 14858c9fbc29Smrg ;; 148654cef2ddSmrg svr4*) 148754cef2ddSmrg os=sysv4 14888c9fbc29Smrg ;; 148954cef2ddSmrg svr3) 149054cef2ddSmrg os=sysv3 14918c9fbc29Smrg ;; 149254cef2ddSmrg sysvr4) 149354cef2ddSmrg os=sysv4 14948c9fbc29Smrg ;; 149554cef2ddSmrg ose*) 149654cef2ddSmrg os=ose 14978c9fbc29Smrg ;; 149854cef2ddSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 149954cef2ddSmrg os=mint 15004cd6a3aeSmrg ;; 150154cef2ddSmrg dicos*) 150254cef2ddSmrg os=dicos 150354cef2ddSmrg ;; 150454cef2ddSmrg pikeos*) 150554044362Smrg # Until real need of OS specific support for 150654044362Smrg # particular features comes up, bare metal 150754044362Smrg # configurations are quite functional. 150854cef2ddSmrg case $cpu in 150954044362Smrg arm*) 151054cef2ddSmrg os=eabi 151154044362Smrg ;; 151254044362Smrg *) 151354cef2ddSmrg os=elf 151454044362Smrg ;; 151554044362Smrg esac 151654044362Smrg ;; 15178c9fbc29Smrg *) 151854cef2ddSmrg # No normalization, but not necessarily accepted, that comes below. 15198c9fbc29Smrg ;; 15208c9fbc29Smrgesac 152154cef2ddSmrg 15228c9fbc29Smrgelse 15238c9fbc29Smrg 15248c9fbc29Smrg# Here we handle the default operating systems that come with various machines. 15258c9fbc29Smrg# The value should be what the vendor currently ships out the door with their 15268c9fbc29Smrg# machine or put another way, the most popular os provided with the machine. 15278c9fbc29Smrg 15288c9fbc29Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 15298c9fbc29Smrg# "-sun"), then you have to tell the case statement up towards the top 15308c9fbc29Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 15318c9fbc29Smrg# will signal an error saying that MANUFACTURER isn't an operating 15328c9fbc29Smrg# system, and we'll never get to this point. 15338c9fbc29Smrg 153454cef2ddSmrgkernel= 153554cef2ddSmrgcase $cpu-$vendor in 153670728a38Smrg score-*) 153754cef2ddSmrg os=elf 15384e411241Smrg ;; 153970728a38Smrg spu-*) 154054cef2ddSmrg os=elf 15414e411241Smrg ;; 15428c9fbc29Smrg *-acorn) 154354cef2ddSmrg os=riscix1.2 15448c9fbc29Smrg ;; 15458c9fbc29Smrg arm*-rebel) 154654cef2ddSmrg kernel=linux 154754cef2ddSmrg os=gnu 15488c9fbc29Smrg ;; 15498c9fbc29Smrg arm*-semi) 155054cef2ddSmrg os=aout 15518c9fbc29Smrg ;; 155270728a38Smrg c4x-* | tic4x-*) 155354cef2ddSmrg os=coff 155470728a38Smrg ;; 155570728a38Smrg c8051-*) 155654cef2ddSmrg os=elf 155754cef2ddSmrg ;; 155854cef2ddSmrg clipper-intergraph) 155954cef2ddSmrg os=clix 156070728a38Smrg ;; 156170728a38Smrg hexagon-*) 156254cef2ddSmrg os=elf 15634e411241Smrg ;; 15644cd6a3aeSmrg tic54x-*) 156554cef2ddSmrg os=coff 15664cd6a3aeSmrg ;; 15674cd6a3aeSmrg tic55x-*) 156854cef2ddSmrg os=coff 15694cd6a3aeSmrg ;; 15704cd6a3aeSmrg tic6x-*) 157154cef2ddSmrg os=coff 15724cd6a3aeSmrg ;; 15738c9fbc29Smrg # This must come before the *-dec entry. 15748c9fbc29Smrg pdp10-*) 157554cef2ddSmrg os=tops20 15768c9fbc29Smrg ;; 15778c9fbc29Smrg pdp11-*) 157854cef2ddSmrg os=none 15798c9fbc29Smrg ;; 15808c9fbc29Smrg *-dec | vax-*) 158154cef2ddSmrg os=ultrix4.2 15828c9fbc29Smrg ;; 15838c9fbc29Smrg m68*-apollo) 158454cef2ddSmrg os=domain 15858c9fbc29Smrg ;; 15868c9fbc29Smrg i386-sun) 158754cef2ddSmrg os=sunos4.0.2 15888c9fbc29Smrg ;; 15898c9fbc29Smrg m68000-sun) 159054cef2ddSmrg os=sunos3 15918c9fbc29Smrg ;; 15928c9fbc29Smrg m68*-cisco) 159354cef2ddSmrg os=aout 15948c9fbc29Smrg ;; 159570728a38Smrg mep-*) 159654cef2ddSmrg os=elf 15974e411241Smrg ;; 15988c9fbc29Smrg mips*-cisco) 159954cef2ddSmrg os=elf 16008c9fbc29Smrg ;; 16018c9fbc29Smrg mips*-*) 160254cef2ddSmrg os=elf 16038c9fbc29Smrg ;; 16048c9fbc29Smrg or32-*) 160554cef2ddSmrg os=coff 16068c9fbc29Smrg ;; 16078c9fbc29Smrg *-tti) # must be before sparc entry or we get the wrong os. 160854cef2ddSmrg os=sysv3 16098c9fbc29Smrg ;; 16108c9fbc29Smrg sparc-* | *-sun) 161154cef2ddSmrg os=sunos4.1.1 16128c9fbc29Smrg ;; 161354044362Smrg pru-*) 161454cef2ddSmrg os=elf 161554044362Smrg ;; 16168c9fbc29Smrg *-be) 161754cef2ddSmrg os=beos 16188c9fbc29Smrg ;; 16198c9fbc29Smrg *-ibm) 162054cef2ddSmrg os=aix 16218c9fbc29Smrg ;; 162270728a38Smrg *-knuth) 162354cef2ddSmrg os=mmixware 16248c9fbc29Smrg ;; 16258c9fbc29Smrg *-wec) 162654cef2ddSmrg os=proelf 16278c9fbc29Smrg ;; 16288c9fbc29Smrg *-winbond) 162954cef2ddSmrg os=proelf 16308c9fbc29Smrg ;; 16318c9fbc29Smrg *-oki) 163254cef2ddSmrg os=proelf 16338c9fbc29Smrg ;; 16348c9fbc29Smrg *-hp) 163554cef2ddSmrg os=hpux 16368c9fbc29Smrg ;; 16378c9fbc29Smrg *-hitachi) 163854cef2ddSmrg os=hiux 16398c9fbc29Smrg ;; 16408c9fbc29Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 164154cef2ddSmrg os=sysv 16428c9fbc29Smrg ;; 16438c9fbc29Smrg *-cbm) 164454cef2ddSmrg os=amigaos 16458c9fbc29Smrg ;; 16468c9fbc29Smrg *-dg) 164754cef2ddSmrg os=dgux 16488c9fbc29Smrg ;; 16498c9fbc29Smrg *-dolphin) 165054cef2ddSmrg os=sysv3 16518c9fbc29Smrg ;; 16528c9fbc29Smrg m68k-ccur) 165354cef2ddSmrg os=rtu 16548c9fbc29Smrg ;; 16558c9fbc29Smrg m88k-omron*) 165654cef2ddSmrg os=luna 16578c9fbc29Smrg ;; 165854044362Smrg *-next) 165954cef2ddSmrg os=nextstep 16608c9fbc29Smrg ;; 16618c9fbc29Smrg *-sequent) 166254cef2ddSmrg os=ptx 16638c9fbc29Smrg ;; 16648c9fbc29Smrg *-crds) 166554cef2ddSmrg os=unos 16668c9fbc29Smrg ;; 16678c9fbc29Smrg *-ns) 166854cef2ddSmrg os=genix 16698c9fbc29Smrg ;; 16708c9fbc29Smrg i370-*) 167154cef2ddSmrg os=mvs 16728c9fbc29Smrg ;; 16738c9fbc29Smrg *-gould) 167454cef2ddSmrg os=sysv 16758c9fbc29Smrg ;; 16768c9fbc29Smrg *-highlevel) 167754cef2ddSmrg os=bsd 16788c9fbc29Smrg ;; 16798c9fbc29Smrg *-encore) 168054cef2ddSmrg os=bsd 16818c9fbc29Smrg ;; 16828c9fbc29Smrg *-sgi) 168354cef2ddSmrg os=irix 16848c9fbc29Smrg ;; 16858c9fbc29Smrg *-siemens) 168654cef2ddSmrg os=sysv4 16878c9fbc29Smrg ;; 16888c9fbc29Smrg *-masscomp) 168954cef2ddSmrg os=rtu 16908c9fbc29Smrg ;; 16918c9fbc29Smrg f30[01]-fujitsu | f700-fujitsu) 169254cef2ddSmrg os=uxpv 16938c9fbc29Smrg ;; 16948c9fbc29Smrg *-rom68k) 169554cef2ddSmrg os=coff 16968c9fbc29Smrg ;; 16978c9fbc29Smrg *-*bug) 169854cef2ddSmrg os=coff 16998c9fbc29Smrg ;; 17008c9fbc29Smrg *-apple) 170154cef2ddSmrg os=macos 17028c9fbc29Smrg ;; 17038c9fbc29Smrg *-atari*) 170454cef2ddSmrg os=mint 170554cef2ddSmrg ;; 170654cef2ddSmrg *-wrs) 170754cef2ddSmrg os=vxworks 17088c9fbc29Smrg ;; 17098c9fbc29Smrg *) 171054cef2ddSmrg os=none 17118c9fbc29Smrg ;; 17128c9fbc29Smrgesac 171354cef2ddSmrg 17148c9fbc29Smrgfi 17158c9fbc29Smrg 171654cef2ddSmrg# Now, validate our (potentially fixed-up) OS. 171754cef2ddSmrgcase $os in 171854cef2ddSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 171954cef2ddSmrg musl* | newlib* | relibc* | uclibc*) 172054cef2ddSmrg ;; 172154cef2ddSmrg # Likewise for "kernel-abi" 172254cef2ddSmrg eabi* | gnueabi*) 172354cef2ddSmrg ;; 172454cef2ddSmrg # VxWorks passes extra cpu info in the 4th filed. 172554cef2ddSmrg simlinux | simwindows | spe) 172654cef2ddSmrg ;; 172754cef2ddSmrg # Now accept the basic system types. 172854cef2ddSmrg # The portable systems comes first. 172954cef2ddSmrg # Each alternative MUST end in a * to match a version number. 173054cef2ddSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 173154cef2ddSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 173254cef2ddSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 173354cef2ddSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 173454cef2ddSmrg | hiux* | abug | nacl* | netware* | windows* \ 173554cef2ddSmrg | os9* | macos* | osx* | ios* \ 173654cef2ddSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 173754cef2ddSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 173854cef2ddSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 173954cef2ddSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 174054cef2ddSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 174154cef2ddSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 174254cef2ddSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 174354cef2ddSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 174454cef2ddSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 174554cef2ddSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 174654cef2ddSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 174754cef2ddSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 174854cef2ddSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 174954cef2ddSmrg | midipix* | mingw32* | mingw64* | mint* \ 175054cef2ddSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 175154cef2ddSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 175254cef2ddSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 175354cef2ddSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 175454cef2ddSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 175554cef2ddSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 175654cef2ddSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 175754cef2ddSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 175854cef2ddSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 175954cef2ddSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 17609ab56c27Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 17619ab56c27Smrg | fiwix* | mlibc* ) 176254cef2ddSmrg ;; 176354cef2ddSmrg # This one is extra strict with allowed versions 176454cef2ddSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 176554cef2ddSmrg # Don't forget version if it is 3.2v4 or newer. 176654cef2ddSmrg ;; 176754cef2ddSmrg none) 176854cef2ddSmrg ;; 17699ab56c27Smrg kernel* ) 17709ab56c27Smrg # Restricted further below 17719ab56c27Smrg ;; 177254cef2ddSmrg *) 177354cef2ddSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 177454cef2ddSmrg exit 1 177554cef2ddSmrg ;; 177654cef2ddSmrgesac 177754cef2ddSmrg 177854cef2ddSmrg# As a final step for OS-related things, validate the OS-kernel combination 177954cef2ddSmrg# (given a valid OS), if there is a kernel. 178054cef2ddSmrgcase $kernel-$os in 178154cef2ddSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 17829ab56c27Smrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 178354cef2ddSmrg ;; 178454cef2ddSmrg uclinux-uclibc* ) 178554cef2ddSmrg ;; 17869ab56c27Smrg managarm-mlibc* | managarm-kernel* ) 17879ab56c27Smrg ;; 17889ab56c27Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 178954cef2ddSmrg # These are just libc implementations, not actual OSes, and thus 179054cef2ddSmrg # require a kernel. 179154cef2ddSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 179254cef2ddSmrg exit 1 179354cef2ddSmrg ;; 17949ab56c27Smrg -kernel* ) 17959ab56c27Smrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 17969ab56c27Smrg exit 1 17979ab56c27Smrg ;; 17989ab56c27Smrg *-kernel* ) 17999ab56c27Smrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 18009ab56c27Smrg exit 1 18019ab56c27Smrg ;; 180254cef2ddSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 180354cef2ddSmrg ;; 180454cef2ddSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 180554cef2ddSmrg ;; 180654cef2ddSmrg nto-qnx*) 180754cef2ddSmrg ;; 180854cef2ddSmrg os2-emx) 180954cef2ddSmrg ;; 181054cef2ddSmrg *-eabi* | *-gnueabi*) 181154cef2ddSmrg ;; 181254cef2ddSmrg -*) 181354cef2ddSmrg # Blank kernel with real OS is always fine. 181454cef2ddSmrg ;; 181554cef2ddSmrg *-*) 181654cef2ddSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 181754cef2ddSmrg exit 1 181854cef2ddSmrg ;; 181954cef2ddSmrgesac 182054cef2ddSmrg 18218c9fbc29Smrg# Here we handle the case where we know the os, and the CPU type, but not the 18228c9fbc29Smrg# manufacturer. We pick the logical manufacturer. 182354cef2ddSmrgcase $vendor in 182454cef2ddSmrg unknown) 182554cef2ddSmrg case $cpu-$os in 182654cef2ddSmrg *-riscix*) 18278c9fbc29Smrg vendor=acorn 18288c9fbc29Smrg ;; 182954cef2ddSmrg *-sunos*) 18308c9fbc29Smrg vendor=sun 18318c9fbc29Smrg ;; 183254cef2ddSmrg *-cnk* | *-aix*) 18338c9fbc29Smrg vendor=ibm 18348c9fbc29Smrg ;; 183554cef2ddSmrg *-beos*) 18368c9fbc29Smrg vendor=be 18378c9fbc29Smrg ;; 183854cef2ddSmrg *-hpux*) 18398c9fbc29Smrg vendor=hp 18408c9fbc29Smrg ;; 184154cef2ddSmrg *-mpeix*) 18428c9fbc29Smrg vendor=hp 18438c9fbc29Smrg ;; 184454cef2ddSmrg *-hiux*) 18458c9fbc29Smrg vendor=hitachi 18468c9fbc29Smrg ;; 184754cef2ddSmrg *-unos*) 18488c9fbc29Smrg vendor=crds 18498c9fbc29Smrg ;; 185054cef2ddSmrg *-dgux*) 18518c9fbc29Smrg vendor=dg 18528c9fbc29Smrg ;; 185354cef2ddSmrg *-luna*) 18548c9fbc29Smrg vendor=omron 18558c9fbc29Smrg ;; 185654cef2ddSmrg *-genix*) 18578c9fbc29Smrg vendor=ns 18588c9fbc29Smrg ;; 185954cef2ddSmrg *-clix*) 186054cef2ddSmrg vendor=intergraph 186154cef2ddSmrg ;; 186254cef2ddSmrg *-mvs* | *-opened*) 186354cef2ddSmrg vendor=ibm 186454cef2ddSmrg ;; 186554cef2ddSmrg *-os400*) 18668c9fbc29Smrg vendor=ibm 18678c9fbc29Smrg ;; 186854cef2ddSmrg s390-* | s390x-*) 18698c9fbc29Smrg vendor=ibm 18708c9fbc29Smrg ;; 187154cef2ddSmrg *-ptx*) 18728c9fbc29Smrg vendor=sequent 18738c9fbc29Smrg ;; 187454cef2ddSmrg *-tpf*) 18758c9fbc29Smrg vendor=ibm 18768c9fbc29Smrg ;; 187754cef2ddSmrg *-vxsim* | *-vxworks* | *-windiss*) 18788c9fbc29Smrg vendor=wrs 18798c9fbc29Smrg ;; 188054cef2ddSmrg *-aux*) 18818c9fbc29Smrg vendor=apple 18828c9fbc29Smrg ;; 188354cef2ddSmrg *-hms*) 18848c9fbc29Smrg vendor=hitachi 18858c9fbc29Smrg ;; 188654cef2ddSmrg *-mpw* | *-macos*) 18878c9fbc29Smrg vendor=apple 18888c9fbc29Smrg ;; 188954cef2ddSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 18908c9fbc29Smrg vendor=atari 18918c9fbc29Smrg ;; 189254cef2ddSmrg *-vos*) 18938c9fbc29Smrg vendor=stratus 18948c9fbc29Smrg ;; 18958c9fbc29Smrg esac 18968c9fbc29Smrg ;; 18978c9fbc29Smrgesac 18988c9fbc29Smrg 189954cef2ddSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 19008c9fbc29Smrgexit 19018c9fbc29Smrg 19028c9fbc29Smrg# Local variables: 190354cef2ddSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 19048c9fbc29Smrg# time-stamp-start: "timestamp='" 19058c9fbc29Smrg# time-stamp-format: "%:y-%02m-%02d" 19068c9fbc29Smrg# time-stamp-end: "'" 19078c9fbc29Smrg# End: 1908