120f5670eSmrg#!/usr/bin/sh 2b1297603Smrg# Configuration validation subroutine script. 320f5670eSmrg# Copyright 1992-2022 Free Software Foundation, Inc. 4b1297603Smrg 520f5670eSmrg# shellcheck disable=SC2006,SC2268 # see below for rationale 620f5670eSmrg 720f5670eSmrgtimestamp='2022-01-03' 8b1297603Smrg 933734831Smrg# This file is free software; you can redistribute it and/or modify it 1033734831Smrg# under the terms of the GNU General Public License as published by 1120f5670eSmrg# the Free Software Foundation, either version 3 of the License, or 12b1297603Smrg# (at your option) any later version. 13b1297603Smrg# 1433734831Smrg# This program is distributed in the hope that it will be useful, but 1533734831Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 1633734831Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1733734831Smrg# General Public License for more details. 18b1297603Smrg# 19b1297603Smrg# You should have received a copy of the GNU General Public License 20a570218aSmrg# along with this program; if not, see <https://www.gnu.org/licenses/>. 21b1297603Smrg# 22b1297603Smrg# As a special exception to the GNU General Public License, if you 23b1297603Smrg# distribute this file as part of a program that contains a 24b1297603Smrg# configuration script generated by Autoconf, you may include it under 2533734831Smrg# the same distribution terms that you use for the rest of that 2633734831Smrg# program. This Exception is an additional permission under section 7 2733734831Smrg# of the GNU General Public License, version 3 ("GPLv3"). 28b1297603Smrg 29b1297603Smrg 30a570218aSmrg# Please send patches to <config-patches@gnu.org>. 31b1297603Smrg# 32b1297603Smrg# Configuration subroutine to validate and canonicalize a configuration type. 33b1297603Smrg# Supply the specified configuration type as an argument. 34b1297603Smrg# If it is invalid, we print an error message on stderr and exit with code 1. 35b1297603Smrg# Otherwise, we print the canonical config type on stdout and succeed. 36b1297603Smrg 3733734831Smrg# You can get the latest version of this script from: 3820f5670eSmrg# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub 3933734831Smrg 40b1297603Smrg# This file is supposed to be the same for all GNU packages 41b1297603Smrg# and recognize all the CPU types, system types and aliases 42b1297603Smrg# that are meaningful with *any* GNU software. 43b1297603Smrg# Each package is responsible for reporting which valid configurations 44b1297603Smrg# it does not support. The user should be able to distinguish 45b1297603Smrg# a failure to support a valid configuration from a meaningless 46b1297603Smrg# configuration. 47b1297603Smrg 48b1297603Smrg# The goal of this file is to map all the various variations of a given 49b1297603Smrg# machine specification into a single specification in the form: 50b1297603Smrg# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 51b1297603Smrg# or in some cases, the newer four-part form: 52b1297603Smrg# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 53b1297603Smrg# It is wrong to echo any other type of specification. 54b1297603Smrg 5520f5670eSmrg# The "shellcheck disable" line above the timestamp inhibits complaints 5620f5670eSmrg# about features and limitations of the classic Bourne shell that were 5720f5670eSmrg# superseded or lifted in POSIX. However, this script identifies a wide 5820f5670eSmrg# variety of pre-POSIX systems that do not have POSIX shells at all, and 5920f5670eSmrg# even some reasonably current systems (Solaris 10 as case-in-point) still 6020f5670eSmrg# have a pre-POSIX /bin/sh. 6120f5670eSmrg 62b1297603Smrgme=`echo "$0" | sed -e 's,.*/,,'` 63b1297603Smrg 64b1297603Smrgusage="\ 65a570218aSmrgUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS 66b1297603Smrg 67b1297603SmrgCanonicalize a configuration name. 68b1297603Smrg 69a570218aSmrgOptions: 70b1297603Smrg -h, --help print this help, then exit 71b1297603Smrg -t, --time-stamp print date of last modification, then exit 72b1297603Smrg -v, --version print version number, then exit 73b1297603Smrg 74b1297603SmrgReport bugs and patches to <config-patches@gnu.org>." 75b1297603Smrg 76b1297603Smrgversion="\ 77b1297603SmrgGNU config.sub ($timestamp) 78b1297603Smrg 7920f5670eSmrgCopyright 1992-2022 Free Software Foundation, Inc. 80b1297603Smrg 81b1297603SmrgThis is free software; see the source for copying conditions. There is NO 82b1297603Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 83b1297603Smrg 84b1297603Smrghelp=" 85b1297603SmrgTry \`$me --help' for more information." 86b1297603Smrg 87b1297603Smrg# Parse command line 88b1297603Smrgwhile test $# -gt 0 ; do 89b1297603Smrg case $1 in 90b1297603Smrg --time-stamp | --time* | -t ) 91b1297603Smrg echo "$timestamp" ; exit ;; 92b1297603Smrg --version | -v ) 93b1297603Smrg echo "$version" ; exit ;; 94b1297603Smrg --help | --h* | -h ) 95b1297603Smrg echo "$usage"; exit ;; 96b1297603Smrg -- ) # Stop option processing 97b1297603Smrg shift; break ;; 98b1297603Smrg - ) # Use stdin as input. 99b1297603Smrg break ;; 100b1297603Smrg -* ) 10120f5670eSmrg echo "$me: invalid option $1$help" >&2 102b1297603Smrg exit 1 ;; 103b1297603Smrg 104b1297603Smrg *local*) 105b1297603Smrg # First pass through any local machine types. 106a570218aSmrg echo "$1" 107b1297603Smrg exit ;; 108b1297603Smrg 109b1297603Smrg * ) 110b1297603Smrg break ;; 111b1297603Smrg esac 112b1297603Smrgdone 113b1297603Smrg 114b1297603Smrgcase $# in 115b1297603Smrg 0) echo "$me: missing argument$help" >&2 116b1297603Smrg exit 1;; 117b1297603Smrg 1) ;; 118b1297603Smrg *) echo "$me: too many arguments$help" >&2 119b1297603Smrg exit 1;; 120b1297603Smrgesac 121b1297603Smrg 122a570218aSmrg# Split fields of configuration type 12320f5670eSmrg# shellcheck disable=SC2162 12420f5670eSmrgsaved_IFS=$IFS 12520f5670eSmrgIFS="-" read field1 field2 field3 field4 <<EOF 126a570218aSmrg$1 127a570218aSmrgEOF 12820f5670eSmrgIFS=$saved_IFS 129b1297603Smrg 130a570218aSmrg# Separate into logical components for further validation 131a570218aSmrgcase $1 in 132a570218aSmrg *-*-*-*-*) 133a570218aSmrg echo Invalid configuration \`"$1"\': more than four components >&2 134a570218aSmrg exit 1 135b1297603Smrg ;; 136a570218aSmrg *-*-*-*) 137a570218aSmrg basic_machine=$field1-$field2 13820f5670eSmrg basic_os=$field3-$field4 139b1297603Smrg ;; 140a570218aSmrg *-*-*) 141a570218aSmrg # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two 142a570218aSmrg # parts 143a570218aSmrg maybe_os=$field2-$field3 144a570218aSmrg case $maybe_os in 14520f5670eSmrg nto-qnx* | linux-* | uclinux-uclibc* \ 146a570218aSmrg | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 147a570218aSmrg | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 148a570218aSmrg | storm-chaos* | os2-emx* | rtmk-nova*) 149a570218aSmrg basic_machine=$field1 15020f5670eSmrg basic_os=$maybe_os 151a570218aSmrg ;; 152a570218aSmrg android-linux) 153a570218aSmrg basic_machine=$field1-unknown 15420f5670eSmrg basic_os=linux-android 155a570218aSmrg ;; 156a570218aSmrg *) 157a570218aSmrg basic_machine=$field1-$field2 15820f5670eSmrg basic_os=$field3 159a570218aSmrg ;; 160a570218aSmrg esac 161b1297603Smrg ;; 162a570218aSmrg *-*) 16320f5670eSmrg # A lone config we happen to match not fitting any pattern 164a570218aSmrg case $field1-$field2 in 165a570218aSmrg decstation-3100) 166a570218aSmrg basic_machine=mips-dec 16720f5670eSmrg basic_os= 168a570218aSmrg ;; 169a570218aSmrg *-*) 170a570218aSmrg # Second component is usually, but not always the OS 171a570218aSmrg case $field2 in 172a570218aSmrg # Prevent following clause from handling this valid os 173a570218aSmrg sun*os*) 174a570218aSmrg basic_machine=$field1 17520f5670eSmrg basic_os=$field2 17620f5670eSmrg ;; 17720f5670eSmrg zephyr*) 17820f5670eSmrg basic_machine=$field1-unknown 17920f5670eSmrg basic_os=$field2 180a570218aSmrg ;; 181a570218aSmrg # Manufacturers 182a570218aSmrg dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ 183a570218aSmrg | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ 184a570218aSmrg | unicom* | ibm* | next | hp | isi* | apollo | altos* \ 185a570218aSmrg | convergent* | ncr* | news | 32* | 3600* | 3100* \ 186a570218aSmrg | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ 187a570218aSmrg | ultra | tti* | harris | dolphin | highlevel | gould \ 188a570218aSmrg | cbm | ns | masscomp | apple | axis | knuth | cray \ 189a570218aSmrg | microblaze* | sim | cisco \ 190a570218aSmrg | oki | wec | wrs | winbond) 191a570218aSmrg basic_machine=$field1-$field2 19220f5670eSmrg basic_os= 193a570218aSmrg ;; 194a570218aSmrg *) 195a570218aSmrg basic_machine=$field1 19620f5670eSmrg basic_os=$field2 197a570218aSmrg ;; 198a570218aSmrg esac 199a570218aSmrg ;; 200a570218aSmrg esac 201b1297603Smrg ;; 202a570218aSmrg *) 203a570218aSmrg # Convert single-component short-hands not valid as part of 204a570218aSmrg # multi-component configurations. 205a570218aSmrg case $field1 in 206a570218aSmrg 386bsd) 207a570218aSmrg basic_machine=i386-pc 20820f5670eSmrg basic_os=bsd 209a570218aSmrg ;; 210a570218aSmrg a29khif) 211a570218aSmrg basic_machine=a29k-amd 21220f5670eSmrg basic_os=udi 213a570218aSmrg ;; 214a570218aSmrg adobe68k) 215a570218aSmrg basic_machine=m68010-adobe 21620f5670eSmrg basic_os=scout 217a570218aSmrg ;; 218a570218aSmrg alliant) 219a570218aSmrg basic_machine=fx80-alliant 22020f5670eSmrg basic_os= 221a570218aSmrg ;; 222a570218aSmrg altos | altos3068) 223a570218aSmrg basic_machine=m68k-altos 22420f5670eSmrg basic_os= 225a570218aSmrg ;; 226a570218aSmrg am29k) 227a570218aSmrg basic_machine=a29k-none 22820f5670eSmrg basic_os=bsd 229a570218aSmrg ;; 230a570218aSmrg amdahl) 231a570218aSmrg basic_machine=580-amdahl 23220f5670eSmrg basic_os=sysv 233a570218aSmrg ;; 234a570218aSmrg amiga) 235a570218aSmrg basic_machine=m68k-unknown 23620f5670eSmrg basic_os= 237a570218aSmrg ;; 238a570218aSmrg amigaos | amigados) 239a570218aSmrg basic_machine=m68k-unknown 24020f5670eSmrg basic_os=amigaos 241a570218aSmrg ;; 242a570218aSmrg amigaunix | amix) 243a570218aSmrg basic_machine=m68k-unknown 24420f5670eSmrg basic_os=sysv4 245a570218aSmrg ;; 246a570218aSmrg apollo68) 247a570218aSmrg basic_machine=m68k-apollo 24820f5670eSmrg basic_os=sysv 249a570218aSmrg ;; 250a570218aSmrg apollo68bsd) 251a570218aSmrg basic_machine=m68k-apollo 25220f5670eSmrg basic_os=bsd 253a570218aSmrg ;; 254a570218aSmrg aros) 255a570218aSmrg basic_machine=i386-pc 25620f5670eSmrg basic_os=aros 257a570218aSmrg ;; 258a570218aSmrg aux) 259a570218aSmrg basic_machine=m68k-apple 26020f5670eSmrg basic_os=aux 261a570218aSmrg ;; 262a570218aSmrg balance) 263a570218aSmrg basic_machine=ns32k-sequent 26420f5670eSmrg basic_os=dynix 265a570218aSmrg ;; 266a570218aSmrg blackfin) 267a570218aSmrg basic_machine=bfin-unknown 26820f5670eSmrg basic_os=linux 269a570218aSmrg ;; 270a570218aSmrg cegcc) 271a570218aSmrg basic_machine=arm-unknown 27220f5670eSmrg basic_os=cegcc 273a570218aSmrg ;; 274a570218aSmrg convex-c1) 275a570218aSmrg basic_machine=c1-convex 27620f5670eSmrg basic_os=bsd 277a570218aSmrg ;; 278a570218aSmrg convex-c2) 279a570218aSmrg basic_machine=c2-convex 28020f5670eSmrg basic_os=bsd 281a570218aSmrg ;; 282a570218aSmrg convex-c32) 283a570218aSmrg basic_machine=c32-convex 28420f5670eSmrg basic_os=bsd 285a570218aSmrg ;; 286a570218aSmrg convex-c34) 287a570218aSmrg basic_machine=c34-convex 28820f5670eSmrg basic_os=bsd 289a570218aSmrg ;; 290a570218aSmrg convex-c38) 291a570218aSmrg basic_machine=c38-convex 29220f5670eSmrg basic_os=bsd 293a570218aSmrg ;; 294a570218aSmrg cray) 295a570218aSmrg basic_machine=j90-cray 29620f5670eSmrg basic_os=unicos 297a570218aSmrg ;; 298a570218aSmrg crds | unos) 299a570218aSmrg basic_machine=m68k-crds 30020f5670eSmrg basic_os= 301a570218aSmrg ;; 302a570218aSmrg da30) 303a570218aSmrg basic_machine=m68k-da30 30420f5670eSmrg basic_os= 305a570218aSmrg ;; 306a570218aSmrg decstation | pmax | pmin | dec3100 | decstatn) 307a570218aSmrg basic_machine=mips-dec 30820f5670eSmrg basic_os= 309a570218aSmrg ;; 310a570218aSmrg delta88) 311a570218aSmrg basic_machine=m88k-motorola 31220f5670eSmrg basic_os=sysv3 313a570218aSmrg ;; 314a570218aSmrg dicos) 315a570218aSmrg basic_machine=i686-pc 31620f5670eSmrg basic_os=dicos 317a570218aSmrg ;; 318a570218aSmrg djgpp) 319a570218aSmrg basic_machine=i586-pc 32020f5670eSmrg basic_os=msdosdjgpp 321a570218aSmrg ;; 322a570218aSmrg ebmon29k) 323a570218aSmrg basic_machine=a29k-amd 32420f5670eSmrg basic_os=ebmon 325a570218aSmrg ;; 326a570218aSmrg es1800 | OSE68k | ose68k | ose | OSE) 327a570218aSmrg basic_machine=m68k-ericsson 32820f5670eSmrg basic_os=ose 329a570218aSmrg ;; 330a570218aSmrg gmicro) 331a570218aSmrg basic_machine=tron-gmicro 33220f5670eSmrg basic_os=sysv 333a570218aSmrg ;; 334a570218aSmrg go32) 335a570218aSmrg basic_machine=i386-pc 33620f5670eSmrg basic_os=go32 337a570218aSmrg ;; 338a570218aSmrg h8300hms) 339a570218aSmrg basic_machine=h8300-hitachi 34020f5670eSmrg basic_os=hms 341a570218aSmrg ;; 342a570218aSmrg h8300xray) 343a570218aSmrg basic_machine=h8300-hitachi 34420f5670eSmrg basic_os=xray 345a570218aSmrg ;; 346a570218aSmrg h8500hms) 347a570218aSmrg basic_machine=h8500-hitachi 34820f5670eSmrg basic_os=hms 349a570218aSmrg ;; 350a570218aSmrg harris) 351a570218aSmrg basic_machine=m88k-harris 35220f5670eSmrg basic_os=sysv3 353a570218aSmrg ;; 35420f5670eSmrg hp300 | hp300hpux) 355a570218aSmrg basic_machine=m68k-hp 35620f5670eSmrg basic_os=hpux 357a570218aSmrg ;; 358a570218aSmrg hp300bsd) 359a570218aSmrg basic_machine=m68k-hp 36020f5670eSmrg basic_os=bsd 361a570218aSmrg ;; 362a570218aSmrg hppaosf) 363a570218aSmrg basic_machine=hppa1.1-hp 36420f5670eSmrg basic_os=osf 365a570218aSmrg ;; 366a570218aSmrg hppro) 367a570218aSmrg basic_machine=hppa1.1-hp 36820f5670eSmrg basic_os=proelf 369a570218aSmrg ;; 370a570218aSmrg i386mach) 371a570218aSmrg basic_machine=i386-mach 37220f5670eSmrg basic_os=mach 373a570218aSmrg ;; 374a570218aSmrg isi68 | isi) 375a570218aSmrg basic_machine=m68k-isi 37620f5670eSmrg basic_os=sysv 377a570218aSmrg ;; 378a570218aSmrg m68knommu) 379a570218aSmrg basic_machine=m68k-unknown 38020f5670eSmrg basic_os=linux 381a570218aSmrg ;; 382a570218aSmrg magnum | m3230) 383a570218aSmrg basic_machine=mips-mips 38420f5670eSmrg basic_os=sysv 385a570218aSmrg ;; 386a570218aSmrg merlin) 387a570218aSmrg basic_machine=ns32k-utek 38820f5670eSmrg basic_os=sysv 389a570218aSmrg ;; 390a570218aSmrg mingw64) 391a570218aSmrg basic_machine=x86_64-pc 39220f5670eSmrg basic_os=mingw64 393a570218aSmrg ;; 394a570218aSmrg mingw32) 395a570218aSmrg basic_machine=i686-pc 39620f5670eSmrg basic_os=mingw32 397a570218aSmrg ;; 398a570218aSmrg mingw32ce) 399a570218aSmrg basic_machine=arm-unknown 40020f5670eSmrg basic_os=mingw32ce 401a570218aSmrg ;; 402a570218aSmrg monitor) 403a570218aSmrg basic_machine=m68k-rom68k 40420f5670eSmrg basic_os=coff 405a570218aSmrg ;; 406a570218aSmrg morphos) 407a570218aSmrg basic_machine=powerpc-unknown 40820f5670eSmrg basic_os=morphos 409a570218aSmrg ;; 410a570218aSmrg moxiebox) 411a570218aSmrg basic_machine=moxie-unknown 41220f5670eSmrg basic_os=moxiebox 413a570218aSmrg ;; 414a570218aSmrg msdos) 415a570218aSmrg basic_machine=i386-pc 41620f5670eSmrg basic_os=msdos 417a570218aSmrg ;; 418a570218aSmrg msys) 419a570218aSmrg basic_machine=i686-pc 42020f5670eSmrg basic_os=msys 421a570218aSmrg ;; 422a570218aSmrg mvs) 423a570218aSmrg basic_machine=i370-ibm 42420f5670eSmrg basic_os=mvs 425a570218aSmrg ;; 426a570218aSmrg nacl) 427a570218aSmrg basic_machine=le32-unknown 42820f5670eSmrg basic_os=nacl 429a570218aSmrg ;; 430a570218aSmrg ncr3000) 431a570218aSmrg basic_machine=i486-ncr 43220f5670eSmrg basic_os=sysv4 433a570218aSmrg ;; 434a570218aSmrg netbsd386) 435a570218aSmrg basic_machine=i386-pc 43620f5670eSmrg basic_os=netbsd 437a570218aSmrg ;; 438a570218aSmrg netwinder) 439a570218aSmrg basic_machine=armv4l-rebel 44020f5670eSmrg basic_os=linux 441a570218aSmrg ;; 442a570218aSmrg news | news700 | news800 | news900) 443a570218aSmrg basic_machine=m68k-sony 44420f5670eSmrg basic_os=newsos 445a570218aSmrg ;; 446a570218aSmrg news1000) 447a570218aSmrg basic_machine=m68030-sony 44820f5670eSmrg basic_os=newsos 449a570218aSmrg ;; 450a570218aSmrg necv70) 451a570218aSmrg basic_machine=v70-nec 45220f5670eSmrg basic_os=sysv 453a570218aSmrg ;; 454a570218aSmrg nh3000) 455a570218aSmrg basic_machine=m68k-harris 45620f5670eSmrg basic_os=cxux 457a570218aSmrg ;; 458a570218aSmrg nh[45]000) 459a570218aSmrg basic_machine=m88k-harris 46020f5670eSmrg basic_os=cxux 461a570218aSmrg ;; 462a570218aSmrg nindy960) 463a570218aSmrg basic_machine=i960-intel 46420f5670eSmrg basic_os=nindy 465a570218aSmrg ;; 466a570218aSmrg mon960) 467a570218aSmrg basic_machine=i960-intel 46820f5670eSmrg basic_os=mon960 469a570218aSmrg ;; 470a570218aSmrg nonstopux) 471a570218aSmrg basic_machine=mips-compaq 47220f5670eSmrg basic_os=nonstopux 473a570218aSmrg ;; 474a570218aSmrg os400) 475a570218aSmrg basic_machine=powerpc-ibm 47620f5670eSmrg basic_os=os400 477a570218aSmrg ;; 478a570218aSmrg OSE68000 | ose68000) 479a570218aSmrg basic_machine=m68000-ericsson 48020f5670eSmrg basic_os=ose 481a570218aSmrg ;; 482a570218aSmrg os68k) 483a570218aSmrg basic_machine=m68k-none 48420f5670eSmrg basic_os=os68k 485a570218aSmrg ;; 486a570218aSmrg paragon) 487a570218aSmrg basic_machine=i860-intel 48820f5670eSmrg basic_os=osf 489a570218aSmrg ;; 490a570218aSmrg parisc) 491a570218aSmrg basic_machine=hppa-unknown 49220f5670eSmrg basic_os=linux 49320f5670eSmrg ;; 49420f5670eSmrg psp) 49520f5670eSmrg basic_machine=mipsallegrexel-sony 49620f5670eSmrg basic_os=psp 497a570218aSmrg ;; 498a570218aSmrg pw32) 499a570218aSmrg basic_machine=i586-unknown 50020f5670eSmrg basic_os=pw32 501a570218aSmrg ;; 502a570218aSmrg rdos | rdos64) 503a570218aSmrg basic_machine=x86_64-pc 50420f5670eSmrg basic_os=rdos 505a570218aSmrg ;; 506a570218aSmrg rdos32) 507a570218aSmrg basic_machine=i386-pc 50820f5670eSmrg basic_os=rdos 509a570218aSmrg ;; 510a570218aSmrg rom68k) 511a570218aSmrg basic_machine=m68k-rom68k 51220f5670eSmrg basic_os=coff 513a570218aSmrg ;; 514a570218aSmrg sa29200) 515a570218aSmrg basic_machine=a29k-amd 51620f5670eSmrg basic_os=udi 517a570218aSmrg ;; 518a570218aSmrg sei) 519a570218aSmrg basic_machine=mips-sei 52020f5670eSmrg basic_os=seiux 521a570218aSmrg ;; 522a570218aSmrg sequent) 523a570218aSmrg basic_machine=i386-sequent 52420f5670eSmrg basic_os= 525a570218aSmrg ;; 526a570218aSmrg sps7) 527a570218aSmrg basic_machine=m68k-bull 52820f5670eSmrg basic_os=sysv2 529a570218aSmrg ;; 530a570218aSmrg st2000) 531a570218aSmrg basic_machine=m68k-tandem 53220f5670eSmrg basic_os= 533a570218aSmrg ;; 534a570218aSmrg stratus) 535a570218aSmrg basic_machine=i860-stratus 53620f5670eSmrg basic_os=sysv4 537a570218aSmrg ;; 538a570218aSmrg sun2) 539a570218aSmrg basic_machine=m68000-sun 54020f5670eSmrg basic_os= 541a570218aSmrg ;; 542a570218aSmrg sun2os3) 543a570218aSmrg basic_machine=m68000-sun 54420f5670eSmrg basic_os=sunos3 545a570218aSmrg ;; 546a570218aSmrg sun2os4) 547a570218aSmrg basic_machine=m68000-sun 54820f5670eSmrg basic_os=sunos4 549a570218aSmrg ;; 550a570218aSmrg sun3) 551a570218aSmrg basic_machine=m68k-sun 55220f5670eSmrg basic_os= 553a570218aSmrg ;; 554a570218aSmrg sun3os3) 555a570218aSmrg basic_machine=m68k-sun 55620f5670eSmrg basic_os=sunos3 557a570218aSmrg ;; 558a570218aSmrg sun3os4) 559a570218aSmrg basic_machine=m68k-sun 56020f5670eSmrg basic_os=sunos4 561a570218aSmrg ;; 562a570218aSmrg sun4) 563a570218aSmrg basic_machine=sparc-sun 56420f5670eSmrg basic_os= 565a570218aSmrg ;; 566a570218aSmrg sun4os3) 567a570218aSmrg basic_machine=sparc-sun 56820f5670eSmrg basic_os=sunos3 569a570218aSmrg ;; 570a570218aSmrg sun4os4) 571a570218aSmrg basic_machine=sparc-sun 57220f5670eSmrg basic_os=sunos4 573a570218aSmrg ;; 574a570218aSmrg sun4sol2) 575a570218aSmrg basic_machine=sparc-sun 57620f5670eSmrg basic_os=solaris2 577a570218aSmrg ;; 578a570218aSmrg sun386 | sun386i | roadrunner) 579a570218aSmrg basic_machine=i386-sun 58020f5670eSmrg basic_os= 581a570218aSmrg ;; 582a570218aSmrg sv1) 583a570218aSmrg basic_machine=sv1-cray 58420f5670eSmrg basic_os=unicos 585a570218aSmrg ;; 586a570218aSmrg symmetry) 587a570218aSmrg basic_machine=i386-sequent 58820f5670eSmrg basic_os=dynix 589a570218aSmrg ;; 590a570218aSmrg t3e) 591a570218aSmrg basic_machine=alphaev5-cray 59220f5670eSmrg basic_os=unicos 593a570218aSmrg ;; 594a570218aSmrg t90) 595a570218aSmrg basic_machine=t90-cray 59620f5670eSmrg basic_os=unicos 597a570218aSmrg ;; 598a570218aSmrg toad1) 599a570218aSmrg basic_machine=pdp10-xkl 60020f5670eSmrg basic_os=tops20 601a570218aSmrg ;; 602a570218aSmrg tpf) 603a570218aSmrg basic_machine=s390x-ibm 60420f5670eSmrg basic_os=tpf 605a570218aSmrg ;; 606a570218aSmrg udi29k) 607a570218aSmrg basic_machine=a29k-amd 60820f5670eSmrg basic_os=udi 609a570218aSmrg ;; 610a570218aSmrg ultra3) 611a570218aSmrg basic_machine=a29k-nyu 61220f5670eSmrg basic_os=sym1 613a570218aSmrg ;; 614a570218aSmrg v810 | necv810) 615a570218aSmrg basic_machine=v810-nec 61620f5670eSmrg basic_os=none 617a570218aSmrg ;; 618a570218aSmrg vaxv) 619a570218aSmrg basic_machine=vax-dec 62020f5670eSmrg basic_os=sysv 621a570218aSmrg ;; 622a570218aSmrg vms) 623a570218aSmrg basic_machine=vax-dec 62420f5670eSmrg basic_os=vms 62520f5670eSmrg ;; 62620f5670eSmrg vsta) 62720f5670eSmrg basic_machine=i386-pc 62820f5670eSmrg basic_os=vsta 629a570218aSmrg ;; 630a570218aSmrg vxworks960) 631a570218aSmrg basic_machine=i960-wrs 63220f5670eSmrg basic_os=vxworks 633a570218aSmrg ;; 634a570218aSmrg vxworks68) 635a570218aSmrg basic_machine=m68k-wrs 63620f5670eSmrg basic_os=vxworks 637a570218aSmrg ;; 638a570218aSmrg vxworks29k) 639a570218aSmrg basic_machine=a29k-wrs 64020f5670eSmrg basic_os=vxworks 641a570218aSmrg ;; 642a570218aSmrg xbox) 643a570218aSmrg basic_machine=i686-pc 64420f5670eSmrg basic_os=mingw32 645a570218aSmrg ;; 646a570218aSmrg ymp) 647a570218aSmrg basic_machine=ymp-cray 64820f5670eSmrg basic_os=unicos 649a570218aSmrg ;; 650a570218aSmrg *) 651a570218aSmrg basic_machine=$1 65220f5670eSmrg basic_os= 653a570218aSmrg ;; 654a570218aSmrg esac 655b1297603Smrg ;; 656b1297603Smrgesac 657b1297603Smrg 658a570218aSmrg# Decode 1-component or ad-hoc basic machines 659b1297603Smrgcase $basic_machine in 660a570218aSmrg # Here we handle the default manufacturer of certain CPU types. It is in 661a570218aSmrg # some cases the only manufacturer, in others, it is the most popular. 662a570218aSmrg w89k) 663a570218aSmrg cpu=hppa1.1 664a570218aSmrg vendor=winbond 6655b944e2aSmrg ;; 666a570218aSmrg op50n) 667a570218aSmrg cpu=hppa1.1 668a570218aSmrg vendor=oki 66933734831Smrg ;; 670a570218aSmrg op60c) 671a570218aSmrg cpu=hppa1.1 672a570218aSmrg vendor=oki 67333734831Smrg ;; 674a570218aSmrg ibm*) 675a570218aSmrg cpu=i370 676a570218aSmrg vendor=ibm 67733734831Smrg ;; 678a570218aSmrg orion105) 679a570218aSmrg cpu=clipper 680a570218aSmrg vendor=highlevel 68133734831Smrg ;; 682a570218aSmrg mac | mpw | mac-mpw) 683a570218aSmrg cpu=m68k 684a570218aSmrg vendor=apple 685b1297603Smrg ;; 686a570218aSmrg pmac | pmac-mpw) 687a570218aSmrg cpu=powerpc 688a570218aSmrg vendor=apple 689b1297603Smrg ;; 690a570218aSmrg 691b1297603Smrg # Recognize the various machine names and aliases which stand 692b1297603Smrg # for a CPU type and a company and sometimes even an OS. 693b1297603Smrg 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 694a570218aSmrg cpu=m68000 695a570218aSmrg vendor=att 696b1297603Smrg ;; 697b1297603Smrg 3b*) 698a570218aSmrg cpu=we32k 699a570218aSmrg vendor=att 70033734831Smrg ;; 70133734831Smrg bluegene*) 702a570218aSmrg cpu=powerpc 703a570218aSmrg vendor=ibm 70420f5670eSmrg basic_os=cnk 705b1297603Smrg ;; 706b1297603Smrg decsystem10* | dec10*) 707a570218aSmrg cpu=pdp10 708a570218aSmrg vendor=dec 70920f5670eSmrg basic_os=tops10 710b1297603Smrg ;; 711b1297603Smrg decsystem20* | dec20*) 712a570218aSmrg cpu=pdp10 713a570218aSmrg vendor=dec 71420f5670eSmrg basic_os=tops20 715b1297603Smrg ;; 716b1297603Smrg delta | 3300 | motorola-3300 | motorola-delta \ 717b1297603Smrg | 3300-motorola | delta-motorola) 718a570218aSmrg cpu=m68k 719a570218aSmrg vendor=motorola 72033734831Smrg ;; 721a570218aSmrg dpx2*) 722a570218aSmrg cpu=m68k 723a570218aSmrg vendor=bull 72420f5670eSmrg basic_os=sysv3 725b1297603Smrg ;; 726b1297603Smrg encore | umax | mmax) 727a570218aSmrg cpu=ns32k 728a570218aSmrg vendor=encore 729b1297603Smrg ;; 730a570218aSmrg elxsi) 731a570218aSmrg cpu=elxsi 732a570218aSmrg vendor=elxsi 73320f5670eSmrg basic_os=${basic_os:-bsd} 734b1297603Smrg ;; 735b1297603Smrg fx2800) 736a570218aSmrg cpu=i860 737a570218aSmrg vendor=alliant 738b1297603Smrg ;; 739b1297603Smrg genix) 740a570218aSmrg cpu=ns32k 741a570218aSmrg vendor=ns 742b1297603Smrg ;; 743b1297603Smrg h3050r* | hiux*) 744a570218aSmrg cpu=hppa1.1 745a570218aSmrg vendor=hitachi 74620f5670eSmrg basic_os=hiuxwe2 747b1297603Smrg ;; 748b1297603Smrg hp3k9[0-9][0-9] | hp9[0-9][0-9]) 749a570218aSmrg cpu=hppa1.0 750a570218aSmrg vendor=hp 751b1297603Smrg ;; 752b1297603Smrg hp9k2[0-9][0-9] | hp9k31[0-9]) 753a570218aSmrg cpu=m68000 754a570218aSmrg vendor=hp 755b1297603Smrg ;; 756b1297603Smrg hp9k3[2-9][0-9]) 757a570218aSmrg cpu=m68k 758a570218aSmrg vendor=hp 759b1297603Smrg ;; 760b1297603Smrg hp9k6[0-9][0-9] | hp6[0-9][0-9]) 761a570218aSmrg cpu=hppa1.0 762a570218aSmrg vendor=hp 763b1297603Smrg ;; 764b1297603Smrg hp9k7[0-79][0-9] | hp7[0-79][0-9]) 765a570218aSmrg cpu=hppa1.1 766a570218aSmrg vendor=hp 767b1297603Smrg ;; 768b1297603Smrg hp9k78[0-9] | hp78[0-9]) 769b1297603Smrg # FIXME: really hppa2.0-hp 770a570218aSmrg cpu=hppa1.1 771a570218aSmrg vendor=hp 772b1297603Smrg ;; 773b1297603Smrg hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) 774b1297603Smrg # FIXME: really hppa2.0-hp 775a570218aSmrg cpu=hppa1.1 776a570218aSmrg vendor=hp 777b1297603Smrg ;; 778b1297603Smrg hp9k8[0-9][13679] | hp8[0-9][13679]) 779a570218aSmrg cpu=hppa1.1 780a570218aSmrg vendor=hp 781b1297603Smrg ;; 782b1297603Smrg hp9k8[0-9][0-9] | hp8[0-9][0-9]) 783a570218aSmrg cpu=hppa1.0 784a570218aSmrg vendor=hp 785b1297603Smrg ;; 786b1297603Smrg i*86v32) 787a570218aSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 788a570218aSmrg vendor=pc 78920f5670eSmrg basic_os=sysv32 790b1297603Smrg ;; 791b1297603Smrg i*86v4*) 792a570218aSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 793a570218aSmrg vendor=pc 79420f5670eSmrg basic_os=sysv4 795b1297603Smrg ;; 796b1297603Smrg i*86v) 797a570218aSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 798a570218aSmrg vendor=pc 79920f5670eSmrg basic_os=sysv 800b1297603Smrg ;; 801b1297603Smrg i*86sol2) 802a570218aSmrg cpu=`echo "$1" | sed -e 's/86.*/86/'` 803a570218aSmrg vendor=pc 80420f5670eSmrg basic_os=solaris2 805b1297603Smrg ;; 806a570218aSmrg j90 | j90-cray) 807a570218aSmrg cpu=j90 808a570218aSmrg vendor=cray 80920f5670eSmrg basic_os=${basic_os:-unicos} 810b1297603Smrg ;; 811b1297603Smrg iris | iris4d) 812a570218aSmrg cpu=mips 813a570218aSmrg vendor=sgi 81420f5670eSmrg case $basic_os in 815a570218aSmrg irix*) 816b1297603Smrg ;; 817b1297603Smrg *) 81820f5670eSmrg basic_os=irix4 819b1297603Smrg ;; 820b1297603Smrg esac 821b1297603Smrg ;; 822b1297603Smrg miniframe) 823a570218aSmrg cpu=m68000 824a570218aSmrg vendor=convergent 825b1297603Smrg ;; 826a570218aSmrg *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) 827a570218aSmrg cpu=m68k 828a570218aSmrg vendor=atari 82920f5670eSmrg basic_os=mint 830b1297603Smrg ;; 831b1297603Smrg news-3600 | risc-news) 832a570218aSmrg cpu=mips 833a570218aSmrg vendor=sony 83420f5670eSmrg basic_os=newsos 835b1297603Smrg ;; 836a570218aSmrg next | m*-next) 837a570218aSmrg cpu=m68k 838a570218aSmrg vendor=next 83920f5670eSmrg case $basic_os in 84020f5670eSmrg openstep*) 84120f5670eSmrg ;; 84220f5670eSmrg nextstep*) 843b1297603Smrg ;; 844a570218aSmrg ns2*) 84520f5670eSmrg basic_os=nextstep2 846b1297603Smrg ;; 847b1297603Smrg *) 84820f5670eSmrg basic_os=nextstep3 849b1297603Smrg ;; 850b1297603Smrg esac 851b1297603Smrg ;; 852b1297603Smrg np1) 853a570218aSmrg cpu=np1 854a570218aSmrg vendor=gould 855b1297603Smrg ;; 856b1297603Smrg op50n-* | op60c-*) 857a570218aSmrg cpu=hppa1.1 858a570218aSmrg vendor=oki 85920f5670eSmrg basic_os=proelf 860b1297603Smrg ;; 861b1297603Smrg pa-hitachi) 862a570218aSmrg cpu=hppa1.1 863a570218aSmrg vendor=hitachi 86420f5670eSmrg basic_os=hiuxwe2 86533734831Smrg ;; 866b1297603Smrg pbd) 867a570218aSmrg cpu=sparc 868a570218aSmrg vendor=tti 869b1297603Smrg ;; 870b1297603Smrg pbb) 871a570218aSmrg cpu=m68k 872a570218aSmrg vendor=tti 8735b944e2aSmrg ;; 874a570218aSmrg pc532) 875a570218aSmrg cpu=ns32k 876a570218aSmrg vendor=pc532 877b1297603Smrg ;; 878b1297603Smrg pn) 879a570218aSmrg cpu=pn 880a570218aSmrg vendor=gould 881b1297603Smrg ;; 882a570218aSmrg power) 883a570218aSmrg cpu=power 884a570218aSmrg vendor=ibm 885b1297603Smrg ;; 886b1297603Smrg ps2) 887a570218aSmrg cpu=i386 888a570218aSmrg vendor=ibm 889b1297603Smrg ;; 890b1297603Smrg rm[46]00) 891a570218aSmrg cpu=mips 892a570218aSmrg vendor=siemens 893b1297603Smrg ;; 894b1297603Smrg rtpc | rtpc-*) 895a570218aSmrg cpu=romp 896a570218aSmrg vendor=ibm 897b1297603Smrg ;; 898a570218aSmrg sde) 899a570218aSmrg cpu=mipsisa32 900a570218aSmrg vendor=sde 90120f5670eSmrg basic_os=${basic_os:-elf} 902b1297603Smrg ;; 903a570218aSmrg simso-wrs) 904a570218aSmrg cpu=sparclite 905a570218aSmrg vendor=wrs 90620f5670eSmrg basic_os=vxworks 907b1297603Smrg ;; 908a570218aSmrg tower | tower-32) 909a570218aSmrg cpu=m68k 910a570218aSmrg vendor=ncr 9115b944e2aSmrg ;; 912a570218aSmrg vpp*|vx|vx-*) 913a570218aSmrg cpu=f301 914a570218aSmrg vendor=fujitsu 915b1297603Smrg ;; 916a570218aSmrg w65) 917a570218aSmrg cpu=w65 918a570218aSmrg vendor=wdc 919b1297603Smrg ;; 920a570218aSmrg w89k-*) 921a570218aSmrg cpu=hppa1.1 922a570218aSmrg vendor=winbond 92320f5670eSmrg basic_os=proelf 924b1297603Smrg ;; 925a570218aSmrg none) 926a570218aSmrg cpu=none 927a570218aSmrg vendor=none 92833734831Smrg ;; 929a570218aSmrg leon|leon[3-9]) 930a570218aSmrg cpu=sparc 931a570218aSmrg vendor=$basic_machine 932b1297603Smrg ;; 933a570218aSmrg leon-*|leon[3-9]-*) 934a570218aSmrg cpu=sparc 935a570218aSmrg vendor=`echo "$basic_machine" | sed 's/-.*//'` 936b1297603Smrg ;; 937a570218aSmrg 938a570218aSmrg *-*) 93920f5670eSmrg # shellcheck disable=SC2162 94020f5670eSmrg saved_IFS=$IFS 94120f5670eSmrg IFS="-" read cpu vendor <<EOF 942a570218aSmrg$basic_machine 943a570218aSmrgEOF 94420f5670eSmrg IFS=$saved_IFS 945b1297603Smrg ;; 946a570218aSmrg # We use `pc' rather than `unknown' 947a570218aSmrg # because (1) that's what they normally are, and 948a570218aSmrg # (2) the word "unknown" tends to confuse beginning users. 949a570218aSmrg i*86 | x86_64) 950a570218aSmrg cpu=$basic_machine 951a570218aSmrg vendor=pc 952b1297603Smrg ;; 953a570218aSmrg # These rules are duplicated from below for sake of the special case above; 954a570218aSmrg # i.e. things that normalized to x86 arches should also default to "pc" 955a570218aSmrg pc98) 956a570218aSmrg cpu=i386 957a570218aSmrg vendor=pc 958b1297603Smrg ;; 959a570218aSmrg x64 | amd64) 960a570218aSmrg cpu=x86_64 961a570218aSmrg vendor=pc 962b1297603Smrg ;; 963a570218aSmrg # Recognize the basic CPU types without company name. 964a570218aSmrg *) 965a570218aSmrg cpu=$basic_machine 966a570218aSmrg vendor=unknown 96733734831Smrg ;; 968a570218aSmrgesac 969a570218aSmrg 970a570218aSmrgunset -v basic_machine 971a570218aSmrg 972a570218aSmrg# Decode basic machines in the full and proper CPU-Company form. 973a570218aSmrgcase $cpu-$vendor in 97420f5670eSmrg # Here we handle the default manufacturer of certain CPU types in canonical form. It is in 975a570218aSmrg # some cases the only manufacturer, in others, it is the most popular. 976a570218aSmrg craynv-unknown) 977a570218aSmrg vendor=cray 97820f5670eSmrg basic_os=${basic_os:-unicosmp} 979b1297603Smrg ;; 980a570218aSmrg c90-unknown | c90-cray) 981a570218aSmrg vendor=cray 98220f5670eSmrg basic_os=${Basic_os:-unicos} 983b1297603Smrg ;; 984a570218aSmrg fx80-unknown) 985a570218aSmrg vendor=alliant 986b1297603Smrg ;; 987a570218aSmrg romp-unknown) 988a570218aSmrg vendor=ibm 989b1297603Smrg ;; 990a570218aSmrg mmix-unknown) 991a570218aSmrg vendor=knuth 992b1297603Smrg ;; 993a570218aSmrg microblaze-unknown | microblazeel-unknown) 994a570218aSmrg vendor=xilinx 995b1297603Smrg ;; 996a570218aSmrg rs6000-unknown) 997a570218aSmrg vendor=ibm 998b1297603Smrg ;; 999a570218aSmrg vax-unknown) 1000a570218aSmrg vendor=dec 1001b1297603Smrg ;; 1002a570218aSmrg pdp11-unknown) 1003a570218aSmrg vendor=dec 1004b1297603Smrg ;; 1005a570218aSmrg we32k-unknown) 1006a570218aSmrg vendor=att 1007b1297603Smrg ;; 1008a570218aSmrg cydra-unknown) 1009a570218aSmrg vendor=cydrome 1010b1297603Smrg ;; 1011a570218aSmrg i370-ibm*) 1012a570218aSmrg vendor=ibm 1013b1297603Smrg ;; 1014a570218aSmrg orion-unknown) 1015a570218aSmrg vendor=highlevel 1016b1297603Smrg ;; 1017a570218aSmrg xps-unknown | xps100-unknown) 1018a570218aSmrg cpu=xps100 1019a570218aSmrg vendor=honeywell 1020b1297603Smrg ;; 1021a570218aSmrg 1022a570218aSmrg # Here we normalize CPU types with a missing or matching vendor 102320f5670eSmrg armh-unknown | armh-alt) 102420f5670eSmrg cpu=armv7l 102520f5670eSmrg vendor=alt 102620f5670eSmrg basic_os=${basic_os:-linux-gnueabihf} 102720f5670eSmrg ;; 1028a570218aSmrg dpx20-unknown | dpx20-bull) 1029a570218aSmrg cpu=rs6000 1030a570218aSmrg vendor=bull 103120f5670eSmrg basic_os=${basic_os:-bosx} 1032b1297603Smrg ;; 1033a570218aSmrg 1034a570218aSmrg # Here we normalize CPU types irrespective of the vendor 1035a570218aSmrg amd64-*) 1036a570218aSmrg cpu=x86_64 1037b1297603Smrg ;; 1038a570218aSmrg blackfin-*) 1039a570218aSmrg cpu=bfin 104020f5670eSmrg basic_os=linux 1041b1297603Smrg ;; 1042a570218aSmrg c54x-*) 1043a570218aSmrg cpu=tic54x 1044b1297603Smrg ;; 1045a570218aSmrg c55x-*) 1046a570218aSmrg cpu=tic55x 1047b1297603Smrg ;; 1048a570218aSmrg c6x-*) 1049a570218aSmrg cpu=tic6x 1050b1297603Smrg ;; 1051a570218aSmrg e500v[12]-*) 1052a570218aSmrg cpu=powerpc 105320f5670eSmrg basic_os=${basic_os}"spe" 1054b1297603Smrg ;; 1055a570218aSmrg mips3*-*) 1056a570218aSmrg cpu=mips64 1057b1297603Smrg ;; 1058a570218aSmrg ms1-*) 1059a570218aSmrg cpu=mt 1060b1297603Smrg ;; 1061a570218aSmrg m68knommu-*) 1062a570218aSmrg cpu=m68k 106320f5670eSmrg basic_os=linux 1064b1297603Smrg ;; 1065a570218aSmrg m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) 1066a570218aSmrg cpu=s12z 1067b1297603Smrg ;; 1068a570218aSmrg openrisc-*) 1069a570218aSmrg cpu=or32 1070b1297603Smrg ;; 1071a570218aSmrg parisc-*) 1072a570218aSmrg cpu=hppa 107320f5670eSmrg basic_os=linux 1074b1297603Smrg ;; 1075a570218aSmrg pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 1076a570218aSmrg cpu=i586 1077b1297603Smrg ;; 1078a570218aSmrg pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) 1079a570218aSmrg cpu=i686 1080b1297603Smrg ;; 1081a570218aSmrg pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) 1082a570218aSmrg cpu=i686 1083b1297603Smrg ;; 1084a570218aSmrg pentium4-*) 1085a570218aSmrg cpu=i786 1086b1297603Smrg ;; 1087a570218aSmrg pc98-*) 1088a570218aSmrg cpu=i386 1089b1297603Smrg ;; 1090a570218aSmrg ppc-* | ppcbe-*) 1091a570218aSmrg cpu=powerpc 1092b1297603Smrg ;; 1093a570218aSmrg ppcle-* | powerpclittle-*) 1094a570218aSmrg cpu=powerpcle 1095b1297603Smrg ;; 1096a570218aSmrg ppc64-*) 1097a570218aSmrg cpu=powerpc64 109833734831Smrg ;; 1099a570218aSmrg ppc64le-* | powerpc64little-*) 1100a570218aSmrg cpu=powerpc64le 1101b1297603Smrg ;; 1102a570218aSmrg sb1-*) 1103a570218aSmrg cpu=mipsisa64sb1 1104b1297603Smrg ;; 1105a570218aSmrg sb1el-*) 1106a570218aSmrg cpu=mipsisa64sb1el 110733734831Smrg ;; 1108a570218aSmrg sh5e[lb]-*) 1109a570218aSmrg cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` 1110b1297603Smrg ;; 1111a570218aSmrg spur-*) 1112a570218aSmrg cpu=spur 1113b1297603Smrg ;; 1114a570218aSmrg strongarm-* | thumb-*) 1115a570218aSmrg cpu=arm 1116b1297603Smrg ;; 1117a570218aSmrg tx39-*) 1118a570218aSmrg cpu=mipstx39 1119b1297603Smrg ;; 1120a570218aSmrg tx39el-*) 1121a570218aSmrg cpu=mipstx39el 1122b1297603Smrg ;; 1123a570218aSmrg x64-*) 1124a570218aSmrg cpu=x86_64 1125b1297603Smrg ;; 1126a570218aSmrg xscale-* | xscalee[bl]-*) 1127a570218aSmrg cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 1128b1297603Smrg ;; 112920f5670eSmrg arm64-* | aarch64le-*) 113020f5670eSmrg cpu=aarch64 113120f5670eSmrg ;; 1132a570218aSmrg 113320f5670eSmrg # Recognize the canonical CPU Types that limit and/or modify the 1134a570218aSmrg # company names they are paired with. 1135a570218aSmrg cr16-*) 113620f5670eSmrg basic_os=${basic_os:-elf} 1137b1297603Smrg ;; 1138a570218aSmrg crisv32-* | etraxfs*-*) 1139a570218aSmrg cpu=crisv32 1140a570218aSmrg vendor=axis 1141b1297603Smrg ;; 1142a570218aSmrg cris-* | etrax*-*) 1143a570218aSmrg cpu=cris 1144a570218aSmrg vendor=axis 1145b1297603Smrg ;; 1146a570218aSmrg crx-*) 114720f5670eSmrg basic_os=${basic_os:-elf} 1148b1297603Smrg ;; 1149a570218aSmrg neo-tandem) 1150a570218aSmrg cpu=neo 1151a570218aSmrg vendor=tandem 1152b1297603Smrg ;; 1153a570218aSmrg nse-tandem) 1154a570218aSmrg cpu=nse 1155a570218aSmrg vendor=tandem 1156b1297603Smrg ;; 1157a570218aSmrg nsr-tandem) 1158a570218aSmrg cpu=nsr 1159a570218aSmrg vendor=tandem 1160b1297603Smrg ;; 1161a570218aSmrg nsv-tandem) 1162a570218aSmrg cpu=nsv 1163a570218aSmrg vendor=tandem 1164b1297603Smrg ;; 1165a570218aSmrg nsx-tandem) 1166a570218aSmrg cpu=nsx 1167a570218aSmrg vendor=tandem 1168b1297603Smrg ;; 116920f5670eSmrg mipsallegrexel-sony) 117020f5670eSmrg cpu=mipsallegrexel 117120f5670eSmrg vendor=sony 1172b1297603Smrg ;; 1173a570218aSmrg tile*-*) 117420f5670eSmrg basic_os=${basic_os:-linux-gnu} 1175b1297603Smrg ;; 1176a570218aSmrg 1177b1297603Smrg *) 117820f5670eSmrg # Recognize the canonical CPU types that are allowed with any 1179a570218aSmrg # company name. 1180a570218aSmrg case $cpu in 1181a570218aSmrg 1750a | 580 \ 1182a570218aSmrg | a29k \ 1183a570218aSmrg | aarch64 | aarch64_be \ 1184a570218aSmrg | abacus \ 1185a570218aSmrg | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ 1186a570218aSmrg | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ 1187a570218aSmrg | alphapca5[67] | alpha64pca5[67] \ 1188a570218aSmrg | am33_2.0 \ 118920f5670eSmrg | amdgcn \ 119020f5670eSmrg | arc | arceb | arc32 | arc64 \ 119120f5670eSmrg | arm | arm[lb]e | arme[lb] | armv* \ 1192a570218aSmrg | avr | avr32 \ 1193a570218aSmrg | asmjs \ 1194a570218aSmrg | ba \ 1195a570218aSmrg | be32 | be64 \ 119620f5670eSmrg | bfin | bpf | bs2000 \ 1197a570218aSmrg | c[123]* | c30 | [cjt]90 | c4x \ 1198a570218aSmrg | c8051 | clipper | craynv | csky | cydra \ 1199a570218aSmrg | d10v | d30v | dlx | dsp16xx \ 1200a570218aSmrg | e2k | elxsi | epiphany \ 1201a570218aSmrg | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ 1202a570218aSmrg | h8300 | h8500 \ 1203a570218aSmrg | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 1204a570218aSmrg | hexagon \ 1205a570218aSmrg | i370 | i*86 | i860 | i960 | ia16 | ia64 \ 1206a570218aSmrg | ip2k | iq2000 \ 1207a570218aSmrg | k1om \ 1208a570218aSmrg | le32 | le64 \ 1209a570218aSmrg | lm32 \ 121020f5670eSmrg | loongarch32 | loongarch64 | loongarchx32 \ 1211a570218aSmrg | m32c | m32r | m32rle \ 121220f5670eSmrg | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 121320f5670eSmrg | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 1214a570218aSmrg | m88110 | m88k | maxq | mb | mcore | mep | metag \ 1215a570218aSmrg | microblaze | microblazeel \ 1216a570218aSmrg | mips | mipsbe | mipseb | mipsel | mipsle \ 1217a570218aSmrg | mips16 \ 121820f5670eSmrg | mips64 | mips64eb | mips64el \ 1219a570218aSmrg | mips64octeon | mips64octeonel \ 1220a570218aSmrg | mips64orion | mips64orionel \ 1221a570218aSmrg | mips64r5900 | mips64r5900el \ 1222a570218aSmrg | mips64vr | mips64vrel \ 1223a570218aSmrg | mips64vr4100 | mips64vr4100el \ 1224a570218aSmrg | mips64vr4300 | mips64vr4300el \ 1225a570218aSmrg | mips64vr5000 | mips64vr5000el \ 1226a570218aSmrg | mips64vr5900 | mips64vr5900el \ 1227a570218aSmrg | mipsisa32 | mipsisa32el \ 1228a570218aSmrg | mipsisa32r2 | mipsisa32r2el \ 122920f5670eSmrg | mipsisa32r3 | mipsisa32r3el \ 123020f5670eSmrg | mipsisa32r5 | mipsisa32r5el \ 1231a570218aSmrg | mipsisa32r6 | mipsisa32r6el \ 1232a570218aSmrg | mipsisa64 | mipsisa64el \ 1233a570218aSmrg | mipsisa64r2 | mipsisa64r2el \ 123420f5670eSmrg | mipsisa64r3 | mipsisa64r3el \ 123520f5670eSmrg | mipsisa64r5 | mipsisa64r5el \ 1236a570218aSmrg | mipsisa64r6 | mipsisa64r6el \ 1237a570218aSmrg | mipsisa64sb1 | mipsisa64sb1el \ 1238a570218aSmrg | mipsisa64sr71k | mipsisa64sr71kel \ 1239a570218aSmrg | mipsr5900 | mipsr5900el \ 1240a570218aSmrg | mipstx39 | mipstx39el \ 1241a570218aSmrg | mmix \ 1242a570218aSmrg | mn10200 | mn10300 \ 1243a570218aSmrg | moxie \ 1244a570218aSmrg | mt \ 1245a570218aSmrg | msp430 \ 1246a570218aSmrg | nds32 | nds32le | nds32be \ 1247a570218aSmrg | nfp \ 1248a570218aSmrg | nios | nios2 | nios2eb | nios2el \ 124920f5670eSmrg | none | np1 | ns16k | ns32k | nvptx \ 1250a570218aSmrg | open8 \ 1251a570218aSmrg | or1k* \ 1252a570218aSmrg | or32 \ 1253a570218aSmrg | orion \ 125420f5670eSmrg | picochip \ 1255a570218aSmrg | pdp10 | pdp11 | pj | pjl | pn | power \ 1256a570218aSmrg | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1257a570218aSmrg | pru \ 1258a570218aSmrg | pyramid \ 125920f5670eSmrg | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 1260a570218aSmrg | rl78 | romp | rs6000 | rx \ 126120f5670eSmrg | s390 | s390x \ 1262a570218aSmrg | score \ 126320f5670eSmrg | sh | shl \ 126420f5670eSmrg | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ 1265a570218aSmrg | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ 1266a570218aSmrg | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ 1267a570218aSmrg | sparclite \ 1268a570218aSmrg | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ 1269a570218aSmrg | spu \ 1270a570218aSmrg | tahoe \ 127120f5670eSmrg | thumbv7* \ 1272a570218aSmrg | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 1273a570218aSmrg | tron \ 1274a570218aSmrg | ubicom32 \ 127520f5670eSmrg | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 1276a570218aSmrg | vax \ 1277a570218aSmrg | visium \ 127820f5670eSmrg | w65 \ 127920f5670eSmrg | wasm32 | wasm64 \ 1280a570218aSmrg | we32k \ 1281a570218aSmrg | x86 | x86_64 | xc16x | xgate | xps100 \ 1282a570218aSmrg | xstormy16 | xtensa* \ 1283a570218aSmrg | ymp \ 1284a570218aSmrg | z8k | z80) 1285a570218aSmrg ;; 1286a570218aSmrg 1287a570218aSmrg *) 1288a570218aSmrg echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 1289a570218aSmrg exit 1 1290a570218aSmrg ;; 1291a570218aSmrg esac 1292b1297603Smrg ;; 1293b1297603Smrgesac 1294b1297603Smrg 1295b1297603Smrg# Here we canonicalize certain aliases for manufacturers. 1296a570218aSmrgcase $vendor in 1297a570218aSmrg digital*) 1298a570218aSmrg vendor=dec 1299b1297603Smrg ;; 1300a570218aSmrg commodore*) 1301a570218aSmrg vendor=cbm 1302b1297603Smrg ;; 1303b1297603Smrg *) 1304b1297603Smrg ;; 1305b1297603Smrgesac 1306b1297603Smrg 1307b1297603Smrg# Decode manufacturer-specific aliases for certain operating systems. 1308b1297603Smrg 130920f5670eSmrgif test x$basic_os != x 1310b1297603Smrgthen 131120f5670eSmrg 131220f5670eSmrg# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 131320f5670eSmrg# set os. 131420f5670eSmrgcase $basic_os in 131520f5670eSmrg gnu/linux*) 131620f5670eSmrg kernel=linux 131720f5670eSmrg os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 131820f5670eSmrg ;; 131920f5670eSmrg os2-emx) 132020f5670eSmrg kernel=os2 132120f5670eSmrg os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 132220f5670eSmrg ;; 132320f5670eSmrg nto-qnx*) 132420f5670eSmrg kernel=nto 132520f5670eSmrg os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 132620f5670eSmrg ;; 132720f5670eSmrg *-*) 132820f5670eSmrg # shellcheck disable=SC2162 132920f5670eSmrg saved_IFS=$IFS 133020f5670eSmrg IFS="-" read kernel os <<EOF 133120f5670eSmrg$basic_os 133220f5670eSmrgEOF 133320f5670eSmrg IFS=$saved_IFS 133420f5670eSmrg ;; 133520f5670eSmrg # Default OS when just kernel was specified 133620f5670eSmrg nto*) 133720f5670eSmrg kernel=nto 133820f5670eSmrg os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 133920f5670eSmrg ;; 134020f5670eSmrg linux*) 134120f5670eSmrg kernel=linux 134220f5670eSmrg os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 134320f5670eSmrg ;; 134420f5670eSmrg *) 134520f5670eSmrg kernel= 134620f5670eSmrg os=$basic_os 134720f5670eSmrg ;; 134820f5670eSmrgesac 134920f5670eSmrg 135020f5670eSmrg# Now, normalize the OS (knowing we just have one component, it's not a kernel, 135120f5670eSmrg# etc.) 1352b1297603Smrgcase $os in 1353a570218aSmrg # First match some system type aliases that might get confused 1354a570218aSmrg # with valid system types. 1355a570218aSmrg # solaris* is a basic system type, with this one exception. 1356a570218aSmrg auroraux) 1357a570218aSmrg os=auroraux 135833734831Smrg ;; 1359a570218aSmrg bluegene*) 1360a570218aSmrg os=cnk 1361b1297603Smrg ;; 1362a570218aSmrg solaris1 | solaris1.*) 136320f5670eSmrg os=`echo "$os" | sed -e 's|solaris1|sunos4|'` 1364b1297603Smrg ;; 1365a570218aSmrg solaris) 1366a570218aSmrg os=solaris2 1367b1297603Smrg ;; 1368a570218aSmrg unixware*) 1369a570218aSmrg os=sysv4.2uw 1370b1297603Smrg ;; 1371a570218aSmrg # es1800 is here to avoid being matched by es* (a different OS) 1372a570218aSmrg es1800*) 1373a570218aSmrg os=ose 1374a570218aSmrg ;; 1375a570218aSmrg # Some version numbers need modification 1376a570218aSmrg chorusos*) 1377a570218aSmrg os=chorusos 1378a570218aSmrg ;; 1379a570218aSmrg isc) 1380a570218aSmrg os=isc2.2 1381a570218aSmrg ;; 1382a570218aSmrg sco6) 1383a570218aSmrg os=sco5v6 1384a570218aSmrg ;; 1385a570218aSmrg sco5) 1386a570218aSmrg os=sco3.2v5 1387a570218aSmrg ;; 1388a570218aSmrg sco4) 1389a570218aSmrg os=sco3.2v4 1390a570218aSmrg ;; 1391a570218aSmrg sco3.2.[4-9]*) 139220f5670eSmrg os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 1393a570218aSmrg ;; 139420f5670eSmrg sco*v* | scout) 1395a570218aSmrg # Don't match below 1396a570218aSmrg ;; 1397a570218aSmrg sco*) 1398a570218aSmrg os=sco3.2v2 1399a570218aSmrg ;; 1400a570218aSmrg psos*) 1401a570218aSmrg os=psos 1402a570218aSmrg ;; 1403a570218aSmrg qnx*) 140420f5670eSmrg os=qnx 1405b1297603Smrg ;; 1406a570218aSmrg hiux*) 1407a570218aSmrg os=hiuxwe2 1408b1297603Smrg ;; 1409a570218aSmrg lynx*178) 1410a570218aSmrg os=lynxos178 1411a570218aSmrg ;; 1412a570218aSmrg lynx*5) 1413a570218aSmrg os=lynxos5 1414b1297603Smrg ;; 141520f5670eSmrg lynxos*) 141620f5670eSmrg # don't get caught up in next wildcard 141720f5670eSmrg ;; 1418a570218aSmrg lynx*) 1419a570218aSmrg os=lynxos 1420b1297603Smrg ;; 142120f5670eSmrg mac[0-9]*) 1422a570218aSmrg os=`echo "$os" | sed -e 's|mac|macos|'` 1423b1297603Smrg ;; 1424a570218aSmrg opened*) 1425a570218aSmrg os=openedition 1426b1297603Smrg ;; 1427a570218aSmrg os400*) 1428a570218aSmrg os=os400 1429b1297603Smrg ;; 1430a570218aSmrg sunos5*) 1431a570218aSmrg os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1432b1297603Smrg ;; 1433a570218aSmrg sunos6*) 1434a570218aSmrg os=`echo "$os" | sed -e 's|sunos6|solaris3|'` 1435b1297603Smrg ;; 1436a570218aSmrg wince*) 1437a570218aSmrg os=wince 1438b1297603Smrg ;; 1439a570218aSmrg utek*) 1440a570218aSmrg os=bsd 1441b1297603Smrg ;; 1442a570218aSmrg dynix*) 1443a570218aSmrg os=bsd 1444b1297603Smrg ;; 1445a570218aSmrg acis*) 1446a570218aSmrg os=aos 1447b1297603Smrg ;; 1448a570218aSmrg atheos*) 1449a570218aSmrg os=atheos 1450b1297603Smrg ;; 1451a570218aSmrg syllable*) 1452a570218aSmrg os=syllable 1453b1297603Smrg ;; 1454a570218aSmrg 386bsd) 1455a570218aSmrg os=bsd 1456b1297603Smrg ;; 1457a570218aSmrg ctix* | uts*) 1458a570218aSmrg os=sysv 1459b1297603Smrg ;; 1460a570218aSmrg nova*) 1461a570218aSmrg os=rtmk-nova 1462b1297603Smrg ;; 1463a570218aSmrg ns2) 1464a570218aSmrg os=nextstep2 1465a570218aSmrg ;; 1466b1297603Smrg # Preserve the version number of sinix5. 1467a570218aSmrg sinix5.*) 146820f5670eSmrg os=`echo "$os" | sed -e 's|sinix|sysv|'` 1469b1297603Smrg ;; 1470a570218aSmrg sinix*) 1471a570218aSmrg os=sysv4 1472b1297603Smrg ;; 1473a570218aSmrg tpf*) 1474a570218aSmrg os=tpf 1475b1297603Smrg ;; 1476a570218aSmrg triton*) 1477a570218aSmrg os=sysv3 1478b1297603Smrg ;; 1479a570218aSmrg oss*) 1480a570218aSmrg os=sysv3 1481b1297603Smrg ;; 1482a570218aSmrg svr4*) 1483a570218aSmrg os=sysv4 1484b1297603Smrg ;; 1485a570218aSmrg svr3) 1486a570218aSmrg os=sysv3 1487b1297603Smrg ;; 1488a570218aSmrg sysvr4) 1489a570218aSmrg os=sysv4 1490b1297603Smrg ;; 1491a570218aSmrg ose*) 1492a570218aSmrg os=ose 1493b1297603Smrg ;; 1494a570218aSmrg *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) 1495a570218aSmrg os=mint 1496b1297603Smrg ;; 1497a570218aSmrg dicos*) 1498a570218aSmrg os=dicos 1499b1297603Smrg ;; 1500a570218aSmrg pikeos*) 1501a570218aSmrg # Until real need of OS specific support for 1502a570218aSmrg # particular features comes up, bare metal 1503a570218aSmrg # configurations are quite functional. 1504a570218aSmrg case $cpu in 1505a570218aSmrg arm*) 1506a570218aSmrg os=eabi 1507a570218aSmrg ;; 1508a570218aSmrg *) 1509a570218aSmrg os=elf 1510a570218aSmrg ;; 1511a570218aSmrg esac 1512b1297603Smrg ;; 1513b1297603Smrg *) 151420f5670eSmrg # No normalization, but not necessarily accepted, that comes below. 1515b1297603Smrg ;; 1516b1297603Smrgesac 151720f5670eSmrg 1518b1297603Smrgelse 1519b1297603Smrg 1520b1297603Smrg# Here we handle the default operating systems that come with various machines. 1521b1297603Smrg# The value should be what the vendor currently ships out the door with their 1522b1297603Smrg# machine or put another way, the most popular os provided with the machine. 1523b1297603Smrg 1524b1297603Smrg# Note that if you're going to try to match "-MANUFACTURER" here (say, 1525b1297603Smrg# "-sun"), then you have to tell the case statement up towards the top 1526b1297603Smrg# that MANUFACTURER isn't an operating system. Otherwise, code above 1527b1297603Smrg# will signal an error saying that MANUFACTURER isn't an operating 1528b1297603Smrg# system, and we'll never get to this point. 1529b1297603Smrg 153020f5670eSmrgkernel= 1531a570218aSmrgcase $cpu-$vendor in 153233734831Smrg score-*) 1533a570218aSmrg os=elf 15345b944e2aSmrg ;; 153533734831Smrg spu-*) 1536a570218aSmrg os=elf 15375b944e2aSmrg ;; 1538b1297603Smrg *-acorn) 1539a570218aSmrg os=riscix1.2 1540b1297603Smrg ;; 1541b1297603Smrg arm*-rebel) 154220f5670eSmrg kernel=linux 154320f5670eSmrg os=gnu 1544b1297603Smrg ;; 1545b1297603Smrg arm*-semi) 1546a570218aSmrg os=aout 1547b1297603Smrg ;; 154833734831Smrg c4x-* | tic4x-*) 1549a570218aSmrg os=coff 1550a570218aSmrg ;; 1551a570218aSmrg c8051-*) 1552a570218aSmrg os=elf 1553a570218aSmrg ;; 1554a570218aSmrg clipper-intergraph) 1555a570218aSmrg os=clix 155633734831Smrg ;; 155733734831Smrg hexagon-*) 1558a570218aSmrg os=elf 155933734831Smrg ;; 156033734831Smrg tic54x-*) 1561a570218aSmrg os=coff 156233734831Smrg ;; 156333734831Smrg tic55x-*) 1564a570218aSmrg os=coff 156533734831Smrg ;; 156633734831Smrg tic6x-*) 1567a570218aSmrg os=coff 15685b944e2aSmrg ;; 1569b1297603Smrg # This must come before the *-dec entry. 1570b1297603Smrg pdp10-*) 1571a570218aSmrg os=tops20 1572b1297603Smrg ;; 1573b1297603Smrg pdp11-*) 1574a570218aSmrg os=none 1575b1297603Smrg ;; 1576b1297603Smrg *-dec | vax-*) 1577a570218aSmrg os=ultrix4.2 1578b1297603Smrg ;; 1579b1297603Smrg m68*-apollo) 1580a570218aSmrg os=domain 1581b1297603Smrg ;; 1582b1297603Smrg i386-sun) 1583a570218aSmrg os=sunos4.0.2 1584b1297603Smrg ;; 1585b1297603Smrg m68000-sun) 1586a570218aSmrg os=sunos3 1587b1297603Smrg ;; 1588b1297603Smrg m68*-cisco) 1589a570218aSmrg os=aout 1590b1297603Smrg ;; 159133734831Smrg mep-*) 1592a570218aSmrg os=elf 159333734831Smrg ;; 1594b1297603Smrg mips*-cisco) 1595a570218aSmrg os=elf 1596b1297603Smrg ;; 1597b1297603Smrg mips*-*) 1598a570218aSmrg os=elf 159933734831Smrg ;; 1600b1297603Smrg or32-*) 1601a570218aSmrg os=coff 1602b1297603Smrg ;; 1603b1297603Smrg *-tti) # must be before sparc entry or we get the wrong os. 1604a570218aSmrg os=sysv3 1605b1297603Smrg ;; 1606b1297603Smrg sparc-* | *-sun) 1607a570218aSmrg os=sunos4.1.1 1608b1297603Smrg ;; 1609a570218aSmrg pru-*) 1610a570218aSmrg os=elf 1611b1297603Smrg ;; 1612a570218aSmrg *-be) 1613a570218aSmrg os=beos 1614b1297603Smrg ;; 1615b1297603Smrg *-ibm) 1616a570218aSmrg os=aix 1617b1297603Smrg ;; 161833734831Smrg *-knuth) 1619a570218aSmrg os=mmixware 1620b1297603Smrg ;; 1621b1297603Smrg *-wec) 1622a570218aSmrg os=proelf 1623b1297603Smrg ;; 1624b1297603Smrg *-winbond) 1625a570218aSmrg os=proelf 1626b1297603Smrg ;; 1627b1297603Smrg *-oki) 1628a570218aSmrg os=proelf 1629b1297603Smrg ;; 1630b1297603Smrg *-hp) 1631a570218aSmrg os=hpux 1632b1297603Smrg ;; 1633b1297603Smrg *-hitachi) 1634a570218aSmrg os=hiux 1635b1297603Smrg ;; 1636b1297603Smrg i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 1637a570218aSmrg os=sysv 1638b1297603Smrg ;; 1639b1297603Smrg *-cbm) 1640a570218aSmrg os=amigaos 1641b1297603Smrg ;; 1642b1297603Smrg *-dg) 1643a570218aSmrg os=dgux 1644b1297603Smrg ;; 1645b1297603Smrg *-dolphin) 1646a570218aSmrg os=sysv3 1647b1297603Smrg ;; 1648b1297603Smrg m68k-ccur) 1649a570218aSmrg os=rtu 1650b1297603Smrg ;; 1651b1297603Smrg m88k-omron*) 1652a570218aSmrg os=luna 1653b1297603Smrg ;; 1654a570218aSmrg *-next) 1655a570218aSmrg os=nextstep 1656b1297603Smrg ;; 1657b1297603Smrg *-sequent) 1658a570218aSmrg os=ptx 1659b1297603Smrg ;; 1660b1297603Smrg *-crds) 1661a570218aSmrg os=unos 1662b1297603Smrg ;; 1663b1297603Smrg *-ns) 1664a570218aSmrg os=genix 1665b1297603Smrg ;; 1666b1297603Smrg i370-*) 1667a570218aSmrg os=mvs 1668b1297603Smrg ;; 1669b1297603Smrg *-gould) 1670a570218aSmrg os=sysv 1671b1297603Smrg ;; 1672b1297603Smrg *-highlevel) 1673a570218aSmrg os=bsd 1674b1297603Smrg ;; 1675b1297603Smrg *-encore) 1676a570218aSmrg os=bsd 1677b1297603Smrg ;; 1678b1297603Smrg *-sgi) 1679a570218aSmrg os=irix 1680b1297603Smrg ;; 1681b1297603Smrg *-siemens) 1682a570218aSmrg os=sysv4 1683b1297603Smrg ;; 1684b1297603Smrg *-masscomp) 1685a570218aSmrg os=rtu 1686b1297603Smrg ;; 1687b1297603Smrg f30[01]-fujitsu | f700-fujitsu) 1688a570218aSmrg os=uxpv 1689b1297603Smrg ;; 1690b1297603Smrg *-rom68k) 1691a570218aSmrg os=coff 1692b1297603Smrg ;; 1693b1297603Smrg *-*bug) 1694a570218aSmrg os=coff 1695b1297603Smrg ;; 1696b1297603Smrg *-apple) 1697a570218aSmrg os=macos 1698b1297603Smrg ;; 1699b1297603Smrg *-atari*) 1700a570218aSmrg os=mint 1701a570218aSmrg ;; 1702a570218aSmrg *-wrs) 1703a570218aSmrg os=vxworks 1704b1297603Smrg ;; 1705b1297603Smrg *) 1706a570218aSmrg os=none 1707b1297603Smrg ;; 1708b1297603Smrgesac 170920f5670eSmrg 1710b1297603Smrgfi 1711b1297603Smrg 171220f5670eSmrg# Now, validate our (potentially fixed-up) OS. 171320f5670eSmrgcase $os in 171420f5670eSmrg # Sometimes we do "kernel-libc", so those need to count as OSes. 171520f5670eSmrg musl* | newlib* | relibc* | uclibc*) 171620f5670eSmrg ;; 171720f5670eSmrg # Likewise for "kernel-abi" 171820f5670eSmrg eabi* | gnueabi*) 171920f5670eSmrg ;; 172020f5670eSmrg # VxWorks passes extra cpu info in the 4th filed. 172120f5670eSmrg simlinux | simwindows | spe) 172220f5670eSmrg ;; 172320f5670eSmrg # Now accept the basic system types. 172420f5670eSmrg # The portable systems comes first. 172520f5670eSmrg # Each alternative MUST end in a * to match a version number. 172620f5670eSmrg gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 172720f5670eSmrg | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 172820f5670eSmrg | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 172920f5670eSmrg | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 173020f5670eSmrg | hiux* | abug | nacl* | netware* | windows* \ 173120f5670eSmrg | os9* | macos* | osx* | ios* \ 173220f5670eSmrg | mpw* | magic* | mmixware* | mon960* | lnews* \ 173320f5670eSmrg | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 173420f5670eSmrg | aos* | aros* | cloudabi* | sortix* | twizzler* \ 173520f5670eSmrg | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 173620f5670eSmrg | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 173720f5670eSmrg | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 173820f5670eSmrg | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 173920f5670eSmrg | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 174020f5670eSmrg | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ 174120f5670eSmrg | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ 174220f5670eSmrg | udi* | lites* | ieee* | go32* | aux* | hcos* \ 174320f5670eSmrg | chorusrdb* | cegcc* | glidix* | serenity* \ 174420f5670eSmrg | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ 174520f5670eSmrg | midipix* | mingw32* | mingw64* | mint* \ 174620f5670eSmrg | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 174720f5670eSmrg | interix* | uwin* | mks* | rhapsody* | darwin* \ 174820f5670eSmrg | openstep* | oskit* | conix* | pw32* | nonstopux* \ 174920f5670eSmrg | storm-chaos* | tops10* | tenex* | tops20* | its* \ 175020f5670eSmrg | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 175120f5670eSmrg | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 175220f5670eSmrg | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 175320f5670eSmrg | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 175420f5670eSmrg | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 175520f5670eSmrg | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 175620f5670eSmrg | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 175720f5670eSmrg | fiwix* ) 175820f5670eSmrg ;; 175920f5670eSmrg # This one is extra strict with allowed versions 176020f5670eSmrg sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 176120f5670eSmrg # Don't forget version if it is 3.2v4 or newer. 176220f5670eSmrg ;; 176320f5670eSmrg none) 176420f5670eSmrg ;; 176520f5670eSmrg *) 176620f5670eSmrg echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 176720f5670eSmrg exit 1 176820f5670eSmrg ;; 176920f5670eSmrgesac 177020f5670eSmrg 177120f5670eSmrg# As a final step for OS-related things, validate the OS-kernel combination 177220f5670eSmrg# (given a valid OS), if there is a kernel. 177320f5670eSmrgcase $kernel-$os in 177420f5670eSmrg linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ 177520f5670eSmrg | linux-musl* | linux-relibc* | linux-uclibc* ) 177620f5670eSmrg ;; 177720f5670eSmrg uclinux-uclibc* ) 177820f5670eSmrg ;; 177920f5670eSmrg -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) 178020f5670eSmrg # These are just libc implementations, not actual OSes, and thus 178120f5670eSmrg # require a kernel. 178220f5670eSmrg echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 178320f5670eSmrg exit 1 178420f5670eSmrg ;; 178520f5670eSmrg kfreebsd*-gnu* | kopensolaris*-gnu*) 178620f5670eSmrg ;; 178720f5670eSmrg vxworks-simlinux | vxworks-simwindows | vxworks-spe) 178820f5670eSmrg ;; 178920f5670eSmrg nto-qnx*) 179020f5670eSmrg ;; 179120f5670eSmrg os2-emx) 179220f5670eSmrg ;; 179320f5670eSmrg *-eabi* | *-gnueabi*) 179420f5670eSmrg ;; 179520f5670eSmrg -*) 179620f5670eSmrg # Blank kernel with real OS is always fine. 179720f5670eSmrg ;; 179820f5670eSmrg *-*) 179920f5670eSmrg echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 180020f5670eSmrg exit 1 180120f5670eSmrg ;; 180220f5670eSmrgesac 180320f5670eSmrg 1804b1297603Smrg# Here we handle the case where we know the os, and the CPU type, but not the 1805b1297603Smrg# manufacturer. We pick the logical manufacturer. 1806a570218aSmrgcase $vendor in 1807a570218aSmrg unknown) 180820f5670eSmrg case $cpu-$os in 180920f5670eSmrg *-riscix*) 1810b1297603Smrg vendor=acorn 1811b1297603Smrg ;; 181220f5670eSmrg *-sunos*) 1813b1297603Smrg vendor=sun 1814b1297603Smrg ;; 181520f5670eSmrg *-cnk* | *-aix*) 1816b1297603Smrg vendor=ibm 1817b1297603Smrg ;; 181820f5670eSmrg *-beos*) 1819b1297603Smrg vendor=be 1820b1297603Smrg ;; 182120f5670eSmrg *-hpux*) 1822b1297603Smrg vendor=hp 1823b1297603Smrg ;; 182420f5670eSmrg *-mpeix*) 1825b1297603Smrg vendor=hp 1826b1297603Smrg ;; 182720f5670eSmrg *-hiux*) 1828b1297603Smrg vendor=hitachi 1829b1297603Smrg ;; 183020f5670eSmrg *-unos*) 1831b1297603Smrg vendor=crds 1832b1297603Smrg ;; 183320f5670eSmrg *-dgux*) 1834b1297603Smrg vendor=dg 1835b1297603Smrg ;; 183620f5670eSmrg *-luna*) 1837b1297603Smrg vendor=omron 1838b1297603Smrg ;; 183920f5670eSmrg *-genix*) 1840b1297603Smrg vendor=ns 1841b1297603Smrg ;; 184220f5670eSmrg *-clix*) 1843a570218aSmrg vendor=intergraph 1844a570218aSmrg ;; 184520f5670eSmrg *-mvs* | *-opened*) 184620f5670eSmrg vendor=ibm 184720f5670eSmrg ;; 184820f5670eSmrg *-os400*) 1849b1297603Smrg vendor=ibm 1850b1297603Smrg ;; 185120f5670eSmrg s390-* | s390x-*) 1852b1297603Smrg vendor=ibm 1853b1297603Smrg ;; 185420f5670eSmrg *-ptx*) 1855b1297603Smrg vendor=sequent 1856b1297603Smrg ;; 185720f5670eSmrg *-tpf*) 1858b1297603Smrg vendor=ibm 1859b1297603Smrg ;; 186020f5670eSmrg *-vxsim* | *-vxworks* | *-windiss*) 1861b1297603Smrg vendor=wrs 1862b1297603Smrg ;; 186320f5670eSmrg *-aux*) 1864b1297603Smrg vendor=apple 1865b1297603Smrg ;; 186620f5670eSmrg *-hms*) 1867b1297603Smrg vendor=hitachi 1868b1297603Smrg ;; 186920f5670eSmrg *-mpw* | *-macos*) 1870b1297603Smrg vendor=apple 1871b1297603Smrg ;; 187220f5670eSmrg *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1873b1297603Smrg vendor=atari 1874b1297603Smrg ;; 187520f5670eSmrg *-vos*) 1876b1297603Smrg vendor=stratus 1877b1297603Smrg ;; 1878b1297603Smrg esac 1879b1297603Smrg ;; 1880b1297603Smrgesac 1881b1297603Smrg 188220f5670eSmrgecho "$cpu-$vendor-${kernel:+$kernel-}$os" 1883b1297603Smrgexit 1884b1297603Smrg 1885b1297603Smrg# Local variables: 1886a570218aSmrg# eval: (add-hook 'before-save-hook 'time-stamp) 1887b1297603Smrg# time-stamp-start: "timestamp='" 1888b1297603Smrg# time-stamp-format: "%:y-%02m-%02d" 1889b1297603Smrg# time-stamp-end: "'" 1890b1297603Smrg# End: 1891