1c06b6b69Smrg#! /bin/sh 2c06b6b69Smrg# Configuration validation subroutine script. 344256261Smrg# Copyright 1992-2023 Free Software Foundation, Inc. 4c06b6b69Smrg 544256261Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 644256261Smrg 744256261Smrgtimestamp='2023-01-21' 8c06b6b69Smrg 97a5ec427Smrg# This file is free software; you can redistribute it and/or modify it 107a5ec427Smrg# under the terms of the GNU General Public License as published by 1144256261Smrg# the Free Software Foundation, either version 3 of the License, or 12c06b6b69Smrg# (at your option) any later version. 13c06b6b69Smrg# 147a5ec427Smrg# This program is distributed in the hope that it will be useful, but 157a5ec427Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 167a5ec427Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 177a5ec427Smrg# General Public License for more details. 18c06b6b69Smrg# 19c06b6b69Smrg# You should have received a copy of the GNU General Public License 2044256261Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 219f4658d1Smrg# 22c06b6b69Smrg# As a special exception to the GNU General Public License, if you 23c06b6b69Smrg# distribute this file as part of a program that contains a 24c06b6b69Smrg# configuration script generated by Autoconf, you may include it under 257a5ec427Smrg# the same distribution terms that you use for the rest of that 267a5ec427Smrg# program. This Exception is an additional permission under section 7 277a5ec427Smrg# of the GNU General Public License, version 3 ("GPLv3"). 28c06b6b69Smrg 299f4658d1Smrg 307a5ec427Smrg# Please send patches to <config-patches@gnu.org>. 31c06b6b69Smrg# 32c06b6b69Smrg# Configuration subroutine to validate and canonicalize a configuration type. 33c06b6b69Smrg# Supply the specified configuration type as an argument. 34c06b6b69Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 35c06b6b69Smrg# Otherwise, we print the canonical config type on stdout and succeed. 36c06b6b69Smrg 377d17d341Smrg# You can get the latest version of this script from: 3844256261Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 397d17d341Smrg 40c06b6b69Smrg# This file is supposed to be the same for all GNU packages 41c06b6b69Smrg# and recognize all the CPU types, system types and aliases 42c06b6b69Smrg# that are meaningful with *any* GNU software. 43c06b6b69Smrg# Each package is responsible for reporting which valid configurations 44c06b6b69Smrg# it does not support. The user should be able to distinguish 45c06b6b69Smrg# a failure to support a valid configuration from a meaningless 46c06b6b69Smrg# configuration. 47c06b6b69Smrg 48c06b6b69Smrg# The goal of this file is to map all the various variations of a given 49c06b6b69Smrg# machine specification into a single specification in the form: 50c06b6b69Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51c06b6b69Smrg# or in some cases, the newer four-part form: 52c06b6b69Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53c06b6b69Smrg# It is wrong to echo any other type of specification. 54c06b6b69Smrg 5544256261Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 5644256261Smrg# about features and limitations of the classic Bourne shell that were 5744256261Smrg# superseded or lifted in POSIX. However, this script identifies a wide 5844256261Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 5944256261Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 6044256261Smrg# have a pre-POSIX /bin/sh. 6144256261Smrg 62c06b6b69Smrgme=`echo "$0" | sed -e 's,.*/,,'` 63c06b6b69Smrg 64c06b6b69Smrgusage="\ 6544256261SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66c06b6b69Smrg 67c06b6b69SmrgCanonicalize a configuration name. 68c06b6b69Smrg 6944256261SmrgOptions: 70c06b6b69Smrg -h, --help print this help, then exit 71c06b6b69Smrg -t, --time-stamp print date of last modification, then exit 72c06b6b69Smrg -v, --version print version number, then exit 73c06b6b69Smrg 74c06b6b69SmrgReport bugs and patches to <config-patches@gnu.org>." 75c06b6b69Smrg 76c06b6b69Smrgversion="\ 77c06b6b69SmrgGNU config.sub ($timestamp) 78c06b6b69Smrg 7944256261SmrgCopyright 1992-2023 Free Software Foundation, Inc. 80c06b6b69Smrg 81c06b6b69SmrgThis is free software; see the source for copying conditions. There is NO 82c06b6b69Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83c06b6b69Smrg 84c06b6b69Smrghelp=" 85c06b6b69SmrgTry \`$me --help' for more information." 86c06b6b69Smrg 87c06b6b69Smrg# Parse command line 88c06b6b69Smrgwhile test $# -gt 0 ; do 89c06b6b69Smrg case $1 in 90c06b6b69Smrg --time-stamp | --time* | -t ) 919f4658d1Smrg echo "$timestamp" ; exit ;; 92c06b6b69Smrg --version | -v ) 939f4658d1Smrg echo "$version" ; exit ;; 94c06b6b69Smrg --help | --h* | -h ) 959f4658d1Smrg echo "$usage"; exit ;; 96c06b6b69Smrg -- ) # Stop option processing 97c06b6b69Smrg shift; break ;; 98c06b6b69Smrg - ) # Use stdin as input. 99c06b6b69Smrg break ;; 100c06b6b69Smrg -* ) 10144256261Smrg echo "$me: invalid option $1$help" >&2 102c06b6b69Smrg exit 1 ;; 103c06b6b69Smrg 104c06b6b69Smrg *local*) 105c06b6b69Smrg # First pass through any local machine types. 10644256261Smrg echo "$1" 1079f4658d1Smrg exit ;; 108c06b6b69Smrg 109c06b6b69Smrg * ) 110c06b6b69Smrg break ;; 111c06b6b69Smrg esac 112c06b6b69Smrgdone 113c06b6b69Smrg 114c06b6b69Smrgcase $# in 115c06b6b69Smrg 0) echo "$me: missing argument$help" >&2 116c06b6b69Smrg exit 1;; 117c06b6b69Smrg 1) ;; 118c06b6b69Smrg *) echo "$me: too many arguments$help" >&2 119c06b6b69Smrg exit 1;; 120c06b6b69Smrgesac 121c06b6b69Smrg 12244256261Smrg# Split fields of configuration type 12344256261Smrg# shellcheck disable=SC2162 12444256261Smrgsaved_IFS=$IFS 12544256261SmrgIFS="-" read field1 field2 field3 field4 <<EOF 12644256261Smrg$1 12744256261SmrgEOF 12844256261SmrgIFS=$saved_IFS 129c06b6b69Smrg 13044256261Smrg# Separate into logical components for further validation 13144256261Smrgcase $1 in 13244256261Smrg *-*-*-*-*) 13344256261Smrg echo Invalid configuration \`"$1"\': more than four components >&2 13444256261Smrg exit 1 135c06b6b69Smrg ;; 13644256261Smrg *-*-*-*) 13744256261Smrg basic_machine=$field1-$field2 13844256261Smrg basic_os=$field3-$field4 139c06b6b69Smrg ;; 14044256261Smrg *-*-*) 14144256261Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 14244256261Smrg # parts 14344256261Smrg maybe_os=$field2-$field3 14444256261Smrg case $maybe_os in 14544256261Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 14644256261Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 14744256261Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 14844256261Smrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 14944256261Smrg basic_machine=$field1 15044256261Smrg basic_os=$maybe_os 15144256261Smrg ;; 15244256261Smrg android-linux) 15344256261Smrg basic_machine=$field1-unknown 15444256261Smrg basic_os=linux-android 15544256261Smrg ;; 15644256261Smrg *) 15744256261Smrg basic_machine=$field1-$field2 15844256261Smrg basic_os=$field3 15944256261Smrg ;; 16044256261Smrg esac 161c06b6b69Smrg ;; 16244256261Smrg *-*) 16344256261Smrg # A lone config we happen to match not fitting any pattern 16444256261Smrg case $field1-$field2 in 16544256261Smrg decstation-3100) 16644256261Smrg basic_machine=mips-dec 16744256261Smrg basic_os= 16844256261Smrg ;; 16944256261Smrg *-*) 17044256261Smrg # Second component is usually, but not always the OS 17144256261Smrg case $field2 in 17244256261Smrg # Prevent following clause from handling this valid os 17344256261Smrg sun*os*) 17444256261Smrg basic_machine=$field1 17544256261Smrg basic_os=$field2 17644256261Smrg ;; 17744256261Smrg zephyr*) 17844256261Smrg basic_machine=$field1-unknown 17944256261Smrg basic_os=$field2 18044256261Smrg ;; 18144256261Smrg # Manufacturers 18244256261Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 18344256261Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 18444256261Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 18544256261Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 18644256261Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 18744256261Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 18844256261Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 18944256261Smrg | microblaze* | sim | cisco \ 19044256261Smrg | oki | wec | wrs | winbond) 19144256261Smrg basic_machine=$field1-$field2 19244256261Smrg basic_os= 19344256261Smrg ;; 19444256261Smrg *) 19544256261Smrg basic_machine=$field1 19644256261Smrg basic_os=$field2 19744256261Smrg ;; 19844256261Smrg esac 19944256261Smrg ;; 20044256261Smrg esac 201c06b6b69Smrg ;; 20244256261Smrg *) 20344256261Smrg # Convert single-component short-hands not valid as part of 20444256261Smrg # multi-component configurations. 20544256261Smrg case $field1 in 20644256261Smrg 386bsd) 20744256261Smrg basic_machine=i386-pc 20844256261Smrg basic_os=bsd 20944256261Smrg ;; 21044256261Smrg a29khif) 21144256261Smrg basic_machine=a29k-amd 21244256261Smrg basic_os=udi 21344256261Smrg ;; 21444256261Smrg adobe68k) 21544256261Smrg basic_machine=m68010-adobe 21644256261Smrg basic_os=scout 21744256261Smrg ;; 21844256261Smrg alliant) 21944256261Smrg basic_machine=fx80-alliant 22044256261Smrg basic_os= 22144256261Smrg ;; 22244256261Smrg altos | altos3068) 22344256261Smrg basic_machine=m68k-altos 22444256261Smrg basic_os= 22544256261Smrg ;; 22644256261Smrg am29k) 22744256261Smrg basic_machine=a29k-none 22844256261Smrg basic_os=bsd 22944256261Smrg ;; 23044256261Smrg amdahl) 23144256261Smrg basic_machine=580-amdahl 23244256261Smrg basic_os=sysv 23344256261Smrg ;; 23444256261Smrg amiga) 23544256261Smrg basic_machine=m68k-unknown 23644256261Smrg basic_os= 23744256261Smrg ;; 23844256261Smrg amigaos | amigados) 23944256261Smrg basic_machine=m68k-unknown 24044256261Smrg basic_os=amigaos 24144256261Smrg ;; 24244256261Smrg amigaunix | amix) 24344256261Smrg basic_machine=m68k-unknown 24444256261Smrg basic_os=sysv4 24544256261Smrg ;; 24644256261Smrg apollo68) 24744256261Smrg basic_machine=m68k-apollo 24844256261Smrg basic_os=sysv 24944256261Smrg ;; 25044256261Smrg apollo68bsd) 25144256261Smrg basic_machine=m68k-apollo 25244256261Smrg basic_os=bsd 25344256261Smrg ;; 25444256261Smrg aros) 25544256261Smrg basic_machine=i386-pc 25644256261Smrg basic_os=aros 25744256261Smrg ;; 25844256261Smrg aux) 25944256261Smrg basic_machine=m68k-apple 26044256261Smrg basic_os=aux 26144256261Smrg ;; 26244256261Smrg balance) 26344256261Smrg basic_machine=ns32k-sequent 26444256261Smrg basic_os=dynix 26544256261Smrg ;; 26644256261Smrg blackfin) 26744256261Smrg basic_machine=bfin-unknown 26844256261Smrg basic_os=linux 26944256261Smrg ;; 27044256261Smrg cegcc) 27144256261Smrg basic_machine=arm-unknown 27244256261Smrg basic_os=cegcc 27344256261Smrg ;; 27444256261Smrg convex-c1) 27544256261Smrg basic_machine=c1-convex 27644256261Smrg basic_os=bsd 27744256261Smrg ;; 27844256261Smrg convex-c2) 27944256261Smrg basic_machine=c2-convex 28044256261Smrg basic_os=bsd 28144256261Smrg ;; 28244256261Smrg convex-c32) 28344256261Smrg basic_machine=c32-convex 28444256261Smrg basic_os=bsd 28544256261Smrg ;; 28644256261Smrg convex-c34) 28744256261Smrg basic_machine=c34-convex 28844256261Smrg basic_os=bsd 28944256261Smrg ;; 29044256261Smrg convex-c38) 29144256261Smrg basic_machine=c38-convex 29244256261Smrg basic_os=bsd 29344256261Smrg ;; 29444256261Smrg cray) 29544256261Smrg basic_machine=j90-cray 29644256261Smrg basic_os=unicos 29744256261Smrg ;; 29844256261Smrg crds | unos) 29944256261Smrg basic_machine=m68k-crds 30044256261Smrg basic_os= 30144256261Smrg ;; 30244256261Smrg da30) 30344256261Smrg basic_machine=m68k-da30 30444256261Smrg basic_os= 30544256261Smrg ;; 30644256261Smrg decstation | pmax | pmin | dec3100 | decstatn) 30744256261Smrg basic_machine=mips-dec 30844256261Smrg basic_os= 30944256261Smrg ;; 31044256261Smrg delta88) 31144256261Smrg basic_machine=m88k-motorola 31244256261Smrg basic_os=sysv3 31344256261Smrg ;; 31444256261Smrg dicos) 31544256261Smrg basic_machine=i686-pc 31644256261Smrg basic_os=dicos 31744256261Smrg ;; 31844256261Smrg djgpp) 31944256261Smrg basic_machine=i586-pc 32044256261Smrg basic_os=msdosdjgpp 32144256261Smrg ;; 32244256261Smrg ebmon29k) 32344256261Smrg basic_machine=a29k-amd 32444256261Smrg basic_os=ebmon 32544256261Smrg ;; 32644256261Smrg es1800 | OSE68k | ose68k | ose | OSE) 32744256261Smrg basic_machine=m68k-ericsson 32844256261Smrg basic_os=ose 32944256261Smrg ;; 33044256261Smrg gmicro) 33144256261Smrg basic_machine=tron-gmicro 33244256261Smrg basic_os=sysv 33344256261Smrg ;; 33444256261Smrg go32) 33544256261Smrg basic_machine=i386-pc 33644256261Smrg basic_os=go32 33744256261Smrg ;; 33844256261Smrg h8300hms) 33944256261Smrg basic_machine=h8300-hitachi 34044256261Smrg basic_os=hms 34144256261Smrg ;; 34244256261Smrg h8300xray) 34344256261Smrg basic_machine=h8300-hitachi 34444256261Smrg basic_os=xray 34544256261Smrg ;; 34644256261Smrg h8500hms) 34744256261Smrg basic_machine=h8500-hitachi 34844256261Smrg basic_os=hms 34944256261Smrg ;; 35044256261Smrg harris) 35144256261Smrg basic_machine=m88k-harris 35244256261Smrg basic_os=sysv3 35344256261Smrg ;; 35444256261Smrg hp300 | hp300hpux) 35544256261Smrg basic_machine=m68k-hp 35644256261Smrg basic_os=hpux 35744256261Smrg ;; 35844256261Smrg hp300bsd) 35944256261Smrg basic_machine=m68k-hp 36044256261Smrg basic_os=bsd 36144256261Smrg ;; 36244256261Smrg hppaosf) 36344256261Smrg basic_machine=hppa1.1-hp 36444256261Smrg basic_os=osf 36544256261Smrg ;; 36644256261Smrg hppro) 36744256261Smrg basic_machine=hppa1.1-hp 36844256261Smrg basic_os=proelf 36944256261Smrg ;; 37044256261Smrg i386mach) 37144256261Smrg basic_machine=i386-mach 37244256261Smrg basic_os=mach 37344256261Smrg ;; 37444256261Smrg isi68 | isi) 37544256261Smrg basic_machine=m68k-isi 37644256261Smrg basic_os=sysv 37744256261Smrg ;; 37844256261Smrg m68knommu) 37944256261Smrg basic_machine=m68k-unknown 38044256261Smrg basic_os=linux 38144256261Smrg ;; 38244256261Smrg magnum | m3230) 38344256261Smrg basic_machine=mips-mips 38444256261Smrg basic_os=sysv 38544256261Smrg ;; 38644256261Smrg merlin) 38744256261Smrg basic_machine=ns32k-utek 38844256261Smrg basic_os=sysv 38944256261Smrg ;; 39044256261Smrg mingw64) 39144256261Smrg basic_machine=x86_64-pc 39244256261Smrg basic_os=mingw64 39344256261Smrg ;; 39444256261Smrg mingw32) 39544256261Smrg basic_machine=i686-pc 39644256261Smrg basic_os=mingw32 39744256261Smrg ;; 39844256261Smrg mingw32ce) 39944256261Smrg basic_machine=arm-unknown 40044256261Smrg basic_os=mingw32ce 40144256261Smrg ;; 40244256261Smrg monitor) 40344256261Smrg basic_machine=m68k-rom68k 40444256261Smrg basic_os=coff 40544256261Smrg ;; 40644256261Smrg morphos) 40744256261Smrg basic_machine=powerpc-unknown 40844256261Smrg basic_os=morphos 40944256261Smrg ;; 41044256261Smrg moxiebox) 41144256261Smrg basic_machine=moxie-unknown 41244256261Smrg basic_os=moxiebox 41344256261Smrg ;; 41444256261Smrg msdos) 41544256261Smrg basic_machine=i386-pc 41644256261Smrg basic_os=msdos 41744256261Smrg ;; 41844256261Smrg msys) 41944256261Smrg basic_machine=i686-pc 42044256261Smrg basic_os=msys 42144256261Smrg ;; 42244256261Smrg mvs) 42344256261Smrg basic_machine=i370-ibm 42444256261Smrg basic_os=mvs 42544256261Smrg ;; 42644256261Smrg nacl) 42744256261Smrg basic_machine=le32-unknown 42844256261Smrg basic_os=nacl 42944256261Smrg ;; 43044256261Smrg ncr3000) 43144256261Smrg basic_machine=i486-ncr 43244256261Smrg basic_os=sysv4 43344256261Smrg ;; 43444256261Smrg netbsd386) 43544256261Smrg basic_machine=i386-pc 43644256261Smrg basic_os=netbsd 43744256261Smrg ;; 43844256261Smrg netwinder) 43944256261Smrg basic_machine=armv4l-rebel 44044256261Smrg basic_os=linux 44144256261Smrg ;; 44244256261Smrg news | news700 | news800 | news900) 44344256261Smrg basic_machine=m68k-sony 44444256261Smrg basic_os=newsos 44544256261Smrg ;; 44644256261Smrg news1000) 44744256261Smrg basic_machine=m68030-sony 44844256261Smrg basic_os=newsos 44944256261Smrg ;; 45044256261Smrg necv70) 45144256261Smrg basic_machine=v70-nec 45244256261Smrg basic_os=sysv 45344256261Smrg ;; 45444256261Smrg nh3000) 45544256261Smrg basic_machine=m68k-harris 45644256261Smrg basic_os=cxux 45744256261Smrg ;; 45844256261Smrg nh[45]000) 45944256261Smrg basic_machine=m88k-harris 46044256261Smrg basic_os=cxux 46144256261Smrg ;; 46244256261Smrg nindy960) 46344256261Smrg basic_machine=i960-intel 46444256261Smrg basic_os=nindy 46544256261Smrg ;; 46644256261Smrg mon960) 46744256261Smrg basic_machine=i960-intel 46844256261Smrg basic_os=mon960 46944256261Smrg ;; 47044256261Smrg nonstopux) 47144256261Smrg basic_machine=mips-compaq 47244256261Smrg basic_os=nonstopux 47344256261Smrg ;; 47444256261Smrg os400) 47544256261Smrg basic_machine=powerpc-ibm 47644256261Smrg basic_os=os400 47744256261Smrg ;; 47844256261Smrg OSE68000 | ose68000) 47944256261Smrg basic_machine=m68000-ericsson 48044256261Smrg basic_os=ose 48144256261Smrg ;; 48244256261Smrg os68k) 48344256261Smrg basic_machine=m68k-none 48444256261Smrg basic_os=os68k 48544256261Smrg ;; 48644256261Smrg paragon) 48744256261Smrg basic_machine=i860-intel 48844256261Smrg basic_os=osf 48944256261Smrg ;; 49044256261Smrg parisc) 49144256261Smrg basic_machine=hppa-unknown 49244256261Smrg basic_os=linux 49344256261Smrg ;; 49444256261Smrg psp) 49544256261Smrg basic_machine=mipsallegrexel-sony 49644256261Smrg basic_os=psp 49744256261Smrg ;; 49844256261Smrg pw32) 49944256261Smrg basic_machine=i586-unknown 50044256261Smrg basic_os=pw32 50144256261Smrg ;; 50244256261Smrg rdos | rdos64) 50344256261Smrg basic_machine=x86_64-pc 50444256261Smrg basic_os=rdos 50544256261Smrg ;; 50644256261Smrg rdos32) 50744256261Smrg basic_machine=i386-pc 50844256261Smrg basic_os=rdos 50944256261Smrg ;; 51044256261Smrg rom68k) 51144256261Smrg basic_machine=m68k-rom68k 51244256261Smrg basic_os=coff 51344256261Smrg ;; 51444256261Smrg sa29200) 51544256261Smrg basic_machine=a29k-amd 51644256261Smrg basic_os=udi 51744256261Smrg ;; 51844256261Smrg sei) 51944256261Smrg basic_machine=mips-sei 52044256261Smrg basic_os=seiux 52144256261Smrg ;; 52244256261Smrg sequent) 52344256261Smrg basic_machine=i386-sequent 52444256261Smrg basic_os= 52544256261Smrg ;; 52644256261Smrg sps7) 52744256261Smrg basic_machine=m68k-bull 52844256261Smrg basic_os=sysv2 52944256261Smrg ;; 53044256261Smrg st2000) 53144256261Smrg basic_machine=m68k-tandem 53244256261Smrg basic_os= 53344256261Smrg ;; 53444256261Smrg stratus) 53544256261Smrg basic_machine=i860-stratus 53644256261Smrg basic_os=sysv4 53744256261Smrg ;; 53844256261Smrg sun2) 53944256261Smrg basic_machine=m68000-sun 54044256261Smrg basic_os= 54144256261Smrg ;; 54244256261Smrg sun2os3) 54344256261Smrg basic_machine=m68000-sun 54444256261Smrg basic_os=sunos3 54544256261Smrg ;; 54644256261Smrg sun2os4) 54744256261Smrg basic_machine=m68000-sun 54844256261Smrg basic_os=sunos4 54944256261Smrg ;; 55044256261Smrg sun3) 55144256261Smrg basic_machine=m68k-sun 55244256261Smrg basic_os= 55344256261Smrg ;; 55444256261Smrg sun3os3) 55544256261Smrg basic_machine=m68k-sun 55644256261Smrg basic_os=sunos3 55744256261Smrg ;; 55844256261Smrg sun3os4) 55944256261Smrg basic_machine=m68k-sun 56044256261Smrg basic_os=sunos4 56144256261Smrg ;; 56244256261Smrg sun4) 56344256261Smrg basic_machine=sparc-sun 56444256261Smrg basic_os= 56544256261Smrg ;; 56644256261Smrg sun4os3) 56744256261Smrg basic_machine=sparc-sun 56844256261Smrg basic_os=sunos3 56944256261Smrg ;; 57044256261Smrg sun4os4) 57144256261Smrg basic_machine=sparc-sun 57244256261Smrg basic_os=sunos4 57344256261Smrg ;; 57444256261Smrg sun4sol2) 57544256261Smrg basic_machine=sparc-sun 57644256261Smrg basic_os=solaris2 57744256261Smrg ;; 57844256261Smrg sun386 | sun386i | roadrunner) 57944256261Smrg basic_machine=i386-sun 58044256261Smrg basic_os= 58144256261Smrg ;; 58244256261Smrg sv1) 58344256261Smrg basic_machine=sv1-cray 58444256261Smrg basic_os=unicos 58544256261Smrg ;; 58644256261Smrg symmetry) 58744256261Smrg basic_machine=i386-sequent 58844256261Smrg basic_os=dynix 58944256261Smrg ;; 59044256261Smrg t3e) 59144256261Smrg basic_machine=alphaev5-cray 59244256261Smrg basic_os=unicos 59344256261Smrg ;; 59444256261Smrg t90) 59544256261Smrg basic_machine=t90-cray 59644256261Smrg basic_os=unicos 59744256261Smrg ;; 59844256261Smrg toad1) 59944256261Smrg basic_machine=pdp10-xkl 60044256261Smrg basic_os=tops20 60144256261Smrg ;; 60244256261Smrg tpf) 60344256261Smrg basic_machine=s390x-ibm 60444256261Smrg basic_os=tpf 60544256261Smrg ;; 60644256261Smrg udi29k) 60744256261Smrg basic_machine=a29k-amd 60844256261Smrg basic_os=udi 60944256261Smrg ;; 61044256261Smrg ultra3) 61144256261Smrg basic_machine=a29k-nyu 61244256261Smrg basic_os=sym1 61344256261Smrg ;; 61444256261Smrg v810 | necv810) 61544256261Smrg basic_machine=v810-nec 61644256261Smrg basic_os=none 61744256261Smrg ;; 61844256261Smrg vaxv) 61944256261Smrg basic_machine=vax-dec 62044256261Smrg basic_os=sysv 62144256261Smrg ;; 62244256261Smrg vms) 62344256261Smrg basic_machine=vax-dec 62444256261Smrg basic_os=vms 62544256261Smrg ;; 62644256261Smrg vsta) 62744256261Smrg basic_machine=i386-pc 62844256261Smrg basic_os=vsta 62944256261Smrg ;; 63044256261Smrg vxworks960) 63144256261Smrg basic_machine=i960-wrs 63244256261Smrg basic_os=vxworks 63344256261Smrg ;; 63444256261Smrg vxworks68) 63544256261Smrg basic_machine=m68k-wrs 63644256261Smrg basic_os=vxworks 63744256261Smrg ;; 63844256261Smrg vxworks29k) 63944256261Smrg basic_machine=a29k-wrs 64044256261Smrg basic_os=vxworks 64144256261Smrg ;; 64244256261Smrg xbox) 64344256261Smrg basic_machine=i686-pc 64444256261Smrg basic_os=mingw32 64544256261Smrg ;; 64644256261Smrg ymp) 64744256261Smrg basic_machine=ymp-cray 64844256261Smrg basic_os=unicos 64944256261Smrg ;; 65044256261Smrg *) 65144256261Smrg basic_machine=$1 65244256261Smrg basic_os= 65344256261Smrg ;; 65444256261Smrg esac 655c06b6b69Smrg ;; 656c06b6b69Smrgesac 657c06b6b69Smrg 65844256261Smrg# Decode 1-component or ad-hoc basic machines 659c06b6b69Smrgcase $basic_machine in 66044256261Smrg # Here we handle the default manufacturer of certain CPU types. It is in 66144256261Smrg # some cases the only manufacturer, in others, it is the most popular. 66244256261Smrg w89k) 66344256261Smrg cpu=hppa1.1 66444256261Smrg vendor=winbond 665c06b6b69Smrg ;; 66644256261Smrg op50n) 66744256261Smrg cpu=hppa1.1 66844256261Smrg vendor=oki 669c06b6b69Smrg ;; 67044256261Smrg op60c) 67144256261Smrg cpu=hppa1.1 67244256261Smrg vendor=oki 6739f4658d1Smrg ;; 67444256261Smrg ibm*) 67544256261Smrg cpu=i370 67644256261Smrg vendor=ibm 677a1d73b4bSmrg ;; 67844256261Smrg orion105) 67944256261Smrg cpu=clipper 68044256261Smrg vendor=highlevel 6817a5ec427Smrg ;; 68244256261Smrg mac | mpw | mac-mpw) 68344256261Smrg cpu=m68k 68444256261Smrg vendor=apple 685a1d73b4bSmrg ;; 68644256261Smrg pmac | pmac-mpw) 68744256261Smrg cpu=powerpc 68844256261Smrg vendor=apple 689a1d73b4bSmrg ;; 690a1d73b4bSmrg 691c06b6b69Smrg # Recognize the various machine names and aliases which stand 692c06b6b69Smrg # for a CPU type and a company and sometimes even an OS. 693c06b6b69Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 69444256261Smrg cpu=m68000 69544256261Smrg vendor=att 696c06b6b69Smrg ;; 697c06b6b69Smrg 3b*) 69844256261Smrg cpu=we32k 69944256261Smrg vendor=att 7009f4658d1Smrg ;; 7017d17d341Smrg bluegene*) 70244256261Smrg cpu=powerpc 70344256261Smrg vendor=ibm 70444256261Smrg basic_os=cnk 705c06b6b69Smrg ;; 706c06b6b69Smrg decsystem10* | dec10*) 70744256261Smrg cpu=pdp10 70844256261Smrg vendor=dec 70944256261Smrg basic_os=tops10 710c06b6b69Smrg ;; 711c06b6b69Smrg decsystem20* | dec20*) 71244256261Smrg cpu=pdp10 71344256261Smrg vendor=dec 71444256261Smrg basic_os=tops20 715c06b6b69Smrg ;; 716c06b6b69Smrg delta | 3300 | motorola-3300 | motorola-delta \ 717c06b6b69Smrg | 3300-motorola | delta-motorola) 71844256261Smrg cpu=m68k 71944256261Smrg vendor=motorola 7209f4658d1Smrg ;; 72144256261Smrg dpx2*) 72244256261Smrg cpu=m68k 72344256261Smrg vendor=bull 72444256261Smrg basic_os=sysv3 725c06b6b69Smrg ;; 726c06b6b69Smrg encore | umax | mmax) 72744256261Smrg cpu=ns32k 72844256261Smrg vendor=encore 729c06b6b69Smrg ;; 73044256261Smrg elxsi) 73144256261Smrg cpu=elxsi 73244256261Smrg vendor=elxsi 73344256261Smrg basic_os=${basic_os:-bsd} 734c06b6b69Smrg ;; 735c06b6b69Smrg fx2800) 73644256261Smrg cpu=i860 73744256261Smrg vendor=alliant 738c06b6b69Smrg ;; 739c06b6b69Smrg genix) 74044256261Smrg cpu=ns32k 74144256261Smrg vendor=ns 742c06b6b69Smrg ;; 743c06b6b69Smrg h3050r* | hiux*) 74444256261Smrg cpu=hppa1.1 74544256261Smrg vendor=hitachi 74644256261Smrg basic_os=hiuxwe2 747c06b6b69Smrg ;; 748c06b6b69Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 74944256261Smrg cpu=hppa1.0 75044256261Smrg vendor=hp 751c06b6b69Smrg ;; 752c06b6b69Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 75344256261Smrg cpu=m68000 75444256261Smrg vendor=hp 755c06b6b69Smrg ;; 756c06b6b69Smrg hp9k3[2-9][0-9]) 75744256261Smrg cpu=m68k 75844256261Smrg vendor=hp 759c06b6b69Smrg ;; 760c06b6b69Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 76144256261Smrg cpu=hppa1.0 76244256261Smrg vendor=hp 763c06b6b69Smrg ;; 764c06b6b69Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 76544256261Smrg cpu=hppa1.1 76644256261Smrg vendor=hp 767c06b6b69Smrg ;; 768c06b6b69Smrg hp9k78[0-9] | hp78[0-9]) 769c06b6b69Smrg # FIXME: really hppa2.0-hp 77044256261Smrg cpu=hppa1.1 77144256261Smrg vendor=hp 772c06b6b69Smrg ;; 773c06b6b69Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 774c06b6b69Smrg # FIXME: really hppa2.0-hp 77544256261Smrg cpu=hppa1.1 77644256261Smrg vendor=hp 777c06b6b69Smrg ;; 778c06b6b69Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 77944256261Smrg cpu=hppa1.1 78044256261Smrg vendor=hp 781c06b6b69Smrg ;; 782c06b6b69Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 78344256261Smrg cpu=hppa1.0 78444256261Smrg vendor=hp 785c06b6b69Smrg ;; 786c06b6b69Smrg i*86v32) 78744256261Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 78844256261Smrg vendor=pc 78944256261Smrg basic_os=sysv32 790c06b6b69Smrg ;; 791c06b6b69Smrg i*86v4*) 79244256261Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79344256261Smrg vendor=pc 79444256261Smrg basic_os=sysv4 795c06b6b69Smrg ;; 796c06b6b69Smrg i*86v) 79744256261Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79844256261Smrg vendor=pc 79944256261Smrg basic_os=sysv 800c06b6b69Smrg ;; 801c06b6b69Smrg i*86sol2) 80244256261Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 80344256261Smrg vendor=pc 80444256261Smrg basic_os=solaris2 805c06b6b69Smrg ;; 80644256261Smrg j90 | j90-cray) 80744256261Smrg cpu=j90 80844256261Smrg vendor=cray 80944256261Smrg basic_os=${basic_os:-unicos} 810c06b6b69Smrg ;; 811c06b6b69Smrg iris | iris4d) 81244256261Smrg cpu=mips 81344256261Smrg vendor=sgi 81444256261Smrg case $basic_os in 81544256261Smrg irix*) 816c06b6b69Smrg ;; 817c06b6b69Smrg *) 81844256261Smrg basic_os=irix4 819c06b6b69Smrg ;; 820c06b6b69Smrg esac 821c06b6b69Smrg ;; 822c06b6b69Smrg miniframe) 82344256261Smrg cpu=m68000 82444256261Smrg vendor=convergent 825c06b6b69Smrg ;; 82644256261Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 82744256261Smrg cpu=m68k 82844256261Smrg vendor=atari 82944256261Smrg basic_os=mint 830c06b6b69Smrg ;; 831c06b6b69Smrg news-3600 | risc-news) 83244256261Smrg cpu=mips 83344256261Smrg vendor=sony 83444256261Smrg basic_os=newsos 83544256261Smrg ;; 83644256261Smrg next | m*-next) 83744256261Smrg cpu=m68k 83844256261Smrg vendor=next 83944256261Smrg case $basic_os in 84044256261Smrg openstep*) 84144256261Smrg ;; 84244256261Smrg nextstep*) 843c06b6b69Smrg ;; 84444256261Smrg ns2*) 84544256261Smrg basic_os=nextstep2 846c06b6b69Smrg ;; 847c06b6b69Smrg *) 84844256261Smrg basic_os=nextstep3 849c06b6b69Smrg ;; 850c06b6b69Smrg esac 851c06b6b69Smrg ;; 852c06b6b69Smrg np1) 85344256261Smrg cpu=np1 85444256261Smrg vendor=gould 855c06b6b69Smrg ;; 856c06b6b69Smrg op50n-* | op60c-*) 85744256261Smrg cpu=hppa1.1 85844256261Smrg vendor=oki 85944256261Smrg basic_os=proelf 860c06b6b69Smrg ;; 861c06b6b69Smrg pa-hitachi) 86244256261Smrg cpu=hppa1.1 86344256261Smrg vendor=hitachi 86444256261Smrg basic_os=hiuxwe2 8659f4658d1Smrg ;; 866c06b6b69Smrg pbd) 86744256261Smrg cpu=sparc 86844256261Smrg vendor=tti 869c06b6b69Smrg ;; 870c06b6b69Smrg pbb) 87144256261Smrg cpu=m68k 87244256261Smrg vendor=tti 873c06b6b69Smrg ;; 87444256261Smrg pc532) 87544256261Smrg cpu=ns32k 87644256261Smrg vendor=pc532 877c06b6b69Smrg ;; 878c06b6b69Smrg pn) 87944256261Smrg cpu=pn 88044256261Smrg vendor=gould 881c06b6b69Smrg ;; 88244256261Smrg power) 88344256261Smrg cpu=power 88444256261Smrg vendor=ibm 885c06b6b69Smrg ;; 886c06b6b69Smrg ps2) 88744256261Smrg cpu=i386 88844256261Smrg vendor=ibm 889c06b6b69Smrg ;; 890c06b6b69Smrg rm[46]00) 89144256261Smrg cpu=mips 89244256261Smrg vendor=siemens 893c06b6b69Smrg ;; 894c06b6b69Smrg rtpc | rtpc-*) 89544256261Smrg cpu=romp 89644256261Smrg vendor=ibm 8979f4658d1Smrg ;; 89844256261Smrg sde) 89944256261Smrg cpu=mipsisa32 90044256261Smrg vendor=sde 90144256261Smrg basic_os=${basic_os:-elf} 902c06b6b69Smrg ;; 90344256261Smrg simso-wrs) 90444256261Smrg cpu=sparclite 90544256261Smrg vendor=wrs 90644256261Smrg basic_os=vxworks 907c06b6b69Smrg ;; 90844256261Smrg tower | tower-32) 90944256261Smrg cpu=m68k 91044256261Smrg vendor=ncr 911c06b6b69Smrg ;; 91244256261Smrg vpp*|vx|vx-*) 91344256261Smrg cpu=f301 91444256261Smrg vendor=fujitsu 9159f4658d1Smrg ;; 91644256261Smrg w65) 91744256261Smrg cpu=w65 91844256261Smrg vendor=wdc 919c06b6b69Smrg ;; 92044256261Smrg w89k-*) 92144256261Smrg cpu=hppa1.1 92244256261Smrg vendor=winbond 92344256261Smrg basic_os=proelf 924c06b6b69Smrg ;; 92544256261Smrg none) 92644256261Smrg cpu=none 92744256261Smrg vendor=none 928c06b6b69Smrg ;; 92944256261Smrg leon|leon[3-9]) 93044256261Smrg cpu=sparc 93144256261Smrg vendor=$basic_machine 9329f4658d1Smrg ;; 93344256261Smrg leon-*|leon[3-9]-*) 93444256261Smrg cpu=sparc 93544256261Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 936c06b6b69Smrg ;; 93744256261Smrg 93844256261Smrg *-*) 93944256261Smrg # shellcheck disable=SC2162 94044256261Smrg saved_IFS=$IFS 94144256261Smrg IFS="-" read cpu vendor <<EOF 94244256261Smrg$basic_machine 94344256261SmrgEOF 94444256261Smrg IFS=$saved_IFS 945c06b6b69Smrg ;; 94644256261Smrg # We use `pc' rather than `unknown' 94744256261Smrg # because (1) that's what they normally are, and 94844256261Smrg # (2) the word "unknown" tends to confuse beginning users. 94944256261Smrg i*86 | x86_64) 95044256261Smrg cpu=$basic_machine 95144256261Smrg vendor=pc 952c06b6b69Smrg ;; 95344256261Smrg # These rules are duplicated from below for sake of the special case above; 95444256261Smrg # i.e. things that normalized to x86 arches should also default to "pc" 95544256261Smrg pc98) 95644256261Smrg cpu=i386 95744256261Smrg vendor=pc 958c06b6b69Smrg ;; 95944256261Smrg x64 | amd64) 96044256261Smrg cpu=x86_64 96144256261Smrg vendor=pc 962c06b6b69Smrg ;; 96344256261Smrg # Recognize the basic CPU types without company name. 96444256261Smrg *) 96544256261Smrg cpu=$basic_machine 96644256261Smrg vendor=unknown 967c06b6b69Smrg ;; 96844256261Smrgesac 96944256261Smrg 97044256261Smrgunset -v basic_machine 97144256261Smrg 97244256261Smrg# Decode basic machines in the full and proper CPU-Company form. 97344256261Smrgcase $cpu-$vendor in 97444256261Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 97544256261Smrg # some cases the only manufacturer, in others, it is the most popular. 97644256261Smrg craynv-unknown) 97744256261Smrg vendor=cray 97844256261Smrg basic_os=${basic_os:-unicosmp} 979a1d73b4bSmrg ;; 98044256261Smrg c90-unknown | c90-cray) 98144256261Smrg vendor=cray 98244256261Smrg basic_os=${Basic_os:-unicos} 983c06b6b69Smrg ;; 98444256261Smrg fx80-unknown) 98544256261Smrg vendor=alliant 986c06b6b69Smrg ;; 98744256261Smrg romp-unknown) 98844256261Smrg vendor=ibm 989c06b6b69Smrg ;; 99044256261Smrg mmix-unknown) 99144256261Smrg vendor=knuth 992c06b6b69Smrg ;; 99344256261Smrg microblaze-unknown | microblazeel-unknown) 99444256261Smrg vendor=xilinx 995c06b6b69Smrg ;; 99644256261Smrg rs6000-unknown) 99744256261Smrg vendor=ibm 998c06b6b69Smrg ;; 99944256261Smrg vax-unknown) 100044256261Smrg vendor=dec 1001c06b6b69Smrg ;; 100244256261Smrg pdp11-unknown) 100344256261Smrg vendor=dec 1004c06b6b69Smrg ;; 100544256261Smrg we32k-unknown) 100644256261Smrg vendor=att 1007c06b6b69Smrg ;; 100844256261Smrg cydra-unknown) 100944256261Smrg vendor=cydrome 1010c06b6b69Smrg ;; 101144256261Smrg i370-ibm*) 101244256261Smrg vendor=ibm 1013c06b6b69Smrg ;; 101444256261Smrg orion-unknown) 101544256261Smrg vendor=highlevel 1016c06b6b69Smrg ;; 101744256261Smrg xps-unknown | xps100-unknown) 101844256261Smrg cpu=xps100 101944256261Smrg vendor=honeywell 1020c06b6b69Smrg ;; 102144256261Smrg 102244256261Smrg # Here we normalize CPU types with a missing or matching vendor 102344256261Smrg armh-unknown | armh-alt) 102444256261Smrg cpu=armv7l 102544256261Smrg vendor=alt 102644256261Smrg basic_os=${basic_os:-linux-gnueabihf} 1027c06b6b69Smrg ;; 102844256261Smrg dpx20-unknown | dpx20-bull) 102944256261Smrg cpu=rs6000 103044256261Smrg vendor=bull 103144256261Smrg basic_os=${basic_os:-bosx} 1032c06b6b69Smrg ;; 103344256261Smrg 103444256261Smrg # Here we normalize CPU types irrespective of the vendor 103544256261Smrg amd64-*) 103644256261Smrg cpu=x86_64 10379f4658d1Smrg ;; 103844256261Smrg blackfin-*) 103944256261Smrg cpu=bfin 104044256261Smrg basic_os=linux 1041c06b6b69Smrg ;; 104244256261Smrg c54x-*) 104344256261Smrg cpu=tic54x 1044c06b6b69Smrg ;; 104544256261Smrg c55x-*) 104644256261Smrg cpu=tic55x 1047c06b6b69Smrg ;; 104844256261Smrg c6x-*) 104944256261Smrg cpu=tic6x 1050c06b6b69Smrg ;; 105144256261Smrg e500v[12]-*) 105244256261Smrg cpu=powerpc 105344256261Smrg basic_os=${basic_os}"spe" 10549f4658d1Smrg ;; 105544256261Smrg mips3*-*) 105644256261Smrg cpu=mips64 1057c06b6b69Smrg ;; 105844256261Smrg ms1-*) 105944256261Smrg cpu=mt 1060c06b6b69Smrg ;; 106144256261Smrg m68knommu-*) 106244256261Smrg cpu=m68k 106344256261Smrg basic_os=linux 1064c06b6b69Smrg ;; 106544256261Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 106644256261Smrg cpu=s12z 1067c06b6b69Smrg ;; 106844256261Smrg openrisc-*) 106944256261Smrg cpu=or32 1070c06b6b69Smrg ;; 107144256261Smrg parisc-*) 107244256261Smrg cpu=hppa 107344256261Smrg basic_os=linux 1074c06b6b69Smrg ;; 107544256261Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 107644256261Smrg cpu=i586 1077c06b6b69Smrg ;; 107844256261Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 107944256261Smrg cpu=i686 1080c06b6b69Smrg ;; 108144256261Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 108244256261Smrg cpu=i686 1083c06b6b69Smrg ;; 108444256261Smrg pentium4-*) 108544256261Smrg cpu=i786 1086c06b6b69Smrg ;; 108744256261Smrg pc98-*) 108844256261Smrg cpu=i386 1089c06b6b69Smrg ;; 109044256261Smrg ppc-* | ppcbe-*) 109144256261Smrg cpu=powerpc 10929f4658d1Smrg ;; 109344256261Smrg ppcle-* | powerpclittle-*) 109444256261Smrg cpu=powerpcle 1095c06b6b69Smrg ;; 109644256261Smrg ppc64-*) 109744256261Smrg cpu=powerpc64 1098a1d73b4bSmrg ;; 109944256261Smrg ppc64le-* | powerpc64little-*) 110044256261Smrg cpu=powerpc64le 1101c06b6b69Smrg ;; 110244256261Smrg sb1-*) 110344256261Smrg cpu=mipsisa64sb1 1104c06b6b69Smrg ;; 110544256261Smrg sb1el-*) 110644256261Smrg cpu=mipsisa64sb1el 1107b20b881bSmrg ;; 110844256261Smrg sh5e[lb]-*) 110944256261Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1110c06b6b69Smrg ;; 111144256261Smrg spur-*) 111244256261Smrg cpu=spur 1113c06b6b69Smrg ;; 111444256261Smrg strongarm-* | thumb-*) 111544256261Smrg cpu=arm 1116c06b6b69Smrg ;; 111744256261Smrg tx39-*) 111844256261Smrg cpu=mipstx39 1119c06b6b69Smrg ;; 112044256261Smrg tx39el-*) 112144256261Smrg cpu=mipstx39el 1122c06b6b69Smrg ;; 112344256261Smrg x64-*) 112444256261Smrg cpu=x86_64 11259f4658d1Smrg ;; 112644256261Smrg xscale-* | xscalee[bl]-*) 112744256261Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1128c06b6b69Smrg ;; 112944256261Smrg arm64-* | aarch64le-*) 113044256261Smrg cpu=aarch64 1131c06b6b69Smrg ;; 113244256261Smrg 113344256261Smrg # Recognize the canonical CPU Types that limit and/or modify the 113444256261Smrg # company names they are paired with. 113544256261Smrg cr16-*) 113644256261Smrg basic_os=${basic_os:-elf} 1137c06b6b69Smrg ;; 113844256261Smrg crisv32-* | etraxfs*-*) 113944256261Smrg cpu=crisv32 114044256261Smrg vendor=axis 1141c06b6b69Smrg ;; 114244256261Smrg cris-* | etrax*-*) 114344256261Smrg cpu=cris 114444256261Smrg vendor=axis 1145c06b6b69Smrg ;; 114644256261Smrg crx-*) 114744256261Smrg basic_os=${basic_os:-elf} 1148c06b6b69Smrg ;; 114944256261Smrg neo-tandem) 115044256261Smrg cpu=neo 115144256261Smrg vendor=tandem 1152c06b6b69Smrg ;; 115344256261Smrg nse-tandem) 115444256261Smrg cpu=nse 115544256261Smrg vendor=tandem 1156c06b6b69Smrg ;; 115744256261Smrg nsr-tandem) 115844256261Smrg cpu=nsr 115944256261Smrg vendor=tandem 1160c06b6b69Smrg ;; 116144256261Smrg nsv-tandem) 116244256261Smrg cpu=nsv 116344256261Smrg vendor=tandem 1164c06b6b69Smrg ;; 116544256261Smrg nsx-tandem) 116644256261Smrg cpu=nsx 116744256261Smrg vendor=tandem 1168c06b6b69Smrg ;; 116944256261Smrg mipsallegrexel-sony) 117044256261Smrg cpu=mipsallegrexel 117144256261Smrg vendor=sony 1172c06b6b69Smrg ;; 117344256261Smrg tile*-*) 117444256261Smrg basic_os=${basic_os:-linux-gnu} 1175c06b6b69Smrg ;; 117644256261Smrg 1177c06b6b69Smrg *) 117844256261Smrg # Recognize the canonical CPU types that are allowed with any 117944256261Smrg # company name. 118044256261Smrg case $cpu in 118144256261Smrg 1750a | 580 \ 118244256261Smrg | a29k \ 118344256261Smrg | aarch64 | aarch64_be \ 118444256261Smrg | abacus \ 118544256261Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 118644256261Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 118744256261Smrg | alphapca5[67] | alpha64pca5[67] \ 118844256261Smrg | am33_2.0 \ 118944256261Smrg | amdgcn \ 119044256261Smrg | arc | arceb | arc32 | arc64 \ 119144256261Smrg | arm | arm[lb]e | arme[lb] | armv* \ 119244256261Smrg | avr | avr32 \ 119344256261Smrg | asmjs \ 119444256261Smrg | ba \ 119544256261Smrg | be32 | be64 \ 119644256261Smrg | bfin | bpf | bs2000 \ 119744256261Smrg | c[123]* | c30 | [cjt]90 | c4x \ 119844256261Smrg | c8051 | clipper | craynv | csky | cydra \ 119944256261Smrg | d10v | d30v | dlx | dsp16xx \ 120044256261Smrg | e2k | elxsi | epiphany \ 120144256261Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 120244256261Smrg | h8300 | h8500 \ 120344256261Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 120444256261Smrg | hexagon \ 120544256261Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 120644256261Smrg | ip2k | iq2000 \ 120744256261Smrg | k1om \ 120844256261Smrg | le32 | le64 \ 120944256261Smrg | lm32 \ 121044256261Smrg | loongarch32 | loongarch64 \ 121144256261Smrg | m32c | m32r | m32rle \ 121244256261Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 121344256261Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 121444256261Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 121544256261Smrg | microblaze | microblazeel \ 121644256261Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 121744256261Smrg | mips16 \ 121844256261Smrg | mips64 | mips64eb | mips64el \ 121944256261Smrg | mips64octeon | mips64octeonel \ 122044256261Smrg | mips64orion | mips64orionel \ 122144256261Smrg | mips64r5900 | mips64r5900el \ 122244256261Smrg | mips64vr | mips64vrel \ 122344256261Smrg | mips64vr4100 | mips64vr4100el \ 122444256261Smrg | mips64vr4300 | mips64vr4300el \ 122544256261Smrg | mips64vr5000 | mips64vr5000el \ 122644256261Smrg | mips64vr5900 | mips64vr5900el \ 122744256261Smrg | mipsisa32 | mipsisa32el \ 122844256261Smrg | mipsisa32r2 | mipsisa32r2el \ 122944256261Smrg | mipsisa32r3 | mipsisa32r3el \ 123044256261Smrg | mipsisa32r5 | mipsisa32r5el \ 123144256261Smrg | mipsisa32r6 | mipsisa32r6el \ 123244256261Smrg | mipsisa64 | mipsisa64el \ 123344256261Smrg | mipsisa64r2 | mipsisa64r2el \ 123444256261Smrg | mipsisa64r3 | mipsisa64r3el \ 123544256261Smrg | mipsisa64r5 | mipsisa64r5el \ 123644256261Smrg | mipsisa64r6 | mipsisa64r6el \ 123744256261Smrg | mipsisa64sb1 | mipsisa64sb1el \ 123844256261Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 123944256261Smrg | mipsr5900 | mipsr5900el \ 124044256261Smrg | mipstx39 | mipstx39el \ 124144256261Smrg | mmix \ 124244256261Smrg | mn10200 | mn10300 \ 124344256261Smrg | moxie \ 124444256261Smrg | mt \ 124544256261Smrg | msp430 \ 124644256261Smrg | nds32 | nds32le | nds32be \ 124744256261Smrg | nfp \ 124844256261Smrg | nios | nios2 | nios2eb | nios2el \ 124944256261Smrg | none | np1 | ns16k | ns32k | nvptx \ 125044256261Smrg | open8 \ 125144256261Smrg | or1k* \ 125244256261Smrg | or32 \ 125344256261Smrg | orion \ 125444256261Smrg | picochip \ 125544256261Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 125644256261Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 125744256261Smrg | pru \ 125844256261Smrg | pyramid \ 125944256261Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 126044256261Smrg | rl78 | romp | rs6000 | rx \ 126144256261Smrg | s390 | s390x \ 126244256261Smrg | score \ 126344256261Smrg | sh | shl \ 126444256261Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 126544256261Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 126644256261Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 126744256261Smrg | sparclite \ 126844256261Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 126944256261Smrg | spu \ 127044256261Smrg | tahoe \ 127144256261Smrg | thumbv7* \ 127244256261Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 127344256261Smrg | tron \ 127444256261Smrg | ubicom32 \ 127544256261Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 127644256261Smrg | vax \ 127744256261Smrg | visium \ 127844256261Smrg | w65 \ 127944256261Smrg | wasm32 | wasm64 \ 128044256261Smrg | we32k \ 128144256261Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 128244256261Smrg | xstormy16 | xtensa* \ 128344256261Smrg | ymp \ 128444256261Smrg | z8k | z80) 128544256261Smrg ;; 128644256261Smrg 128744256261Smrg *) 128844256261Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 128944256261Smrg exit 1 129044256261Smrg ;; 129144256261Smrg esac 1292c06b6b69Smrg ;; 1293c06b6b69Smrgesac 1294c06b6b69Smrg 1295c06b6b69Smrg# Here we canonicalize certain aliases for manufacturers. 129644256261Smrgcase $vendor in 129744256261Smrg digital*) 129844256261Smrg vendor=dec 1299c06b6b69Smrg ;; 130044256261Smrg commodore*) 130144256261Smrg vendor=cbm 1302c06b6b69Smrg ;; 1303c06b6b69Smrg *) 1304c06b6b69Smrg ;; 1305c06b6b69Smrgesac 1306c06b6b69Smrg 1307c06b6b69Smrg# Decode manufacturer-specific aliases for certain operating systems. 1308c06b6b69Smrg 130944256261Smrgif test x$basic_os != x 1310c06b6b69Smrgthen 131144256261Smrg 131244256261Smrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 131344256261Smrg# set os. 131444256261Smrgcase $basic_os in 131544256261Smrg gnu/linux*) 131644256261Smrg kernel=linux 131744256261Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 131844256261Smrg ;; 131944256261Smrg os2-emx) 132044256261Smrg kernel=os2 132144256261Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 132244256261Smrg ;; 132344256261Smrg nto-qnx*) 132444256261Smrg kernel=nto 132544256261Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 132644256261Smrg ;; 132744256261Smrg *-*) 132844256261Smrg # shellcheck disable=SC2162 132944256261Smrg saved_IFS=$IFS 133044256261Smrg IFS="-" read kernel os <<EOF 133144256261Smrg$basic_os 133244256261SmrgEOF 133344256261Smrg IFS=$saved_IFS 133444256261Smrg ;; 133544256261Smrg # Default OS when just kernel was specified 133644256261Smrg nto*) 133744256261Smrg kernel=nto 133844256261Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 133944256261Smrg ;; 134044256261Smrg linux*) 134144256261Smrg kernel=linux 134244256261Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 134344256261Smrg ;; 134444256261Smrg managarm*) 134544256261Smrg kernel=managarm 134644256261Smrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 134744256261Smrg ;; 134844256261Smrg *) 134944256261Smrg kernel= 135044256261Smrg os=$basic_os 135144256261Smrg ;; 135244256261Smrgesac 135344256261Smrg 135444256261Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 135544256261Smrg# etc.) 1356c06b6b69Smrgcase $os in 135744256261Smrg # First match some system type aliases that might get confused 135844256261Smrg # with valid system types. 135944256261Smrg # solaris* is a basic system type, with this one exception. 136044256261Smrg auroraux) 136144256261Smrg os=auroraux 13627d17d341Smrg ;; 136344256261Smrg bluegene*) 136444256261Smrg os=cnk 1365c06b6b69Smrg ;; 136644256261Smrg solaris1 | solaris1.*) 136744256261Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1368c06b6b69Smrg ;; 136944256261Smrg solaris) 137044256261Smrg os=solaris2 1371c06b6b69Smrg ;; 137244256261Smrg unixware*) 137344256261Smrg os=sysv4.2uw 1374c06b6b69Smrg ;; 137544256261Smrg # es1800 is here to avoid being matched by es* (a different OS) 137644256261Smrg es1800*) 137744256261Smrg os=ose 1378c06b6b69Smrg ;; 137944256261Smrg # Some version numbers need modification 138044256261Smrg chorusos*) 138144256261Smrg os=chorusos 1382c06b6b69Smrg ;; 138344256261Smrg isc) 138444256261Smrg os=isc2.2 1385c06b6b69Smrg ;; 138644256261Smrg sco6) 138744256261Smrg os=sco5v6 1388c06b6b69Smrg ;; 138944256261Smrg sco5) 139044256261Smrg os=sco3.2v5 1391c06b6b69Smrg ;; 139244256261Smrg sco4) 139344256261Smrg os=sco3.2v4 1394c06b6b69Smrg ;; 139544256261Smrg sco3.2.[4-9]*) 139644256261Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 13979f4658d1Smrg ;; 139844256261Smrg sco*v* | scout) 139944256261Smrg # Don't match below 1400c06b6b69Smrg ;; 140144256261Smrg sco*) 140244256261Smrg os=sco3.2v2 1403c06b6b69Smrg ;; 140444256261Smrg psos*) 140544256261Smrg os=psos 1406c06b6b69Smrg ;; 140744256261Smrg qnx*) 140844256261Smrg os=qnx 1409c06b6b69Smrg ;; 141044256261Smrg hiux*) 141144256261Smrg os=hiuxwe2 14129f4658d1Smrg ;; 141344256261Smrg lynx*178) 141444256261Smrg os=lynxos178 1415c06b6b69Smrg ;; 141644256261Smrg lynx*5) 141744256261Smrg os=lynxos5 1418c06b6b69Smrg ;; 141944256261Smrg lynxos*) 142044256261Smrg # don't get caught up in next wildcard 1421c06b6b69Smrg ;; 142244256261Smrg lynx*) 142344256261Smrg os=lynxos 1424c06b6b69Smrg ;; 142544256261Smrg mac[0-9]*) 142644256261Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 1427c06b6b69Smrg ;; 142844256261Smrg opened*) 142944256261Smrg os=openedition 1430c06b6b69Smrg ;; 143144256261Smrg os400*) 143244256261Smrg os=os400 1433c06b6b69Smrg ;; 143444256261Smrg sunos5*) 143544256261Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 14369f4658d1Smrg ;; 143744256261Smrg sunos6*) 143844256261Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1439c06b6b69Smrg ;; 144044256261Smrg wince*) 144144256261Smrg os=wince 1442c06b6b69Smrg ;; 144344256261Smrg utek*) 144444256261Smrg os=bsd 1445c06b6b69Smrg ;; 144644256261Smrg dynix*) 144744256261Smrg os=bsd 1448c06b6b69Smrg ;; 144944256261Smrg acis*) 145044256261Smrg os=aos 1451c06b6b69Smrg ;; 145244256261Smrg atheos*) 145344256261Smrg os=atheos 1454c06b6b69Smrg ;; 145544256261Smrg syllable*) 145644256261Smrg os=syllable 1457c06b6b69Smrg ;; 145844256261Smrg 386bsd) 145944256261Smrg os=bsd 14609f4658d1Smrg ;; 146144256261Smrg ctix* | uts*) 146244256261Smrg os=sysv 1463c06b6b69Smrg ;; 146444256261Smrg nova*) 146544256261Smrg os=rtmk-nova 1466c06b6b69Smrg ;; 146744256261Smrg ns2) 146844256261Smrg os=nextstep2 1469c06b6b69Smrg ;; 147044256261Smrg # Preserve the version number of sinix5. 147144256261Smrg sinix5.*) 147244256261Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1473c06b6b69Smrg ;; 147444256261Smrg sinix*) 147544256261Smrg os=sysv4 1476c06b6b69Smrg ;; 147744256261Smrg tpf*) 147844256261Smrg os=tpf 1479c06b6b69Smrg ;; 148044256261Smrg triton*) 148144256261Smrg os=sysv3 1482c06b6b69Smrg ;; 148344256261Smrg oss*) 148444256261Smrg os=sysv3 1485c06b6b69Smrg ;; 148644256261Smrg svr4*) 148744256261Smrg os=sysv4 1488c06b6b69Smrg ;; 148944256261Smrg svr3) 149044256261Smrg os=sysv3 1491c06b6b69Smrg ;; 149244256261Smrg sysvr4) 149344256261Smrg os=sysv4 1494c06b6b69Smrg ;; 149544256261Smrg ose*) 149644256261Smrg os=ose 14979f4658d1Smrg ;; 149844256261Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 149944256261Smrg os=mint 1500b20b881bSmrg ;; 150144256261Smrg dicos*) 150244256261Smrg os=dicos 1503a1d73b4bSmrg ;; 150444256261Smrg pikeos*) 150544256261Smrg # Until real need of OS specific support for 150644256261Smrg # particular features comes up, bare metal 150744256261Smrg # configurations are quite functional. 150844256261Smrg case $cpu in 150944256261Smrg arm*) 151044256261Smrg os=eabi 151144256261Smrg ;; 151244256261Smrg *) 151344256261Smrg os=elf 151444256261Smrg ;; 151544256261Smrg esac 1516c06b6b69Smrg ;; 1517c06b6b69Smrg *) 151844256261Smrg # No normalization, but not necessarily accepted, that comes below. 1519c06b6b69Smrg ;; 1520c06b6b69Smrgesac 152144256261Smrg 1522c06b6b69Smrgelse 1523c06b6b69Smrg 1524c06b6b69Smrg# Here we handle the default operating systems that come with various machines. 1525c06b6b69Smrg# The value should be what the vendor currently ships out the door with their 1526c06b6b69Smrg# machine or put another way, the most popular os provided with the machine. 1527c06b6b69Smrg 1528c06b6b69Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1529c06b6b69Smrg# "-sun"), then you have to tell the case statement up towards the top 1530c06b6b69Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1531c06b6b69Smrg# will signal an error saying that MANUFACTURER isn't an operating 1532c06b6b69Smrg# system, and we'll never get to this point. 1533c06b6b69Smrg 153444256261Smrgkernel= 153544256261Smrgcase $cpu-$vendor in 1536a1d73b4bSmrg score-*) 153744256261Smrg os=elf 15389f4658d1Smrg ;; 1539a1d73b4bSmrg spu-*) 154044256261Smrg os=elf 15419f4658d1Smrg ;; 1542c06b6b69Smrg *-acorn) 154344256261Smrg os=riscix1.2 1544c06b6b69Smrg ;; 1545c06b6b69Smrg arm*-rebel) 154644256261Smrg kernel=linux 154744256261Smrg os=gnu 1548c06b6b69Smrg ;; 1549c06b6b69Smrg arm*-semi) 155044256261Smrg os=aout 1551c06b6b69Smrg ;; 1552a1d73b4bSmrg c4x-* | tic4x-*) 155344256261Smrg os=coff 1554a1d73b4bSmrg ;; 15557a5ec427Smrg c8051-*) 155644256261Smrg os=elf 155744256261Smrg ;; 155844256261Smrg clipper-intergraph) 155944256261Smrg os=clix 15607a5ec427Smrg ;; 15617a5ec427Smrg hexagon-*) 156244256261Smrg os=elf 15637a5ec427Smrg ;; 1564a1d73b4bSmrg tic54x-*) 156544256261Smrg os=coff 1566a1d73b4bSmrg ;; 1567a1d73b4bSmrg tic55x-*) 156844256261Smrg os=coff 1569a1d73b4bSmrg ;; 1570a1d73b4bSmrg tic6x-*) 157144256261Smrg os=coff 1572c06b6b69Smrg ;; 1573c06b6b69Smrg # This must come before the *-dec entry. 1574c06b6b69Smrg pdp10-*) 157544256261Smrg os=tops20 1576c06b6b69Smrg ;; 1577c06b6b69Smrg pdp11-*) 157844256261Smrg os=none 1579c06b6b69Smrg ;; 1580c06b6b69Smrg *-dec | vax-*) 158144256261Smrg os=ultrix4.2 1582c06b6b69Smrg ;; 1583c06b6b69Smrg m68*-apollo) 158444256261Smrg os=domain 1585c06b6b69Smrg ;; 1586c06b6b69Smrg i386-sun) 158744256261Smrg os=sunos4.0.2 1588c06b6b69Smrg ;; 1589c06b6b69Smrg m68000-sun) 159044256261Smrg os=sunos3 1591c06b6b69Smrg ;; 1592c06b6b69Smrg m68*-cisco) 159344256261Smrg os=aout 1594c06b6b69Smrg ;; 1595a1d73b4bSmrg mep-*) 159644256261Smrg os=elf 15979f4658d1Smrg ;; 1598c06b6b69Smrg mips*-cisco) 159944256261Smrg os=elf 1600c06b6b69Smrg ;; 1601c06b6b69Smrg mips*-*) 160244256261Smrg os=elf 1603c06b6b69Smrg ;; 1604c06b6b69Smrg or32-*) 160544256261Smrg os=coff 1606c06b6b69Smrg ;; 1607c06b6b69Smrg *-tti) # must be before sparc entry or we get the wrong os. 160844256261Smrg os=sysv3 1609c06b6b69Smrg ;; 1610c06b6b69Smrg sparc-* | *-sun) 161144256261Smrg os=sunos4.1.1 1612c06b6b69Smrg ;; 161344256261Smrg pru-*) 161444256261Smrg os=elf 1615c06b6b69Smrg ;; 161644256261Smrg *-be) 161744256261Smrg os=beos 16189f4658d1Smrg ;; 1619c06b6b69Smrg *-ibm) 162044256261Smrg os=aix 1621c06b6b69Smrg ;; 1622a1d73b4bSmrg *-knuth) 162344256261Smrg os=mmixware 16249f4658d1Smrg ;; 1625c06b6b69Smrg *-wec) 162644256261Smrg os=proelf 1627c06b6b69Smrg ;; 1628c06b6b69Smrg *-winbond) 162944256261Smrg os=proelf 1630c06b6b69Smrg ;; 1631c06b6b69Smrg *-oki) 163244256261Smrg os=proelf 1633c06b6b69Smrg ;; 1634c06b6b69Smrg *-hp) 163544256261Smrg os=hpux 1636c06b6b69Smrg ;; 1637c06b6b69Smrg *-hitachi) 163844256261Smrg os=hiux 1639c06b6b69Smrg ;; 1640c06b6b69Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 164144256261Smrg os=sysv 1642c06b6b69Smrg ;; 1643c06b6b69Smrg *-cbm) 164444256261Smrg os=amigaos 1645c06b6b69Smrg ;; 1646c06b6b69Smrg *-dg) 164744256261Smrg os=dgux 1648c06b6b69Smrg ;; 1649c06b6b69Smrg *-dolphin) 165044256261Smrg os=sysv3 1651c06b6b69Smrg ;; 1652c06b6b69Smrg m68k-ccur) 165344256261Smrg os=rtu 1654c06b6b69Smrg ;; 1655c06b6b69Smrg m88k-omron*) 165644256261Smrg os=luna 1657c06b6b69Smrg ;; 165844256261Smrg *-next) 165944256261Smrg os=nextstep 1660c06b6b69Smrg ;; 1661c06b6b69Smrg *-sequent) 166244256261Smrg os=ptx 1663c06b6b69Smrg ;; 1664c06b6b69Smrg *-crds) 166544256261Smrg os=unos 1666c06b6b69Smrg ;; 1667c06b6b69Smrg *-ns) 166844256261Smrg os=genix 1669c06b6b69Smrg ;; 1670c06b6b69Smrg i370-*) 167144256261Smrg os=mvs 1672c06b6b69Smrg ;; 1673c06b6b69Smrg *-gould) 167444256261Smrg os=sysv 1675c06b6b69Smrg ;; 1676c06b6b69Smrg *-highlevel) 167744256261Smrg os=bsd 1678c06b6b69Smrg ;; 1679c06b6b69Smrg *-encore) 168044256261Smrg os=bsd 1681c06b6b69Smrg ;; 1682c06b6b69Smrg *-sgi) 168344256261Smrg os=irix 1684c06b6b69Smrg ;; 1685c06b6b69Smrg *-siemens) 168644256261Smrg os=sysv4 1687c06b6b69Smrg ;; 1688c06b6b69Smrg *-masscomp) 168944256261Smrg os=rtu 1690c06b6b69Smrg ;; 1691c06b6b69Smrg f30[01]-fujitsu | f700-fujitsu) 169244256261Smrg os=uxpv 1693c06b6b69Smrg ;; 1694c06b6b69Smrg *-rom68k) 169544256261Smrg os=coff 1696c06b6b69Smrg ;; 1697c06b6b69Smrg *-*bug) 169844256261Smrg os=coff 1699c06b6b69Smrg ;; 1700c06b6b69Smrg *-apple) 170144256261Smrg os=macos 1702c06b6b69Smrg ;; 1703c06b6b69Smrg *-atari*) 170444256261Smrg os=mint 170544256261Smrg ;; 170644256261Smrg *-wrs) 170744256261Smrg os=vxworks 1708c06b6b69Smrg ;; 1709c06b6b69Smrg *) 171044256261Smrg os=none 1711c06b6b69Smrg ;; 1712c06b6b69Smrgesac 171344256261Smrg 1714c06b6b69Smrgfi 1715c06b6b69Smrg 171644256261Smrg# Now, validate our (potentially fixed-up) OS. 171744256261Smrgcase $os in 171844256261Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 171944256261Smrg musl* | newlib* | relibc* | uclibc*) 172044256261Smrg ;; 172144256261Smrg # Likewise for "kernel-abi" 172244256261Smrg eabi* | gnueabi*) 172344256261Smrg ;; 172444256261Smrg # VxWorks passes extra cpu info in the 4th filed. 172544256261Smrg simlinux | simwindows | spe) 172644256261Smrg ;; 172744256261Smrg # Now accept the basic system types. 172844256261Smrg # The portable systems comes first. 172944256261Smrg # Each alternative MUST end in a * to match a version number. 173044256261Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 173144256261Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 173244256261Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 173344256261Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 173444256261Smrg | hiux* | abug | nacl* | netware* | windows* \ 173544256261Smrg | os9* | macos* | osx* | ios* \ 173644256261Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 173744256261Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 173844256261Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 173944256261Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 174044256261Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 174144256261Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 174244256261Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 174344256261Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 174444256261Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 174544256261Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 174644256261Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 174744256261Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 174844256261Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 174944256261Smrg | midipix* | mingw32* | mingw64* | mint* \ 175044256261Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 175144256261Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 175244256261Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 175344256261Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 175444256261Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 175544256261Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 175644256261Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 175744256261Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 175844256261Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 175944256261Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 176044256261Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 176144256261Smrg | fiwix* | mlibc* ) 176244256261Smrg ;; 176344256261Smrg # This one is extra strict with allowed versions 176444256261Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 176544256261Smrg # Don't forget version if it is 3.2v4 or newer. 176644256261Smrg ;; 176744256261Smrg none) 176844256261Smrg ;; 176944256261Smrg kernel* ) 177044256261Smrg # Restricted further below 177144256261Smrg ;; 177244256261Smrg *) 177344256261Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 177444256261Smrg exit 1 177544256261Smrg ;; 177644256261Smrgesac 177744256261Smrg 177844256261Smrg# As a final step for OS-related things, validate the OS-kernel combination 177944256261Smrg# (given a valid OS), if there is a kernel. 178044256261Smrgcase $kernel-$os in 178144256261Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 178244256261Smrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 178344256261Smrg ;; 178444256261Smrg uclinux-uclibc* ) 178544256261Smrg ;; 178644256261Smrg managarm-mlibc* | managarm-kernel* ) 178744256261Smrg ;; 178844256261Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 178944256261Smrg # These are just libc implementations, not actual OSes, and thus 179044256261Smrg # require a kernel. 179144256261Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 179244256261Smrg exit 1 179344256261Smrg ;; 179444256261Smrg -kernel* ) 179544256261Smrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 179644256261Smrg exit 1 179744256261Smrg ;; 179844256261Smrg *-kernel* ) 179944256261Smrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 180044256261Smrg exit 1 180144256261Smrg ;; 180244256261Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 180344256261Smrg ;; 180444256261Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 180544256261Smrg ;; 180644256261Smrg nto-qnx*) 180744256261Smrg ;; 180844256261Smrg os2-emx) 180944256261Smrg ;; 181044256261Smrg *-eabi* | *-gnueabi*) 181144256261Smrg ;; 181244256261Smrg -*) 181344256261Smrg # Blank kernel with real OS is always fine. 181444256261Smrg ;; 181544256261Smrg *-*) 181644256261Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 181744256261Smrg exit 1 181844256261Smrg ;; 181944256261Smrgesac 182044256261Smrg 1821c06b6b69Smrg# Here we handle the case where we know the os, and the CPU type, but not the 1822c06b6b69Smrg# manufacturer. We pick the logical manufacturer. 182344256261Smrgcase $vendor in 182444256261Smrg unknown) 182544256261Smrg case $cpu-$os in 182644256261Smrg *-riscix*) 1827c06b6b69Smrg vendor=acorn 1828c06b6b69Smrg ;; 182944256261Smrg *-sunos*) 1830c06b6b69Smrg vendor=sun 1831c06b6b69Smrg ;; 183244256261Smrg *-cnk* | *-aix*) 1833c06b6b69Smrg vendor=ibm 1834c06b6b69Smrg ;; 183544256261Smrg *-beos*) 1836c06b6b69Smrg vendor=be 1837c06b6b69Smrg ;; 183844256261Smrg *-hpux*) 1839c06b6b69Smrg vendor=hp 1840c06b6b69Smrg ;; 184144256261Smrg *-mpeix*) 1842c06b6b69Smrg vendor=hp 1843c06b6b69Smrg ;; 184444256261Smrg *-hiux*) 1845c06b6b69Smrg vendor=hitachi 1846c06b6b69Smrg ;; 184744256261Smrg *-unos*) 1848c06b6b69Smrg vendor=crds 1849c06b6b69Smrg ;; 185044256261Smrg *-dgux*) 1851c06b6b69Smrg vendor=dg 1852c06b6b69Smrg ;; 185344256261Smrg *-luna*) 1854c06b6b69Smrg vendor=omron 1855c06b6b69Smrg ;; 185644256261Smrg *-genix*) 1857c06b6b69Smrg vendor=ns 1858c06b6b69Smrg ;; 185944256261Smrg *-clix*) 186044256261Smrg vendor=intergraph 186144256261Smrg ;; 186244256261Smrg *-mvs* | *-opened*) 186344256261Smrg vendor=ibm 186444256261Smrg ;; 186544256261Smrg *-os400*) 1866c06b6b69Smrg vendor=ibm 1867c06b6b69Smrg ;; 186844256261Smrg s390-* | s390x-*) 18699f4658d1Smrg vendor=ibm 18709f4658d1Smrg ;; 187144256261Smrg *-ptx*) 1872c06b6b69Smrg vendor=sequent 1873c06b6b69Smrg ;; 187444256261Smrg *-tpf*) 18759f4658d1Smrg vendor=ibm 18769f4658d1Smrg ;; 187744256261Smrg *-vxsim* | *-vxworks* | *-windiss*) 1878c06b6b69Smrg vendor=wrs 1879c06b6b69Smrg ;; 188044256261Smrg *-aux*) 1881c06b6b69Smrg vendor=apple 1882c06b6b69Smrg ;; 188344256261Smrg *-hms*) 1884c06b6b69Smrg vendor=hitachi 1885c06b6b69Smrg ;; 188644256261Smrg *-mpw* | *-macos*) 1887c06b6b69Smrg vendor=apple 1888c06b6b69Smrg ;; 188944256261Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1890c06b6b69Smrg vendor=atari 1891c06b6b69Smrg ;; 189244256261Smrg *-vos*) 1893c06b6b69Smrg vendor=stratus 1894c06b6b69Smrg ;; 1895c06b6b69Smrg esac 1896c06b6b69Smrg ;; 1897c06b6b69Smrgesac 1898c06b6b69Smrg 189944256261Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 19009f4658d1Smrgexit 1901c06b6b69Smrg 1902c06b6b69Smrg# Local variables: 190344256261Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 1904c06b6b69Smrg# time-stamp-start: "timestamp='" 1905c06b6b69Smrg# time-stamp-format: "%:y-%02m-%02d" 1906c06b6b69Smrg# time-stamp-end: "'" 1907c06b6b69Smrg# End: 1908