138b41dabSmrg#! /bin/sh 238b41dabSmrg# Configuration validation subroutine script. 338b41dabSmrg# Copyright 1992-2023 Free Software Foundation, Inc. 438b41dabSmrg 538b41dabSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 638b41dabSmrg 738b41dabSmrgtimestamp='2023-01-21' 838b41dabSmrg 938b41dabSmrg# This file is free software; you can redistribute it and/or modify it 1038b41dabSmrg# under the terms of the GNU General Public License as published by 1138b41dabSmrg# the Free Software Foundation, either version 3 of the License, or 1238b41dabSmrg# (at your option) any later version. 1338b41dabSmrg# 1438b41dabSmrg# This program is distributed in the hope that it will be useful, but 1538b41dabSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of 1638b41dabSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1738b41dabSmrg# General Public License for more details. 1838b41dabSmrg# 1938b41dabSmrg# You should have received a copy of the GNU General Public License 2038b41dabSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 2138b41dabSmrg# 2238b41dabSmrg# As a special exception to the GNU General Public License, if you 2338b41dabSmrg# distribute this file as part of a program that contains a 2438b41dabSmrg# configuration script generated by Autoconf, you may include it under 2538b41dabSmrg# the same distribution terms that you use for the rest of that 2638b41dabSmrg# program. This Exception is an additional permission under section 7 2738b41dabSmrg# of the GNU General Public License, version 3 ("GPLv3"). 2838b41dabSmrg 2938b41dabSmrg 3038b41dabSmrg# Please send patches to <config-patches@gnu.org>. 3138b41dabSmrg# 3238b41dabSmrg# Configuration subroutine to validate and canonicalize a configuration type. 3338b41dabSmrg# Supply the specified configuration type as an argument. 3438b41dabSmrg# If it is invalid, we print an error message on stderr and exit with code 1. 3538b41dabSmrg# Otherwise, we print the canonical config type on stdout and succeed. 3638b41dabSmrg 3738b41dabSmrg# You can get the latest version of this script from: 3838b41dabSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 3938b41dabSmrg 4038b41dabSmrg# This file is supposed to be the same for all GNU packages 4138b41dabSmrg# and recognize all the CPU types, system types and aliases 4238b41dabSmrg# that are meaningful with *any* GNU software. 4338b41dabSmrg# Each package is responsible for reporting which valid configurations 4438b41dabSmrg# it does not support. The user should be able to distinguish 4538b41dabSmrg# a failure to support a valid configuration from a meaningless 4638b41dabSmrg# configuration. 4738b41dabSmrg 4838b41dabSmrg# The goal of this file is to map all the various variations of a given 4938b41dabSmrg# machine specification into a single specification in the form: 5038b41dabSmrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 5138b41dabSmrg# or in some cases, the newer four-part form: 5238b41dabSmrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 5338b41dabSmrg# It is wrong to echo any other type of specification. 5438b41dabSmrg 5538b41dabSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 5638b41dabSmrg# about features and limitations of the classic Bourne shell that were 5738b41dabSmrg# superseded or lifted in POSIX. However, this script identifies a wide 5838b41dabSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 5938b41dabSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 6038b41dabSmrg# have a pre-POSIX /bin/sh. 6138b41dabSmrg 6238b41dabSmrgme=`echo "$0" | sed -e 's,.*/,,'` 6338b41dabSmrg 6438b41dabSmrgusage="\ 6538b41dabSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 6638b41dabSmrg 6738b41dabSmrgCanonicalize a configuration name. 6838b41dabSmrg 6938b41dabSmrgOptions: 7038b41dabSmrg -h, --help print this help, then exit 7138b41dabSmrg -t, --time-stamp print date of last modification, then exit 7238b41dabSmrg -v, --version print version number, then exit 7338b41dabSmrg 7438b41dabSmrgReport bugs and patches to <config-patches@gnu.org>." 7538b41dabSmrg 7638b41dabSmrgversion="\ 7738b41dabSmrgGNU config.sub ($timestamp) 7838b41dabSmrg 7938b41dabSmrgCopyright 1992-2023 Free Software Foundation, Inc. 8038b41dabSmrg 8138b41dabSmrgThis is free software; see the source for copying conditions. There is NO 8238b41dabSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 8338b41dabSmrg 8438b41dabSmrghelp=" 8538b41dabSmrgTry \`$me --help' for more information." 8638b41dabSmrg 8738b41dabSmrg# Parse command line 8838b41dabSmrgwhile test $# -gt 0 ; do 8938b41dabSmrg case $1 in 9038b41dabSmrg --time-stamp | --time* | -t ) 9138b41dabSmrg echo "$timestamp" ; exit ;; 9238b41dabSmrg --version | -v ) 9338b41dabSmrg echo "$version" ; exit ;; 9438b41dabSmrg --help | --h* | -h ) 9538b41dabSmrg echo "$usage"; exit ;; 9638b41dabSmrg -- ) # Stop option processing 9738b41dabSmrg shift; break ;; 9838b41dabSmrg - ) # Use stdin as input. 9938b41dabSmrg break ;; 10038b41dabSmrg -* ) 10138b41dabSmrg echo "$me: invalid option $1$help" >&2 10238b41dabSmrg exit 1 ;; 10338b41dabSmrg 10438b41dabSmrg *local*) 10538b41dabSmrg # First pass through any local machine types. 10638b41dabSmrg echo "$1" 10738b41dabSmrg exit ;; 10838b41dabSmrg 10938b41dabSmrg * ) 11038b41dabSmrg break ;; 11138b41dabSmrg esac 11238b41dabSmrgdone 11338b41dabSmrg 11438b41dabSmrgcase $# in 11538b41dabSmrg 0) echo "$me: missing argument$help" >&2 11638b41dabSmrg exit 1;; 11738b41dabSmrg 1) ;; 11838b41dabSmrg *) echo "$me: too many arguments$help" >&2 11938b41dabSmrg exit 1;; 12038b41dabSmrgesac 12138b41dabSmrg 12238b41dabSmrg# Split fields of configuration type 12338b41dabSmrg# shellcheck disable=SC2162 12438b41dabSmrgsaved_IFS=$IFS 12538b41dabSmrgIFS="-" read field1 field2 field3 field4 <<EOF 12638b41dabSmrg$1 12738b41dabSmrgEOF 12838b41dabSmrgIFS=$saved_IFS 12938b41dabSmrg 13038b41dabSmrg# Separate into logical components for further validation 13138b41dabSmrgcase $1 in 13238b41dabSmrg *-*-*-*-*) 13338b41dabSmrg echo Invalid configuration \`"$1"\': more than four components >&2 13438b41dabSmrg exit 1 13538b41dabSmrg ;; 13638b41dabSmrg *-*-*-*) 13738b41dabSmrg basic_machine=$field1-$field2 13838b41dabSmrg basic_os=$field3-$field4 13938b41dabSmrg ;; 14038b41dabSmrg *-*-*) 14138b41dabSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 14238b41dabSmrg # parts 14338b41dabSmrg maybe_os=$field2-$field3 14438b41dabSmrg case $maybe_os in 14538b41dabSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 14638b41dabSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 14738b41dabSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 14838b41dabSmrg | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) 14938b41dabSmrg basic_machine=$field1 15038b41dabSmrg basic_os=$maybe_os 15138b41dabSmrg ;; 15238b41dabSmrg android-linux) 15338b41dabSmrg basic_machine=$field1-unknown 15438b41dabSmrg basic_os=linux-android 15538b41dabSmrg ;; 15638b41dabSmrg *) 15738b41dabSmrg basic_machine=$field1-$field2 15838b41dabSmrg basic_os=$field3 15938b41dabSmrg ;; 16038b41dabSmrg esac 16138b41dabSmrg ;; 16238b41dabSmrg *-*) 16338b41dabSmrg # A lone config we happen to match not fitting any pattern 16438b41dabSmrg case $field1-$field2 in 16538b41dabSmrg decstation-3100) 16638b41dabSmrg basic_machine=mips-dec 16738b41dabSmrg basic_os= 16838b41dabSmrg ;; 16938b41dabSmrg *-*) 17038b41dabSmrg # Second component is usually, but not always the OS 17138b41dabSmrg case $field2 in 17238b41dabSmrg # Prevent following clause from handling this valid os 17338b41dabSmrg sun*os*) 17438b41dabSmrg basic_machine=$field1 17538b41dabSmrg basic_os=$field2 17638b41dabSmrg ;; 17738b41dabSmrg zephyr*) 17838b41dabSmrg basic_machine=$field1-unknown 17938b41dabSmrg basic_os=$field2 18038b41dabSmrg ;; 18138b41dabSmrg # Manufacturers 18238b41dabSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 18338b41dabSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 18438b41dabSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 18538b41dabSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 18638b41dabSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 18738b41dabSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 18838b41dabSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 18938b41dabSmrg | microblaze* | sim | cisco \ 19038b41dabSmrg | oki | wec | wrs | winbond) 19138b41dabSmrg basic_machine=$field1-$field2 19238b41dabSmrg basic_os= 19338b41dabSmrg ;; 19438b41dabSmrg *) 19538b41dabSmrg basic_machine=$field1 19638b41dabSmrg basic_os=$field2 19738b41dabSmrg ;; 19838b41dabSmrg esac 19938b41dabSmrg ;; 20038b41dabSmrg esac 20138b41dabSmrg ;; 20238b41dabSmrg *) 20338b41dabSmrg # Convert single-component short-hands not valid as part of 20438b41dabSmrg # multi-component configurations. 20538b41dabSmrg case $field1 in 20638b41dabSmrg 386bsd) 20738b41dabSmrg basic_machine=i386-pc 20838b41dabSmrg basic_os=bsd 20938b41dabSmrg ;; 21038b41dabSmrg a29khif) 21138b41dabSmrg basic_machine=a29k-amd 21238b41dabSmrg basic_os=udi 21338b41dabSmrg ;; 21438b41dabSmrg adobe68k) 21538b41dabSmrg basic_machine=m68010-adobe 21638b41dabSmrg basic_os=scout 21738b41dabSmrg ;; 21838b41dabSmrg alliant) 21938b41dabSmrg basic_machine=fx80-alliant 22038b41dabSmrg basic_os= 22138b41dabSmrg ;; 22238b41dabSmrg altos | altos3068) 22338b41dabSmrg basic_machine=m68k-altos 22438b41dabSmrg basic_os= 22538b41dabSmrg ;; 22638b41dabSmrg am29k) 22738b41dabSmrg basic_machine=a29k-none 22838b41dabSmrg basic_os=bsd 22938b41dabSmrg ;; 23038b41dabSmrg amdahl) 23138b41dabSmrg basic_machine=580-amdahl 23238b41dabSmrg basic_os=sysv 23338b41dabSmrg ;; 23438b41dabSmrg amiga) 23538b41dabSmrg basic_machine=m68k-unknown 23638b41dabSmrg basic_os= 23738b41dabSmrg ;; 23838b41dabSmrg amigaos | amigados) 23938b41dabSmrg basic_machine=m68k-unknown 24038b41dabSmrg basic_os=amigaos 24138b41dabSmrg ;; 24238b41dabSmrg amigaunix | amix) 24338b41dabSmrg basic_machine=m68k-unknown 24438b41dabSmrg basic_os=sysv4 24538b41dabSmrg ;; 24638b41dabSmrg apollo68) 24738b41dabSmrg basic_machine=m68k-apollo 24838b41dabSmrg basic_os=sysv 24938b41dabSmrg ;; 25038b41dabSmrg apollo68bsd) 25138b41dabSmrg basic_machine=m68k-apollo 25238b41dabSmrg basic_os=bsd 25338b41dabSmrg ;; 25438b41dabSmrg aros) 25538b41dabSmrg basic_machine=i386-pc 25638b41dabSmrg basic_os=aros 25738b41dabSmrg ;; 25838b41dabSmrg aux) 25938b41dabSmrg basic_machine=m68k-apple 26038b41dabSmrg basic_os=aux 26138b41dabSmrg ;; 26238b41dabSmrg balance) 26338b41dabSmrg basic_machine=ns32k-sequent 26438b41dabSmrg basic_os=dynix 26538b41dabSmrg ;; 26638b41dabSmrg blackfin) 26738b41dabSmrg basic_machine=bfin-unknown 26838b41dabSmrg basic_os=linux 26938b41dabSmrg ;; 27038b41dabSmrg cegcc) 27138b41dabSmrg basic_machine=arm-unknown 27238b41dabSmrg basic_os=cegcc 27338b41dabSmrg ;; 27438b41dabSmrg convex-c1) 27538b41dabSmrg basic_machine=c1-convex 27638b41dabSmrg basic_os=bsd 27738b41dabSmrg ;; 27838b41dabSmrg convex-c2) 27938b41dabSmrg basic_machine=c2-convex 28038b41dabSmrg basic_os=bsd 28138b41dabSmrg ;; 28238b41dabSmrg convex-c32) 28338b41dabSmrg basic_machine=c32-convex 28438b41dabSmrg basic_os=bsd 28538b41dabSmrg ;; 28638b41dabSmrg convex-c34) 28738b41dabSmrg basic_machine=c34-convex 28838b41dabSmrg basic_os=bsd 28938b41dabSmrg ;; 29038b41dabSmrg convex-c38) 29138b41dabSmrg basic_machine=c38-convex 29238b41dabSmrg basic_os=bsd 29338b41dabSmrg ;; 29438b41dabSmrg cray) 29538b41dabSmrg basic_machine=j90-cray 29638b41dabSmrg basic_os=unicos 29738b41dabSmrg ;; 29838b41dabSmrg crds | unos) 29938b41dabSmrg basic_machine=m68k-crds 30038b41dabSmrg basic_os= 30138b41dabSmrg ;; 30238b41dabSmrg da30) 30338b41dabSmrg basic_machine=m68k-da30 30438b41dabSmrg basic_os= 30538b41dabSmrg ;; 30638b41dabSmrg decstation | pmax | pmin | dec3100 | decstatn) 30738b41dabSmrg basic_machine=mips-dec 30838b41dabSmrg basic_os= 30938b41dabSmrg ;; 31038b41dabSmrg delta88) 31138b41dabSmrg basic_machine=m88k-motorola 31238b41dabSmrg basic_os=sysv3 31338b41dabSmrg ;; 31438b41dabSmrg dicos) 31538b41dabSmrg basic_machine=i686-pc 31638b41dabSmrg basic_os=dicos 31738b41dabSmrg ;; 31838b41dabSmrg djgpp) 31938b41dabSmrg basic_machine=i586-pc 32038b41dabSmrg basic_os=msdosdjgpp 32138b41dabSmrg ;; 32238b41dabSmrg ebmon29k) 32338b41dabSmrg basic_machine=a29k-amd 32438b41dabSmrg basic_os=ebmon 32538b41dabSmrg ;; 32638b41dabSmrg es1800 | OSE68k | ose68k | ose | OSE) 32738b41dabSmrg basic_machine=m68k-ericsson 32838b41dabSmrg basic_os=ose 32938b41dabSmrg ;; 33038b41dabSmrg gmicro) 33138b41dabSmrg basic_machine=tron-gmicro 33238b41dabSmrg basic_os=sysv 33338b41dabSmrg ;; 33438b41dabSmrg go32) 33538b41dabSmrg basic_machine=i386-pc 33638b41dabSmrg basic_os=go32 33738b41dabSmrg ;; 33838b41dabSmrg h8300hms) 33938b41dabSmrg basic_machine=h8300-hitachi 34038b41dabSmrg basic_os=hms 34138b41dabSmrg ;; 34238b41dabSmrg h8300xray) 34338b41dabSmrg basic_machine=h8300-hitachi 34438b41dabSmrg basic_os=xray 34538b41dabSmrg ;; 34638b41dabSmrg h8500hms) 34738b41dabSmrg basic_machine=h8500-hitachi 34838b41dabSmrg basic_os=hms 34938b41dabSmrg ;; 35038b41dabSmrg harris) 35138b41dabSmrg basic_machine=m88k-harris 35238b41dabSmrg basic_os=sysv3 35338b41dabSmrg ;; 35438b41dabSmrg hp300 | hp300hpux) 35538b41dabSmrg basic_machine=m68k-hp 35638b41dabSmrg basic_os=hpux 35738b41dabSmrg ;; 35838b41dabSmrg hp300bsd) 35938b41dabSmrg basic_machine=m68k-hp 36038b41dabSmrg basic_os=bsd 36138b41dabSmrg ;; 36238b41dabSmrg hppaosf) 36338b41dabSmrg basic_machine=hppa1.1-hp 36438b41dabSmrg basic_os=osf 36538b41dabSmrg ;; 36638b41dabSmrg hppro) 36738b41dabSmrg basic_machine=hppa1.1-hp 36838b41dabSmrg basic_os=proelf 36938b41dabSmrg ;; 37038b41dabSmrg i386mach) 37138b41dabSmrg basic_machine=i386-mach 37238b41dabSmrg basic_os=mach 37338b41dabSmrg ;; 37438b41dabSmrg isi68 | isi) 37538b41dabSmrg basic_machine=m68k-isi 37638b41dabSmrg basic_os=sysv 37738b41dabSmrg ;; 37838b41dabSmrg m68knommu) 37938b41dabSmrg basic_machine=m68k-unknown 38038b41dabSmrg basic_os=linux 38138b41dabSmrg ;; 38238b41dabSmrg magnum | m3230) 38338b41dabSmrg basic_machine=mips-mips 38438b41dabSmrg basic_os=sysv 38538b41dabSmrg ;; 38638b41dabSmrg merlin) 38738b41dabSmrg basic_machine=ns32k-utek 38838b41dabSmrg basic_os=sysv 38938b41dabSmrg ;; 39038b41dabSmrg mingw64) 39138b41dabSmrg basic_machine=x86_64-pc 39238b41dabSmrg basic_os=mingw64 39338b41dabSmrg ;; 39438b41dabSmrg mingw32) 39538b41dabSmrg basic_machine=i686-pc 39638b41dabSmrg basic_os=mingw32 39738b41dabSmrg ;; 39838b41dabSmrg mingw32ce) 39938b41dabSmrg basic_machine=arm-unknown 40038b41dabSmrg basic_os=mingw32ce 40138b41dabSmrg ;; 40238b41dabSmrg monitor) 40338b41dabSmrg basic_machine=m68k-rom68k 40438b41dabSmrg basic_os=coff 40538b41dabSmrg ;; 40638b41dabSmrg morphos) 40738b41dabSmrg basic_machine=powerpc-unknown 40838b41dabSmrg basic_os=morphos 40938b41dabSmrg ;; 41038b41dabSmrg moxiebox) 41138b41dabSmrg basic_machine=moxie-unknown 41238b41dabSmrg basic_os=moxiebox 41338b41dabSmrg ;; 41438b41dabSmrg msdos) 41538b41dabSmrg basic_machine=i386-pc 41638b41dabSmrg basic_os=msdos 41738b41dabSmrg ;; 41838b41dabSmrg msys) 41938b41dabSmrg basic_machine=i686-pc 42038b41dabSmrg basic_os=msys 42138b41dabSmrg ;; 42238b41dabSmrg mvs) 42338b41dabSmrg basic_machine=i370-ibm 42438b41dabSmrg basic_os=mvs 42538b41dabSmrg ;; 42638b41dabSmrg nacl) 42738b41dabSmrg basic_machine=le32-unknown 42838b41dabSmrg basic_os=nacl 42938b41dabSmrg ;; 43038b41dabSmrg ncr3000) 43138b41dabSmrg basic_machine=i486-ncr 43238b41dabSmrg basic_os=sysv4 43338b41dabSmrg ;; 43438b41dabSmrg netbsd386) 43538b41dabSmrg basic_machine=i386-pc 43638b41dabSmrg basic_os=netbsd 43738b41dabSmrg ;; 43838b41dabSmrg netwinder) 43938b41dabSmrg basic_machine=armv4l-rebel 44038b41dabSmrg basic_os=linux 44138b41dabSmrg ;; 44238b41dabSmrg news | news700 | news800 | news900) 44338b41dabSmrg basic_machine=m68k-sony 44438b41dabSmrg basic_os=newsos 44538b41dabSmrg ;; 44638b41dabSmrg news1000) 44738b41dabSmrg basic_machine=m68030-sony 44838b41dabSmrg basic_os=newsos 44938b41dabSmrg ;; 45038b41dabSmrg necv70) 45138b41dabSmrg basic_machine=v70-nec 45238b41dabSmrg basic_os=sysv 45338b41dabSmrg ;; 45438b41dabSmrg nh3000) 45538b41dabSmrg basic_machine=m68k-harris 45638b41dabSmrg basic_os=cxux 45738b41dabSmrg ;; 45838b41dabSmrg nh[45]000) 45938b41dabSmrg basic_machine=m88k-harris 46038b41dabSmrg basic_os=cxux 46138b41dabSmrg ;; 46238b41dabSmrg nindy960) 46338b41dabSmrg basic_machine=i960-intel 46438b41dabSmrg basic_os=nindy 46538b41dabSmrg ;; 46638b41dabSmrg mon960) 46738b41dabSmrg basic_machine=i960-intel 46838b41dabSmrg basic_os=mon960 46938b41dabSmrg ;; 47038b41dabSmrg nonstopux) 47138b41dabSmrg basic_machine=mips-compaq 47238b41dabSmrg basic_os=nonstopux 47338b41dabSmrg ;; 47438b41dabSmrg os400) 47538b41dabSmrg basic_machine=powerpc-ibm 47638b41dabSmrg basic_os=os400 47738b41dabSmrg ;; 47838b41dabSmrg OSE68000 | ose68000) 47938b41dabSmrg basic_machine=m68000-ericsson 48038b41dabSmrg basic_os=ose 48138b41dabSmrg ;; 48238b41dabSmrg os68k) 48338b41dabSmrg basic_machine=m68k-none 48438b41dabSmrg basic_os=os68k 48538b41dabSmrg ;; 48638b41dabSmrg paragon) 48738b41dabSmrg basic_machine=i860-intel 48838b41dabSmrg basic_os=osf 48938b41dabSmrg ;; 49038b41dabSmrg parisc) 49138b41dabSmrg basic_machine=hppa-unknown 49238b41dabSmrg basic_os=linux 49338b41dabSmrg ;; 49438b41dabSmrg psp) 49538b41dabSmrg basic_machine=mipsallegrexel-sony 49638b41dabSmrg basic_os=psp 49738b41dabSmrg ;; 49838b41dabSmrg pw32) 49938b41dabSmrg basic_machine=i586-unknown 50038b41dabSmrg basic_os=pw32 50138b41dabSmrg ;; 50238b41dabSmrg rdos | rdos64) 50338b41dabSmrg basic_machine=x86_64-pc 50438b41dabSmrg basic_os=rdos 50538b41dabSmrg ;; 50638b41dabSmrg rdos32) 50738b41dabSmrg basic_machine=i386-pc 50838b41dabSmrg basic_os=rdos 50938b41dabSmrg ;; 51038b41dabSmrg rom68k) 51138b41dabSmrg basic_machine=m68k-rom68k 51238b41dabSmrg basic_os=coff 51338b41dabSmrg ;; 51438b41dabSmrg sa29200) 51538b41dabSmrg basic_machine=a29k-amd 51638b41dabSmrg basic_os=udi 51738b41dabSmrg ;; 51838b41dabSmrg sei) 51938b41dabSmrg basic_machine=mips-sei 52038b41dabSmrg basic_os=seiux 52138b41dabSmrg ;; 52238b41dabSmrg sequent) 52338b41dabSmrg basic_machine=i386-sequent 52438b41dabSmrg basic_os= 52538b41dabSmrg ;; 52638b41dabSmrg sps7) 52738b41dabSmrg basic_machine=m68k-bull 52838b41dabSmrg basic_os=sysv2 52938b41dabSmrg ;; 53038b41dabSmrg st2000) 53138b41dabSmrg basic_machine=m68k-tandem 53238b41dabSmrg basic_os= 53338b41dabSmrg ;; 53438b41dabSmrg stratus) 53538b41dabSmrg basic_machine=i860-stratus 53638b41dabSmrg basic_os=sysv4 53738b41dabSmrg ;; 53838b41dabSmrg sun2) 53938b41dabSmrg basic_machine=m68000-sun 54038b41dabSmrg basic_os= 54138b41dabSmrg ;; 54238b41dabSmrg sun2os3) 54338b41dabSmrg basic_machine=m68000-sun 54438b41dabSmrg basic_os=sunos3 54538b41dabSmrg ;; 54638b41dabSmrg sun2os4) 54738b41dabSmrg basic_machine=m68000-sun 54838b41dabSmrg basic_os=sunos4 54938b41dabSmrg ;; 55038b41dabSmrg sun3) 55138b41dabSmrg basic_machine=m68k-sun 55238b41dabSmrg basic_os= 55338b41dabSmrg ;; 55438b41dabSmrg sun3os3) 55538b41dabSmrg basic_machine=m68k-sun 55638b41dabSmrg basic_os=sunos3 55738b41dabSmrg ;; 55838b41dabSmrg sun3os4) 55938b41dabSmrg basic_machine=m68k-sun 56038b41dabSmrg basic_os=sunos4 56138b41dabSmrg ;; 56238b41dabSmrg sun4) 56338b41dabSmrg basic_machine=sparc-sun 56438b41dabSmrg basic_os= 56538b41dabSmrg ;; 56638b41dabSmrg sun4os3) 56738b41dabSmrg basic_machine=sparc-sun 56838b41dabSmrg basic_os=sunos3 56938b41dabSmrg ;; 57038b41dabSmrg sun4os4) 57138b41dabSmrg basic_machine=sparc-sun 57238b41dabSmrg basic_os=sunos4 57338b41dabSmrg ;; 57438b41dabSmrg sun4sol2) 57538b41dabSmrg basic_machine=sparc-sun 57638b41dabSmrg basic_os=solaris2 57738b41dabSmrg ;; 57838b41dabSmrg sun386 | sun386i | roadrunner) 57938b41dabSmrg basic_machine=i386-sun 58038b41dabSmrg basic_os= 58138b41dabSmrg ;; 58238b41dabSmrg sv1) 58338b41dabSmrg basic_machine=sv1-cray 58438b41dabSmrg basic_os=unicos 58538b41dabSmrg ;; 58638b41dabSmrg symmetry) 58738b41dabSmrg basic_machine=i386-sequent 58838b41dabSmrg basic_os=dynix 58938b41dabSmrg ;; 59038b41dabSmrg t3e) 59138b41dabSmrg basic_machine=alphaev5-cray 59238b41dabSmrg basic_os=unicos 59338b41dabSmrg ;; 59438b41dabSmrg t90) 59538b41dabSmrg basic_machine=t90-cray 59638b41dabSmrg basic_os=unicos 59738b41dabSmrg ;; 59838b41dabSmrg toad1) 59938b41dabSmrg basic_machine=pdp10-xkl 60038b41dabSmrg basic_os=tops20 60138b41dabSmrg ;; 60238b41dabSmrg tpf) 60338b41dabSmrg basic_machine=s390x-ibm 60438b41dabSmrg basic_os=tpf 60538b41dabSmrg ;; 60638b41dabSmrg udi29k) 60738b41dabSmrg basic_machine=a29k-amd 60838b41dabSmrg basic_os=udi 60938b41dabSmrg ;; 61038b41dabSmrg ultra3) 61138b41dabSmrg basic_machine=a29k-nyu 61238b41dabSmrg basic_os=sym1 61338b41dabSmrg ;; 61438b41dabSmrg v810 | necv810) 61538b41dabSmrg basic_machine=v810-nec 61638b41dabSmrg basic_os=none 61738b41dabSmrg ;; 61838b41dabSmrg vaxv) 61938b41dabSmrg basic_machine=vax-dec 62038b41dabSmrg basic_os=sysv 62138b41dabSmrg ;; 62238b41dabSmrg vms) 62338b41dabSmrg basic_machine=vax-dec 62438b41dabSmrg basic_os=vms 62538b41dabSmrg ;; 62638b41dabSmrg vsta) 62738b41dabSmrg basic_machine=i386-pc 62838b41dabSmrg basic_os=vsta 62938b41dabSmrg ;; 63038b41dabSmrg vxworks960) 63138b41dabSmrg basic_machine=i960-wrs 63238b41dabSmrg basic_os=vxworks 63338b41dabSmrg ;; 63438b41dabSmrg vxworks68) 63538b41dabSmrg basic_machine=m68k-wrs 63638b41dabSmrg basic_os=vxworks 63738b41dabSmrg ;; 63838b41dabSmrg vxworks29k) 63938b41dabSmrg basic_machine=a29k-wrs 64038b41dabSmrg basic_os=vxworks 64138b41dabSmrg ;; 64238b41dabSmrg xbox) 64338b41dabSmrg basic_machine=i686-pc 64438b41dabSmrg basic_os=mingw32 64538b41dabSmrg ;; 64638b41dabSmrg ymp) 64738b41dabSmrg basic_machine=ymp-cray 64838b41dabSmrg basic_os=unicos 64938b41dabSmrg ;; 65038b41dabSmrg *) 65138b41dabSmrg basic_machine=$1 65238b41dabSmrg basic_os= 65338b41dabSmrg ;; 65438b41dabSmrg esac 65538b41dabSmrg ;; 65638b41dabSmrgesac 65738b41dabSmrg 65838b41dabSmrg# Decode 1-component or ad-hoc basic machines 65938b41dabSmrgcase $basic_machine in 66038b41dabSmrg # Here we handle the default manufacturer of certain CPU types. It is in 66138b41dabSmrg # some cases the only manufacturer, in others, it is the most popular. 66238b41dabSmrg w89k) 66338b41dabSmrg cpu=hppa1.1 66438b41dabSmrg vendor=winbond 66538b41dabSmrg ;; 66638b41dabSmrg op50n) 66738b41dabSmrg cpu=hppa1.1 66838b41dabSmrg vendor=oki 66938b41dabSmrg ;; 67038b41dabSmrg op60c) 67138b41dabSmrg cpu=hppa1.1 67238b41dabSmrg vendor=oki 67338b41dabSmrg ;; 67438b41dabSmrg ibm*) 67538b41dabSmrg cpu=i370 67638b41dabSmrg vendor=ibm 67738b41dabSmrg ;; 67838b41dabSmrg orion105) 67938b41dabSmrg cpu=clipper 68038b41dabSmrg vendor=highlevel 68138b41dabSmrg ;; 68238b41dabSmrg mac | mpw | mac-mpw) 68338b41dabSmrg cpu=m68k 68438b41dabSmrg vendor=apple 68538b41dabSmrg ;; 68638b41dabSmrg pmac | pmac-mpw) 68738b41dabSmrg cpu=powerpc 68838b41dabSmrg vendor=apple 68938b41dabSmrg ;; 69038b41dabSmrg 69138b41dabSmrg # Recognize the various machine names and aliases which stand 69238b41dabSmrg # for a CPU type and a company and sometimes even an OS. 69338b41dabSmrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 69438b41dabSmrg cpu=m68000 69538b41dabSmrg vendor=att 69638b41dabSmrg ;; 69738b41dabSmrg 3b*) 69838b41dabSmrg cpu=we32k 69938b41dabSmrg vendor=att 70038b41dabSmrg ;; 70138b41dabSmrg bluegene*) 70238b41dabSmrg cpu=powerpc 70338b41dabSmrg vendor=ibm 70438b41dabSmrg basic_os=cnk 70538b41dabSmrg ;; 70638b41dabSmrg decsystem10* | dec10*) 70738b41dabSmrg cpu=pdp10 70838b41dabSmrg vendor=dec 70938b41dabSmrg basic_os=tops10 71038b41dabSmrg ;; 71138b41dabSmrg decsystem20* | dec20*) 71238b41dabSmrg cpu=pdp10 71338b41dabSmrg vendor=dec 71438b41dabSmrg basic_os=tops20 71538b41dabSmrg ;; 71638b41dabSmrg delta | 3300 | motorola-3300 | motorola-delta \ 71738b41dabSmrg | 3300-motorola | delta-motorola) 71838b41dabSmrg cpu=m68k 71938b41dabSmrg vendor=motorola 72038b41dabSmrg ;; 72138b41dabSmrg dpx2*) 72238b41dabSmrg cpu=m68k 72338b41dabSmrg vendor=bull 72438b41dabSmrg basic_os=sysv3 72538b41dabSmrg ;; 72638b41dabSmrg encore | umax | mmax) 72738b41dabSmrg cpu=ns32k 72838b41dabSmrg vendor=encore 72938b41dabSmrg ;; 73038b41dabSmrg elxsi) 73138b41dabSmrg cpu=elxsi 73238b41dabSmrg vendor=elxsi 73338b41dabSmrg basic_os=${basic_os:-bsd} 73438b41dabSmrg ;; 73538b41dabSmrg fx2800) 73638b41dabSmrg cpu=i860 73738b41dabSmrg vendor=alliant 73838b41dabSmrg ;; 73938b41dabSmrg genix) 74038b41dabSmrg cpu=ns32k 74138b41dabSmrg vendor=ns 74238b41dabSmrg ;; 74338b41dabSmrg h3050r* | hiux*) 74438b41dabSmrg cpu=hppa1.1 74538b41dabSmrg vendor=hitachi 74638b41dabSmrg basic_os=hiuxwe2 74738b41dabSmrg ;; 74838b41dabSmrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 74938b41dabSmrg cpu=hppa1.0 75038b41dabSmrg vendor=hp 75138b41dabSmrg ;; 75238b41dabSmrg hp9k2[0-9][0-9] | hp9k31[0-9]) 75338b41dabSmrg cpu=m68000 75438b41dabSmrg vendor=hp 75538b41dabSmrg ;; 75638b41dabSmrg hp9k3[2-9][0-9]) 75738b41dabSmrg cpu=m68k 75838b41dabSmrg vendor=hp 75938b41dabSmrg ;; 76038b41dabSmrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 76138b41dabSmrg cpu=hppa1.0 76238b41dabSmrg vendor=hp 76338b41dabSmrg ;; 76438b41dabSmrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 76538b41dabSmrg cpu=hppa1.1 76638b41dabSmrg vendor=hp 76738b41dabSmrg ;; 76838b41dabSmrg hp9k78[0-9] | hp78[0-9]) 76938b41dabSmrg # FIXME: really hppa2.0-hp 77038b41dabSmrg cpu=hppa1.1 77138b41dabSmrg vendor=hp 77238b41dabSmrg ;; 77338b41dabSmrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 77438b41dabSmrg # FIXME: really hppa2.0-hp 77538b41dabSmrg cpu=hppa1.1 77638b41dabSmrg vendor=hp 77738b41dabSmrg ;; 77838b41dabSmrg hp9k8[0-9][13679] | hp8[0-9][13679]) 77938b41dabSmrg cpu=hppa1.1 78038b41dabSmrg vendor=hp 78138b41dabSmrg ;; 78238b41dabSmrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 78338b41dabSmrg cpu=hppa1.0 78438b41dabSmrg vendor=hp 78538b41dabSmrg ;; 78638b41dabSmrg i*86v32) 78738b41dabSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 78838b41dabSmrg vendor=pc 78938b41dabSmrg basic_os=sysv32 79038b41dabSmrg ;; 79138b41dabSmrg i*86v4*) 79238b41dabSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79338b41dabSmrg vendor=pc 79438b41dabSmrg basic_os=sysv4 79538b41dabSmrg ;; 79638b41dabSmrg i*86v) 79738b41dabSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79838b41dabSmrg vendor=pc 79938b41dabSmrg basic_os=sysv 80038b41dabSmrg ;; 80138b41dabSmrg i*86sol2) 80238b41dabSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 80338b41dabSmrg vendor=pc 80438b41dabSmrg basic_os=solaris2 80538b41dabSmrg ;; 80638b41dabSmrg j90 | j90-cray) 80738b41dabSmrg cpu=j90 80838b41dabSmrg vendor=cray 80938b41dabSmrg basic_os=${basic_os:-unicos} 81038b41dabSmrg ;; 81138b41dabSmrg iris | iris4d) 81238b41dabSmrg cpu=mips 81338b41dabSmrg vendor=sgi 81438b41dabSmrg case $basic_os in 81538b41dabSmrg irix*) 81638b41dabSmrg ;; 81738b41dabSmrg *) 81838b41dabSmrg basic_os=irix4 81938b41dabSmrg ;; 82038b41dabSmrg esac 82138b41dabSmrg ;; 82238b41dabSmrg miniframe) 82338b41dabSmrg cpu=m68000 82438b41dabSmrg vendor=convergent 82538b41dabSmrg ;; 82638b41dabSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 82738b41dabSmrg cpu=m68k 82838b41dabSmrg vendor=atari 82938b41dabSmrg basic_os=mint 83038b41dabSmrg ;; 83138b41dabSmrg news-3600 | risc-news) 83238b41dabSmrg cpu=mips 83338b41dabSmrg vendor=sony 83438b41dabSmrg basic_os=newsos 83538b41dabSmrg ;; 83638b41dabSmrg next | m*-next) 83738b41dabSmrg cpu=m68k 83838b41dabSmrg vendor=next 83938b41dabSmrg case $basic_os in 84038b41dabSmrg openstep*) 84138b41dabSmrg ;; 84238b41dabSmrg nextstep*) 84338b41dabSmrg ;; 84438b41dabSmrg ns2*) 84538b41dabSmrg basic_os=nextstep2 84638b41dabSmrg ;; 84738b41dabSmrg *) 84838b41dabSmrg basic_os=nextstep3 84938b41dabSmrg ;; 85038b41dabSmrg esac 85138b41dabSmrg ;; 85238b41dabSmrg np1) 85338b41dabSmrg cpu=np1 85438b41dabSmrg vendor=gould 85538b41dabSmrg ;; 85638b41dabSmrg op50n-* | op60c-*) 85738b41dabSmrg cpu=hppa1.1 85838b41dabSmrg vendor=oki 85938b41dabSmrg basic_os=proelf 86038b41dabSmrg ;; 86138b41dabSmrg pa-hitachi) 86238b41dabSmrg cpu=hppa1.1 86338b41dabSmrg vendor=hitachi 86438b41dabSmrg basic_os=hiuxwe2 86538b41dabSmrg ;; 86638b41dabSmrg pbd) 86738b41dabSmrg cpu=sparc 86838b41dabSmrg vendor=tti 86938b41dabSmrg ;; 87038b41dabSmrg pbb) 87138b41dabSmrg cpu=m68k 87238b41dabSmrg vendor=tti 87338b41dabSmrg ;; 87438b41dabSmrg pc532) 87538b41dabSmrg cpu=ns32k 87638b41dabSmrg vendor=pc532 87738b41dabSmrg ;; 87838b41dabSmrg pn) 87938b41dabSmrg cpu=pn 88038b41dabSmrg vendor=gould 88138b41dabSmrg ;; 88238b41dabSmrg power) 88338b41dabSmrg cpu=power 88438b41dabSmrg vendor=ibm 88538b41dabSmrg ;; 88638b41dabSmrg ps2) 88738b41dabSmrg cpu=i386 88838b41dabSmrg vendor=ibm 88938b41dabSmrg ;; 89038b41dabSmrg rm[46]00) 89138b41dabSmrg cpu=mips 89238b41dabSmrg vendor=siemens 89338b41dabSmrg ;; 89438b41dabSmrg rtpc | rtpc-*) 89538b41dabSmrg cpu=romp 89638b41dabSmrg vendor=ibm 89738b41dabSmrg ;; 89838b41dabSmrg sde) 89938b41dabSmrg cpu=mipsisa32 90038b41dabSmrg vendor=sde 90138b41dabSmrg basic_os=${basic_os:-elf} 90238b41dabSmrg ;; 90338b41dabSmrg simso-wrs) 90438b41dabSmrg cpu=sparclite 90538b41dabSmrg vendor=wrs 90638b41dabSmrg basic_os=vxworks 90738b41dabSmrg ;; 90838b41dabSmrg tower | tower-32) 90938b41dabSmrg cpu=m68k 91038b41dabSmrg vendor=ncr 91138b41dabSmrg ;; 91238b41dabSmrg vpp*|vx|vx-*) 91338b41dabSmrg cpu=f301 91438b41dabSmrg vendor=fujitsu 91538b41dabSmrg ;; 91638b41dabSmrg w65) 91738b41dabSmrg cpu=w65 91838b41dabSmrg vendor=wdc 91938b41dabSmrg ;; 92038b41dabSmrg w89k-*) 92138b41dabSmrg cpu=hppa1.1 92238b41dabSmrg vendor=winbond 92338b41dabSmrg basic_os=proelf 92438b41dabSmrg ;; 92538b41dabSmrg none) 92638b41dabSmrg cpu=none 92738b41dabSmrg vendor=none 92838b41dabSmrg ;; 92938b41dabSmrg leon|leon[3-9]) 93038b41dabSmrg cpu=sparc 93138b41dabSmrg vendor=$basic_machine 93238b41dabSmrg ;; 93338b41dabSmrg leon-*|leon[3-9]-*) 93438b41dabSmrg cpu=sparc 93538b41dabSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 93638b41dabSmrg ;; 93738b41dabSmrg 93838b41dabSmrg *-*) 93938b41dabSmrg # shellcheck disable=SC2162 94038b41dabSmrg saved_IFS=$IFS 94138b41dabSmrg IFS="-" read cpu vendor <<EOF 94238b41dabSmrg$basic_machine 94338b41dabSmrgEOF 94438b41dabSmrg IFS=$saved_IFS 94538b41dabSmrg ;; 94638b41dabSmrg # We use `pc' rather than `unknown' 94738b41dabSmrg # because (1) that's what they normally are, and 94838b41dabSmrg # (2) the word "unknown" tends to confuse beginning users. 94938b41dabSmrg i*86 | x86_64) 95038b41dabSmrg cpu=$basic_machine 95138b41dabSmrg vendor=pc 95238b41dabSmrg ;; 95338b41dabSmrg # These rules are duplicated from below for sake of the special case above; 95438b41dabSmrg # i.e. things that normalized to x86 arches should also default to "pc" 95538b41dabSmrg pc98) 95638b41dabSmrg cpu=i386 95738b41dabSmrg vendor=pc 95838b41dabSmrg ;; 95938b41dabSmrg x64 | amd64) 96038b41dabSmrg cpu=x86_64 96138b41dabSmrg vendor=pc 96238b41dabSmrg ;; 96338b41dabSmrg # Recognize the basic CPU types without company name. 96438b41dabSmrg *) 96538b41dabSmrg cpu=$basic_machine 96638b41dabSmrg vendor=unknown 96738b41dabSmrg ;; 96838b41dabSmrgesac 96938b41dabSmrg 97038b41dabSmrgunset -v basic_machine 97138b41dabSmrg 97238b41dabSmrg# Decode basic machines in the full and proper CPU-Company form. 97338b41dabSmrgcase $cpu-$vendor in 97438b41dabSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 97538b41dabSmrg # some cases the only manufacturer, in others, it is the most popular. 97638b41dabSmrg craynv-unknown) 97738b41dabSmrg vendor=cray 97838b41dabSmrg basic_os=${basic_os:-unicosmp} 97938b41dabSmrg ;; 98038b41dabSmrg c90-unknown | c90-cray) 98138b41dabSmrg vendor=cray 98238b41dabSmrg basic_os=${Basic_os:-unicos} 98338b41dabSmrg ;; 98438b41dabSmrg fx80-unknown) 98538b41dabSmrg vendor=alliant 98638b41dabSmrg ;; 98738b41dabSmrg romp-unknown) 98838b41dabSmrg vendor=ibm 98938b41dabSmrg ;; 99038b41dabSmrg mmix-unknown) 99138b41dabSmrg vendor=knuth 99238b41dabSmrg ;; 99338b41dabSmrg microblaze-unknown | microblazeel-unknown) 99438b41dabSmrg vendor=xilinx 99538b41dabSmrg ;; 99638b41dabSmrg rs6000-unknown) 99738b41dabSmrg vendor=ibm 99838b41dabSmrg ;; 99938b41dabSmrg vax-unknown) 100038b41dabSmrg vendor=dec 100138b41dabSmrg ;; 100238b41dabSmrg pdp11-unknown) 100338b41dabSmrg vendor=dec 100438b41dabSmrg ;; 100538b41dabSmrg we32k-unknown) 100638b41dabSmrg vendor=att 100738b41dabSmrg ;; 100838b41dabSmrg cydra-unknown) 100938b41dabSmrg vendor=cydrome 101038b41dabSmrg ;; 101138b41dabSmrg i370-ibm*) 101238b41dabSmrg vendor=ibm 101338b41dabSmrg ;; 101438b41dabSmrg orion-unknown) 101538b41dabSmrg vendor=highlevel 101638b41dabSmrg ;; 101738b41dabSmrg xps-unknown | xps100-unknown) 101838b41dabSmrg cpu=xps100 101938b41dabSmrg vendor=honeywell 102038b41dabSmrg ;; 102138b41dabSmrg 102238b41dabSmrg # Here we normalize CPU types with a missing or matching vendor 102338b41dabSmrg armh-unknown | armh-alt) 102438b41dabSmrg cpu=armv7l 102538b41dabSmrg vendor=alt 102638b41dabSmrg basic_os=${basic_os:-linux-gnueabihf} 102738b41dabSmrg ;; 102838b41dabSmrg dpx20-unknown | dpx20-bull) 102938b41dabSmrg cpu=rs6000 103038b41dabSmrg vendor=bull 103138b41dabSmrg basic_os=${basic_os:-bosx} 103238b41dabSmrg ;; 103338b41dabSmrg 103438b41dabSmrg # Here we normalize CPU types irrespective of the vendor 103538b41dabSmrg amd64-*) 103638b41dabSmrg cpu=x86_64 103738b41dabSmrg ;; 103838b41dabSmrg blackfin-*) 103938b41dabSmrg cpu=bfin 104038b41dabSmrg basic_os=linux 104138b41dabSmrg ;; 104238b41dabSmrg c54x-*) 104338b41dabSmrg cpu=tic54x 104438b41dabSmrg ;; 104538b41dabSmrg c55x-*) 104638b41dabSmrg cpu=tic55x 104738b41dabSmrg ;; 104838b41dabSmrg c6x-*) 104938b41dabSmrg cpu=tic6x 105038b41dabSmrg ;; 105138b41dabSmrg e500v[12]-*) 105238b41dabSmrg cpu=powerpc 105338b41dabSmrg basic_os=${basic_os}"spe" 105438b41dabSmrg ;; 105538b41dabSmrg mips3*-*) 105638b41dabSmrg cpu=mips64 105738b41dabSmrg ;; 105838b41dabSmrg ms1-*) 105938b41dabSmrg cpu=mt 106038b41dabSmrg ;; 106138b41dabSmrg m68knommu-*) 106238b41dabSmrg cpu=m68k 106338b41dabSmrg basic_os=linux 106438b41dabSmrg ;; 106538b41dabSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 106638b41dabSmrg cpu=s12z 106738b41dabSmrg ;; 106838b41dabSmrg openrisc-*) 106938b41dabSmrg cpu=or32 107038b41dabSmrg ;; 107138b41dabSmrg parisc-*) 107238b41dabSmrg cpu=hppa 107338b41dabSmrg basic_os=linux 107438b41dabSmrg ;; 107538b41dabSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 107638b41dabSmrg cpu=i586 107738b41dabSmrg ;; 107838b41dabSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) 107938b41dabSmrg cpu=i686 108038b41dabSmrg ;; 108138b41dabSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 108238b41dabSmrg cpu=i686 108338b41dabSmrg ;; 108438b41dabSmrg pentium4-*) 108538b41dabSmrg cpu=i786 108638b41dabSmrg ;; 108738b41dabSmrg pc98-*) 108838b41dabSmrg cpu=i386 108938b41dabSmrg ;; 109038b41dabSmrg ppc-* | ppcbe-*) 109138b41dabSmrg cpu=powerpc 109238b41dabSmrg ;; 109338b41dabSmrg ppcle-* | powerpclittle-*) 109438b41dabSmrg cpu=powerpcle 109538b41dabSmrg ;; 109638b41dabSmrg ppc64-*) 109738b41dabSmrg cpu=powerpc64 109838b41dabSmrg ;; 109938b41dabSmrg ppc64le-* | powerpc64little-*) 110038b41dabSmrg cpu=powerpc64le 110138b41dabSmrg ;; 110238b41dabSmrg sb1-*) 110338b41dabSmrg cpu=mipsisa64sb1 110438b41dabSmrg ;; 110538b41dabSmrg sb1el-*) 110638b41dabSmrg cpu=mipsisa64sb1el 110738b41dabSmrg ;; 110838b41dabSmrg sh5e[lb]-*) 110938b41dabSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 111038b41dabSmrg ;; 111138b41dabSmrg spur-*) 111238b41dabSmrg cpu=spur 111338b41dabSmrg ;; 111438b41dabSmrg strongarm-* | thumb-*) 111538b41dabSmrg cpu=arm 111638b41dabSmrg ;; 111738b41dabSmrg tx39-*) 111838b41dabSmrg cpu=mipstx39 111938b41dabSmrg ;; 112038b41dabSmrg tx39el-*) 112138b41dabSmrg cpu=mipstx39el 112238b41dabSmrg ;; 112338b41dabSmrg x64-*) 112438b41dabSmrg cpu=x86_64 112538b41dabSmrg ;; 112638b41dabSmrg xscale-* | xscalee[bl]-*) 112738b41dabSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 112838b41dabSmrg ;; 112938b41dabSmrg arm64-* | aarch64le-*) 113038b41dabSmrg cpu=aarch64 113138b41dabSmrg ;; 113238b41dabSmrg 113338b41dabSmrg # Recognize the canonical CPU Types that limit and/or modify the 113438b41dabSmrg # company names they are paired with. 113538b41dabSmrg cr16-*) 113638b41dabSmrg basic_os=${basic_os:-elf} 113738b41dabSmrg ;; 113838b41dabSmrg crisv32-* | etraxfs*-*) 113938b41dabSmrg cpu=crisv32 114038b41dabSmrg vendor=axis 114138b41dabSmrg ;; 114238b41dabSmrg cris-* | etrax*-*) 114338b41dabSmrg cpu=cris 114438b41dabSmrg vendor=axis 114538b41dabSmrg ;; 114638b41dabSmrg crx-*) 114738b41dabSmrg basic_os=${basic_os:-elf} 114838b41dabSmrg ;; 114938b41dabSmrg neo-tandem) 115038b41dabSmrg cpu=neo 115138b41dabSmrg vendor=tandem 115238b41dabSmrg ;; 115338b41dabSmrg nse-tandem) 115438b41dabSmrg cpu=nse 115538b41dabSmrg vendor=tandem 115638b41dabSmrg ;; 115738b41dabSmrg nsr-tandem) 115838b41dabSmrg cpu=nsr 115938b41dabSmrg vendor=tandem 116038b41dabSmrg ;; 116138b41dabSmrg nsv-tandem) 116238b41dabSmrg cpu=nsv 116338b41dabSmrg vendor=tandem 116438b41dabSmrg ;; 116538b41dabSmrg nsx-tandem) 116638b41dabSmrg cpu=nsx 116738b41dabSmrg vendor=tandem 116838b41dabSmrg ;; 116938b41dabSmrg mipsallegrexel-sony) 117038b41dabSmrg cpu=mipsallegrexel 117138b41dabSmrg vendor=sony 117238b41dabSmrg ;; 117338b41dabSmrg tile*-*) 117438b41dabSmrg basic_os=${basic_os:-linux-gnu} 117538b41dabSmrg ;; 117638b41dabSmrg 117738b41dabSmrg *) 117838b41dabSmrg # Recognize the canonical CPU types that are allowed with any 117938b41dabSmrg # company name. 118038b41dabSmrg case $cpu in 118138b41dabSmrg 1750a | 580 \ 118238b41dabSmrg | a29k \ 118338b41dabSmrg | aarch64 | aarch64_be \ 118438b41dabSmrg | abacus \ 118538b41dabSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 118638b41dabSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 118738b41dabSmrg | alphapca5[67] | alpha64pca5[67] \ 118838b41dabSmrg | am33_2.0 \ 118938b41dabSmrg | amdgcn \ 119038b41dabSmrg | arc | arceb | arc32 | arc64 \ 119138b41dabSmrg | arm | arm[lb]e | arme[lb] | armv* \ 119238b41dabSmrg | avr | avr32 \ 119338b41dabSmrg | asmjs \ 119438b41dabSmrg | ba \ 119538b41dabSmrg | be32 | be64 \ 119638b41dabSmrg | bfin | bpf | bs2000 \ 119738b41dabSmrg | c[123]* | c30 | [cjt]90 | c4x \ 119838b41dabSmrg | c8051 | clipper | craynv | csky | cydra \ 119938b41dabSmrg | d10v | d30v | dlx | dsp16xx \ 120038b41dabSmrg | e2k | elxsi | epiphany \ 120138b41dabSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 120238b41dabSmrg | h8300 | h8500 \ 120338b41dabSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 120438b41dabSmrg | hexagon \ 120538b41dabSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 120638b41dabSmrg | ip2k | iq2000 \ 120738b41dabSmrg | k1om \ 120838b41dabSmrg | le32 | le64 \ 120938b41dabSmrg | lm32 \ 121038b41dabSmrg | loongarch32 | loongarch64 \ 121138b41dabSmrg | m32c | m32r | m32rle \ 121238b41dabSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 121338b41dabSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 121438b41dabSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 121538b41dabSmrg | microblaze | microblazeel \ 121638b41dabSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 121738b41dabSmrg | mips16 \ 121838b41dabSmrg | mips64 | mips64eb | mips64el \ 121938b41dabSmrg | mips64octeon | mips64octeonel \ 122038b41dabSmrg | mips64orion | mips64orionel \ 122138b41dabSmrg | mips64r5900 | mips64r5900el \ 122238b41dabSmrg | mips64vr | mips64vrel \ 122338b41dabSmrg | mips64vr4100 | mips64vr4100el \ 122438b41dabSmrg | mips64vr4300 | mips64vr4300el \ 122538b41dabSmrg | mips64vr5000 | mips64vr5000el \ 122638b41dabSmrg | mips64vr5900 | mips64vr5900el \ 122738b41dabSmrg | mipsisa32 | mipsisa32el \ 122838b41dabSmrg | mipsisa32r2 | mipsisa32r2el \ 122938b41dabSmrg | mipsisa32r3 | mipsisa32r3el \ 123038b41dabSmrg | mipsisa32r5 | mipsisa32r5el \ 123138b41dabSmrg | mipsisa32r6 | mipsisa32r6el \ 123238b41dabSmrg | mipsisa64 | mipsisa64el \ 123338b41dabSmrg | mipsisa64r2 | mipsisa64r2el \ 123438b41dabSmrg | mipsisa64r3 | mipsisa64r3el \ 123538b41dabSmrg | mipsisa64r5 | mipsisa64r5el \ 123638b41dabSmrg | mipsisa64r6 | mipsisa64r6el \ 123738b41dabSmrg | mipsisa64sb1 | mipsisa64sb1el \ 123838b41dabSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 123938b41dabSmrg | mipsr5900 | mipsr5900el \ 124038b41dabSmrg | mipstx39 | mipstx39el \ 124138b41dabSmrg | mmix \ 124238b41dabSmrg | mn10200 | mn10300 \ 124338b41dabSmrg | moxie \ 124438b41dabSmrg | mt \ 124538b41dabSmrg | msp430 \ 124638b41dabSmrg | nds32 | nds32le | nds32be \ 124738b41dabSmrg | nfp \ 124838b41dabSmrg | nios | nios2 | nios2eb | nios2el \ 124938b41dabSmrg | none | np1 | ns16k | ns32k | nvptx \ 125038b41dabSmrg | open8 \ 125138b41dabSmrg | or1k* \ 125238b41dabSmrg | or32 \ 125338b41dabSmrg | orion \ 125438b41dabSmrg | picochip \ 125538b41dabSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 125638b41dabSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 125738b41dabSmrg | pru \ 125838b41dabSmrg | pyramid \ 125938b41dabSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 126038b41dabSmrg | rl78 | romp | rs6000 | rx \ 126138b41dabSmrg | s390 | s390x \ 126238b41dabSmrg | score \ 126338b41dabSmrg | sh | shl \ 126438b41dabSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 126538b41dabSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 126638b41dabSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 126738b41dabSmrg | sparclite \ 126838b41dabSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 126938b41dabSmrg | spu \ 127038b41dabSmrg | tahoe \ 127138b41dabSmrg | thumbv7* \ 127238b41dabSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 127338b41dabSmrg | tron \ 127438b41dabSmrg | ubicom32 \ 127538b41dabSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 127638b41dabSmrg | vax \ 127738b41dabSmrg | visium \ 127838b41dabSmrg | w65 \ 127938b41dabSmrg | wasm32 | wasm64 \ 128038b41dabSmrg | we32k \ 128138b41dabSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 128238b41dabSmrg | xstormy16 | xtensa* \ 128338b41dabSmrg | ymp \ 128438b41dabSmrg | z8k | z80) 128538b41dabSmrg ;; 128638b41dabSmrg 128738b41dabSmrg *) 128838b41dabSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 128938b41dabSmrg exit 1 129038b41dabSmrg ;; 129138b41dabSmrg esac 129238b41dabSmrg ;; 129338b41dabSmrgesac 129438b41dabSmrg 129538b41dabSmrg# Here we canonicalize certain aliases for manufacturers. 129638b41dabSmrgcase $vendor in 129738b41dabSmrg digital*) 129838b41dabSmrg vendor=dec 129938b41dabSmrg ;; 130038b41dabSmrg commodore*) 130138b41dabSmrg vendor=cbm 130238b41dabSmrg ;; 130338b41dabSmrg *) 130438b41dabSmrg ;; 130538b41dabSmrgesac 130638b41dabSmrg 130738b41dabSmrg# Decode manufacturer-specific aliases for certain operating systems. 130838b41dabSmrg 130938b41dabSmrgif test x$basic_os != x 131038b41dabSmrgthen 131138b41dabSmrg 131238b41dabSmrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 131338b41dabSmrg# set os. 131438b41dabSmrgcase $basic_os in 131538b41dabSmrg gnu/linux*) 131638b41dabSmrg kernel=linux 131738b41dabSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 131838b41dabSmrg ;; 131938b41dabSmrg os2-emx) 132038b41dabSmrg kernel=os2 132138b41dabSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 132238b41dabSmrg ;; 132338b41dabSmrg nto-qnx*) 132438b41dabSmrg kernel=nto 132538b41dabSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 132638b41dabSmrg ;; 132738b41dabSmrg *-*) 132838b41dabSmrg # shellcheck disable=SC2162 132938b41dabSmrg saved_IFS=$IFS 133038b41dabSmrg IFS="-" read kernel os <<EOF 133138b41dabSmrg$basic_os 133238b41dabSmrgEOF 133338b41dabSmrg IFS=$saved_IFS 133438b41dabSmrg ;; 133538b41dabSmrg # Default OS when just kernel was specified 133638b41dabSmrg nto*) 133738b41dabSmrg kernel=nto 133838b41dabSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 133938b41dabSmrg ;; 134038b41dabSmrg linux*) 134138b41dabSmrg kernel=linux 134238b41dabSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 134338b41dabSmrg ;; 134438b41dabSmrg managarm*) 134538b41dabSmrg kernel=managarm 134638b41dabSmrg os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 134738b41dabSmrg ;; 134838b41dabSmrg *) 134938b41dabSmrg kernel= 135038b41dabSmrg os=$basic_os 135138b41dabSmrg ;; 135238b41dabSmrgesac 135338b41dabSmrg 135438b41dabSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 135538b41dabSmrg# etc.) 135638b41dabSmrgcase $os in 135738b41dabSmrg # First match some system type aliases that might get confused 135838b41dabSmrg # with valid system types. 135938b41dabSmrg # solaris* is a basic system type, with this one exception. 136038b41dabSmrg auroraux) 136138b41dabSmrg os=auroraux 136238b41dabSmrg ;; 136338b41dabSmrg bluegene*) 136438b41dabSmrg os=cnk 136538b41dabSmrg ;; 136638b41dabSmrg solaris1 | solaris1.*) 136738b41dabSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 136838b41dabSmrg ;; 136938b41dabSmrg solaris) 137038b41dabSmrg os=solaris2 137138b41dabSmrg ;; 137238b41dabSmrg unixware*) 137338b41dabSmrg os=sysv4.2uw 137438b41dabSmrg ;; 137538b41dabSmrg # es1800 is here to avoid being matched by es* (a different OS) 137638b41dabSmrg es1800*) 137738b41dabSmrg os=ose 137838b41dabSmrg ;; 137938b41dabSmrg # Some version numbers need modification 138038b41dabSmrg chorusos*) 138138b41dabSmrg os=chorusos 138238b41dabSmrg ;; 138338b41dabSmrg isc) 138438b41dabSmrg os=isc2.2 138538b41dabSmrg ;; 138638b41dabSmrg sco6) 138738b41dabSmrg os=sco5v6 138838b41dabSmrg ;; 138938b41dabSmrg sco5) 139038b41dabSmrg os=sco3.2v5 139138b41dabSmrg ;; 139238b41dabSmrg sco4) 139338b41dabSmrg os=sco3.2v4 139438b41dabSmrg ;; 139538b41dabSmrg sco3.2.[4-9]*) 139638b41dabSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 139738b41dabSmrg ;; 139838b41dabSmrg sco*v* | scout) 139938b41dabSmrg # Don't match below 140038b41dabSmrg ;; 140138b41dabSmrg sco*) 140238b41dabSmrg os=sco3.2v2 140338b41dabSmrg ;; 140438b41dabSmrg psos*) 140538b41dabSmrg os=psos 140638b41dabSmrg ;; 140738b41dabSmrg qnx*) 140838b41dabSmrg os=qnx 140938b41dabSmrg ;; 141038b41dabSmrg hiux*) 141138b41dabSmrg os=hiuxwe2 141238b41dabSmrg ;; 141338b41dabSmrg lynx*178) 141438b41dabSmrg os=lynxos178 141538b41dabSmrg ;; 141638b41dabSmrg lynx*5) 141738b41dabSmrg os=lynxos5 141838b41dabSmrg ;; 141938b41dabSmrg lynxos*) 142038b41dabSmrg # don't get caught up in next wildcard 142138b41dabSmrg ;; 142238b41dabSmrg lynx*) 142338b41dabSmrg os=lynxos 142438b41dabSmrg ;; 142538b41dabSmrg mac[0-9]*) 142638b41dabSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 142738b41dabSmrg ;; 142838b41dabSmrg opened*) 142938b41dabSmrg os=openedition 143038b41dabSmrg ;; 143138b41dabSmrg os400*) 143238b41dabSmrg os=os400 143338b41dabSmrg ;; 143438b41dabSmrg sunos5*) 143538b41dabSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 143638b41dabSmrg ;; 143738b41dabSmrg sunos6*) 143838b41dabSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 143938b41dabSmrg ;; 144038b41dabSmrg wince*) 144138b41dabSmrg os=wince 144238b41dabSmrg ;; 144338b41dabSmrg utek*) 144438b41dabSmrg os=bsd 144538b41dabSmrg ;; 144638b41dabSmrg dynix*) 144738b41dabSmrg os=bsd 144838b41dabSmrg ;; 144938b41dabSmrg acis*) 145038b41dabSmrg os=aos 145138b41dabSmrg ;; 145238b41dabSmrg atheos*) 145338b41dabSmrg os=atheos 145438b41dabSmrg ;; 145538b41dabSmrg syllable*) 145638b41dabSmrg os=syllable 145738b41dabSmrg ;; 145838b41dabSmrg 386bsd) 145938b41dabSmrg os=bsd 146038b41dabSmrg ;; 146138b41dabSmrg ctix* | uts*) 146238b41dabSmrg os=sysv 146338b41dabSmrg ;; 146438b41dabSmrg nova*) 146538b41dabSmrg os=rtmk-nova 146638b41dabSmrg ;; 146738b41dabSmrg ns2) 146838b41dabSmrg os=nextstep2 146938b41dabSmrg ;; 147038b41dabSmrg # Preserve the version number of sinix5. 147138b41dabSmrg sinix5.*) 147238b41dabSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 147338b41dabSmrg ;; 147438b41dabSmrg sinix*) 147538b41dabSmrg os=sysv4 147638b41dabSmrg ;; 147738b41dabSmrg tpf*) 147838b41dabSmrg os=tpf 147938b41dabSmrg ;; 148038b41dabSmrg triton*) 148138b41dabSmrg os=sysv3 148238b41dabSmrg ;; 148338b41dabSmrg oss*) 148438b41dabSmrg os=sysv3 148538b41dabSmrg ;; 148638b41dabSmrg svr4*) 148738b41dabSmrg os=sysv4 148838b41dabSmrg ;; 148938b41dabSmrg svr3) 149038b41dabSmrg os=sysv3 149138b41dabSmrg ;; 149238b41dabSmrg sysvr4) 149338b41dabSmrg os=sysv4 149438b41dabSmrg ;; 149538b41dabSmrg ose*) 149638b41dabSmrg os=ose 149738b41dabSmrg ;; 149838b41dabSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 149938b41dabSmrg os=mint 150038b41dabSmrg ;; 150138b41dabSmrg dicos*) 150238b41dabSmrg os=dicos 150338b41dabSmrg ;; 150438b41dabSmrg pikeos*) 150538b41dabSmrg # Until real need of OS specific support for 150638b41dabSmrg # particular features comes up, bare metal 150738b41dabSmrg # configurations are quite functional. 150838b41dabSmrg case $cpu in 150938b41dabSmrg arm*) 151038b41dabSmrg os=eabi 151138b41dabSmrg ;; 151238b41dabSmrg *) 151338b41dabSmrg os=elf 151438b41dabSmrg ;; 151538b41dabSmrg esac 151638b41dabSmrg ;; 151738b41dabSmrg *) 151838b41dabSmrg # No normalization, but not necessarily accepted, that comes below. 151938b41dabSmrg ;; 152038b41dabSmrgesac 152138b41dabSmrg 152238b41dabSmrgelse 152338b41dabSmrg 152438b41dabSmrg# Here we handle the default operating systems that come with various machines. 152538b41dabSmrg# The value should be what the vendor currently ships out the door with their 152638b41dabSmrg# machine or put another way, the most popular os provided with the machine. 152738b41dabSmrg 152838b41dabSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 152938b41dabSmrg# "-sun"), then you have to tell the case statement up towards the top 153038b41dabSmrg# that MANUFACTURER isn't an operating system. Otherwise, code above 153138b41dabSmrg# will signal an error saying that MANUFACTURER isn't an operating 153238b41dabSmrg# system, and we'll never get to this point. 153338b41dabSmrg 153438b41dabSmrgkernel= 153538b41dabSmrgcase $cpu-$vendor in 153638b41dabSmrg score-*) 153738b41dabSmrg os=elf 153838b41dabSmrg ;; 153938b41dabSmrg spu-*) 154038b41dabSmrg os=elf 154138b41dabSmrg ;; 154238b41dabSmrg *-acorn) 154338b41dabSmrg os=riscix1.2 154438b41dabSmrg ;; 154538b41dabSmrg arm*-rebel) 154638b41dabSmrg kernel=linux 154738b41dabSmrg os=gnu 154838b41dabSmrg ;; 154938b41dabSmrg arm*-semi) 155038b41dabSmrg os=aout 155138b41dabSmrg ;; 155238b41dabSmrg c4x-* | tic4x-*) 155338b41dabSmrg os=coff 155438b41dabSmrg ;; 155538b41dabSmrg c8051-*) 155638b41dabSmrg os=elf 155738b41dabSmrg ;; 155838b41dabSmrg clipper-intergraph) 155938b41dabSmrg os=clix 156038b41dabSmrg ;; 156138b41dabSmrg hexagon-*) 156238b41dabSmrg os=elf 156338b41dabSmrg ;; 156438b41dabSmrg tic54x-*) 156538b41dabSmrg os=coff 156638b41dabSmrg ;; 156738b41dabSmrg tic55x-*) 156838b41dabSmrg os=coff 156938b41dabSmrg ;; 157038b41dabSmrg tic6x-*) 157138b41dabSmrg os=coff 157238b41dabSmrg ;; 157338b41dabSmrg # This must come before the *-dec entry. 157438b41dabSmrg pdp10-*) 157538b41dabSmrg os=tops20 157638b41dabSmrg ;; 157738b41dabSmrg pdp11-*) 157838b41dabSmrg os=none 157938b41dabSmrg ;; 158038b41dabSmrg *-dec | vax-*) 158138b41dabSmrg os=ultrix4.2 158238b41dabSmrg ;; 158338b41dabSmrg m68*-apollo) 158438b41dabSmrg os=domain 158538b41dabSmrg ;; 158638b41dabSmrg i386-sun) 158738b41dabSmrg os=sunos4.0.2 158838b41dabSmrg ;; 158938b41dabSmrg m68000-sun) 159038b41dabSmrg os=sunos3 159138b41dabSmrg ;; 159238b41dabSmrg m68*-cisco) 159338b41dabSmrg os=aout 159438b41dabSmrg ;; 159538b41dabSmrg mep-*) 159638b41dabSmrg os=elf 159738b41dabSmrg ;; 159838b41dabSmrg mips*-cisco) 159938b41dabSmrg os=elf 160038b41dabSmrg ;; 160138b41dabSmrg mips*-*) 160238b41dabSmrg os=elf 160338b41dabSmrg ;; 160438b41dabSmrg or32-*) 160538b41dabSmrg os=coff 160638b41dabSmrg ;; 160738b41dabSmrg *-tti) # must be before sparc entry or we get the wrong os. 160838b41dabSmrg os=sysv3 160938b41dabSmrg ;; 161038b41dabSmrg sparc-* | *-sun) 161138b41dabSmrg os=sunos4.1.1 161238b41dabSmrg ;; 161338b41dabSmrg pru-*) 161438b41dabSmrg os=elf 161538b41dabSmrg ;; 161638b41dabSmrg *-be) 161738b41dabSmrg os=beos 161838b41dabSmrg ;; 161938b41dabSmrg *-ibm) 162038b41dabSmrg os=aix 162138b41dabSmrg ;; 162238b41dabSmrg *-knuth) 162338b41dabSmrg os=mmixware 162438b41dabSmrg ;; 162538b41dabSmrg *-wec) 162638b41dabSmrg os=proelf 162738b41dabSmrg ;; 162838b41dabSmrg *-winbond) 162938b41dabSmrg os=proelf 163038b41dabSmrg ;; 163138b41dabSmrg *-oki) 163238b41dabSmrg os=proelf 163338b41dabSmrg ;; 163438b41dabSmrg *-hp) 163538b41dabSmrg os=hpux 163638b41dabSmrg ;; 163738b41dabSmrg *-hitachi) 163838b41dabSmrg os=hiux 163938b41dabSmrg ;; 164038b41dabSmrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 164138b41dabSmrg os=sysv 164238b41dabSmrg ;; 164338b41dabSmrg *-cbm) 164438b41dabSmrg os=amigaos 164538b41dabSmrg ;; 164638b41dabSmrg *-dg) 164738b41dabSmrg os=dgux 164838b41dabSmrg ;; 164938b41dabSmrg *-dolphin) 165038b41dabSmrg os=sysv3 165138b41dabSmrg ;; 165238b41dabSmrg m68k-ccur) 165338b41dabSmrg os=rtu 165438b41dabSmrg ;; 165538b41dabSmrg m88k-omron*) 165638b41dabSmrg os=luna 165738b41dabSmrg ;; 165838b41dabSmrg *-next) 165938b41dabSmrg os=nextstep 166038b41dabSmrg ;; 166138b41dabSmrg *-sequent) 166238b41dabSmrg os=ptx 166338b41dabSmrg ;; 166438b41dabSmrg *-crds) 166538b41dabSmrg os=unos 166638b41dabSmrg ;; 166738b41dabSmrg *-ns) 166838b41dabSmrg os=genix 166938b41dabSmrg ;; 167038b41dabSmrg i370-*) 167138b41dabSmrg os=mvs 167238b41dabSmrg ;; 167338b41dabSmrg *-gould) 167438b41dabSmrg os=sysv 167538b41dabSmrg ;; 167638b41dabSmrg *-highlevel) 167738b41dabSmrg os=bsd 167838b41dabSmrg ;; 167938b41dabSmrg *-encore) 168038b41dabSmrg os=bsd 168138b41dabSmrg ;; 168238b41dabSmrg *-sgi) 168338b41dabSmrg os=irix 168438b41dabSmrg ;; 168538b41dabSmrg *-siemens) 168638b41dabSmrg os=sysv4 168738b41dabSmrg ;; 168838b41dabSmrg *-masscomp) 168938b41dabSmrg os=rtu 169038b41dabSmrg ;; 169138b41dabSmrg f30[01]-fujitsu | f700-fujitsu) 169238b41dabSmrg os=uxpv 169338b41dabSmrg ;; 169438b41dabSmrg *-rom68k) 169538b41dabSmrg os=coff 169638b41dabSmrg ;; 169738b41dabSmrg *-*bug) 169838b41dabSmrg os=coff 169938b41dabSmrg ;; 170038b41dabSmrg *-apple) 170138b41dabSmrg os=macos 170238b41dabSmrg ;; 170338b41dabSmrg *-atari*) 170438b41dabSmrg os=mint 170538b41dabSmrg ;; 170638b41dabSmrg *-wrs) 170738b41dabSmrg os=vxworks 170838b41dabSmrg ;; 170938b41dabSmrg *) 171038b41dabSmrg os=none 171138b41dabSmrg ;; 171238b41dabSmrgesac 171338b41dabSmrg 171438b41dabSmrgfi 171538b41dabSmrg 171638b41dabSmrg# Now, validate our (potentially fixed-up) OS. 171738b41dabSmrgcase $os in 171838b41dabSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 171938b41dabSmrg musl* | newlib* | relibc* | uclibc*) 172038b41dabSmrg ;; 172138b41dabSmrg # Likewise for "kernel-abi" 172238b41dabSmrg eabi* | gnueabi*) 172338b41dabSmrg ;; 172438b41dabSmrg # VxWorks passes extra cpu info in the 4th filed. 172538b41dabSmrg simlinux | simwindows | spe) 172638b41dabSmrg ;; 172738b41dabSmrg # Now accept the basic system types. 172838b41dabSmrg # The portable systems comes first. 172938b41dabSmrg # Each alternative MUST end in a * to match a version number. 173038b41dabSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 173138b41dabSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 173238b41dabSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 173338b41dabSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 173438b41dabSmrg | hiux* | abug | nacl* | netware* | windows* \ 173538b41dabSmrg | os9* | macos* | osx* | ios* \ 173638b41dabSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 173738b41dabSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 173838b41dabSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 173938b41dabSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 174038b41dabSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 174138b41dabSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 174238b41dabSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 174338b41dabSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 174438b41dabSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 174538b41dabSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 174638b41dabSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 174738b41dabSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 174838b41dabSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 174938b41dabSmrg | midipix* | mingw32* | mingw64* | mint* \ 175038b41dabSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 175138b41dabSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 175238b41dabSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 175338b41dabSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 175438b41dabSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 175538b41dabSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 175638b41dabSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 175738b41dabSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 175838b41dabSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 175938b41dabSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 176038b41dabSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 176138b41dabSmrg | fiwix* | mlibc* ) 176238b41dabSmrg ;; 176338b41dabSmrg # This one is extra strict with allowed versions 176438b41dabSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 176538b41dabSmrg # Don't forget version if it is 3.2v4 or newer. 176638b41dabSmrg ;; 176738b41dabSmrg none) 176838b41dabSmrg ;; 176938b41dabSmrg kernel* ) 177038b41dabSmrg # Restricted further below 177138b41dabSmrg ;; 177238b41dabSmrg *) 177338b41dabSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 177438b41dabSmrg exit 1 177538b41dabSmrg ;; 177638b41dabSmrgesac 177738b41dabSmrg 177838b41dabSmrg# As a final step for OS-related things, validate the OS-kernel combination 177938b41dabSmrg# (given a valid OS), if there is a kernel. 178038b41dabSmrgcase $kernel-$os in 178138b41dabSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 178238b41dabSmrg | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) 178338b41dabSmrg ;; 178438b41dabSmrg uclinux-uclibc* ) 178538b41dabSmrg ;; 178638b41dabSmrg managarm-mlibc* | managarm-kernel* ) 178738b41dabSmrg ;; 178838b41dabSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) 178938b41dabSmrg # These are just libc implementations, not actual OSes, and thus 179038b41dabSmrg # require a kernel. 179138b41dabSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 179238b41dabSmrg exit 1 179338b41dabSmrg ;; 179438b41dabSmrg -kernel* ) 179538b41dabSmrg echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 179638b41dabSmrg exit 1 179738b41dabSmrg ;; 179838b41dabSmrg *-kernel* ) 179938b41dabSmrg echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 180038b41dabSmrg exit 1 180138b41dabSmrg ;; 180238b41dabSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 180338b41dabSmrg ;; 180438b41dabSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 180538b41dabSmrg ;; 180638b41dabSmrg nto-qnx*) 180738b41dabSmrg ;; 180838b41dabSmrg os2-emx) 180938b41dabSmrg ;; 181038b41dabSmrg *-eabi* | *-gnueabi*) 181138b41dabSmrg ;; 181238b41dabSmrg -*) 181338b41dabSmrg # Blank kernel with real OS is always fine. 181438b41dabSmrg ;; 181538b41dabSmrg *-*) 181638b41dabSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 181738b41dabSmrg exit 1 181838b41dabSmrg ;; 181938b41dabSmrgesac 182038b41dabSmrg 182138b41dabSmrg# Here we handle the case where we know the os, and the CPU type, but not the 182238b41dabSmrg# manufacturer. We pick the logical manufacturer. 182338b41dabSmrgcase $vendor in 182438b41dabSmrg unknown) 182538b41dabSmrg case $cpu-$os in 182638b41dabSmrg *-riscix*) 182738b41dabSmrg vendor=acorn 182838b41dabSmrg ;; 182938b41dabSmrg *-sunos*) 183038b41dabSmrg vendor=sun 183138b41dabSmrg ;; 183238b41dabSmrg *-cnk* | *-aix*) 183338b41dabSmrg vendor=ibm 183438b41dabSmrg ;; 183538b41dabSmrg *-beos*) 183638b41dabSmrg vendor=be 183738b41dabSmrg ;; 183838b41dabSmrg *-hpux*) 183938b41dabSmrg vendor=hp 184038b41dabSmrg ;; 184138b41dabSmrg *-mpeix*) 184238b41dabSmrg vendor=hp 184338b41dabSmrg ;; 184438b41dabSmrg *-hiux*) 184538b41dabSmrg vendor=hitachi 184638b41dabSmrg ;; 184738b41dabSmrg *-unos*) 184838b41dabSmrg vendor=crds 184938b41dabSmrg ;; 185038b41dabSmrg *-dgux*) 185138b41dabSmrg vendor=dg 185238b41dabSmrg ;; 185338b41dabSmrg *-luna*) 185438b41dabSmrg vendor=omron 185538b41dabSmrg ;; 185638b41dabSmrg *-genix*) 185738b41dabSmrg vendor=ns 185838b41dabSmrg ;; 185938b41dabSmrg *-clix*) 186038b41dabSmrg vendor=intergraph 186138b41dabSmrg ;; 186238b41dabSmrg *-mvs* | *-opened*) 186338b41dabSmrg vendor=ibm 186438b41dabSmrg ;; 186538b41dabSmrg *-os400*) 186638b41dabSmrg vendor=ibm 186738b41dabSmrg ;; 186838b41dabSmrg s390-* | s390x-*) 186938b41dabSmrg vendor=ibm 187038b41dabSmrg ;; 187138b41dabSmrg *-ptx*) 187238b41dabSmrg vendor=sequent 187338b41dabSmrg ;; 187438b41dabSmrg *-tpf*) 187538b41dabSmrg vendor=ibm 187638b41dabSmrg ;; 187738b41dabSmrg *-vxsim* | *-vxworks* | *-windiss*) 187838b41dabSmrg vendor=wrs 187938b41dabSmrg ;; 188038b41dabSmrg *-aux*) 188138b41dabSmrg vendor=apple 188238b41dabSmrg ;; 188338b41dabSmrg *-hms*) 188438b41dabSmrg vendor=hitachi 188538b41dabSmrg ;; 188638b41dabSmrg *-mpw* | *-macos*) 188738b41dabSmrg vendor=apple 188838b41dabSmrg ;; 188938b41dabSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 189038b41dabSmrg vendor=atari 189138b41dabSmrg ;; 189238b41dabSmrg *-vos*) 189338b41dabSmrg vendor=stratus 189438b41dabSmrg ;; 189538b41dabSmrg esac 189638b41dabSmrg ;; 189738b41dabSmrgesac 189838b41dabSmrg 189938b41dabSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 190038b41dabSmrgexit 190138b41dabSmrg 190238b41dabSmrg# Local variables: 190338b41dabSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 190438b41dabSmrg# time-stamp-start: "timestamp='" 190538b41dabSmrg# time-stamp-format: "%:y-%02m-%02d" 190638b41dabSmrg# time-stamp-end: "'" 190738b41dabSmrg# End: 1908