18dd3e0eeSmrg#! /bin/sh 28dd3e0eeSmrg# Configuration validation subroutine script. 327485fbcSmrg# Copyright 1992-2021 Free Software Foundation, Inc. 48dd3e0eeSmrg 527485fbcSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 627485fbcSmrg 727485fbcSmrgtimestamp='2021-08-14' 88dd3e0eeSmrg 9d5a688bcSmrg# This file is free software; you can redistribute it and/or modify it 10d5a688bcSmrg# under the terms of the GNU General Public License as published by 11d5a688bcSmrg# the Free Software Foundation; either version 3 of the License, or 128dd3e0eeSmrg# (at your option) any later version. 138dd3e0eeSmrg# 14d5a688bcSmrg# This program is distributed in the hope that it will be useful, but 15d5a688bcSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of 16d5a688bcSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17d5a688bcSmrg# General Public License for more details. 188dd3e0eeSmrg# 198dd3e0eeSmrg# You should have received a copy of the GNU General Public License 20c1d6e445Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 21329fdfe9Smrg# 228dd3e0eeSmrg# As a special exception to the GNU General Public License, if you 238dd3e0eeSmrg# distribute this file as part of a program that contains a 248dd3e0eeSmrg# configuration script generated by Autoconf, you may include it under 25d5a688bcSmrg# the same distribution terms that you use for the rest of that 26d5a688bcSmrg# program. This Exception is an additional permission under section 7 27d5a688bcSmrg# of the GNU General Public License, version 3 ("GPLv3"). 288dd3e0eeSmrg 29329fdfe9Smrg 30c1d6e445Smrg# Please send patches to <config-patches@gnu.org>. 318dd3e0eeSmrg# 328dd3e0eeSmrg# Configuration subroutine to validate and canonicalize a configuration type. 338dd3e0eeSmrg# Supply the specified configuration type as an argument. 348dd3e0eeSmrg# If it is invalid, we print an error message on stderr and exit with code 1. 358dd3e0eeSmrg# Otherwise, we print the canonical config type on stdout and succeed. 368dd3e0eeSmrg 37524e9589Smrg# You can get the latest version of this script from: 3827485fbcSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 39524e9589Smrg 408dd3e0eeSmrg# This file is supposed to be the same for all GNU packages 418dd3e0eeSmrg# and recognize all the CPU types, system types and aliases 428dd3e0eeSmrg# that are meaningful with *any* GNU software. 438dd3e0eeSmrg# Each package is responsible for reporting which valid configurations 448dd3e0eeSmrg# it does not support. The user should be able to distinguish 458dd3e0eeSmrg# a failure to support a valid configuration from a meaningless 468dd3e0eeSmrg# configuration. 478dd3e0eeSmrg 488dd3e0eeSmrg# The goal of this file is to map all the various variations of a given 498dd3e0eeSmrg# machine specification into a single specification in the form: 508dd3e0eeSmrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 518dd3e0eeSmrg# or in some cases, the newer four-part form: 528dd3e0eeSmrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 538dd3e0eeSmrg# It is wrong to echo any other type of specification. 548dd3e0eeSmrg 5527485fbcSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 5627485fbcSmrg# about features and limitations of the classic Bourne shell that were 5727485fbcSmrg# superseded or lifted in POSIX. However, this script identifies a wide 5827485fbcSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 5927485fbcSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 6027485fbcSmrg# have a pre-POSIX /bin/sh. 6127485fbcSmrg 628dd3e0eeSmrgme=`echo "$0" | sed -e 's,.*/,,'` 638dd3e0eeSmrg 648dd3e0eeSmrgusage="\ 65c1d6e445SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 668dd3e0eeSmrg 678dd3e0eeSmrgCanonicalize a configuration name. 688dd3e0eeSmrg 69c1d6e445SmrgOptions: 708dd3e0eeSmrg -h, --help print this help, then exit 718dd3e0eeSmrg -t, --time-stamp print date of last modification, then exit 728dd3e0eeSmrg -v, --version print version number, then exit 738dd3e0eeSmrg 748dd3e0eeSmrgReport bugs and patches to <config-patches@gnu.org>." 758dd3e0eeSmrg 768dd3e0eeSmrgversion="\ 778dd3e0eeSmrgGNU config.sub ($timestamp) 788dd3e0eeSmrg 7927485fbcSmrgCopyright 1992-2021 Free Software Foundation, Inc. 808dd3e0eeSmrg 818dd3e0eeSmrgThis is free software; see the source for copying conditions. There is NO 828dd3e0eeSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 838dd3e0eeSmrg 848dd3e0eeSmrghelp=" 858dd3e0eeSmrgTry \`$me --help' for more information." 868dd3e0eeSmrg 878dd3e0eeSmrg# Parse command line 888dd3e0eeSmrgwhile test $# -gt 0 ; do 898dd3e0eeSmrg case $1 in 908dd3e0eeSmrg --time-stamp | --time* | -t ) 91329fdfe9Smrg echo "$timestamp" ; exit ;; 928dd3e0eeSmrg --version | -v ) 93329fdfe9Smrg echo "$version" ; exit ;; 948dd3e0eeSmrg --help | --h* | -h ) 95329fdfe9Smrg echo "$usage"; exit ;; 968dd3e0eeSmrg -- ) # Stop option processing 978dd3e0eeSmrg shift; break ;; 988dd3e0eeSmrg - ) # Use stdin as input. 998dd3e0eeSmrg break ;; 1008dd3e0eeSmrg -* ) 10127485fbcSmrg echo "$me: invalid option $1$help" >&2 1028dd3e0eeSmrg exit 1 ;; 1038dd3e0eeSmrg 1048dd3e0eeSmrg *local*) 1058dd3e0eeSmrg # First pass through any local machine types. 106c1d6e445Smrg echo "$1" 107329fdfe9Smrg exit ;; 1088dd3e0eeSmrg 1098dd3e0eeSmrg * ) 1108dd3e0eeSmrg break ;; 1118dd3e0eeSmrg esac 1128dd3e0eeSmrgdone 1138dd3e0eeSmrg 1148dd3e0eeSmrgcase $# in 1158dd3e0eeSmrg 0) echo "$me: missing argument$help" >&2 1168dd3e0eeSmrg exit 1;; 1178dd3e0eeSmrg 1) ;; 1188dd3e0eeSmrg *) echo "$me: too many arguments$help" >&2 1198dd3e0eeSmrg exit 1;; 1208dd3e0eeSmrgesac 1218dd3e0eeSmrg 12227485fbcSmrg# Split fields of configuration type 12327485fbcSmrg# shellcheck disable=SC2162 12427485fbcSmrgsaved_IFS=$IFS 12527485fbcSmrgIFS="-" read field1 field2 field3 field4 <<EOF 12627485fbcSmrg$1 12727485fbcSmrgEOF 12827485fbcSmrgIFS=$saved_IFS 1298dd3e0eeSmrg 13027485fbcSmrg# Separate into logical components for further validation 13127485fbcSmrgcase $1 in 13227485fbcSmrg *-*-*-*-*) 13327485fbcSmrg echo Invalid configuration \`"$1"\': more than four components >&2 13427485fbcSmrg exit 1 135d5a688bcSmrg ;; 13627485fbcSmrg *-*-*-*) 13727485fbcSmrg basic_machine=$field1-$field2 13827485fbcSmrg basic_os=$field3-$field4 1398dd3e0eeSmrg ;; 14027485fbcSmrg *-*-*) 14127485fbcSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 14227485fbcSmrg # parts 14327485fbcSmrg maybe_os=$field2-$field3 14427485fbcSmrg case $maybe_os in 14527485fbcSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 14627485fbcSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 14727485fbcSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 14827485fbcSmrg | storm-chaos* | os2-emx* | rtmk-nova*) 14927485fbcSmrg basic_machine=$field1 15027485fbcSmrg basic_os=$maybe_os 15127485fbcSmrg ;; 15227485fbcSmrg android-linux) 15327485fbcSmrg basic_machine=$field1-unknown 15427485fbcSmrg basic_os=linux-android 15527485fbcSmrg ;; 15627485fbcSmrg *) 15727485fbcSmrg basic_machine=$field1-$field2 15827485fbcSmrg basic_os=$field3 15927485fbcSmrg ;; 16027485fbcSmrg esac 1618dd3e0eeSmrg ;; 16227485fbcSmrg *-*) 16327485fbcSmrg # A lone config we happen to match not fitting any pattern 16427485fbcSmrg case $field1-$field2 in 16527485fbcSmrg decstation-3100) 16627485fbcSmrg basic_machine=mips-dec 16727485fbcSmrg basic_os= 16827485fbcSmrg ;; 16927485fbcSmrg *-*) 17027485fbcSmrg # Second component is usually, but not always the OS 17127485fbcSmrg case $field2 in 17227485fbcSmrg # Prevent following clause from handling this valid os 17327485fbcSmrg sun*os*) 17427485fbcSmrg basic_machine=$field1 17527485fbcSmrg basic_os=$field2 17627485fbcSmrg ;; 17727485fbcSmrg zephyr*) 17827485fbcSmrg basic_machine=$field1-unknown 17927485fbcSmrg basic_os=$field2 18027485fbcSmrg ;; 18127485fbcSmrg # Manufacturers 18227485fbcSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 18327485fbcSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 18427485fbcSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 18527485fbcSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 18627485fbcSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 18727485fbcSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 18827485fbcSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 18927485fbcSmrg | microblaze* | sim | cisco \ 19027485fbcSmrg | oki | wec | wrs | winbond) 19127485fbcSmrg basic_machine=$field1-$field2 19227485fbcSmrg basic_os= 19327485fbcSmrg ;; 19427485fbcSmrg *) 19527485fbcSmrg basic_machine=$field1 19627485fbcSmrg basic_os=$field2 19727485fbcSmrg ;; 19827485fbcSmrg esac 19927485fbcSmrg ;; 20027485fbcSmrg esac 2018dd3e0eeSmrg ;; 20227485fbcSmrg *) 20327485fbcSmrg # Convert single-component short-hands not valid as part of 20427485fbcSmrg # multi-component configurations. 20527485fbcSmrg case $field1 in 20627485fbcSmrg 386bsd) 20727485fbcSmrg basic_machine=i386-pc 20827485fbcSmrg basic_os=bsd 20927485fbcSmrg ;; 21027485fbcSmrg a29khif) 21127485fbcSmrg basic_machine=a29k-amd 21227485fbcSmrg basic_os=udi 21327485fbcSmrg ;; 21427485fbcSmrg adobe68k) 21527485fbcSmrg basic_machine=m68010-adobe 21627485fbcSmrg basic_os=scout 21727485fbcSmrg ;; 21827485fbcSmrg alliant) 21927485fbcSmrg basic_machine=fx80-alliant 22027485fbcSmrg basic_os= 22127485fbcSmrg ;; 22227485fbcSmrg altos | altos3068) 22327485fbcSmrg basic_machine=m68k-altos 22427485fbcSmrg basic_os= 22527485fbcSmrg ;; 22627485fbcSmrg am29k) 22727485fbcSmrg basic_machine=a29k-none 22827485fbcSmrg basic_os=bsd 22927485fbcSmrg ;; 23027485fbcSmrg amdahl) 23127485fbcSmrg basic_machine=580-amdahl 23227485fbcSmrg basic_os=sysv 23327485fbcSmrg ;; 23427485fbcSmrg amiga) 23527485fbcSmrg basic_machine=m68k-unknown 23627485fbcSmrg basic_os= 23727485fbcSmrg ;; 23827485fbcSmrg amigaos | amigados) 23927485fbcSmrg basic_machine=m68k-unknown 24027485fbcSmrg basic_os=amigaos 24127485fbcSmrg ;; 24227485fbcSmrg amigaunix | amix) 24327485fbcSmrg basic_machine=m68k-unknown 24427485fbcSmrg basic_os=sysv4 24527485fbcSmrg ;; 24627485fbcSmrg apollo68) 24727485fbcSmrg basic_machine=m68k-apollo 24827485fbcSmrg basic_os=sysv 24927485fbcSmrg ;; 25027485fbcSmrg apollo68bsd) 25127485fbcSmrg basic_machine=m68k-apollo 25227485fbcSmrg basic_os=bsd 25327485fbcSmrg ;; 25427485fbcSmrg aros) 25527485fbcSmrg basic_machine=i386-pc 25627485fbcSmrg basic_os=aros 25727485fbcSmrg ;; 25827485fbcSmrg aux) 25927485fbcSmrg basic_machine=m68k-apple 26027485fbcSmrg basic_os=aux 26127485fbcSmrg ;; 26227485fbcSmrg balance) 26327485fbcSmrg basic_machine=ns32k-sequent 26427485fbcSmrg basic_os=dynix 26527485fbcSmrg ;; 26627485fbcSmrg blackfin) 26727485fbcSmrg basic_machine=bfin-unknown 26827485fbcSmrg basic_os=linux 26927485fbcSmrg ;; 27027485fbcSmrg cegcc) 27127485fbcSmrg basic_machine=arm-unknown 27227485fbcSmrg basic_os=cegcc 27327485fbcSmrg ;; 27427485fbcSmrg convex-c1) 27527485fbcSmrg basic_machine=c1-convex 27627485fbcSmrg basic_os=bsd 27727485fbcSmrg ;; 27827485fbcSmrg convex-c2) 27927485fbcSmrg basic_machine=c2-convex 28027485fbcSmrg basic_os=bsd 28127485fbcSmrg ;; 28227485fbcSmrg convex-c32) 28327485fbcSmrg basic_machine=c32-convex 28427485fbcSmrg basic_os=bsd 28527485fbcSmrg ;; 28627485fbcSmrg convex-c34) 28727485fbcSmrg basic_machine=c34-convex 28827485fbcSmrg basic_os=bsd 28927485fbcSmrg ;; 29027485fbcSmrg convex-c38) 29127485fbcSmrg basic_machine=c38-convex 29227485fbcSmrg basic_os=bsd 29327485fbcSmrg ;; 29427485fbcSmrg cray) 29527485fbcSmrg basic_machine=j90-cray 29627485fbcSmrg basic_os=unicos 29727485fbcSmrg ;; 29827485fbcSmrg crds | unos) 29927485fbcSmrg basic_machine=m68k-crds 30027485fbcSmrg basic_os= 30127485fbcSmrg ;; 30227485fbcSmrg da30) 30327485fbcSmrg basic_machine=m68k-da30 30427485fbcSmrg basic_os= 30527485fbcSmrg ;; 30627485fbcSmrg decstation | pmax | pmin | dec3100 | decstatn) 30727485fbcSmrg basic_machine=mips-dec 30827485fbcSmrg basic_os= 30927485fbcSmrg ;; 31027485fbcSmrg delta88) 31127485fbcSmrg basic_machine=m88k-motorola 31227485fbcSmrg basic_os=sysv3 31327485fbcSmrg ;; 31427485fbcSmrg dicos) 31527485fbcSmrg basic_machine=i686-pc 31627485fbcSmrg basic_os=dicos 31727485fbcSmrg ;; 31827485fbcSmrg djgpp) 31927485fbcSmrg basic_machine=i586-pc 32027485fbcSmrg basic_os=msdosdjgpp 32127485fbcSmrg ;; 32227485fbcSmrg ebmon29k) 32327485fbcSmrg basic_machine=a29k-amd 32427485fbcSmrg basic_os=ebmon 32527485fbcSmrg ;; 32627485fbcSmrg es1800 | OSE68k | ose68k | ose | OSE) 32727485fbcSmrg basic_machine=m68k-ericsson 32827485fbcSmrg basic_os=ose 32927485fbcSmrg ;; 33027485fbcSmrg gmicro) 33127485fbcSmrg basic_machine=tron-gmicro 33227485fbcSmrg basic_os=sysv 33327485fbcSmrg ;; 33427485fbcSmrg go32) 33527485fbcSmrg basic_machine=i386-pc 33627485fbcSmrg basic_os=go32 33727485fbcSmrg ;; 33827485fbcSmrg h8300hms) 33927485fbcSmrg basic_machine=h8300-hitachi 34027485fbcSmrg basic_os=hms 34127485fbcSmrg ;; 34227485fbcSmrg h8300xray) 34327485fbcSmrg basic_machine=h8300-hitachi 34427485fbcSmrg basic_os=xray 34527485fbcSmrg ;; 34627485fbcSmrg h8500hms) 34727485fbcSmrg basic_machine=h8500-hitachi 34827485fbcSmrg basic_os=hms 34927485fbcSmrg ;; 35027485fbcSmrg harris) 35127485fbcSmrg basic_machine=m88k-harris 35227485fbcSmrg basic_os=sysv3 35327485fbcSmrg ;; 35427485fbcSmrg hp300 | hp300hpux) 35527485fbcSmrg basic_machine=m68k-hp 35627485fbcSmrg basic_os=hpux 35727485fbcSmrg ;; 35827485fbcSmrg hp300bsd) 35927485fbcSmrg basic_machine=m68k-hp 36027485fbcSmrg basic_os=bsd 36127485fbcSmrg ;; 36227485fbcSmrg hppaosf) 36327485fbcSmrg basic_machine=hppa1.1-hp 36427485fbcSmrg basic_os=osf 36527485fbcSmrg ;; 36627485fbcSmrg hppro) 36727485fbcSmrg basic_machine=hppa1.1-hp 36827485fbcSmrg basic_os=proelf 36927485fbcSmrg ;; 37027485fbcSmrg i386mach) 37127485fbcSmrg basic_machine=i386-mach 37227485fbcSmrg basic_os=mach 37327485fbcSmrg ;; 37427485fbcSmrg isi68 | isi) 37527485fbcSmrg basic_machine=m68k-isi 37627485fbcSmrg basic_os=sysv 37727485fbcSmrg ;; 37827485fbcSmrg m68knommu) 37927485fbcSmrg basic_machine=m68k-unknown 38027485fbcSmrg basic_os=linux 38127485fbcSmrg ;; 38227485fbcSmrg magnum | m3230) 38327485fbcSmrg basic_machine=mips-mips 38427485fbcSmrg basic_os=sysv 38527485fbcSmrg ;; 38627485fbcSmrg merlin) 38727485fbcSmrg basic_machine=ns32k-utek 38827485fbcSmrg basic_os=sysv 38927485fbcSmrg ;; 39027485fbcSmrg mingw64) 39127485fbcSmrg basic_machine=x86_64-pc 39227485fbcSmrg basic_os=mingw64 39327485fbcSmrg ;; 39427485fbcSmrg mingw32) 39527485fbcSmrg basic_machine=i686-pc 39627485fbcSmrg basic_os=mingw32 39727485fbcSmrg ;; 39827485fbcSmrg mingw32ce) 39927485fbcSmrg basic_machine=arm-unknown 40027485fbcSmrg basic_os=mingw32ce 40127485fbcSmrg ;; 40227485fbcSmrg monitor) 40327485fbcSmrg basic_machine=m68k-rom68k 40427485fbcSmrg basic_os=coff 40527485fbcSmrg ;; 40627485fbcSmrg morphos) 40727485fbcSmrg basic_machine=powerpc-unknown 40827485fbcSmrg basic_os=morphos 40927485fbcSmrg ;; 41027485fbcSmrg moxiebox) 41127485fbcSmrg basic_machine=moxie-unknown 41227485fbcSmrg basic_os=moxiebox 41327485fbcSmrg ;; 41427485fbcSmrg msdos) 41527485fbcSmrg basic_machine=i386-pc 41627485fbcSmrg basic_os=msdos 41727485fbcSmrg ;; 41827485fbcSmrg msys) 41927485fbcSmrg basic_machine=i686-pc 42027485fbcSmrg basic_os=msys 42127485fbcSmrg ;; 42227485fbcSmrg mvs) 42327485fbcSmrg basic_machine=i370-ibm 42427485fbcSmrg basic_os=mvs 42527485fbcSmrg ;; 42627485fbcSmrg nacl) 42727485fbcSmrg basic_machine=le32-unknown 42827485fbcSmrg basic_os=nacl 42927485fbcSmrg ;; 43027485fbcSmrg ncr3000) 43127485fbcSmrg basic_machine=i486-ncr 43227485fbcSmrg basic_os=sysv4 43327485fbcSmrg ;; 43427485fbcSmrg netbsd386) 43527485fbcSmrg basic_machine=i386-pc 43627485fbcSmrg basic_os=netbsd 43727485fbcSmrg ;; 43827485fbcSmrg netwinder) 43927485fbcSmrg basic_machine=armv4l-rebel 44027485fbcSmrg basic_os=linux 44127485fbcSmrg ;; 44227485fbcSmrg news | news700 | news800 | news900) 44327485fbcSmrg basic_machine=m68k-sony 44427485fbcSmrg basic_os=newsos 44527485fbcSmrg ;; 44627485fbcSmrg news1000) 44727485fbcSmrg basic_machine=m68030-sony 44827485fbcSmrg basic_os=newsos 44927485fbcSmrg ;; 45027485fbcSmrg necv70) 45127485fbcSmrg basic_machine=v70-nec 45227485fbcSmrg basic_os=sysv 45327485fbcSmrg ;; 45427485fbcSmrg nh3000) 45527485fbcSmrg basic_machine=m68k-harris 45627485fbcSmrg basic_os=cxux 45727485fbcSmrg ;; 45827485fbcSmrg nh[45]000) 45927485fbcSmrg basic_machine=m88k-harris 46027485fbcSmrg basic_os=cxux 46127485fbcSmrg ;; 46227485fbcSmrg nindy960) 46327485fbcSmrg basic_machine=i960-intel 46427485fbcSmrg basic_os=nindy 46527485fbcSmrg ;; 46627485fbcSmrg mon960) 46727485fbcSmrg basic_machine=i960-intel 46827485fbcSmrg basic_os=mon960 46927485fbcSmrg ;; 47027485fbcSmrg nonstopux) 47127485fbcSmrg basic_machine=mips-compaq 47227485fbcSmrg basic_os=nonstopux 47327485fbcSmrg ;; 47427485fbcSmrg os400) 47527485fbcSmrg basic_machine=powerpc-ibm 47627485fbcSmrg basic_os=os400 47727485fbcSmrg ;; 47827485fbcSmrg OSE68000 | ose68000) 47927485fbcSmrg basic_machine=m68000-ericsson 48027485fbcSmrg basic_os=ose 48127485fbcSmrg ;; 48227485fbcSmrg os68k) 48327485fbcSmrg basic_machine=m68k-none 48427485fbcSmrg basic_os=os68k 48527485fbcSmrg ;; 48627485fbcSmrg paragon) 48727485fbcSmrg basic_machine=i860-intel 48827485fbcSmrg basic_os=osf 48927485fbcSmrg ;; 49027485fbcSmrg parisc) 49127485fbcSmrg basic_machine=hppa-unknown 49227485fbcSmrg basic_os=linux 49327485fbcSmrg ;; 49427485fbcSmrg psp) 49527485fbcSmrg basic_machine=mipsallegrexel-sony 49627485fbcSmrg basic_os=psp 49727485fbcSmrg ;; 49827485fbcSmrg pw32) 49927485fbcSmrg basic_machine=i586-unknown 50027485fbcSmrg basic_os=pw32 50127485fbcSmrg ;; 50227485fbcSmrg rdos | rdos64) 50327485fbcSmrg basic_machine=x86_64-pc 50427485fbcSmrg basic_os=rdos 50527485fbcSmrg ;; 50627485fbcSmrg rdos32) 50727485fbcSmrg basic_machine=i386-pc 50827485fbcSmrg basic_os=rdos 50927485fbcSmrg ;; 51027485fbcSmrg rom68k) 51127485fbcSmrg basic_machine=m68k-rom68k 51227485fbcSmrg basic_os=coff 51327485fbcSmrg ;; 51427485fbcSmrg sa29200) 51527485fbcSmrg basic_machine=a29k-amd 51627485fbcSmrg basic_os=udi 51727485fbcSmrg ;; 51827485fbcSmrg sei) 51927485fbcSmrg basic_machine=mips-sei 52027485fbcSmrg basic_os=seiux 52127485fbcSmrg ;; 52227485fbcSmrg sequent) 52327485fbcSmrg basic_machine=i386-sequent 52427485fbcSmrg basic_os= 52527485fbcSmrg ;; 52627485fbcSmrg sps7) 52727485fbcSmrg basic_machine=m68k-bull 52827485fbcSmrg basic_os=sysv2 52927485fbcSmrg ;; 53027485fbcSmrg st2000) 53127485fbcSmrg basic_machine=m68k-tandem 53227485fbcSmrg basic_os= 53327485fbcSmrg ;; 53427485fbcSmrg stratus) 53527485fbcSmrg basic_machine=i860-stratus 53627485fbcSmrg basic_os=sysv4 53727485fbcSmrg ;; 53827485fbcSmrg sun2) 53927485fbcSmrg basic_machine=m68000-sun 54027485fbcSmrg basic_os= 54127485fbcSmrg ;; 54227485fbcSmrg sun2os3) 54327485fbcSmrg basic_machine=m68000-sun 54427485fbcSmrg basic_os=sunos3 54527485fbcSmrg ;; 54627485fbcSmrg sun2os4) 54727485fbcSmrg basic_machine=m68000-sun 54827485fbcSmrg basic_os=sunos4 54927485fbcSmrg ;; 55027485fbcSmrg sun3) 55127485fbcSmrg basic_machine=m68k-sun 55227485fbcSmrg basic_os= 55327485fbcSmrg ;; 55427485fbcSmrg sun3os3) 55527485fbcSmrg basic_machine=m68k-sun 55627485fbcSmrg basic_os=sunos3 55727485fbcSmrg ;; 55827485fbcSmrg sun3os4) 55927485fbcSmrg basic_machine=m68k-sun 56027485fbcSmrg basic_os=sunos4 56127485fbcSmrg ;; 56227485fbcSmrg sun4) 56327485fbcSmrg basic_machine=sparc-sun 56427485fbcSmrg basic_os= 56527485fbcSmrg ;; 56627485fbcSmrg sun4os3) 56727485fbcSmrg basic_machine=sparc-sun 56827485fbcSmrg basic_os=sunos3 56927485fbcSmrg ;; 57027485fbcSmrg sun4os4) 57127485fbcSmrg basic_machine=sparc-sun 57227485fbcSmrg basic_os=sunos4 57327485fbcSmrg ;; 57427485fbcSmrg sun4sol2) 57527485fbcSmrg basic_machine=sparc-sun 57627485fbcSmrg basic_os=solaris2 57727485fbcSmrg ;; 57827485fbcSmrg sun386 | sun386i | roadrunner) 57927485fbcSmrg basic_machine=i386-sun 58027485fbcSmrg basic_os= 58127485fbcSmrg ;; 58227485fbcSmrg sv1) 58327485fbcSmrg basic_machine=sv1-cray 58427485fbcSmrg basic_os=unicos 58527485fbcSmrg ;; 58627485fbcSmrg symmetry) 58727485fbcSmrg basic_machine=i386-sequent 58827485fbcSmrg basic_os=dynix 58927485fbcSmrg ;; 59027485fbcSmrg t3e) 59127485fbcSmrg basic_machine=alphaev5-cray 59227485fbcSmrg basic_os=unicos 59327485fbcSmrg ;; 59427485fbcSmrg t90) 59527485fbcSmrg basic_machine=t90-cray 59627485fbcSmrg basic_os=unicos 59727485fbcSmrg ;; 59827485fbcSmrg toad1) 59927485fbcSmrg basic_machine=pdp10-xkl 60027485fbcSmrg basic_os=tops20 60127485fbcSmrg ;; 60227485fbcSmrg tpf) 60327485fbcSmrg basic_machine=s390x-ibm 60427485fbcSmrg basic_os=tpf 60527485fbcSmrg ;; 60627485fbcSmrg udi29k) 60727485fbcSmrg basic_machine=a29k-amd 60827485fbcSmrg basic_os=udi 60927485fbcSmrg ;; 61027485fbcSmrg ultra3) 61127485fbcSmrg basic_machine=a29k-nyu 61227485fbcSmrg basic_os=sym1 61327485fbcSmrg ;; 61427485fbcSmrg v810 | necv810) 61527485fbcSmrg basic_machine=v810-nec 61627485fbcSmrg basic_os=none 61727485fbcSmrg ;; 61827485fbcSmrg vaxv) 61927485fbcSmrg basic_machine=vax-dec 62027485fbcSmrg basic_os=sysv 62127485fbcSmrg ;; 62227485fbcSmrg vms) 62327485fbcSmrg basic_machine=vax-dec 62427485fbcSmrg basic_os=vms 62527485fbcSmrg ;; 62627485fbcSmrg vsta) 62727485fbcSmrg basic_machine=i386-pc 62827485fbcSmrg basic_os=vsta 62927485fbcSmrg ;; 63027485fbcSmrg vxworks960) 63127485fbcSmrg basic_machine=i960-wrs 63227485fbcSmrg basic_os=vxworks 63327485fbcSmrg ;; 63427485fbcSmrg vxworks68) 63527485fbcSmrg basic_machine=m68k-wrs 63627485fbcSmrg basic_os=vxworks 63727485fbcSmrg ;; 63827485fbcSmrg vxworks29k) 63927485fbcSmrg basic_machine=a29k-wrs 64027485fbcSmrg basic_os=vxworks 64127485fbcSmrg ;; 64227485fbcSmrg xbox) 64327485fbcSmrg basic_machine=i686-pc 64427485fbcSmrg basic_os=mingw32 64527485fbcSmrg ;; 64627485fbcSmrg ymp) 64727485fbcSmrg basic_machine=ymp-cray 64827485fbcSmrg basic_os=unicos 64927485fbcSmrg ;; 65027485fbcSmrg *) 65127485fbcSmrg basic_machine=$1 65227485fbcSmrg basic_os= 65327485fbcSmrg ;; 65427485fbcSmrg esac 6558dd3e0eeSmrg ;; 6568dd3e0eeSmrgesac 6578dd3e0eeSmrg 65827485fbcSmrg# Decode 1-component or ad-hoc basic machines 6598dd3e0eeSmrgcase $basic_machine in 66027485fbcSmrg # Here we handle the default manufacturer of certain CPU types. It is in 66127485fbcSmrg # some cases the only manufacturer, in others, it is the most popular. 66227485fbcSmrg w89k) 66327485fbcSmrg cpu=hppa1.1 66427485fbcSmrg vendor=winbond 665c1d6e445Smrg ;; 66627485fbcSmrg op50n) 66727485fbcSmrg cpu=hppa1.1 66827485fbcSmrg vendor=oki 6698dd3e0eeSmrg ;; 67027485fbcSmrg op60c) 67127485fbcSmrg cpu=hppa1.1 67227485fbcSmrg vendor=oki 6738dd3e0eeSmrg ;; 67427485fbcSmrg ibm*) 67527485fbcSmrg cpu=i370 67627485fbcSmrg vendor=ibm 677329fdfe9Smrg ;; 67827485fbcSmrg orion105) 67927485fbcSmrg cpu=clipper 68027485fbcSmrg vendor=highlevel 681d5a688bcSmrg ;; 68227485fbcSmrg mac | mpw | mac-mpw) 68327485fbcSmrg cpu=m68k 68427485fbcSmrg vendor=apple 685d5a688bcSmrg ;; 68627485fbcSmrg pmac | pmac-mpw) 68727485fbcSmrg cpu=powerpc 68827485fbcSmrg vendor=apple 689d5a688bcSmrg ;; 690d5a688bcSmrg 6918dd3e0eeSmrg # Recognize the various machine names and aliases which stand 6928dd3e0eeSmrg # for a CPU type and a company and sometimes even an OS. 6938dd3e0eeSmrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 69427485fbcSmrg cpu=m68000 69527485fbcSmrg vendor=att 6968dd3e0eeSmrg ;; 6978dd3e0eeSmrg 3b*) 69827485fbcSmrg cpu=we32k 69927485fbcSmrg vendor=att 700329fdfe9Smrg ;; 701524e9589Smrg bluegene*) 70227485fbcSmrg cpu=powerpc 70327485fbcSmrg vendor=ibm 70427485fbcSmrg basic_os=cnk 7058dd3e0eeSmrg ;; 7068dd3e0eeSmrg decsystem10* | dec10*) 70727485fbcSmrg cpu=pdp10 70827485fbcSmrg vendor=dec 70927485fbcSmrg basic_os=tops10 7108dd3e0eeSmrg ;; 7118dd3e0eeSmrg decsystem20* | dec20*) 71227485fbcSmrg cpu=pdp10 71327485fbcSmrg vendor=dec 71427485fbcSmrg basic_os=tops20 7158dd3e0eeSmrg ;; 7168dd3e0eeSmrg delta | 3300 | motorola-3300 | motorola-delta \ 7178dd3e0eeSmrg | 3300-motorola | delta-motorola) 71827485fbcSmrg cpu=m68k 71927485fbcSmrg vendor=motorola 7208dd3e0eeSmrg ;; 721c1d6e445Smrg dpx2*) 72227485fbcSmrg cpu=m68k 72327485fbcSmrg vendor=bull 72427485fbcSmrg basic_os=sysv3 7258dd3e0eeSmrg ;; 7268dd3e0eeSmrg encore | umax | mmax) 72727485fbcSmrg cpu=ns32k 72827485fbcSmrg vendor=encore 7298dd3e0eeSmrg ;; 73027485fbcSmrg elxsi) 73127485fbcSmrg cpu=elxsi 73227485fbcSmrg vendor=elxsi 73327485fbcSmrg basic_os=${basic_os:-bsd} 7348dd3e0eeSmrg ;; 7358dd3e0eeSmrg fx2800) 73627485fbcSmrg cpu=i860 73727485fbcSmrg vendor=alliant 7388dd3e0eeSmrg ;; 7398dd3e0eeSmrg genix) 74027485fbcSmrg cpu=ns32k 74127485fbcSmrg vendor=ns 7428dd3e0eeSmrg ;; 7438dd3e0eeSmrg h3050r* | hiux*) 74427485fbcSmrg cpu=hppa1.1 74527485fbcSmrg vendor=hitachi 74627485fbcSmrg basic_os=hiuxwe2 7478dd3e0eeSmrg ;; 7488dd3e0eeSmrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 74927485fbcSmrg cpu=hppa1.0 75027485fbcSmrg vendor=hp 7518dd3e0eeSmrg ;; 7528dd3e0eeSmrg hp9k2[0-9][0-9] | hp9k31[0-9]) 75327485fbcSmrg cpu=m68000 75427485fbcSmrg vendor=hp 7558dd3e0eeSmrg ;; 7568dd3e0eeSmrg hp9k3[2-9][0-9]) 75727485fbcSmrg cpu=m68k 75827485fbcSmrg vendor=hp 7598dd3e0eeSmrg ;; 7608dd3e0eeSmrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 76127485fbcSmrg cpu=hppa1.0 76227485fbcSmrg vendor=hp 7638dd3e0eeSmrg ;; 7648dd3e0eeSmrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 76527485fbcSmrg cpu=hppa1.1 76627485fbcSmrg vendor=hp 7678dd3e0eeSmrg ;; 7688dd3e0eeSmrg hp9k78[0-9] | hp78[0-9]) 7698dd3e0eeSmrg # FIXME: really hppa2.0-hp 77027485fbcSmrg cpu=hppa1.1 77127485fbcSmrg vendor=hp 7728dd3e0eeSmrg ;; 7738dd3e0eeSmrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 7748dd3e0eeSmrg # FIXME: really hppa2.0-hp 77527485fbcSmrg cpu=hppa1.1 77627485fbcSmrg vendor=hp 7778dd3e0eeSmrg ;; 7788dd3e0eeSmrg hp9k8[0-9][13679] | hp8[0-9][13679]) 77927485fbcSmrg cpu=hppa1.1 78027485fbcSmrg vendor=hp 7818dd3e0eeSmrg ;; 7828dd3e0eeSmrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 78327485fbcSmrg cpu=hppa1.0 78427485fbcSmrg vendor=hp 7858dd3e0eeSmrg ;; 7868dd3e0eeSmrg i*86v32) 78727485fbcSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 78827485fbcSmrg vendor=pc 78927485fbcSmrg basic_os=sysv32 7908dd3e0eeSmrg ;; 7918dd3e0eeSmrg i*86v4*) 79227485fbcSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79327485fbcSmrg vendor=pc 79427485fbcSmrg basic_os=sysv4 7958dd3e0eeSmrg ;; 7968dd3e0eeSmrg i*86v) 79727485fbcSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79827485fbcSmrg vendor=pc 79927485fbcSmrg basic_os=sysv 8008dd3e0eeSmrg ;; 8018dd3e0eeSmrg i*86sol2) 80227485fbcSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 80327485fbcSmrg vendor=pc 80427485fbcSmrg basic_os=solaris2 8058dd3e0eeSmrg ;; 80627485fbcSmrg j90 | j90-cray) 80727485fbcSmrg cpu=j90 80827485fbcSmrg vendor=cray 80927485fbcSmrg basic_os=${basic_os:-unicos} 8108dd3e0eeSmrg ;; 8118dd3e0eeSmrg iris | iris4d) 81227485fbcSmrg cpu=mips 81327485fbcSmrg vendor=sgi 81427485fbcSmrg case $basic_os in 81527485fbcSmrg irix*) 8168dd3e0eeSmrg ;; 8178dd3e0eeSmrg *) 81827485fbcSmrg basic_os=irix4 8198dd3e0eeSmrg ;; 8208dd3e0eeSmrg esac 8218dd3e0eeSmrg ;; 8228dd3e0eeSmrg miniframe) 82327485fbcSmrg cpu=m68000 82427485fbcSmrg vendor=convergent 8258dd3e0eeSmrg ;; 82627485fbcSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 82727485fbcSmrg cpu=m68k 82827485fbcSmrg vendor=atari 82927485fbcSmrg basic_os=mint 8308dd3e0eeSmrg ;; 8318dd3e0eeSmrg news-3600 | risc-news) 83227485fbcSmrg cpu=mips 83327485fbcSmrg vendor=sony 83427485fbcSmrg basic_os=newsos 8358dd3e0eeSmrg ;; 836c1d6e445Smrg next | m*-next) 83727485fbcSmrg cpu=m68k 83827485fbcSmrg vendor=next 83927485fbcSmrg case $basic_os in 84027485fbcSmrg openstep*) 84127485fbcSmrg ;; 84227485fbcSmrg nextstep*) 8438dd3e0eeSmrg ;; 84427485fbcSmrg ns2*) 84527485fbcSmrg basic_os=nextstep2 8468dd3e0eeSmrg ;; 8478dd3e0eeSmrg *) 84827485fbcSmrg basic_os=nextstep3 8498dd3e0eeSmrg ;; 8508dd3e0eeSmrg esac 8518dd3e0eeSmrg ;; 8528dd3e0eeSmrg np1) 85327485fbcSmrg cpu=np1 85427485fbcSmrg vendor=gould 855c1d6e445Smrg ;; 8568dd3e0eeSmrg op50n-* | op60c-*) 85727485fbcSmrg cpu=hppa1.1 85827485fbcSmrg vendor=oki 85927485fbcSmrg basic_os=proelf 8608dd3e0eeSmrg ;; 8618dd3e0eeSmrg pa-hitachi) 86227485fbcSmrg cpu=hppa1.1 86327485fbcSmrg vendor=hitachi 86427485fbcSmrg basic_os=hiuxwe2 865329fdfe9Smrg ;; 8668dd3e0eeSmrg pbd) 86727485fbcSmrg cpu=sparc 86827485fbcSmrg vendor=tti 8698dd3e0eeSmrg ;; 8708dd3e0eeSmrg pbb) 87127485fbcSmrg cpu=m68k 87227485fbcSmrg vendor=tti 8738dd3e0eeSmrg ;; 87427485fbcSmrg pc532) 87527485fbcSmrg cpu=ns32k 87627485fbcSmrg vendor=pc532 8778dd3e0eeSmrg ;; 8788dd3e0eeSmrg pn) 87927485fbcSmrg cpu=pn 88027485fbcSmrg vendor=gould 8818dd3e0eeSmrg ;; 88227485fbcSmrg power) 88327485fbcSmrg cpu=power 88427485fbcSmrg vendor=ibm 8858dd3e0eeSmrg ;; 88627485fbcSmrg ps2) 88727485fbcSmrg cpu=i386 88827485fbcSmrg vendor=ibm 8898dd3e0eeSmrg ;; 89027485fbcSmrg rm[46]00) 89127485fbcSmrg cpu=mips 89227485fbcSmrg vendor=siemens 8938dd3e0eeSmrg ;; 89427485fbcSmrg rtpc | rtpc-*) 89527485fbcSmrg cpu=romp 89627485fbcSmrg vendor=ibm 8978dd3e0eeSmrg ;; 89827485fbcSmrg sde) 89927485fbcSmrg cpu=mipsisa32 90027485fbcSmrg vendor=sde 90127485fbcSmrg basic_os=${basic_os:-elf} 9028dd3e0eeSmrg ;; 90327485fbcSmrg simso-wrs) 90427485fbcSmrg cpu=sparclite 90527485fbcSmrg vendor=wrs 90627485fbcSmrg basic_os=vxworks 9078dd3e0eeSmrg ;; 90827485fbcSmrg tower | tower-32) 90927485fbcSmrg cpu=m68k 91027485fbcSmrg vendor=ncr 9118dd3e0eeSmrg ;; 91227485fbcSmrg vpp*|vx|vx-*) 91327485fbcSmrg cpu=f301 91427485fbcSmrg vendor=fujitsu 915d5a688bcSmrg ;; 91627485fbcSmrg w65) 91727485fbcSmrg cpu=w65 91827485fbcSmrg vendor=wdc 919329fdfe9Smrg ;; 92027485fbcSmrg w89k-*) 92127485fbcSmrg cpu=hppa1.1 92227485fbcSmrg vendor=winbond 92327485fbcSmrg basic_os=proelf 9248dd3e0eeSmrg ;; 92527485fbcSmrg none) 92627485fbcSmrg cpu=none 92727485fbcSmrg vendor=none 9288dd3e0eeSmrg ;; 92927485fbcSmrg leon|leon[3-9]) 93027485fbcSmrg cpu=sparc 93127485fbcSmrg vendor=$basic_machine 9328dd3e0eeSmrg ;; 93327485fbcSmrg leon-*|leon[3-9]-*) 93427485fbcSmrg cpu=sparc 93527485fbcSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 9368dd3e0eeSmrg ;; 93727485fbcSmrg 93827485fbcSmrg *-*) 93927485fbcSmrg # shellcheck disable=SC2162 94027485fbcSmrg saved_IFS=$IFS 94127485fbcSmrg IFS="-" read cpu vendor <<EOF 94227485fbcSmrg$basic_machine 94327485fbcSmrgEOF 94427485fbcSmrg IFS=$saved_IFS 9458dd3e0eeSmrg ;; 94627485fbcSmrg # We use `pc' rather than `unknown' 94727485fbcSmrg # because (1) that's what they normally are, and 94827485fbcSmrg # (2) the word "unknown" tends to confuse beginning users. 94927485fbcSmrg i*86 | x86_64) 95027485fbcSmrg cpu=$basic_machine 95127485fbcSmrg vendor=pc 9528dd3e0eeSmrg ;; 95327485fbcSmrg # These rules are duplicated from below for sake of the special case above; 95427485fbcSmrg # i.e. things that normalized to x86 arches should also default to "pc" 95527485fbcSmrg pc98) 95627485fbcSmrg cpu=i386 95727485fbcSmrg vendor=pc 9588dd3e0eeSmrg ;; 95927485fbcSmrg x64 | amd64) 96027485fbcSmrg cpu=x86_64 96127485fbcSmrg vendor=pc 9628dd3e0eeSmrg ;; 96327485fbcSmrg # Recognize the basic CPU types without company name. 96427485fbcSmrg *) 96527485fbcSmrg cpu=$basic_machine 96627485fbcSmrg vendor=unknown 967329fdfe9Smrg ;; 96827485fbcSmrgesac 96927485fbcSmrg 97027485fbcSmrgunset -v basic_machine 97127485fbcSmrg 97227485fbcSmrg# Decode basic machines in the full and proper CPU-Company form. 97327485fbcSmrgcase $cpu-$vendor in 97427485fbcSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 97527485fbcSmrg # some cases the only manufacturer, in others, it is the most popular. 97627485fbcSmrg craynv-unknown) 97727485fbcSmrg vendor=cray 97827485fbcSmrg basic_os=${basic_os:-unicosmp} 9798dd3e0eeSmrg ;; 98027485fbcSmrg c90-unknown | c90-cray) 98127485fbcSmrg vendor=cray 98227485fbcSmrg basic_os=${Basic_os:-unicos} 9838dd3e0eeSmrg ;; 98427485fbcSmrg fx80-unknown) 98527485fbcSmrg vendor=alliant 986329fdfe9Smrg ;; 98727485fbcSmrg romp-unknown) 98827485fbcSmrg vendor=ibm 9898dd3e0eeSmrg ;; 99027485fbcSmrg mmix-unknown) 99127485fbcSmrg vendor=knuth 9928dd3e0eeSmrg ;; 99327485fbcSmrg microblaze-unknown | microblazeel-unknown) 99427485fbcSmrg vendor=xilinx 9958dd3e0eeSmrg ;; 99627485fbcSmrg rs6000-unknown) 99727485fbcSmrg vendor=ibm 9988dd3e0eeSmrg ;; 99927485fbcSmrg vax-unknown) 100027485fbcSmrg vendor=dec 10018dd3e0eeSmrg ;; 100227485fbcSmrg pdp11-unknown) 100327485fbcSmrg vendor=dec 1004d5a688bcSmrg ;; 100527485fbcSmrg we32k-unknown) 100627485fbcSmrg vendor=att 10078dd3e0eeSmrg ;; 100827485fbcSmrg cydra-unknown) 100927485fbcSmrg vendor=cydrome 10108dd3e0eeSmrg ;; 101127485fbcSmrg i370-ibm*) 101227485fbcSmrg vendor=ibm 10138dd3e0eeSmrg ;; 101427485fbcSmrg orion-unknown) 101527485fbcSmrg vendor=highlevel 10168dd3e0eeSmrg ;; 101727485fbcSmrg xps-unknown | xps100-unknown) 101827485fbcSmrg cpu=xps100 101927485fbcSmrg vendor=honeywell 10208dd3e0eeSmrg ;; 102127485fbcSmrg 102227485fbcSmrg # Here we normalize CPU types with a missing or matching vendor 102327485fbcSmrg dpx20-unknown | dpx20-bull) 102427485fbcSmrg cpu=rs6000 102527485fbcSmrg vendor=bull 102627485fbcSmrg basic_os=${basic_os:-bosx} 10278dd3e0eeSmrg ;; 102827485fbcSmrg 102927485fbcSmrg # Here we normalize CPU types irrespective of the vendor 103027485fbcSmrg amd64-*) 103127485fbcSmrg cpu=x86_64 10328dd3e0eeSmrg ;; 103327485fbcSmrg blackfin-*) 103427485fbcSmrg cpu=bfin 103527485fbcSmrg basic_os=linux 10368dd3e0eeSmrg ;; 103727485fbcSmrg c54x-*) 103827485fbcSmrg cpu=tic54x 10398dd3e0eeSmrg ;; 104027485fbcSmrg c55x-*) 104127485fbcSmrg cpu=tic55x 10428dd3e0eeSmrg ;; 104327485fbcSmrg c6x-*) 104427485fbcSmrg cpu=tic6x 10458dd3e0eeSmrg ;; 104627485fbcSmrg e500v[12]-*) 104727485fbcSmrg cpu=powerpc 104827485fbcSmrg basic_os=${basic_os}"spe" 10498dd3e0eeSmrg ;; 105027485fbcSmrg mips3*-*) 105127485fbcSmrg cpu=mips64 10528dd3e0eeSmrg ;; 105327485fbcSmrg ms1-*) 105427485fbcSmrg cpu=mt 10558dd3e0eeSmrg ;; 105627485fbcSmrg m68knommu-*) 105727485fbcSmrg cpu=m68k 105827485fbcSmrg basic_os=linux 10598dd3e0eeSmrg ;; 106027485fbcSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 106127485fbcSmrg cpu=s12z 1062329fdfe9Smrg ;; 106327485fbcSmrg openrisc-*) 106427485fbcSmrg cpu=or32 10658dd3e0eeSmrg ;; 106627485fbcSmrg parisc-*) 106727485fbcSmrg cpu=hppa 106827485fbcSmrg basic_os=linux 10698dd3e0eeSmrg ;; 107027485fbcSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 107127485fbcSmrg cpu=i586 10728dd3e0eeSmrg ;; 107327485fbcSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 107427485fbcSmrg cpu=i686 10758dd3e0eeSmrg ;; 107627485fbcSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 107727485fbcSmrg cpu=i686 1078329fdfe9Smrg ;; 107927485fbcSmrg pentium4-*) 108027485fbcSmrg cpu=i786 10818dd3e0eeSmrg ;; 108227485fbcSmrg pc98-*) 108327485fbcSmrg cpu=i386 10848dd3e0eeSmrg ;; 108527485fbcSmrg ppc-* | ppcbe-*) 108627485fbcSmrg cpu=powerpc 10878dd3e0eeSmrg ;; 108827485fbcSmrg ppcle-* | powerpclittle-*) 108927485fbcSmrg cpu=powerpcle 10908dd3e0eeSmrg ;; 109127485fbcSmrg ppc64-*) 109227485fbcSmrg cpu=powerpc64 10938dd3e0eeSmrg ;; 109427485fbcSmrg ppc64le-* | powerpc64little-*) 109527485fbcSmrg cpu=powerpc64le 10968dd3e0eeSmrg ;; 109727485fbcSmrg sb1-*) 109827485fbcSmrg cpu=mipsisa64sb1 10998dd3e0eeSmrg ;; 110027485fbcSmrg sb1el-*) 110127485fbcSmrg cpu=mipsisa64sb1el 11028dd3e0eeSmrg ;; 110327485fbcSmrg sh5e[lb]-*) 110427485fbcSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 11058dd3e0eeSmrg ;; 110627485fbcSmrg spur-*) 110727485fbcSmrg cpu=spur 11088dd3e0eeSmrg ;; 110927485fbcSmrg strongarm-* | thumb-*) 111027485fbcSmrg cpu=arm 11118dd3e0eeSmrg ;; 111227485fbcSmrg tx39-*) 111327485fbcSmrg cpu=mipstx39 1114c1d6e445Smrg ;; 111527485fbcSmrg tx39el-*) 111627485fbcSmrg cpu=mipstx39el 1117329fdfe9Smrg ;; 111827485fbcSmrg x64-*) 111927485fbcSmrg cpu=x86_64 11208dd3e0eeSmrg ;; 1121d5a688bcSmrg xscale-* | xscalee[bl]-*) 112227485fbcSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 11238dd3e0eeSmrg ;; 112427485fbcSmrg arm64-*) 112527485fbcSmrg cpu=aarch64 11268dd3e0eeSmrg ;; 11278dd3e0eeSmrg 112827485fbcSmrg # Recognize the canonical CPU Types that limit and/or modify the 112927485fbcSmrg # company names they are paired with. 113027485fbcSmrg cr16-*) 113127485fbcSmrg basic_os=${basic_os:-elf} 1132329fdfe9Smrg ;; 113327485fbcSmrg crisv32-* | etraxfs*-*) 113427485fbcSmrg cpu=crisv32 113527485fbcSmrg vendor=axis 11368dd3e0eeSmrg ;; 113727485fbcSmrg cris-* | etrax*-*) 113827485fbcSmrg cpu=cris 113927485fbcSmrg vendor=axis 11408dd3e0eeSmrg ;; 114127485fbcSmrg crx-*) 114227485fbcSmrg basic_os=${basic_os:-elf} 11438dd3e0eeSmrg ;; 114427485fbcSmrg neo-tandem) 114527485fbcSmrg cpu=neo 114627485fbcSmrg vendor=tandem 11478dd3e0eeSmrg ;; 114827485fbcSmrg nse-tandem) 114927485fbcSmrg cpu=nse 115027485fbcSmrg vendor=tandem 11518dd3e0eeSmrg ;; 115227485fbcSmrg nsr-tandem) 115327485fbcSmrg cpu=nsr 115427485fbcSmrg vendor=tandem 11558dd3e0eeSmrg ;; 115627485fbcSmrg nsv-tandem) 115727485fbcSmrg cpu=nsv 115827485fbcSmrg vendor=tandem 11598dd3e0eeSmrg ;; 116027485fbcSmrg nsx-tandem) 116127485fbcSmrg cpu=nsx 116227485fbcSmrg vendor=tandem 11638dd3e0eeSmrg ;; 116427485fbcSmrg mipsallegrexel-sony) 116527485fbcSmrg cpu=mipsallegrexel 116627485fbcSmrg vendor=sony 11678dd3e0eeSmrg ;; 116827485fbcSmrg tile*-*) 116927485fbcSmrg basic_os=${basic_os:-linux-gnu} 11708dd3e0eeSmrg ;; 117127485fbcSmrg 11728dd3e0eeSmrg *) 117327485fbcSmrg # Recognize the canonical CPU types that are allowed with any 117427485fbcSmrg # company name. 117527485fbcSmrg case $cpu in 117627485fbcSmrg 1750a | 580 \ 117727485fbcSmrg | a29k \ 117827485fbcSmrg | aarch64 | aarch64_be \ 117927485fbcSmrg | abacus \ 118027485fbcSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 118127485fbcSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 118227485fbcSmrg | alphapca5[67] | alpha64pca5[67] \ 118327485fbcSmrg | am33_2.0 \ 118427485fbcSmrg | amdgcn \ 118527485fbcSmrg | arc | arceb | arc32 | arc64 \ 118627485fbcSmrg | arm | arm[lb]e | arme[lb] | armv* \ 118727485fbcSmrg | avr | avr32 \ 118827485fbcSmrg | asmjs \ 118927485fbcSmrg | ba \ 119027485fbcSmrg | be32 | be64 \ 119127485fbcSmrg | bfin | bpf | bs2000 \ 119227485fbcSmrg | c[123]* | c30 | [cjt]90 | c4x \ 119327485fbcSmrg | c8051 | clipper | craynv | csky | cydra \ 119427485fbcSmrg | d10v | d30v | dlx | dsp16xx \ 119527485fbcSmrg | e2k | elxsi | epiphany \ 119627485fbcSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 119727485fbcSmrg | h8300 | h8500 \ 119827485fbcSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 119927485fbcSmrg | hexagon \ 120027485fbcSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 120127485fbcSmrg | ip2k | iq2000 \ 120227485fbcSmrg | k1om \ 120327485fbcSmrg | le32 | le64 \ 120427485fbcSmrg | lm32 \ 120527485fbcSmrg | loongarch32 | loongarch64 | loongarchx32 \ 120627485fbcSmrg | m32c | m32r | m32rle \ 120727485fbcSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 120827485fbcSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 120927485fbcSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 121027485fbcSmrg | microblaze | microblazeel \ 121127485fbcSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 121227485fbcSmrg | mips16 \ 121327485fbcSmrg | mips64 | mips64eb | mips64el \ 121427485fbcSmrg | mips64octeon | mips64octeonel \ 121527485fbcSmrg | mips64orion | mips64orionel \ 121627485fbcSmrg | mips64r5900 | mips64r5900el \ 121727485fbcSmrg | mips64vr | mips64vrel \ 121827485fbcSmrg | mips64vr4100 | mips64vr4100el \ 121927485fbcSmrg | mips64vr4300 | mips64vr4300el \ 122027485fbcSmrg | mips64vr5000 | mips64vr5000el \ 122127485fbcSmrg | mips64vr5900 | mips64vr5900el \ 122227485fbcSmrg | mipsisa32 | mipsisa32el \ 122327485fbcSmrg | mipsisa32r2 | mipsisa32r2el \ 122427485fbcSmrg | mipsisa32r3 | mipsisa32r3el \ 122527485fbcSmrg | mipsisa32r5 | mipsisa32r5el \ 122627485fbcSmrg | mipsisa32r6 | mipsisa32r6el \ 122727485fbcSmrg | mipsisa64 | mipsisa64el \ 122827485fbcSmrg | mipsisa64r2 | mipsisa64r2el \ 122927485fbcSmrg | mipsisa64r3 | mipsisa64r3el \ 123027485fbcSmrg | mipsisa64r5 | mipsisa64r5el \ 123127485fbcSmrg | mipsisa64r6 | mipsisa64r6el \ 123227485fbcSmrg | mipsisa64sb1 | mipsisa64sb1el \ 123327485fbcSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 123427485fbcSmrg | mipsr5900 | mipsr5900el \ 123527485fbcSmrg | mipstx39 | mipstx39el \ 123627485fbcSmrg | mmix \ 123727485fbcSmrg | mn10200 | mn10300 \ 123827485fbcSmrg | moxie \ 123927485fbcSmrg | mt \ 124027485fbcSmrg | msp430 \ 124127485fbcSmrg | nds32 | nds32le | nds32be \ 124227485fbcSmrg | nfp \ 124327485fbcSmrg | nios | nios2 | nios2eb | nios2el \ 124427485fbcSmrg | none | np1 | ns16k | ns32k | nvptx \ 124527485fbcSmrg | open8 \ 124627485fbcSmrg | or1k* \ 124727485fbcSmrg | or32 \ 124827485fbcSmrg | orion \ 124927485fbcSmrg | picochip \ 125027485fbcSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 125127485fbcSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 125227485fbcSmrg | pru \ 125327485fbcSmrg | pyramid \ 125427485fbcSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 125527485fbcSmrg | rl78 | romp | rs6000 | rx \ 125627485fbcSmrg | s390 | s390x \ 125727485fbcSmrg | score \ 125827485fbcSmrg | sh | shl \ 125927485fbcSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 126027485fbcSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 126127485fbcSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 126227485fbcSmrg | sparclite \ 126327485fbcSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 126427485fbcSmrg | spu \ 126527485fbcSmrg | tahoe \ 126627485fbcSmrg | thumbv7* \ 126727485fbcSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 126827485fbcSmrg | tron \ 126927485fbcSmrg | ubicom32 \ 127027485fbcSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 127127485fbcSmrg | vax \ 127227485fbcSmrg | visium \ 127327485fbcSmrg | w65 \ 127427485fbcSmrg | wasm32 | wasm64 \ 127527485fbcSmrg | we32k \ 127627485fbcSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 127727485fbcSmrg | xstormy16 | xtensa* \ 127827485fbcSmrg | ymp \ 127927485fbcSmrg | z8k | z80) 128027485fbcSmrg ;; 128127485fbcSmrg 128227485fbcSmrg *) 128327485fbcSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 128427485fbcSmrg exit 1 128527485fbcSmrg ;; 128627485fbcSmrg esac 12878dd3e0eeSmrg ;; 12888dd3e0eeSmrgesac 12898dd3e0eeSmrg 12908dd3e0eeSmrg# Here we canonicalize certain aliases for manufacturers. 129127485fbcSmrgcase $vendor in 129227485fbcSmrg digital*) 129327485fbcSmrg vendor=dec 12948dd3e0eeSmrg ;; 129527485fbcSmrg commodore*) 129627485fbcSmrg vendor=cbm 12978dd3e0eeSmrg ;; 12988dd3e0eeSmrg *) 12998dd3e0eeSmrg ;; 13008dd3e0eeSmrgesac 13018dd3e0eeSmrg 13028dd3e0eeSmrg# Decode manufacturer-specific aliases for certain operating systems. 13038dd3e0eeSmrg 130427485fbcSmrgif test x$basic_os != x 13058dd3e0eeSmrgthen 130627485fbcSmrg 130727485fbcSmrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 130827485fbcSmrg# set os. 130927485fbcSmrgcase $basic_os in 131027485fbcSmrg gnu/linux*) 131127485fbcSmrg kernel=linux 131227485fbcSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 131327485fbcSmrg ;; 131427485fbcSmrg os2-emx) 131527485fbcSmrg kernel=os2 131627485fbcSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 131727485fbcSmrg ;; 131827485fbcSmrg nto-qnx*) 131927485fbcSmrg kernel=nto 132027485fbcSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 132127485fbcSmrg ;; 132227485fbcSmrg *-*) 132327485fbcSmrg # shellcheck disable=SC2162 132427485fbcSmrg saved_IFS=$IFS 132527485fbcSmrg IFS="-" read kernel os <<EOF 132627485fbcSmrg$basic_os 132727485fbcSmrgEOF 132827485fbcSmrg IFS=$saved_IFS 132927485fbcSmrg ;; 133027485fbcSmrg # Default OS when just kernel was specified 133127485fbcSmrg nto*) 133227485fbcSmrg kernel=nto 133327485fbcSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 133427485fbcSmrg ;; 133527485fbcSmrg linux*) 133627485fbcSmrg kernel=linux 133727485fbcSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 133827485fbcSmrg ;; 133927485fbcSmrg *) 134027485fbcSmrg kernel= 134127485fbcSmrg os=$basic_os 134227485fbcSmrg ;; 134327485fbcSmrgesac 134427485fbcSmrg 134527485fbcSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 134627485fbcSmrg# etc.) 13478dd3e0eeSmrgcase $os in 1348c1d6e445Smrg # First match some system type aliases that might get confused 1349c1d6e445Smrg # with valid system types. 135027485fbcSmrg # solaris* is a basic system type, with this one exception. 135127485fbcSmrg auroraux) 135227485fbcSmrg os=auroraux 1353524e9589Smrg ;; 135427485fbcSmrg bluegene*) 135527485fbcSmrg os=cnk 13568dd3e0eeSmrg ;; 135727485fbcSmrg solaris1 | solaris1.*) 135827485fbcSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 13598dd3e0eeSmrg ;; 136027485fbcSmrg solaris) 136127485fbcSmrg os=solaris2 13628dd3e0eeSmrg ;; 136327485fbcSmrg unixware*) 136427485fbcSmrg os=sysv4.2uw 13658dd3e0eeSmrg ;; 1366c1d6e445Smrg # es1800 is here to avoid being matched by es* (a different OS) 136727485fbcSmrg es1800*) 136827485fbcSmrg os=ose 1369c1d6e445Smrg ;; 137027485fbcSmrg # Some version numbers need modification 137127485fbcSmrg chorusos*) 137227485fbcSmrg os=chorusos 13738dd3e0eeSmrg ;; 137427485fbcSmrg isc) 137527485fbcSmrg os=isc2.2 13768dd3e0eeSmrg ;; 137727485fbcSmrg sco6) 137827485fbcSmrg os=sco5v6 13798dd3e0eeSmrg ;; 138027485fbcSmrg sco5) 138127485fbcSmrg os=sco3.2v5 13828dd3e0eeSmrg ;; 138327485fbcSmrg sco4) 138427485fbcSmrg os=sco3.2v4 13858dd3e0eeSmrg ;; 138627485fbcSmrg sco3.2.[4-9]*) 138727485fbcSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1388329fdfe9Smrg ;; 138927485fbcSmrg sco*v* | scout) 139027485fbcSmrg # Don't match below 13918dd3e0eeSmrg ;; 139227485fbcSmrg sco*) 139327485fbcSmrg os=sco3.2v2 13948dd3e0eeSmrg ;; 139527485fbcSmrg psos*) 139627485fbcSmrg os=psos 13978dd3e0eeSmrg ;; 139827485fbcSmrg qnx*) 139927485fbcSmrg os=qnx 14008dd3e0eeSmrg ;; 140127485fbcSmrg hiux*) 140227485fbcSmrg os=hiuxwe2 1403329fdfe9Smrg ;; 140427485fbcSmrg lynx*178) 140527485fbcSmrg os=lynxos178 14068dd3e0eeSmrg ;; 140727485fbcSmrg lynx*5) 140827485fbcSmrg os=lynxos5 14098dd3e0eeSmrg ;; 141027485fbcSmrg lynxos*) 141127485fbcSmrg # don't get caught up in next wildcard 14128dd3e0eeSmrg ;; 141327485fbcSmrg lynx*) 141427485fbcSmrg os=lynxos 14158dd3e0eeSmrg ;; 141627485fbcSmrg mac[0-9]*) 141727485fbcSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 14188dd3e0eeSmrg ;; 141927485fbcSmrg opened*) 142027485fbcSmrg os=openedition 1421329fdfe9Smrg ;; 142227485fbcSmrg os400*) 142327485fbcSmrg os=os400 14248dd3e0eeSmrg ;; 142527485fbcSmrg sunos5*) 142627485fbcSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 14278dd3e0eeSmrg ;; 142827485fbcSmrg sunos6*) 142927485fbcSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 14308dd3e0eeSmrg ;; 143127485fbcSmrg wince*) 143227485fbcSmrg os=wince 14338dd3e0eeSmrg ;; 143427485fbcSmrg utek*) 143527485fbcSmrg os=bsd 14368dd3e0eeSmrg ;; 143727485fbcSmrg dynix*) 143827485fbcSmrg os=bsd 14398dd3e0eeSmrg ;; 144027485fbcSmrg acis*) 144127485fbcSmrg os=aos 14428dd3e0eeSmrg ;; 144327485fbcSmrg atheos*) 144427485fbcSmrg os=atheos 1445329fdfe9Smrg ;; 144627485fbcSmrg syllable*) 144727485fbcSmrg os=syllable 144827485fbcSmrg ;; 144927485fbcSmrg 386bsd) 145027485fbcSmrg os=bsd 145127485fbcSmrg ;; 145227485fbcSmrg ctix* | uts*) 145327485fbcSmrg os=sysv 145427485fbcSmrg ;; 145527485fbcSmrg nova*) 145627485fbcSmrg os=rtmk-nova 145727485fbcSmrg ;; 145827485fbcSmrg ns2) 145927485fbcSmrg os=nextstep2 146027485fbcSmrg ;; 146127485fbcSmrg # Preserve the version number of sinix5. 146227485fbcSmrg sinix5.*) 146327485fbcSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 14648dd3e0eeSmrg ;; 146527485fbcSmrg sinix*) 146627485fbcSmrg os=sysv4 14678dd3e0eeSmrg ;; 146827485fbcSmrg tpf*) 146927485fbcSmrg os=tpf 14708dd3e0eeSmrg ;; 147127485fbcSmrg triton*) 147227485fbcSmrg os=sysv3 14738dd3e0eeSmrg ;; 147427485fbcSmrg oss*) 147527485fbcSmrg os=sysv3 14768dd3e0eeSmrg ;; 147727485fbcSmrg svr4*) 147827485fbcSmrg os=sysv4 14798dd3e0eeSmrg ;; 148027485fbcSmrg svr3) 148127485fbcSmrg os=sysv3 14828dd3e0eeSmrg ;; 148327485fbcSmrg sysvr4) 148427485fbcSmrg os=sysv4 14858dd3e0eeSmrg ;; 148627485fbcSmrg ose*) 148727485fbcSmrg os=ose 1488329fdfe9Smrg ;; 148927485fbcSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 149027485fbcSmrg os=mint 1491329fdfe9Smrg ;; 149227485fbcSmrg dicos*) 149327485fbcSmrg os=dicos 149427485fbcSmrg ;; 149527485fbcSmrg pikeos*) 1496c1d6e445Smrg # Until real need of OS specific support for 1497c1d6e445Smrg # particular features comes up, bare metal 1498c1d6e445Smrg # configurations are quite functional. 149927485fbcSmrg case $cpu in 1500c1d6e445Smrg arm*) 150127485fbcSmrg os=eabi 1502c1d6e445Smrg ;; 1503c1d6e445Smrg *) 150427485fbcSmrg os=elf 1505c1d6e445Smrg ;; 1506c1d6e445Smrg esac 1507c1d6e445Smrg ;; 15088dd3e0eeSmrg *) 150927485fbcSmrg # No normalization, but not necessarily accepted, that comes below. 15108dd3e0eeSmrg ;; 15118dd3e0eeSmrgesac 151227485fbcSmrg 15138dd3e0eeSmrgelse 15148dd3e0eeSmrg 15158dd3e0eeSmrg# Here we handle the default operating systems that come with various machines. 15168dd3e0eeSmrg# The value should be what the vendor currently ships out the door with their 15178dd3e0eeSmrg# machine or put another way, the most popular os provided with the machine. 15188dd3e0eeSmrg 15198dd3e0eeSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 15208dd3e0eeSmrg# "-sun"), then you have to tell the case statement up towards the top 15218dd3e0eeSmrg# that MANUFACTURER isn't an operating system. Otherwise, code above 15228dd3e0eeSmrg# will signal an error saying that MANUFACTURER isn't an operating 15238dd3e0eeSmrg# system, and we'll never get to this point. 15248dd3e0eeSmrg 152527485fbcSmrgkernel= 152627485fbcSmrgcase $cpu-$vendor in 1527d5a688bcSmrg score-*) 152827485fbcSmrg os=elf 1529329fdfe9Smrg ;; 1530d5a688bcSmrg spu-*) 153127485fbcSmrg os=elf 1532329fdfe9Smrg ;; 15338dd3e0eeSmrg *-acorn) 153427485fbcSmrg os=riscix1.2 15358dd3e0eeSmrg ;; 15368dd3e0eeSmrg arm*-rebel) 153727485fbcSmrg kernel=linux 153827485fbcSmrg os=gnu 15398dd3e0eeSmrg ;; 15408dd3e0eeSmrg arm*-semi) 154127485fbcSmrg os=aout 15428dd3e0eeSmrg ;; 1543d5a688bcSmrg c4x-* | tic4x-*) 154427485fbcSmrg os=coff 1545d5a688bcSmrg ;; 1546c1d6e445Smrg c8051-*) 154727485fbcSmrg os=elf 154827485fbcSmrg ;; 154927485fbcSmrg clipper-intergraph) 155027485fbcSmrg os=clix 1551c1d6e445Smrg ;; 1552d5a688bcSmrg hexagon-*) 155327485fbcSmrg os=elf 1554329fdfe9Smrg ;; 1555524e9589Smrg tic54x-*) 155627485fbcSmrg os=coff 1557524e9589Smrg ;; 1558524e9589Smrg tic55x-*) 155927485fbcSmrg os=coff 1560524e9589Smrg ;; 1561524e9589Smrg tic6x-*) 156227485fbcSmrg os=coff 1563524e9589Smrg ;; 15648dd3e0eeSmrg # This must come before the *-dec entry. 15658dd3e0eeSmrg pdp10-*) 156627485fbcSmrg os=tops20 15678dd3e0eeSmrg ;; 15688dd3e0eeSmrg pdp11-*) 156927485fbcSmrg os=none 15708dd3e0eeSmrg ;; 15718dd3e0eeSmrg *-dec | vax-*) 157227485fbcSmrg os=ultrix4.2 15738dd3e0eeSmrg ;; 15748dd3e0eeSmrg m68*-apollo) 157527485fbcSmrg os=domain 15768dd3e0eeSmrg ;; 15778dd3e0eeSmrg i386-sun) 157827485fbcSmrg os=sunos4.0.2 15798dd3e0eeSmrg ;; 15808dd3e0eeSmrg m68000-sun) 158127485fbcSmrg os=sunos3 15828dd3e0eeSmrg ;; 15838dd3e0eeSmrg m68*-cisco) 158427485fbcSmrg os=aout 15858dd3e0eeSmrg ;; 1586d5a688bcSmrg mep-*) 158727485fbcSmrg os=elf 1588329fdfe9Smrg ;; 15898dd3e0eeSmrg mips*-cisco) 159027485fbcSmrg os=elf 15918dd3e0eeSmrg ;; 15928dd3e0eeSmrg mips*-*) 159327485fbcSmrg os=elf 15948dd3e0eeSmrg ;; 15958dd3e0eeSmrg or32-*) 159627485fbcSmrg os=coff 15978dd3e0eeSmrg ;; 15988dd3e0eeSmrg *-tti) # must be before sparc entry or we get the wrong os. 159927485fbcSmrg os=sysv3 16008dd3e0eeSmrg ;; 16018dd3e0eeSmrg sparc-* | *-sun) 160227485fbcSmrg os=sunos4.1.1 16038dd3e0eeSmrg ;; 1604c1d6e445Smrg pru-*) 160527485fbcSmrg os=elf 1606c1d6e445Smrg ;; 16078dd3e0eeSmrg *-be) 160827485fbcSmrg os=beos 16098dd3e0eeSmrg ;; 16108dd3e0eeSmrg *-ibm) 161127485fbcSmrg os=aix 16128dd3e0eeSmrg ;; 1613d5a688bcSmrg *-knuth) 161427485fbcSmrg os=mmixware 1615329fdfe9Smrg ;; 16168dd3e0eeSmrg *-wec) 161727485fbcSmrg os=proelf 16188dd3e0eeSmrg ;; 16198dd3e0eeSmrg *-winbond) 162027485fbcSmrg os=proelf 16218dd3e0eeSmrg ;; 16228dd3e0eeSmrg *-oki) 162327485fbcSmrg os=proelf 16248dd3e0eeSmrg ;; 16258dd3e0eeSmrg *-hp) 162627485fbcSmrg os=hpux 16278dd3e0eeSmrg ;; 16288dd3e0eeSmrg *-hitachi) 162927485fbcSmrg os=hiux 16308dd3e0eeSmrg ;; 16318dd3e0eeSmrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 163227485fbcSmrg os=sysv 16338dd3e0eeSmrg ;; 16348dd3e0eeSmrg *-cbm) 163527485fbcSmrg os=amigaos 16368dd3e0eeSmrg ;; 16378dd3e0eeSmrg *-dg) 163827485fbcSmrg os=dgux 16398dd3e0eeSmrg ;; 16408dd3e0eeSmrg *-dolphin) 164127485fbcSmrg os=sysv3 16428dd3e0eeSmrg ;; 16438dd3e0eeSmrg m68k-ccur) 164427485fbcSmrg os=rtu 16458dd3e0eeSmrg ;; 16468dd3e0eeSmrg m88k-omron*) 164727485fbcSmrg os=luna 16488dd3e0eeSmrg ;; 1649c1d6e445Smrg *-next) 165027485fbcSmrg os=nextstep 16518dd3e0eeSmrg ;; 16528dd3e0eeSmrg *-sequent) 165327485fbcSmrg os=ptx 16548dd3e0eeSmrg ;; 16558dd3e0eeSmrg *-crds) 165627485fbcSmrg os=unos 16578dd3e0eeSmrg ;; 16588dd3e0eeSmrg *-ns) 165927485fbcSmrg os=genix 16608dd3e0eeSmrg ;; 16618dd3e0eeSmrg i370-*) 166227485fbcSmrg os=mvs 16638dd3e0eeSmrg ;; 16648dd3e0eeSmrg *-gould) 166527485fbcSmrg os=sysv 16668dd3e0eeSmrg ;; 16678dd3e0eeSmrg *-highlevel) 166827485fbcSmrg os=bsd 16698dd3e0eeSmrg ;; 16708dd3e0eeSmrg *-encore) 167127485fbcSmrg os=bsd 16728dd3e0eeSmrg ;; 16738dd3e0eeSmrg *-sgi) 167427485fbcSmrg os=irix 16758dd3e0eeSmrg ;; 16768dd3e0eeSmrg *-siemens) 167727485fbcSmrg os=sysv4 16788dd3e0eeSmrg ;; 16798dd3e0eeSmrg *-masscomp) 168027485fbcSmrg os=rtu 16818dd3e0eeSmrg ;; 16828dd3e0eeSmrg f30[01]-fujitsu | f700-fujitsu) 168327485fbcSmrg os=uxpv 16848dd3e0eeSmrg ;; 16858dd3e0eeSmrg *-rom68k) 168627485fbcSmrg os=coff 16878dd3e0eeSmrg ;; 16888dd3e0eeSmrg *-*bug) 168927485fbcSmrg os=coff 16908dd3e0eeSmrg ;; 16918dd3e0eeSmrg *-apple) 169227485fbcSmrg os=macos 16938dd3e0eeSmrg ;; 16948dd3e0eeSmrg *-atari*) 169527485fbcSmrg os=mint 169627485fbcSmrg ;; 169727485fbcSmrg *-wrs) 169827485fbcSmrg os=vxworks 16998dd3e0eeSmrg ;; 17008dd3e0eeSmrg *) 170127485fbcSmrg os=none 17028dd3e0eeSmrg ;; 17038dd3e0eeSmrgesac 170427485fbcSmrg 17058dd3e0eeSmrgfi 17068dd3e0eeSmrg 170727485fbcSmrg# Now, validate our (potentially fixed-up) OS. 170827485fbcSmrgcase $os in 170927485fbcSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 171027485fbcSmrg musl* | newlib* | relibc* | uclibc*) 171127485fbcSmrg ;; 171227485fbcSmrg # Likewise for "kernel-abi" 171327485fbcSmrg eabi* | gnueabi*) 171427485fbcSmrg ;; 171527485fbcSmrg # VxWorks passes extra cpu info in the 4th filed. 171627485fbcSmrg simlinux | simwindows | spe) 171727485fbcSmrg ;; 171827485fbcSmrg # Now accept the basic system types. 171927485fbcSmrg # The portable systems comes first. 172027485fbcSmrg # Each alternative MUST end in a * to match a version number. 172127485fbcSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 172227485fbcSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 172327485fbcSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 172427485fbcSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 172527485fbcSmrg | hiux* | abug | nacl* | netware* | windows* \ 172627485fbcSmrg | os9* | macos* | osx* | ios* \ 172727485fbcSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 172827485fbcSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 172927485fbcSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 173027485fbcSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 173127485fbcSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 173227485fbcSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 173327485fbcSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 173427485fbcSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 173527485fbcSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 173627485fbcSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 173727485fbcSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 173827485fbcSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 173927485fbcSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 174027485fbcSmrg | midipix* | mingw32* | mingw64* | mint* \ 174127485fbcSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 174227485fbcSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 174327485fbcSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 174427485fbcSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 174527485fbcSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 174627485fbcSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 174727485fbcSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 174827485fbcSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 174927485fbcSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 175027485fbcSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 175127485fbcSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 175227485fbcSmrg ;; 175327485fbcSmrg # This one is extra strict with allowed versions 175427485fbcSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 175527485fbcSmrg # Don't forget version if it is 3.2v4 or newer. 175627485fbcSmrg ;; 175727485fbcSmrg none) 175827485fbcSmrg ;; 175927485fbcSmrg *) 176027485fbcSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 176127485fbcSmrg exit 1 176227485fbcSmrg ;; 176327485fbcSmrgesac 176427485fbcSmrg 176527485fbcSmrg# As a final step for OS-related things, validate the OS-kernel combination 176627485fbcSmrg# (given a valid OS), if there is a kernel. 176727485fbcSmrgcase $kernel-$os in 176827485fbcSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 176927485fbcSmrg | linux-musl* | linux-relibc* | linux-uclibc* ) 177027485fbcSmrg ;; 177127485fbcSmrg uclinux-uclibc* ) 177227485fbcSmrg ;; 177327485fbcSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 177427485fbcSmrg # These are just libc implementations, not actual OSes, and thus 177527485fbcSmrg # require a kernel. 177627485fbcSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 177727485fbcSmrg exit 1 177827485fbcSmrg ;; 177927485fbcSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 178027485fbcSmrg ;; 178127485fbcSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 178227485fbcSmrg ;; 178327485fbcSmrg nto-qnx*) 178427485fbcSmrg ;; 178527485fbcSmrg os2-emx) 178627485fbcSmrg ;; 178727485fbcSmrg *-eabi* | *-gnueabi*) 178827485fbcSmrg ;; 178927485fbcSmrg -*) 179027485fbcSmrg # Blank kernel with real OS is always fine. 179127485fbcSmrg ;; 179227485fbcSmrg *-*) 179327485fbcSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 179427485fbcSmrg exit 1 179527485fbcSmrg ;; 179627485fbcSmrgesac 179727485fbcSmrg 17988dd3e0eeSmrg# Here we handle the case where we know the os, and the CPU type, but not the 17998dd3e0eeSmrg# manufacturer. We pick the logical manufacturer. 180027485fbcSmrgcase $vendor in 180127485fbcSmrg unknown) 180227485fbcSmrg case $cpu-$os in 180327485fbcSmrg *-riscix*) 18048dd3e0eeSmrg vendor=acorn 18058dd3e0eeSmrg ;; 180627485fbcSmrg *-sunos*) 18078dd3e0eeSmrg vendor=sun 18088dd3e0eeSmrg ;; 180927485fbcSmrg *-cnk* | *-aix*) 18108dd3e0eeSmrg vendor=ibm 18118dd3e0eeSmrg ;; 181227485fbcSmrg *-beos*) 18138dd3e0eeSmrg vendor=be 18148dd3e0eeSmrg ;; 181527485fbcSmrg *-hpux*) 18168dd3e0eeSmrg vendor=hp 18178dd3e0eeSmrg ;; 181827485fbcSmrg *-mpeix*) 18198dd3e0eeSmrg vendor=hp 18208dd3e0eeSmrg ;; 182127485fbcSmrg *-hiux*) 18228dd3e0eeSmrg vendor=hitachi 18238dd3e0eeSmrg ;; 182427485fbcSmrg *-unos*) 18258dd3e0eeSmrg vendor=crds 18268dd3e0eeSmrg ;; 182727485fbcSmrg *-dgux*) 18288dd3e0eeSmrg vendor=dg 18298dd3e0eeSmrg ;; 183027485fbcSmrg *-luna*) 18318dd3e0eeSmrg vendor=omron 18328dd3e0eeSmrg ;; 183327485fbcSmrg *-genix*) 18348dd3e0eeSmrg vendor=ns 18358dd3e0eeSmrg ;; 183627485fbcSmrg *-clix*) 183727485fbcSmrg vendor=intergraph 183827485fbcSmrg ;; 183927485fbcSmrg *-mvs* | *-opened*) 184027485fbcSmrg vendor=ibm 184127485fbcSmrg ;; 184227485fbcSmrg *-os400*) 18438dd3e0eeSmrg vendor=ibm 18448dd3e0eeSmrg ;; 184527485fbcSmrg s390-* | s390x-*) 1846329fdfe9Smrg vendor=ibm 1847329fdfe9Smrg ;; 184827485fbcSmrg *-ptx*) 18498dd3e0eeSmrg vendor=sequent 18508dd3e0eeSmrg ;; 185127485fbcSmrg *-tpf*) 1852329fdfe9Smrg vendor=ibm 1853329fdfe9Smrg ;; 185427485fbcSmrg *-vxsim* | *-vxworks* | *-windiss*) 18558dd3e0eeSmrg vendor=wrs 18568dd3e0eeSmrg ;; 185727485fbcSmrg *-aux*) 18588dd3e0eeSmrg vendor=apple 18598dd3e0eeSmrg ;; 186027485fbcSmrg *-hms*) 18618dd3e0eeSmrg vendor=hitachi 18628dd3e0eeSmrg ;; 186327485fbcSmrg *-mpw* | *-macos*) 18648dd3e0eeSmrg vendor=apple 18658dd3e0eeSmrg ;; 186627485fbcSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 18678dd3e0eeSmrg vendor=atari 18688dd3e0eeSmrg ;; 186927485fbcSmrg *-vos*) 18708dd3e0eeSmrg vendor=stratus 18718dd3e0eeSmrg ;; 18728dd3e0eeSmrg esac 18738dd3e0eeSmrg ;; 18748dd3e0eeSmrgesac 18758dd3e0eeSmrg 187627485fbcSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1877329fdfe9Smrgexit 18788dd3e0eeSmrg 18798dd3e0eeSmrg# Local variables: 188027485fbcSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 18818dd3e0eeSmrg# time-stamp-start: "timestamp='" 18828dd3e0eeSmrg# time-stamp-format: "%:y-%02m-%02d" 18838dd3e0eeSmrg# time-stamp-end: "'" 18848dd3e0eeSmrg# End: 1885