1492e1cfeSmrg#! /bin/sh 2492e1cfeSmrg# Configuration validation subroutine script. 331e5d586Smrg# Copyright 1992-2021 Free Software Foundation, Inc. 4492e1cfeSmrg 531e5d586Smrg# shellcheck disable=SC2006,SC2268 # see below for rationale 631e5d586Smrg 731e5d586Smrgtimestamp='2021-08-14' 8492e1cfeSmrg 91afad795Smrg# This file is free software; you can redistribute it and/or modify it 101afad795Smrg# under the terms of the GNU General Public License as published by 111afad795Smrg# the Free Software Foundation; either version 3 of the License, or 12492e1cfeSmrg# (at your option) any later version. 13492e1cfeSmrg# 141afad795Smrg# This program is distributed in the hope that it will be useful, but 151afad795Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 161afad795Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 171afad795Smrg# General Public License for more details. 18492e1cfeSmrg# 19492e1cfeSmrg# You should have received a copy of the GNU General Public License 20b78bb896Smrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 219e0146f7Smrg# 22492e1cfeSmrg# As a special exception to the GNU General Public License, if you 23492e1cfeSmrg# distribute this file as part of a program that contains a 24492e1cfeSmrg# configuration script generated by Autoconf, you may include it under 251afad795Smrg# the same distribution terms that you use for the rest of that 261afad795Smrg# program. This Exception is an additional permission under section 7 271afad795Smrg# of the GNU General Public License, version 3 ("GPLv3"). 28492e1cfeSmrg 299e0146f7Smrg 30b78bb896Smrg# Please send patches to <config-patches@gnu.org>. 31492e1cfeSmrg# 32492e1cfeSmrg# Configuration subroutine to validate and canonicalize a configuration type. 33492e1cfeSmrg# Supply the specified configuration type as an argument. 34492e1cfeSmrg# If it is invalid, we print an error message on stderr and exit with code 1. 35492e1cfeSmrg# Otherwise, we print the canonical config type on stdout and succeed. 36492e1cfeSmrg 379e0146f7Smrg# You can get the latest version of this script from: 3831e5d586Smrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 399e0146f7Smrg 40492e1cfeSmrg# This file is supposed to be the same for all GNU packages 41492e1cfeSmrg# and recognize all the CPU types, system types and aliases 42492e1cfeSmrg# that are meaningful with *any* GNU software. 43492e1cfeSmrg# Each package is responsible for reporting which valid configurations 44492e1cfeSmrg# it does not support. The user should be able to distinguish 45492e1cfeSmrg# a failure to support a valid configuration from a meaningless 46492e1cfeSmrg# configuration. 47492e1cfeSmrg 48492e1cfeSmrg# The goal of this file is to map all the various variations of a given 49492e1cfeSmrg# machine specification into a single specification in the form: 50492e1cfeSmrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51492e1cfeSmrg# or in some cases, the newer four-part form: 52492e1cfeSmrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53492e1cfeSmrg# It is wrong to echo any other type of specification. 54492e1cfeSmrg 5531e5d586Smrg# The "shellcheck disable" line above the timestamp inhibits complaints 5631e5d586Smrg# about features and limitations of the classic Bourne shell that were 5731e5d586Smrg# superseded or lifted in POSIX. However, this script identifies a wide 5831e5d586Smrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 5931e5d586Smrg# even some reasonably current systems (Solaris 10 as case-in-point) still 6031e5d586Smrg# have a pre-POSIX /bin/sh. 6131e5d586Smrg 62492e1cfeSmrgme=`echo "$0" | sed -e 's,.*/,,'` 63492e1cfeSmrg 64492e1cfeSmrgusage="\ 65b78bb896SmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66492e1cfeSmrg 67492e1cfeSmrgCanonicalize a configuration name. 68492e1cfeSmrg 69b78bb896SmrgOptions: 70492e1cfeSmrg -h, --help print this help, then exit 71492e1cfeSmrg -t, --time-stamp print date of last modification, then exit 72492e1cfeSmrg -v, --version print version number, then exit 73492e1cfeSmrg 74492e1cfeSmrgReport bugs and patches to <config-patches@gnu.org>." 75492e1cfeSmrg 76492e1cfeSmrgversion="\ 77492e1cfeSmrgGNU config.sub ($timestamp) 78492e1cfeSmrg 7931e5d586SmrgCopyright 1992-2021 Free Software Foundation, Inc. 80492e1cfeSmrg 81492e1cfeSmrgThis is free software; see the source for copying conditions. There is NO 82492e1cfeSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83492e1cfeSmrg 84492e1cfeSmrghelp=" 85492e1cfeSmrgTry \`$me --help' for more information." 86492e1cfeSmrg 87492e1cfeSmrg# Parse command line 88492e1cfeSmrgwhile test $# -gt 0 ; do 89492e1cfeSmrg case $1 in 90492e1cfeSmrg --time-stamp | --time* | -t ) 919e0146f7Smrg echo "$timestamp" ; exit ;; 92492e1cfeSmrg --version | -v ) 939e0146f7Smrg echo "$version" ; exit ;; 94492e1cfeSmrg --help | --h* | -h ) 959e0146f7Smrg echo "$usage"; exit ;; 96492e1cfeSmrg -- ) # Stop option processing 97492e1cfeSmrg shift; break ;; 98492e1cfeSmrg - ) # Use stdin as input. 99492e1cfeSmrg break ;; 100492e1cfeSmrg -* ) 10131e5d586Smrg echo "$me: invalid option $1$help" >&2 102492e1cfeSmrg exit 1 ;; 103492e1cfeSmrg 104492e1cfeSmrg *local*) 105492e1cfeSmrg # First pass through any local machine types. 106b78bb896Smrg echo "$1" 1079e0146f7Smrg exit ;; 108492e1cfeSmrg 109492e1cfeSmrg * ) 110492e1cfeSmrg break ;; 111492e1cfeSmrg esac 112492e1cfeSmrgdone 113492e1cfeSmrg 114492e1cfeSmrgcase $# in 115492e1cfeSmrg 0) echo "$me: missing argument$help" >&2 116492e1cfeSmrg exit 1;; 117492e1cfeSmrg 1) ;; 118492e1cfeSmrg *) echo "$me: too many arguments$help" >&2 119492e1cfeSmrg exit 1;; 120492e1cfeSmrgesac 121492e1cfeSmrg 12231e5d586Smrg# Split fields of configuration type 12331e5d586Smrg# shellcheck disable=SC2162 12431e5d586Smrgsaved_IFS=$IFS 12531e5d586SmrgIFS="-" read field1 field2 field3 field4 <<EOF 12631e5d586Smrg$1 12731e5d586SmrgEOF 12831e5d586SmrgIFS=$saved_IFS 129492e1cfeSmrg 13031e5d586Smrg# Separate into logical components for further validation 13131e5d586Smrgcase $1 in 13231e5d586Smrg *-*-*-*-*) 13331e5d586Smrg echo Invalid configuration \`"$1"\': more than four components >&2 13431e5d586Smrg exit 1 1351afad795Smrg ;; 13631e5d586Smrg *-*-*-*) 13731e5d586Smrg basic_machine=$field1-$field2 13831e5d586Smrg basic_os=$field3-$field4 139492e1cfeSmrg ;; 14031e5d586Smrg *-*-*) 14131e5d586Smrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 14231e5d586Smrg # parts 14331e5d586Smrg maybe_os=$field2-$field3 14431e5d586Smrg case $maybe_os in 14531e5d586Smrg nto-qnx* | linux-* | uclinux-uclibc* \ 14631e5d586Smrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 14731e5d586Smrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 14831e5d586Smrg | storm-chaos* | os2-emx* | rtmk-nova*) 14931e5d586Smrg basic_machine=$field1 15031e5d586Smrg basic_os=$maybe_os 15131e5d586Smrg ;; 15231e5d586Smrg android-linux) 15331e5d586Smrg basic_machine=$field1-unknown 15431e5d586Smrg basic_os=linux-android 15531e5d586Smrg ;; 15631e5d586Smrg *) 15731e5d586Smrg basic_machine=$field1-$field2 15831e5d586Smrg basic_os=$field3 15931e5d586Smrg ;; 16031e5d586Smrg esac 161492e1cfeSmrg ;; 16231e5d586Smrg *-*) 16331e5d586Smrg # A lone config we happen to match not fitting any pattern 16431e5d586Smrg case $field1-$field2 in 16531e5d586Smrg decstation-3100) 16631e5d586Smrg basic_machine=mips-dec 16731e5d586Smrg basic_os= 16831e5d586Smrg ;; 16931e5d586Smrg *-*) 17031e5d586Smrg # Second component is usually, but not always the OS 17131e5d586Smrg case $field2 in 17231e5d586Smrg # Prevent following clause from handling this valid os 17331e5d586Smrg sun*os*) 17431e5d586Smrg basic_machine=$field1 17531e5d586Smrg basic_os=$field2 17631e5d586Smrg ;; 17731e5d586Smrg zephyr*) 17831e5d586Smrg basic_machine=$field1-unknown 17931e5d586Smrg basic_os=$field2 18031e5d586Smrg ;; 18131e5d586Smrg # Manufacturers 18231e5d586Smrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 18331e5d586Smrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 18431e5d586Smrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 18531e5d586Smrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 18631e5d586Smrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 18731e5d586Smrg | ultra | tti* | harris | dolphin | highlevel | gould \ 18831e5d586Smrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 18931e5d586Smrg | microblaze* | sim | cisco \ 19031e5d586Smrg | oki | wec | wrs | winbond) 19131e5d586Smrg basic_machine=$field1-$field2 19231e5d586Smrg basic_os= 19331e5d586Smrg ;; 19431e5d586Smrg *) 19531e5d586Smrg basic_machine=$field1 19631e5d586Smrg basic_os=$field2 19731e5d586Smrg ;; 19831e5d586Smrg esac 19931e5d586Smrg ;; 20031e5d586Smrg esac 201492e1cfeSmrg ;; 20231e5d586Smrg *) 20331e5d586Smrg # Convert single-component short-hands not valid as part of 20431e5d586Smrg # multi-component configurations. 20531e5d586Smrg case $field1 in 20631e5d586Smrg 386bsd) 20731e5d586Smrg basic_machine=i386-pc 20831e5d586Smrg basic_os=bsd 20931e5d586Smrg ;; 21031e5d586Smrg a29khif) 21131e5d586Smrg basic_machine=a29k-amd 21231e5d586Smrg basic_os=udi 21331e5d586Smrg ;; 21431e5d586Smrg adobe68k) 21531e5d586Smrg basic_machine=m68010-adobe 21631e5d586Smrg basic_os=scout 21731e5d586Smrg ;; 21831e5d586Smrg alliant) 21931e5d586Smrg basic_machine=fx80-alliant 22031e5d586Smrg basic_os= 22131e5d586Smrg ;; 22231e5d586Smrg altos | altos3068) 22331e5d586Smrg basic_machine=m68k-altos 22431e5d586Smrg basic_os= 22531e5d586Smrg ;; 22631e5d586Smrg am29k) 22731e5d586Smrg basic_machine=a29k-none 22831e5d586Smrg basic_os=bsd 22931e5d586Smrg ;; 23031e5d586Smrg amdahl) 23131e5d586Smrg basic_machine=580-amdahl 23231e5d586Smrg basic_os=sysv 23331e5d586Smrg ;; 23431e5d586Smrg amiga) 23531e5d586Smrg basic_machine=m68k-unknown 23631e5d586Smrg basic_os= 23731e5d586Smrg ;; 23831e5d586Smrg amigaos | amigados) 23931e5d586Smrg basic_machine=m68k-unknown 24031e5d586Smrg basic_os=amigaos 24131e5d586Smrg ;; 24231e5d586Smrg amigaunix | amix) 24331e5d586Smrg basic_machine=m68k-unknown 24431e5d586Smrg basic_os=sysv4 24531e5d586Smrg ;; 24631e5d586Smrg apollo68) 24731e5d586Smrg basic_machine=m68k-apollo 24831e5d586Smrg basic_os=sysv 24931e5d586Smrg ;; 25031e5d586Smrg apollo68bsd) 25131e5d586Smrg basic_machine=m68k-apollo 25231e5d586Smrg basic_os=bsd 25331e5d586Smrg ;; 25431e5d586Smrg aros) 25531e5d586Smrg basic_machine=i386-pc 25631e5d586Smrg basic_os=aros 25731e5d586Smrg ;; 25831e5d586Smrg aux) 25931e5d586Smrg basic_machine=m68k-apple 26031e5d586Smrg basic_os=aux 26131e5d586Smrg ;; 26231e5d586Smrg balance) 26331e5d586Smrg basic_machine=ns32k-sequent 26431e5d586Smrg basic_os=dynix 26531e5d586Smrg ;; 26631e5d586Smrg blackfin) 26731e5d586Smrg basic_machine=bfin-unknown 26831e5d586Smrg basic_os=linux 26931e5d586Smrg ;; 27031e5d586Smrg cegcc) 27131e5d586Smrg basic_machine=arm-unknown 27231e5d586Smrg basic_os=cegcc 27331e5d586Smrg ;; 27431e5d586Smrg convex-c1) 27531e5d586Smrg basic_machine=c1-convex 27631e5d586Smrg basic_os=bsd 27731e5d586Smrg ;; 27831e5d586Smrg convex-c2) 27931e5d586Smrg basic_machine=c2-convex 28031e5d586Smrg basic_os=bsd 28131e5d586Smrg ;; 28231e5d586Smrg convex-c32) 28331e5d586Smrg basic_machine=c32-convex 28431e5d586Smrg basic_os=bsd 28531e5d586Smrg ;; 28631e5d586Smrg convex-c34) 28731e5d586Smrg basic_machine=c34-convex 28831e5d586Smrg basic_os=bsd 28931e5d586Smrg ;; 29031e5d586Smrg convex-c38) 29131e5d586Smrg basic_machine=c38-convex 29231e5d586Smrg basic_os=bsd 29331e5d586Smrg ;; 29431e5d586Smrg cray) 29531e5d586Smrg basic_machine=j90-cray 29631e5d586Smrg basic_os=unicos 29731e5d586Smrg ;; 29831e5d586Smrg crds | unos) 29931e5d586Smrg basic_machine=m68k-crds 30031e5d586Smrg basic_os= 30131e5d586Smrg ;; 30231e5d586Smrg da30) 30331e5d586Smrg basic_machine=m68k-da30 30431e5d586Smrg basic_os= 30531e5d586Smrg ;; 30631e5d586Smrg decstation | pmax | pmin | dec3100 | decstatn) 30731e5d586Smrg basic_machine=mips-dec 30831e5d586Smrg basic_os= 30931e5d586Smrg ;; 31031e5d586Smrg delta88) 31131e5d586Smrg basic_machine=m88k-motorola 31231e5d586Smrg basic_os=sysv3 31331e5d586Smrg ;; 31431e5d586Smrg dicos) 31531e5d586Smrg basic_machine=i686-pc 31631e5d586Smrg basic_os=dicos 31731e5d586Smrg ;; 31831e5d586Smrg djgpp) 31931e5d586Smrg basic_machine=i586-pc 32031e5d586Smrg basic_os=msdosdjgpp 32131e5d586Smrg ;; 32231e5d586Smrg ebmon29k) 32331e5d586Smrg basic_machine=a29k-amd 32431e5d586Smrg basic_os=ebmon 32531e5d586Smrg ;; 32631e5d586Smrg es1800 | OSE68k | ose68k | ose | OSE) 32731e5d586Smrg basic_machine=m68k-ericsson 32831e5d586Smrg basic_os=ose 32931e5d586Smrg ;; 33031e5d586Smrg gmicro) 33131e5d586Smrg basic_machine=tron-gmicro 33231e5d586Smrg basic_os=sysv 33331e5d586Smrg ;; 33431e5d586Smrg go32) 33531e5d586Smrg basic_machine=i386-pc 33631e5d586Smrg basic_os=go32 33731e5d586Smrg ;; 33831e5d586Smrg h8300hms) 33931e5d586Smrg basic_machine=h8300-hitachi 34031e5d586Smrg basic_os=hms 34131e5d586Smrg ;; 34231e5d586Smrg h8300xray) 34331e5d586Smrg basic_machine=h8300-hitachi 34431e5d586Smrg basic_os=xray 34531e5d586Smrg ;; 34631e5d586Smrg h8500hms) 34731e5d586Smrg basic_machine=h8500-hitachi 34831e5d586Smrg basic_os=hms 34931e5d586Smrg ;; 35031e5d586Smrg harris) 35131e5d586Smrg basic_machine=m88k-harris 35231e5d586Smrg basic_os=sysv3 35331e5d586Smrg ;; 35431e5d586Smrg hp300 | hp300hpux) 35531e5d586Smrg basic_machine=m68k-hp 35631e5d586Smrg basic_os=hpux 35731e5d586Smrg ;; 35831e5d586Smrg hp300bsd) 35931e5d586Smrg basic_machine=m68k-hp 36031e5d586Smrg basic_os=bsd 36131e5d586Smrg ;; 36231e5d586Smrg hppaosf) 36331e5d586Smrg basic_machine=hppa1.1-hp 36431e5d586Smrg basic_os=osf 36531e5d586Smrg ;; 36631e5d586Smrg hppro) 36731e5d586Smrg basic_machine=hppa1.1-hp 36831e5d586Smrg basic_os=proelf 36931e5d586Smrg ;; 37031e5d586Smrg i386mach) 37131e5d586Smrg basic_machine=i386-mach 37231e5d586Smrg basic_os=mach 37331e5d586Smrg ;; 37431e5d586Smrg isi68 | isi) 37531e5d586Smrg basic_machine=m68k-isi 37631e5d586Smrg basic_os=sysv 37731e5d586Smrg ;; 37831e5d586Smrg m68knommu) 37931e5d586Smrg basic_machine=m68k-unknown 38031e5d586Smrg basic_os=linux 38131e5d586Smrg ;; 38231e5d586Smrg magnum | m3230) 38331e5d586Smrg basic_machine=mips-mips 38431e5d586Smrg basic_os=sysv 38531e5d586Smrg ;; 38631e5d586Smrg merlin) 38731e5d586Smrg basic_machine=ns32k-utek 38831e5d586Smrg basic_os=sysv 38931e5d586Smrg ;; 39031e5d586Smrg mingw64) 39131e5d586Smrg basic_machine=x86_64-pc 39231e5d586Smrg basic_os=mingw64 39331e5d586Smrg ;; 39431e5d586Smrg mingw32) 39531e5d586Smrg basic_machine=i686-pc 39631e5d586Smrg basic_os=mingw32 39731e5d586Smrg ;; 39831e5d586Smrg mingw32ce) 39931e5d586Smrg basic_machine=arm-unknown 40031e5d586Smrg basic_os=mingw32ce 40131e5d586Smrg ;; 40231e5d586Smrg monitor) 40331e5d586Smrg basic_machine=m68k-rom68k 40431e5d586Smrg basic_os=coff 40531e5d586Smrg ;; 40631e5d586Smrg morphos) 40731e5d586Smrg basic_machine=powerpc-unknown 40831e5d586Smrg basic_os=morphos 40931e5d586Smrg ;; 41031e5d586Smrg moxiebox) 41131e5d586Smrg basic_machine=moxie-unknown 41231e5d586Smrg basic_os=moxiebox 41331e5d586Smrg ;; 41431e5d586Smrg msdos) 41531e5d586Smrg basic_machine=i386-pc 41631e5d586Smrg basic_os=msdos 41731e5d586Smrg ;; 41831e5d586Smrg msys) 41931e5d586Smrg basic_machine=i686-pc 42031e5d586Smrg basic_os=msys 42131e5d586Smrg ;; 42231e5d586Smrg mvs) 42331e5d586Smrg basic_machine=i370-ibm 42431e5d586Smrg basic_os=mvs 42531e5d586Smrg ;; 42631e5d586Smrg nacl) 42731e5d586Smrg basic_machine=le32-unknown 42831e5d586Smrg basic_os=nacl 42931e5d586Smrg ;; 43031e5d586Smrg ncr3000) 43131e5d586Smrg basic_machine=i486-ncr 43231e5d586Smrg basic_os=sysv4 43331e5d586Smrg ;; 43431e5d586Smrg netbsd386) 43531e5d586Smrg basic_machine=i386-pc 43631e5d586Smrg basic_os=netbsd 43731e5d586Smrg ;; 43831e5d586Smrg netwinder) 43931e5d586Smrg basic_machine=armv4l-rebel 44031e5d586Smrg basic_os=linux 44131e5d586Smrg ;; 44231e5d586Smrg news | news700 | news800 | news900) 44331e5d586Smrg basic_machine=m68k-sony 44431e5d586Smrg basic_os=newsos 44531e5d586Smrg ;; 44631e5d586Smrg news1000) 44731e5d586Smrg basic_machine=m68030-sony 44831e5d586Smrg basic_os=newsos 44931e5d586Smrg ;; 45031e5d586Smrg necv70) 45131e5d586Smrg basic_machine=v70-nec 45231e5d586Smrg basic_os=sysv 45331e5d586Smrg ;; 45431e5d586Smrg nh3000) 45531e5d586Smrg basic_machine=m68k-harris 45631e5d586Smrg basic_os=cxux 45731e5d586Smrg ;; 45831e5d586Smrg nh[45]000) 45931e5d586Smrg basic_machine=m88k-harris 46031e5d586Smrg basic_os=cxux 46131e5d586Smrg ;; 46231e5d586Smrg nindy960) 46331e5d586Smrg basic_machine=i960-intel 46431e5d586Smrg basic_os=nindy 46531e5d586Smrg ;; 46631e5d586Smrg mon960) 46731e5d586Smrg basic_machine=i960-intel 46831e5d586Smrg basic_os=mon960 46931e5d586Smrg ;; 47031e5d586Smrg nonstopux) 47131e5d586Smrg basic_machine=mips-compaq 47231e5d586Smrg basic_os=nonstopux 47331e5d586Smrg ;; 47431e5d586Smrg os400) 47531e5d586Smrg basic_machine=powerpc-ibm 47631e5d586Smrg basic_os=os400 47731e5d586Smrg ;; 47831e5d586Smrg OSE68000 | ose68000) 47931e5d586Smrg basic_machine=m68000-ericsson 48031e5d586Smrg basic_os=ose 48131e5d586Smrg ;; 48231e5d586Smrg os68k) 48331e5d586Smrg basic_machine=m68k-none 48431e5d586Smrg basic_os=os68k 48531e5d586Smrg ;; 48631e5d586Smrg paragon) 48731e5d586Smrg basic_machine=i860-intel 48831e5d586Smrg basic_os=osf 48931e5d586Smrg ;; 49031e5d586Smrg parisc) 49131e5d586Smrg basic_machine=hppa-unknown 49231e5d586Smrg basic_os=linux 49331e5d586Smrg ;; 49431e5d586Smrg psp) 49531e5d586Smrg basic_machine=mipsallegrexel-sony 49631e5d586Smrg basic_os=psp 49731e5d586Smrg ;; 49831e5d586Smrg pw32) 49931e5d586Smrg basic_machine=i586-unknown 50031e5d586Smrg basic_os=pw32 50131e5d586Smrg ;; 50231e5d586Smrg rdos | rdos64) 50331e5d586Smrg basic_machine=x86_64-pc 50431e5d586Smrg basic_os=rdos 50531e5d586Smrg ;; 50631e5d586Smrg rdos32) 50731e5d586Smrg basic_machine=i386-pc 50831e5d586Smrg basic_os=rdos 50931e5d586Smrg ;; 51031e5d586Smrg rom68k) 51131e5d586Smrg basic_machine=m68k-rom68k 51231e5d586Smrg basic_os=coff 51331e5d586Smrg ;; 51431e5d586Smrg sa29200) 51531e5d586Smrg basic_machine=a29k-amd 51631e5d586Smrg basic_os=udi 51731e5d586Smrg ;; 51831e5d586Smrg sei) 51931e5d586Smrg basic_machine=mips-sei 52031e5d586Smrg basic_os=seiux 52131e5d586Smrg ;; 52231e5d586Smrg sequent) 52331e5d586Smrg basic_machine=i386-sequent 52431e5d586Smrg basic_os= 52531e5d586Smrg ;; 52631e5d586Smrg sps7) 52731e5d586Smrg basic_machine=m68k-bull 52831e5d586Smrg basic_os=sysv2 52931e5d586Smrg ;; 53031e5d586Smrg st2000) 53131e5d586Smrg basic_machine=m68k-tandem 53231e5d586Smrg basic_os= 53331e5d586Smrg ;; 53431e5d586Smrg stratus) 53531e5d586Smrg basic_machine=i860-stratus 53631e5d586Smrg basic_os=sysv4 53731e5d586Smrg ;; 53831e5d586Smrg sun2) 53931e5d586Smrg basic_machine=m68000-sun 54031e5d586Smrg basic_os= 54131e5d586Smrg ;; 54231e5d586Smrg sun2os3) 54331e5d586Smrg basic_machine=m68000-sun 54431e5d586Smrg basic_os=sunos3 54531e5d586Smrg ;; 54631e5d586Smrg sun2os4) 54731e5d586Smrg basic_machine=m68000-sun 54831e5d586Smrg basic_os=sunos4 54931e5d586Smrg ;; 55031e5d586Smrg sun3) 55131e5d586Smrg basic_machine=m68k-sun 55231e5d586Smrg basic_os= 55331e5d586Smrg ;; 55431e5d586Smrg sun3os3) 55531e5d586Smrg basic_machine=m68k-sun 55631e5d586Smrg basic_os=sunos3 55731e5d586Smrg ;; 55831e5d586Smrg sun3os4) 55931e5d586Smrg basic_machine=m68k-sun 56031e5d586Smrg basic_os=sunos4 56131e5d586Smrg ;; 56231e5d586Smrg sun4) 56331e5d586Smrg basic_machine=sparc-sun 56431e5d586Smrg basic_os= 56531e5d586Smrg ;; 56631e5d586Smrg sun4os3) 56731e5d586Smrg basic_machine=sparc-sun 56831e5d586Smrg basic_os=sunos3 56931e5d586Smrg ;; 57031e5d586Smrg sun4os4) 57131e5d586Smrg basic_machine=sparc-sun 57231e5d586Smrg basic_os=sunos4 57331e5d586Smrg ;; 57431e5d586Smrg sun4sol2) 57531e5d586Smrg basic_machine=sparc-sun 57631e5d586Smrg basic_os=solaris2 57731e5d586Smrg ;; 57831e5d586Smrg sun386 | sun386i | roadrunner) 57931e5d586Smrg basic_machine=i386-sun 58031e5d586Smrg basic_os= 58131e5d586Smrg ;; 58231e5d586Smrg sv1) 58331e5d586Smrg basic_machine=sv1-cray 58431e5d586Smrg basic_os=unicos 58531e5d586Smrg ;; 58631e5d586Smrg symmetry) 58731e5d586Smrg basic_machine=i386-sequent 58831e5d586Smrg basic_os=dynix 58931e5d586Smrg ;; 59031e5d586Smrg t3e) 59131e5d586Smrg basic_machine=alphaev5-cray 59231e5d586Smrg basic_os=unicos 59331e5d586Smrg ;; 59431e5d586Smrg t90) 59531e5d586Smrg basic_machine=t90-cray 59631e5d586Smrg basic_os=unicos 59731e5d586Smrg ;; 59831e5d586Smrg toad1) 59931e5d586Smrg basic_machine=pdp10-xkl 60031e5d586Smrg basic_os=tops20 60131e5d586Smrg ;; 60231e5d586Smrg tpf) 60331e5d586Smrg basic_machine=s390x-ibm 60431e5d586Smrg basic_os=tpf 60531e5d586Smrg ;; 60631e5d586Smrg udi29k) 60731e5d586Smrg basic_machine=a29k-amd 60831e5d586Smrg basic_os=udi 60931e5d586Smrg ;; 61031e5d586Smrg ultra3) 61131e5d586Smrg basic_machine=a29k-nyu 61231e5d586Smrg basic_os=sym1 61331e5d586Smrg ;; 61431e5d586Smrg v810 | necv810) 61531e5d586Smrg basic_machine=v810-nec 61631e5d586Smrg basic_os=none 61731e5d586Smrg ;; 61831e5d586Smrg vaxv) 61931e5d586Smrg basic_machine=vax-dec 62031e5d586Smrg basic_os=sysv 62131e5d586Smrg ;; 62231e5d586Smrg vms) 62331e5d586Smrg basic_machine=vax-dec 62431e5d586Smrg basic_os=vms 62531e5d586Smrg ;; 62631e5d586Smrg vsta) 62731e5d586Smrg basic_machine=i386-pc 62831e5d586Smrg basic_os=vsta 62931e5d586Smrg ;; 63031e5d586Smrg vxworks960) 63131e5d586Smrg basic_machine=i960-wrs 63231e5d586Smrg basic_os=vxworks 63331e5d586Smrg ;; 63431e5d586Smrg vxworks68) 63531e5d586Smrg basic_machine=m68k-wrs 63631e5d586Smrg basic_os=vxworks 63731e5d586Smrg ;; 63831e5d586Smrg vxworks29k) 63931e5d586Smrg basic_machine=a29k-wrs 64031e5d586Smrg basic_os=vxworks 64131e5d586Smrg ;; 64231e5d586Smrg xbox) 64331e5d586Smrg basic_machine=i686-pc 64431e5d586Smrg basic_os=mingw32 64531e5d586Smrg ;; 64631e5d586Smrg ymp) 64731e5d586Smrg basic_machine=ymp-cray 64831e5d586Smrg basic_os=unicos 64931e5d586Smrg ;; 65031e5d586Smrg *) 65131e5d586Smrg basic_machine=$1 65231e5d586Smrg basic_os= 65331e5d586Smrg ;; 65431e5d586Smrg esac 655492e1cfeSmrg ;; 656492e1cfeSmrgesac 657492e1cfeSmrg 65831e5d586Smrg# Decode 1-component or ad-hoc basic machines 659492e1cfeSmrgcase $basic_machine in 66031e5d586Smrg # Here we handle the default manufacturer of certain CPU types. It is in 66131e5d586Smrg # some cases the only manufacturer, in others, it is the most popular. 66231e5d586Smrg w89k) 66331e5d586Smrg cpu=hppa1.1 66431e5d586Smrg vendor=winbond 665b78bb896Smrg ;; 66631e5d586Smrg op50n) 66731e5d586Smrg cpu=hppa1.1 66831e5d586Smrg vendor=oki 669492e1cfeSmrg ;; 67031e5d586Smrg op60c) 67131e5d586Smrg cpu=hppa1.1 67231e5d586Smrg vendor=oki 673492e1cfeSmrg ;; 67431e5d586Smrg ibm*) 67531e5d586Smrg cpu=i370 67631e5d586Smrg vendor=ibm 6779e0146f7Smrg ;; 67831e5d586Smrg orion105) 67931e5d586Smrg cpu=clipper 68031e5d586Smrg vendor=highlevel 6811afad795Smrg ;; 68231e5d586Smrg mac | mpw | mac-mpw) 68331e5d586Smrg cpu=m68k 68431e5d586Smrg vendor=apple 6851afad795Smrg ;; 68631e5d586Smrg pmac | pmac-mpw) 68731e5d586Smrg cpu=powerpc 68831e5d586Smrg vendor=apple 6891afad795Smrg ;; 6901afad795Smrg 691492e1cfeSmrg # Recognize the various machine names and aliases which stand 692492e1cfeSmrg # for a CPU type and a company and sometimes even an OS. 693492e1cfeSmrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 69431e5d586Smrg cpu=m68000 69531e5d586Smrg vendor=att 696492e1cfeSmrg ;; 697492e1cfeSmrg 3b*) 69831e5d586Smrg cpu=we32k 69931e5d586Smrg vendor=att 7009e0146f7Smrg ;; 7019e0146f7Smrg bluegene*) 70231e5d586Smrg cpu=powerpc 70331e5d586Smrg vendor=ibm 70431e5d586Smrg basic_os=cnk 705492e1cfeSmrg ;; 706492e1cfeSmrg decsystem10* | dec10*) 70731e5d586Smrg cpu=pdp10 70831e5d586Smrg vendor=dec 70931e5d586Smrg basic_os=tops10 710492e1cfeSmrg ;; 711492e1cfeSmrg decsystem20* | dec20*) 71231e5d586Smrg cpu=pdp10 71331e5d586Smrg vendor=dec 71431e5d586Smrg basic_os=tops20 715492e1cfeSmrg ;; 716492e1cfeSmrg delta | 3300 | motorola-3300 | motorola-delta \ 717492e1cfeSmrg | 3300-motorola | delta-motorola) 71831e5d586Smrg cpu=m68k 71931e5d586Smrg vendor=motorola 720492e1cfeSmrg ;; 721b78bb896Smrg dpx2*) 72231e5d586Smrg cpu=m68k 72331e5d586Smrg vendor=bull 72431e5d586Smrg basic_os=sysv3 725492e1cfeSmrg ;; 726492e1cfeSmrg encore | umax | mmax) 72731e5d586Smrg cpu=ns32k 72831e5d586Smrg vendor=encore 729492e1cfeSmrg ;; 73031e5d586Smrg elxsi) 73131e5d586Smrg cpu=elxsi 73231e5d586Smrg vendor=elxsi 73331e5d586Smrg basic_os=${basic_os:-bsd} 734492e1cfeSmrg ;; 735492e1cfeSmrg fx2800) 73631e5d586Smrg cpu=i860 73731e5d586Smrg vendor=alliant 738492e1cfeSmrg ;; 739492e1cfeSmrg genix) 74031e5d586Smrg cpu=ns32k 74131e5d586Smrg vendor=ns 742492e1cfeSmrg ;; 743492e1cfeSmrg h3050r* | hiux*) 74431e5d586Smrg cpu=hppa1.1 74531e5d586Smrg vendor=hitachi 74631e5d586Smrg basic_os=hiuxwe2 747492e1cfeSmrg ;; 748492e1cfeSmrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 74931e5d586Smrg cpu=hppa1.0 75031e5d586Smrg vendor=hp 751492e1cfeSmrg ;; 752492e1cfeSmrg hp9k2[0-9][0-9] | hp9k31[0-9]) 75331e5d586Smrg cpu=m68000 75431e5d586Smrg vendor=hp 755492e1cfeSmrg ;; 756492e1cfeSmrg hp9k3[2-9][0-9]) 75731e5d586Smrg cpu=m68k 75831e5d586Smrg vendor=hp 759492e1cfeSmrg ;; 760492e1cfeSmrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 76131e5d586Smrg cpu=hppa1.0 76231e5d586Smrg vendor=hp 763492e1cfeSmrg ;; 764492e1cfeSmrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 76531e5d586Smrg cpu=hppa1.1 76631e5d586Smrg vendor=hp 767492e1cfeSmrg ;; 768492e1cfeSmrg hp9k78[0-9] | hp78[0-9]) 769492e1cfeSmrg # FIXME: really hppa2.0-hp 77031e5d586Smrg cpu=hppa1.1 77131e5d586Smrg vendor=hp 772492e1cfeSmrg ;; 773492e1cfeSmrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 774492e1cfeSmrg # FIXME: really hppa2.0-hp 77531e5d586Smrg cpu=hppa1.1 77631e5d586Smrg vendor=hp 777492e1cfeSmrg ;; 778492e1cfeSmrg hp9k8[0-9][13679] | hp8[0-9][13679]) 77931e5d586Smrg cpu=hppa1.1 78031e5d586Smrg vendor=hp 781492e1cfeSmrg ;; 782492e1cfeSmrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 78331e5d586Smrg cpu=hppa1.0 78431e5d586Smrg vendor=hp 785492e1cfeSmrg ;; 786492e1cfeSmrg i*86v32) 78731e5d586Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 78831e5d586Smrg vendor=pc 78931e5d586Smrg basic_os=sysv32 790492e1cfeSmrg ;; 791492e1cfeSmrg i*86v4*) 79231e5d586Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79331e5d586Smrg vendor=pc 79431e5d586Smrg basic_os=sysv4 795492e1cfeSmrg ;; 796492e1cfeSmrg i*86v) 79731e5d586Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 79831e5d586Smrg vendor=pc 79931e5d586Smrg basic_os=sysv 800492e1cfeSmrg ;; 801492e1cfeSmrg i*86sol2) 80231e5d586Smrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 80331e5d586Smrg vendor=pc 80431e5d586Smrg basic_os=solaris2 805492e1cfeSmrg ;; 80631e5d586Smrg j90 | j90-cray) 80731e5d586Smrg cpu=j90 80831e5d586Smrg vendor=cray 80931e5d586Smrg basic_os=${basic_os:-unicos} 810492e1cfeSmrg ;; 811492e1cfeSmrg iris | iris4d) 81231e5d586Smrg cpu=mips 81331e5d586Smrg vendor=sgi 81431e5d586Smrg case $basic_os in 81531e5d586Smrg irix*) 816492e1cfeSmrg ;; 817492e1cfeSmrg *) 81831e5d586Smrg basic_os=irix4 819492e1cfeSmrg ;; 820492e1cfeSmrg esac 821492e1cfeSmrg ;; 822492e1cfeSmrg miniframe) 82331e5d586Smrg cpu=m68000 82431e5d586Smrg vendor=convergent 825492e1cfeSmrg ;; 82631e5d586Smrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 82731e5d586Smrg cpu=m68k 82831e5d586Smrg vendor=atari 82931e5d586Smrg basic_os=mint 830492e1cfeSmrg ;; 831492e1cfeSmrg news-3600 | risc-news) 83231e5d586Smrg cpu=mips 83331e5d586Smrg vendor=sony 83431e5d586Smrg basic_os=newsos 835492e1cfeSmrg ;; 836b78bb896Smrg next | m*-next) 83731e5d586Smrg cpu=m68k 83831e5d586Smrg vendor=next 83931e5d586Smrg case $basic_os in 84031e5d586Smrg openstep*) 84131e5d586Smrg ;; 84231e5d586Smrg nextstep*) 843492e1cfeSmrg ;; 84431e5d586Smrg ns2*) 84531e5d586Smrg basic_os=nextstep2 846492e1cfeSmrg ;; 847492e1cfeSmrg *) 84831e5d586Smrg basic_os=nextstep3 849492e1cfeSmrg ;; 850492e1cfeSmrg esac 851492e1cfeSmrg ;; 852492e1cfeSmrg np1) 85331e5d586Smrg cpu=np1 85431e5d586Smrg vendor=gould 855b78bb896Smrg ;; 856492e1cfeSmrg op50n-* | op60c-*) 85731e5d586Smrg cpu=hppa1.1 85831e5d586Smrg vendor=oki 85931e5d586Smrg basic_os=proelf 860492e1cfeSmrg ;; 861492e1cfeSmrg pa-hitachi) 86231e5d586Smrg cpu=hppa1.1 86331e5d586Smrg vendor=hitachi 86431e5d586Smrg basic_os=hiuxwe2 8659e0146f7Smrg ;; 866492e1cfeSmrg pbd) 86731e5d586Smrg cpu=sparc 86831e5d586Smrg vendor=tti 869492e1cfeSmrg ;; 870492e1cfeSmrg pbb) 87131e5d586Smrg cpu=m68k 87231e5d586Smrg vendor=tti 873492e1cfeSmrg ;; 87431e5d586Smrg pc532) 87531e5d586Smrg cpu=ns32k 87631e5d586Smrg vendor=pc532 877492e1cfeSmrg ;; 878492e1cfeSmrg pn) 87931e5d586Smrg cpu=pn 88031e5d586Smrg vendor=gould 881492e1cfeSmrg ;; 88231e5d586Smrg power) 88331e5d586Smrg cpu=power 88431e5d586Smrg vendor=ibm 885492e1cfeSmrg ;; 88631e5d586Smrg ps2) 88731e5d586Smrg cpu=i386 88831e5d586Smrg vendor=ibm 889492e1cfeSmrg ;; 89031e5d586Smrg rm[46]00) 89131e5d586Smrg cpu=mips 89231e5d586Smrg vendor=siemens 893492e1cfeSmrg ;; 89431e5d586Smrg rtpc | rtpc-*) 89531e5d586Smrg cpu=romp 89631e5d586Smrg vendor=ibm 897492e1cfeSmrg ;; 89831e5d586Smrg sde) 89931e5d586Smrg cpu=mipsisa32 90031e5d586Smrg vendor=sde 90131e5d586Smrg basic_os=${basic_os:-elf} 902492e1cfeSmrg ;; 90331e5d586Smrg simso-wrs) 90431e5d586Smrg cpu=sparclite 90531e5d586Smrg vendor=wrs 90631e5d586Smrg basic_os=vxworks 907492e1cfeSmrg ;; 90831e5d586Smrg tower | tower-32) 90931e5d586Smrg cpu=m68k 91031e5d586Smrg vendor=ncr 911492e1cfeSmrg ;; 91231e5d586Smrg vpp*|vx|vx-*) 91331e5d586Smrg cpu=f301 91431e5d586Smrg vendor=fujitsu 9151afad795Smrg ;; 91631e5d586Smrg w65) 91731e5d586Smrg cpu=w65 91831e5d586Smrg vendor=wdc 9199e0146f7Smrg ;; 92031e5d586Smrg w89k-*) 92131e5d586Smrg cpu=hppa1.1 92231e5d586Smrg vendor=winbond 92331e5d586Smrg basic_os=proelf 924492e1cfeSmrg ;; 92531e5d586Smrg none) 92631e5d586Smrg cpu=none 92731e5d586Smrg vendor=none 928492e1cfeSmrg ;; 92931e5d586Smrg leon|leon[3-9]) 93031e5d586Smrg cpu=sparc 93131e5d586Smrg vendor=$basic_machine 932492e1cfeSmrg ;; 93331e5d586Smrg leon-*|leon[3-9]-*) 93431e5d586Smrg cpu=sparc 93531e5d586Smrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 9369e0146f7Smrg ;; 93731e5d586Smrg 93831e5d586Smrg *-*) 93931e5d586Smrg # shellcheck disable=SC2162 94031e5d586Smrg saved_IFS=$IFS 94131e5d586Smrg IFS="-" read cpu vendor <<EOF 94231e5d586Smrg$basic_machine 94331e5d586SmrgEOF 94431e5d586Smrg IFS=$saved_IFS 9459e0146f7Smrg ;; 94631e5d586Smrg # We use `pc' rather than `unknown' 94731e5d586Smrg # because (1) that's what they normally are, and 94831e5d586Smrg # (2) the word "unknown" tends to confuse beginning users. 94931e5d586Smrg i*86 | x86_64) 95031e5d586Smrg cpu=$basic_machine 95131e5d586Smrg vendor=pc 952492e1cfeSmrg ;; 95331e5d586Smrg # These rules are duplicated from below for sake of the special case above; 95431e5d586Smrg # i.e. things that normalized to x86 arches should also default to "pc" 95531e5d586Smrg pc98) 95631e5d586Smrg cpu=i386 95731e5d586Smrg vendor=pc 958492e1cfeSmrg ;; 95931e5d586Smrg x64 | amd64) 96031e5d586Smrg cpu=x86_64 96131e5d586Smrg vendor=pc 962492e1cfeSmrg ;; 96331e5d586Smrg # Recognize the basic CPU types without company name. 96431e5d586Smrg *) 96531e5d586Smrg cpu=$basic_machine 96631e5d586Smrg vendor=unknown 9679e0146f7Smrg ;; 96831e5d586Smrgesac 96931e5d586Smrg 97031e5d586Smrgunset -v basic_machine 97131e5d586Smrg 97231e5d586Smrg# Decode basic machines in the full and proper CPU-Company form. 97331e5d586Smrgcase $cpu-$vendor in 97431e5d586Smrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 97531e5d586Smrg # some cases the only manufacturer, in others, it is the most popular. 97631e5d586Smrg craynv-unknown) 97731e5d586Smrg vendor=cray 97831e5d586Smrg basic_os=${basic_os:-unicosmp} 979492e1cfeSmrg ;; 98031e5d586Smrg c90-unknown | c90-cray) 98131e5d586Smrg vendor=cray 98231e5d586Smrg basic_os=${Basic_os:-unicos} 983492e1cfeSmrg ;; 98431e5d586Smrg fx80-unknown) 98531e5d586Smrg vendor=alliant 9869e0146f7Smrg ;; 98731e5d586Smrg romp-unknown) 98831e5d586Smrg vendor=ibm 989492e1cfeSmrg ;; 99031e5d586Smrg mmix-unknown) 99131e5d586Smrg vendor=knuth 992492e1cfeSmrg ;; 99331e5d586Smrg microblaze-unknown | microblazeel-unknown) 99431e5d586Smrg vendor=xilinx 995492e1cfeSmrg ;; 99631e5d586Smrg rs6000-unknown) 99731e5d586Smrg vendor=ibm 998492e1cfeSmrg ;; 99931e5d586Smrg vax-unknown) 100031e5d586Smrg vendor=dec 1001492e1cfeSmrg ;; 100231e5d586Smrg pdp11-unknown) 100331e5d586Smrg vendor=dec 10041afad795Smrg ;; 100531e5d586Smrg we32k-unknown) 100631e5d586Smrg vendor=att 1007492e1cfeSmrg ;; 100831e5d586Smrg cydra-unknown) 100931e5d586Smrg vendor=cydrome 1010492e1cfeSmrg ;; 101131e5d586Smrg i370-ibm*) 101231e5d586Smrg vendor=ibm 1013492e1cfeSmrg ;; 101431e5d586Smrg orion-unknown) 101531e5d586Smrg vendor=highlevel 1016492e1cfeSmrg ;; 101731e5d586Smrg xps-unknown | xps100-unknown) 101831e5d586Smrg cpu=xps100 101931e5d586Smrg vendor=honeywell 1020492e1cfeSmrg ;; 102131e5d586Smrg 102231e5d586Smrg # Here we normalize CPU types with a missing or matching vendor 102331e5d586Smrg dpx20-unknown | dpx20-bull) 102431e5d586Smrg cpu=rs6000 102531e5d586Smrg vendor=bull 102631e5d586Smrg basic_os=${basic_os:-bosx} 1027492e1cfeSmrg ;; 102831e5d586Smrg 102931e5d586Smrg # Here we normalize CPU types irrespective of the vendor 103031e5d586Smrg amd64-*) 103131e5d586Smrg cpu=x86_64 1032492e1cfeSmrg ;; 103331e5d586Smrg blackfin-*) 103431e5d586Smrg cpu=bfin 103531e5d586Smrg basic_os=linux 1036492e1cfeSmrg ;; 103731e5d586Smrg c54x-*) 103831e5d586Smrg cpu=tic54x 1039492e1cfeSmrg ;; 104031e5d586Smrg c55x-*) 104131e5d586Smrg cpu=tic55x 1042492e1cfeSmrg ;; 104331e5d586Smrg c6x-*) 104431e5d586Smrg cpu=tic6x 1045492e1cfeSmrg ;; 104631e5d586Smrg e500v[12]-*) 104731e5d586Smrg cpu=powerpc 104831e5d586Smrg basic_os=${basic_os}"spe" 1049492e1cfeSmrg ;; 105031e5d586Smrg mips3*-*) 105131e5d586Smrg cpu=mips64 1052492e1cfeSmrg ;; 105331e5d586Smrg ms1-*) 105431e5d586Smrg cpu=mt 1055492e1cfeSmrg ;; 105631e5d586Smrg m68knommu-*) 105731e5d586Smrg cpu=m68k 105831e5d586Smrg basic_os=linux 1059492e1cfeSmrg ;; 106031e5d586Smrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 106131e5d586Smrg cpu=s12z 1062492e1cfeSmrg ;; 106331e5d586Smrg openrisc-*) 106431e5d586Smrg cpu=or32 1065492e1cfeSmrg ;; 106631e5d586Smrg parisc-*) 106731e5d586Smrg cpu=hppa 106831e5d586Smrg basic_os=linux 1069492e1cfeSmrg ;; 107031e5d586Smrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 107131e5d586Smrg cpu=i586 1072492e1cfeSmrg ;; 107331e5d586Smrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 107431e5d586Smrg cpu=i686 1075492e1cfeSmrg ;; 107631e5d586Smrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 107731e5d586Smrg cpu=i686 10789e0146f7Smrg ;; 107931e5d586Smrg pentium4-*) 108031e5d586Smrg cpu=i786 1081492e1cfeSmrg ;; 108231e5d586Smrg pc98-*) 108331e5d586Smrg cpu=i386 1084492e1cfeSmrg ;; 108531e5d586Smrg ppc-* | ppcbe-*) 108631e5d586Smrg cpu=powerpc 1087492e1cfeSmrg ;; 108831e5d586Smrg ppcle-* | powerpclittle-*) 108931e5d586Smrg cpu=powerpcle 1090492e1cfeSmrg ;; 109131e5d586Smrg ppc64-*) 109231e5d586Smrg cpu=powerpc64 1093492e1cfeSmrg ;; 109431e5d586Smrg ppc64le-* | powerpc64little-*) 109531e5d586Smrg cpu=powerpc64le 1096492e1cfeSmrg ;; 109731e5d586Smrg sb1-*) 109831e5d586Smrg cpu=mipsisa64sb1 1099492e1cfeSmrg ;; 110031e5d586Smrg sb1el-*) 110131e5d586Smrg cpu=mipsisa64sb1el 1102492e1cfeSmrg ;; 110331e5d586Smrg sh5e[lb]-*) 110431e5d586Smrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1105492e1cfeSmrg ;; 110631e5d586Smrg spur-*) 110731e5d586Smrg cpu=spur 1108492e1cfeSmrg ;; 110931e5d586Smrg strongarm-* | thumb-*) 111031e5d586Smrg cpu=arm 1111492e1cfeSmrg ;; 111231e5d586Smrg tx39-*) 111331e5d586Smrg cpu=mipstx39 1114b78bb896Smrg ;; 111531e5d586Smrg tx39el-*) 111631e5d586Smrg cpu=mipstx39el 11179e0146f7Smrg ;; 111831e5d586Smrg x64-*) 111931e5d586Smrg cpu=x86_64 1120492e1cfeSmrg ;; 11211afad795Smrg xscale-* | xscalee[bl]-*) 112231e5d586Smrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1123492e1cfeSmrg ;; 112431e5d586Smrg arm64-*) 112531e5d586Smrg cpu=aarch64 1126492e1cfeSmrg ;; 1127492e1cfeSmrg 112831e5d586Smrg # Recognize the canonical CPU Types that limit and/or modify the 112931e5d586Smrg # company names they are paired with. 113031e5d586Smrg cr16-*) 113131e5d586Smrg basic_os=${basic_os:-elf} 11329e0146f7Smrg ;; 113331e5d586Smrg crisv32-* | etraxfs*-*) 113431e5d586Smrg cpu=crisv32 113531e5d586Smrg vendor=axis 1136492e1cfeSmrg ;; 113731e5d586Smrg cris-* | etrax*-*) 113831e5d586Smrg cpu=cris 113931e5d586Smrg vendor=axis 1140492e1cfeSmrg ;; 114131e5d586Smrg crx-*) 114231e5d586Smrg basic_os=${basic_os:-elf} 1143492e1cfeSmrg ;; 114431e5d586Smrg neo-tandem) 114531e5d586Smrg cpu=neo 114631e5d586Smrg vendor=tandem 1147492e1cfeSmrg ;; 114831e5d586Smrg nse-tandem) 114931e5d586Smrg cpu=nse 115031e5d586Smrg vendor=tandem 1151492e1cfeSmrg ;; 115231e5d586Smrg nsr-tandem) 115331e5d586Smrg cpu=nsr 115431e5d586Smrg vendor=tandem 1155492e1cfeSmrg ;; 115631e5d586Smrg nsv-tandem) 115731e5d586Smrg cpu=nsv 115831e5d586Smrg vendor=tandem 1159492e1cfeSmrg ;; 116031e5d586Smrg nsx-tandem) 116131e5d586Smrg cpu=nsx 116231e5d586Smrg vendor=tandem 1163492e1cfeSmrg ;; 116431e5d586Smrg mipsallegrexel-sony) 116531e5d586Smrg cpu=mipsallegrexel 116631e5d586Smrg vendor=sony 1167492e1cfeSmrg ;; 116831e5d586Smrg tile*-*) 116931e5d586Smrg basic_os=${basic_os:-linux-gnu} 1170492e1cfeSmrg ;; 117131e5d586Smrg 1172492e1cfeSmrg *) 117331e5d586Smrg # Recognize the canonical CPU types that are allowed with any 117431e5d586Smrg # company name. 117531e5d586Smrg case $cpu in 117631e5d586Smrg 1750a | 580 \ 117731e5d586Smrg | a29k \ 117831e5d586Smrg | aarch64 | aarch64_be \ 117931e5d586Smrg | abacus \ 118031e5d586Smrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 118131e5d586Smrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 118231e5d586Smrg | alphapca5[67] | alpha64pca5[67] \ 118331e5d586Smrg | am33_2.0 \ 118431e5d586Smrg | amdgcn \ 118531e5d586Smrg | arc | arceb | arc32 | arc64 \ 118631e5d586Smrg | arm | arm[lb]e | arme[lb] | armv* \ 118731e5d586Smrg | avr | avr32 \ 118831e5d586Smrg | asmjs \ 118931e5d586Smrg | ba \ 119031e5d586Smrg | be32 | be64 \ 119131e5d586Smrg | bfin | bpf | bs2000 \ 119231e5d586Smrg | c[123]* | c30 | [cjt]90 | c4x \ 119331e5d586Smrg | c8051 | clipper | craynv | csky | cydra \ 119431e5d586Smrg | d10v | d30v | dlx | dsp16xx \ 119531e5d586Smrg | e2k | elxsi | epiphany \ 119631e5d586Smrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 119731e5d586Smrg | h8300 | h8500 \ 119831e5d586Smrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 119931e5d586Smrg | hexagon \ 120031e5d586Smrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 120131e5d586Smrg | ip2k | iq2000 \ 120231e5d586Smrg | k1om \ 120331e5d586Smrg | le32 | le64 \ 120431e5d586Smrg | lm32 \ 120531e5d586Smrg | loongarch32 | loongarch64 | loongarchx32 \ 120631e5d586Smrg | m32c | m32r | m32rle \ 120731e5d586Smrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 120831e5d586Smrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 120931e5d586Smrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 121031e5d586Smrg | microblaze | microblazeel \ 121131e5d586Smrg | mips | mipsbe | mipseb | mipsel | mipsle \ 121231e5d586Smrg | mips16 \ 121331e5d586Smrg | mips64 | mips64eb | mips64el \ 121431e5d586Smrg | mips64octeon | mips64octeonel \ 121531e5d586Smrg | mips64orion | mips64orionel \ 121631e5d586Smrg | mips64r5900 | mips64r5900el \ 121731e5d586Smrg | mips64vr | mips64vrel \ 121831e5d586Smrg | mips64vr4100 | mips64vr4100el \ 121931e5d586Smrg | mips64vr4300 | mips64vr4300el \ 122031e5d586Smrg | mips64vr5000 | mips64vr5000el \ 122131e5d586Smrg | mips64vr5900 | mips64vr5900el \ 122231e5d586Smrg | mipsisa32 | mipsisa32el \ 122331e5d586Smrg | mipsisa32r2 | mipsisa32r2el \ 122431e5d586Smrg | mipsisa32r3 | mipsisa32r3el \ 122531e5d586Smrg | mipsisa32r5 | mipsisa32r5el \ 122631e5d586Smrg | mipsisa32r6 | mipsisa32r6el \ 122731e5d586Smrg | mipsisa64 | mipsisa64el \ 122831e5d586Smrg | mipsisa64r2 | mipsisa64r2el \ 122931e5d586Smrg | mipsisa64r3 | mipsisa64r3el \ 123031e5d586Smrg | mipsisa64r5 | mipsisa64r5el \ 123131e5d586Smrg | mipsisa64r6 | mipsisa64r6el \ 123231e5d586Smrg | mipsisa64sb1 | mipsisa64sb1el \ 123331e5d586Smrg | mipsisa64sr71k | mipsisa64sr71kel \ 123431e5d586Smrg | mipsr5900 | mipsr5900el \ 123531e5d586Smrg | mipstx39 | mipstx39el \ 123631e5d586Smrg | mmix \ 123731e5d586Smrg | mn10200 | mn10300 \ 123831e5d586Smrg | moxie \ 123931e5d586Smrg | mt \ 124031e5d586Smrg | msp430 \ 124131e5d586Smrg | nds32 | nds32le | nds32be \ 124231e5d586Smrg | nfp \ 124331e5d586Smrg | nios | nios2 | nios2eb | nios2el \ 124431e5d586Smrg | none | np1 | ns16k | ns32k | nvptx \ 124531e5d586Smrg | open8 \ 124631e5d586Smrg | or1k* \ 124731e5d586Smrg | or32 \ 124831e5d586Smrg | orion \ 124931e5d586Smrg | picochip \ 125031e5d586Smrg | pdp10 | pdp11 | pj | pjl | pn | power \ 125131e5d586Smrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 125231e5d586Smrg | pru \ 125331e5d586Smrg | pyramid \ 125431e5d586Smrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 125531e5d586Smrg | rl78 | romp | rs6000 | rx \ 125631e5d586Smrg | s390 | s390x \ 125731e5d586Smrg | score \ 125831e5d586Smrg | sh | shl \ 125931e5d586Smrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 126031e5d586Smrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 126131e5d586Smrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 126231e5d586Smrg | sparclite \ 126331e5d586Smrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 126431e5d586Smrg | spu \ 126531e5d586Smrg | tahoe \ 126631e5d586Smrg | thumbv7* \ 126731e5d586Smrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 126831e5d586Smrg | tron \ 126931e5d586Smrg | ubicom32 \ 127031e5d586Smrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 127131e5d586Smrg | vax \ 127231e5d586Smrg | visium \ 127331e5d586Smrg | w65 \ 127431e5d586Smrg | wasm32 | wasm64 \ 127531e5d586Smrg | we32k \ 127631e5d586Smrg | x86 | x86_64 | xc16x | xgate | xps100 \ 127731e5d586Smrg | xstormy16 | xtensa* \ 127831e5d586Smrg | ymp \ 127931e5d586Smrg | z8k | z80) 128031e5d586Smrg ;; 128131e5d586Smrg 128231e5d586Smrg *) 128331e5d586Smrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 128431e5d586Smrg exit 1 128531e5d586Smrg ;; 128631e5d586Smrg esac 1287492e1cfeSmrg ;; 1288492e1cfeSmrgesac 1289492e1cfeSmrg 1290492e1cfeSmrg# Here we canonicalize certain aliases for manufacturers. 129131e5d586Smrgcase $vendor in 129231e5d586Smrg digital*) 129331e5d586Smrg vendor=dec 1294492e1cfeSmrg ;; 129531e5d586Smrg commodore*) 129631e5d586Smrg vendor=cbm 1297492e1cfeSmrg ;; 1298492e1cfeSmrg *) 1299492e1cfeSmrg ;; 1300492e1cfeSmrgesac 1301492e1cfeSmrg 1302492e1cfeSmrg# Decode manufacturer-specific aliases for certain operating systems. 1303492e1cfeSmrg 130431e5d586Smrgif test x$basic_os != x 1305492e1cfeSmrgthen 130631e5d586Smrg 130731e5d586Smrg# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just 130831e5d586Smrg# set os. 130931e5d586Smrgcase $basic_os in 131031e5d586Smrg gnu/linux*) 131131e5d586Smrg kernel=linux 131231e5d586Smrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 131331e5d586Smrg ;; 131431e5d586Smrg os2-emx) 131531e5d586Smrg kernel=os2 131631e5d586Smrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 131731e5d586Smrg ;; 131831e5d586Smrg nto-qnx*) 131931e5d586Smrg kernel=nto 132031e5d586Smrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 132131e5d586Smrg ;; 132231e5d586Smrg *-*) 132331e5d586Smrg # shellcheck disable=SC2162 132431e5d586Smrg saved_IFS=$IFS 132531e5d586Smrg IFS="-" read kernel os <<EOF 132631e5d586Smrg$basic_os 132731e5d586SmrgEOF 132831e5d586Smrg IFS=$saved_IFS 132931e5d586Smrg ;; 133031e5d586Smrg # Default OS when just kernel was specified 133131e5d586Smrg nto*) 133231e5d586Smrg kernel=nto 133331e5d586Smrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 133431e5d586Smrg ;; 133531e5d586Smrg linux*) 133631e5d586Smrg kernel=linux 133731e5d586Smrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 133831e5d586Smrg ;; 133931e5d586Smrg *) 134031e5d586Smrg kernel= 134131e5d586Smrg os=$basic_os 134231e5d586Smrg ;; 134331e5d586Smrgesac 134431e5d586Smrg 134531e5d586Smrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 134631e5d586Smrg# etc.) 1347492e1cfeSmrgcase $os in 1348b78bb896Smrg # First match some system type aliases that might get confused 1349b78bb896Smrg # with valid system types. 135031e5d586Smrg # solaris* is a basic system type, with this one exception. 135131e5d586Smrg auroraux) 135231e5d586Smrg os=auroraux 13539e0146f7Smrg ;; 135431e5d586Smrg bluegene*) 135531e5d586Smrg os=cnk 1356492e1cfeSmrg ;; 135731e5d586Smrg solaris1 | solaris1.*) 135831e5d586Smrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1359492e1cfeSmrg ;; 136031e5d586Smrg solaris) 136131e5d586Smrg os=solaris2 1362492e1cfeSmrg ;; 136331e5d586Smrg unixware*) 136431e5d586Smrg os=sysv4.2uw 1365492e1cfeSmrg ;; 1366b78bb896Smrg # es1800 is here to avoid being matched by es* (a different OS) 136731e5d586Smrg es1800*) 136831e5d586Smrg os=ose 1369b78bb896Smrg ;; 137031e5d586Smrg # Some version numbers need modification 137131e5d586Smrg chorusos*) 137231e5d586Smrg os=chorusos 1373492e1cfeSmrg ;; 137431e5d586Smrg isc) 137531e5d586Smrg os=isc2.2 1376492e1cfeSmrg ;; 137731e5d586Smrg sco6) 137831e5d586Smrg os=sco5v6 1379492e1cfeSmrg ;; 138031e5d586Smrg sco5) 138131e5d586Smrg os=sco3.2v5 1382492e1cfeSmrg ;; 138331e5d586Smrg sco4) 138431e5d586Smrg os=sco3.2v4 1385492e1cfeSmrg ;; 138631e5d586Smrg sco3.2.[4-9]*) 138731e5d586Smrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 13889e0146f7Smrg ;; 138931e5d586Smrg sco*v* | scout) 139031e5d586Smrg # Don't match below 1391492e1cfeSmrg ;; 139231e5d586Smrg sco*) 139331e5d586Smrg os=sco3.2v2 1394492e1cfeSmrg ;; 139531e5d586Smrg psos*) 139631e5d586Smrg os=psos 1397492e1cfeSmrg ;; 139831e5d586Smrg qnx*) 139931e5d586Smrg os=qnx 1400492e1cfeSmrg ;; 140131e5d586Smrg hiux*) 140231e5d586Smrg os=hiuxwe2 14039e0146f7Smrg ;; 140431e5d586Smrg lynx*178) 140531e5d586Smrg os=lynxos178 1406492e1cfeSmrg ;; 140731e5d586Smrg lynx*5) 140831e5d586Smrg os=lynxos5 1409492e1cfeSmrg ;; 141031e5d586Smrg lynxos*) 141131e5d586Smrg # don't get caught up in next wildcard 1412492e1cfeSmrg ;; 141331e5d586Smrg lynx*) 141431e5d586Smrg os=lynxos 1415492e1cfeSmrg ;; 141631e5d586Smrg mac[0-9]*) 141731e5d586Smrg os=`echo "$os" | sed -e 's|mac|macos|'` 1418492e1cfeSmrg ;; 141931e5d586Smrg opened*) 142031e5d586Smrg os=openedition 14219e0146f7Smrg ;; 142231e5d586Smrg os400*) 142331e5d586Smrg os=os400 1424492e1cfeSmrg ;; 142531e5d586Smrg sunos5*) 142631e5d586Smrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1427492e1cfeSmrg ;; 142831e5d586Smrg sunos6*) 142931e5d586Smrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1430492e1cfeSmrg ;; 143131e5d586Smrg wince*) 143231e5d586Smrg os=wince 1433492e1cfeSmrg ;; 143431e5d586Smrg utek*) 143531e5d586Smrg os=bsd 1436492e1cfeSmrg ;; 143731e5d586Smrg dynix*) 143831e5d586Smrg os=bsd 1439492e1cfeSmrg ;; 144031e5d586Smrg acis*) 144131e5d586Smrg os=aos 1442492e1cfeSmrg ;; 144331e5d586Smrg atheos*) 144431e5d586Smrg os=atheos 14459e0146f7Smrg ;; 144631e5d586Smrg syllable*) 144731e5d586Smrg os=syllable 144831e5d586Smrg ;; 144931e5d586Smrg 386bsd) 145031e5d586Smrg os=bsd 145131e5d586Smrg ;; 145231e5d586Smrg ctix* | uts*) 145331e5d586Smrg os=sysv 145431e5d586Smrg ;; 145531e5d586Smrg nova*) 145631e5d586Smrg os=rtmk-nova 145731e5d586Smrg ;; 145831e5d586Smrg ns2) 145931e5d586Smrg os=nextstep2 146031e5d586Smrg ;; 146131e5d586Smrg # Preserve the version number of sinix5. 146231e5d586Smrg sinix5.*) 146331e5d586Smrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1464492e1cfeSmrg ;; 146531e5d586Smrg sinix*) 146631e5d586Smrg os=sysv4 1467492e1cfeSmrg ;; 146831e5d586Smrg tpf*) 146931e5d586Smrg os=tpf 1470492e1cfeSmrg ;; 147131e5d586Smrg triton*) 147231e5d586Smrg os=sysv3 1473492e1cfeSmrg ;; 147431e5d586Smrg oss*) 147531e5d586Smrg os=sysv3 1476492e1cfeSmrg ;; 147731e5d586Smrg svr4*) 147831e5d586Smrg os=sysv4 1479492e1cfeSmrg ;; 148031e5d586Smrg svr3) 148131e5d586Smrg os=sysv3 1482492e1cfeSmrg ;; 148331e5d586Smrg sysvr4) 148431e5d586Smrg os=sysv4 1485492e1cfeSmrg ;; 148631e5d586Smrg ose*) 148731e5d586Smrg os=ose 14889e0146f7Smrg ;; 148931e5d586Smrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 149031e5d586Smrg os=mint 14919e0146f7Smrg ;; 149231e5d586Smrg dicos*) 149331e5d586Smrg os=dicos 149431e5d586Smrg ;; 149531e5d586Smrg pikeos*) 1496b78bb896Smrg # Until real need of OS specific support for 1497b78bb896Smrg # particular features comes up, bare metal 1498b78bb896Smrg # configurations are quite functional. 149931e5d586Smrg case $cpu in 1500b78bb896Smrg arm*) 150131e5d586Smrg os=eabi 1502b78bb896Smrg ;; 1503b78bb896Smrg *) 150431e5d586Smrg os=elf 1505b78bb896Smrg ;; 1506b78bb896Smrg esac 1507b78bb896Smrg ;; 1508492e1cfeSmrg *) 150931e5d586Smrg # No normalization, but not necessarily accepted, that comes below. 1510492e1cfeSmrg ;; 1511492e1cfeSmrgesac 151231e5d586Smrg 1513492e1cfeSmrgelse 1514492e1cfeSmrg 1515492e1cfeSmrg# Here we handle the default operating systems that come with various machines. 1516492e1cfeSmrg# The value should be what the vendor currently ships out the door with their 1517492e1cfeSmrg# machine or put another way, the most popular os provided with the machine. 1518492e1cfeSmrg 1519492e1cfeSmrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1520492e1cfeSmrg# "-sun"), then you have to tell the case statement up towards the top 1521492e1cfeSmrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1522492e1cfeSmrg# will signal an error saying that MANUFACTURER isn't an operating 1523492e1cfeSmrg# system, and we'll never get to this point. 1524492e1cfeSmrg 152531e5d586Smrgkernel= 152631e5d586Smrgcase $cpu-$vendor in 15271afad795Smrg score-*) 152831e5d586Smrg os=elf 15299e0146f7Smrg ;; 15301afad795Smrg spu-*) 153131e5d586Smrg os=elf 15329e0146f7Smrg ;; 1533492e1cfeSmrg *-acorn) 153431e5d586Smrg os=riscix1.2 1535492e1cfeSmrg ;; 1536492e1cfeSmrg arm*-rebel) 153731e5d586Smrg kernel=linux 153831e5d586Smrg os=gnu 1539492e1cfeSmrg ;; 1540492e1cfeSmrg arm*-semi) 154131e5d586Smrg os=aout 1542492e1cfeSmrg ;; 15431afad795Smrg c4x-* | tic4x-*) 154431e5d586Smrg os=coff 15451afad795Smrg ;; 1546b78bb896Smrg c8051-*) 154731e5d586Smrg os=elf 154831e5d586Smrg ;; 154931e5d586Smrg clipper-intergraph) 155031e5d586Smrg os=clix 1551b78bb896Smrg ;; 15521afad795Smrg hexagon-*) 155331e5d586Smrg os=elf 15549e0146f7Smrg ;; 15559e0146f7Smrg tic54x-*) 155631e5d586Smrg os=coff 15579e0146f7Smrg ;; 15589e0146f7Smrg tic55x-*) 155931e5d586Smrg os=coff 15609e0146f7Smrg ;; 15619e0146f7Smrg tic6x-*) 156231e5d586Smrg os=coff 1563492e1cfeSmrg ;; 1564492e1cfeSmrg # This must come before the *-dec entry. 1565492e1cfeSmrg pdp10-*) 156631e5d586Smrg os=tops20 1567492e1cfeSmrg ;; 1568492e1cfeSmrg pdp11-*) 156931e5d586Smrg os=none 1570492e1cfeSmrg ;; 1571492e1cfeSmrg *-dec | vax-*) 157231e5d586Smrg os=ultrix4.2 1573492e1cfeSmrg ;; 1574492e1cfeSmrg m68*-apollo) 157531e5d586Smrg os=domain 1576492e1cfeSmrg ;; 1577492e1cfeSmrg i386-sun) 157831e5d586Smrg os=sunos4.0.2 1579492e1cfeSmrg ;; 1580492e1cfeSmrg m68000-sun) 158131e5d586Smrg os=sunos3 1582492e1cfeSmrg ;; 1583492e1cfeSmrg m68*-cisco) 158431e5d586Smrg os=aout 1585492e1cfeSmrg ;; 15861afad795Smrg mep-*) 158731e5d586Smrg os=elf 15889e0146f7Smrg ;; 1589492e1cfeSmrg mips*-cisco) 159031e5d586Smrg os=elf 1591492e1cfeSmrg ;; 1592492e1cfeSmrg mips*-*) 159331e5d586Smrg os=elf 1594492e1cfeSmrg ;; 1595492e1cfeSmrg or32-*) 159631e5d586Smrg os=coff 1597492e1cfeSmrg ;; 1598492e1cfeSmrg *-tti) # must be before sparc entry or we get the wrong os. 159931e5d586Smrg os=sysv3 1600492e1cfeSmrg ;; 1601492e1cfeSmrg sparc-* | *-sun) 160231e5d586Smrg os=sunos4.1.1 1603492e1cfeSmrg ;; 1604b78bb896Smrg pru-*) 160531e5d586Smrg os=elf 1606b78bb896Smrg ;; 1607492e1cfeSmrg *-be) 160831e5d586Smrg os=beos 1609492e1cfeSmrg ;; 1610492e1cfeSmrg *-ibm) 161131e5d586Smrg os=aix 1612492e1cfeSmrg ;; 16131afad795Smrg *-knuth) 161431e5d586Smrg os=mmixware 16159e0146f7Smrg ;; 1616492e1cfeSmrg *-wec) 161731e5d586Smrg os=proelf 1618492e1cfeSmrg ;; 1619492e1cfeSmrg *-winbond) 162031e5d586Smrg os=proelf 1621492e1cfeSmrg ;; 1622492e1cfeSmrg *-oki) 162331e5d586Smrg os=proelf 1624492e1cfeSmrg ;; 1625492e1cfeSmrg *-hp) 162631e5d586Smrg os=hpux 1627492e1cfeSmrg ;; 1628492e1cfeSmrg *-hitachi) 162931e5d586Smrg os=hiux 1630492e1cfeSmrg ;; 1631492e1cfeSmrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 163231e5d586Smrg os=sysv 1633492e1cfeSmrg ;; 1634492e1cfeSmrg *-cbm) 163531e5d586Smrg os=amigaos 1636492e1cfeSmrg ;; 1637492e1cfeSmrg *-dg) 163831e5d586Smrg os=dgux 1639492e1cfeSmrg ;; 1640492e1cfeSmrg *-dolphin) 164131e5d586Smrg os=sysv3 1642492e1cfeSmrg ;; 1643492e1cfeSmrg m68k-ccur) 164431e5d586Smrg os=rtu 1645492e1cfeSmrg ;; 1646492e1cfeSmrg m88k-omron*) 164731e5d586Smrg os=luna 1648492e1cfeSmrg ;; 1649b78bb896Smrg *-next) 165031e5d586Smrg os=nextstep 1651492e1cfeSmrg ;; 1652492e1cfeSmrg *-sequent) 165331e5d586Smrg os=ptx 1654492e1cfeSmrg ;; 1655492e1cfeSmrg *-crds) 165631e5d586Smrg os=unos 1657492e1cfeSmrg ;; 1658492e1cfeSmrg *-ns) 165931e5d586Smrg os=genix 1660492e1cfeSmrg ;; 1661492e1cfeSmrg i370-*) 166231e5d586Smrg os=mvs 1663492e1cfeSmrg ;; 1664492e1cfeSmrg *-gould) 166531e5d586Smrg os=sysv 1666492e1cfeSmrg ;; 1667492e1cfeSmrg *-highlevel) 166831e5d586Smrg os=bsd 1669492e1cfeSmrg ;; 1670492e1cfeSmrg *-encore) 167131e5d586Smrg os=bsd 1672492e1cfeSmrg ;; 1673492e1cfeSmrg *-sgi) 167431e5d586Smrg os=irix 1675492e1cfeSmrg ;; 1676492e1cfeSmrg *-siemens) 167731e5d586Smrg os=sysv4 1678492e1cfeSmrg ;; 1679492e1cfeSmrg *-masscomp) 168031e5d586Smrg os=rtu 1681492e1cfeSmrg ;; 1682492e1cfeSmrg f30[01]-fujitsu | f700-fujitsu) 168331e5d586Smrg os=uxpv 1684492e1cfeSmrg ;; 1685492e1cfeSmrg *-rom68k) 168631e5d586Smrg os=coff 1687492e1cfeSmrg ;; 1688492e1cfeSmrg *-*bug) 168931e5d586Smrg os=coff 1690492e1cfeSmrg ;; 1691492e1cfeSmrg *-apple) 169231e5d586Smrg os=macos 1693492e1cfeSmrg ;; 1694492e1cfeSmrg *-atari*) 169531e5d586Smrg os=mint 169631e5d586Smrg ;; 169731e5d586Smrg *-wrs) 169831e5d586Smrg os=vxworks 1699492e1cfeSmrg ;; 1700492e1cfeSmrg *) 170131e5d586Smrg os=none 1702492e1cfeSmrg ;; 1703492e1cfeSmrgesac 170431e5d586Smrg 1705492e1cfeSmrgfi 1706492e1cfeSmrg 170731e5d586Smrg# Now, validate our (potentially fixed-up) OS. 170831e5d586Smrgcase $os in 170931e5d586Smrg # Sometimes we do "kernel-libc", so those need to count as OSes. 171031e5d586Smrg musl* | newlib* | relibc* | uclibc*) 171131e5d586Smrg ;; 171231e5d586Smrg # Likewise for "kernel-abi" 171331e5d586Smrg eabi* | gnueabi*) 171431e5d586Smrg ;; 171531e5d586Smrg # VxWorks passes extra cpu info in the 4th filed. 171631e5d586Smrg simlinux | simwindows | spe) 171731e5d586Smrg ;; 171831e5d586Smrg # Now accept the basic system types. 171931e5d586Smrg # The portable systems comes first. 172031e5d586Smrg # Each alternative MUST end in a * to match a version number. 172131e5d586Smrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 172231e5d586Smrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 172331e5d586Smrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 172431e5d586Smrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 172531e5d586Smrg | hiux* | abug | nacl* | netware* | windows* \ 172631e5d586Smrg | os9* | macos* | osx* | ios* \ 172731e5d586Smrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 172831e5d586Smrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 172931e5d586Smrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 173031e5d586Smrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 173131e5d586Smrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 173231e5d586Smrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 173331e5d586Smrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 173431e5d586Smrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 173531e5d586Smrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 173631e5d586Smrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 173731e5d586Smrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 173831e5d586Smrg | chorusrdb* | cegcc* | glidix* | serenity* \ 173931e5d586Smrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 174031e5d586Smrg | midipix* | mingw32* | mingw64* | mint* \ 174131e5d586Smrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 174231e5d586Smrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 174331e5d586Smrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 174431e5d586Smrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 174531e5d586Smrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 174631e5d586Smrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 174731e5d586Smrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 174831e5d586Smrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 174931e5d586Smrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 175031e5d586Smrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 175131e5d586Smrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*) 175231e5d586Smrg ;; 175331e5d586Smrg # This one is extra strict with allowed versions 175431e5d586Smrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 175531e5d586Smrg # Don't forget version if it is 3.2v4 or newer. 175631e5d586Smrg ;; 175731e5d586Smrg none) 175831e5d586Smrg ;; 175931e5d586Smrg *) 176031e5d586Smrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 176131e5d586Smrg exit 1 176231e5d586Smrg ;; 176331e5d586Smrgesac 176431e5d586Smrg 176531e5d586Smrg# As a final step for OS-related things, validate the OS-kernel combination 176631e5d586Smrg# (given a valid OS), if there is a kernel. 176731e5d586Smrgcase $kernel-$os in 176831e5d586Smrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 176931e5d586Smrg | linux-musl* | linux-relibc* | linux-uclibc* ) 177031e5d586Smrg ;; 177131e5d586Smrg uclinux-uclibc* ) 177231e5d586Smrg ;; 177331e5d586Smrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 177431e5d586Smrg # These are just libc implementations, not actual OSes, and thus 177531e5d586Smrg # require a kernel. 177631e5d586Smrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 177731e5d586Smrg exit 1 177831e5d586Smrg ;; 177931e5d586Smrg kfreebsd*-gnu* | kopensolaris*-gnu*) 178031e5d586Smrg ;; 178131e5d586Smrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 178231e5d586Smrg ;; 178331e5d586Smrg nto-qnx*) 178431e5d586Smrg ;; 178531e5d586Smrg os2-emx) 178631e5d586Smrg ;; 178731e5d586Smrg *-eabi* | *-gnueabi*) 178831e5d586Smrg ;; 178931e5d586Smrg -*) 179031e5d586Smrg # Blank kernel with real OS is always fine. 179131e5d586Smrg ;; 179231e5d586Smrg *-*) 179331e5d586Smrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 179431e5d586Smrg exit 1 179531e5d586Smrg ;; 179631e5d586Smrgesac 179731e5d586Smrg 1798492e1cfeSmrg# Here we handle the case where we know the os, and the CPU type, but not the 1799492e1cfeSmrg# manufacturer. We pick the logical manufacturer. 180031e5d586Smrgcase $vendor in 180131e5d586Smrg unknown) 180231e5d586Smrg case $cpu-$os in 180331e5d586Smrg *-riscix*) 1804492e1cfeSmrg vendor=acorn 1805492e1cfeSmrg ;; 180631e5d586Smrg *-sunos*) 1807492e1cfeSmrg vendor=sun 1808492e1cfeSmrg ;; 180931e5d586Smrg *-cnk* | *-aix*) 1810492e1cfeSmrg vendor=ibm 1811492e1cfeSmrg ;; 181231e5d586Smrg *-beos*) 1813492e1cfeSmrg vendor=be 1814492e1cfeSmrg ;; 181531e5d586Smrg *-hpux*) 1816492e1cfeSmrg vendor=hp 1817492e1cfeSmrg ;; 181831e5d586Smrg *-mpeix*) 1819492e1cfeSmrg vendor=hp 1820492e1cfeSmrg ;; 182131e5d586Smrg *-hiux*) 1822492e1cfeSmrg vendor=hitachi 1823492e1cfeSmrg ;; 182431e5d586Smrg *-unos*) 1825492e1cfeSmrg vendor=crds 1826492e1cfeSmrg ;; 182731e5d586Smrg *-dgux*) 1828492e1cfeSmrg vendor=dg 1829492e1cfeSmrg ;; 183031e5d586Smrg *-luna*) 1831492e1cfeSmrg vendor=omron 1832492e1cfeSmrg ;; 183331e5d586Smrg *-genix*) 1834492e1cfeSmrg vendor=ns 1835492e1cfeSmrg ;; 183631e5d586Smrg *-clix*) 183731e5d586Smrg vendor=intergraph 183831e5d586Smrg ;; 183931e5d586Smrg *-mvs* | *-opened*) 184031e5d586Smrg vendor=ibm 184131e5d586Smrg ;; 184231e5d586Smrg *-os400*) 1843492e1cfeSmrg vendor=ibm 1844492e1cfeSmrg ;; 184531e5d586Smrg s390-* | s390x-*) 18469e0146f7Smrg vendor=ibm 18479e0146f7Smrg ;; 184831e5d586Smrg *-ptx*) 1849492e1cfeSmrg vendor=sequent 1850492e1cfeSmrg ;; 185131e5d586Smrg *-tpf*) 18529e0146f7Smrg vendor=ibm 18539e0146f7Smrg ;; 185431e5d586Smrg *-vxsim* | *-vxworks* | *-windiss*) 1855492e1cfeSmrg vendor=wrs 1856492e1cfeSmrg ;; 185731e5d586Smrg *-aux*) 1858492e1cfeSmrg vendor=apple 1859492e1cfeSmrg ;; 186031e5d586Smrg *-hms*) 1861492e1cfeSmrg vendor=hitachi 1862492e1cfeSmrg ;; 186331e5d586Smrg *-mpw* | *-macos*) 1864492e1cfeSmrg vendor=apple 1865492e1cfeSmrg ;; 186631e5d586Smrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1867492e1cfeSmrg vendor=atari 1868492e1cfeSmrg ;; 186931e5d586Smrg *-vos*) 1870492e1cfeSmrg vendor=stratus 1871492e1cfeSmrg ;; 1872492e1cfeSmrg esac 1873492e1cfeSmrg ;; 1874492e1cfeSmrgesac 1875492e1cfeSmrg 187631e5d586Smrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 18779e0146f7Smrgexit 1878492e1cfeSmrg 1879492e1cfeSmrg# Local variables: 188031e5d586Smrg# eval: (add-hook 'before-save-hook 'time-stamp) 1881492e1cfeSmrg# time-stamp-start: "timestamp='" 1882492e1cfeSmrg# time-stamp-format: "%:y-%02m-%02d" 1883492e1cfeSmrg# time-stamp-end: "'" 1884492e1cfeSmrg# End: 1885